Reference
  Area\Util.txt
  Util\Audio.txt
  Util\Party.txt
  Area\Service.txt
  Util\CommonDialog.txt
End Reference

Procedure Main(startAt)

  Dim ac = Nothing

  RegisterCommonEventHandlers()

  SetZoneOfTown(48, 48, 1, 1, 46, 46, ExitArea_Enter)
  
  AddZone("NatalieRescued", 35, 26, 0)

  ac = AddActor_MTStopped("EqShopper", 11, 28, 0, [A_Man], ActorMotion.Down, Nothing)
  ac = AddStaticActor("EqShopperEve", 11, 29, 10, [A_Null], EqShopperEve_Contact)

  ac = AddActor_MTStopped("MgShopper", 13, 28, 0, [A_OldMan], ActorMotion.Down, Nothing)
  ac = AddStaticActor("MgShopperEve", 13, 29, 10, [A_Null], MgShopperEve_Contact)

  ac = AddActor_MTStopped("GdShopper", 6, 17, 0, [A_Woman], ActorMotion.Down, Nothing)
  ac = AddStaticActor("GdShopperEve", 6, 18, 10, [A_Null], GdShopperEve_Contact)

  ac = AddActor_MTStopped("InnFront", 4, 17, 0, [A_Man], ActorMotion.Down, Nothing)
  ac = AddStaticActor("InnFrontEve", 4, 18, 10, [A_Null], InnFrontEve_Contact)

  If TestFlag("Rabro_1") AndAlso TestFlag("Rabro_2") Then
    ac = AddActor_MTStopped("Morgan", 35, 24, 0, [A_OldMan], ActorMotion.Down, Morgan_Contact)
  End If
  
  ac = AddActor_MTZonedRandom("Towner1", 6, 7, 0, _
    3, 5, 0, 9, 9, 0, [A_Man], Towner1_Contact)
  
  ac = AddActor_MTZonedRandom("Towner2", 6, 40, 0, _
    3, 38, 0, 9, 42, 0, [A_Woman], Towner2_Contact)
  
  ac = AddActor_MTZonedRandom("Towner3", 30, 40, 0, _
    27, 38, 0, 33, 42, 0, [A_OldMan], Towner3_Contact)
  
  If TestFlag("Kaure_1") AndAlso Not TestFlag("Kaure_2") Then
    ac = AddActor_MTStopped("Searcher", 33, 25, 0, [A_Man], ActorMotion.Down, Searcher_Contact)
  End If
  
  If TestFlag("CaveAB_1") Then
    ac = AddActor_MTStopped("Natalie", 34, 24, 0, [A_Woman], ActorMotion.Down, Natalie_Contact)
  End If
  
  If startAt <> "NatalieRescued" Then
    DoInsideWarp(startAt, SetEntranceEx({23, 1, 0}, {23, 46, 0}, {1, 23, 0}, {46, 35, 0}), False)
  Else
    RegisterEventHandler("NatalieRescued", AS_NatalieRescued)
    RaiseEvent("NatalieRescued")
    DoInsideWarp(startAt, Direction.Up, False)
  End If
  
  ChangeBGM(Music.Town)
  PutAreaNameLabel()

  NotifyEntered()
  Idle(ProcessInput)
  NotifyExiting()

End Procedure

Procedure ExitArea_Enter()
  BeginOutsideWarp([Field], GetAreaObject().Tag)
End Procedure

Procedure EqShopperEve_Contact()
  DoShop({[IronSword], [SteelSword], [BronzeArmor], [IronArmor], [BronzeShield], [IronShield], [BronzeHelmet], [IronHelmet]})
End Procedure

Procedure MgShopperEve_Contact()
  DoMagicShop({[Heal1], [Fire1], [Cold1], [Panic], [Blind], [MagicalSword], [CureAll], [Elec1], [AgiUp], [AgiDown], [Paralyze], [Blink]})
End Procedure

Procedure GdShopperEve_Contact()
  DoShop({[Heal_T1], [Heal_T2], [CureAll_T], [Revive_T]})
End Procedure

Procedure InnFrontEve_Contact()
  DoInn(30)
End Procedure

