jep-hack/engine/events/shuckle.asm
Martha Schilling adb9e3c540 Kirk, Shuckie and the Antique Pot
- Adds Pockle, an evolution of Shuckle based on cut data from early 1999. Uses a custom sprite reminiscent of Shuckle's early 'pot' design, with the base sprite being used in Pokemon October, then heavily edited by me.

- Reworked the Shuckie event entirely. Shuckie is now 5 levels higher and holds a Berry Juice, and their OT has been changed to the better name used in HGSS. Kirk now no longer takes Shuckie back from you after a day, instead giving you an incentive to raise Shuckie's friendship. Once you raise it high enough, he gives you the Antique Pot, which (currently) acts like an evolution Stone for Shuckle.

- Kirk now no longer checks for the species as well, allowing the sidequest to be completed immediately by showing him an evolved Shuckie. This does mean that this can be bypassed with the right OT and ID, but you basically need ACE or RNG manip to achieve that so its a non-issue.
2024-03-26 00:26:25 +00:00

157 lines
2.4 KiB
NASM

DEF MANIA_OT_ID EQU 00518
GiveShuckle:
; Adding to the party.
xor a ; PARTYMON
ld [wMonType], a
; Level 20 Shuckle.
ld hl, SHUCKLE
call GetPokemonIDFromIndex
ld [wCurPartySpecies], a
ld a, 20
ld [wCurPartyLevel], a
predef TryAddMonToParty
jr nc, .NotGiven
; Caught data.
ld b, CAUGHT_BY_UNKNOWN
farcall SetGiftPartyMonCaughtData
; Holding a Berry Juice.
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wPartyCount]
dec a
push af
push bc
ld hl, wPartyMon1Item
call AddNTimes
ld [hl], BERRY_JUICE
pop bc
pop af
; OT ID.
ld hl, wPartyMon1ID
call AddNTimes
ld a, HIGH(MANIA_OT_ID)
ld [hli], a
ld [hl], LOW(MANIA_OT_ID)
; Nickname.
ld a, [wPartyCount]
dec a
ld hl, wPartyMonNicknames
call SkipNames
ld de, SpecialShuckleNickname
call CopyName2
; OT.
ld a, [wPartyCount]
dec a
ld hl, wPartyMonOTs
call SkipNames
ld de, SpecialShuckleOT
call CopyName2
; Engine flag for this event.
ld hl, wDailyFlags1
set DAILYFLAGS1_GOT_SHUCKIE_TODAY_F, [hl]
ld a, 1
ld [wScriptVar], a
ret
.NotGiven:
xor a
ld [wScriptVar], a
ret
SpecialShuckleOT:
db "KIRK@" ; This guy was called Mania in Gen 2, which was changed to Kirk in HGSS. I prefer Kirk.
SpecialShuckleNickname:
db "SHUCKIE@"
ReturnShuckie:
farcall SelectMonFromParty
jr c, .refused
ld a, [wCurPartyMon]
ld hl, wPartyMon1ID
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
; OT ID
ld a, [hli]
cp HIGH(MANIA_OT_ID)
jr nz, .DontReturn
ld a, [hl]
cp LOW(MANIA_OT_ID)
jr nz, .DontReturn
; OT
ld a, [wCurPartyMon]
ld hl, wPartyMonOTs
call SkipNames
ld de, SpecialShuckleOT
.CheckOT:
ld a, [de]
cp [hl]
jr nz, .DontReturn
cp "@"
jr z, .done
inc de
inc hl
jr .CheckOT
.done
farcall CheckCurPartyMonFainted
jr c, .fainted
ld a, [wCurPartySpecies]
call GetPokemonIndexFromID
ld a, l
sub LOW(POCKLE)
if HIGH(POCKLE) == 0
or h
else
jr nz, .notPockle
if HIGH(POCKLE) == 1
dec h
else
ld a, h
cp HIGH(POCKLE)
endc
endc
jr nz, .notPockle
ld a, SHUCKIE_EVOLVED
ld [wScriptVar], a
ret
.notPockle:
ld a, [wCurPartyMon]
ld hl, wPartyMon1Happiness
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
cp 150
ld a, SHUCKIE_HAPPY
jr nc, .HappyToStayWithYou
ld a, SHUCKIE_OKAY
.HappyToStayWithYou:
ld [wScriptVar], a
ret
.refused
ld a, SHUCKIE_REFUSED
ld [wScriptVar], a
ret
.DontReturn:
xor a ; SHUCKIE_WRONG_MON
ld [wScriptVar], a
ret
.fainted
ld a, SHUCKIE_FAINTED
ld [wScriptVar], a
ret