mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
f98a95b8ee
These are by far not always checked each week, and as such shouldn't be called that. Since they're almost always used through the `bit` instruction, it's very inconvenient to just make wDailyFlags a `dw` instead.
142 lines
2.1 KiB
NASM
142 lines
2.1 KiB
NASM
MANIA_OT_ID EQU 00518
|
|
|
|
GiveShuckle:
|
|
; Adding to the party.
|
|
xor a
|
|
ld [wMonType], a
|
|
|
|
; Level 15 Shuckle.
|
|
ld a, SHUCKLE
|
|
ld [wCurPartySpecies], a
|
|
ld a, 15
|
|
ld [wCurPartyLevel], a
|
|
|
|
predef TryAddMonToParty
|
|
jr nc, .NotGiven
|
|
|
|
; Caught data.
|
|
ld b, 0
|
|
farcall SetGiftPartyMonCaughtData
|
|
|
|
; Holding a Berry.
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
ld a, [wPartyCount]
|
|
dec a
|
|
push af
|
|
push bc
|
|
ld hl, wPartyMon1Item
|
|
call AddNTimes
|
|
ld [hl], BERRY
|
|
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, SpecialShuckleNick
|
|
call CopyName2
|
|
|
|
; OT.
|
|
ld a, [wPartyCount]
|
|
dec a
|
|
ld hl, wPartyMonOT
|
|
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 "MANIA@"
|
|
SpecialShuckleNick:
|
|
db "SHUCKIE@"
|
|
|
|
ReturnShuckle:
|
|
farcall SelectMonFromParty
|
|
jr c, .refused
|
|
|
|
ld a, [wCurPartySpecies]
|
|
cp SHUCKLE
|
|
jr nz, .DontReturn
|
|
|
|
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, wPartyMonOT
|
|
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, [wCurPartyMon]
|
|
ld hl, wPartyMon1Happiness
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld a, [hl]
|
|
cp 150
|
|
ld a, SHUCKIE_HAPPY
|
|
jr nc, .HappyToStayWithYou
|
|
xor a ; REMOVE_PARTY
|
|
ld [wPokemonWithdrawDepositParameter], a
|
|
callfar RemoveMonFromPartyOrBox
|
|
ld a, SHUCKIE_RETURNED
|
|
.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
|