From 696320fc4993b1d95b122dd1b4b529d4bd61fb6c Mon Sep 17 00:00:00 2001 From: Everade Date: Sat, 16 Apr 2022 17:20:53 +0200 Subject: [PATCH] Episode 16.2 - Illusion of Vampire (#6800) Fixes https://github.com/rathena/rathena/issues/6455 Implements Episode 16.2 - Illusion of Vampire Thanks to @Atemo Co-authored-by: Atemo --- db/re/item_db_equip.yml | 4 +- db/re/item_db_etc.yml | 40 +- db/re/laphine_synthesis.yml | 30 +- db/re/mob_db.yml | 427 ++- db/re/mob_skill_db.txt | 67 + db/re/quest_db.yml | 86 + npc/re/merchants/enchan_illusion_16_2.txt | 371 +- npc/re/mobs/dungeons/gef_d01_i.txt | 16 + npc/re/quests/quests_16_2_illusion.txt | 3762 ++++++++++++++++++++- npc/re/scripts_monsters.conf | 1 + 10 files changed, 4738 insertions(+), 66 deletions(-) create mode 100644 npc/re/mobs/dungeons/gef_d01_i.txt diff --git a/db/re/item_db_equip.yml b/db/re/item_db_equip.yml index d1d73f3edb..3d0decd9b1 100644 --- a/db/re/item_db_equip.yml +++ b/db/re/item_db_equip.yml @@ -85549,7 +85549,7 @@ Body: Script: | .@r = getrefine(); bonus2 bSubEle,Ele_Dark,(.@r >= 8 ? 25: 10); - /*.@bonus = 15; + .@bonus = 15; if (.@r >= 7) { .@bonus += 15; } @@ -85558,7 +85558,7 @@ Body: } bonus2 bAddRace2,RC2_ILLUSION_VAMPIRE,.@bonus; bonus2 bSubRace2,RC2_ILLUSION_VAMPIRE,.@bonus; - bonus2 bMagicAddRace2,RC2_ILLUSION_VAMPIRE,.@bonus;*/ + bonus2 bMagicAddRace2,RC2_ILLUSION_VAMPIRE,.@bonus; - Id: 19464 AegisName: C_Melon_Cap Name: Costume Melon Bread Hat diff --git a/db/re/item_db_etc.yml b/db/re/item_db_etc.yml index 7815ac795b..4bda717fb8 100644 --- a/db/re/item_db_etc.yml +++ b/db/re/item_db_etc.yml @@ -35354,39 +35354,46 @@ Body: NoMail: true NoAuction: true - Id: 25261 - AegisName: Torn_Paper_ + AegisName: Torn_Diary Name: Torn Paper Type: Etc + Buy: 900 Weight: 10 - Id: 25262 - AegisName: Well-dried_Clover + AegisName: Dried_Clover Name: Well-dried Clover Type: Etc + Buy: 1200 Weight: 10 - Id: 25263 - AegisName: Short_Bat_Hair + AegisName: Short_Bat_Fur Name: Short Bat Hair Type: Etc + Buy: 790 Weight: 10 - Id: 25264 - AegisName: Cluster_of_Nightmares + AegisName: NightmareOfLump Name: Cluster of Nightmares Type: Etc + Buy: 822 Weight: 10 - Id: 25265 AegisName: Shining_Spore Name: Shining Spore Type: Etc + Buy: 342 Weight: 10 - Id: 25266 AegisName: Dried_Leaf_Of_Ygg Name: Dried Yggdrasil Leaf Type: Etc + Buy: 450 Weight: 10 - Id: 25267 - AegisName: Suspicious_Pentacle + AegisName: SuspiciousMagicCircle Name: Suspicious Pentacle Type: Etc + Buy: 970 Weight: 10 - Id: 25268 AegisName: Sticky_Blood @@ -35425,16 +35432,17 @@ Body: NoMail: true NoAuction: true - Id: 25271 - AegisName: Illusion_Stone + AegisName: IllusionStone Name: Illusion Stone Type: Etc Buy: 10 Flags: BuyingStore: true - Id: 25272 - AegisName: Illusion_Gemstone + AegisName: IllusoryStone Name: Illusion Gemstone Type: Etc + Buy: 590 Weight: 10 - Id: 25273 AegisName: Mysterious_Medal @@ -35455,7 +35463,7 @@ Body: NoMail: true NoAuction: true - Id: 25276 - AegisName: Clean_Bone + AegisName: CleanBone Name: Clean Bone Type: Etc Buy: 348 @@ -35467,49 +35475,49 @@ Body: Buy: 644 Weight: 10 - Id: 25278 - AegisName: Bandits_Scarf + AegisName: BanditsScarf Name: Bandit's Scarf Type: Etc Buy: 330 Weight: 10 - Id: 25279 - AegisName: Crude_Ammo + AegisName: CrudeAmmo Name: Crude Ammo Type: Etc Buy: 300 Weight: 10 - Id: 25280 - AegisName: Broken_Shotgun + AegisName: BrokenShotgun Name: Broken Shotgun Type: Etc Buy: 910 Weight: 10 - Id: 25281 - AegisName: Crude_Scimitar + AegisName: CrudeScimiter Name: Crude Scimitar Type: Etc Buy: 970 Weight: 10 - Id: 25282 - AegisName: Worn_Revolver + AegisName: WornRevolver Name: Worn Revolver Type: Etc Buy: 820 Weight: 10 - Id: 25283 - AegisName: Brown_Muffler + AegisName: BrownMuffler Name: Brown Muffler Type: Etc Buy: 420 Weight: 10 - Id: 25284 - AegisName: Swamp_Bug_Shell + AegisName: SwampBugPeelings Name: Swamp Bug Shell Type: Etc Buy: 230 Weight: 10 - Id: 25285 - AegisName: Brown_Rat_Tail + AegisName: BrownRatTail Name: Brown Rat Tail Type: Etc Buy: 210 diff --git a/db/re/laphine_synthesis.yml b/db/re/laphine_synthesis.yml index f1ccae36d6..3255eaf53b 100644 --- a/db/re/laphine_synthesis.yml +++ b/db/re/laphine_synthesis.yml @@ -1365,25 +1365,25 @@ Body: Amount: 10 - Item: Core_Jelly Amount: 10 - - Item: Clean_Bone + - Item: CleanBone Amount: 10 - Item: DeadlyPoisonPowder Amount: 10 - - Item: Bandits_Scarf + - Item: BanditsScarf Amount: 10 - - Item: Crude_Ammo + - Item: CrudeAmmo Amount: 10 - - Item: Broken_Shotgun + - Item: BrokenShotgun Amount: 10 - - Item: Crude_Scimitar + - Item: CrudeScimiter Amount: 10 - - Item: Worn_Revolver + - Item: WornRevolver Amount: 10 - - Item: Brown_Muffler + - Item: BrownMuffler Amount: 10 - - Item: Swamp_Bug_Shell + - Item: SwampBugPeelings Amount: 10 - - Item: Brown_Rat_Tail + - Item: BrownRatTail Amount: 10 - Item: Frozen_Stone_Fragment Amount: 10 @@ -1399,21 +1399,21 @@ Body: Amount: 10 - Item: Recruitment_Leaflet Amount: 10 - - Item: Illusion_Gemstone + - Item: IllusoryStone Amount: 10 - - Item: Torn_Paper_ + - Item: Torn_Diary Amount: 10 - - Item: Well-dried_Clover + - Item: Dried_Clover Amount: 10 - - Item: Short_Bat_Hair + - Item: Short_Bat_Fur Amount: 10 - - Item: Cluster_of_Nightmares + - Item: NightmareOfLump Amount: 10 - Item: Shining_Spore Amount: 10 - Item: Dried_Leaf_Of_Ygg Amount: 10 - - Item: Suspicious_Pentacle + - Item: SuspiciousMagicCircle Amount: 10 - Item: Piece_of_Black_Horn Amount: 10 diff --git a/db/re/mob_db.yml b/db/re/mob_db.yml index 4e61b7a695..6603319e44 100644 --- a/db/re/mob_db.yml +++ b/db/re/mob_db.yml @@ -88723,7 +88723,7 @@ Body: DamageMotion: 550 Ai: 04 Drops: - - Item: Crude_Ammo + - Item: CrudeAmmo Rate: 2500 - Item: Vigilante_Bow Rate: 50 @@ -88768,7 +88768,7 @@ Body: DamageMotion: 480 Ai: 04 Drops: - - Item: Bandits_Scarf + - Item: BanditsScarf Rate: 2500 - Item: Brigan Rate: 1000 @@ -88813,7 +88813,7 @@ Body: DamageMotion: 360 Ai: 04 Drops: - - Item: Brown_Muffler + - Item: BrownMuffler Rate: 2500 - Item: Brigan Rate: 1000 @@ -88862,7 +88862,7 @@ Body: ChangeTargetChase: true ChangeTargetMelee: true Drops: - - Item: Clean_Bone + - Item: CleanBone Rate: 2500 - Item: Rotten_Meat Rate: 1500 @@ -89141,7 +89141,7 @@ Body: DamageMotion: 660 Ai: 04 Drops: - - Item: Broken_Shotgun + - Item: BrokenShotgun Rate: 2500 - Item: Brigan Rate: 2000 @@ -89188,7 +89188,7 @@ Body: DamageMotion: 600 Ai: 04 Drops: - - Item: Worn_Revolver + - Item: WornRevolver Rate: 2500 - Item: Brigan Rate: 2000 @@ -89235,7 +89235,7 @@ Body: DamageMotion: 500 Ai: 04 Drops: - - Item: Crude_Scimitar + - Item: CrudeScimiter Rate: 2500 - Item: Brigan Rate: 2000 @@ -89250,22 +89250,391 @@ Body: - Item: E_Cowraiders3_Card Rate: 1 StealProtected: true -# - Id: 3750 -# AegisName: ILL_DRAINLIAR -# - Id: 3751 -# AegisName: ILL_ZOMBIE_C -# - Id: 3752 -# AegisName: ILL_ZOMBIE -# - Id: 3753 -# AegisName: ILL_GHOUL -# - Id: 3754 -# AegisName: ILL_NIGHTMARE -# - Id: 3755 -# AegisName: ILL_BLACK_MUSHROOM -# - Id: 3756 -# AegisName: ILL_BOMI -# - Id: 3757 -# AegisName: ILL_DRACULA + - Id: 3750 + AegisName: ILL_DRAINLIAR + Name: Matt Drainliar + Level: 131 + Hp: 42246 + BaseExp: 3928 + JobExp: 3769 + Attack: 1241 + Attack2: 170 + Defense: 150 + MagicDefense: 45 + Str: 91 + Agi: 129 + Vit: 96 + Int: 92 + Dex: 168 + Luk: 90 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Brute + RaceGroups: + Illusion_Vampire: true + Element: Dark + ElementLevel: 2 + WalkSpeed: 250 + AttackDelay: 1280 + AttackMotion: 576 + DamageMotion: 384 + Ai: 19 + Drops: + - Item: Carnium + Rate: 5000 + - Item: Tooth_Of_Bat + Rate: 5000 + - Item: Red_Jewel + Rate: 50 + - Item: Wing_Of_Red_Bat + Rate: 5000 + - Item: Short_Bat_Fur + Rate: 1500 + - Item: MattDrainliar_Card + Rate: 1 + StealProtected: true + - Id: 3751 + AegisName: ILL_ZOMBIE_C + Name: Living Dead + Level: 133 + Hp: 53926 + BaseExp: 4189 + JobExp: 3947 + Attack: 1445 + Attack2: 181 + Defense: 90 + MagicDefense: 24 + Str: 175 + Agi: 90 + Vit: 192 + Int: 14 + Dex: 184 + Luk: 14 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Medium + Race: Undead + RaceGroups: + Illusion_Vampire: true + Element: Undead + ElementLevel: 1 + WalkSpeed: 400 + AttackDelay: 500 + AttackMotion: 912 + DamageMotion: 288 + Ai: 19 + Drops: + - Item: Dried_Leaf_Of_Ygg + Rate: 2000 + - Item: Cardinal_Jewel_ + Rate: 50 + - Item: SuspiciousMagicCircle + Rate: 2000 + - Item: Skul_Ring_ + Rate: 5 + - Item: Poison_Herb_Rantana + Rate: 60 + - Item: Poison_Herb_Makulata + Rate: 60 + - Item: LivingDead_Card + Rate: 1 + StealProtected: true + - Id: 3752 + AegisName: ILL_ZOMBIE + Name: Starving Living Dead + Level: 130 + Hp: 40984 + BaseExp: 3621 + JobExp: 3177 + Attack: 1205 + Attack2: 153 + Defense: 60 + MagicDefense: 20 + Str: 150 + Agi: 70 + Vit: 160 + Int: 7 + Dex: 150 + Luk: 7 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Medium + Race: Undead + RaceGroups: + Illusion_Vampire: true + Element: Undead + ElementLevel: 1 + WalkSpeed: 400 + AttackDelay: 924 + AttackMotion: 912 + DamageMotion: 288 + Ai: 19 + Drops: + - Item: Dried_Leaf_Of_Ygg + Rate: 1500 + - Item: Cardinal_Jewel_ + Rate: 50 + - Item: SuspiciousMagicCircle + Rate: 300 + - Item: Skul_Ring + Rate: 5 + - Item: LivingDead_Card + Rate: 1 + StealProtected: true + - Id: 3753 + AegisName: ILL_GHOUL + Name: Living Dead + Level: 136 + Hp: 67379 + BaseExp: 4422 + JobExp: 3937 + Attack: 1413 + Attack2: 203 + Defense: 90 + MagicDefense: 30 + Str: 156 + Agi: 42 + Vit: 109 + Int: 101 + Dex: 99 + Luk: 30 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Medium + Race: Undead + RaceGroups: + Illusion_Vampire: true + Element: Undead + ElementLevel: 2 + WalkSpeed: 250 + AttackDelay: 2456 + AttackMotion: 912 + DamageMotion: 504 + Ai: 19 + Drops: + - Item: Dried_Leaf_Of_Ygg + Rate: 2000 + - Item: Bradium + Rate: 100 + - Item: SuspiciousMagicCircle + Rate: 400 + - Item: Ghoul_Leg + Rate: 10 + - Item: Skul_Ring + Rate: 5 + - Item: Poison_Herb_Scopolia + Rate: 30 + - Item: Skul_Ring_ + Rate: 1 + - Item: LivingDead_Card + Rate: 1 + StealProtected: true + - Id: 3754 + AegisName: ILL_NIGHTMARE + Name: Sweet Nightmare + Level: 135 + Hp: 61334 + BaseExp: 4023 + JobExp: 4022 + Attack: 1310 + Attack2: 597 + Defense: 116 + MagicDefense: 30 + Str: 144 + Agi: 94 + Vit: 84 + Int: 50 + Dex: 189 + Luk: 68 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Large + Race: Demon + RaceGroups: + Illusion_Vampire: true + Element: Ghost + ElementLevel: 2 + WalkSpeed: 150 + AttackDelay: 1826 + AttackMotion: 816 + DamageMotion: 432 + Ai: 19 + Modes: + Detector: true + Drops: + - Item: Horseshoe + Rate: 5000 + - Item: Blue_Potion + Rate: 30 + - Item: Carnium + Rate: 200 + - Item: NightmareOfLump + Rate: 1500 + - Item: Infiltrator + Rate: 10 + - Item: Infiltrator_ + Rate: 2 + - Item: SweetNightM_Card + Rate: 1 + StealProtected: true + - Id: 3755 + AegisName: ILL_BLACK_MUSHROOM + Name: Black Mushroom + Level: 130 + Hp: 150000 + BaseExp: 2437 + JobExp: 2284 + Defense: 418 + MagicDefense: 76 + Vit: 150 + Int: 103 + Luk: 88 + AttackRange: 1 + Size: Small + Race: Plant + RaceGroups: + Illusion_Vampire: true + Element: Earth + ElementLevel: 1 + WalkSpeed: 1000 + AttackMotion: 1 + Modes: + IgnoreMagic: true + IgnoreMelee: true + IgnoreMisc: true + IgnoreRanged: true + Drops: + - Item: Alchol + Rate: 50 + - Item: Detrimindexta + Rate: 50 + - Item: Dew_Laden_Moss + Rate: 20 + - Item: Mushroom_Spore + Rate: 5000 + - Item: Shining_Spore + Rate: 1000 + - Item: Poison_Spore + Rate: 500 + - Item: IllusoryStone + Rate: 500 + - Id: 3756 + AegisName: ILL_BOMI + Name: Bomi + Level: 137 + Hp: 378510 + BaseExp: 15034 + JobExp: 13533 + Attack: 3709 + Attack2: 1683 + Defense: 60 + MagicDefense: 60 + Str: 90 + Agi: 87 + Vit: 40 + Int: 140 + Dex: 199 + Luk: 91 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Medium + Race: Demihuman + RaceGroups: + Illusion_Vampire: true + Element: Undead + ElementLevel: 2 + WalkSpeed: 200 + AttackDelay: 1000 + AttackMotion: 864 + DamageMotion: 480 + Ai: 19 + Class: Boss + Modes: + IgnoreMisc: true + KnockBackImmune: true + Drops: + - Item: Dark_Red_Jewel + Rate: 2000 + - Item: Vampire's_Servant + Rate: 100 + - Item: Torn_Diary + Rate: 3000 + - Item: Bradium + Rate: 100 + - Item: Carnium + Rate: 100 + - Item: Bloodsuck_Plant_Seed + Rate: 500 + - Item: Cape_Of_Ancient_Lord_ + Rate: 50 + - Item: Bomi_Card + Rate: 1 + StealProtected: true + - Id: 3757 + AegisName: ILL_DRACULA + Name: Dracula of Rage + Level: 139 + Hp: 6909690 + BaseExp: 2682753 + JobExp: 1817882 + MvpExp: 1341376 + Attack: 6396 + Attack2: 2765 + Defense: 252 + MagicDefense: 146 + Str: 195 + Agi: 239 + Vit: 174 + Int: 201 + Dex: 270 + Luk: 195 + AttackRange: 3 + SkillRange: 10 + ChaseRange: 12 + Size: Large + Race: Demon + RaceGroups: + Illusion_Vampire: true + Element: Dark + ElementLevel: 4 + WalkSpeed: 145 + AttackDelay: 1290 + AttackMotion: 1140 + DamageMotion: 576 + Ai: 19 + Class: Boss + Modes: + Mvp: true + MvpDrops: + - Item: Old_Violet_Box + Rate: 5000 + - Item: IllusionStone + Rate: 500 + Drops: + - Item: Yggdrasilberry + Rate: 5000 + - Item: Dried_Clover + Rate: 2000 + - Item: Balistar_ + Rate: 80 + - Item: Cape_Of_Ancient_Lord_ + Rate: 80 + - Item: Ring_ + Rate: 80 + - Item: Book_Of_The_Apocalypse + Rate: 80 + - Item: Vampire's_Servant + Rate: 100 + - Item: Ill_Dracula_Card + Rate: 1 + StealProtected: true - Id: 3758 AegisName: ILL_MOONLIGHT Name: Angry Moonlight Flower @@ -89304,7 +89673,7 @@ Body: Rate: 5000 - Item: Yggdrasilberry Rate: 2000 - - Item: Illusion_Stone + - Item: IllusionStone Rate: 500 Drops: - Item: Bradium @@ -89360,7 +89729,7 @@ Body: Rate: 100 - Item: Carnium Rate: 100 - - Item: Illusion_Gemstone + - Item: IllusoryStone Rate: 200 - Item: Hazy_Dream_Fragment Rate: 500 @@ -89720,7 +90089,7 @@ Body: Modes: Detector: true Drops: - - Item: Swamp_Bug_Shell + - Item: SwampBugPeelings Rate: 2500 - Item: Sticky_Mucus Rate: 1500 @@ -89766,7 +90135,7 @@ Body: DamageMotion: 1000 Ai: 04 Drops: - - Item: Brown_Rat_Tail + - Item: BrownRatTail Rate: 2500 - Item: Monster's_Feed Rate: 100 @@ -91298,7 +91667,7 @@ Body: Rate: 150 - Item: Elunium Rate: 12 - - Item: Crude_Ammo + - Item: CrudeAmmo Rate: 800 - Item: Explosive_Powder Rate: 30 @@ -91507,7 +91876,7 @@ Body: DamageMotion: 480 Ai: 19 Drops: - - Item: Crude_Ammo + - Item: CrudeAmmo Rate: 1000 - Item: Heart_Hunter_Seal Rate: 1250 diff --git a/db/re/mob_skill_db.txt b/db/re/mob_skill_db.txt index 2b87c0a6c7..7cb9256aa7 100644 --- a/db/re/mob_skill_db.txt +++ b/db/re/mob_skill_db.txt @@ -12438,6 +12438,73 @@ 3633,EP16_2_VENOM_KIMERA@NPC_ACIDBREATH,attack,657,6,10000,3000,25000,no,target,always,0,,,,,,, 3633,EP16_2_VENOM_KIMERA@RG_STRIPARMOR,attack,217,5,500,1000,5000,no,target,always,0,,,,,,, +// Illusion of Vampire +3750,Matt Drainliar@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,, +3750,Matt Drainliar@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,, +3750,Matt Drainliar@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,, +3750,Matt Drainliar@AL_TELEPORT,idle,26,1,1000,1000,10000,no,self,always,0,,,,,,, +3750,Matt Drainliar@AL_TELEPORT,chase,26,1,1000,1000,10000,no,self,always,0,,,,,,, +3750,Matt Drainliar@AL_TELEPORT,attack,26,1,1000,1000,10000,no,self,always,0,,,,,,, +3750,Matt Drainliar@AL_HEAL,idle,28,9,10000,1000,10000,yes,self,always,0,,,,,,, +3750,Matt Drainliar@AL_HEAL,chase,28,9,10000,1000,10000,yes,self,always,0,,,,,,, +3750,Matt Drainliar@AL_HEAL,attack,28,9,10000,1000,10000,yes,self,always,0,,,,,,, +3751,Undead One@NPC_UNDEADATTACK,chase,347,5,2000,800,25000,yes,target,always,0,,,,,,, +3751,Undead One@NPC_BLEEDING,attack,660,1,1000,800,65000,yes,target,always,0,,,,,,, +3751,Undead One@NPC_STOP,attack,342,1,2000,0,35000,yes,target,always,0,,,,,,, +3751,Undead One@NPC_COMBOATTACK,attack,171,1,3500,500,8000,yes,target,always,0,,,,,,, +3752,Undead One@NPC_POISON,attack,176,1,500,800,5000,no,target,always,0,,,,,,, +3752,Undead One@NPC_POISON,angry,176,1,500,800,5000,no,target,always,0,,,,,,, +3752,Undead One@NPC_UNDEADATTACK,angry,347,1,2000,0,5000,yes,target,always,0,,,,,,, +3752,Undead One@NPC_UNDEADATTACK,attack,347,1,2000,0,5000,yes,target,always,0,,,,,,, +3752,Undead One@NPC_AGIUP,chase,350,1,10000,0,35000,yes,self,always,0,,,,,,, +3753,Undead One@NPC_POISON,attack,176,3,500,800,5000,yes,target,always,0,,,,,,, +3753,Undead One@NPC_BLOODDRAIN,attack,176,3,2000,500,15000,yes,target,always,0,,,,,,, +3753,Undead One@NPC_UNDEADATTACK,chase,347,3,1000,500,5000,yes,target,always,0,,,,,,, +3754,Sweet Nightmare@NPC_BLINDATTACK,attack,177,3,1000,0,7000,yes,target,always,0,,,,,,, +3754,Sweet Nightmare@NPC_CURSEATTACK,attack,181,3,1000,800,8000,no,target,always,0,,,,,,, +3754,Sweet Nightmare@NPC_MENTALBREAKER,attack,159,1,1000,800,9000,no,target,always,0,,,,,,, +3754,Sweet Nightmare@NPC_TELEKINESISATTACK,attack,191,5,1000,0,16000,yes,target,always,0,,,,,,, +3755,Illusion Black Mushroom@NPC_SELFDESTRUCTION,idle,173,1,500,200,5000,no,self,myhpltmaxrate,85,,,,,,, +3755,Illusion Black Mushroom@NPC_SELFDESTRUCTION,idle,173,1,10000,200,5000,no,self,skillused,173,,,,,,, +3755,Illusion Black Mushroom@NPC_SELFDESTRUCTION,idle,173,1,10000,200,5000,no,self,skillused,173,,,,,,, +3755,Illusion Black Mushroom@NPC_SELFDESTRUCTION,idle,173,1,10000,200,5000,yes,self,skillused,173,,,,,,, +3756,Bream@MG_FIREWALL,chase,18,5,500,500,35000,yes,target,always,0,,,,,,, +3756,Bream@MG_FROSTDIVER,chase,15,9,10000,500,40000,yes,target,always,0,,,,,,, +3756,Bream@MG_LIGHTNINGBOLT,chase,20,7,10000,1000,40000,yes,target,always,0,,,,,,, +3756,Bream@NPC_DARKSTRIKE,attack,340,5,2500,700,15000,no,target,always,0,,,,,,, +3756,Bream@MG_THUNDERSTORM,attack,21,5,2000,1000,15000,no,target,always,0,,,,,,, +3756,Bream@MG_LIGHTNINGBOLT,attack,20,7,10000,1000,40000,no,target,always,0,,,,,,, +3756,Bream@MG_SOULSTRIKE,attack,13,9,1000,500,10000,yes,target,always,0,,,,,,, +3756,Bream@MG_SAFETYWALL,attack,12,10,3000,0,35000,yes,self,always,0,,,,,,, +3756,Bream@NPC_SUMMONSLAVE,attack,196,1,10000,200,10000,no,self,slavele,2,3750,,,,,, +3756,Bream@NPC_SUMMONSLAVE,idle,196,1,10000,200,10000,no,self,slavele,2,3751,,,,,, +3756,Bream@NPC_WIDESUCK,idle,722,1,10000,500,30000,no,self,always,0,,,,,,, +3757,Illusion Dracula@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,, +3757,Illusion Dracula@AL_DECAGI,chase,30,10,2000,0,5000,no,target,always,0,,,,,,, +3757,Illusion Dracula@AS_GRIMTOOTH,chase,137,5,2000,0,5000,yes,target,always,0,,,,,,, +3757,Illusion Dracula@NPC_CRITICALWOUND,chase,673,5,2000,500,12000,no,target,myhpltmaxrate,50,,,,,,, +3757,Illusion Dracula@NPC_HELLJUDGEMENT,attack,662,10,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,36, +3757,Illusion Dracula@NPC_AGIUP,attack,350,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6, +3757,Illusion Dracula@NPC_BLOODDRAIN,attack,199,1,3000,0,10000,yes,target,always,0,,,,,,, +3757,Illusion Dracula@NPC_ENERGYDRAIN,chase,200,1,3000,0,10000,yes,target,always,0,,,,,,, +3757,Illusion Dracula@MO_BODYRELOCATION,chase,264,1,2000,200,5000,yes,target,always,0,,,,,,, +3757,Illusion Dracula@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,, +3757,Illusion Dracula@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,, +3757,Illusion Dracula@NPC_CHANGEUNDEAD,attack,348,1,2000,0,25000,no,target,always,0,,,,,,9, +3757,Illusion Dracula@NPC_INVISIBLE,idle,353,1,1000,200,50000,yes,self,always,0,,,,,,, +3757,Illusion Dracula@NPC_INVISIBLE,chase,353,1,1000,200,50000,yes,self,always,0,,,,,,, +3757,Illusion Dracula@NPC_INVISIBLE,attack,353,1,1000,200,15000,yes,self,always,0,,,,,,, +3757,Illusion Dracula@NPC_WIDESILENCE,attack,663,5,2000,100,15000,no,self,always,0,,,,,,, +3757,Illusion Dracula@NPC_SUMMONSLAVE,attack,196,1,10000,700,9000,no,self,slavele,5,3750,,,,,, +3757,Illusion Dracula@NPC_SUMMONSLAVE,idle,196,2,10000,700,9000,no,self,slavele,5,3750,,,,,, +3757,Illusion Dracula@NPC_DARKSTRIKE,attack,340,1,3000,0,0,yes,target,skillused,2008,,,,,,, +3757,Illusion Dracula@NPC_DARKSTRIKE,attack,340,1,3000,0,0,yes,target,skillused,490,,,,,,, +3757,Illusion Dracula@NPC_DARKSTRIKE,attack,340,1,3000,0,0,yes,target,skillused,271,,,,,,, +3757,Illusion Dracula@NPC_DARKBREATH,attack,202,5,900,800,900,yes,target,always,0,,,,,,, +3757,Illusion Dracula@NPC_DARKCROSS,attack,338,10,900,400,800,yes,target,always,0,,,,,,9, +3757,Illusion Dracula@NPC_GRANDDARKNESS,attack,339,10,900,1000,1200,no,self,always,0,,,,,,, +3757,Illusion Dracula@NPC_DARKTHUNDER,attack,341,10,900,1000,1200,no,target,always,0,,,,,,, + // Illusion of Moonlight 3758,Angry Moonlight Flower@AL_HEAL,attack,28,11,10000,0,5000,no,friend,friendhpltmaxrate,60,,,,,,21, 3758,Angry Moonlight Flower@AL_HEAL,attack,28,11,10000,0,5000,no,self,myhpltmaxrate,30,,,,,,21, diff --git a/db/re/quest_db.yml b/db/re/quest_db.yml index 5243810b4a..384e5fc8ae 100644 --- a/db/re/quest_db.yml +++ b/db/re/quest_db.yml @@ -9452,12 +9452,84 @@ Body: - Id: 14650 Title: Currently in production TimeLimit: 4h + - Id: 14651 + Title: Decision on divorce should be made cautiously + TimeLimit: +4d + - Id: 14652 + Title: Detailed Account 01 + - Id: 14653 + Title: Detailed Account 02 + - Id: 14654 + Title: Detailed Account 03 + - Id: 14655 + Title: I'm Ready + - Id: 14656 + Title: Finding Father Grimm's Colleagues + - Id: 14657 + Title: Jojo Is the Mage's Name + - Id: 14658 + Title: Jubilee Is the Priest's Name + - Id: 14659 + Title: Lost in Thought + - Id: 14660 + Title: Ingredients for Fake Blood + Drops: + - Mob: ILL_DRAINLIAR + Item: Sticky_Blood + Rate: 7000 + - Mob: ILL_BLACK_MUSHROOM + Item: Mushroom_Sap + Rate: 7000 + - Id: 14661 + Title: Jojo Is the Mage's Name 02 + - Id: 14662 + Title: You're Scaring Me + - Id: 14663 + Title: Bloody Fight + - Id: 14664 + Title: Deep Misunderstanding + - Id: 14665 + Title: Is the Fight Over? + - Id: 14666 + Title: Warden's Role + - Id: 14667 + Title: Send the Dead Back to Earth + Targets: + - Mob: ILL_ZOMBIE_C + Count: 10 + - Mob: ILL_ZOMBIE + Count: 10 + - Mob: ILL_GHOUL + Count: 10 - Id: 14668 Title: Get Some Rest TimeLimit: 4h + - Id: 14669 + Title: Sweet Dreams + Targets: + - Mob: ILL_NIGHTMARE + Count: 10 + Drops: + - Mob: ILL_NIGHTMARE + Item: Swaying_Mane + Rate: 7000 - Id: 14670 Title: Time for Dreaming TimeLimit: 4h + - Id: 14671 + Title: Unreliable Fake Blood + Targets: + - Mob: ILL_DRAINLIAR + Count: 5 + - Mob: ILL_BLACK_MUSHROOM + Count: 5 + Drops: + - Mob: ILL_DRAINLIAR + Item: Sticky_Blood + Rate: 7000 + - Mob: ILL_BLACK_MUSHROOM + Item: Mushroom_Sap + Rate: 7000 - Id: 14672 Title: Preparing for the Firework Festival Targets: @@ -9469,12 +9541,26 @@ Body: - Id: 14674 Title: Time to Digest TimeLimit: 4h + - Id: 14675 + Title: Noisy Neighbors + Targets: + - Mob: ILL_DRAINLIAR + Count: 10 - Id: 14676 Title: Break Time TimeLimit: 4h + - Id: 14677 + Title: Studying in Dim Light - Id: 14678 Title: Time to Study TimeLimit: 4h + - Id: 14679 + Title: Curious by Nature + Targets: + - Mob: ILL_ZOMBIE_C + Count: 5 + - Mob: ILL_ZOMBIE + Count: 5 - Id: 14680 Title: Time to Research TimeLimit: 4h diff --git a/npc/re/merchants/enchan_illusion_16_2.txt b/npc/re/merchants/enchan_illusion_16_2.txt index 491310cebf..f37086d327 100644 --- a/npc/re/merchants/enchan_illusion_16_2.txt +++ b/npc/re/merchants/enchan_illusion_16_2.txt @@ -3,15 +3,15 @@ //===== Description: ========================================= //= [Walkthrough Conversion] //= Illusion series related merchants and enchanters -//===== Changelogs: ========================================== -//= 1.0 Initial release [crazyarashi] +//===== Changelog: =========================================== +//= 1.0 Initial release of Illusion of Moonlight [crazyarashi] //= 1.1 Cleanup and improvements [Everade] +//= 1.2 Added Illusion of Vampire enchanter [Capuche] //============================================================ //============================================================ //= Illusion of Moonlight //============================================================ - pay_d03_i,160,45,3 script Gemcutter#ilp20 4_TOWER_17,3,3,{ mes "[ Gemcutter ]"; mes "Do you have business with me?"; @@ -248,3 +248,368 @@ OnTouch: npctalk "What kind of place is this?", "", bc_self; end; } + + +//============================================================ +//= Illusion of Vampire +//============================================================ +gef_dun01,139,228,3 script Great Merchant#illgef 4_M_HUMERCHANT,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[Great Merchant]"; + mes "You don't seem to be able to carry any more stuff. Why don't you lighten your bag?"; + close; + } + disable_items; + mes "[Great Merchant]"; + mes "Adventurer, do you have ^0000cdIllusion Stones^000000? If you have a ^0000cdweapon, a piece armor^000000, or ^0000cdan accessory at Refining Level 9 or higher^000000, "; + mes "then I can exchange it for something better at the cost of some Illusion Stones and other materials."; + next; + mes "[Great Merchant]"; + mes "Check the ^0000cdcatalog^000000 for the available equipment and necessary materials."; + next; + mes "[Great Merchant]"; + mes "So, what do you want?"; + next; + switch( select( "Weapon exchange (5 kinds)", "Armor exchange (1 kind)", "Accessory exchange (2 kinds)", "Check the catalog.", "What are Illusion Stones?", "Can I refine the equipment I get in exchange for my Illusion Stones?" ) ) { + case 1: + setarray .@item_req[0], // item equipped aren't required to build the menu color + 28022, 25271,80, 25261,20, // Illusion_Infiltrator + 28023, 25271,10, 25264,100, // Illusion_Sharpened_Legbone_of_Ghoul + 2039, 25271,40, 25261,100, // Illusion_Wizardry_Staff + 18149, 25271,50, 25265,100, // Illusion_Ballista + 28612, 25271,50, 25262,10; // Illusion_Apocalypse + .@size = getarraysize(.@item_req); + for ( .@i = 0; .@i < .@size; .@i += 5 ) { + if (countitem(.@item_req[.@i+1]) < .@item_req[.@i+2] || countitem(.@item_req[.@i+3]) < .@item_req[.@i+4]) + .@menu$ += "^aaaaaa" + getitemname(.@item_req[.@i]) + ".^000000:"; + else + .@menu$ += getitemname(.@item_req[.@i]) + ".:"; + } + switch( select(.@menu$) ) { + case 1: + mes "[Great Merchant]"; + mes "Illusion Infiltrator, huh? That's a good weapon. Dreadful name, though. Let's see what you've got."; + callsub( S_WeaponArmor, 28022, // Illusion_Infiltrator + EQI_HAND_R, + 1266, // Infiltrator_ + 25271,80, // Illusion Stones + 25261,20 // Torn_Diary + ); + case 2: + mes "[Great Merchant]"; + mes "Illusion Sharpened Legbone of Ghoul. It perfectly fits in this place. Let's see what you've got."; + callsub( S_WeaponArmor, 28023, // Illusion_Sharpened_Legbone_of_Ghoul + EQI_HAND_R, + 1260, // Ghoul_Leg + 25271,10, // Illusion Stones + 25264,100 // NightmareOfLump + ); + case 3: + mes "[Great Merchant]"; + mes "Illusion Wizardry Staff, huh? *Chuckle* Having that is every mage's dream. Let's see what you've got."; + callsub( S_WeaponArmor, 2039, // Illusion_Wizardry_Staff + EQI_HAND_R, + 1473, // Wizardy_Staff + 25271,40, // Illusion Stones + 25261,100 // SuspiciousMagicCircle + ); + case 4: + mes "[Great Merchant]"; + mes "Illusion Ballista... I would've loved to have this when, sigh, never mind. Let's see what you've got."; + callsub( S_WeaponArmor, 18149, // Illusion_Ballista + EQI_HAND_R, + 1727, // Balistar_ + 25271,50, // Illusion Stones + 25265,100 // Shining_Spore + ); + case 5: + mes "[Great Merchant]"; + mes "Illusion Book of the Apocalypse, huh? It's been a long time since I heard the story behind this book. Anyway, let's see what you've got."; + callsub( S_WeaponArmor, 28612, // Illusion_Apocalypse + EQI_HAND_R, + 1557, // Book_Of_The_Apocalypse + 25271,50, // Illusion Stones + 25262,10 // Dried_Clover + ); + } + case 2: + if (countitem(25271) < 30 || countitem(25263) < 200) + .@menu$ = "^aaaaaa" + getitemname(20840) + ".^000000"; + else + .@menu$ = getitemname(20840); + select(.@menu$); + mes "[Great Merchant]"; + mes "Illusion Ancient Cape. Someone in this place? *Ahem* Let's see what you've got."; + callsub( S_WeaponArmor, 20840, // Illusion_Ancient_Cape + EQI_GARMENT, + 2525, // Cape_Of_Ancient_Lord_ + 25271,30, // Illusion Stones + 25263,200 // Short_Bat_Fur + ); + case 3: + setarray .@item_req[0], // item equipped aren't required to build the menu color + 28508, 25271,50, 25266,400, // Illusion_Skull_Ring + 28509, 25271,50, 25267,400; // Illusion_Ring + .@size = getarraysize(.@item_req); + for ( .@i = 0; .@i < .@size; .@i += 5 ) { + if (countitem(.@item_req[.@i+1]) < .@item_req[.@i+2] || countitem(.@item_req[.@i+3]) < .@item_req[.@i+4]) + .@menu$ += "^aaaaaa" + getitemname(.@item_req[.@i]) + ".^000000:"; + else + .@menu$ += getitemname(.@item_req[.@i]) + ".:"; + } + switch( select(.@menu$) ) { + case 1: + mes "[Great Merchant]"; + mes "Illusion Skull Ring. *Chuckle* I remember when I was young, my friends and I wore this ring and played pranks, hah hah, never mind. That was a long time ago. Anyway, let's see what you've got."; + callsub( S_Accessory, 28508, // Illusion_Skull_Ring + 2715, // Skul_Ring_ + 25271,50, // Illusion Stones + 25266,400 // Dried_Yggdrasil_Leaf + ); + case 2: + mes "[Great Merchant]"; + mes "Illusion Ring... It may not look much, but it has an important meaning to me. Anyway, let's see what you've got."; + callsub( S_Accessory, 28509, // Illusion_Ring + 2621, // Ring_ + 25271,50, // Illusion Stones + 25267,400 // SuspiciousMagicCircle + ); + } + case 4: + while( true ) { + mes "[Great Merchant]"; + mes "Do you want to see my catalog? Sure thing."; + next; + switch( select( "Weapons (5 kinds)", "Armor (1 kind)", "Accessory (2 kinds)", "Cancel." ) ) { + case 1: + switch( select( "Illusion Infiltrator", "Illusion Sharpened Legbone of Ghoul", "Illusion Wizardry Staff", "Illusion Ballista", "Illusion Book of the Apocalypse" ) ) { + case 1: + mes "Illusion Infiltrator28022"; + mes "***********************************"; + mes "Necessary Items"; + mes "^0000cd+9 or higher^000000 Infiltrator ^C71585[1]^000000 x1"; + mes "Socket Artisan"; + mes ": Seiyablem in Pronteraprt_in,33,70,000,0,"; + mes "80 Illusion Stones"; + mes "20 Torn Papers"; + break; + case 2: + mes "Illusion Sharpened Legbone of Ghoul28023"; + mes "********************************"; + mes "Necessary Items"; + mes "^0000cd+9 or higher^000000 Sharpened Legbone of Ghoul x1"; + mes "10 Illusion Stones"; + mes "100 Clusters of Nightmares"; + break; + case 3: + mes "Illusion Wizardry Staff2039"; + mes "********************************"; + mes "Necessary Items"; + mes "^0000cd+9 or higher^000000 Wizardry Staff x1"; + mes "40 Illusion Stones"; + mes "100 Suspicious Pentacles"; + break; + case 4: + mes "Illusion Ballista18149"; + mes "*************************"; + mes "Necessary Items"; + mes "^0000cd+9 or higher^000000 Ballista ^C71585[1]^000000 x1"; + mes "Socket Artisan"; + mes ": Seiyablem in Pronteraprt_in,33,70,000,0,"; + mes "50 Illusion Stones"; + mes "100 Shining Spores"; + break; + case 5: + mes "Illusion Book of the Apocalypse28612"; + mes "***********************"; + mes "Necessary Items"; + mes "^0000cd+9 or higher^000000 Book of the Apocalypse x1"; + mes "50 Illusion Stones"; + mes "10 Well-dried Clovers"; + break; + } + break; + case 2: + select("Illusion Ancient Cape"); + mes "Illusion Ancient Cape20840"; + mes "*******************************"; + mes "Necessary Items"; + mes "^0000cd+9 or higher^000000 Ancient Cape ^C71585[1]^000000 x1"; + mes "Socket Artisan"; + mes ": Leablem in Pronteraprontera,244,169,000,0,"; + mes "30 Illusion Stones"; + mes "200 Short Bat Hairs"; + break; + case 3: + switch( select( "Illusion Skull Ring", "Illusion Ring" ) ) { + case 1: + mes "Illusion Skull Ring28508"; + mes "*************************"; + mes "Necessary Items"; + mes "Skull Ring ^C71585[1]^000000 x1"; + mes "Socket Artisan"; + mes ": Leablem in Pronteraprontera,244,169,000,0,"; + mes "50 Illusion Stones"; + mes "400 Dried Yggdrasil Leaves"; + break; + case 2: + mes "Illusion Ring28509"; + mes "********************"; + mes "Necessary Items"; + mes "Ring ^C71585[1]^000000 x1"; + mes "50 Illusion Stones"; + mes "400 Suspicious Pentacles"; + break; + } + break; + case 4: + mes "[Great Merchant]"; + mes "Did you find something you like? Let me know if I can help you."; + close; + } + next; + } + case 5: + mes "[Great Merchant]"; + mes "What are ^0000cdIllusion Stones^000000, you ask? Well... I don't think anyone knows exactly what they are."; + next; + mes "[Great Merchant]"; + mes "I only know they're rare and can only be found in some special places, and I'm here to collect them for my clients."; + next; + mes "[Great Merchant]"; + mes "My clients want to figure out what these stones are. They're paying me a lot of money,"; + next; + mes "[Great Merchant]"; + mes "so I could offer adventurers like you ^0000cdexpensive equipment in exchange for the stones^000000, and still fetch a profit."; + next; + mes "[Great Merchant]"; + mes "Bring ^0000cda piece of refined equipment, Illusion Stones^000000, and various materials that are only found in this place. I'll ^0000cdupgrade the equipment, weapon, armor, or accessory?^000000for you."; + next; + mes "[Great Merchant]"; + mes "This benefits both of us. Let me know if you're interested in my proposition."; + close; + case 6: + mes "[Great Merchant]"; + mes "So, you want to reinforce the equipment you get. You're thorough. I like that!"; + next; + mes "[Great Merchant]"; + mes "A while ago, an adventurer who passed through this place told me that a chemist in Prontera refines the Illusion equipment in exchange for Illusion Stones."; + next; + mes "[Great Merchant]"; + mes "It seems Illusion Stones are a popular topic everywhere. Everyone wants to know about what they are."; + next; + mes "[Great Merchant]"; + mes "If you want to refine your equipment, then go to the Illusion Enchanterprontera,90,115,000,0, near the Town Office."; + close; + } + +S_WeaponArmor: + .@reward = getarg(0); + .@part = getarg(1); + .@eq_req = getarg(2); + + setarray .@items_req[0], + getarg(3),getarg(4), + getarg(5),getarg(6); + + next; + donpcevent "Great Merchant#illgef::OnProgress"; + sleep2 1000; + .@slots = getitemslots(.@eq_req); + .@eq_req_name$ = getitemname(.@eq_req) + ( .@slots ? "[" + .@slots + "]" : "" ); + .@equip_id = getequipid(.@part); + if (.@equip_id == -1) { + mes "[Great Merchant]"; + if (.@part == EQI_HAND_R) + mes "Oh, you must have been in a hurry: you forgot to bring a weapon."; + else + mes "Oh, you must have been in a hurry: you forgot to bring an armor."; + mes "Please come back equipped with a ^0000cd+9 " + .@eq_req_name$ + "^000000. I'll wait here."; + close; + } + if (.@equip_id != .@eq_req) { + mes "[Great Merchant]"; + mes "Let's see... Mm? What did you bring? Come back equipped with a ^0000cd+9 " + .@eq_req_name$ + "^000000."; + close; + } + if (getequiprefinerycnt(.@part) < 9) { + mes "[Great Merchant]"; + if (.@part == EQI_HAND_R) + mes "Um, this one isn't refined enough. I told you the armor has to be ^0000cdrefined to as least +9^000000."; + else + mes "Um, this one isn't refined enough. I told you the weapon has to be ^0000cdrefined to as least +9^000000."; + close; + } + mes "[Great Merchant]"; + mes "Ah, you're equipped with the correct item. Now, let me check the other materials."; + next; + if (countitem(.@items_req[0]) < .@items_req[1] || countitem(.@items_req[2]) < .@items_req[3]) { + mes "[Great Merchant]"; + mes "Mm, you're so impatient. I told you, I need ^4d4fff" + .@items_req[1] + " " + getitemname(.@items_req[0]) + " and " + .@items_req[3] + " " + getitemname(.@items_req[2]) + "^000000. Check your inventory and bring all of them."; + close; + } + mes "[Great Merchant]"; + mes "Alright, you've got everything."; + next; + mes "[Great Merchant]"; + mes "Are you ready to make the exchange?"; + next; + if (select( "Wait! Let me think.", "Yes, I am." ) == 1) { + mes "[Great Merchant]"; + mes "Sure, no problem. Come back when you're ready."; + close; + } + mes "[Great Merchant]"; + mes "Alright! Let's see..."; + next; + mes "[Great Merchant]"; + mes "Here, take this. I hope you'll enjoy. If you find more Illusion Stones, feel free to bring them to me! *Chuckle*"; + delequip .@part; + delitem .@items_req[0], .@items_req[1]; + delitem .@items_req[2], .@items_req[3]; + getitem .@reward,1; + close; + +S_Accessory: // the structure is slightly different from above + .@reward = getarg(0); + .@eq_req = getarg(1); + + setarray .@items_req[0], + getarg(2),getarg(3), + getarg(4),getarg(5); + + next; + donpcevent "Great Merchant#illgef::OnProgress"; + sleep2 1000; + .@count = countitem(.@eq_req) - (getequipid(EQI_ACC_L) == .@eq_req) - (getequipid(EQI_ACC_R) == .@eq_req); + if (.@count < 1 || countitem(.@items_req[0]) < .@items_req[1] || countitem(.@items_req[2]) < .@items_req[3]) { + mes "[Great Merchant]"; + mes "Mm, you're so impatient. I told you, I need ^4d4fff1 socketed " + getitemname(.@eq_req) + ", " + .@items_req[1] + " " + getitemname(.@items_req[0]) + " and " + .@items_req[3] + " " + getitemname(.@items_req[2]) + "^000000. Check your inventory and bring all of them."; + close; + } + mes "[Great Merchant]"; + mes "Alright, you've got everything."; + next; + mes "[Great Merchant]"; + mes "Are you ready to make the exchange?"; + next; + if (select( "Wait! Let me think.", "Yes, I am." ) == 1) { + mes "[Great Merchant]"; + mes "Sure, no problem. Come back when you're ready."; + close; + } + mes "[Great Merchant]"; + mes "Alright! Let's see..."; + next; + mes "[Great Merchant]"; + mes "Here, take this. I hope you'll enjoy. If you find more Illusion Stones, feel free to bring them to me! *Chuckle*"; + delitem .@eq_req,1; + delitem .@items_req[0], .@items_req[1]; + delitem .@items_req[2], .@items_req[3]; + getitem .@reward,1; + close; + +OnProgress: + progressbar_npc "000000",1; + end; +} diff --git a/npc/re/mobs/dungeons/gef_d01_i.txt b/npc/re/mobs/dungeons/gef_d01_i.txt new file mode 100644 index 0000000000..fe65011fcb --- /dev/null +++ b/npc/re/mobs/dungeons/gef_d01_i.txt @@ -0,0 +1,16 @@ +//===== rAthena Script ======================================= +//= Illusion of Vampire +//===== Description: ========================================= +//= Illusion of Vampire monster spawn script. +//===== Changelog: =========================================== +//= 1.0 Initial Release [Everade] +//============================================================ + +gef_d01_i monster White Plant 1082,12 +gef_d01_i monster Blue Plant 1079,2 +gef_d01_i monster Matt Drainliar 3750,25 +gef_d01_i monster Living Dead 3751,10 +gef_d01_i monster Starving Living Dead 3752,20 +gef_d01_i monster Living Dead 3753,30 +gef_d01_i monster Sweet Nightmare 3754,25 +gef_d01_i monster Black Mushroom 3755,15 diff --git a/npc/re/quests/quests_16_2_illusion.txt b/npc/re/quests/quests_16_2_illusion.txt index fa2018e4a6..68f60de427 100644 --- a/npc/re/quests/quests_16_2_illusion.txt +++ b/npc/re/quests/quests_16_2_illusion.txt @@ -3,9 +3,12 @@ //===== Description: ========================================= //= [Walkthrough Conversion] //= Quest NPCs for Episode 16.2 - Illusion series -//===== Changelogs: ========================================== +// +//- Note: Probably missing some questinfo on Illusion of Vampire. +//===== Changelog: =========================================== //= 1.0 Illusion of Moonlight initial release [crazyarashi] //= 1.1 Script & function cleanup [Everade] +//= 1.2 Added Illusion of Vampire [Capuche] //============================================================ //============================================================ @@ -1105,3 +1108,3760 @@ OnTimer60000: enablenpc(); end; } + + +//============================================================ +//= Illusion of Vampire +//============================================================ +gef_dun01,134,224,1 script Mojo#ilgf 2_F_MAGICMASTER,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[Mojo]"; + mes "Are you sure you can carry all that stuff? Why don't you lighten your bag?"; + close; + } + if (ill_vampire == 0) { + mes "[Mojo]"; + mes "Mm, you're an adventurer. What brings you to me? I'm sorry, I'm kind of busy. Could you talk to the priest over there instead?"; + close; + } + if (ill_vampire < 16) { + mes "[Mojo]"; + mes "The notebook... I want to see the notebook... If you want to enter the notebook, then you should talk to Father Grimm. If you want, I can go with you."; + close; + } + switch( checkquest(14680,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Mojo]"; + mes "Hello, Adventurer."; + next; + mes "[Mojo]"; + mes "Oh, I'm sorry, but I can't talk right now. I'm too busy examining the things you brought to me."; + next; + mes "[Mojo]"; + mes "Could you come back after dawn?"; + close; + case 2: + mes "[Mojo]"; + mes "Hello, Adventurer. How are you?"; + next; + mes "[Mojo]"; + mes "Whew, I stayed up all night examining the Dried Yggdrasil Leaves and the Suspicious Pentacles. I wouldn't have to, if Father Grimm left me alone."; + next; + mes "[Mojo]"; + mes "Anyway they're so old and poorly preserved that they easily crumble to dust. I couldn't finish my research."; + next; + mes "[Mojo]"; + mes "So I'm thinking... Could you bring me some more today? I need ^0000cd10 Dried Yggdrasil Leaves and 10 Suspicious Pentacles^000000."; + next; + mes "[Mojo]"; + mes "Also, please hunt 5 zombies of each kind for that nagging priest."; + next; + mes "[Mojo]"; + mes "In the meantime I'll catch some Z's."; + erasequest 14680;// Time to Research + setquest 14679;// Send the Dead Back to Earth + close; + } + switch( checkquest(14679,HUNTING) ) { + case -1: + mes "[Mojo]"; + mes "Adventurer, how did you feel when you touched the notebook? How do you think it works?"; + next; + mes "[Mojo]"; + mes "I've got so many questions, but that mean priest wouldn't let me touch it."; + next; + mes "[Mojo]"; + mes "Adventurer, could you take me with you the next time you enter the notebook? I swear I'm not going to steal the notebook. I'm just really curious about it."; + next; + mes "[Grimm]"; + mes "I can hear you. Give up your obsession with it. That would be best for you."; + next; + mes "[Mojo]"; + mes "Who says I'm obsessed with it?"; + next; + mes "[Mojo]"; + mes "Adventurer, please? Don't I look pitiful?"; + next; + if (select( "What do you want to know the most?", "I don't want to get between you two." ) == 2) { + mes "[" + strcharinfo(0) + "]"; + mes "Sorry, but I don't want to get between you two. You both have a point, and I can't side with either one of you."; + next; + mes "[Mojo]"; + mes "Hmpf, alright, but if you ever feel pity for me, then come back and help me. Promise?"; + close; + } + mes "[Mojo]"; + mes "About those walking corpses, of course!"; + next; + mes "[Mojo]"; + mes "I really want to know what keeps them moving, what kind of experiments my predecessors did on them, and what kind of state they're in."; + next; + mes "[Mojo]"; + mes "Such experiments are prohibited now, and all the old records were destroyed."; + next; + mes "[Grimm]"; + mes "They were destroyed for good reason. So stop wondering about them."; + next; + mes "[Mojo]"; + mes "Oh, that's right! Adventurer, could you capture a zombie for me? Alive, that is."; + npctalk "Wait, it can't be alive. It's already dead.", "", bc_self; + next; + mes "[Grimm]"; + mes "No. Don't even think about it. Mojo, you're so close to crossing the line."; + next; + mes "[Mojo]"; + mes "I wasn't asking you! Unless you're going to let me touch the notebook, stay out of my hair!"; + next; + mes "[Grimm]"; + mes "You just asked this adventurer to capture a zombie alive."; + next; + mes "[Grimm]"; + mes "You're not thinking about what kind of danger it might pose when it arrives here. You just want it because you're curious about it."; + next; + mes "[Grimm]"; + mes "Did you forget why Brother Jojo wanted you to stay here and stay away from the notebook?"; + next; + mes "[Mojo]"; + mes "So I'm asking this adventurer. You keep telling me don't do this, don't do that. Is there anything I can do without you saying no?"; + npctalk "You just want me to stand here, breathing. Is that it?", "", bc_self; + sleep2 1000; + npctalk "Sure, why not?", "Grimm#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "You can't bring anything from the world inside the book. If you do, I'll get rid of them."; + next; + mes "[Grimm]"; + mes "If you really want to experiment on those blasphemous creatures, then I suggest you talk with Brother Jojo and the others first."; + next; + mes "[Mojo]"; + mes "When are they coming back?"; + next; + mes "[Grimm]"; + mes "Beats me."; + npctalk "You should've become a politician. You would've been more successful at that.", "", bc_self; + sleep2 500; + npctalk "I'll take that as a compliment.", "Grimm#ilgf", bc_self; + next; + mes "[Mojo]"; + mes "Adventurer, I read in the notebook that the owner used some materials to experiment on zombies. I think they're Yggdrasil leaves and some drawings."; + next; + select("You mean dried Yggdrasil leaves and some pentacles."); + mes "[Mojo]"; + mes "Yes. Could you at least procure them for me?"; + next; + mes "[Mojo]"; + mes "Maybe I can use them to figure out the experiment she did and the force that reanimates the dead."; + npctalk "Secretly from that priest, of course.", "", bc_self; + sleep2 500; + npctalk "I still can hear you.", "Grimm#ilgf", bc_self; + sleep2 1000; + npctalk "Stop eavesdropping on people.", "", bc_self; + next; + mes "[Grimm]"; + mes "Why are you obsessed with this? Do you really want to let these unholy creature loose on the continent? Do you not understand why the Tower has banned the experiments?"; + next; + mes "[Mojo]"; + mes "Look, I'm not going to experiment on the zombies. I just want to take a look at the materials she used."; + next; + mes "[Mojo]"; + mes "And who knows? I might find out a way to exterminate these zombies at once."; + npctalk "I may not look it, but I'm pretty smart.", "", bc_self; + next; + mes "[Mojo]"; + mes "You agreed that our enthusiasm for magic has contributed to the development of our country."; + next; + mes "[Grimm]"; + mes "..."; + npctalk "I'll take that as a yes.", "", bc_self; + next; + mes "[Mojo]"; + mes "I promise I'm not going to do anything dangerous. I'll just take a look at the materials."; + next; + mes "[Grimm]"; + mes "I'm going to watch you."; + next; + mes "[Mojo]"; + mes "Sure, be my guest."; + npctalk "Ooh, I'm going to be studying with you breathing down my neck, how exciting!", "", bc_self; + next; + mes "[Grimm]"; + mes "And you will stop asking me for this notebook, yes?"; + next; + mes "[Mojo]"; + mes "Huh? But that's... I'd love to take a look at it."; + npctalk "Do you think you can?", "Grimm#ilgf", bc_self; + sleep2 500; + npctalk "Maybe one day, yes.", "", bc_self; + sleep2 1000; + npctalk "I swear to Odin that day will never come.", "Grimm#ilgf", bc_self; + sleep2 1000; + npctalk "Bah!", "", bc_self; + next; + select("So have you come to an agreement?"); + mes "[Mojo]"; + mes "Yes, we have. Please bring me some dried Yggdrasil leaves and pentacles. 10 for each sounds good."; + next; + mes "[Grimm]"; + mes "Are you sure that's enough?"; + next; + mes "[Mojo]"; + mes "Mm, I'm not sure yet. Do you mind if I ask you for more later? Okay, then please bring me ^0000cd10 Dried Yggdrasil Leaves and 10 Suspicious Pentacles^000000."; + next; + mes "[Mojo]"; + mes "Oh, and while you're at it, could you hunt some zombies for that scowling priest as well? Just 5 of each kind. I don't want to burden you."; + npctalk "You're already burdening him.", "Grimm#ilgf", bc_self; + sleep2 500; + npctalk "Yeah, but look at you, your face lit up when I offered.", "", bc_self; + next; + mes "[Mojo]"; + mes "Adventurer, thank you for doing this for us."; + setquest 14679;// Send the Dead Back to Earth + close; + case 0: + case 1: + break; + case 2: + if (countitem(25266) < 10 || countitem(25267) < 10) + break; + mes "[Mojo]"; + mes "Adventurer, welcome back! I've been waiting for you for so long! Did you bring the things I asked? Come on, let me see them!"; + next; + mes "[Mojo]"; + mes "Wow, these are so old and fragile, I'm afraid they might crumble in my hands."; + next; + mes "[Grimm]"; + mes "Are you happy now? They don't look any different from the ones you're using, though."; + next; + mes "[Mojo]"; + mes "You priests are the least curious kind I know. I asked for these because I wanted to compare them to the ones I have, and it takes a keen eye to catch minute differences."; + next; + mes "[Mojo]"; + mes "Adventurer, could you bring me some more tomorrow? I'm worried I might end up damaging all these you brought today. Even if I don't, I can always use more samples."; + next; + mes "[Mojo]"; + mes "Thank you so much. See you tomorrow!"; + delitem 25266,10; // Dried_Yggdrasil_Leaf + delitem 25267,10; // SuspiciousMagicCircle + erasequest 14679; // Curious by Nature + setquest 14680; // Time to Research + getexp 500000,500000; + getitem 25271,1;// Illusion Stone + close; + } + mes "[Mojo]"; + mes "Adventurer, welcome back! I've been waiting for you for so long! Did you bring the things I asked? Come on, let me see them!"; + next; + mes "[Mojo]"; + mes "Mm, this isn't enough. Please bring me ^0000cd10 Dried Yggdrasil Leaves and 10 Suspicious Pentacles^000000."; + next; + mes "[Mojo]"; + mes "Also, could you hunt 5 zombies of each kind for that scowling priest over there? Thanks!"; + close; + +OnInit: + .@main_completed$ = "isbegin_quest(14666) == 2"; + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14680,PLAYTIME) == -1 && checkquest(14679,HUNTING) == -1") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14679,HUNTING) == 2 && countitem(25266) > 9 && countitem(25267) > 9") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14680,PLAYTIME) == 2") ); + end; +} +gef_dun01,133,221,1 duplicate(dummy_cloaked_npc) Mojo#ilgf01 2_F_MAGICMASTER +gef_dun01,130,222,5 duplicate(dummy_cloaked_npc) Mojo#ilgf02 2_F_MAGICMASTER +gef_dun01,130,224,5 duplicate(dummy_cloaked_npc) Mojo#ilgf03 2_F_MAGICMASTER + +gef_dun01,132,223,5 script Grimm#ilgf 4_M_MINISTER,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[Grimm]"; + mes "Are you sure you can carry all that stuff? Why don't you lighten your bag?"; + close; + } + if (BaseLevel < 130) { + mes "[Grimm]"; + mes "This place is too dangerous for you. Pleae come back when you're stronger."; + close; + } + if (ill_vampire == 0) { + mes "[Mojo]"; + mes "Just let me read it. I'll go bring them out afterward. Please?"; + npctalk "Please?", "Mojo#ilgf", bc_self; + sleep2 500; + cloakonnpc( "Mojo#ilgf", getcharid(0) ); + cloakoffnpc( "Mojo#ilgf01", getcharid(0) ); + emotion ET_QUESTION, getnpcid(0, "Mojo#ilgf01"); + npctalk "Please?", "Mojo#ilgf01", bc_self; + sleep2 500; + cloakonnpc( "Mojo#ilgf01", getcharid(0) ); + cloakoffnpc( "Mojo#ilgf02", getcharid(0) ); + emotion ET_QUESTION, getnpcid(0, "Mojo#ilgf02"); + npctalk "Please?", "Mojo#ilgf02", bc_self; + sleep2 500; + cloakonnpc( "Mojo#ilgf02", getcharid(0) ); + cloakoffnpc( "Mojo#ilgf03", getcharid(0) ); + emotion ET_QUESTION, getnpcid(0, "Mojo#ilgf03"); + npctalk "Please?", "Mojo#ilgf03", bc_self; + sleep2 500; + cloakonnpc( "Mojo#ilgf03", getcharid(0) ); + cloakoffnpc( "Mojo#ilgf", getcharid(0) ); + npctalk "Please?", "Mojo#ilgf", bc_self; + emotion ET_QUESTION, getnpcid(0, "Mojo#ilgf"); + next; + mes "[Grimm]"; + mes "Just leave me alone! I know you're going to run away with it if I give it to you."; + npctalk "Bah!", "Mojo#ilgf", bc_self; + next; + mes "[Mojo]"; + mes "I swear I'll give it back to you. Just for one minute. How about thirty seconds? Ten seconds, then?"; + next; + mes "[Grimm]"; + mes "No! I'm not even going to let you touch it!"; + next; + mes "[Mojo]"; + mes "Come on, it's me, Mojo. Don't you trust me?"; + next; + mes "[Grimm]"; + mes "No, I don't. I may trust Mojo, my sister in faith, but not Mojo, the mage."; + next; + mes "[Mojo]"; + mes "Oh, come on! You're a priest? You're supposed to have faith in everyone! Why are you treating me like a thief?"; + emotion ET_CRY, getnpcid(0, "Mojo#ilgf"); + npctalk "Boohoo! Oh, God! I'm being treated so unfairly!", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "I only have faith in Him, and He's telling me not to trust you."; + npctalk "He's still whispering that to me."; + next; + mes "[Mojo]"; + mes "I'm not hearing anything!"; + next; + mes "[Grimm]"; + mes "Of course not. Only His servants can hear him."; + emotion ET_FRET, getnpcid(0, "Mojo#ilgf"); + npctalk "Wow, I smell lies and it's coming from your mouth.", "Mojo#ilgf", bc_self; + sleep2 1000; + npctalk "That's blasphemy!"; + next; + select("Would you be so kind as to heal me?"); + emotion ET_SMILE; + mes "[Grimm]"; + mes "Sure thing. Any time you want, " + ( Sex ? "Brother." : "Sister." ); + specialeffect2 EF_HEAL2; + npctalk "He's such a hypocrite. I can never trust priests again, and it's his fault.", "Mojo#ilgf", bc_self; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Thank you. I'm sorry, but I've heard you fighting, even from that far corner of this dungeon."; + next; + mes "[Grimm]"; + mes "You have? We must have been really loud. I suppose that wasn't very smart of us."; + next; + mes "[Mojo]"; + mes "Oh, this is great! Instead of fighting, why don't we ask this adventurer who is right?"; + next; + mes "[Mojo]"; + mes "Adventurer, if you're not busy, would you hear us out?"; + npctalk "If you're busy, we'll understand.", "Mojo#ilgf", bc_self; + next; + if (select( "Let me hear it.", "I have to leave." ) == 2) { + mes "[Grimm]"; + mes "I see. It's a shame that you can't seize on such a great opportunity."; + next; + mes "[Grimm]"; + mes "Please feel free to come back if you change your mind."; + close; + } + mes "[" + strcharinfo(0) + "]"; + mes "Let me hear it."; + next; + mes "[Grimm]"; + mes "Okay, this is going to be a long story. Let me have some water first."; + ill_vampire = 1; // the variable must be updated here to use setquest to update questinfo + setquest 14652;// Detailed Account 01 + close; + } + if (ill_vampire == 1) { + mes "[Grimm]"; + mes "Adventurer, did you know these catacombs under Geffen once were quiet and filled with special energy instead of monsters?"; + next; + mes "[Grimm]"; + mes "Back then, only a couple of monsters showed up once every decade or so."; + next; + select("What changed that?"); + emotion ET_OHNO; + mes "[Grimm]"; + mes "*Glances at Mojo*"; + next; + emotion ET_QUESTION, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "Why are you looking at me?"; + npctalk "I had nothing to do with it.", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "Some mages decided to erect an ivory tower of their own. They searched everywhere in the continent and settled on the ground above these catacombs."; + next; + mes "[Grimm]"; + mes "That was the beginning of the tragedy."; + emotion ET_ANGER, getnpcid(0, "Mojo#ilgf"); + npctalk "Oh geez, here it goes again.", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "It's been said all mammals have curiosity that rivals their appetite, but mages... are the worst. "; + npctalk "Enough with the lecturing. Get to the point already.", "Mojo#ilgf", bc_self; + sleep2 500; + npctalk "Everything has a cause and effect. How can you expect the adventurer to understand what this is about without knowing the cause?"; + next; + mes "[Grimm]"; + mes "Anyway, these mages, after they built the Geffen Tower, took notice of the blasphemous creatures that sometimes appeared in the catacombs."; + next; + mes "[Grimm]"; + mes "They conducted various experiments to understand the special energy that reanimated the dead."; + npctalk "They were just studying.", "Mojo#ilgf", bc_self; + sleep2 500; + npctalk "Just studying? They could've turned the entire continent into an unholy breeding ground!"; + next; + mes "[Grimm]"; + mes "And as if that wasn't enough, those mages used their magic and replicated the reanimating process."; + next; + mes "[Grimm]"; + mes "That went horribly wrong. The special energy that surrounded the catacombs exploded, bringing back all the dead buried in them."; + next; + mes "[Grimm]"; + mes "Those arrogant mages crossed the line! They tried to play God!"; + next; + emotion ET_ANGER, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "Hey, I'm one of them, and I'm not going to let you talk bad about my predecessors like that!"; + next; + mes "[Grimm]"; + mes "How am I defaming them when I'm only telling the truth?"; + npctalk "It's not telling the truth when you're only telling it from your point of view!", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "What do you think, Adventurer? Would you trust someone so reckless with important tasks?"; + next; + select("...No."); + mes "[Mojo]"; + mes "But wait, Adventurer. You haven't heard my side of the story."; + npctalk "You've got to listen to both sides before you judge!", "Mojo#ilgf", bc_self; + next; + mes "[Mojo]"; + mes "We understand the things that we want to study can be dangerous, so we try our best to be careful."; + npctalk "Apparently, trying your best wasn't enough in this case."; + sleep2 500; + npctalk "Why are you saying that? I'm talking about my predecessors!", "Mojo#ilgf", bc_self; + next; + mes "[Mojo]"; + mes "My predecessors may have been too enthusiastic to study what's underneath their tower, but it was that enthusiasm that made Geffen grow into the city of magic that it is."; + next; + mes "[Mojo]"; + mes "Rune-Midgarts is flanked by Arunafeltz and Schwarzwald, the two strongest nations of the continent, and its magic power is what keeps them at bay."; + next; + mes "[Grimm]"; + mes "And that's the only reason that kept the Church from further pressing this matter,"; + next; + mes "[Grimm]"; + mes "even though it doesn't change the fact that you woke the dead."; + npctalk "Father Grimm, could you stop cutting in?", "Mojo#ilgf", bc_self; + sleep2 500; + npctalk "I can't. You're twisting the facts to make yourself look good."; + next; + mes "[Mojo]"; + mes "Curiosity is what fuels our life. It's the seed of development. Adventurer, would you hesitate to go to a new world because it's dangerous?"; + next; + select("I wouldn't be an adventurer if I did."); + mes "[Mojo]"; + mes "We mages are just like you adventurers in that sense. I knew you'd understand me."; + emotion ET_OK, getnpcid(0, "Mojo#ilgf"); + next; + mes "[Mojo]"; + mes "You heard that, Father Grimm. Now show me the notebook."; + next; + mes "[Grimm]"; + mes "No. Adventurer, you agreed with me that she's not trustworthy."; + next; + mes "[Mojo]"; + mes "You also agreed with me on the value of curiosity."; + next; + select("So, what is this about?"); + mes "[" + strcharinfo(0) + "]"; + mes "I've heard both of you, but neither of you told me what you were fighting for."; + next; + mes "[Grimm]"; + mes "Oh, I'm sorry. The Church of Rune-Midgarts periodically sends its priests out to these catacombs to maintain peace."; + next; + mes "[Grimm]"; + mes "I'm one of them, and I happened to pick up a ^0000cdnotebook^000000 just before you found us."; + next; + select("A notebook?"); + mes "[Grimm]"; + mes "Yes. It looks like it belongs to one of the Geffen Tower mages. It has ^0000cdBomi^000000 written on its cover, which I think is the name of its owner."; + next; + mes "[Mojo]"; + mes "But none of my guildsmen has such a name. I read the book, and she did sound like she was one of us. ^0000cdNot anymore^000000, though."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Not anymore?"; + next; + emotion ET_OK, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "You're pretty sharp, Adventurer. That's right. I checked with my guild and found out there was someone named Bomi. She just disappeared one day, though."; + npctalk "And that was a long, long time ago.", "Mojo#ilgf", bc_self; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Do you think this notebook belongs to her? But why was it here?"; + next; + mes "[Mojo]"; + mes "That was the same question we asked at first. That didn't matter anymore once we read what was written in the book."; + next; + mes "[Grimm]"; + mes "What's written in it is unsettling, but what's more serious is? You'll have to read it yourself. Just don't open the ^0000cdlast page^000000."; + next; + mes "[Mojo]"; + mes "So you're okay with this adventurer reading it, but not me."; + npctalk "You know that's discrimination, right? You should be ashamed of yourself!", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "Please take a look."; + erasequest 14652;// Detailed Account 01 + setquest 14653;// Detailed Account 02 + ill_vampire = 2; + close; + } + if (ill_vampire == 2) { + mes "I placed my hand on the book Father Grimm was holding. Suddenly I felt dizzy as the air around me shimmered. Carefully, I opened the notebook."; + next; + mes "[Daily Journal]"; + mes "I fainted in the middle of learning a new spell, again."; + mes "My low stamina and insufficient mana are always the problem. I thought I could make up for my weak constitution with magic. Of course, even that required some minimal stamina, but I didn't have even that."; + mes "I'm too tired..."; + next; + mes "[Daily Journal]"; + mes "I saw Sophia drinking a mana potion. Maybe potions are the answer to my never-ending search for physical support. "; + mes "I wonder if there are special potions that could improve me physically. Then, I could become stronger at last."; + next; + mes "[Daily Journal]"; + mes "All the potions I found didn't help improve my weak constitution. All they do is boost strength that's already there."; + mes "Maybe I should try to formulate stamina and mana potions on my own."; + next; + mes "[Daily Journal]"; + mes "I learned about the catacombs under the Geffen Tower while I was in the library, reading about the tower's history."; + mes "How are the dead reanimated? What kind of vital force keeps them moving?"; + mes "I need permission to enter the catacombs. I'm going to check them tomorrow."; + next; + mes "[Daily Journal]"; + mes "The dead don't talk. There's nothing I can find out from them."; + mes "I've found traces of experiments everywhere. Some of my peers must have been here before I have."; + mes "I'm especially tired today. I'm going to bed early tonight."; + next; + mes "[Daily Journal]"; + mes "The bats in the catacombs drink blood from the zombies, probably because there's nothing else to eat."; + mes "Every day, I spend most of my energy keeping the bloodthirsty bats at bay. I'd get killed if I didn't stay near the exit."; + mes "I'm tired."; + next; + mes "[Daily Journal]"; + mes "Today, I heard some strange noise in the catacombs. The zombies and bats were strangely quiet."; + mes "Maybe I should explore deeper into the catacombs tomorrow, while the monsters hide from whatever that noise is."; + next; + mes "That was the last entry. I took my hand off the notebook. Father Grimm closed the notebook."; + erasequest 14653;// Detailed Account 02 + setquest 14654;// Detailed Account 03 + ill_vampire = 3; + close; + } + if (ill_vampire == 3) { + mes "[" + strcharinfo(0) + "]"; + mes "This is notebook is both ^0000cda diary and research journal^000000."; + next; + mes "[Grimm]"; + mes "Indeed. It shows how its owner studied those blasphemous creatures to ^0000cdcreate stamina and mana enhancers^000000."; + next; + select("Interesting."); + emotion ET_OK, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "Yes, it is. My guild would love to study this notebook. Most records from the same era have been lost."; + npctalk "I'd love to read it myself as well.", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "The content of this notebook isn't what causes me alarm. Didn't you detect some ^0000cdstrange energy^000000 when you touch it?"; + next; + mes "[Grimm]"; + mes "This book is sustained with its owner's spiritual energy, and it's pulling those who gaze upon it into ^0000cdthe world inside it^000000."; + next; + mes "[Mojo]"; + mes "And that's why I want to see the notebook so badly. I want to know how it contains a world inside it and why it was only discovered now."; + npctalk "So please let me have it. I'll give it back to you after I figure that all out.", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "Mage, you stay out of this! This notebook is taking people to some place we don't know. And the gateway is in the last page."; + npctalk "Oh, you don't even bother calling me by name anymore.", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "I scanned it for any malicious intent, but I didn't sense any. I think its owner just ^0000cdneeds help with some unfinished business^000000."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "So were you arguing about which one of you should go to that place?"; + next; + mes "[Grimm]"; + mes "No. The other members of my group and two mages are already there. They just haven't returned."; + npctalk "So I told you, I'll go bring them back. I'm stronger than I look. I can do this on my own.", "Mojo#ilgf", bc_self; + sleep2 500; + npctalk "No. I'd rather wait until they return."; + next; + select("How about I go?"); + mes "[Grimm]"; + mes "You? Well, you're more reliable than this sister here, but are you sure?"; + next; + mes "[" + strcharinfo(0) + "]"; + mes "I want to repay you for healing me. Also, after listening to you both, I think it's better I go. Do you want me to go bring back your colleagues?"; + next; + mes "[Grimm]"; + mes "No. I just want you to ^0000cdfind them^000000 and make sure they're okay. If they need help, please provide it to them. If they have a message for me, then please let me know."; + npctalk "Take me with you!", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "I wish I could go with you, but my group needs me here."; + npctalk "*Glances at Mojo*"; + sleep2 500; + npctalk "Why are you staring at me?", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "I can't trust her with the notebook. If something happens to it, the people inside it might not be able to come back."; + next; + emotion ET_ANGER, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "This does it! Father Grimm, put that book down. Let's fight!"; + sleep2 500; + npctalk "*Snort* Why would I do that? You're just going to run away with it."; + next; + mes "[Mojo]"; + mes "Then I'm going to go with the Adventurer!"; + next; + mes "[Grimm]"; + mes "No. You're staying with me. Don't you dare touch the book."; + next; + emotion ET_CRY, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "Why are you doing this to me? What have I done to you?"; + next; + mes "[Grimm]"; + mes "Brother Jojo asked me to never let you touch the book. Do you not remember that?"; + npctalk "He was really worried about you."; + next; + mes "[Mojo]"; + mes "No, I don't remember. When Sister Gem returns, I'm going to tell on you!"; + npctalk "Go ahead."; + next; + mes "[Grimm]"; + mes "Now, Adventurer. Let me know when you're ready."; + erasequest 14654;// Detailed Account 03 + setquest 14655;// I'm Ready + ill_vampire = 4; + close; + } + if (ill_vampire < 15) { + mes "[Grimm]"; + mes "Do you want to enter the notebook? Are you ready?"; + next; + if (select( "Yes. Send me there.", "No." ) == 2) { + mes "[Grimm]"; + mes "Not a problem. Just let me know when you are ready."; + close; + } + mes "[Grimm]"; + mes "Then, let me open it."; + next; + mes "I placed my hand on the notebook, and Father Grimm opened it to the last page. Suddenly, my vision got blurry as I felt my body being transported to some place."; + if (ill_vampire == 4) { + erasequest 14655;// I'm Ready + setquest 14656;// Finding Father Grimm's Colleagues + ill_vampire = 5; + } + close2; + warp "gef_d01_i",114,216; + end; + } + if (ill_vampire == 15) { + mes "[Grimm]"; + mes "Listen to me, or you can always go back to the Tower."; + next; + emotion ET_MERONG, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "No!"; + next; + select("Are you two still fighting?"); + mes "[Mojo]"; + mes "Ah, there you are! How was that place?"; + next; + mes "[Grimm]"; + mes "I'm glad you came back safely. Is everyone in there okay?"; + npctalk "Please tell us already. I'm dying to know!", "Mojo#ilgf", bc_self; + next; + mes "I relayed what happened in the notebook to Father Grimm and Mojo, and told them that the others decided to stay to keep an eye on the vampires."; + next; + emotion ET_SPARK, getnpcid(0, "Mojo#ilgf"); + mes "[Mojo]"; + mes "Wow, the same place in another plane of existence! I've never heard of this before! How does it work? This notebook has got to have something to do with it."; + next; + mes "[Mojo]"; + mes "And vampires who understand humans? My goodness!"; + next; + mes "[Mojo]"; + mes "I can't stay here. Father Grimm, I have to go in there. Let me go, please!"; + npctalk "Let me have the notebook.", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "No. Never. Keep your hands to yourself."; + npctalk "Argh! Why are you being so stubborn? I don't deserve this!", "Mojo#ilgf", bc_self; + next; + mes "[Grimm]"; + mes "Adventurer, thank you for venturing into that mysterious place for us. It'll be greatly appreciated if you visit my colleagues there and bring news from them to me sometimes."; + next; + mes "[Mojo]"; + mes "I can do that too, you know. You just have to give me a chance!"; + npctalk "Sister Mojo, please stay out of this.", "", bc_self; + next; + mes "[Grimm]"; + mes "Adventurer, thank you. Feel free to come to me if you want to ^0000cdenter the notebook again^000000."; + completequest 14666;// Warden's Role + getexp 2000000,2000000; + ill_vampire = 16; + getitem 25271,5;// Illusion Stone + close; + } + if (ill_vampire == 16) { + mes "[Grimm]"; + mes "Adventurer, do you want to enter the notebook?"; + next; + if (select( "Yes.", "No." ) == 2) { + mes "[Grimm]"; + mes "Not a problem. Just let me know when you are ready."; + close; + } + mes "[Grimm]"; + mes "Good luck."; + close2; + warp "gef_d01_i",114,216; + end; + } + end; + +OnInit: + questinfo( QTYPE_QUEST, QMARK_YELLOW, "ill_vampire == 0 && BaseLevel >= 130" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(14666) == 1" ); + end; +} + +gef_d01_i,94,133,0 script #illcon01 HIDDEN_WARP_NPC,5,5,{ + end; +OnTouch: + if (ill_vampire == 5) { + if (strnpcinfo(0) == "#ilgf01") + specialeffect2 EF_BIG_PORTAL; + } + else if (ill_vampire == 6) { + .@char_id = getcharid(0); + cloakoffnpc( "Priest#ilgf01", .@char_id ); + for ( .@i = 3; .@i < 10; ++.@i ) + cloakoffnpc( "Marina#ilgf0" + .@i, .@char_id ); + } + else if (ill_vampire == 7) { + .@char_id = getcharid(0); + cloakoffnpc( "Undead#ilgf06", .@char_id ); + cloakoffnpc( "Wizard#ilgf06", .@char_id ); + cloakoffnpc( "Wizard#ilgf07", .@char_id ); + + cloakoffnpc( "Wizard#ilgf08", .@char_id ); + cloakoffnpc( "Nameless Catacomb#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf09", .@char_id ); + cloakoffnpc( "Wizard#ilgf10", .@char_id ); + + cloakoffnpc( "Wizard#ilgf11", .@char_id ); + + cloakoffnpc( "Wizard#ilgf12", .@char_id ); + cloakoffnpc( "Wizard#ilgf13", .@char_id ); + cloakoffnpc( "Nameless Catacomb#ilgf02", .@char_id ); + + cloakoffnpc( "Wizard#ilgf14", .@char_id ); + cloakoffnpc( "Wizard#ilgf15", .@char_id ); + cloakoffnpc( "Nameless Catacomb#ilgf03", .@char_id ); + + cloakoffnpc( "Wizard#ilgf16", .@char_id ); + cloakoffnpc( "Wizard#ilgf17", .@char_id ); + + cloakoffnpc( "Wizard#ilgf18", .@char_id ); + cloakoffnpc( "Someone's Dream#ilgf18", .@char_id ); + + cloakoffnpc( "Wizard#ilgf19", .@char_id ); + cloakoffnpc( "Wizard#ilgf20", .@char_id ); + cloakoffnpc( "Undead#ilgf05", .@char_id ); + + cloakoffnpc( "Undead#ilgf02", .@char_id ); + cloakoffnpc( "Undead#ilgf03", .@char_id ); + cloakoffnpc( "Undead#ilgf04", .@char_id ); + cloakoffnpc( "Wizard#ilgf21", .@char_id ); + cloakoffnpc( "Wizard#ilgf22", .@char_id ); + + cloakoffnpc( "Wizard#ilgf23", .@char_id ); + cloakoffnpc( "Fast Undead#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf24", .@char_id ); + cloakoffnpc( "Shining Mushroom#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf25", .@char_id ); + cloakoffnpc( "Wizard#ilgf26", .@char_id ); + cloakoffnpc( "Undead#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf27", .@char_id ); + cloakoffnpc( "Wizard#ilgf28", .@char_id ); + } + else if (ill_vampire == 10) { + cloakoffnpc "Dracula#ilgf02", getcharid(0); + cloakoffnpc "King#ilgf01", getcharid(0); + cloakoffnpc "Wizard#ilgf02", getcharid(0); + } + else if (ill_vampire == 12 || ill_vampire == 13) { + .@char_id = getcharid(0); + cloakoffnpc( "Gem#ilgf02", .@char_id ); + cloakoffnpc( "Marina#ilgf02", .@char_id ); + cloakoffnpc( "Antoine#ilgf02", .@char_id ); + if (ill_vampire == 13) { + cloakoffnpc( "Dracula#ilgf03", .@char_id ); + cloakoffnpc( "King#ilgf02", .@char_id ); + cloakoffnpc( "Jojo#ilgf01", .@char_id ); + } + } + if (ill_vampire > 13) { + cloakoffnpc( "King#ilgf01", getcharid(0) ); + cloakoffnpc( "Wizard#ilgf02", getcharid(0) ); + cloakoffnpc( "Dracula#ilgf02", getcharid(0) ); + } + end; +} +gef_d01_i,114,216,0 duplicate(#illcon01) #ilgf01 HIDDEN_WARP_NPC,3,0 + +gef_d01_i,81,135,0 duplicate(#illcon01) #illcon02 HIDDEN_WARP_NPC,5,5 +gef_d01_i,86,113,0 duplicate(#illcon01) #illcon03 HIDDEN_WARP_NPC,5,5 +gef_d01_i,95,121,0 duplicate(#illcon01) #illcon04 HIDDEN_WARP_NPC,5,5 +gef_d01_i,148,56,0 duplicate(#illcon01) #illcon05 HIDDEN_WARP_NPC,5,5 +gef_d01_i,188,97,0 duplicate(#illcon01) #illcon06 HIDDEN_WARP_NPC,5,5 +gef_d01_i,209,94,0 duplicate(#illcon01) #illcon07 HIDDEN_WARP_NPC,5,5 +gef_d01_i,205,117,0 duplicate(#illcon01) #illcon08 HIDDEN_WARP_NPC,5,5 +gef_d01_i,183,82,0 duplicate(#illcon01) #illcon09 HIDDEN_WARP_NPC,5,5 +gef_d01_i,197,80,0 duplicate(#illcon01) #illcon10 HIDDEN_WARP_NPC,5,5 +gef_d01_i,172,86,0 duplicate(#illcon01) #illcon11 HIDDEN_WARP_NPC,5,5 + +gef_d01_i,112,228,5 script Marina#ilgf01 4_F_MONK,{ + mes "[Marina]"; + mes "Do you want to leave?"; + next; + if (select( "Yes.", "No." ) == 2) { + mes "[Marina]"; + mes "I see. Just let me know when you want to leave."; + close; + } + mes "[Marina]"; + mes "So, you're in a hurry to leave. Did something happen?"; + close2; + warp "gef_dun01",133,219; + end; +} + +gef_d01_i,116,228,3 script Antoine#ilgf01 4_GEFFEN_01,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[Antoine]"; + mes "Are you sure you can carry all that stuff? Why don't you lighten your bag?"; + close; + } + if (ill_vampire < 6) { + mes "[Antoine]"; + mes "Sister Gem, please listen to me!"; + close; + } + if (ill_vampire == 6) { + mes "[Antoine]"; + mes "I'm worried about those two. They should be fine, right?"; + close; + } + if (ill_vampire == 7) { + mes "[Antoine]"; + mes "Have you found Jojo? Where is he? Jubilee has left to treat his wounds."; + close; + } + if (ill_vampire < 16) { + mes "[Antoine]"; + mes "This place has so many things I want to study, I don't know where to begin. Oh my, look at that Nightmare!"; + close; + } + switch( checkquest(14670,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Antoine]"; + mes "Adventurer, I don't want you to strain yourself. Why don't you go get some rest?"; + next; + mes "[Antoine]"; + mes "Have a good night's sleep, and come back after dawn."; + close; + case 2: + mes "[Antoine]"; + mes "Adventurer. Did you have good dreams last night? I had nightmares, probably from looking at those manes all day."; + next; + mes "[Antoine]"; + mes "But I'm not about to give up!"; + mes "Please bring me ^0000cd20 Wavy Manes^000000 as usual."; + next; + mes "[Antoine]"; + mes "Oh, and it'll be great if you also can get rid of ^0000cd10 Sweet Nightmares^000000. I want to know how that'll affect dreams. Thank you!"; + erasequest 14670;// Time for Dreaming + setquest 14669;// Sweet Dreams + close; + } + switch( checkquest(14669,HUNTING) ) { + case -1: + mes "[Antoine]"; + mes "Adventurer, can I talk to you for a second? I want your opinion on something."; + next; + if (select( "Sure thing.", "I'm kind of busy." ) == 2) { + mes "[Antoine]"; + mes "Oh, are you? No problem. I can wait until you have some time for me."; + close; + } + mes "[Antoine]"; + mes "You've seen those Nightmares and Drainliars, right? Did you notice how they look different from the kinds outside this place? Why do you think that is?"; + next; + mes "[" + strcharinfo(0) + "]"; + mes "I don't know."; + next; + mes "[Antoine]"; + mes "Everything in this place is interesting. Especially those Sweet Nightmares. They're full of contradictions."; + next; + emotion ET_SPARK; + mes "[Antoine]"; + mes "Have you taken a look at their wavy mane? Look at it long enough, and you'll see flashes of images, which I believe are from other people's dreams."; + next; + mes "[Antoine]"; + mes "Sweet Nightmares... Even their name is a contradiction. Maybe their mane is the source of all nightmares."; + next; + mes "[Antoine]"; + mes "Or it could just reflect the dreams of the dead."; + next; + mes "[Antoine]"; + mes "Those two ladies may not agree, but I don't have to stay here. I'm only staying because of ^0000cdSweet Nightmares^000000."; + next; + mes "[Antoine]"; + mes "I want to get rid of their manes and see if it affects our dreams."; + next; + mes "[Antoine]"; + mes "And I want to do that without having to leave my colleagues to fend for themselves. Do you know what I mean?"; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Do you want me to ^0000cdget their manes for you^000000?"; + next; + mes "[Antoine]"; + mes "Yes, please! ^0000cd20^000000 should suffice!"; + next; + mes "[Antoine]"; + mes "And while you're at it, please hunt ^0000cd10 Sweet Nightmares^000000 as well. I want to know how that affects dreams."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "I'll do that."; + next; + emotion ET_THANKS; + mes "[Antoine]"; + mes "Thank you. In return, I'll give you some stones I've picked up from this place."; + next; + mes "[Antoine]"; + mes "I don't know if they have any purpose, but they sure look beautiful and mysterious. Maybe someone outside this place can recognize its value."; + next; + mes "[Antoine]"; + mes "Anyway, thank you for doing this for me!"; + setquest 14669;// Sweet Dreams + close; + case 0: + case 1: + break; + case 2: + if (countitem(25270) < 20) + break; + mes "[Antoine]"; + mes "Adventurer, I've been waiting for you! Did you get what I asked?"; + next; + mes "[Antoine]"; + mes "You brought all of them. I hope I can find something out from them."; + next; + mes "[Antoine]"; + mes "These are found only inside this place. Please bring them to me whenever you can. Dreams disappear when you wake up, you know."; + next; + mes "[Antoine]"; + mes "Thank you so much. You should get some rest now."; + delitem 25270,20;// Wavy_Mane + erasequest 14669;// Sweet Dreams + setquest 14670;// Time for Dreaming + getexp 500000,500000; + getitem 25271,1;// Illusion Stone + close; + } + mes "[Antoine]"; + mes "Adventurer, I've been waiting for you! Did you get what I asked?"; + next; + mes "[Antoine]"; + mes "Um, you haven't found it, I see."; + next; + mes "[Antoine]"; + mes "Please bring me ^0000cd20 Wavy Manes^000000 from ^0000cdSweet Nightmares^000000."; + next; + mes "[Antoine]"; + mes "Oh, and it'll be great if you also can get rid of ^0000cd10 Sweet Nightmares^000000. I want to know how that'll affect dreams. Thank you!"; + close; + +OnInit: + .@main_completed$ = "isbegin_quest(14666) == 2"; + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14670,PLAYTIME) == -1 && checkquest(14669,HUNTING) == -1") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14669,HUNTING) == 2 && countitem(25270) > 19") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14670,PLAYTIME) == 2") ); + end; +} + +gef_d01_i,113,230,5 script Gem#ilgf01 1_F_PRIEST,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[Gem]"; + mes "Are you sure you can carry all that stuff? Why don't you lighten your bag?"; + close; + } + if (ill_vampire == 5) { + mes "[Gem]"; + mes "Brother Antoine, you stay here. Sister Marina and I will go. Do either of you have a problem with that?"; + npctalk "Even if you do, I won't hear it.", "", bc_self; + next; + mes "[Marina]"; + mes "Brother Antoine and I will go. We're trained to fight. You are not."; + npctalk "Plus, I'm fast on my feet.", "Marina#ilgf01", bc_self; + next; + mes "[Antoine]"; + mes "Marina, why don't you stay? Sister Gem and I will go. I think that'd be best, considering our abilities."; + npctalk "One of us can search while the other covers for them.", "Antoine#ilgf01", bc_self; + next; + mes "[Gem]"; + mes "No. This place is overrun with unholy creatures. It's better if two servants of God look for them."; + next; + mes "[Antoine]"; + mes "What's that supposed to mean? Are you saying that I can't fight zombies because I'm not a servant of God?"; + next; + mes "[Marina]"; + mes "How about two of us stay and one goes?"; + next; + mes "[Gem]"; + mes "No. It has to be two, so they can look out for each other."; + next; + mes "[Antoine]"; + mes "What about the person left behind? They have no one to look out for them."; + next; + select("Excuse me. I came here on behalf of Father Grimm."); + mes "[Marina]"; + mes "Did you come to help us?"; + next; + mes "[" + strcharinfo(0) + "]"; + mes "He's worried that you haven't come out. He asked me to help you if you need it. Did something happen?"; + next; + mes "[Marina]"; + mes "We need to find some people."; + next; + mes "[Antoine]"; + mes "You can't just tell him that. Adventurer, you know what kind of place this is, don't you? We're in a hurry, so let me explain the situation to you quickly."; + next; + mes "[Antoine]"; + mes "This place is the spitting image of the Geffen catacombs, and it probably exists inside the notebook's owner's memory."; + next; + mes "[Antoine]"; + mes "We came here to find out how and why this place was created."; + next; + mes "[Antoine]"; + mes "We didn't find anything peculiar about this place. We want to leave, but a couple of us, ^0000cda priest and a wizard^000000 hasn't returned to join us."; + next; + mes "[Antoine]"; + mes "We've searched around, but the notebook's owner's memory of this place is rather hazy and inconsistent. Illusions of different wizards keep appearing, frequently and in masses."; + next; + mes "[Antoine]"; + mes "We thought it'd take forever to find them, so we decided to split up. We were discussing how we'd go about doing it when you showed up."; + next; + mes "[Antoine]"; + mes "I can't say how glad I am to have you here. Now that there are four of us, ^0000cdtwo of us can stay while the other two look^000000."; + next; + select("What do the missing members look like?"); + mes "[Gem]"; + mes "The missing priest is called ^0000cdJubilee^000000 and the wizard is ^0000cdJojo^000000. They're the typical priest and wizard. You won't miss them."; + next; + mes "[Marina]"; + mes "Adventurer, let's go!"; + next; + mes "[Gem]"; + mes "Let me pray for you before you leave. Dear God, please watch over your children..."; + erasequest 14656;// Finding Father Grimm's Colleagues + setquest 14657;// Jojo Is the Mage's Name + setquest 14658;// Jubilee Is the Priest's Name + npcskill "AL_INCAGI",10,0,0; + npcskill "AL_BLESSING",10,0,0; + ill_vampire = 6; + .@char_id = getcharid(0); + cloakoffnpc( "Priest#ilgf01", .@char_id ); + for ( .@i = 3; .@i < 10; ++.@i ) + cloakoffnpc( "Marina#ilgf0" + .@i, .@char_id ); + close; + } + if (ill_vampire == 6) { + .@char_id = getcharid(0); + cloakoffnpc( "Priest#ilgf01", .@char_id ); + for ( .@i = 3; .@i < 10; ++.@i ) + cloakoffnpc( "Marina#ilgf0" + .@i, .@char_id ); + mes "[Gem]"; + mes "I hope Brother Jubilee and Brother Jojo are safe."; + next; + mes "[Gem]"; + mes "If you have to leave, let Sister Marina know. She'll send you back to where you came from."; + close; + } + if (ill_vampire == 7) { + mes "[Gem]"; + mes "Brother Jubilee has left to treat his wounds, but Brother Jojo hasn't returned. I really hope he's safe."; + next; + mes "[Gem]"; + mes "If you have to leave, let Sister Marina know. She'll send you back to where you came from."; + close; + } + if (ill_vampire < 14) { + mes "[Gem]"; + mes "I really hope Brother Jojo is safe."; + next; + mes "[Gem]"; + mes "If you have to leave, let Sister Marina know. She'll send you back to where you came from."; + close; + } + if (ill_vampire == 14) { + mes "[Gem]"; + mes "Adventurer, are you leaving now?"; + next; + select("Father Grimm must be getting anxious by now."); + mes "[" + strcharinfo(0) + "]"; + mes "Yes. Now that I know you're safe, it's time I return to Father Grimm."; + next; + mes "[Gem]"; + mes "According to our assessment, what happens inside this place doesn't seem to ^0000cdaffect^000000 the outside world."; + next; + mes "[Gem]"; + mes "That's good, but someone still has to stay here to keep an eye on them. You understand us, right? Please let Brother Grimm know."; + next; + select("I was surprised."); + mes "[" + strcharinfo(0) + "]"; + mes "You're from the Church. I didn't think you'd let those vampires live."; + next; + mes "[Marina]"; + mes "If we play by the rules, then we shouldn't allow them to live."; + next; + mes "[Gem]"; + mes "She's right. We shouldn't. But looking at them... I wasn't sure if they deserved to die."; + next; + mes "[Gem]"; + mes "It's something we need to think about."; + next; + emotion ET_STARE, getnpcid(0, "Marina#ilgf01"); + mes "[Marina]"; + mes "But if they make even the slightest mistake, we'll get rid of them!"; + next; + emotion ET_OK, getnpcid(0, "Antoine#ilgf01"); + mes "[Antoine]"; + mes "If that happens, I'll let you take care of them by yourself."; + next; + mes "[Gem]"; + mes "Please tell Brother Grimm that we've decided to stay to keep an eye on them."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "I will. Stay safe."; + erasequest 14665;// Is the Fight Over? + setquest 14666;// Warden's Role + ill_vampire = 15; + close2; + warp "gef_dun01",133,219; + end; + } + if (ill_vampire == 15) { + mes "[Gem]"; + mes "Please tell Brother Grimm that we've decided to stay"; + next; + mes "[Gem]"; + mes "If you want to leave, ask Sister Marina to let you out."; + close; + } + switch( checkquest(14668,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Gem]"; + mes "Adventurer, not enough time has passed since you hunted last time. You need rest."; + next; + mes "[Gem]"; + mes "Please come back ^0000cdafter dawn^000000 tomorrow."; + close; + case 2: + mes "[Gem]"; + mes "Adventurer, welcome back."; + next; + mes "[Gem]"; + mes "As usual, I'd like you to exterminate ^0000cdRestless Deads^000000. There are ^0000cdthree different kinds: Small, Fast, and Big. Please exterminate 10 each.^000000."; + erasequest 14668;// Get Some Rest + setquest 14667;// Send the Dead Back to Earth + close; + } + switch( checkquest(14667,HUNTING) ) { + case -1: + mes "[Gem]"; + mes "Adventurer, are you busy?"; + next; + mes "[Gem]"; + mes "Even if you are busy, please spare me a moment of your time."; + next; + if (select( "Sure, why not?", "But I'm too busy.") == 2) { + mes "[Gem]"; + mes "Okay, then I'll wait until you have some time for me."; + close; + } + mes "[Gem]"; + mes "As you know, we're here to keep an eye on them."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Yes."; + next; + mes "[Gem]"; + mes "Now, that's interfering with our original mission, which is to keep this place clear of the unholy."; + next; + mes "[Gem]"; + mes "We've been trying to do both, and it's hard to do that between just the three of us."; + next; + mes "[Gem]"; + mes "The dead belong in the ground. We are here to ^0000cdput the undead back to eternal sleep^000000."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "You mean you need help."; + next; + mes "[Gem]"; + mes "Yes, we do."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "What kinds of monsters do you want me to take care of?"; + next; + mes "[Gem]"; + mes "Please exterminate ^0000cdRestless Dead^000000. There are ^0000cdthree different kinds: Small, Fast, and Big. Please exterminate 10 each.^000000."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Got it. I was thinking, now that I'm here, I might as well help you while I can. I'm glad that I can. I'll be back."; + setquest 14667;// Send the Dead Back to Earth + close; + case 0: + case 1: + mes "[Gem]"; + mes "Adventurer, did you take care of what I asked?"; + next; + mes "[Gem]"; + mes "Or did you forget what I asked you to do?"; + next; + mes "[Gem]"; + mes "Please exterminate ^0000cdRestless Deads^000000. There are ^0000cdthree different kinds: Small, Fast, and Big. Please exterminate 10 each.^000000."; + next; + mes "[Gem]"; + mes "All the dead must return to the earth."; + close; + case 2: + mes "[Gem]"; + mes "Adventurer, you took care of them all. Thank you. They will also thank you from Heaven."; + next; + mes "[Gem]"; + mes "Why don't you go get some rest and come back after dawn?"; + erasequest 14667;// Send the Dead Back to Earth + setquest 14668;// Get Some Rest + getexp 500000,500000; + getitem 25271,1;// Illusion Stone + close; + } + end; + +OnInit: + .@main_completed$ = "isbegin_quest(14666) == 2"; + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(14656) == 1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(14665) == 1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14668,PLAYTIME) == -1 && checkquest(14667,HUNTING) == -1") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14667,HUNTING) == 2") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14668,PLAYTIME) == 2") ); + end; +} + +// Jubilee Is the Priest's Name +gef_d01_i,93,178,5 script Marina#ilgf03 4_F_MONK,5,5,{ + end; +OnTouch: + if (ill_vampire == 6) { + setpcblock PCBLOCK_NPC, true; + .@num = atoi( replacestr( strnpcinfo(2), "ilgf0", "" ) ); + if (.@num == 3) + npctalk "I'm sensing some faint energy in the east. Let's go.", "", bc_self; + else if (.@num == 4) + npctalk "Whoever is in the east, their energy is getting stronger. Let's hurry!", "", bc_self; + else if (.@num == 5) + npctalk "I'm sensing faint energy in the south. Let's hurry!", "", bc_self; + else if (.@num == 6) + npctalk "I'm sensing some faint energy in the east. Let's go.", "", bc_self; + else if (.@num == 7) + npctalk "Farther east! We're almost there!", "", bc_self; + else if (.@num == 8) + npctalk "Let's go north!", "", bc_self; + else if (.@num == 9) + npctalk "Let's go south!", "", bc_self; + sleep2 1500; + specialeffect EF_TELEPORTATION2; + cloakonnpc( strnpcinfo(0), getcharid(0) ); + setpcblock PCBLOCK_NPC, false; + } + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,127,153,5 duplicate(Marina#ilgf03) Marina#ilgf04 4_F_MONK,5,5 +gef_d01_i,213,237,5 duplicate(Marina#ilgf03) Marina#ilgf05 4_F_MONK,5,5 +gef_d01_i,150,224,5 duplicate(Marina#ilgf03) Marina#ilgf06 4_F_MONK,5,5 +gef_d01_i,208,144,5 duplicate(Marina#ilgf03) Marina#ilgf07 4_F_MONK,5,5 +gef_d01_i,250,130,5 duplicate(Marina#ilgf03) Marina#ilgf08 4_F_MONK,5,5 +gef_d01_i,255,202,5 duplicate(Marina#ilgf03) Marina#ilgf09 4_F_MONK,5,5 + + + +gef_d01_i,250,164,0 script #ilgf06 HIDDEN_WARP_NPC,3,5,{ + end; +OnTouch: + if (ill_vampire == 6) + cloakoffnpc( "Priest#ilgf01", getcharid(0) ); + end; +} + +gef_d01_i,254,162,1 duplicate(dummy_cloaked_npc) Undead#ilgf08 ILL_ZOMBIE +gef_d01_i,252,160,1 duplicate(dummy_cloaked_npc) Undead#ilgf09 ILL_ZOMBIE +gef_d01_i,253,165,3 duplicate(dummy_cloaked_npc) Marina#ilgf10 4_F_MONK + +gef_d01_i,250,164,5 script Priest#ilgf01 4_M_MINISTER,5,5,{ + if (ill_vampire != 6) + end; + .@char_id = .@char_id; + mes "[Priest]"; + mes "What do I do? I can't walk because of my leg. I can't teleport because I don't have enough energy left."; + next; + emotion ET_CRY; + mes "[Priest]"; + mes "*Gasp* Am I going to die? Am I? I can't believe I'm going to die in a place like this!"; + sleep2 500; + cloakoffnpc( "Undead#ilgf08", .@char_id ); + cloakoffnpc( "Undead#ilgf09", .@char_id ); + npctalk "Grr...", "Undead#ilgf08", bc_self; + npctalk "Grrgghh...", "Undead#ilgf09", bc_self; + next; + mes "[Priest]"; + mes "YELP! Not again! Help!"; + next; + select("Typical priest... Wait, is that him?"); + mes "[" + strcharinfo(0) + "]"; + mes "Could he be Father Jubilee?"; + mes "Marina, I think we've found him!"; + sleep2 500; + cloakoffnpc( "Marina#ilgf10", .@char_id ); + specialeffect EF_TELEPORTATION2, AREA, "Marina#ilgf10"; + npctalk "What are you doing here?", "Marina#ilgf10", bc_self; + next; + mes "[Marina]"; + mes "Brother Jubilee?"; + next; + mes "[Jubilee]"; + mes "Ah, Sister Marina! Help! You've got to help me if you don't want to feel guilt over my death later!"; + npctalk "Let's secure this place first.", "Marina#ilgf10", bc_self; + sleep2 500; + specialeffect EF_GLASSWALL2; + sleep2 1000; + npctalk "Adventurer?", "Marina#ilgf10", bc_self; + sleep2 1000; + unittalk getcharid(3), "" + strcharinfo(0) + " : Yes, I'm ready!", bc_self; + next; + mes "[Marina]"; + mes "The dead shall return to the earth!"; + npctalk "Turn Undead!", "Marina#ilgf10", bc_self; + sleep2 1000; + specialeffect EF_TURNUNDEAD, AREA, "Undead#ilgf08"; + specialeffect EF_TURNUNDEAD, AREA, "Undead#ilgf09"; + npctalk "RAWR!", "Undead#ilgf08", bc_self; + npctalk "GRRRR!", "Undead#ilgf09", bc_self; + sleep2 1000; + specialeffect EF_DEVIL, AREA, "Undead#ilgf08"; + specialeffect EF_DEVIL, AREA, "Undead#ilgf09"; + cloakonnpc( "Undead#ilgf08", .@char_id ); + cloakonnpc( "Undead#ilgf09", .@char_id ); + next; + npctalk "Brother, are you all right?", "Marina#ilgf10", bc_self; + sleep2 1000; + npctalk "Whew, I am now. Thank you.", "", bc_self; + next; + mes "[Marina]"; + mes "What happened? Where's Brother Jojo?"; + next; + mes "[Jubilee]"; + mes "He and I were checking this place when we found some fluorescent mushrooms. Brother Jojo's eyes gleamed and..."; + npctalk "*Shakes her head* Wizards.", "Marina#ilgf10", bc_self; + next; + mes "[Jubilee]"; + mes "He touched one of the mushrooms, and it exploded."; + npctalk "What? A mushroom exploded? And?", "Marina#ilgf10", bc_self; + next; + mes "[Jubilee]"; + mes "When I came back to my senses, he was gone and I couldn't move my leg."; + next; + mes "[Marina]"; + mes "Oh no, were you hit by the shrapnel?"; + next; + mes "[Jubilee]"; + mes "Sister Marina, have you seen the mushrooms in this place? They're not like the mushrooms we know. They're miniature bombs that blow up when touched."; + next; + select("I'm glad they only grow here."); + mes "[Marina]"; + mes "Brother Jubilee, do you think you can move?"; + next; + mes "[Jubilee]"; + mes "If I could, I would've found my way back to you already."; + next; + select("I thought priests could heal themselves."); + mes "[Marina]"; + mes "We take basic training to be servants of God, but what each one of us can do depends on our natural ability."; + next; + mes "[Jubilee]"; + mes "I specialize in singing. It's my purpose in life. I feel my greatest joy when I sing Odin's praises."; + next; + mes "[Marina]"; + mes "Don't be surprised. His singing voice really inspires courage and gives strength. He's here with us for a reason."; + npctalk "I've been singing since I found out Brother Jojo was missing.", "", bc_self; + sleep2 500; + npctalk "You shouldn't have wasted your precious voice on these unholy creatures.", "Marina#ilgf10", bc_self; + next; + mes "[Marina]"; + mes "Adventurer, I'm going to take Brother Jubilee to Sister Gem. Could you take a look around this place? I'll be back as soon as I can."; + next; + mes "[Jubilee]"; + mes "Watch for illusions. The notebook's owner's memories manifest themselves sporadically around here."; + next; + mes "[Jubilee]"; + mes "Also, I've sensed an evil presence. Please be careful."; + next; + mes "[Marina]"; + mes "Let's go."; + unittalk getcharid(3), "" + strcharinfo(0) + " : I'd better look for Jojo.", bc_self; + specialeffect EF_TELEPORTATION2, AREA, "Marina#ilgf10"; + specialeffect EF_TELEPORTATION2; + cloakonnpc( "Marina#ilgf10", .@char_id ); + cloakonnpc( "Priest#ilgf01", .@char_id ); + erasequest 14658;// Jubilee Is the Priest's Name + ill_vampire = 7; + + for ( .@i = 3; .@i < 10; ++.@i ) + cloakonnpc( "Marina#ilgf0" + .@i, .@char_id ); + + cloakoffnpc( "Undead#ilgf06", .@char_id ); + cloakoffnpc( "Wizard#ilgf06", .@char_id ); + cloakoffnpc( "Wizard#ilgf07", .@char_id ); + + cloakoffnpc( "Wizard#ilgf08", .@char_id ); + cloakoffnpc( "Nameless Catacomb#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf09", .@char_id ); + cloakoffnpc( "Wizard#ilgf10", .@char_id ); + + cloakoffnpc( "Wizard#ilgf11", .@char_id ); + + cloakoffnpc( "Wizard#ilgf12", .@char_id ); + cloakoffnpc( "Wizard#ilgf13", .@char_id ); + cloakoffnpc( "Nameless Catacomb#ilgf02", .@char_id ); + + cloakoffnpc( "Wizard#ilgf14", .@char_id ); + cloakoffnpc( "Wizard#ilgf15", .@char_id ); + cloakoffnpc( "Nameless Catacomb#ilgf03", .@char_id ); + + cloakoffnpc( "Wizard#ilgf16", .@char_id ); + cloakoffnpc( "Wizard#ilgf17", .@char_id ); + + cloakoffnpc( "Wizard#ilgf18", .@char_id ); + cloakoffnpc( "Someone's Dream#ilgf18", .@char_id ); + + cloakoffnpc( "Wizard#ilgf19", .@char_id ); + cloakoffnpc( "Wizard#ilgf20", .@char_id ); + cloakoffnpc( "Undead#ilgf05", .@char_id ); + + cloakoffnpc( "Undead#ilgf02", .@char_id ); + cloakoffnpc( "Undead#ilgf03", .@char_id ); + cloakoffnpc( "Undead#ilgf04", .@char_id ); + cloakoffnpc( "Wizard#ilgf21", .@char_id ); + cloakoffnpc( "Wizard#ilgf22", .@char_id ); + + cloakoffnpc( "Wizard#ilgf23", .@char_id ); + cloakoffnpc( "Fast Undead#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf24", .@char_id ); + cloakoffnpc( "Shining Mushroom#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf25", .@char_id ); + cloakoffnpc( "Wizard#ilgf26", .@char_id ); + cloakoffnpc( "Undead#ilgf01", .@char_id ); + + cloakoffnpc( "Wizard#ilgf27", .@char_id ); + cloakoffnpc( "Wizard#ilgf28", .@char_id ); + close; + +OnTouch: + if (ill_vampire == 6) + npctalk "This is bad, really bad!", "", bc_self; + end; + +OnInit: + cloakonnpc(); + end; +} + +/* +// never enabled? +gef_d01_i,131,155,3 duplicate(dummy_npc) Wizard#ilgf03 4_F_BOMI,5,5 +gef_d01_i,129,154,7 duplicate(dummy_npc) Wizard#ilgf04 4_GEFFEN_05 +gef_d01_i,113,97,7 duplicate(dummy_npc) Wizard#ilgf05 2_M_SAGE_B,5,5 +gef_d01_i,116,96,1 duplicate(dummy_npc) Undead#ilgf07 GHOUL +*/ + +gef_d01_i,49,113,3 script Wizard#ilgf06 4_GEFFEN_01,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + specialeffect 1033, AREA, "Undead#ilgf06"; + cloakonnpc( "Undead#ilgf06", getcharid(0) ); + sleep2 1000; + npctalk "Ah, it died!", "", bc_self; + sleep2 1500; + npctalk "Maybe Yggdrasil leaves kill the undead.", "Wizard#ilgf07", bc_self; + sleep2 1500; + npctalk "I think so. This means we can use them to take care of the undead.", "", bc_self; + sleep2 1500; + npctalk "You're a genius!", "Wizard#ilgf07", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf07"; + // specialeffect EF_GUARD2, AREA, "Undead#ilgf06"; // already hidden + cloakonnpc( "Wizard#ilgf06", getcharid(0) ); + cloakonnpc( "Wizard#ilgf07", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,46,112,5 duplicate(dummy_cloaked_npc) Wizard#ilgf07 4_M_ARUNA_NFM1 +gef_d01_i,47,110,7 duplicate(dummy_cloaked_npc) Undead#ilgf06 GHOUL + + +gef_d01_i,137,60,3 script Wizard#ilgf08 1_M_WIZARD,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + specialeffect EF_TEMP_FAIL, AREA, "Nameless Catacomb#ilgf01"; + sleep2 1500; + npctalk "Um, even this can't raise the dead. Then what brought those creatures back from the dead?", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf08"; + specialeffect EF_GUARD2, AREA, "Nameless Catacomb#ilgf01"; + cloakonnpc( "Wizard#ilgf08", getcharid(0) ); + cloakonnpc( "Nameless Catacomb#ilgf01", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,136,58,5 duplicate(dummy_cloaked_npc) Nameless Catacomb#ilgf01 4_SOIL + + +gef_d01_i,67,85,5 script Wizard#ilgf09 4_M_JOB_WIZARD,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "Maybe I should crush and mix these gemstones together, and see if I can use the mixture to separate the souls of the undead from their bodies.", "", bc_self; + sleep2 1500; + npctalk "I don't think those zombies have souls.", "Wizard#ilgf10", bc_self; + sleep2 1500; + npctalk "Then what can explain their mobility? Every living thing that moves has a soul.", "", bc_self; + sleep2 1500; + npctalk "Muscle spasm?", "Wizard#ilgf10", bc_self; + sleep2 1500; + npctalk "No. It's clear their souls have returned to their dead bodies. If we can attach and detach our souls freely from our bodies, we can forever escape from physical pain!", "", bc_self; + sleep2 1500; + npctalk "But our bodies don't need souls for their survival. I still think those corpses are just?", "Wizard#ilgf10", bc_self; + sleep2 1500; + npctalk "Just stop talking, and take care of these.", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf10"; + cloakonnpc( "Wizard#ilgf09", getcharid(0) ); + cloakonnpc( "Wizard#ilgf10", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,67,83,1 duplicate(dummy_cloaked_npc) Wizard#ilgf10 4_GEFFEN_05 + + +gef_d01_i,156,234,3 script Wizard#ilgf11 4_M_SIT_NOVICE,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "Hello. Are you an adventurer? How old are you? Is this your first time in this place?", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This place is too dangerous for Novices like you. You'd better leave as soon as possible.", bc_self; + sleep2 1500; + npctalk "Do I look like a Novice? You're cute.", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : What's this?", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + cloakonnpc( "Wizard#ilgf11", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} + + +gef_d01_i,48,255,5 script Wizard#ilgf12 1_M_WIZARD,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "This is the forty-eighth attempt. Now, let me sprinkle holy water.", "", bc_self; + sleep2 1500; + specialeffect EF_BASH3D5, AREA, "Nameless Catacomb#ilgf02"; + emotion ET_THINK, getnpcid(0, "Nameless Catacomb#ilgf02"); + sleep2 1500; + npctalk "Nothing happened. I'll increase the amount of holy water for the forty-ninth attempt.", "", bc_self; + sleep2 1500; + npctalk "Wouldn't it be better if we let a priest handle this?", "Wizard#ilgf13", bc_self; + sleep2 1500; + npctalk "No. Priests will try to get rid of these. Just focus on recording this process.", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf13"; + specialeffect EF_GUARD2, AREA, "Nameless Catacomb#ilgf02"; + cloakonnpc( "", getcharid(0) ); + cloakonnpc( "Wizard#ilgf13", getcharid(0) ); + cloakonnpc( "Nameless Catacomb#ilgf02", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,50,257,5 duplicate(dummy_cloaked_npc) Wizard#ilgf13 2_F_MAGICMASTER +gef_d01_i,50,254,5 duplicate(dummy_cloaked_npc) Nameless Catacomb#ilgf02 4_SOIL + + +gef_d01_i,112,267,3 script Wizard#ilgf14 4_M_JOB_WIZARD,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "Rise!", "", bc_self; + // specialeffect , AREA, "Nameless Catacomb#ilgf03"; // todo? + sleep2 1500; + npctalk "It doesn't work.", "", bc_self; + sleep2 1500; + npctalk "I told you, I used 457 amulets on them, and none of them worked. They're fueled by something else.", "Wizard#ilgf15", bc_self; + sleep2 1500; + npctalk "Like what?", "", bc_self; + sleep2 1500; + npctalk "I don't know.", "Wizard#ilgf15", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf15"; + specialeffect EF_GUARD2, AREA, "Nameless Catacomb#ilgf03"; + cloakonnpc( "Wizard#ilgf14", getcharid(0) ); + cloakonnpc( "Wizard#ilgf15", getcharid(0) ); + cloakonnpc( "Nameless Catacomb#ilgf03", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,110,266,5 duplicate(dummy_cloaked_npc) Wizard#ilgf15 4_M_ARUNA_NFM1 +gef_d01_i,111,264,5 duplicate(dummy_cloaked_npc) Nameless Catacomb#ilgf03 4_SOIL + + +gef_d01_i,55,167,3 script Wizard#ilgf16 4_M_ARUNA_NFM1,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "I miss my Happy. When we finally make this work, I want to bring back Happy first.", "", bc_self; + sleep2 1500; + npctalk "Don't. Look at them. They're not normal. Happy will probably chew on you instead of his chew toy.", "Wizard#ilgf17", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf16"; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf16"; + cloakonnpc( "Wizard#ilgf16", getcharid(0) ); + cloakonnpc( "Wizard#ilgf17", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,53,166,7 duplicate(dummy_cloaked_npc) Wizard#ilgf17 2_F_MAGICMASTER + + +gef_d01_i,236,235,1 script Wizard#ilgf18 1_M_WIZARD,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "*Whine*", "Someone's Dream#ilgf18", bc_self; + sleep2 1500; + npctalk "Ah, I'm sorry! Aww, this is just too creepy. Just kill me already. I can't watch the dreams you show me anymore.", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf18"; + specialeffect EF_GUARD2, AREA, "Someone's Dream#ilgf18"; + cloakonnpc( "Wizard#ilgf18", getcharid(0) ); + cloakonnpc( "Someone's Dream#ilgf18", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,233,237,5 duplicate(dummy_cloaked_npc) Someone's Dream#ilgf18 NIGHTMARE + + +gef_d01_i,255,201,5 script Wizard#ilgf19 4_GEFFEN_05,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + specialeffect EF_GLASSWALL2; + specialeffect EF_GLASSWALL2, AREA, "Wizard#ilgf20"; + npctalk "Ah, what do we do? They're stronger than I thought.", "", bc_self; + sleep2 1500; + npctalk "When can we leave?", "Wizard#ilgf20", bc_self; + sleep2 1500; + npctalk "After they go away. They'll kill us if we move now.", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf20"; + specialeffect EF_GUARD2, AREA, "Undead#ilgf05"; + cloakonnpc( "Wizard#ilgf19", getcharid(0) ); + cloakonnpc( "Wizard#ilgf20", getcharid(0) ); + cloakonnpc( "Undead#ilgf05", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,254,200,5 duplicate(dummy_cloaked_npc) Wizard#ilgf20 2_F_MAGICMASTER +gef_d01_i,256,198,1 duplicate(dummy_cloaked_npc) Undead#ilgf05 GHOUL + + +gef_d01_i,204,146,1 script Wizard#ilgf21 4_GEFFEN_05,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + emotion ET_HUK; + npctalk "Hey, there are too many of them! I told you to lure just one, not this many!", "", bc_self; + sleep2 1500; + emotion ET_HELP, getnpcid(0, "Wizard#ilgf22"); + npctalk "I can't stop them from following me!", "Wizard#ilgf22", bc_self; + sleep2 1500; + npctalk "Get down!", "", bc_self; + sleep2 1500; + specialeffect EF_FIREPILLARBOMB, AREA, "Undead#ilgf02"; + specialeffect EF_FIREPILLARBOMB, AREA, "Undead#ilgf03"; + specialeffect EF_FIREPILLARBOMB, AREA, "Undead#ilgf04"; + sleep2 1500; + cloakonnpc( "Undead#ilgf02", getcharid(0) ); + cloakonnpc( "Undead#ilgf03", getcharid(0) ); + cloakonnpc( "Undead#ilgf04", getcharid(0) ); + npctalk "Whew, thanks!", "Wizard#ilgf22", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf22"; + cloakonnpc( "Wizard#ilgf21", getcharid(0) ); + cloakonnpc( "Wizard#ilgf22", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,202,149,5 duplicate(dummy_cloaked_npc) Wizard#ilgf22 4_M_ARUNA_NFM1 +gef_d01_i,202,152,5 duplicate(dummy_cloaked_npc) Undead#ilgf02 GHOUL +gef_d01_i,200,151,5 duplicate(dummy_cloaked_npc) Undead#ilgf03 ZOMBIE +gef_d01_i,204,151,3 duplicate(dummy_cloaked_npc) Undead#ilgf04 GHOUL + + +gef_d01_i,257,110,1 script Wizard#ilgf23 4_F_BOMI,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "Why is that one so fast? I might die before I have a chance to take a look at it.", "", bc_self; + sleep2 1500; + specialeffect EF_QUAGMIRE, AREA, "Fast Undead#ilgf01"; + sleep2 1500; + npctalk "How can I catch it? I wish there was a way to take it to my lab...", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Fast Undead#ilgf01"; + cloakonnpc( "Wizard#ilgf23", getcharid(0) ); + cloakonnpc( "Fast Undead#ilgf01", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,253,112,5 duplicate(dummy_cloaked_npc) Fast Undead#ilgf01 GHOUL + + +gef_d01_i,230,76,3 script Wizard#ilgf24 4_M_BIBI,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "I'd better be careful. I don't want to die because I was gathering some mushroom spores.", "", bc_self; + sleep2 1500; + specialeffect EF_HATED, AREA, "Shining Mushroom#ilgf01"; + sleep2 1500; + npctalk "This should be enough to illuminate a room.", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Shining Mushroom#ilgf01"; + cloakonnpc( "Wizard#ilgf24", getcharid(0) ); + cloakonnpc( "Shining Mushroom#ilgf01", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,228,75,3 duplicate(dummy_cloaked_npc) Shining Mushroom#ilgf01 ILL_BLACK_MUSHROOM + + +gef_d01_i,93,34,1 script Wizard#ilgf25 4_F_BOMI,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "Let's use a scroll and a Yggdrasil leaf at the same time this time. I'll activate the scroll from here. You use the leaf from there.", "", bc_self; + sleep2 1500; + npctalk "Okay.", "Wizard#ilgf26", bc_self; + sleep2 1500; + specialeffect EF_POISONHIT, AREA, "Undead#ilgf01"; + sleep2 1500; + npctalk "Did we fail again?", "", bc_self; + sleep2 1500; + npctalk "Why wouldn't it turn into a human? If the dead can come back to life, then it should be able to turn into a human.", "Wizard#ilgf26", bc_self; + sleep2 1500; + npctalk "Let's calm down, and try something else.", "", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + specialeffect EF_GUARD2; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf26"; + specialeffect EF_GUARD2, AREA, "Undead#ilgf01"; + cloakonnpc( "Wizard#ilgf25", getcharid(0) ); + cloakonnpc( "Wizard#ilgf26", getcharid(0) ); + cloakonnpc( "Undead#ilgf01", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +gef_d01_i,94,37,3 duplicate(dummy_cloaked_npc) Wizard#ilgf26 1_M_WIZARD +gef_d01_i,91,35,5 duplicate(dummy_cloaked_npc) Undead#ilgf01 GHOUL + +// gef_d01_i,101,124,3 duplicate(dummy_cloaked_npc) Wizard#ilgf27 4_F_BOMI,5,5 // npc has official range. Effect ? +gef_d01_i,101,124,3 duplicate(dummy_cloaked_npc) Wizard#ilgf27 4_F_BOMI +gef_d01_i,99,122,7 script Wizard#ilgf28 4_F_BOMI,5,5,{ + end; +OnTouch: + setpcblock PCBLOCK_NPC, true; + npctalk "We can't experiment in a place like this. Why don't we capture one and bring it to our lab?", "Wizard#ilgf27", bc_self; + sleep2 1500; + npctalk "Don't you feel the energy in the air?", "Wizard#ilgf28", bc_self; + sleep2 1500; + npctalk "What are you saying?", "Wizard#ilgf27", bc_self; + sleep2 1500; + npctalk "Imagine what we can do with this power.", "Wizard#ilgf28", bc_self; + sleep2 1500; + npctalk "...Oh, you're right.", "Wizard#ilgf27", bc_self; + sleep2 1500; + unittalk getcharid(3), "" + strcharinfo(0) + " : This... It must be an old memory of the notebook's owner.", bc_self; + sleep2 2500; + setpcblock PCBLOCK_NPC, false; + + specialeffect EF_GUARD2, AREA, "Wizard#ilgf27"; + specialeffect EF_GUARD2, AREA, "Wizard#ilgf28"; + cloakonnpc( "Wizard#ilgf27", getcharid(0) ); + cloakonnpc( "Wizard#ilgf28", getcharid(0) ); + end; +OnInit: + cloakonnpc(); + end; +} +// End of the "Wizard illusions" + + +gef_d01_i,80,139,5 duplicate(dummy_cloaked_npc) Gem#ilgf02 1_F_PRIEST,5,5 +gef_d01_i,86,133,1 duplicate(dummy_cloaked_npc) Marina#ilgf02 4_F_MONK,5,5 +gef_d01_i,85,139,3 duplicate(dummy_cloaked_npc) Antoine#ilgf02 4_GEFFEN_01,5,5 +gef_d01_i,84,135,3 duplicate(dummy_cloaked_npc) Dracula#ilgf03 4_DRACULA,5,5 +gef_d01_i,87,137,3 duplicate(dummy_cloaked_npc) King#ilgf02 4_NFBAT,5,5 +gef_d01_i,80,132,7 duplicate(dummy_cloaked_npc) Jojo#ilgf01 4_M_JOB_WIZARD,5,5 + + +gef_d01_i,81,135,5 script Wizard#ilgf01 4_F_BOMI,5,5,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[Bomi]"; + mes "Are you sure you can carry all that stuff? Why don't you lighten your bag?"; + close; + } + .@player_name$ = strcharinfo(0); + if (ill_vampire < 7) { + mes "[Wizard]"; + mes "This one has a different color from Neon Mushrooms. Is it a new kind? I'd better pick it carefully..."; + close; + } + if (ill_vampire == 7) { + mes "[Wizard]"; + mes "This one has a different color from Neon Mushrooms. Is it a new kind? I'd better pick it carefully..."; + next; + mes "[" + .@player_name$ + "]"; + mes "^0000cdTypical wizard^000000... Could that be ^0000cdJojo^000000?"; + next; + select("Jojo?"); + mes "[Wizard]"; + mes "...? Are you a human?"; + next; + mes "[" + .@player_name$ + "]"; + mes "Jojo? You're Jojo, right? Your colleagues are worried about you. Let's go back. You're not hurt, are you?"; + next; + mes "[Wizard]"; + mes "No, I'm not Jojo."; + next; + mes "[Wizard]"; + mes "Do I look like a ^0000cdhuman^000000?"; + next; + mes "[" + .@player_name$ + "]"; + mes "Of course."; + next; + mes "[Wizard]"; + mes "..."; + next; + emotion ET_HUK, playerattached(); + select("...Are you not a human?"); + mes "[Wizard]"; + mes "I'm... My name is ^0000cdBomi^000000. I'm sorry I'm not the person you're looking for."; + next; + mes "[" + .@player_name$ + "]"; + mes "Bomi? Wait, you're that Bomi?"; + next; + mes "[Bomi]"; + mes "Do you know me?"; + next; + select("I've picked up your notebook."); + mes "[" + .@player_name$ + "]"; + mes "I didn't mean to be nosy. I had to know who it belonged to, so I could?"; + next; + mes "[Bomi]"; + mes "I threw it away."; + next; + mes "[" + .@player_name$ + "]"; + mes "Why did you throw it away? Why are you staying here?"; + next; + mes "[Bomi]"; + mes "Because I'm a monster. I belong here."; + next; + select("Why do you think you're a monster?"); + mes "[Bomi]"; + mes "Because I'm a vampire."; + next; + select("A vampire?!"); + mes "[" + .@player_name$ + "]"; + mes "What happened? You were a human."; + next; + mes "[Bomi]"; + mes "I got betrayed by my best friend."; + unittalk getcharid(3), "" + .@player_name$ + " : ...You got betrayed?", bc_self; + next; + mes "[Bomi]"; + mes "Most people try to make the most out of life because they know they can't live forever."; + next; + mes "[Bomi]"; + mes "I was given a shorter time to live than most. Ever since I was born, I'd been told I'd never outlive my parents."; + next; + mes "[Bomi]"; + mes "People desire what they don't have. I desired ^0000cdstrength^000000 because I was too small and frail to live like others my age."; + next; + mes "[Bomi]"; + mes "I became a wizard because I thought magic could compensate for my physical weakness."; + next; + mes "[Bomi]"; + mes "I didn't realize a strong mind comes from a strong body, though..."; + next; + mes "[Bomi]"; + mes "Magic was exhausting to both my mind and my body. I reached my limits more quickly than I thought. But I wasn't upset. I thought I could remedy that."; + unittalk getcharid(3), "" + .@player_name$ + " : Oh. That's why you were studying the zombies in these catacombs.", bc_self; + next; + mes "[Bomi]"; + mes "Yes. Doing that, I felt more alive than ever. My burning desire for life made me who I was."; + next; + mes "[Bomi]"; + mes "Then, one day, while I was here, I met an ^0000cdentity^000000 who was not human."; + next; + mes "Bomi is gathering her thoughts. I should talk to her later."; + erasequest 14657;// Jojo Is the Mage's Name + setquest 14659;// Lost in Thought + ill_vampire = 8; + // note: the "old memories" npcs are not automatically cloakoff + close; + } + if (ill_vampire == 8) { + setpcblock PCBLOCK_NPC, true; + npctalk "Do you know what I found here?", "", bc_self; + sleep2 1000; + unittalk getcharid(3), "" + .@player_name$ + " : Nightmares, mushrooms, zombies...", bc_self; + sleep2 2000; + npctalk "There's one more.", "", bc_self; + sleep2 1000; + unittalk getcharid(3), "" + .@player_name$ + " : Are you talking about Dracula? I've heard of him.", bc_self; + sleep2 2500; + npctalk "When I first met him, he was close to perishing. His vulnerability reminded me strongly of my own. ", "", bc_self; + sleep2 2000; + npctalk "That's why I fed him my blood and tended to his wounds, even though I knew I shouldn't.", "", bc_self; + sleep2 2000; + npctalk "Later, I met him again and we got close. He was my first real friend.", "", bc_self; + sleep2 1500; + cloakoffnpc( "Dracula#ilgf01", getcharid(0) ); + specialeffect EF_GUARD2, AREA, "Dracula#ilgf01"; + specialeffect EF_BLUELIGHTBODY, AREA, "Dracula#ilgf01"; + npctalk "Why did you save me?", "Dracula#ilgf01", bc_self; + sleep2 2000; + npctalk "It's hard to explain. Let's just say we humans like to save others.", "", bc_self; + sleep2 2000; + npctalk "That's not true. Others of your kind just want to kill me.", "Dracula#ilgf01", bc_self; + sleep2 2000; + npctalk "Not all of us are made the same.", "", bc_self; + sleep2 1500; + npctalk "How about I give you a gift in return for your favor? I know you want a strong body and longevity.", "Dracula#ilgf01", bc_self; + sleep2 1500; + npctalk "But how? Wait, are you offering...? No, thanks.", "", bc_self; + sleep2 1500; + npctalk "You want them so badly that you're risking your life by studying in a place like this.", "Dracula#ilgf01", bc_self; + sleep2 1500; + npctalk "I do, but I don't want to give up my humanity for them.", "", bc_self; + sleep2 2000; + npctalk "But you're afraid of dying. And your days are numbered.", "Dracula#ilgf01", bc_self; + sleep2 1500; + npctalk "My fear of death is what keeps me going. It's made me who I am.", "", bc_self; + sleep2 2000; + npctalk "Giving up my humanity for eternal life goes against my beliefs, all my hard work up till now, and everything I tried hard to protect.", "", bc_self; + sleep2 2000; + npctalk "Above all, I'll be giving up on myself, and I can't do that.", "", bc_self; + sleep2 2000; + npctalk "Even if you're turned, you'll still be you.", "Dracula#ilgf01", bc_self; + sleep2 1500; + npctalk "On the outside, maybe. But I will no longer fear death, and therefore have no desire to live.", "", bc_self; + sleep2 2000; + npctalk "It pains me to see you wither away, day by day.", "Dracula#ilgf01", bc_self; + sleep2 2000; + setpcblock PCBLOCK_NPC, false; + + npctalk "I can't say I understand your logic, but I'll respect your wishes.", "Dracula#ilgf01", bc_self; + mes "[Bomi]"; + mes "So he ^0000cdpromised^000000. Then one day, some people came here looking for him, and they fought."; + next; + mes "[Bomi]"; + mes "And the next thing I knew, I was turned. Dracula broke his promise."; + next; + npctalk "How could you do this to me?!", "", bc_self; + sleep2 1000; + npctalk "I'm sorry.", "Dracula#ilgf01", bc_self; + sleep2 1500; + specialeffect EF_GUARD2, AREA, "Dracula#ilgf01"; + cloakonnpc( "Dracula#ilgf01", getcharid(0) ); + mes "[Bomi]"; + mes "I couldn't believe he turned me into a monster. I trusted him!"; + next; + mes "[Bomi]"; + mes "People in the outside world must think I skipped town. How long has it been since I left?"; + next; + mes "[Bomi]"; + mes "Sigh, maybe they all forgot about me, as if I never existed. That's what pains me the most."; + next; + mes "[Bomi]"; + mes "I try to ignore my reality, but this ever-present hunger and thirst keep reminding me what kind of terrible monster I am."; + next; + mes "[Bomi]"; + mes "If I go back to the outside world, I won't be able to stop myself from hurting people."; + next; + select("How did you sustain yourself so far?"); + mes "[Bomi]"; + mes "I studied ^0000cdpharmaceutical formulation^000000 to make up for my weak stamina with potions."; + next; + mes "[Bomi]"; + mes "I drink fake blood that I make with the ingredients I can find here. I may look ^0000cdhuman enough^000000, but I'm not. Not really."; + next; + mes "[Bomi]"; + mes "I'm sorry I bored you with my story."; + next; + mes "[" + .@player_name$ + "]"; + mes "Not at all."; + next; + mes "[Bomi]"; + mes "Adventurer, I don't want to impose on your kindness, but may I ask you a favor?"; + next; + select("Sure, anything for you."); + mes "[Bomi]"; + mes "You shouldn't say that. What if I ask for your blood?"; + emotion ET_SWEAT, playerattached(); + next; + mes "[Bomi]"; + mes "I was joking. I'm in the middle of collecting the fake blood ingredients, but right now I want to examine this mushroom. I've never seen it before. I want to check it while it's still fresh."; + next; + mes "[" + .@player_name$ + "]"; + mes "What kinds of ingredients do you need? I'll get them for you."; + next; + mes "[Bomi]"; + mes "Thank you. I need ^0000cd10 Sticky Bloods from Matte Drainliars and 10 Mushroom Saps from Neon Mushrooms^000000. Thank you for doing this for me."; + erasequest 14659;// Lost in Thought + setquest 14660;// Ingredients for Fake Blood + ill_vampire = 9; + close; + } + if (ill_vampire == 9) { + mes "[" + .@player_name$ + "]"; + mes "Here, I brought the things you asked."; + next; + mes "[Bomi]"; + mes "Let's see..."; + next; + if (countitem(25268) < 10 || countitem(25269) < 10) { + mes "[Bomi]"; + mes "This isn't enough."; + next; + mes "[Bomi]"; + mes "Thank you. I need ^0000cd10 Sticky Bloods from Matte Drainliars and 10 Mushroom Saps from Neon Mushrooms^000000. Thank you for doing this for me."; + close; + } + mes "[Bomi]"; + mes "Thank you."; + next; + mes "[" + .@player_name$ + "]"; + mes "How's the mushroom?"; + next; + mes "[Bomi]"; + mes "It turned out to be an ordinary, invaluable mushroom."; + next; + select("How do you make artificial blood?"); + mes "[Bomi]"; + mes "Matte Drainliars feed on the blood of the reanimated corpses in this place."; + next; + mes "[Bomi]"; + mes "Did you get it? But their blood is highly toxic. So I use these mushrooms to detoxify it."; + next; + mes "[Bomi]"; + mes "Like this!"; + specialeffect EF_PHARMACY_OK; + next; + mes "[Bomi]"; + mes "But even their sap cannot completely remove the toxins in the blood. And when I ingest too much toxins..."; + next; + select("Maybe you should've chosen a different career path."); + mes "[" + .@player_name$ + "]"; + mes "Like alchemist, for example."; + next; + mes "[Bomi]"; + mes "I didn't know I was talented at this. If I had ^0000cdenough time to live^000000, I would've had many different experiences. I might have chosen a different path."; + next; + mes "[Bomi]"; + mes "Oh, by the way, weren't you looking for someone? What did you say his name was? Juju?"; + next; + select("Jojo."); + mes "[Bomi]"; + mes "I haven't seen any other humans around here, but if I do, I'll let him know you're looking for him."; + next; + mes "[Bomi]"; + mes "I hope you'll find him soon. I'm not the only one here, you know. If you haven't found him, maybe he's?"; + next; + mes "[Bomi]"; + mes "Never mind. Good luck finding him. Maybe you should check the catacombs in the south."; + next; + mes "[" + .@player_name$ + "]"; + mes "Thank you. I'll see you."; + next; + mes "[Bomi]"; + mes "You'd better hurry."; + cloakoffnpc "Dracula#ilgf02", getcharid(0); + cloakoffnpc "King#ilgf01", getcharid(0); + cloakoffnpc "Wizard#ilgf02", getcharid(0); + delitem 25268,10;// Sticky_Blood + delitem 25269,10;// Mushroom_Sap + erasequest 14660;// Ingredients for Fake Blood + setquest 14661;// Jojo Is the Mage's Name 02 + ill_vampire = 10; + close; + } + if (ill_vampire < 12) { + cloakoffnpc "Dracula#ilgf02", getcharid(0); + cloakoffnpc "King#ilgf01", getcharid(0); + cloakoffnpc "Wizard#ilgf02", getcharid(0); + mes "[Bomi]"; + mes "I hope you'll find your friend soon. Why don't you check the catacombs in the south? He might be there."; + close; + } + if (ill_vampire == 12) { + viewpoint 2,85,131,1,0x00FF00; + cloakoffnpc( "Gem#ilgf02", getcharid(0) ); + cloakoffnpc( "Marina#ilgf02", getcharid(0) ); + cloakoffnpc( "Antoine#ilgf02", getcharid(0) ); + + mes "[Bomi]"; + mes "Stay away from me, and I won't hurt you."; + next; + mes "[Marina]"; + mes "One of us is missing. You hurt him, didn't you?"; + next; + mes "[Bomi]"; + mes "I've never hurt anyone, and I won't start now."; + next; + mes "[Marina]"; + mes "Even if you won't, we're not going to let you go! Your existence in itself goes against His will!"; + next; + mes "[Bomi]"; + mes "His will? God loves us all. Isn't that what you preach?"; + next; + mes "[Marina]"; + mes "The dead belong in the ground, and you're one of them. What do you think you are?"; + next; + mes "[Bomi]"; + mes "...But... But I really didn't hurt anyone."; + next; + mes "[Marina]"; + mes "That doesn't guarantee you won't in the future."; + next; + mes "[Gem]"; + mes "Wait, Sister Marina. Calm yourself."; + next; + mes "[Marina]"; + mes "Why aren't we getting rid of her already? The dead shall return to the earth! Brother Antoine!"; + npctalk "Sigh, Sister Marina is right.", "Antoine#ilgf02", bc_self; + npctalk "Guillotine Fist!", "Marina#ilgf02", bc_self; + sleep2 1000; + cloakoffnpc( "Dracula#ilgf03", getcharid(0) ); + specialeffect EF_M01, AREA, "Dracula#ilgf03"; + specialeffect EF_BOTTOM_MAG, AREA, "Dracula#ilgf03"; + specialeffect EF_BEGINASURA, AREA, "Dracula#ilgf03"; + sleep2 1000; + specialeffect EF_DRAGONFEAR, AREA, "Dracula#ilgf03"; + specialeffect EF_BLEEDING, AREA, "Dracula#ilgf03"; + specialeffect EF_COLDTHROW, AREA, "Dracula#ilgf03"; + specialeffect EF_TEIHIT1X, AREA, "Dracula#ilgf03"; + npctalk "Ugh!", "Dracula#ilgf03", bc_self; + next; + cloakoffnpc( "King#ilgf02", getcharid(0) ); + specialeffect EF_M01, AREA, "King#ilgf02"; + emotion ET_ANGER, getnpcid(0, "King#ilgf02"); + mes "[King]"; + mes "Argh, I can't believe you threw yourself in the middle of that! This is why I can't leave you alone!"; + next; + mes "[Bomi]"; + mes "...Dracula? Why?"; + next; + mes "[Marina]"; + mes "There's another vampire! No wonder why this place felt so off it's filled with vampires!"; + npctalk "Hey, you bat, the one over there! Are you also a vampire?", "Marina#ilgf02", bc_self; + sleep2 1000; + npctalk "Did the vampire call for help?", "Antoine#ilgf02", bc_self; + next; + emotion ET_FRET, getnpcid(0, "King#ilgf02"); + mes "[King]"; + mes "Human, did you just call me a bat? How dare you?"; + next; + mes "[Gem]"; + mes "Wait, Sister Marina. I said, calm yourself."; + next; + mes "[Marina]"; + mes "We have to act now. We've already incapacitated one out of the three."; + next; + mes "[Gem]"; + mes "But one of them doesn't want to fight. She wants to talk."; + next; + mes "[King]"; + mes "Who wants to talk? Because I don't! I'm not going to go down without a fight!"; + specialeffect EF_TEIHIT1X, AREA, "King#ilgf02"; + specialeffect EF_SUI_EXPLOSION, AREA, "Marina#ilgf02"; + specialeffect EF_DARKBREATH, AREA, "Marina#ilgf02"; + next; + mes "[Marina]"; + mes "Grr, let me go! Enough is enough!"; + next; + cloakoffnpc( "Jojo#ilgf01", getcharid(0) ); + specialeffect EF_TELEPORTATION2, AREA, "Jojo#ilgf01"; + emotion ET_CONFUSE, getnpcid(0, "Jojo#ilgf01"); + mes "[Jojo]"; + mes "Oh geez, how do you move so fast?"; + next; + mes "[Jojo]"; + mes "Everyone, calm the hell down!"; + next; + mes "[Gem]"; + mes "Brother Jojo! You're safe!"; + next; + mes "[Marina]"; + mes "Where were you? We couldn't find you, and we looked everywhere!"; + next; + mes "[Antoine]"; + mes "It's true. His wounds are almost fully healed."; + next; + mes "[Dracula]"; + mes "Don't touch Bomi... She... I... We don't want to hurt anyone... She's taught me that..."; + npctalk "Hmpf, you should worry about yourself, you're dying!", "King#ilgf02", bc_self; + next; + mes "[Bomi]"; + mes "Dracula! Dracula! Let me heal you!"; + next; + mes "[Marina]"; + mes "I'm not going to let you do that!"; + next; + mes "[Gem]"; + mes "Leave them be. They saved Jojo."; + next; + mes "[Marina]"; + mes "But they could be using him as bait!"; + next; + mes "[Gem]"; + mes "Even if they try to attack us, there are more of us than them."; + npctalk "You're delusional if you think there's no strength in numbers.", "King#ilgf02", bc_self; + next; + mes "[Antoine]"; + mes "I agree with Sister Gem. Also, it's not an everyday opportunity that we can see vampires from this close."; + next; + mes "[Gem]"; + mes "You're Bomi, right? I read your notebook. What happened? What did these vampires do to you?"; + next; + select("I can explain."); + mes "I relayed Bomi and Dracula's story to Nun Gem and the others."; + next; + mes "[Gem]"; + mes "So you're saying they really are innocent."; + next; + mes "[Bomi]"; + mes "Dracula, hang on. Drink this."; + next; + mes "[Marina]"; + mes "Whose blood is that? You can't let him drink that!"; + next; + mes "[Bomi]"; + mes "It's not real blood! He needs it! Can't you see he's dying?"; + next; + mes "[Marina]"; + mes "You're dead already!"; + next; + mes "[King]"; + mes "Gosh, you're so stubborn. Feed him. I'll keep them at bay."; + npctalk "Let me help.", "Jojo#ilgf01", bc_self; + sleep2 500; + npctalk "You may feed him.", "Gem#ilgf02", bc_self; + next; + mes "[Marina]"; + mes "You're letting her feed him, that vampire? Sister Gem, have you forgotten your duty as our leader?"; + next; + mes "[Jojo]"; + mes "Marina, I don't care who they are. They saved me and asked for nothing in return."; + next; + mes "[Jojo]"; + mes "I didn't understand why vampires would help humans, but now I know. Dracula learned from Bomi how to be more human."; + next; + mes "[Jojo]"; + mes "He said he wanted to understand humans, so he could better understand her. And I think he's achieved his goal."; + next; + mes "[Jojo]"; + mes "He helped me and expected nothing in return. Such a random act of kindness is a human trait, isn't it?"; + next; + mes "[Jojo]"; + mes "And you shouldn't help someone because of who they are. Marina, are you really going to let him die because he's not one of us?"; + next; + mes "[Marina]"; + mes "That only applies to us humans. They're vampires!"; + next; + mes "[King]"; + mes "Now I understand why Dracula was so distrustful of you humans. I thought he was being too picky."; + next; + mes "[King]"; + mes "Hey, you monk, over there. What do you think makes you human? What do you think makes a vampire a vampire? What if there's a vampire that's never hurt anyone in their life?"; + next; + mes "[Marina]"; + mes "I'll get rid of them."; + next; + mes "[King]"; + mes "What if there's a human who did nothing but hurt others. What would you do about them?"; + next; + mes "[Marina]"; + mes "I'll let justice decide their fate."; + next; + mes "[King]"; + mes "When I hunt, I treated all humans equally because I'm a vampire. That's my rule."; + next; + mes "[King]"; + mes "Their rule is to help anyone who needs help regardless of who they are. Simple, isn't it?"; + next; + mes "[Marina]"; + mes "..."; + next; + mes "[Dracula]"; + mes "Mm... Bomi?"; + npctalk "Dracula, how are you feeling?", "King#ilgf02", bc_self; + sleep2 500; + npctalk "Whew, he's out of the woods now.", "Jojo#ilgf01", bc_self; + next; + mes "[Dracula]"; + mes "Did you... save me? I thought you wanted me to die."; + next; + mes "[Bomi]"; + mes "No, and now I understand why you made that decision. You couldn't just let me die, could you?"; + next; + mes "[Bomi]"; + mes "Because I couldn't do it, either."; + next; + mes "[Dracula]"; + mes "..."; + npctalk "What are you guys doing?", "King#ilgf02", bc_self; + sleep2 500; + npctalk "Leave them alone. They're reconciling with each other.", "Jojo#ilgf01", bc_self; + next; + mes "[Gem]"; + mes "Brothers. Sisters. We need to talk."; + erasequest 14663;// Bloody Fight + setquest 14664;// Deep Misunderstanding + ill_vampire = 13; + close; + } + if (ill_vampire == 13) { + mes "[Bomi]"; + mes "Thank you, and I'm sorry."; + next; + mes "[Dracula]"; + mes "I'm sorry I broke my promise. But even if I could go back in time, I would do it again."; + next; + mes "[Bomi]"; + mes "I understand now why you did that."; + next; + mes "[Jojo]"; + mes "Did you guys make up? Dracula, the worst is over. You just need to rest and regain your energy."; + next; + mes "[Dracula]"; + mes "Thank you."; + next; + mes "[King]"; + mes "*Snort* You can't beat mushrooms, but you can save vampires."; + npctalk "They weren't mushrooms, they were zombies!", "Jojo#ilgf01", bc_self; + sleep2 500; + npctalk "Mushrooms and zombies. Same difference to me.", "King#ilgf02", bc_self; + next; + emotion ET_GO, getnpcid(0, "King#ilgf02"); + mes "[King]"; + mes "Drac, let's go. I know you're not hurting anymore. We should really go back to our castle this time."; + next; + mes "[Dracula]"; + mes "I'm going to stay."; + next; + mes "[King]"; + mes "What? No! You've made up with her. It's time to leave!"; + next; + mes "[Gem]"; + mes "Please hear me out."; + npctalk "What more do you have to say?", "King#ilgf02", bc_self; + sleep2 500; + npctalk "Just listen, will you?", "Jojo#ilgf01", bc_self; + next; + mes "[Gem]"; + mes "We know you haven't hurt anyone, and you want to keep it that way. And we appreciate you saved Brother Jojo."; + npctalk "And?", "King#ilgf02", bc_self; + sleep2 500; + npctalk "Just hush!", "Jojo#ilgf01", bc_self; + next; + mes "[Gem]"; + mes "But that doesn't change the fact that your existence in itself defies our god's will. We can't leave you alone."; + next; + emotion ET_ANGER, getnpcid(0, "King#ilgf02"); + mes "[King]"; + mes "Drac, they won't leave us alone. Let's just get rid of them!"; + npctalk "No!", "", bc_self; + npctalk "No!", "Dracula#ilgf03", bc_self; + next; + mes "[Marina]"; + mes "Sister Gem, this is just a waste of time. They're going to kill us the first chance they get. Let's get rid of of them before they do!"; + next; + mes "[Antoine]"; + mes "Sisters, let me talk. Your tendency to jump to conclusions is not helping this situation."; + next; + mes "[Antoine]"; + mes "We understand you don't want to hurt anyone."; + next; + mes "[Antoine]"; + mes "But you're dangerous to others, whether you like it or not."; + next; + emotion ET_FRET, getnpcid(0, "King#ilgf02"); + mes "[King]"; + mes "Why are you looking at me? I didn't do anything!"; + next; + mes "[Antoine]"; + mes "Now that we know you exist, we can't ignore you. I can, but these people here can't. Their church won't allow it."; + npctalk "So what's your point?", "King#ilgf02", bc_self; + next; + mes "[Antoine]"; + mes "We're not going to make any decision. Instead, we'll ^0000cdstay here with you^000000."; + next; + emotion ET_ANGER, getnpcid(0, "King#ilgf02"); + mes "[King]"; + mes "So you can keep an eye on us. Drac, I can't take this anymore!"; + specialeffect EF_PORTAL4, AREA, "King#ilgf02"; + cloakoffnpc( "King#ilgf02", getcharid(0) ); + specialeffect EF_M01, AREA, "King#ilgf02"; + sleep2 1000; + npctalk "I'm going to kill them all!", "King#ilgf02", bc_self; + sleep2 1000; + npctalk "Okay.", "", bc_self; + next; + emotion ET_FRET, getnpcid(0, "King#ilgf02"); + mes "[King]"; + mes "What? Drac! Stop acting like a human! We're proud, dignified vampires!"; + next; + mes "[Dracula]"; + mes "Let's go back. I'm tired. I want to sleep."; + npctalk "Let me go with you. I want to stay with you until you fully recover.", "Jojo#ilgf01", bc_self; + next; + emotion ET_ANGER, getnpcid(0, "King#ilgf02"); + specialeffect EF_PORTAL4, AREA, "King#ilgf02"; + cloakoffnpc( "King#ilgf02", getcharid(0) ); + specialeffect EF_M01, AREA, "King#ilgf02"; + mes "[King]"; + mes "I'm not happy with this arrangement, Drac. I'm going back to our castle once you get better, got it?"; + next; + mes "[Gem]"; + mes "So we've come to an agreement. We'll leave now."; + specialeffect EF_TELEPORTATION2, AREA, "Gem#ilgf02"; + sleep2 500; + cloakonnpc( "Gem#ilgf02", getcharid(0) ); + next; + mes "[Marina]"; + mes "You! I'm watching you! Better keep your coffin lid shut tight while you sleep!"; + specialeffect EF_TELEPORTATION2, AREA, "Marina#ilgf02"; + sleep2 500; + cloakonnpc( "Marina#ilgf02", getcharid(0) ); + next; + npctalk "What? Hey, you stop right there!", "King#ilgf02", bc_self; + mes "[Antoine]"; + mes "I should leave too. Excuse me."; + specialeffect EF_TELEPORTATION2, AREA, "Antoine#ilgf02"; + sleep2 500; + cloakonnpc( "Antoine#ilgf02", getcharid(0) ); + next; + mes "[King]"; + mes "Argh! I don't ever want to see them again! Let's go!"; + specialeffect EF_M01, AREA, "King#ilgf02"; + sleep2 500; + cloakonnpc( "King#ilgf02", getcharid(0) ); + next; + mes "[Jojo]"; + mes "Let's go."; + next; + mes "[Dracula]"; + mes "Bomi, I'll see you when I get better."; + next; + mes "[Jojo]"; + mes "Okay, go."; + specialeffect EF_TELEPORTATION2, AREA, "Jojo#ilgf01"; + specialeffect EF_M01, AREA, "Dracula#ilgf03"; + sleep2 500; + cloakonnpc( "Jojo#ilgf01", getcharid(0) ); + cloakonnpc( "Dracula#ilgf03", getcharid(0) ); + next; + select("Finally, they all left. That was close."); + mes "[Bomi]"; + mes "Thank you, Adventurer. Everything went well, and no one got hurt because of you."; + next; + select("You asked me if you looked like a human. Remember?"); + mes "[Bomi]"; + mes "I do."; + next; + select("What do you think defines a human?"); + mes "[" + .@player_name$ + "]"; + mes "I didn't know you when you were a human, but I don't think you were different from who you are now. You're still trying to protect what's important to you."; + next; + mes "[" + .@player_name$ + "]"; + mes "I think you're more human than anyone else I know. You also taught a vampire humanity."; + next; + mes "[Bomi]"; + mes "...Thank you. I never imagined someone would say such kind words to me one day, but I've longed to hear them."; + next; + mes "[Bomi]"; + mes "I couldn't get over the fact that I became a monster, but now I know better. I may not be a human anymore, but I'm still me."; + next; + mes "[Bomi]"; + mes "Thank you."; + next; + mes "[" + .@player_name$ + "]"; + mes "I should go. It's time I report back."; + next; + mes "[Bomi]"; + mes "Okay. Travel safely. And thank you for your help."; + erasequest 14664;// Deep Misunderstanding + setquest 14665;// Is the Fight Over? + ill_vampire = 14; + close; + } + if (ill_vampire == 14 || ill_vampire == 15) { + mes "[Bomi]"; + mes "Didn't you say you have to report back? Go to the exit. I smelled your friends there."; + close; + } + switch( checkquest(14674,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + if (mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") < 1) { + mes "[Bomi]"; + mes "Adventurer, thank you for trying to help me, but I don't want you to strain yourself. Why don't you rest for now?"; + next; + mes "[Bomi]"; + mes "You can come back after dawn."; + close; + } + mes "[Bomi]"; + mes "I'm away right now. Please come back after dawn."; + close; + case 2: + if (mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") < 1) { + mes "[Bomi]"; + mes "Adventurer, welcome back. Could you help me today as usual?"; + .@npc_name$ = "Bomi"; + } + else { + mes "[" + .@player_name$ + "]"; + mes "Bomi is away. She has left a note."; + .@npc_name$ = "Bomi's Note"; + } + next; + mes "[" + .@npc_name$ + "]"; + mes "I need ^0000cd10 Sticky Bloods from Matte Drainliars and 10 Mushroom Saps from Neon Mushrooms^000000. You can get them if you hunt at least ^0000cd5 Matte Drainliars and 5 Neon Mushrooms^000000."; + next; + mes "[" + .@npc_name$ + "]"; + mes "Thank you for your help."; + erasequest 14674;// Time to Digest + setquest 14671;// Unreliable Fake Blood + close; + } + switch( checkquest(14671,HUNTING) ) { + case -1: + //if (mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") > 0) {// unknown text + mes "[Bomi]"; + mes "Adventurer, did you report already? Do you have something else to do here?"; + next; + mes "[Bomi]"; + mes "If you're not busy, could you help me with something?"; + next; + if (select( "Sure thing.", "I'm kind of busy at the moment.") == 2) { + mes "[Bomi]"; + mes "Oh, are you? I'm sorry. Maybe you could come back later? no, never mind."; + close; + } + mes "[Bomi]"; + mes "As you know, I live on that fake blood that I make with the ingredients I find around here. I'm thinking I'll make some more for Dracula as well."; + next; + mes "[Bomi]"; + mes "But since this fake blood is not pure, drinking it regularly causes your body to accumulate toxins, which drive you insane until they are completely purged from your system."; + next; + mes "[Bomi]"; + mes "But maybe that only happens to me. I'm a new vampire, and I'm weak. Dracula has lived for a long time, and he's anything but weak. "; + setquest 14671;// Unreliable Fake Blood + next; + mes "[Bomi]"; + mes "Anyway, I need ^0000cd10 Sticky Bloods from Matte Drainliars and 10 Mushroom Saps from Neon Mushrooms^000000."; + next; + mes "[Bomi]"; + mes "You can find them if you hunt at least ^0000cd5 Matte Drainliars and 5 Neon Mushrooms^000000."; + close; + case 0: + case 1: + if (mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") > 0) { + mes "[" + .@player_name$ + "]"; + mes "Bomi is away. I'll just leave these here."; + next; + mes "[" + .@player_name$ + "]"; + mes "I think I forgot something."; + close; + } + mes "[Bomi]"; + mes "Adventurer, did you forget what I asked? I need ^0000cd10 Sticky Bloods from Matte Drainliars and 10 Mushroom Saps from Neon Mushrooms^000000. Thank you."; + close; + case 2: + if (countitem(25268) < 10 || countitem(25269) < 10) { + if (mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") > 0) { + mes "[" + .@player_name$ + "]"; + mes "Bomi is away. I'll just leave these here."; + next; + mes "[" + .@player_name$ + "]"; + mes "I think I forgot something."; + close; + } + mes "[Bomi]"; + mes "Adventurer, did you forget what I asked? I need ^0000cd10 Sticky Bloods from Matte Drainliars and 10 Mushroom Saps from Neon Mushrooms^000000. Thank you."; + close; + } + if (mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") > 0) { + mes "[" + .@player_name$ + "]"; + mes "Bomi is away. I'll just leave these here."; + delitem 25268,10;// Sticky_Blood + delitem 25269,10;// Mushroom_Sap + erasequest 14671;// Unreliable Fake Blood + setquest 14674;// Time to Digest + getexp 500000,500000; + getitem 25271,1;// Illusion Stone + close; + } + mes "[Bomi]"; + mes "Adventurer, thank you for bringing these to me."; + delitem 25268,10;// Sticky_Blood + delitem 25269,10;// Mushroom_Sap + erasequest 14671;// Unreliable Fake Blood + setquest 14674;// Time to Digest + getexp 500000,500000; + getitem 25271,1;// Illusion Stone + if (mobcount("gef_d01_i", "ill_vampire_spawn_bomi::OnMobDead") < 1 && mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") < 1) { + if (.bomi_count < 30) + .bomi_count++; + } + next; + if (.bomi_count == 29) { + mes "[Bomi]"; + mes "By the way, I told you about the dangers of this fake blood. Remember? It leaves toxins in my system."; + next; + mes "[Bomi]"; + mes "Right now, there are so many toxins in my body that I can feel like I'm turning into a monster."; + next; + mes "[Bomi]"; + mes "I can't wait it out like I used to."; + mes "Not when there are people to worry about."; + next; + mes "[Bomi]"; + mes "When I turn into a monster, I want you to stop me from hurting them. Please, help me."; + next; + mes "[Bomi]"; + mes "Then please come back after dawn."; + close; + } + if (.bomi_count == 30) { + mes "[Bomi]"; + mes "I ran out of the ingredients I had."; + next; + mes "[Bomi]"; + mes "If I mix them like this and drink..."; + specialeffect EF_PHARMACY_OK; + next; + disablenpc( "Wizard#ilgf01" ); + specialeffect EF_DEVIL; + mes "[Bomi]"; + mes "Oh, no! There is too many toxins in my body. It's getting dangerous!"; + if (mobcount("gef_d01_i", "ill_vampire_spawn_bomi::OnMobDead") < 1 && mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") < 1) + donpcevent "ill_vampire_spawn_bomi::OnStart"; + close; + } + mes "[Bomi]"; + mes "If I drink this toxic blood about thirty times, I might turn? oh, never mind."; + next; + mes "[Bomi]"; + mes "Then please come back after dawn."; + close; + } + end; + +OnTouch: + if (ill_vampire == 7) { + setpcblock PCBLOCK_NPC, true; + npctalk "This one has a different color from Neon Mushrooms. Is it a new kind? I'd better pick it carefully...", "", bc_self; + sleep2 1000; + setpcblock PCBLOCK_NPC, false; + unittalk getcharid(3), "" + strcharinfo(0) + " : Typical wizard... Wait, could that be Jojo??", bc_self; + } + else if (ill_vampire == 12 || ill_vampire == 13) { + cloakoffnpc( "Gem#ilgf02", getcharid(0) ); + cloakoffnpc( "Marina#ilgf02", getcharid(0) ); + cloakoffnpc( "Antoine#ilgf02", getcharid(0) ); + if (ill_vampire == 13) { + cloakoffnpc( "Dracula#ilgf03", getcharid(0) ); + cloakoffnpc( "King#ilgf02", getcharid(0) ); + cloakoffnpc( "Jojo#ilgf01", getcharid(0) ); + } + } + end; + +OnInit: + // todo: missing questinfo ? + + .@main_completed$ = "isbegin_quest(14666) == 2"; + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14674,PLAYTIME) == -1 && checkquest(14671,HUNTING) == -1") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14671,HUNTING) == 2 && countitem(25268) > 9 && countitem(25269) > 9") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14674,PLAYTIME) == 2") ); + + if (strnpcinfo(0) == "Wizard#ilgf001") + disablenpc(); + end; +} +gef_d01_i,81,135,3 duplicate(Wizard#ilgf01) Wizard#ilgf001 4_NFCOFFIN,5,5 + +gef_d01_i,82,132,3 duplicate(dummy_npc) Mushroom#ilgf01 ILL_BLACK_MUSHROOM +gef_d01_i,86,133,1 duplicate(dummy_cloaked_npc) Dracula#ilgf01 4_DRACULA + + +// Boss spawn +gef_d01_i,1,1,5 script ill_vampire_spawn_bomi -1,{ + end; +OnStart: + sleep 1000; + mapannounce "gef_d01_i", "Oh, no... I can feel the toxins spreading through my body...!", bc_map, 0xFF0000; + if (mobcount("gef_d01_i", "ill_vampire_spawn_bomi::OnMobDead") < 1 && mobcount("gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead") < 1) { + monster "gef_d01_i",84,135,"Berserk Bomi",3756,1,"ill_vampire_spawn_bomi::OnMobDead"; + .bomi_count = 0; + } + end; +OnMobDead: + enablenpc( "Wizard#ilgf001" ); + disablenpc( "Dracula#ilgf02" ); + mapannounce "gef_d01_i", "Bomi is falling into a long, deep sleep.", bc_map, 0x00ff00; + mapannounce "gef_d01_i", "Angry Dracula: Who dares hurt my Bomi?!", bc_map, 0x00ff00; + sleep 1000; + if (rand(2) == 1) + mapannounce "gef_d01_i", "Angry Dracula: Leave Bomi alone! Fight me instead!", bc_map, 0xFF0000; + else + mapannounce "gef_d01_i", "Angry Dracula: Bomi needs rest. I'll deal with you!", bc_map, 0xFF0000; + killmonster "gef_d01_i", "ill_vampire_spawn_bomi::OnMobDead"; + killmonster "gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead"; + monster "gef_d01_i",0,0,"Angry Dracula",3757,1,"ill_vampire_spawn_dracula::OnMobDead"; + end; +} + +gef_d01_i,1,1,5 script ill_vampire_spawn_dracula -1,{ + end; +OnMobDead: + killmonster "gef_d01_i", "ill_vampire_spawn_bomi::OnMobDead"; + killmonster "gef_d01_i", "ill_vampire_spawn_dracula::OnMobDead"; + mapannounce "gef_d01_i", "Angry Dracula: It's about time for Bomi to wake up. Humans, don't forget your promise!", bc_map, 0x00ff00; + sleep 2000; + mapannounce "gef_d01_i", "Bomi is stirring from her long, deep sleep.", bc_map, 0x00ff00; + if (mobcount("gef_d01_i", "ill_vampire_spawn_bomi::OnMobDead") < 1) { + disablenpc( "Wizard#ilgf001" ); + enablenpc( "Wizard#ilgf01" ); + enablenpc "Dracula#ilgf02"; + } + end; +} + +gef_d01_i,185,97,5 script King#ilgf01 4_NFBAT,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[King]"; + mes "Hey, why are you carrying so much? Go lighten your bag first."; + close; + } + if (ill_vampire < 11) { + mes "[King]"; + mes "What, do you have business with me? If not, shoo!"; + close; + } + if (ill_vampire == 11) { + mes "[King]"; + mes "I smell ^0000cdblood^000000! Human blood!"; + next; + mes "[Jojo]"; + mes "You can't be smelling me. I'm not bleeding anymore. I already healed!"; + next; + mes "[King]"; + mes "No. It's from somewhere else, and I'm smelling more than one human. ...A ^0000cdfight^000000! A fight broke out somewhere! Blood! Let's go!"; + next; + mes "[" + strcharinfo(0) + "]"; + mes "A fight? ...No. What if the people from the Church found Bomi?"; + next; + mes "[Dracula]"; + mes "What people from the Church?"; + next; + emotion ET_GO; + mes "[King]"; + mes "*Sniff* This way! The smell is coming from this way!"; + erasequest 14662;// You're Scaring Me + setquest 14663;// Bloody Fight + ill_vampire = 12; + close2; + viewpoint 1,85,131,1,0x00FF00; + end; + } + if (ill_vampire == 12 || ill_vampire == 13) { + mes "[King]"; + mes "*Sniff* This way! The smell is coming from this way!"; + close2; + viewpoint 1,85,131,1,0x00FF00; + end; + } + if (ill_vampire == 14 || ill_vampire == 15) { + mes "[King]"; + mes "Why are you looking at me like that? Dracula needs more rest. Do not disturb him."; + close; + } + // if (ill_vampire == 16) { + switch( checkquest(14676,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Jojo]"; + mes "Adventurer, you're back already."; + next; + mes "[King]"; + mes "Yes, why did you come back so quickly? I don't want to be disturbed right now. Come back later."; + close; + case 2: + mes "[King]"; + mes "The adventurer is here!"; + next; + mes "[Jojo]"; + mes "The adventurer is here!"; + next; + select("Why are you so excited to see me?"); + mes "[King]"; + mes "You'll take care of those Matte Drainliars like you did the last time, right? They're too loud."; + next; + mes "[Jojo]"; + mes "And you'll get some ^0000cdShort Bat Hairs^000000 too, right? I need a lot more than what you brought last time."; + next; + mes "[King]"; + mes "^0000cd10 Matte Drainliars^000000!"; + next; + mes "[Jojo]"; + mes "Thank you in advance!"; + erasequest 14676;// Break Time + setquest 14675;// Noisy Neighbors + close; + } + switch( checkquest(14675,HUNTING) ) { + case -1: + mes "[Jojo]"; + mes "Ah, Adventurer. Good to see you again! Dracula is doing better, though he sleeps all day."; + next; + mes "[King]"; + mes "He's fully recovered, but he still doesn't want to leave. I don't know why he's so infatuated with that turned human."; + next; + mes "[Jojo]"; + mes "Oh, do you mean Bomi? I thought she was a vampire like Dracula."; + next; + mes "[King]"; + mes "Not all vampires are the same. We're different from her. By the way, why are you still here? Dracula doesn't need you anymore."; + next; + mes "[Jojo]"; + mes "Well, there are things around here that I want to study, and..."; + next; + mes "[King]"; + mes "Do you have a death wish? Haven't you noticed how hungry and ferocious these bats are? They latch onto anything that moves, these creeps! Take care of them for me, will you?"; + next; + if (select( "They're annoying.", "Um, I'm kind of busy.") == 2) { + mes "[King]"; + mes "Oh, are you? Then go. Go away."; + next; + mes "[Jojo]"; + mes "King, you don't have to be so mean."; + next; + mes "[King]"; + mes "He was mean to me first! And he said he's busy. That's why I said go. Go!"; + close; + } + mes "[Jojo]"; + mes "Well, they don't bother me as long as I stay close to Dracula and King."; + next; + mes "[King]"; + mes "But they drink zombie blood! Yuk! I'll never drink dead blood, no matter how hungry I am. That's disgraceful!"; + next; + mes "[Jojo]"; + mes "So you're hating your own kind."; + npctalk "What? You, human.", "", bc_self; + sleep2 1000; + npctalk "Yes...?", "Wizard#ilgf02", bc_self; + sleep2 1000; + npctalk "Am I a bat?", "", bc_self; + sleep2 1000; + npctalk "...No.", "Wizard#ilgf02", bc_self; + next; + mes "[King]"; + mes "In case you have forgotten, do you know how you're still standing there, breathing?"; + next; + mes "[Jojo]"; + mes "...How?"; + next; + mes "[King]"; + mes "Because I let you. And I'm letting you breathe not because you're worth living, but because I'm too lazy to kill you."; + next; + emotion ET_SWEAT, getnpcid(0, "Wizard#ilgf02"); + mes "[Jojo]"; + mes "...Oh. Thank you for everything. Um, I think it's time I should rejoin my group."; + next; + mes "[King]"; + mes "I'm still talking to you. You're not afraid of me because I'm in bat form, are you? You humans are so stupid, you can't get past what you see."; + npctalk "No, no, that's not true.", "Wizard#ilgf02", bc_self; + next; + mes "[Jojo]"; + mes "I agree that these bats are disgraceful, shameless, and disgusting animals."; + next; + mes "[King]"; + mes "Did you just call me a disgusting animal?"; + next; + mes "[Jojo]"; + mes "No, no. Not you. I'm talking about Matte Drainliars."; + npctalk "Good, because you don't want to make me angry.", "", bc_self; + sleep2 1000; + npctalk "It seems you already identify yourself as a bat.", "Wizard#ilgf02", bc_self; + sleep2 1000; + npctalk "What?", "", bc_self; + next; + select("I have a question for you, King."); + mes "[King]"; + mes "What is it?"; + next; + select("Why are you in bat form?"); + mes "[Jojo]"; + mes "Yes. If you hate them so much, then why don't you go back to your original form?"; + next; + mes "[King]"; + mes "That's because this form is more efficient. I don't have to drink a lot to get full, I'm inconspicuous, and people, like that numskull over there, let their guard down around me."; + next; + mes "[Jojo]"; + mes "I'm not a numskull. I wouldn't have become a wizard if I was. And don't forget, I saved Dracula!"; + next; + mes "[" + strcharinfo(0) + "]"; + mes "But why a bat? There are other small animals."; + next; + mes "[King]"; + mes "Because bats are stealthy, and they can fly. Oh, speaking of which, did you know the short hair of Matte Drainliars is used for making cloaking capes?"; + next; + select("Huh? No, I've never heard that."); + mes "[Jojo]"; + mes "Cloaking capes? Thieves and their ilk must love those."; + next; + mes "[King]"; + mes "I can't believe how simple-minded you are."; + next; + mes "[Jojo]"; + mes "Erm, how can I get the hair? By hunting Matte Drainliars?"; + next; + mes "[King]"; + mes "Why, do you want to quit magic and turn to thievery?"; + next; + mes "[Jojo]"; + mes "No. But it's always been my dream to conquer all the dungeons on the continent and become the greatest mage."; + next; + mes "[King]"; + mes "...That's a big dream, an impossible dream. Well, anyone can dream big."; + npctalk "Argh, come on!", "Wizard#ilgf02", bc_self; + sleep2 1000; + npctalk "Come on, what?", "", bc_self; + next; + mes "[Jojo]"; + mes "Even if it's not for my dream, a cloaking cape will come in handy in various situations."; + next; + mes "[King]"; + mes "I didn't know there was an aspiring thief among us. Huh."; + next; + mes "[Jojo]"; + mes "I said that's not what I want. Adventurer, are you busy?"; + next; + mes "[King]"; + mes "What, you're going to ask him? Do it yourself!"; + next; + mes "[Jojo]"; + mes "I have other things to do."; + next; + mes "[King]"; + mes "Like what? Eating, sleeping, and pooping?"; + next; + mes "[Jojo]"; + mes "Oh, come on! You know I've been busy studying things!"; + next; + mes "[King]"; + mes "You mean, studying me and Dracula."; + next; + mes "[Jojo]"; + mes "...How did you...?"; + next; + mes "[King]"; + mes "I've known that from the beginning. Your face is so transparent, you can't hide anything. I just didn't say anything because I found it funny that you nervously kept glancing at us."; + next; + mes "[Jojo]"; + mes "...Oh. Then can I ask you questions?"; + npctalk "No.", "", bc_self; + sleep2 1000; + npctalk "Why not?!", "Wizard#ilgf02", bc_self; + next; + mes "[King]"; + mes "Adventurer, are you going to get the bat hair for him? Good, that means you'll take care of those Matte Drainliars. Their flapping their wings keep me awake at night."; + next; + mes "[Jojo]"; + mes "Why can't you do it yourself? All you have to do is just flick your finger."; + next; + mes "[King]"; + mes "I can flick my finger at you if you want."; + next; + mes "[Jojo]"; + mes "Adventurer, please bring me the bat hair. King, I mean, Mr. King, how much bat hair do I need?"; + next; + mes "[King]"; + mes "That depends on what kind of cape you want. Just know that it's tough to make stuff with hair."; + next; + mes "[Jojo]"; + mes "Um, okay, then please bring me ^0000cd20 Short Bat Hairs^000000 for starters."; + next; + mes "[King]"; + mes "While you're at it, hunt the ^0000cdMatte Drainliars^000000 around us. There are at least ^0000cd10^000000."; + next; + mes "[Jojo]"; + mes "Happy hunting, Adventurer!"; + setquest 14675;// Noisy Neighbors + npctalk "Ah, Adventurer! Wait!", "Wizard#ilgf02", bc_self; + close; + case 0: + case 1: + break; + case 2: + if (countitem(25263) < 20) + break; + mes "[King]"; + mes "You came back quickly. I hope you didn't forget anything."; + next; + mes "[King]"; + mes "Wizard! The adventurer has brought the hair."; + next; + mes "[Jojo]"; + mes "What am I supposed to do now?"; + next; + mes "[King]"; + mes "That's for you to figure out. I'm not a cape maker, am I? But I know you would need more than that."; + next; + mes "[Jojo]"; + mes "Um... Adventurer?"; + next; + mes "[King]"; + mes "He just came back from hunting. You should let him rest, at least for the rest of the day."; + next; + mes "[King]"; + mes "Adventurer, come back tomorrow and hunt more Matte Drainliars for me, will you? It's so quiet without them."; + next; + mes "[Jojo]"; + mes "Th-then see you tomorrow, Adventurer..."; + delitem 25263,20;// Short_Bat_Fur + erasequest 14675;// Noisy Neighbors + setquest 14676;// Break Time + getexp 500000,500000; + getitem 25271,1;// Illusion Stone + close; + } + mes "[King]"; + mes "You came back quickly. I hope you didn't forget anything."; + next; + mes "[King]"; + mes "Look what we've got here. Did you forget what I asked? I told you to ^0000cdhunt 10 Matte Drainliars and bring 20 Short Bat Hairs^000000."; + next; + mes "[King]"; + mes "Go get it done."; + close; + +OnInit: + cloakonnpc(); + + .@main_completed$ = "isbegin_quest(14666) == 2"; + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14676,PLAYTIME) == -1 && checkquest(14675,HUNTING) == -1") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14675,HUNTING) == 2 && countitem(25263) > 19") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14676,PLAYTIME) == 2") ); + end; +} + +gef_d01_i,191,96,3 script Wizard#ilgf02 4_M_JOB_WIZARD,5,5,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "[Jojo]"; + mes "Are you sure you can carry all that stuff? Why don't you lighten your bag?"; + close; + } + if (ill_vampire < 10) { + mes "[Jojo]"; + mes "Aww, my wounds are fully healed, but I'm still in pain."; + close; + } + if (ill_vampire == 10) { + mes "[Jojo]"; + mes "How's Mojo doing? Heh, she's so curious, I feel sorry for Brother Grimm for having to deal with her."; + next; + mes "[Jojo]"; + mes "I can't leave here just yet. There are still many things in this place I want to know about."; + close; + } + if (ill_vampire == 11) { + mes "[Jojo]"; + mes "King has smelled blood. Even though that's how he found me when I was bleeding to death, it still scares me that he can do that."; + close; + } + if (ill_vampire == 12 || ill_vampire == 13) { + mes "[Jojo]"; + mes "A fight has broken out somewhere over there. Don't you want to go check?"; + close2; + viewpoint 1,85,131,1,0x00FF00; + end; + } + if (ill_vampire == 14 || ill_vampire == 15) { + mes "[Jojo]"; + mes "I'm going to stay here for a while. It'll take for a while before Dracula fully regains his energy, and personally, there are many things that I want to know about these people."; + next; + mes "[Jojo]"; + mes "Please let Nun Gem and Mojo know."; + close; + } + // if (ill_vampire == 16) { + switch( checkquest(14678,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Jojo]"; + mes "Adventurer, see this luminous glow over here? It's from the shining spores you brought to me."; + next; + mes "[Jojo]"; + mes "I feel as if I traveled back in time, studying by this dim light."; + next; + mes "[Jojo]"; + mes "I still have enough light left in these shining spores. Please come back after dawn."; + close; + case 2: + mes "[Jojo]"; + mes "Adventurer! You are the light of my life!"; + next; + mes "[King]"; + mes "You're scaring him."; + next; + mes "[Jojo]"; + mes "Could you get me shining spores again today?"; + next; + mes "[Jojo]"; + mes "Please bring me ^0000cd10 Shining Spores^000000 from Neon Mushrooms and ^0000cd10 Clusters of Nightmares^000000 from Sweet Nightmares. Thank you."; + erasequest 14678;// Time to Study + setquest 14677;// Studying in Dim Light + close; + } + switch( isbegin_quest(14677) ) { + case 0: + mes "[Jojo]"; + mes "Adventurer, wait!"; + next; + mes "[King]"; + mes "You misspelled that."; + next; + mes "[Jojo]"; + mes "Where? Oh, I did it again."; + next; + mes "[King]"; + mes "Tsk, tsk. I don't know how you've become a wizard when you can't even spell correctly."; + next; + mes "[Jojo]"; + mes "This is only because it's too dark to see. And stop peeking at what I'm doing!"; + next; + mes "[King]"; + mes "It's not like you're writing something important."; + next; + select("You two get along as well as I remember."); + mes "[King]"; + mes "What are you doing here? Don't you have things to do?"; + next; + if (select( "Jojo wanted to see me.", "Actually, I'm busy.") == 2) { + mes "[Jojo]"; + mes "Are you? I was going to ask you a favor, but I can wait."; + next; + mes "[King]"; + mes "Then you'd better go attend to your business."; + close; + } + mes "[King]"; + mes "Why?"; + next; + mes "[Jojo]"; + mes "Since we're underground, it's too dark for me to write and read. I have a lot of information that I want to catalog, but I keep misspelling words because I can't see them clearly."; + next; + mes "[King]"; + mes "You should be able to do that with your eyes closed. You're a wizard. Didn't you learn how to summon light? But of course, if you use magic in front of me, I'll burn you to ashes."; + npctalk "I... I'm still a wizard!", "Wizard#ilgf02", bc_self; + sleep2 500; + npctalk "What? I can't hear you.", "King#ilgf01", bc_self; + next; + mes "[Jojo]"; + mes "I completed my guild's official wizard training program. I'm strong enough to have a contest with you!"; + next; + mes "[King]"; + mes "Oh, really? Good for you!"; + next; + mes "[King]"; + mes "Be honest, though. Did you really study hard? Did you attend every class, study all night, and practice hard? You'd better tell me the truth."; + next; + mes "[King]"; + mes "Can you honestly say that you tried to push past your limits?"; + next; + mes "[Jojo]"; + mes "..."; + next; + mes "[King]"; + mes "No, you didn't. That's why you had your butt handed to you by those mushrooms."; + next; + mes "[Jojo]"; + mes "I said they were zombies, not mushrooms!"; + next; + mes "[King]"; + mes "Zombies and mushrooms. Same difference to me."; + next; + mes "[King]"; + mes "You're not good enough to earn your keep. I can't believe your guild actually invested in you."; + npctalk "I've been earning my keep just fine.", "", bc_self; + sleep2 500; + npctalk "Yeah, right.", "King#ilgf01", bc_self; + next; + mes "[Jojo]"; + mes "Then what about you? I know you can transform. But what else can you do?"; + npctalk "Do you really want me to show you? Right now?", "King#ilgf01", bc_self; + sleep2 1000; + npctalk "...No.", "", bc_self; + next; + mes "[King]"; + mes "Maybe you keep questioning me because you can't trust me. How about I teach you to be the greatest mage among humans? Would you trust me, then?"; + next; + mes "[Jojo]"; + mes "Erm, you want to teach me?"; + next; + mes "[King]"; + mes "Sure."; + next; + mes "[Jojo]"; + mes "Why?"; + next; + mes "[King]"; + mes "I've studied a lot. Why do you think I have?"; + next; + mes "[Jojo]"; + mes "To become smarter?"; + next; + mes "[King]"; + mes "No. Because I was bored to death!"; + next; + mes "[Jojo]"; + mes "You have all the time in the world. I'm envious of that."; + next; + mes "[King]"; + mes "If you don't want me to teach you, that's fine by me."; + next; + mes "[Jojo]"; + mes "No, no! I'd love to! But, erm, you're not going to ask for my blood in return, are you?"; + next; + mes "[King]"; + mes "*Snort* If I drink anything because I'm hungry, I wouldn't be any better than those Matte Drainliars now, would I?"; + npctalk "Did you just compare me to zombies?", "", bc_self; + sleep2 500; + npctalk "So you're not as stupid as I thought.", "King#ilgf01", bc_self; + next; + select("Jojo?"); + mes "[Jojo]"; + mes "Oh, I'm sorry, I didn't mean to keep you standing there. Could you get me some spores from Neon Mushrooms? I need some light to see what I'm writing."; + npctalk "Why those?", "King#ilgf01", bc_self; + next; + mes "[Jojo]"; + mes "Oh, you know how those spores glow. I want to use them to illuminate this place."; + next; + mes "[King]"; + mes "Well, then go get them yourself. Don't dump things on this adventurer."; + next; + mes "[Jojo]"; + mes "Oh, well... I'm... Neon Mushrooms are... You know."; + npctalk "You said you were attacked by zombies.", "King#ilgf01", bc_self; + sleep2 500; + npctalk "I was.", "", bc_self; + next; + mes "[King]"; + mes "Where are you going to put the spores, anyway?"; + next; + mes "[Jojo]"; + mes "I have an empty bottle? oh, I forgot I lost my bag when I was attacked."; + next; + mes "[Jojo]"; + mes "Adventurer, could you get me some Clusters of Nightmares as well? I can mix them with the spores to make a paste and apply it on the wall."; + next; + mes "[King]"; + mes "What? That's so tacky."; + next; + mes "[Jojo]"; + mes "But effective nonetheless. You didn't know you could use them like that, did you?"; + next; + mes "[King]"; + mes "Because I didn't need to."; + next; + mes "[Jojo]"; + mes "Then, Adventurer, please bring me ^0000cd10 Shining Spores^000000 from Neon Mushrooms and ^0000cd10 Clusters of Nightmares^000000 from Sweet Nightmares."; + setquest 14677;// Studying in Dim Light + close; + case 1: + case 2: + mes "[Jojo]"; + mes "Adventurer, welcome back!"; + next; + if (countitem(25264) < 10 || countitem(25265) < 10) { + mes "[King]"; + mes "I can tell that's not enough, just by looking at it."; + next; + mes "[Jojo]"; + mes "Oh, you're right. You must have forgotten what I asked."; + next; + mes "[Jojo]"; + mes "Please bring me ^0000cd10 Shining Spores^000000 from Neon Mushrooms and ^0000cd10 Clusters of Nightmares^000000 from Sweet Nightmares. Thank you."; + close; + } + mes "[King]"; + mes "I can tell he brought everything you asked. Come on, make a paste and apply it to the wall already."; + next; + mes "[Jojo]"; + mes "Adventurer, thank you for helping me study. These glowing spores don't last long. Could you come back tomorrow and get me more of them?"; + delitem 25264,10;// NightmareOfLump + delitem 25265,10;// Shining_Spore + erasequest 14677;// Studying in Dim Light + setquest 14678;// Time to Study + getexp 500000,500000; + getitem 25271,1;// Illusion Stone + close; + } + end; + +OnTouch: + if (ill_vampire == 16 && isbegin_quest(14677) == 0) + npctalk "Ah, Adventurer! Wait!", "Wizard#ilgf02", bc_self; + if (ill_vampire > 13) { + cloakoffnpc( "King#ilgf01", getcharid(0) ); + cloakoffnpc( "Wizard#ilgf02", getcharid(0) ); + cloakoffnpc( "Dracula#ilgf02", getcharid(0) ); + } + end; + +OnInit: + cloakonnpc(); + + .@main_completed$ = "isbegin_quest(14666) == 2"; + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14678,PLAYTIME) == -1 && isbegin_quest(14677) == 0") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && isbegin_quest(14677) == 1 && countitem(25264) > 9 && countitem(25265) > 9") ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, (.@main_completed$ + " && checkquest(14678,PLAYTIME) == 2") ); + end; +} + +gef_d01_i,189,98,3 script Dracula#ilgf02 4_DRACULA,{ + if (ill_vampire < 10) { + mes "[Dracula]"; + mes "What brings you? I suggest you stay away out of this place."; + close; + } + if (ill_vampire == 10) { + setpcblock PCBLOCK_NPC, true; + npctalk "Let's drink from this one.", "King#ilgf01", bc_self; + sleep2 1500; + emotion ET_SWEAT, getnpcid(0, "Wizard#ilgf02"); + npctalk "Oh, no. That's?", "Wizard#ilgf02", bc_self; + sleep2 1500; + npctalk "King, I told you, we are not drinking from people anymore. And that's not a polite thing to say. I apologize on his behalf.", "", bc_self; + sleep2 2000; + npctalk "I-it's okay.", "Wizard#ilgf02", bc_self; + sleep2 1500; + npctalk "Humans die eventually. Is it so bad to die a little bit earlier? Come on, let's have a drink. This one doesn't smell good, though.", "King#ilgf01", bc_self; + sleep2 2000; + npctalk "Do you mind if I get rid of that bat?", "Wizard#ilgf02", bc_self; + sleep2 1500; + npctalk "No one hurts anyone in front of me.", "", bc_self; + emotion ET_FRET, getnpcid(0, "King#ilgf01"); + npctalk "Human, are you blind? I'm not a bat.", "King#ilgf01", bc_self; + sleep2 1500; + npctalk "Then what are you?", "Wizard#ilgf02", bc_self; + specialeffect EF_PORTAL4, AREA, "King#ilgf01"; + specialeffect EF_M01, AREA, "King#ilgf01"; + cloakoffnpc( "King#ilgf01", getcharid(0) ); + sleep2 1500; + npctalk "Now, what do I look like?", "King#ilgf01", bc_self; + sleep2 1500; + emotion ET_HUK, getnpcid(0, "Wizard#ilgf02"); + npctalk "*Gasp* What the hell are you?!", "Wizard#ilgf02", bc_self; + sleep2 1500; + npctalk "Why, is this too scary? Then how about this?", "King#ilgf01", bc_self; + specialeffect EF_PORTAL4, AREA, "King#ilgf01"; + specialeffect EF_M01, AREA, "King#ilgf01"; + cloakoffnpc( "King#ilgf01", getcharid(0) ); + sleep2 1500; + emotion ET_CRY, getnpcid(0, "Wizard#ilgf02"); + npctalk "Y-y-you're me? D-d-d-doppelganger! A-am I going to die?!", "Wizard#ilgf02", bc_self; + sleep2 1500; + npctalk "You're afraid of yourself. Why?", "King#ilgf01", bc_self; + sleep2 2000; + npctalk "You love yourself so much that you don't accept anyone that doesn't look like you. But when you see someone that looks exactly like you, you can't tolerate it. Why?", "King#ilgf01", bc_self; + sleep2 2000; + npctalk "Seeing other humans and seeing a clone of myself are two different things!", "Wizard#ilgf02", bc_self; + sleep2 1500; + npctalk "King, that's enough. Stop torturing him.", "", bc_self; + sleep2 2000; + emotion ET_OHNO, getnpcid(0, "King#ilgf01"); + npctalk "Tsk, tsk. You're too softhearted when it comes to humans.", "King#ilgf01", bc_self; + specialeffect EF_PORTAL4, AREA, "King#ilgf01"; + specialeffect EF_M01, AREA, "King#ilgf01"; + cloakoffnpc( "King#ilgf01", getcharid(0) ); + sleep2 1000; + npctalk "Um... I can move fine now. Can I go?", "Wizard#ilgf02", bc_self; + sleep2 500; + npctalk "Yes, you can leave.", "", bc_self; + npctalk "No!", "King#ilgf01", bc_self; + sleep2 500; + npctalk "Why not?", "", bc_self; + sleep2 1500; + npctalk "He's a human, and humans move in groups. He's going to bring his friends to attack us. Did you forget that already?", "King#ilgf01", bc_self; + sleep2 2000; + npctalk "No, I'm not going to do that. I never forget favors. You've saved me. I promise I won't hurt you. Please believe me.", "Wizard#ilgf02", bc_self; + sleep2 2000; + npctalk "Humans can't be trusted, ever.", "King#ilgf01", bc_self; + sleep2 2000; + npctalk "I agree that he might bring his friends, but not all humans are untrustworthy.", "", bc_self; + npctalk "Whose side are you on? Me or him?", "King#ilgf01", bc_self; + setpcblock PCBLOCK_NPC, false; + + mes "[" + strcharinfo(0) + "]"; + mes "Typical wizard... Wait, could that be Jojo??"; + unittalk getcharid(3), "" + strcharinfo(0) + " : Typical wizard... Wait, could that be Jojo??", bc_self; + next; + select("Jojo? Are you Jojo?"); + mes "[Jojo]"; + mes "Wh-who are you?"; + npctalk "See, I told you! One of his friends already showed up! This is why I don't trust humans!", "King#ilgf01", bc_self; + npctalk "A human?", "", bc_self; + next; + mes "[Jojo]"; + mes "No, no! He's not my friend! I've never seen him before in my life, I swear!"; + next; + mes "[King]"; + mes "He could be sent by your friends. Human, answer me!"; + next; + select("Jojo's colleagues are looking for him."); + mes "[Stranger]"; + mes "I see. We found him injured and unconscious, so we took him here and treated him. He's well enough to leave now."; + npctalk "No! They're going to put us in danger!", "King#ilgf01", bc_self; + next; + select("You saved Jojo."); + mes "[" + strcharinfo(0) + "]"; + mes "Let me thank you on behalf of his colleagues. May I ask your name?"; + next; + mes "[King]"; + mes "You're here, and yet you don't know who he is. He's Dracula. Didn't you come to challenge him to a battle?"; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Dracula? You mean the Dracula?"; + next; + mes "[Dracula]"; + mes "You have a familiar smell about you, Adventurer. I've yearned for this smell for a long time."; + npctalk "Are you saying he smells delicious? Can I drink from him?", "King#ilgf01", bc_self; + next; + mes "[Dracula]"; + mes "I mean he smells like a friend, Little One."; + npctalk "What friend? I thought I was the only friend you had.", "King#ilgf01", bc_self; + next; + select("I met Bomi before I came here."); + mes "[Dracula]"; + mes "...I see. How is she?"; + npctalk "What? Bomi?", "King#ilgf01", bc_self; + npctalk "You mean the owner of the notebook?", "Wizard#ilgf02", bc_self; + sleep2 500; + npctalk "Did she tell you anything about... me?", "", bc_self; + next; + mes "[King]"; + mes "Wow, so you've been hanging around here all this time because of that ungrateful girl. Is that it?"; + npctalk "She's not ungrateful. She never wanted what I gave her.", "", bc_self; + next; + mes "[Jojo]"; + mes "What did you give her?"; + next; + mes "[King]"; + mes "Eternal life."; + next; + mes "[Jojo]"; + mes "Eternal life...!"; + next; + mes "[King]"; + mes "That's the normal reaction from humans! She's ungrateful!"; + npctalk "Why, do you want it? I can give it to you.", "King#ilgf01", bc_self; + next; + select("She said Dracula betrayed her."); + emotion ET_FRET, getnpcid(0, "King#ilgf01"); + mes "[King]"; + mes "Betrayed her? Hah? Where is she? He should've just let her die!"; + next; + mes "[Dracula]"; + mes "She still hasn't forgiven me. But I did what I had to do."; + next; + select("There must be some misunderstanding."); + mes "[Dracula]"; + mes "I needed humans to survive. I hid among them and hunted them whenever I needed."; + next; + mes "[Dracula]"; + mes "One day, people from the Church found me. They were bent on killing me in the name of justice."; + npctalk "They were persistent.", "King#ilgf01", bc_self; + next; + mes "[Dracula]"; + mes "I was gravely injured by them, and somehow I ended up in this place full of death and mysterious energy."; + next; + mes "[Dracula]"; + mes "I thought I was going to die here, but then Lady Luck finally turned her gaze upon me."; + npctalk "Somebody please shut him up. I hate this story.", "King#ilgf01", bc_self; + next; + mes "[Dracula]"; + mes "Bomi saved me. She fed me her blood, so I could regain my strength. I'm not a living being, but that day, she gave me new life."; + next; + mes "[Jojo]"; + mes "Why didn't you leave afterward?"; + next; + mes "[Dracula]"; + mes "Even though Bomi was a strong woman, her body was failing her. It pained me to see her waste away day by day. I offered her eternal life, and she rejected it."; + next; + mes "[Dracula]"; + mes "I stayed because I wanted to be there for her when she died as a human."; + next; + mes "[Dracula]"; + mes "For the first time in my long existence, I really thought about humans, and what made them who they were. They also have this impulse to help others, expecting nothing in return."; + next; + mes "[Dracula]"; + mes "I'd learned about them through Bomi. What I'd learned didn't make sense, and I didn't really understand it."; + next; + mes "[Dracula]"; + mes "But it was different from what I previously thought of humans. I was starting to understand them."; + npctalk "Why? What good would understanding them do you?", "King#ilgf01", bc_self; + next; + mes "[Jojo]"; + mes "Then why did you turn her against her wish?"; + next; + mes "[Dracula]"; + mes "There was an accident. The people who almost killed me found me again."; + npctalk "The people from the Church?", "Wizard#ilgf02", bc_self; + next; + mes "[Dracula]"; + mes "Bad luck follows me wherever I go. Bomi even made me a lucky charm, but it didn't work."; + next; + mes "[Dracula]"; + mes "By then, I'd fully regained my strength, and those humans weren't a match for me. But Bomi... she didn't want anyone to get hurt."; + next; + mes "[Dracula]"; + mes "Long story short, she got caught in the crossfire. She was dying and I panicked."; + next; + mes "[Dracula]"; + mes "I wasn't ready to let her go. Before I had time to think about what I was doing, I turned her. "; + next; + mes "[Jojo]"; + mes "You did it because you didn't want to lose her. I would've done the same in that situation."; + npctalk "Why?", "King#ilgf01", bc_self; + sleep2 1000; + npctalk "That's what people do, to protect those they love.", "Wizard#ilgf02", bc_self; + next; + mes "[King]"; + mes "But that stubborn girl refuses to acknowledge that!"; + next; + mes "[King]"; + mes "I don't understand her logic. How could she possibly want to die as a human than live as a vampire? How could she think the gift of eternal life is a betrayal?"; + next; + mes "[Jojo]"; + mes "I think I know. People tend to take things for granted. If I could live forever, I think I'd lose all my motivation. I mean, you have nothing but time."; + next; + mes "[Jojo]"; + mes "I think you guys need to talk it out with each other. Have you tried to talk to her?"; + next; + mes "[Dracula]"; + mes "When she was brought back to life, she was so shocked and angry that she wouldn't listen to me."; + next; + mes "[Dracula]"; + mes "I did what I did to save her, and I understand she resents me for it."; + npctalk "You need to stop hanging with humans. You sound like one of them now.", "King#ilgf01", bc_self; + next; + mes "[King]"; + mes "Dracula, what's that human to you? Why do you insist on staying in a place like this"; + npctalk "when she won't even talk to you?", "King#ilgf01", bc_self; + next; + mes "[Dracula]"; + mes "I'm not?"; + next; + emotion ET_SURPRISE, getnpcid(0, "King#ilgf01"); + mes "[King]"; + mes "Everyone, hush. I smell something."; + erasequest 14661;// Jojo Is the Mage's Name 02 + setquest 14662;// You're Scaring Me + ill_vampire = 11; + close; + } + if (ill_vampire == 11) { + mes "[Dracula]"; + mes "King? What is it?"; + close; + } + if (ill_vampire == 12 || ill_vampire == 13) { + mes "[Dracula]"; + mes "A fight? Oh no, we'd better hurry!"; + close2; + viewpoint 1,85,131,1,0x00FF00; + end; + } + if (ill_vampire == 14 || ill_vampire == 15) { + mes "[Dracula]"; + mes "I've decided to wait for her. I could use some rest, anyway."; + close; + } + mes "[Dracula]"; + mes "The bat blood she drinks sometimes causes her to go out of her mind. She calms down after a while, but if the people from the Church see her in that vulnerable state, they will try to kill her."; + close; +OnInit: + cloakonnpc(); + end; +} diff --git a/npc/re/scripts_monsters.conf b/npc/re/scripts_monsters.conf index 50b2726da2..31c6b190ec 100644 --- a/npc/re/scripts_monsters.conf +++ b/npc/re/scripts_monsters.conf @@ -24,6 +24,7 @@ npc: npc/re/mobs/dungeons/dew_dun.txt npc: npc/re/mobs/dungeons/dic_dun.txt npc: npc/re/mobs/dungeons/ecl_tdun.txt npc: npc/re/mobs/dungeons/ein_dun.txt +npc: npc/re/mobs/dungeons/gef_d01_i.txt npc: npc/re/mobs/dungeons/gef_dun.txt npc: npc/re/mobs/dungeons/gefenia.txt npc: npc/re/mobs/dungeons/glastheim.txt