diff options
Diffstat (limited to 'maps/TeamRocketBaseB3F.asm')
-rw-r--r-- | maps/TeamRocketBaseB3F.asm | 368 |
1 files changed, 120 insertions, 248 deletions
diff --git a/maps/TeamRocketBaseB3F.asm b/maps/TeamRocketBaseB3F.asm index 839dc89ee..f0a2519ef 100644 --- a/maps/TeamRocketBaseB3F.asm +++ b/maps/TeamRocketBaseB3F.asm @@ -1,50 +1,43 @@ -TeamRocketBaseB3F_MapScriptHeader: ; 0x6dfd4 - ; trigger count +TeamRocketBaseB3F_MapScriptHeader: +.MapTriggers: db 4 ; triggers - dw UnknownScript_0x6dfe9, $0000 - dw UnknownScript_0x6dfed, $0000 - dw UnknownScript_0x6dfee, $0000 - dw UnknownScript_0x6dfef, $0000 + dw .Trigger1, $0000 + dw .Trigger2, $0000 + dw .Trigger3, $0000 + dw .Trigger4, $0000 - ; callback count +.MapCallbacks: db 1 ; callbacks - dbw 1, UnknownScript_0x6dff0 -; 0x6dfe9 + dbw 1, .CheckGiovanniDoor -UnknownScript_0x6dfe9: ; 0x6dfe9 +.Trigger1: priorityjump LanceScript_0x6dffc end -; 0x6dfed -UnknownScript_0x6dfed: ; 0x6dfed +.Trigger2: end -; 0x6dfee -UnknownScript_0x6dfee: ; 0x6dfee +.Trigger3: end -; 0x6dfef -UnknownScript_0x6dfef: ; 0x6dfef +.Trigger4: end -; 0x6dff0 -UnknownScript_0x6dff0: ; 0x6dff0 - checkevent $0303 - iftrue UnknownScript_0x6dff7 +.CheckGiovanniDoor: + checkevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE + iftrue .OpenSesame return -; 0x6dff7 -UnknownScript_0x6dff7: ; 0x6dff7 +.OpenSesame: changeblock $a, $8, $7 return -; 0x6dffc -LanceScript_0x6dffc: ; 0x6dffc +LanceScript_0x6dffc: spriteface $0, LEFT pause 5 spriteface $4, RIGHT @@ -58,11 +51,10 @@ LanceScript_0x6dffc: ; 0x6dffc disappear $2 dotrigger $1 end -; 0x6e019 -UnknownScript_0x6e019: ; 0x6e019 +UnknownScript_0x6e019: spriteface $0, LEFT - showemote $0, $0, 15 + showemote EMOTE_SHOCK, $0, 15 special Functionc48f appear $a applymovement $a, MovementData_0x6e164 @@ -79,22 +71,19 @@ UnknownScript_0x6e019: ; 0x6e019 dotrigger $2 special RestartMapMusic end -; 0x6e048 -RocketScript_0x6e048: ; 0x6e048 +RocketScript_0x6e048: jumptextfaceplayer UnknownText_0x6e235 -; 0x6e04b -UnknownScript_0x6e04b: ; 0x6e04b +UnknownScript_0x6e04b: applymovement $0, MovementData_0x6e133 jump UnknownScript_0x6e056 -; 0x6e052 -UnknownScript_0x6e052: ; 0x6e052 +UnknownScript_0x6e052: applymovement $0, MovementData_0x6e13a -UnknownScript_0x6e056: ; 0x6e056 +UnknownScript_0x6e056: pause 30 - showemote $0, $3, 15 + showemote EMOTE_SHOCK, $3, 15 playmusic MUSIC_ROCKET_ENCOUNTER spriteface $3, DOWN loadfont @@ -107,7 +96,7 @@ UnknownScript_0x6e056: ; 0x6e056 loadtrainer EXECUTIVEM, 4 startbattle returnafterbattle - setevent $0574 + setevent EVENT_BEAT_ROCKET_EXECUTIVEM_4 loadfont writetext UnknownText_0x6e548 closetext @@ -118,199 +107,113 @@ UnknownScript_0x6e056: ; 0x6e056 disappear $3 dotrigger $3 end -; 0x6e091 -MoltresScript_0x6e091: ; 0x6e091 +MoltresScript_0x6e091: loadfont writetext UnknownText_0x6e585 closetext loadmovesprites setevent EVENT_LEARNED_HAIL_GIOVANNI end -; 0x6e09b -TrainerGruntF5: ; 0x6e09b - ; bit/flag number - dw $514 +TrainerGruntF5: + trainer EVENT_BEAT_ROCKET_GRUNTF_5, GRUNTF, 5, GruntF5SeenText, GruntF5BeatenText, $0000, GruntF5Script - ; trainer group && trainer id - db GRUNTF, 5 - - ; text when seen - dw GruntF5SeenText - - ; text when trainer beaten - dw GruntF5BeatenText - - ; script when lost - dw $0000 - - ; script when talk again - dw GruntF5Script -; 0x6e0a7 - -GruntF5Script: ; 0x6e0a7 +GruntF5Script: talkaftercancel loadfont writetext UnknownText_0x6e611 closetext loadmovesprites - setevent $0301 + setevent EVENT_LEARNED_SLOWPOKETAIL end -; 0x6e0b2 - -TrainerGruntM28: ; 0x6e0b2 - ; bit/flag number - dw $50c - ; trainer group && trainer id - db GRUNTM, 28 +TrainerGruntM28: + trainer EVENT_BEAT_ROCKET_GRUNTM_28, GRUNTM, 28, GruntM28SeenText, GruntM28BeatenText, $0000, GruntM28Script - ; text when seen - dw GruntM28SeenText - - ; text when trainer beaten - dw GruntM28BeatenText - - ; script when lost - dw $0000 - - ; script when talk again - dw GruntM28Script -; 0x6e0be - -GruntM28Script: ; 0x6e0be +GruntM28Script: talkaftercancel loadfont writetext UnknownText_0x6e737 closetext loadmovesprites - setevent $0302 + setevent EVENT_LEARNED_RATICATE_TAIL end -; 0x6e0c9 - -TrainerScientistRoss: ; 0x6e0c9 - ; bit/flag number - dw $49f - ; trainer group && trainer id - db SCIENTIST, ROSS +TrainerScientistRoss: + trainer EVENT_BEAT_SCIENTIST_ROSS, SCIENTIST, ROSS, ScientistRossSeenText, ScientistRossBeatenText, $0000, ScientistRossScript - ; text when seen - dw ScientistRossSeenText - - ; text when trainer beaten - dw ScientistRossBeatenText - - ; script when lost - dw $0000 - - ; script when talk again - dw ScientistRossScript -; 0x6e0d5 - -ScientistRossScript: ; 0x6e0d5 +ScientistRossScript: talkaftercancel loadfont writetext UnknownText_0x6e822 closetext loadmovesprites end -; 0x6e0dd - -TrainerScientistMitch: ; 0x6e0dd - ; bit/flag number - dw $4a0 - - ; trainer group && trainer id - db SCIENTIST, MITCH - ; text when seen - dw ScientistMitchSeenText +TrainerScientistMitch: + trainer EVENT_BEAT_SCIENTIST_MITCH, SCIENTIST, MITCH, ScientistMitchSeenText, ScientistMitchBeatenText, $0000, ScientistMitchScript - ; text when trainer beaten - dw ScientistMitchBeatenText - - ; script when lost - dw $0000 - - ; script when talk again - dw ScientistMitchScript -; 0x6e0e9 - -ScientistMitchScript: ; 0x6e0e9 +ScientistMitchScript: talkaftercancel loadfont writetext UnknownText_0x6e90a closetext loadmovesprites end -; 0x6e0f1 -MapTeamRocketBaseB3FSignpostPtr1: ; 0x6e0f1 - dw $0303 - dw MapTeamRocketBaseB3FSignpost1Script +BossDoor: + dw EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE + dw .Script -; 0x6e0f5 - -MapTeamRocketBaseB3FSignpost1Script: ; 0x6e0f5 +.Script loadfont - checkevent $0301 - iffalse UnknownScript_0x6e105 - checkevent $0302 - iffalse UnknownScript_0x6e105 - jump UnknownScript_0x6e10b -; 0x6e105 - -UnknownScript_0x6e105: ; 0x6e105 + checkevent EVENT_LEARNED_SLOWPOKETAIL + iffalse .NeedsPassword + checkevent EVENT_LEARNED_RATICATE_TAIL + iffalse .NeedsPassword + jump .OpenSesame + +.NeedsPassword writetext UnknownText_0x6e970 closetext loadmovesprites end -; 0x6e10b -UnknownScript_0x6e10b: ; 0x6e10b +.OpenSesame writetext UnknownText_0x6e9a3 closetext playsound SFX_ENTER_DOOR changeblock $a, $8, $7 reloadmappart loadmovesprites - setevent $0303 + setevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE waitbutton end -; 0x6e11d -MapTeamRocketBaseB3FSignpost9Script: ; 0x6e11d +MapTeamRocketBaseB3FSignpost9Script: jumpstd teamrocketoath -; 0x6e120 -ItemFragment_0x6e120: ; 0x6e120 +ItemFragment_0x6e120: db PROTEIN, 1 -; 0x6e122 -ItemFragment_0x6e122: ; 0x6e122 +ItemFragment_0x6e122: db X_SPECIAL, 1 -; 0x6e124 -ItemFragment_0x6e124: ; 0x6e124 +ItemFragment_0x6e124: db FULL_HEAL, 1 -; 0x6e126 -ItemFragment_0x6e126: ; 0x6e126 +ItemFragment_0x6e126: db ICE_HEAL, 1 -; 0x6e128 -ItemFragment_0x6e128: ; 0x6e128 +ItemFragment_0x6e128: db ULTRA_BALL, 1 -; 0x6e12a -MovementData_0x6e12a: ; 0x6e12a +MovementData_0x6e12a: step_right step_end -; 0x6e12c -MovementData_0x6e12c: ; 0x6e12c +MovementData_0x6e12c: step_down step_left step_left @@ -318,9 +221,8 @@ MovementData_0x6e12c: ; 0x6e12c step_left step_left step_end -; 0x6e133 -MovementData_0x6e133: ; 0x6e133 +MovementData_0x6e133: step_up step_up step_up @@ -328,9 +230,8 @@ MovementData_0x6e133: ; 0x6e133 step_left turn_head_up step_end -; 0x6e13a -MovementData_0x6e13a: ; 0x6e13a +MovementData_0x6e13a: step_up step_up step_left @@ -339,20 +240,17 @@ MovementData_0x6e13a: ; 0x6e13a step_left turn_head_up step_end -; 0x6e142 -MovementData_0x6e142: ; 0x6e142 +MovementData_0x6e142: step_down step_end -; 0x6e144 -MovementData_0x6e144: ; 0x6e144 +MovementData_0x6e144: big_step_right big_step_right step_end -; 0x6e147 -MovementData_0x6e147: ; 0x6e147 +MovementData_0x6e147: fix_facing fast_jump_step_left remove_fixed_facing @@ -382,9 +280,8 @@ MovementData_0x6e147: ; 0x6e147 big_step_left big_step_left step_end -; 0x6e164 -MovementData_0x6e164: ; 0x6e164 +MovementData_0x6e164: step_down step_down step_down @@ -394,9 +291,8 @@ MovementData_0x6e164: ; 0x6e164 step_right step_right step_end -; 0x6e16d -MovementData_0x6e16d: ; 0x6e16d +MovementData_0x6e16d: step_left step_left step_up @@ -405,16 +301,14 @@ MovementData_0x6e16d: ; 0x6e16d step_up step_up step_end -; 0x6e175 -MovementData_0x6e175: ; 0x6e175 +MovementData_0x6e175: fix_facing big_step_right remove_fixed_facing step_end -; 0x6e179 -UnknownText_0x6e179: ; 0x6e179 +UnknownText_0x6e179: text "LANCE: It takes" line "two passwords to" @@ -432,16 +326,14 @@ UnknownText_0x6e179: ; 0x6e179 para "<PLAY_G>, let's go" line "get the passwords." done -; 0x6e235 -UnknownText_0x6e235: ; 0x6e235 +UnknownText_0x6e235: text "Urrggh… The guy" line "in the cape is" cont "incredibly tough…" done -; 0x6e267 -UnknownText_0x6e267: ; 0x6e267 +UnknownText_0x6e267: text "…" para "Didn't I tell you" @@ -482,9 +374,8 @@ UnknownText_0x6e267: ; 0x6e267 line "have the time for" cont "the likes of you!" done -; 0x6e400 -UnknownText_0x6e400: ; 0x6e400 +UnknownText_0x6e400: text "What? Who are you?" line "This is the office" @@ -510,35 +401,31 @@ UnknownText_0x6e400: ; 0x6e400 line "one disturb this" cont "place!" done -; 0x6e511 -UnknownText_0x6e511: ; 0x6e511 +UnknownText_0x6e511: text "I… I couldn't do a" line "thing…" para "GIOVANNI, please" line "forgive me…" done -; 0x6e548 -UnknownText_0x6e548: ; 0x6e548 +UnknownText_0x6e548: text "No, I can't let" line "this affect me." para "I have to inform" line "the others…" done -; 0x6e585 -UnknownText_0x6e585: ; 0x6e585 +UnknownText_0x6e585: text "MURKROW: The" line "password is…" para "HAIL GIOVANNI." done -; 0x6e5af -GruntF5SeenText: ; 0x6e5af +GruntF5SeenText: text "Do I know the" line "password?" @@ -547,15 +434,13 @@ GruntF5SeenText: ; 0x6e5af para "But no weakling's" line "going to get it!" done -; 0x6e5f1 -GruntF5BeatenText: ; 0x6e5f1 +GruntF5BeatenText: text "All right. Stop." line "I'll tell you." done -; 0x6e611 -UnknownText_0x6e611: ; 0x6e611 +UnknownText_0x6e611: text "The password to" line "the boss's room is" @@ -565,9 +450,8 @@ UnknownText_0x6e611: ; 0x6e611 line "unless you have" cont "two passwords." done -; 0x6e671 -GruntM28SeenText: ; 0x6e671 +GruntM28SeenText: text "Hyuck-hyuck-hyuck!" para "You're challenging" @@ -584,15 +468,13 @@ GruntM28SeenText: ; 0x6e671 para "a password to the" line "boss's room!" done -; 0x6e717 -GruntM28BeatenText: ; 0x6e717 +GruntM28BeatenText: text "Hyuck-hyuck-hyuck!" line "You're good!" done -; 0x6e737 -UnknownText_0x6e737: ; 0x6e737 +UnknownText_0x6e737: text "Hyuck-hyuck-hyuck!" para "The password to" @@ -601,9 +483,8 @@ UnknownText_0x6e737: ; 0x6e737 para "Uh…, I think it is" line "RATICATE TAIL." done -; 0x6e78d -ScientistRossSeenText: ; 0x6e78d +ScientistRossSeenText: text "I used to work for" line "SILPH, but now I" @@ -614,15 +495,13 @@ ScientistRossSeenText: ; 0x6e78d line "like you needs to" cont "be punished." done -; 0x6e802 -ScientistRossBeatenText: ; 0x6e802 +ScientistRossBeatenText: text "A mere tactical" line "error cost me…" done -; 0x6e822 -UnknownText_0x6e822: ; 0x6e822 +UnknownText_0x6e822: text "A radio signal" line "that drives #-" cont "MON mad…" @@ -636,23 +515,20 @@ UnknownText_0x6e822: ; 0x6e822 para "means absolutely" line "nothing." done -; 0x6e8ac -ScientistMitchSeenText: ; 0x6e8ac +ScientistMitchSeenText: text "I don't care that" line "#MON are hurt" cont "by our experiment." done -; 0x6e8df -ScientistMitchBeatenText: ; 0x6e8df +ScientistMitchBeatenText: text "Thinking is my" line "strong suit, not" cont "battling." done -; 0x6e90a -UnknownText_0x6e90a: ; 0x6e90a +UnknownText_0x6e90a: text "If we turn up the" line "power of our radio" @@ -662,17 +538,15 @@ UnknownText_0x6e90a: ; 0x6e90a para "The very thought" line "excites me!" done -; 0x6e970 -UnknownText_0x6e970: ; 0x6e970 +UnknownText_0x6e970: text "The door's closed…" para "It needs two" line "passwords to open." done -; 0x6e9a3 -UnknownText_0x6e9a3: ; 0x6e9a3 +UnknownText_0x6e9a3: text "The door's closed…" para "<PLAYER> entered" @@ -680,52 +554,50 @@ UnknownText_0x6e9a3: ; 0x6e9a3 para "The door opened!" done -; 0x6e9e4 -TeamRocketBaseB3F_MapEventHeader: ; 0x6e9e4 +TeamRocketBaseB3F_MapEventHeader: ; filler db 0, 0 - ; warps +.Warps: db 4 warp_def $2, $3, 2, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F warp_def $2, $1b, 3, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F warp_def $6, $3, 4, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F warp_def $e, $1b, 5, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F - ; xy triggers +.XYTriggers: db 3 xy_trigger 2, $8, $a, $0, UnknownScript_0x6e04b, $0, $0 xy_trigger 2, $8, $b, $0, UnknownScript_0x6e052, $0, $0 xy_trigger 1, $a, $8, $0, UnknownScript_0x6e019, $0, $0 - ; signposts +.Signposts: db 10 - signpost 9, 10, $6, MapTeamRocketBaseB3FSignpostPtr1 - signpost 9, 11, $6, MapTeamRocketBaseB3FSignpostPtr1 - signpost 1, 10, $0, MapTeamRocketBaseB3FSignpost9Script - signpost 1, 11, $0, MapTeamRocketBaseB3FSignpost9Script - signpost 1, 12, $0, MapTeamRocketBaseB3FSignpost9Script - signpost 1, 13, $0, MapTeamRocketBaseB3FSignpost9Script - signpost 13, 4, $0, MapTeamRocketBaseB3FSignpost9Script - signpost 13, 5, $0, MapTeamRocketBaseB3FSignpost9Script - signpost 13, 6, $0, MapTeamRocketBaseB3FSignpost9Script - signpost 13, 7, $0, MapTeamRocketBaseB3FSignpost9Script - - ; people-events + signpost 9, 10, SIGNPOST_IFNOTSET, BossDoor + signpost 9, 11, SIGNPOST_IFNOTSET, BossDoor + signpost 1, 10, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + signpost 1, 11, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + signpost 1, 12, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + signpost 1, 13, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + signpost 13, 4, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + signpost 13, 5, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + signpost 13, 6, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + signpost 13, 7, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script + +.PersonEvents: db 14 - person_event SPRITE_LANCE, 18, 29, $6, $0, 255, 255, $0, 0, LanceScript_0x6dffc, $06d7 - person_event SPRITE_ROCKET, 7, 12, $7, $0, 255, 255, $0, 0, ObjectEvent, $06db - person_event SPRITE_MOLTRES, 6, 11, $16, $0, 255, 255, $90, 0, MoltresScript_0x6e091, $06da - person_event SPRITE_ROCKET_GIRL, 11, 25, $7, $0, 255, 255, $82, 0, TrainerGruntF5, $06da - person_event SPRITE_ROCKET, 18, 9, $a, $0, 255, 255, $2, 3, TrainerGruntM28, $06da - person_event SPRITE_SCIENTIST, 15, 27, $7, $0, 255, 255, $92, 0, TrainerScientistRoss, $06da - person_event SPRITE_SCIENTIST, 19, 15, $9, $0, 255, 255, $92, 3, TrainerScientistMitch, $06da - person_event SPRITE_ROCKET, 18, 28, $6, $0, 255, 255, $0, 0, RocketScript_0x6e048, $06da - person_event SPRITE_SILVER, 9, 8, $6, $0, 255, 255, $0, 0, ObjectEvent, $06c0 - person_event SPRITE_POKE_BALL, 16, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e120, $066d - person_event SPRITE_POKE_BALL, 16, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e122, $066e - person_event SPRITE_POKE_BALL, 13, 32, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e124, $066f - person_event SPRITE_POKE_BALL, 6, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e126, $0670 - person_event SPRITE_POKE_BALL, 14, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e128, $0654 -; 0x6eafe + person_event SPRITE_LANCE, 18, 29, OW_UP | $2, $0, -1, -1, $0, 0, LanceScript_0x6dffc, EVENT_TEAM_ROCKET_BASE_B3F_LANCE_PASSWORDS + person_event SPRITE_ROCKET, 7, 12, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B3F_EXECUTIVE + person_event SPRITE_MOLTRES, 6, 11, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, MoltresScript_0x6e091, EVENT_TEAM_ROCKET_BASE_POPULATION + person_event SPRITE_ROCKET_GIRL, 11, 25, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerGruntF5, EVENT_TEAM_ROCKET_BASE_POPULATION + person_event SPRITE_ROCKET, 18, 9, OW_LEFT | $2, $0, -1, -1, $2, 3, TrainerGruntM28, EVENT_TEAM_ROCKET_BASE_POPULATION + person_event SPRITE_SCIENTIST, 15, 27, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerScientistRoss, EVENT_TEAM_ROCKET_BASE_POPULATION + person_event SPRITE_SCIENTIST, 19, 15, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerScientistMitch, EVENT_TEAM_ROCKET_BASE_POPULATION + person_event SPRITE_ROCKET, 18, 28, OW_UP | $2, $0, -1, -1, $0, 0, RocketScript_0x6e048, EVENT_TEAM_ROCKET_BASE_POPULATION + person_event SPRITE_SILVER, 9, 8, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_TEAM_ROCKET_BASE + person_event SPRITE_POKE_BALL, 16, 5, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e120, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN + person_event SPRITE_POKE_BALL, 16, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e122, EVENT_TEAM_ROCKET_BASE_B3F_X_SPECIAL + person_event SPRITE_POKE_BALL, 13, 32, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e124, EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL + person_event SPRITE_POKE_BALL, 6, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e126, EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL + person_event SPRITE_POKE_BALL, 14, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e128, EVENT_TEAM_ROCKET_BASE_B3F_ULTRA_BALL |