Procedure Morgan_Contact()
  Dim ac = Nothing
  Dim p_name = [TheHero].Name + "："
  Dim q_name = "モーガン："
  Dim r_name = "サーチャー："
  If TestFlag("Kaure_2") Then
    DoMsg(q_name, "ナタリーを救ってくれてありがとう")
  ElseIf TestFlag("Kaure_1") Then
    DoMsg(q_name, "いったいどこに　行ってしまったのか……")
  Else
    DoMsg(p_name, "あの　人違いでしたらすみませんが", _
      "モーガンさんではないですか？")
    DoMsg(q_name, "そうじゃが　何用かな？")
    DoMsg(p_name, "プラマール城のレナードさんから", _
      "お手紙を預かって参りました")
    DoMsg(q_name, "なんと　そうかそうか", _
      "ありがとう　よくここまで来たの")
    ac = AddActor_MTStopped("Searcher", 27, 25, 0, [A_Man], ActorMotion.Right, Searcher_Contact)
    For i = 1 To 6
      LetActorWalk(ac, Direction.Right)
    Next
    DoMsg(r_name, "モーガンさん")
    DoMsg(q_name, "おお　どうじゃった？")
    DoMsg(r_name, "町の外にも捜索範囲を広げてみましたが", _
      "今の所……")
    DoMsg(q_name, "そうか……")
    DoMsg(p_name, "どなたか行方不明なのですか？")
    DoMsg(q_name, "うむ　実は町民が次々姿を消しておるのじゃ", _
      "残された人には何の心当たりもない")
    DoMsg(q_name, "そうして昨日　わしの孫娘のナタリーまでもが", _
      "ついに行方知れずになってしまった……")
    DoMsg(r_name, "もしかして誘拐されたのでは……")
    DoMsg(q_name, "誘拐ならば　犯人からの要求があるはずじゃ", _
      "しかし今のところ　何もない", _
      "いったいどこに　行ってしまったのか……")
    Sleep(500)
    DoMsg(p_name, "（なるほど　大量失踪事件　と……）")
    Sleep(1000)
    DoMsg(p_name, "（もし連れ帰ることができたら……）")
    Sleep(1000)
    DoMsg(p_name, "（俺はヒーローになれる）")
    Sleep(500)
    DoMsg(p_name, "（いちおう探してみようか……）")
    SetFlag("Kaure_1")
  End If
End Procedure

Procedure Searcher_Contact()
  If TestFlag("Kaure_2") Then
    DoMsg("よかった　よかった")
  Else
    DoMsg("関係あるかどうか分からないが", _
      "南にある大陸への地下通路の近辺で", _
      "怪しい風体の者を見たという情報があるぞ")
  End If
End Procedure

Procedure AS_NatalieRescued()
  Dim p_name = [TheHero].Name + "："
  Dim q_name = "モーガン："
  Dim r_name = "ナタリー："
  DoMsg(q_name, [TheHero].Name + "君と申したの", _
    "なんとお礼を申したらいいのか……")
  DoMsg(r_name, "これからどうするの？")
  DoMsg(p_name, "とりあえずラブロに帰ろうと思います")
  DoMsg(q_name, "そうか　達者での")
  DoMsg(r_name, "またカウレに来てね", _
    "わたし　待ってるから……")
  Sleep(500)
  DoMsg(p_name, "（アルタロスにデロク……一体誰なんだ？）", _
    "（まあ　俺には関係ないか）")
  Sleep(500)
  DoMsg(p_name, "（しかし　何か引っかかるな）", _
    "（とりあえず東の洞窟を抜けて）", _
    "（バムケイクやソンテムにも行ってみよう）")
  SetFlag("Kaure_2")
End Procedure

Procedure Natalie_Contact()
  Dim p_name = [TheHero].Name + "："
  Dim q_name = "ナタリー："
  DoMsg(q_name, "またカウレに来てね", _
    "わたし　待ってるから……")
End Procedure

Procedure Towner1_Contact()
  DoMsg("海峡の向こうに見えるのが大陸だ")
End Procedure

Procedure Towner2_Contact()
  DoMsg("あなた瞳の色が違うわね", _
    "大陸の人？")
End Procedure

Procedure Towner3_Contact()
  DoMsg("最近物騒じゃのう")
End Procedure
