浏览代码

Initial release of Illusion of Twins (#7524)

Thanks to @Lemongrass3110 !
Atemo 1 年之前
父节点
当前提交
e304472638

+ 455 - 20
db/re/mob_db.yml

@@ -104791,26 +104791,461 @@ Body:
 #    AegisName: E_SWEETS_DROPS
 #  - Id: 21385
 #    AegisName: ANDRE_LARVA
-#  - Id: 21386
-#    AegisName: ILL_ANDRE
-#  - Id: 21387
-#    AegisName: ILL_SOLDIER_ANDR
-#  - Id: 21388
-#    AegisName: ILL_ANDRE_LARVA
-#  - Id: 21389
-#    AegisName: ILL_DENIRO
-#  - Id: 21390
-#    AegisName: ILL_PIERE
-#  - Id: 21391
-#    AegisName: ILL_ANT_EGG
-#  - Id: 21392
-#    AegisName: ILL_GIEARTH
-#  - Id: 21393
-#    AegisName: ILL_FARMILIAR
-#  - Id: 21394
-#    AegisName: ILL_VITATA
-#  - Id: 21395
-#    AegisName: ILL_MAYA
+  - Id: 21386
+    AegisName: ILL_ANDRE
+    Name: Diligent Andre
+    Level: 167
+    Hp: 839882
+    BaseExp: 80476
+    JobExp: 61811
+    Attack: 4653
+    Attack2: 569
+    Defense: 168
+    MagicDefense: 22
+    Str: 111
+    Agi: 158
+    Vit: 91
+    Int: 70
+    Dex: 194
+    Luk: 70
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Insect
+    Element: Earth
+    ElementLevel: 3
+    WalkSpeed: 300
+    AttackDelay: 1288
+    AttackMotion: 288
+    DamageMotion: 384
+    Ai: 21
+    Drops:
+      - Item: Excalibur
+        Rate: 5
+      - Item: IL_Twins_Feeler
+        Rate: 150
+      - Item: IL_Twins_Leg
+        Rate: 150
+      - Item: Worm_Peelings
+        Rate: 4500
+      - Item: Sticky_Mucus
+        Rate: 1000
+      - Item: Opaque_Liquid
+        Rate: 2000
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Andre_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21387
+    AegisName: ILL_SOLDIER_ANDR
+    Name: Diligent Soldier Andre
+    Level: 169
+    Hp: 943547
+    BaseExp: 83348
+    JobExp: 62487
+    Attack: 5569
+    Attack2: 545
+    Defense: 201
+    MagicDefense: 30
+    Str: 198
+    Agi: 176
+    Vit: 98
+    Int: 88
+    Dex: 201
+    Luk: 101
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Medium
+    Race: Insect
+    Element: Earth
+    ElementLevel: 4
+    WalkSpeed: 350
+    AttackDelay: 1288
+    AttackMotion: 648
+    DamageMotion: 384
+    Ai: 21
+    Drops:
+      - Item: Doom_Slayer
+        Rate: 5
+      - Item: IL_Twins_Jaw
+        Rate: 100
+      - Item: IL_Twins_Leg
+        Rate: 200
+      - Item: IL_Twins_Feeler
+        Rate: 200
+      - Item: Worm_Peelings
+        Rate: 4500
+      - Item: Sticky_Mucus
+        Rate: 1000
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Andre_soldier_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21388
+    AegisName: ILL_ANDRE_LARVA
+    Name: Diligent Andre Larva
+    Level: 164
+    Hp: 819978
+    BaseExp: 64798
+    JobExp: 46871
+    Attack: 3984
+    Attack2: 308
+    Defense: 121
+    MagicDefense: 10
+    Str: 82
+    Agi: 66
+    Vit: 59
+    Int: 54
+    Dex: 75
+    Luk: 108
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Insect
+    Element: Earth
+    ElementLevel: 2
+    WalkSpeed: 200
+    AttackDelay: 1000
+    AttackMotion: 792
+    DamageMotion: 336
+    Ai: 21
+    Drops:
+      - Item: Sprint_Glove
+        Rate: 5
+      - Item: Guard
+        Rate: 7
+      - Item: Worm_Peelings
+        Rate: 4500
+      - Item: Sticky_Mucus
+        Rate: 1000
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Andre_larva_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21389
+    AegisName: ILL_DENIRO
+    Name: Diligent Deniro
+    Level: 167
+    Hp: 819978
+    BaseExp: 81114
+    JobExp: 61044
+    Attack: 4855
+    Attack2: 544
+    Defense: 170
+    MagicDefense: 19
+    Str: 136
+    Agi: 149
+    Vit: 92
+    Int: 89
+    Dex: 185
+    Luk: 88
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Insect
+    Element: Earth
+    ElementLevel: 3
+    WalkSpeed: 250
+    AttackDelay: 1288
+    AttackMotion: 288
+    DamageMotion: 576
+    Ai: 21
+    Drops:
+      - Item: Sprint_Mail
+        Rate: 5
+      - Item: IL_Twins_Feeler
+        Rate: 150
+      - Item: IL_Twins_Jaw
+        Rate: 50
+      - Item: Worm_Peelings
+        Rate: 4500
+      - Item: Sticky_Mucus
+        Rate: 1000
+      - Item: Opaque_Liquid
+        Rate: 2000
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Deniro_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21390
+    AegisName: ILL_PIERE
+    Name: Diligent Piere
+    Level: 167
+    Hp: 825541
+    BaseExp: 82688
+    JobExp: 60487
+    Attack: 5042
+    Attack2: 557
+    Defense: 178
+    MagicDefense: 18
+    Str: 190
+    Agi: 144
+    Vit: 86
+    Int: 63
+    Dex: 175
+    Luk: 90
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Insect
+    Element: Earth
+    ElementLevel: 3
+    WalkSpeed: 250
+    AttackDelay: 1288
+    AttackMotion: 288
+    DamageMotion: 576
+    Ai: 21
+    Drops:
+      - Item: Gelerdria
+        Rate: 5
+      - Item: IL_Twins_Jaw
+        Rate: 50
+      - Item: IL_Twins_Leg
+        Rate: 150
+      - Item: Worm_Peelings
+        Rate: 4500
+      - Item: Sticky_Mucus
+        Rate: 1000
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Piere_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21391
+    AegisName: ILL_ANT_EGG
+    Name: Mushy Ant Egg
+    Level: 164
+    Hp: 659810
+    BaseExp: 34992
+    JobExp: 23555
+    Defense: 100
+    MagicDefense: 9
+    Vit: 65
+    Luk: 200
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Formless
+    Element: Neutral
+    ElementLevel: 2
+    WalkSpeed: 1000
+    AttackDelay: 1001
+    AttackMotion: 1
+    DamageMotion: 1
+    Ai: 06
+    Drops:
+      - Item: Sprint_Shoes
+        Rate: 5
+      - Item: Siver_Guard
+        Rate: 5
+      - Item: Shell
+        Rate: 2000
+      - Item: Sticky_Mucus
+        Rate: 1000
+      - Item: Phracon
+        Rate: 500
+      - Item: Jellopy
+        Rate: 2500
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Ant_egg_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21392
+    AegisName: ILL_GIEARTH
+    Name: Gutsy Giearth
+    Level: 168
+    Hp: 864988
+    BaseExp: 81566
+    JobExp: 61655
+    Attack: 4955
+    Attack2: 560
+    Defense: 223
+    MagicDefense: 21
+    Str: 160
+    Agi: 97
+    Vit: 155
+    Int: 104
+    Dex: 94
+    Luk: 151
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Demon
+    Element: Dark
+    ElementLevel: 3
+    WalkSpeed: 250
+    AttackDelay: 1848
+    AttackMotion: 1296
+    DamageMotion: 432
+    Ai: 21
+    Drops:
+      - Item: Thorn_Staff
+        Rate: 5
+      - Item: IL_Twins_Hat
+        Rate: 50
+      - Item: IL_Twins_Shovel
+        Rate: 50
+      - Item: Coal
+        Rate: 200
+      - Item: Elder_Pixie's_Beard
+        Rate: 4000
+      - Item: Dry_Sand
+        Rate: 2000
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Giearth_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21393
+    AegisName: ILL_FARMILIAR
+    Name: Gutsy Familiar
+    Level: 166
+    Hp: 761002
+    BaseExp: 79844
+    JobExp: 60180
+    Attack: 4472
+    Attack2: 542
+    Defense: 144
+    MagicDefense: 10
+    Str: 90
+    Agi: 162
+    Vit: 70
+    Int: 115
+    Dex: 188
+    Luk: 55
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Brute
+    Element: Dark
+    ElementLevel: 2
+    WalkSpeed: 150
+    AttackDelay: 1276
+    AttackMotion: 576
+    DamageMotion: 384
+    Ai: 21
+    Drops:
+      - Item: Ancient_Dagger
+        Rate: 5
+      - Item: IL_Twins_Fang
+        Rate: 75
+      - Item: IL_Twins_Fur
+        Rate: 150
+      - Item: Tooth_Of_Bat
+        Rate: 5500
+      - Item: Red_Herb
+        Rate: 700
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Farmiliar_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21394
+    AegisName: ILL_VITATA
+    Name: Diligent Vitata
+    Level: 169
+    Hp: 879511
+    BaseExp: 83348
+    JobExp: 62487
+    Attack: 4566
+    Attack2: 2984
+    Defense: 168
+    MagicDefense: 166
+    Str: 177
+    Agi: 199
+    Vit: 144
+    Int: 142
+    Dex: 223
+    Luk: 56
+    AttackRange: 3
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Small
+    Race: Insect
+    Element: Poison
+    ElementLevel: 4
+    WalkSpeed: 300
+    AttackDelay: 1768
+    AttackMotion: 768
+    DamageMotion: 384
+    Ai: 21
+    Drops:
+      - Item: Sprint_Ring
+        Rate: 5
+      - Item: IL_Twins_Acid
+        Rate: 75
+      - Item: IL_Twins_Jaw
+        Rate: 75
+      - Item: Worm_Peelings
+        Rate: 4500
+      - Item: Sticky_Mucus
+        Rate: 1000
+      - Item: Scell
+        Rate: 300
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: ILL_Vitata_Card
+        Rate: 1
+        StealProtected: true
+  - Id: 21395
+    AegisName: ILL_MAYA
+    Name: Silent Maya
+    Level: 175
+    Hp: 24512365
+    BaseExp: 4401752
+    JobExp: 3601314
+    Attack: 7844
+    Attack2: 3827
+    Defense: 998
+    MagicDefense: 184
+    Str: 251
+    Agi: 206
+    Vit: 238
+    Int: 322
+    Dex: 244
+    Luk: 248
+    AttackRange: 1
+    SkillRange: 10
+    ChaseRange: 12
+    Size: Large
+    Race: Insect
+    Element: Neutral
+    ElementLevel: 4
+    WalkSpeed: 100
+    AttackDelay: 864
+    AttackMotion: 1000
+    DamageMotion: 480
+    Ai: 21
+    Drops:
+      - Item: Dea_Staff
+        Rate: 300
+      - Item: IL_Twins_Acid
+        Rate: 10000
+      - Item: IL_Twins_Crown
+        Rate: 3000
+      - Item: IL_Twins_Leg
+        Rate: 10000
+      - Item: Shadowdecon
+        Rate: 100
+      - Item: Shell_Of_Cognition
+        Rate: 2000
+      - Item: Mother's_Nightmare
+        Rate: 10
+      - Item: ILL_Maya_Card
+        Rate: 1
+        StealProtected: true
 #  - Id: 21396
 #    AegisName: SEASON_MOB_016
 #  - Id: 21397

+ 101 - 0
db/re/mob_skill_db.txt

@@ -14388,3 +14388,104 @@
 21085,S_DUMMY_100_TELEKINESIS@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
 21086,S_DUMMY_100_UNDEAD2@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
 21086,S_DUMMY_100_UNDEAD2@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
+
+// Illusion of Twins
+21386,ILL_ANDRE@NPC_COMBOATTACK,attack,171,10,3000,0,5000,no,target,always,0,,,,,,,
+21386,ILL_ANDRE@NPC_FIREATTACK,attack,186,5,2000,500,5000,no,target,always,0,,,,,,6,
+21386,ILL_ANDRE@NPC_FIREATTACK,chase,186,5,2000,500,5000,no,target,always,0,,,,,,6,
+21386,ILL_ANDRE@NPC_BLOODDRAIN,attack,199,1,500,0,2000,no,target,always,0,,,,,,29,
+21386,ILL_ANDRE@NPC_GUIDEDATTACK,attack,172,3,1000,300,10000,no,target,always,0,,,,,,,
+21386,ILL_ANDRE@NPC_GUIDEDATTACK,chase,172,3,1000,300,10000,no,target,always,0,,,,,,,
+21386,ILL_ANDRE@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21386,ILL_ANDRE@TF_SPRINKLESAND,attack,149,1,500,0,5000,yes,target,always,0,,,,,,,
+21387,ILL_SOLDIER_ANDR@AL_PNEUMA,idle,25,1,5000,0,10000,yes,target,longrangeattacked,0,,,,,,22,
+21387,ILL_SOLDIER_ANDR@NPC_POWERUP,attack,349,3,3000,500,10000,no,self,myhpltmaxrate,50,,,,,,,
+21387,ILL_SOLDIER_ANDR@NPC_PIERCINGATT,attack,158,9,3000,0,20000,no,target,always,0,,,,,,,
+21387,ILL_SOLDIER_ANDR@NPC_PIERCINGATT,chase,158,9,5000,0,2500,no,target,always,0,,,,,,,
+21387,ILL_SOLDIER_ANDR@AL_HEAL,attack,28,11,5000,500,5000,no,friend,myhpltmaxrate,30,,,,,,3,
+21387,ILL_SOLDIER_ANDR@AL_HEAL,idle,28,11,10000,500,5000,yes,friend,myhpltmaxrate,30,,,,,,3,
+21387,ILL_SOLDIER_ANDR@AL_HEAL,chase,28,11,10000,500,5000,no,friend,myhpltmaxrate,30,,,,,,3,
+21387,ILL_SOLDIER_ANDR@AL_DECAGI,attack,30,48,500,1000,5000,no,target,always,0,,,,,,29,
+21387,ILL_SOLDIER_ANDR@AL_DECAGI,chase,30,1,2000,1000,20000,no,target,always,0,,,,,,29,
+21387,ILL_SOLDIER_ANDR@SM_BASH,attack,5,10,500,0,5000,no,target,always,0,,,,,,,
+21387,ILL_SOLDIER_ANDR@NPC_CRITICALWOUND,attack,673,5,50,0,10000,no,target,always,0,,,,,,,
+21387,ILL_SOLDIER_ANDR@TF_SPRINKLESAND,attack,149,1,500,0,5000,yes,target,always,0,,,,,,,
+21387,ILL_SOLDIER_ANDR@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21388,ILL_ANDRE_LARVA@AS_VENOMDUST,attack,140,1,500,1500,5000,no,target,always,0,,,,,,,
+21388,ILL_ANDRE_LARVA@NPC_POISON,attack,176,3,500,800,5000,no,target,always,0,,,,,,,
+21388,ILL_ANDRE_LARVA@NPC_POISONATTACK,attack,188,2,500,500,5000,no,target,always,0,,,,,,,
+21388,ILL_ANDRE_LARVA@NPC_COMBOATTACK,attack,171,1,3000,0,5000,no,target,always,0,,,,,,,
+21388,ILL_ANDRE_LARVA@NPC_SELFDESTRUCTION,attack,173,1,10000,2000,5000,no,self,myhpltmaxrate,20,,,,,,,
+21388,ILL_ANDRE_LARVA@NPC_CLOUD_KILL,attack,739,5,2000,500,30000,no,target,always,0,,,,,,,
+21388,ILL_ANDRE_LARVA@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21389,ILL_DENIRO@NPC_COMBOATTACK,attack,171,10,3000,0,5000,no,target,always,0,,,,,,,
+21389,ILL_DENIRO@NPC_GROUNDATTACK,attack,185,5,2000,500,5000,no,target,always,0,,,,,,6,
+21389,ILL_DENIRO@NPC_GROUNDATTACK,chase,185,5,2000,500,5000,no,target,always,0,,,,,,6,
+21389,ILL_DENIRO@NPC_BLOODDRAIN,attack,199,1,500,0,2000,no,target,always,0,,,,,,29,
+21389,ILL_DENIRO@NPC_GUIDEDATTACK,attack,172,3,1000,300,10000,no,target,always,0,,,,,,,
+21389,ILL_DENIRO@NPC_GUIDEDATTACK,chase,172,3,1000,300,10000,no,target,always,0,,,,,,,
+21389,ILL_DENIRO@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21389,ILL_DENIRO@TF_SPRINKLESAND,attack,149,1,500,0,5000,yes,target,always,0,,,,,,,
+21390,ILL_PIERE@NPC_COMBOATTACK,attack,171,10,3000,0,5000,no,target,always,0,,,,,,,
+21390,ILL_PIERE@NPC_WATERATTACK,attack,184,5,2000,500,5000,no,target,always,0,,,,,,6,
+21390,ILL_PIERE@NPC_WATERATTACK,chase,184,5,2000,500,5000,no,target,always,0,,,,,,6,
+21390,ILL_PIERE@NPC_BLOODDRAIN,attack,199,1,500,0,2000,no,target,always,0,,,,,,29,
+21390,ILL_PIERE@NPC_GUIDEDATTACK,attack,172,3,1000,300,10000,no,target,always,0,,,,,,,
+21390,ILL_PIERE@NPC_GUIDEDATTACK,chase,172,3,1000,300,10000,no,target,always,0,,,,,,,
+21390,ILL_PIERE@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21390,ILL_PIERE@TF_SPRINKLESAND,attack,149,1,500,0,5000,yes,target,always,0,,,,,,,
+21391,ILL_ANT_EGG@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,,,,,19,
+21392,ILL_GIEARTH@HT_SANDMAN,idle,119,5,500,0,300000,yes,target,always,0,,,,,,29,
+21392,ILL_GIEARTH@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,,,,,,8,
+21392,ILL_GIEARTH@NPC_GROUNDATTACK,attack,185,5,2000,0,5000,yes,target,always,0,,,,,,,
+21392,ILL_GIEARTH@TF_SPRINKLESAND,attack,149,1,500,0,5000,yes,target,always,0,,,,,,6,
+21392,ILL_GIEARTH@RG_INTIMIDATE,attack,219,5,2000,0,60000,no,target,always,0,,,,,,,
+21392,ILL_GIEARTH@BS_MAXIMIZE,attack,114,5,500,1000,5000,no,self,always,0,,,,,,,
+21392,ILL_GIEARTH@BS_MAXIMIZE,chase,114,5,500,1000,5000,no,self,always,0,,,,,,,
+21392,ILL_GIEARTH@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21393,ILL_FARMILIAR@NPC_BLINDATTACK,attack,177,1,500,0,5000,no,target,always,0,,,,,,,
+21393,ILL_FARMILIAR@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,no,target,always,0,,,,,,,
+21393,ILL_FARMILIAR@NPC_BLOODDRAIN,attack,199,1,500,0,5000,no,target,always,0,,,,,,2,
+21393,ILL_FARMILIAR@NPC_WINDATTACK,attack,187,10,2000,0,5000,no,target,always,0,,,,,,,
+21393,ILL_FARMILIAR@NPC_CRITICALSLASH,attack,170,1,500,0,5000,no,target,always,0,,,,,,,
+21393,ILL_FARMILIAR@MG_LIGHTNINGBOLT,attack,20,10,3000,0,5000,no,target,always,0,,,,,,,
+21393,ILL_FARMILIAR@NPC_GUIDEDATTACK,attack,172,10,1500,1000,3000,no,target,always,0,,,,,,,
+21393,ILL_FARMILIAR@NPC_VAMPIRE_GIFT,attack,679,3,500,1000,5000,no,self,always,0,,,,,,,
+21393,ILL_FARMILIAR@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21394,ILL_VITATA@AM_POTIONPITCHER,attack,231,2,10000,500,5000,yes,friend,friendhpltmaxrate,60,,,,,,5,
+21394,ILL_VITATA@AM_POTIONPITCHER,attack,231,2,10000,500,5000,no,friend,myhpltmaxrate,30,,,,,,5,
+21394,ILL_VITATA@AM_POTIONPITCHER,chase,231,2,10000,500,5000,yes,friend,friendhpltmaxrate,60,,,,,,5,
+21394,ILL_VITATA@AM_POTIONPITCHER,chase,231,2,10000,500,5000,no,friend,myhpltmaxrate,30,,,,,,5,
+21394,ILL_VITATA@NPC_GROUNDATTACK,attack,185,3,2000,0,5000,yes,target,always,0,,,,,,,
+21394,ILL_VITATA@NPC_MAGICALATTACK,attack,192,3,5000,800,20000,no,target,always,0,,,,,,,
+21394,ILL_VITATA@NPC_MAGICALATTACK,chase,192,3,5000,800,20000,no,target,always,0,,,,,,,
+21394,ILL_VITATA@NPC_DARKBREATH,attack,202,3,1000,800,5000,no,target,always,0,,,,,,,
+21394,ILL_VITATA@NPC_DARKBREATH,chase,202,3,1000,800,5000,no,target,always,0,,,,,,,
+21394,ILL_VITATA@NPC_RANDOMATTACK,attack,183,5,2000,500,5000,no,target,always,0,,,,,,6,
+21394,ILL_VITATA@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21395,ILL_MAYA@AL_HEAL,attack,28,11,10000,0,5000,no,friend,friendhpltmaxrate,60,,,,,,3,
+21395,ILL_MAYA@AL_HEAL,attack,28,11,10000,0,5000,no,friend,myhpltmaxrate,30,,,,,,3,
+21395,ILL_MAYA@AL_HEAL,chase,28,11,10000,0,5000,no,friend,friendhpltmaxrate,60,,,,,,3,
+21395,ILL_MAYA@AL_HEAL,chase,28,11,10000,0,5000,no,friend,myhpltmaxrate,30,,,,,,3,
+21395,ILL_MAYA@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
+21395,ILL_MAYA@AL_TELEPORT,idle,26,1,500,0,5000,yes,self,always,0,,,,,,,
+21395,ILL_MAYA@AL_TELEPORT,walk,26,1,500,0,5000,yes,self,always,0,,,,,,,
+21395,ILL_MAYA@NPC_WIDESILENCE2,chase,757,5,10000,1000,20000,no,target,myhpltmaxrate,80,,,,,,32,
+21395,ILL_MAYA@NPC_WIDESILENCE2,attack,757,5,10000,1000,20000,no,target,myhpltmaxrate,80,,,,,,32,
+21395,ILL_MAYA@KN_BRANDISHSPEAR,attack,57,10,2000,500,5000,no,target,always,0,,,,,,,
+21395,ILL_MAYA@NPC_POWERUP,attack,349,5,10000,0,120000,yes,self,myhpltmaxrate,30,,,,,,6,
+21395,ILL_MAYA@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,,
+21395,ILL_MAYA@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,,
+21395,ILL_MAYA@NPC_ARMORBRAKE,attack,344,10,2000,0,5000,no,target,always,0,,,,,,6,
+21395,ILL_MAYA@NPC_GUIDEDATTACK,attack,172,5,500,0,20000,no,target,always,0,,,,,,18,
+21395,ILL_MAYA@CR_AUTOGUARD,attack,249,10,500,0,5000,yes,self,always,0,,,,,,,
+21395,ILL_MAYA@NPC_SUMMONSLAVE,attack,196,1,10000,700,10000,no,self,slavele,3,21386,21389,21390,,,,
+21395,ILL_MAYA@NPC_SUMMONSLAVE,idle,196,1,10000,700,10000,no,self,slavele,3,21386,21389,21390,,,,
+21395,ILL_MAYA@WZ_HEAVENDRIVE,attack,91,5,2000,0,5000,no,target,always,0,,,,,,,
+21395,ILL_MAYA@WZ_HEAVENDRIVE,chase,91,5,2000,0,5000,no,target,always,0,,,,,,,
+21395,ILL_MAYA@WZ_HEAVENDRIVE,chase,91,5,10000,0,5000,no,target,skillused,18,,,,,,,
+21395,ILL_MAYA@NPC_CRITICALWOUND,attack,673,1,500,0,5000,yes,target,always,0,,,,,,,
+21395,ILL_MAYA@NPC_IMMUNE_PROPERTY,chase,754,4,1500,1500,60000,no,self,casttargeted,0,,,,,,,
+21395,ILL_MAYA@NPC_IMMUNE_PROPERTY,attack,754,1,1500,1500,60000,no,self,longrangeattacked,0,,,,,,,
+21395,ILL_MAYA@NPC_DAMAGE_HEAL,attack,753,1,500,1500,120000,no,target,myhpltmaxrate,50,,,,,,32,
+21395,ILL_MAYA@NPC_ALL_STAT_DOWN,attack,751,5,5000,1500,45000,no,target,always,0,,,,,,18,

+ 51 - 0
db/re/quest_db.yml

@@ -6270,6 +6270,57 @@ Body:
           MAGMARING: true
           DROSERA: true
           MUSCIPULAR: true
+  - Id: 8719
+    Title: A new area somewhere in the anthill
+  - Id: 8720
+    Title: Mirko's Request (1)
+  - Id: 8721
+    Title: Where is Briashen
+  - Id: 8722
+    Title: Briashen's message
+  - Id: 8723
+    Title: Mirko's Request (2)
+  - Id: 8724
+    Title: Where is Khahris
+  - Id: 8725
+    Title: The same look...? (1)
+  - Id: 8726
+    Title: The same look...? (2)
+  - Id: 8727
+    Title: The same look...? (3)
+  - Id: 8728
+    Title: Who is Khahris?
+  - Id: 8729
+    Title: Where is Briashen (2)
+  - Id: 8730
+    Title: The Labyrinth of Perception
+  - Id: 8731
+    Title: Geological Survey
+  - Id: 8732
+    Title: Geological Survey - Standby
+    TimeLimit: 4h
+  - Id: 8733
+    Title: Source of Power
+  - Id: 8734
+    Title: Source of Power - Standby
+    TimeLimit: 4h
+  - Id: 8735
+    Title: Same thing
+    Targets:
+      - Mob: ILL_SOLDIER_ANDR
+        Count: 10
+      - Mob: ILL_PIERE
+        Count: 10
+      - Mob: ILL_VITATA
+        Count: 10
+  - Id: 8736
+    Title: The Same Thing - Standby
+    TimeLimit: 4h
+  - Id: 8737
+    Title: Shared Memories
+  - Id: 8738
+    Title: Shared Memories - Standby
+    TimeLimit: 4h
   - Id: 9000
     Title: Job Change to Knight
   - Id: 9001

+ 1 - 1
npc/re/merchants/barters.yml

@@ -57,5 +57,5 @@ Footer:
   - Path: npc/re/merchants/barters/enchantgrade.yml
   - Path: npc/re/merchants/barters/cashmall.yml
   - Path: npc/re/merchants/barters/rgsr_in.yml
-  - Path: npc/re/merchants/barters/enchan_illusion_16_2.yml
+  - Path: npc/re/merchants/barters/enchan_illusion_dungeons.yml
   - Path: npc/re/merchants/barters/quests_exp_175.yml

+ 183 - 0
npc/re/merchants/barters/enchan_illusion_16_2.yml → npc/re/merchants/barters/enchan_illusion_dungeons.yml

@@ -229,3 +229,186 @@ Body:
           - Index: 4
             Item: IllusionStone
             Amount: 100
+  - Name: barter_ill_twins
+    Items:
+      - Index: 0
+        Item: Sprint_Mail_IL
+        RequiredItems:
+          - Index: 0
+            Item: Sprint_Mail
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Fur
+            Amount: 125
+          - Index: 2
+            Item: IL_Twins_Hat
+            Amount: 55
+          - Index: 3
+            Item: IllusionStone
+            Amount: 100
+      - Index: 1
+        Item: Sprint_Shoes_IL
+        RequiredItems:
+          - Index: 0
+            Item: Sprint_Shoes
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Shovel
+            Amount: 75
+          - Index: 2
+            Item: IL_Twins_Leg
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 100
+      - Index: 2
+        Item: Thorn_Staff_IL
+        RequiredItems:
+          - Index: 0
+            Item: Thorn_Staff
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Fang
+            Amount: 75
+          - Index: 2
+            Item: IL_Twins_Shovel
+            Amount: 75
+          - Index: 3
+            Item: IllusionStone
+            Amount: 135
+      - Index: 3
+        Item: Dea_Staff_IL
+        RequiredItems:
+          - Index: 0
+            Item: Dea_Staff
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Crown
+            Amount: 15
+          - Index: 2
+            Item: IL_Twins_Leg
+            Amount: 125
+          - Index: 3
+            Item: IL_Twins_Shovel
+            Amount: 75
+          - Index: 4
+            Item: IllusionStone
+            Amount: 150
+      - Index: 4
+        Item: Gelerdria_IL
+        RequiredItems:
+          - Index: 0
+            Item: Gelerdria
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Hat
+            Amount: 55
+          - Index: 2
+            Item: IL_Twins_Feeler
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 150
+      - Index: 5
+        Item: Excalibur_IL
+        RequiredItems:
+          - Index: 0
+            Item: Excalibur
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Fang
+            Amount: 75
+          - Index: 2
+            Item: IL_Twins_Acid
+            Amount: 75
+          - Index: 3
+            Item: IllusionStone
+            Amount: 135
+      - Index: 6
+        Item: Doom_Slayer_IL
+        RequiredItems:
+          - Index: 0
+            Item: Doom_Slayer
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Acid
+            Amount: 75
+          - Index: 2
+            Item: IL_Twins_Leg
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 150
+      - Index: 7
+        Item: Ancient_Dagger_IL
+        RequiredItems:
+          - Index: 0
+            Item: Ancient_Dagger
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Fang
+            Amount: 75
+          - Index: 2
+            Item: IL_Twins_Fur
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 135
+      - Index: 8
+        Item: Guard_IL
+        RequiredItems:
+          - Index: 0
+            Item: Guard
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Feeler
+            Amount: 75
+          - Index: 2
+            Item: IL_Twins_Fur
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 100
+      - Index: 9
+        Item: Siver_Guard_IL
+        RequiredItems:
+          - Index: 0
+            Item: Siver_Guard
+            Refine: 9
+          - Index: 1
+            Item: IL_Twins_Jaw
+            Amount: 55
+          - Index: 2
+            Item: IL_Twins_Feeler
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 100
+      - Index: 10
+        Item: Sprint_Ring_IL
+        RequiredItems:
+          - Index: 0
+            Item: Sprint_Ring
+          - Index: 1
+            Item: IL_Twins_Acid
+            Amount: 75
+          - Index: 2
+            Item: IL_Twins_Feeler
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 120
+      - Index: 11
+        Item: Sprint_Glove_IL
+        RequiredItems:
+          - Index: 0
+            Item: Sprint_Glove
+          - Index: 1
+            Item: IL_Twins_Jaw
+            Amount: 55
+          - Index: 2
+            Item: IL_Twins_Fur
+            Amount: 125
+          - Index: 3
+            Item: IllusionStone
+            Amount: 120

+ 29 - 0
npc/re/merchants/enchan_illusion_16_2.txt → npc/re/merchants/enchan_illusion_dungeons.txt

@@ -13,6 +13,7 @@
 //= 1.4 Added Illusion of Turtle enchanter [Capuche]
 //= 1.5 Added Illusion of Luanda enchanter [Capuche]
 //= 1.6 Added Illusion of Underwater exchange [Capuche]
+//= 1.7 Added Illusion of Twins enchanter [Capuche]
 //============================================================
 
 //============================================================
@@ -1675,3 +1676,31 @@ iz_d04_i,134,228,4	script	Horen#Horen	4_M_BIBI,{
 	callshop( "barter_ill_underwater" );
 	end;
 }
+
+//============================================================
+//= Illusion of Twins
+//============================================================
+// ant_d02_i,175,186,3	script	From#iltw	MECHANIC,{
+ant_d02_i,175,186,3	script	From#iltw	HIDDEN_NPC,{
+	if (checkweight(1201,3) == 0) {
+		mes "- You cannot proceed with the quest because you have too many items. -";
+		close;
+	}
+	mes "[From]";
+	mes "I feel like I'm going crazy.";
+	mes "It's because of my mood. I'm human and it's not like you're mistaken.";
+	mes "I'll help you if you get a lot here.";
+	mes "Do you want to enhance your equipment?";
+	close2;
+	callshop( "barter_ill_twins" );
+	end;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4058;
+	setunitdata .@npc_id, UNPC_SEX, SEX_MALE;
+	setunitdata .@npc_id, UNPC_CLOTHCOLOR, 1;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 11;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 6;
+	end;
+}

+ 45 - 0
npc/re/mobs/dungeons/anthell.txt

@@ -9,6 +9,7 @@
 //===== Additional Comments: =================================
 //= 1.1 Official kRO 10.1 spawns [Playtester]
 //= 1.2 Corrected MVP spawn variance. [L0ne_W0lf]
+//= 1.3 Added Illusion of Twins. [Capuche]
 //============================================================
 
 //==================================================
@@ -119,3 +120,47 @@ anthell02,0,0	monster	Deniro	1105,15,5000
 anthell02,0,0	monster	Piere	1160,15,5000
 anthell02,0,0	monster	Giearth	1121,3,5000
 anthell02,0,0,0,0	boss_monster	Maya	1147,1,7200000,600000,1
+
+//==================================================
+// Illusion of Twins
+//==================================================
+ant_d02_i	monster	Diligent Andre	21386,30,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Diligent Andre Larva	21388,20,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Mushy Ant Egg	21391,20,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Diligent Deniro	21389,30,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Gutsy Familiar	21393,25,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Gutsy Giearth	21392,15,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Diligent Piere	21390,30,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Diligent Soldier Andre	21387,15,5000,0,"ant_d02_i_boss::OnMobDead"
+ant_d02_i	monster	Diligent Vitata	21394,15,5000,0,"ant_d02_i_boss::OnMobDead"
+
+-	script	ant_d02_i_boss	-1,{
+	end;
+OnMobDead:
+	if (playerattached()) {
+		if (.count < 3000)	// todo value ?
+			.count++;
+		if (!.boss_spawn && !.cooldown && .count == 3000) {
+			.boss_spawn = true;
+			.count = 0;
+			killmonster "ant_d02_i", "ant_d02_i_boss::OnBossDeath";
+			mapannounce "ant_d02_i", "An inaudible noise approaches...", bc_map, "0x70dbdb";
+			getunitdata( killedgid, .@data );
+			monster "ant_d02_i", .@data[UMOB_X], .@data[UMOB_Y], "--ja--", 21395,1, "ant_d02_i_boss::OnBossDeath";	// ILL_MAYA
+			end;
+		}
+	}
+	end;
+OnBossDeath:
+	// note: no mapannounce
+	killmonster "ant_d02_i", "ant_d02_i_boss::OnBossDeath";
+	.boss_spawn = false;
+	.cooldown = true;
+	initnpctimer;
+	end;
+
+OnTimer7200000:
+	.cooldown = false;
+	stopnpctimer;
+	end;
+}

+ 1730 - 1
npc/re/quests/quests_16_2_illusion.txt → npc/re/quests/quests_illusion_dungeons.txt

@@ -2,7 +2,7 @@
 //= Terra Gloria - Illusion
 //===== Description: =========================================
 //= [Walkthrough Conversion]
-//= Quest NPCs for Episode 16.2 - Illusion series
+//= Quest NPCs - Illusion series
 //
 //- Note: Probably missing some questinfo on Illusion of Vampire.
 //===== Changelog: ===========================================
@@ -13,6 +13,7 @@
 //= 1.4 Added Illusion of Turtle [Capuche]
 //= 1.5 Added Illusion of Luanda [Capuche]
 //= 1.6 Added Illusion of Underwater [Capuche]
+//= 1.7 Added Illusion of Twins [Capuche]
 //============================================================
 
 //============================================================
@@ -10080,3 +10081,1731 @@ OnInit:
 	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(3420,PLAYTIME) == 2" );
 	end;
 }
+
+
+//============================================================
+//= Illusion of Twins
+//============================================================
+// anthell02,172,189,5	script	Yolanda#1F	ASSASSIN,{
+anthell02,172,189,5	script	Yolanda#1F	HIDDEN_NPC,{
+	if (checkweight(1201,3) == 0) {
+		mes "- You cannot proceed with the quest because you have too many items. -";
+		close;
+	}
+	if (BaseLevel < 160) {
+		mes "[Yolanda]";
+		mes "We can't be like this...";
+		next;
+		mes "[Mirko]";
+		mes "But until an adventurer strong enough to get there...";
+		next;
+		mes "== This is a level 160 or higher quest ==";
+		close;
+	}
+	if (ill_anthell == 0) {
+		emotion ET_PROFUSELY_SWEAT;
+		mes "[Yolanda]";
+		mes "Are you really in?";
+		next;
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0,"Mirko#1F");
+		mes "[Mirko]";
+		mes "That's right. A lot of people said they saw it.";
+		mes "Since he said he was a ranger who injured his left arm, it can't be that he's the only friend he's ever seen.";
+		next;
+		mes "[Yolanda]";
+		mes "What should I do? If I get hurt like that, let alone search...";
+		next;
+		mes "[Mirko]";
+		mes "Oh, wait!";
+		mes "There adventurer, wait a minute!";
+		next;
+		select( "Me?" );
+		mes "[Mirko]";
+		mes "Have you been here in a while?";
+		mes "That's great. Here, we recently found a way to go deeper.";
+		next;
+		emotion ET_PROFUSELY_SWEAT;
+		ill_anthell = 1;
+		setquest 8719;
+		mes "[Yolanda]";
+		mes "Hey, what if I tell you that! And it's not my research, it's yours!";
+		next;
+		select( "Speak and sleep..." );
+		mes "[" + strcharinfo(0) + "]";
+		mes "You're saying that to strangers?";
+		next;
+		mes "[Yolanda]";
+		mes "That's right! Adventurer,";
+		mes "sorry, wait a minute.";
+		npctalk "Yolanda: What the hell do you know how to do yourself?", "", bc_self;
+		npctalk "Mirko: Hey, then should I go or the adventurer who just showed up?", "Mirko#1F", bc_self;
+		close;
+	}
+	if (ill_anthell == 1) {
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0,"Mirko#1F");
+		mes "[Mirko]";
+		mes "What's up, I need to hire more people now.";
+		mes "It's not even a ruin, so how about going wild?";
+		next;
+		emotion ET_PROFUSELY_SWEAT;
+		mes "[Yolanda]";
+		mes "Let's stop making mistakes all the time and leaving it to me to do the follow-up.";
+		next;
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0,"Mirko#1F");
+		mes "[Mirko]";
+		mes "An adventurer is waiting for you.";
+		mes "Let's chat later, huh?";
+		mes "Okay, so adventurer.";
+		mes "Your name is " + strcharinfo(0) + "?";
+		next;
+		mes "[Mirko]";
+		mes "Yes, " + strcharinfo(0) + ".";
+		mes "I'll get to the point.";
+		next;
+		mes "[Mirko]";
+		mes "I'm Mirko, that's Yolanda";
+		mes "And then one of the rangers, slightly injured, went into that newly discovered anthill I was talking about earlier. I think...";
+		mes "My goal right now is not exploration, I want you to rescue the Ranger and his friends.";
+		next;
+		mes "[Mirko]";
+		mes "Ranger's name is Briashen...";
+		mes "The colleague Briashen spoke of was Khahris,";
+		mes "According to Briashen, he looks like a twin to her.";
+		next;
+		ill_anthell = 2;
+		erasequest 8719;
+		setquest 8720;
+		mes "[Mirko]";
+		mes "Once you find either one";
+		mes "I want you to bring me out.";
+		mes "A corpse is fine, please.";
+		mes "Call me back when you're ready";
+		close;
+	}
+	if (ill_anthell == 2) {
+		mes "[Yolanda]";
+		mes "What's wrong...";
+		close;
+	}
+	if (ill_anthell == 3) {
+		mes "[Yolanda]";
+		mes "If only I had been a little stronger...";
+		close;
+	}
+	if (ill_anthell == 4) {
+		mes "[Yolanda]";
+		mes "Have you seen Briashen?";
+		mes "You're alive? I'm glad... why didn't you bring me out?";
+		mes "Ah...";
+		mes "...";
+		next;
+		mes "[Yolanda]";
+		mes "Try talking to Mirko again.";
+		mes "I think you're thinking the same thing as me.";
+		close;
+	}
+	if (ill_anthell == 5 || ill_anthell == 6) {
+		mes "[Yolanda]";
+		mes "It would be nice if we could go too...";
+		mes "Take care of Briashen.";
+		close;
+	}
+	if (ill_anthell == 7) {
+		mes "[Yolanda]";
+		mes "What a surprise!";
+		mes "Where did it come from?!";
+		next;
+		select( "It bounced" );
+		mes "[Yolanda]";
+		mes "What?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "There were three people who looked like Khahris...";
+		next;
+		mes "== Explained everything to Mirko and Yolanda. ==";
+		next;
+		mes "[Mirko]";
+		mes "All three disappeared in the middle of a conversation.";
+		mes "Besides, the last person you met was... Vitata?";
+		next;
+		mes "[Yolanda]";
+		mes "Maybe... maybe..";
+		mes "Couldn't all three be the Khahris instead of the one who looked like him?";
+		next;
+		mes "[Mirko]";
+		mes "What?";
+		mes "If " + strcharinfo(0) + " was alone there, it could have been hallucinations too, right?";
+		next;
+		mes "[Yolanda]";
+		mes "I heard Briaschen did that. Ants didn't attack me when I was with Khahris.";
+		next;
+		mes "[Mirko]";
+		mes "But at the end Maya...";
+		next;
+		mes "[Yolanda]";
+		mes "If that was the case?";
+		next;
+		mes "[Yolanda]";
+		mes "This is a hypothesis.";
+		mes "Khahris... was with Vitata, so the other ants obviously wouldn't touch it.";
+		mes "Aren't ants colonies?";
+		next;
+		mes "[Yolanda]";
+		mes "But Maya is the ruler of dungeons.";
+		next;
+		mes "[Mirko]";
+		mes "Um...";
+		next;
+		mes "[Yolanda]";
+		mes "If you can harm yourself...";
+		next;
+		mes "[Mirko]";
+		mes "I might be able to touch it.";
+		next;
+		mes "[Yolanda]";
+		mes "Vitata's behavior is a threat to her status...";
+		next;
+		mes "[Mirko]";
+		mes "!!";
+		mes "So what's really dangerous right now...";
+		next;
+		mes "[Mirko]";
+		mes "" + strcharinfo(0) + ", now that's hypothetical, but now Briashen is really dangerous!";
+		next;
+		if (select( "Okay, I'll be back", "I need some time to get ready" ) == 2) {
+			mes "[Mirko]";
+			mes "It's urgent, so I'll ask you quickly!";
+			close;
+		}
+		mes "[Mirko]";
+		mes "Please!";
+		close2;
+		warp "ant_d02_i",172,185;
+		ill_anthell = 8;
+		erasequest 8728;
+		setquest 8729;
+		open_quest_ui(8729);
+		end;
+	}
+	if (ill_anthell == 8) {
+		mes "[Yolanda]";
+		mes "Please, " + strcharinfo(0) + "...";
+		close;
+	}
+	if (ill_anthell == 9) {
+		mes "[Yolanda]";
+		mes "...";
+		close;
+	}
+	mes "[Yolanda]";
+	mes "I'll be doing this research for a while.";
+	mes "It's not much. I'll do the money later.";
+	close;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 12;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 9;
+	setunitdata .@npc_id, UNPC_HEADTOP, 1501;
+
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "ill_anthell == 0" );	// note: some dialogs are similiar to the sage npc but only this questinfo is displayed for this npc
+	end;
+}
+
+anthell02,177,190,3	script	Mirko#1F	4_M_SAGE_A,{
+	if (checkweight(1201,3) == 0) {
+		mes "- You cannot proceed with the quest because you have too many items. -";
+		close;
+	}
+	if (BaseLevel < 160) {
+		mes "[Mirko]";
+		mes "Have you seen Briashen yet?";
+		next;
+		mes "[Yolanda]";
+		mes "Not yet.";
+		mes "...I need to see what's there, too.";
+		next;
+		mes "== This is a level 160 or higher quest ==";
+		close;
+	}
+	if (ill_anthell == 0) {
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0,"Yolanda#1F");
+		mes "[Yolanda]";
+		mes "Are you really in?";
+		next;
+		emotion ET_PROFUSELY_SWEAT;
+		mes "[Mirko]";
+		mes "That's right. A lot of people said they saw it.";
+		mes "Since he said he was a ranger who injured his left arm, it can't be that he's the only friend he's ever seen.";
+		next;
+		mes "[Yolanda]";
+		mes "What should I do? If I get hurt like that, let alone search...";
+		next;
+		mes "[Mirko]";
+		mes "Oh, wait!";
+		mes "There adventurer, wait a minute!";
+		next;
+		select( "Me?" );
+		mes "[Mirko]";
+		mes "Have you been here in a while?";
+		mes "That's great. Here, we recently found a way to go deeper.";
+		next;
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0,"Yolanda#1F");
+		ill_anthell = 1;
+		setquest 8719;
+		mes "[Yolanda]";
+		mes "Hey, what if I tell you that! And it's not my research, it's yours!";
+		next;
+		select( "Speak and sleep..." );
+		mes "[" + strcharinfo(0) + "]";
+		mes "You're saying that to strangers?";
+		next;
+		mes "[Yolanda]";
+		mes "That's right! Adventurer man,";
+		mes "Sorry, wait a minute.";
+		npctalk "Yolanda: What the hell do you know how to do yourself?", "Yolanda#1F", bc_self;
+		npctalk "Mirko: Hey, then should I go or the adventurer who just showed up?", "Mirko#1F", bc_self;
+		close;
+	}
+	if (ill_anthell == 1) {
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0,"Mirko#1F");
+		mes "[Mirko]";
+		mes "What's up, I need to hire more people now.";
+		mes "It's not even a ruin, so how about going wild?";
+		next;
+		emotion ET_PROFUSELY_SWEAT;
+		mes "[Yolanda]";
+		mes "Let's stop making mistakes all the time and leaving it to me to do the follow-up.";
+		next;
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0,"Mirko#1F");
+		mes "[Mirko]";
+		mes "Adventurer is waiting for you";
+		mes "Let's chat later, huh?";
+		mes "Okay, so adventurer man.";
+		mes "What's your name? " + strcharinfo(0) + "?";
+		next;
+		mes "[Mirko]";
+		mes "Yes, " + strcharinfo(0) + ".";
+		mes "I'll get to the point.";
+		next;
+		mes "[Mirko]";
+		mes "I'm Mirko, that's Yolanda";
+		mes "And then one of the rangers, slightly injured, went into that newly discovered anthill I was talking about earlier. I think ...";
+		mes "My goal right now is not exploration, I want you to rescue the Ranger and his friends.";
+		next;
+		mes "[Mirko]";
+		mes "Ranger's name is Briashen...";
+		mes "The colleague Briashen spoke of was Khahris,";
+		mes "According to Briashen, he looks like a twin to her.";
+		next;
+		ill_anthell = 2;
+		erasequest 8719;
+		setquest 8720;
+		mes "[Mirko]";
+		mes "Once you find either one";
+		mes "I want you to bring me out.";
+		mes "A corpse is fine, please.";
+		mes "Call me back when you're ready";
+		close;
+	}
+	if (ill_anthell == 2) {
+		mes "[Mirko]";
+		mes "Find Briashen and his companions.";
+		mes "If you find either one, I hope you bring them out.";
+		mes "A corpse is fine, please.";
+		mes "Are you ready?";
+		next;
+		if (select( "Okay", "Later" ) == 2) {
+			mes "[Mirko]";
+			mes "Sorry for the sudden request.";
+			mes "Anyway, the investigation hasn't been completed yet, so we're nervous...";
+			mes "Tell me when you're ready.";
+			close;
+		}
+		mes "[Mirko]";
+		mes "Yeah. ...This is how it happened... It was by accident. I accidentally broke the wall...";
+		mes "A force so strong that even we can feel it! Voila!";
+		mes "You can feel it beyond the wall.";
+		next;
+		mes "[Mirko]";
+		mes "What can I do? As an adventurer, if this place isn't a historical site and there are no traces of people... I'll have to look for it!";
+		mes "So... I pulled my hair out and looked into it.";
+		next;
+		select( "You're brave" );
+		mes "[Yolanda]";
+		mes "Yeah... This bastard was really brave back then.";
+		mes "I'm glad you didn't die.";
+		next;
+		mes "[Mirko]";
+		mes "It's okay because I'm alive!";
+		mes "Anyway, this is the second floor, and the road to the first floor is over there, isn't it?";
+		mes "But... that's not the way!";
+		next;
+		mes "[Mirko]";
+		mes "But something was different, the atmosphere.";
+		mes "It feels like you're walking in a hazy... dream?";
+		next;
+		mes "[Yolanda]";
+		mes "I feel like I have written the Asura Kingdom of Defeat.";
+		next;
+		mes "[Mirko]";
+		mes "Hey, most people don't understand when you explain it like that!";
+		next;
+		select( "I got it roughly" );
+		mes "[Yolanda]";
+		mes "Whoops.";
+		next;
+		mes "[Mirko]";
+		mes "Am I dull...?";
+		mes "Anyway, even though it's strangely dark, it's like being here and not here... perception is peeling off from the body...";
+		mes "So...";
+		next;
+		mes "[Yolanda]";
+		mes "Mild confusion.";
+		mes "Don't worry, it's nothing serious, I think I'm looking at something stupid.";
+		mes "I'm fine with guesses. Everyone's shape is different.";
+		next;
+		mes "[Yolanda]";
+		mes "You can tell it's empty when you get out on the road, but you can't tell while you're inside.";
+		mes "In other words, even if I'm mistaken, I didn't go back to the first floor.";
+		next;
+		mes "[Mirko]";
+		mes "Yeah! Even though it was the same road, I felt like I crossed the line somewhere.";
+		mes "And also, the ants were super powerful!";
+		next;
+		mes "[Mirko]";
+		mes "How did you come back alive, it's a shame... Fortunately, the ants there didn't seem to come over here.";
+		mes "After that, I was going to stop the geological exploration of this side for a while and organize a new expedition.";
+		next;
+		mes "[Yolanda]";
+		mes "Briashen, the strongest among us, went on a patrol, but it seems that the adventurers who will come around here are not at the level to form an expedition.";
+		mes "So either we went alone or he went alone... One day he saw someone there who looked just like him.";
+		next;
+		mes "[Yolanda]";
+		mes "As I said before, some people may see falsehoods, but...";
+		mes "When it comes out, you know it's nonsense? But since Briashen came out and said that...";
+		mes "I think it was real. We've never seen it.";
+		next;
+		mes "[Yolanda]";
+		mes "After that, we waited outside because the exploration results were good for going alone,";
+		mes "He came back with a serious injury the other day, and his colleague is still there.";
+		mes "You're being chased by ants.";
+		next;
+		mes "[Yolanda]";
+		mes "But after being hurt like this... He said he needed to rest for a while, but he must have gone into that anthill on his own.";
+		mes "That is, life and death...";
+		next;
+		mes "[Mirko]";
+		mes "I can't guess.";
+		mes "We can't get in there on our own. No one can do that now.";
+		mes "Adventurer friend, save Briashen.";
+		mes "Please.";
+		ill_anthell = 3;
+		erasequest 8720;
+		setquest 8721;
+		next;
+		mes "[Mirko]";
+		mes "Okay, this way...";
+		close2;
+		warp "ant_d02_i",172,185;
+		end;
+	}
+	if (ill_anthell == 3) {
+		mes "[Mirko]";
+		mes "Are you going to find Briashen again?";
+		next;
+		if (select( "Yes", "Later" ) == 2) {
+			mes "[Mirko]";
+			mes "Sorry for the sudden request.";
+			mes "Anyway, the investigation hasn't been completed yet, so we're nervous...";
+			close;
+		}
+		mes "[Mirko]";
+		mes "Okay, this way...";
+		close2;
+		warp "ant_d02_i",172,185;
+		end;
+	}
+	if (ill_anthell == 4) {
+		mes "[Mirko]";
+		mes "You saw Briashen?";
+		mes "Are you alive??";
+		mes "Thank God...";
+		next;
+		mes "[Yolanda]";
+		mes "But why didn't you come with me?";
+		next;
+		mes "== Briefly explained what Briashen said. ==";
+		next;
+		mes "[Mirko]";
+		mes "...I can't help it.";
+		mes "I don't know if I can pull it out again... No, if it was like that in the first place, I wouldn't have asked you, adventurer.";
+		next;
+		mes "[Mirko]";
+		mes "Then, as Briashen asked, would you like to go downstairs to help him?";
+		ill_anthell = 5;
+		erasequest 8722;
+		setquest 8723;
+		next;
+		if (select( "Yes", "Later" ) == 2) {
+			mes "[Mirko]";
+			mes "I can't help it";
+			mes "It would be nice if we went together, but...";
+			close;
+		}
+		mes "[Mirko]";
+		mes "Okay...";
+		close2;
+		warp "ant_d02_i",172,185;
+		end;
+	}
+	if (ill_anthell == 5 || ill_anthell == 6) {
+		mes "[Mirko]";
+		mes "As Briashen asked, would you like to go downstairs to help him?";
+		next;
+		if (select( "Yes", "Later" ) == 2) {
+			mes "[Mirko]";
+			mes "I can't help it";
+			mes "It would be nice if we went together, but...";
+			close;
+		}
+		mes "[Mirko]";
+		mes "Okay...";
+		close2;
+		warp "ant_d02_i",172,185;
+		end;
+	}
+	if (ill_anthell == 7) {
+		mes "[Yolanda]";
+		mes "What a surprise!";
+		mes "Where did it come from?!";
+		next;
+		select( "It bounced" );
+		mes "[Yolanda]";
+		mes "what?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "There were three people who looked like Khahris...";
+		next;
+		mes "== Explained everything to Mirko and Yolanda. ==";
+		next;
+		mes "[Mirko]";
+		mes "All three disappeared in the middle of a conversation.";
+		mes "Besides, the last person you met was... Vitata?";
+		next;
+		mes "[Yolanda]";
+		mes "Maybe... maybe";
+		mes "Couldn't all three be the Khahris instead of the one who looked like him?";
+		next;
+		mes "[Mirko]";
+		mes "what?";
+		mes "If you saw " + strcharinfo(0) + " alone, it could have been an illusion, right?";
+		next;
+		mes "[Yolanda]";
+		mes "I heard Briaschen did that. Ants didn't attack me when I was with Khahris.";
+		next;
+		mes "[Mirko]";
+		mes "But at the end Maya...";
+		next;
+		mes "[Yolanda]";
+		mes "If that was the case?";
+		next;
+		mes "[Yolanda]";
+		mes "This is a hypothesis.";
+		mes "Khahris... was with Vitata, so the other ants obviously wouldn't touch it.";
+		mes "Aren't ants colonies?";
+		next;
+		mes "[Yolanda]";
+		mes "But Maya is the ruler of dungeons.";
+		next;
+		mes "[Mirko]";
+		mes "Um...";
+		next;
+		mes "[Yolanda]";
+		mes "If you can harm yourself...";
+		next;
+		mes "[Mirko]";
+		mes "I might be able to touch it.";
+		next;
+		mes "[Yolanda]";
+		mes "Vitata's behavior is a threat to her status...";
+		next;
+		mes "[Mirko]";
+		mes "!!";
+		mes "So what's really dangerous right now...";
+		next;
+		mes "[Mirko]";
+		mes "" + strcharinfo(0) + ", now that's hypothetical, but now Briashen is really dangerous!";
+		next;
+		if (select( "Okay, I'll be back", "I need some time to get ready" ) == 2) {
+			mes "[Mirko]";
+			mes "It's urgent, so I'll ask you quickly!";
+			close;
+		}
+		mes "[Mirko]";
+		mes "Please!";
+		close2;
+		warp "ant_d02_i",172,185;
+		ill_anthell = 8;
+		erasequest 8728;
+		setquest 8729;
+		open_quest_ui(8729);
+		end;
+	}
+	if (ill_anthell == 8) {
+		mes "[Mirko]";
+		mes "" + strcharinfo(0) + ", that's just a hypothesis, but now Briashen is really dangerous!";
+		next;
+		if (select( "Okay, I'll be back", "I need some time to get ready" ) == 2) {
+			mes "[Mirko]";
+			mes "It's urgent, so I'll ask you quickly!";
+			close;
+		}
+		mes "[Mirko]";
+		mes "Please!";
+		close2;
+		warp "ant_d02_i",172,185;
+		end;
+	}
+	if (ill_anthell == 9) {
+		mes "[Mirko]";
+		mes "...";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "...";
+		next;
+		mes "[Briashen]";
+		mes "I'm fine now";
+		mes "Tell me";
+		npctalk "I'm a bit sane now.", "Briashen#ant2", bc_self;
+		npctalk "Thank God...", "Yolanda#1F", bc_self;
+		next;
+		mes "[Mirko]";
+		mes "...";
+		mes "It's just a guess.";
+		mes "Isn't Briashen having a longer hallucination than the other adventurers, rather than the illusion adventuring with Briashen?";
+		next;
+		mes "[Mirko]";
+		mes "Like Gona over there.";
+		npctalk "I can't stand it, so I keep coming in and out. What the hell did you see?", "", bc_self;
+		npctalk "Oh, don't remind me!", "Gona#ant2", bc_self;
+		next;
+		mes "[Mirko]";
+		mes "A closeness so strong that you can't come back because you're possessed...";
+		mes "I heard you look just like me?";
+		next;
+		mes "[Briashen]";
+		mes "I don't remember.";
+		next;
+		mes "[Mirko]";
+		mes "what?";
+		next;
+		mes "[Briashen]";
+		mes "I can't remember what Khahris looked like...";
+		next;
+		mes "[Gona]";
+		mes "That's the worst thing I've ever seen.";
+		next;
+		mes "[Mirko]";
+		mes "There, " + strcharinfo(0) + ".";
+		mes "How was it? Was it difficult to bring you out?";
+		next;
+		select( "I saw it too" );
+		mes "[Mirko]";
+		mes "Ah... Come to think of it.";
+		mes "You said you saw fakes the last time you went in?";
+		next;
+		mes "[Mirko]";
+		mes "Did you see the real thing this time?";
+		mes "So what did it look like?";
+		mes "Is that what Briashen said?";
+		next;
+		mes "== The Khahris that Briashen was looking at, only looked like an ant. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "...";
+		next;
+		mes "[Yolanda]";
+		mes "Was it a different face?";
+		next;
+		select( "She looks just like Briashen" );
+		mes "[" + strcharinfo(0) + "]";
+		mes "Looks exactly like Briashen";
+		mes "It looked real. I almost fooled myself.";
+		mes "They were like twins";
+		next;
+		mes "[Briashen]";
+		mes "Really?";
+		next;
+		mes "[Mirko]";
+		mes "Looks like I really can't remember now.";
+		mes "It's weird to the left and right, over there.";
+		mes "May I continue exploring?";
+		next;
+		mes "[Gona]";
+		mes "Don't worry about that.";
+		mes "Adventurer's flair... Whoops!";
+		next;
+		mes "[Mirko]";
+		mes "Hey, you really should get some rest...";
+		next;
+		mes "[Briashen]";
+		mes "..." + strcharinfo(0) + ".";
+		mes "Thank you for saving me";
+		next;
+		mes "[Briashen]";
+		mes "I'm not going to go in there anymore...";
+		mes "About Khahris you told me about, I won't forget.";
+		npctalk "Huh? Then how do I investigate over there?", "", bc_self;
+		npctalk "Take Gona with you.", "Briashen#ant2", bc_self;
+		npctalk "I don't like Mirko. I won't go.", "Gona#ant2", bc_self;
+		next;
+		mes "[Briashen]";
+		mes "Khahris...";
+		mes "Thank you for remembering";
+		npctalk "Hey, adventurer! Then accept the request! Okay?", "", bc_self;
+		ill_anthell = 10;
+		completequest 8730;
+		getexp 5260084,2000000;
+		getexp 2104033,600000;
+		getitem 25271,5;	// IllusionStone
+		close;
+	}
+	mes "[Mirko]";
+	mes "Would you like to go to the Garden of Perception?";
+	mes "Or do you have a request to take on?";
+	next;
+	switch( select( "Enter the Garden of Awareness", "Geology Survey", "Source of Power", "Same thing", "Shared Memory", "Cancel" ) ) {
+	case 1:
+		mes "[Mirko]";
+		mes "Be careful.";
+		close2;
+		warp "ant_d02_i",172,185;
+		end;
+	case 2:
+		switch( checkquest(8732,PLAYTIME) ) {
+		case -1:
+			break;
+		case 0:
+		case 1:
+			mes "[Mirko]";
+			mes "It's fine today. I'll take care of it tomorrow.";
+			close;
+		case 2:
+			erasequest 8732;
+			break;
+		}
+		if (isbegin_quest(8731) == 0) {
+			mes "[Mirko]";
+			mes "Occasionally if you defeat " + getmonsterinfo("ILL_GIEARTH", MOB_NAME) + "";
+			mes "you can get ^0000FF" + getitemname(1000504) + "^000000, can you collect about 20 of them?";
+			next;
+			if (select( "Accept", "Quit" ) == 2) {
+				mes "[Mirko]";
+				mes "I can't";
+				mes "Today, I have no choice but to commission other adventurers.";
+				close;
+			}
+			mes "[Mirko]";
+			mes "Okay, wait.";
+			setquest 8731;
+			close;
+		}
+		if (countitem(1000504) < 20) {
+			mes "[Mirko]";
+			mes "Hunt " + getmonsterinfo("ILL_GIEARTH", MOB_NAME) + " from the Garden of Perception";
+			mes "and collect 20 ^0000FF" + getitemname(1000504) + "^000000.";
+			close;
+		}
+		delitem 1000504,20;	// Dry_Sand
+		erasequest 8731;
+		setquest 8732;
+		mes "[Mirko]";
+		mes "Good job!";
+		mes "Then I'll take care of you tomorrow too.";
+		getitem 25271,1;	// IllusionStone
+		getexp 3181074,2404545;
+		getexp 954322,721363;
+		close;
+	case 3:
+		switch( checkquest(8734,PLAYTIME) ) {
+		case -1:
+			break;
+		case 0:
+		case 1:
+			mes "[Mirko]";
+			mes "It's fine today. I'll take care of it tomorrow.";
+			close;
+		case 2:
+			erasequest 8734;
+			break;
+		}
+		if (isbegin_quest(8733) == 0) {
+			mes "[Mirko]";
+			mes "Sometimes if you defeat " + getmonsterinfo("ILL_ANDRE", MOB_NAME) + " or " + getmonsterinfo("ILL_DENIRO", MOB_NAME) + " who haunt the Garden of Perception";
+			mes "you can get ^0000FF" + getitemname(1000505) + "^000000, can you collect about 20 of them?";
+			next;
+			if (select( "Accept", "Quit" ) == 2) {
+				mes "[Mirko]";
+				mes "I can't";
+				mes "I have no choice but to ask other adventurers for work today.";
+				close;
+			}
+			mes "[Mirko]";
+			mes "Okay, wait.";
+			setquest 8733;
+			close;
+		}
+		if (countitem(1000505) < 20) {
+			mes "[Mirko]";
+			mes "Hunt " + getmonsterinfo("ILL_ANDRE", MOB_NAME) + " and " + getmonsterinfo("ILL_DENIRO", MOB_NAME) + " from the Garden of Perception";
+			mes "and collect 20 ^0000FF" + getitemname(1000505) + "^000000.";
+			close;
+		}
+		delitem 1000505,20;	// Opaque_Liquid
+		erasequest 8733;
+		setquest 8734;
+		mes "[Mirko]";
+		mes "Good job!";
+		mes "Then I'll ask you again tomorrow.";
+		getitem 25271,1;	// IllusionStone
+		getexp 3151005,2395672;
+		getexp 945301,718701;
+		close;
+	case 4:
+		switch( checkquest(8736,PLAYTIME) ) {
+		case -1:
+			break;
+		case 0:
+		case 1:
+			mes "[Mirko]";
+			mes "It's fine today. I'll take care of it tomorrow.";
+			close;
+		case 2:
+			erasequest 8736;
+			break;
+		}
+		switch( checkquest(8735,HUNTING) ) {
+		case -1:
+			mes "[Mirko]";
+			mes "As you know, memory and perception are distorted in there. You seem to be fine, but";
+			mes "it seems to be alleviated just by the reduction of the monsters.";
+			next;
+			mes "[Mirko]";
+			mes "Can you kill ^0000FF10 " + getmonsterinfo("ILL_VITATA", MOB_NAME) + "^000000,";
+			mes "^0000FF10 " + getmonsterinfo("ILL_SOLDIER_ANDR", MOB_NAME) + "^000000,";
+			mes "^0000FF10 " + getmonsterinfo("ILL_PIERE", MOB_NAME) + "^000000";
+			mes "and come back?";
+			next;
+			if (select( "Accept", "Quit" ) == 2) {
+				mes "[Mirko]";
+				mes "I can't";
+				mes "Today, I have no choice but to commission other adventurers.";
+				close;
+			}
+			mes "[Mirko]";
+			mes "Okay, wait.";
+			setquest 8735;
+			close;
+		case 0:
+		case 1:
+			mes "[Mirko]";
+			mes "Can you kill ^0000FF10 " + getmonsterinfo("ILL_VITATA", MOB_NAME) + "^000000,";
+			mes "^0000FF10 " + getmonsterinfo("ILL_SOLDIER_ANDR", MOB_NAME) + "^000000,";
+			mes "^0000FF10 " + getmonsterinfo("ILL_PIERE", MOB_NAME) + "^000000";
+			mes "and come back?";
+			close;
+		case 2:
+			mes "[Mirko]";
+			mes "Oh, another adventurer just went over there. I heard that the dizziness has lessened.";
+			mes "Human curiosity is unavoidable. Me too.";
+			mes "Then again, I'll take care of you tomorrow.";
+			erasequest 8735;
+			setquest 8736;
+			getitem 25271,1;	// IllusionStone
+			getexp 6483984,4821986;
+			getexp 1945195,1446595;
+			close;
+		}
+		end;
+	case 5:
+		switch( checkquest(8738,PLAYTIME) ) {
+		case -1:
+			break;
+		case 0:
+		case 1:
+			mes "[Mirko]";
+			mes "It's fine today. I'll take care of it tomorrow.";
+			close;
+		case 2:
+			erasequest 8738;
+			break;
+		}
+		if (isbegin_quest(8737) == 0) {
+			mes "[Mirko]";
+			mes "I picked up an unknown shell the other day. It seems that all the monsters in the Garden of Perception, like ants, have them.";
+			mes "Can you collect about 20 ^0000FF" + getitemname(1000506) + "^000000?";
+			next;
+			if (select( "Accept", "Quit" ) == 2) {
+				mes "[Mirko]";
+				mes "I can't";
+				mes "Today, I have no choice but to commission other adventurers.";
+				close;
+			}
+			mes "[Mirko]";
+			mes "Okay, wait.";
+			setquest 8737;
+			close;
+		}
+		if (countitem(1000506) < 20) {
+			mes "[Mirko]";
+			mes "Hunt the monsters from the Garden of Perception";
+			mes "and collect 20 ^0000FF" + getitemname(1000506) + "^000000.";
+			close;
+		}
+		delitem 1000506,20;	// Shell_Of_Cognition
+		erasequest 8737;
+		setquest 8738;
+		mes "[Mirko]";
+		mes "Good job!";
+		mes "Then I'll take care of you tomorrow too.";
+		getitem 25271,1;	// IllusionStone
+		getexp 3113916,2347020;
+		getexp 934174,704106;
+		close;
+	case 6:
+		end;
+	}
+	end;
+
+OnInit:
+	// main quest
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "ill_anthell == 0" );
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8719) == 1" );
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8720) == 1" );
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8722) == 1" );
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8728) == 1" );
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8730) == 1" );
+
+	// daily
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8730) == 2 && isbegin_quest(8731) == 1 && countitem(1000504) >= 20" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8730) == 2 && isbegin_quest(8733) == 1 && countitem(1000505) >= 20" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8730) == 2 && isbegin_quest(8737) == 1 && countitem(1000506) >= 20" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8735,HUNTING) == 2" );
+
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8732,PLAYTIME) == -1 && isbegin_quest(8731) == 0" );
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8732,PLAYTIME) == 2" );
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8734,PLAYTIME) == -1 && isbegin_quest(8733) == 0" );
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8734,PLAYTIME) == 2" );
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8736,PLAYTIME) == -1 && checkquest(8735,HUNTING) == -1" );
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8736,PLAYTIME) == 2" );
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8738,PLAYTIME) == -1 && isbegin_quest(8737) == 0" );
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8730) == 2 && checkquest(8738,PLAYTIME) == 2" );
+	end;
+}
+
+anthell02,170,185,0	script	#il_ant002	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (ill_anthell >= 5)
+		cloakoffnpcself( "Gona#ant2" );
+	if (ill_anthell >= 8)
+		cloakoffnpcself( "Julio#ant2" );
+	if (ill_anthell >= 9)
+		cloakoffnpcself( "Briashen#ant2" );
+	end;
+}
+anthell02,168,171,0	duplicate(#il_ant002)	#il_ant003	HIDDEN_WARP_NPC,3,3
+
+// anthell02,177,181,3	script	Gona#ant2	MINSTREL,{
+anthell02,177,181,3	script(CLOAKED)	Gona#ant2	HIDDEN_NPC,{
+	if (ill_anthell < 5)
+		end;
+	if (ill_anthell == 5) {
+		mes "[Gona]";
+		mes "What the hell is going on in there?";
+		npctalk "Mirko: Don't go if you're going to be that angry...", "Mirko#1F", bc_self;
+		close;
+	}
+	if (ill_anthell == 6) {
+		mes "[Gona]";
+		mes "Oops...";
+		close;
+	}
+	if (ill_anthell == 7) {
+		mes "[Gona]";
+		mes "Really, that's... not a sane place to go";
+		mes "You go in and out easily.";
+		close;
+	}
+	if (ill_anthell == 8) {
+		mes "[Gona]";
+		mes "Oops...";
+		close;
+	}
+	if (ill_anthell == 9) {
+		mes "[Gona]";
+		mes "I almost got in trouble...";
+		close;
+	}
+	mes "[Gona]";
+	mes "CI....";
+	mes "What is it? But that Mirko guy is good at organizing things. He's a good client.";
+	close;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4068;
+	setunitdata .@npc_id, UNPC_SEX, SEX_MALE;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 5;
+	end;
+}
+
+// anthell02,174,177,5	script	Julio#ant2	SURA,{
+anthell02,174,177,5	script(CLOAKED)	Julio#ant2	HIDDEN_NPC,{
+	mes "[Julio]";
+	mes "Don't talk to me...";
+	mes "Don't even pat me on the back...";
+	mes "I want you to go over there...";
+	close;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4070;
+	setunitdata .@npc_id, UNPC_SEX, SEX_MALE;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 12;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 3;
+	setunitdata .@npc_id, UNPC_HEADMIDDLE, 65;
+	end;
+}
+
+// anthell02,167,186,6	script	Briashen#ant2	RANGER,{
+anthell02,167,186,6	script(CLOAKED)	Briashen#ant2	HIDDEN_NPC,{
+	mes "[Briashen]";
+	mes "...";
+	mes "Thanks...";
+	close;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4056;
+	setunitdata .@npc_id, UNPC_CLOTHCOLOR, 1;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 7;
+	setunitdata .@npc_id, UNPC_HEADTOP, 1523;
+	end;
+}
+
+
+// unknown effect
+// ant_d02_i,170,185,0	script	#il_ant001	HIDDEN_WARP_NPC,3,3
+// ant_d02_i,173,94,0	script	#il_tw9	HIDDEN_WARP_NPC,5,5
+
+// ant_d02_i,177,181,5	script	Gona#iltw	MINSTREL,{
+ant_d02_i,177,181,5	script	Gona#iltw	HIDDEN_NPC,{
+	mes "[Gona]";
+	mes "Something's weird here";
+	mes "... no, isn't that weird?";
+	mes "How are you? Are you weird?";
+	mes "Oh, I want to go home...";
+	mes "Where is your house?";
+	close;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4068;
+	setunitdata .@npc_id, UNPC_SEX, SEX_MALE;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 5;
+	end;
+}
+
+// ant_d02_i,171,179,3	script	Mick#iltw	WARLOCK,{
+ant_d02_i,171,179,3	script	Mick#iltw	HIDDEN_NPC,{
+	if (ill_anthell < 3)
+		end;
+	if (ill_anthell == 3 || ill_anthell == 5 || ill_anthell == 8) {
+		mes "[Mick]";
+		mes "Am I... a person?";
+		mes "Could it be an ant?";
+		mes "isn't it?";
+		mes "Is it a person?";
+		close;
+	}
+	if (ill_anthell == 4 || ill_anthell == 6) {
+		mes "[Mick]";
+		mes "It's strange. In my head, I know I'm a human, but when I see an ant passing by there, I wonder if I'm an ant";
+		mes "What happened?";
+		close;
+	}
+	mes "[Mick]";
+	mes "Are you... a human?";
+	close;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4055;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 28;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 2;
+	end;
+}
+
+ant_d02_i,170,190,0	warp2	antd02i_anthell02	1,1,anthell02,172,185
+
+
+
+ant_d02_i,44,258,0	script	#il_tw1	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (ill_anthell == 3 || ill_anthell == 5 || ill_anthell == 6)
+		cloakoffnpcself( "Briashen#part1" );
+	if (ill_anthell == 6) {
+		cloakoffnpcself( "Rwella#part2" );
+		cloakoffnpcself( "Khahris#part3" );
+	}
+	end;
+}
+// Note: unknown effect, but let's use it
+ant_d02_i,65,246,0	duplicate(#il_tw1)	#ep18w02_1	HIDDEN_WARP_NPC,3,3
+
+// ant_d02_i,44,258,6	script	Briashen#part1	RANGER,{
+ant_d02_i,44,258,6	script(CLOAKED)	Briashen#part1	HIDDEN_NPC,{
+	if (ill_anthell < 3)
+		end;
+	if (ill_anthell == 3) {
+		mes "[Ranger looking fine]";
+		mes "Uh, hello";
+		mes "Didn't you see the injured ranger?";
+		next;
+		mes "[Ranger looking fine]";
+		mes "Are you looking for Khahris too?";
+		next;
+		if (select( "That's not the requested name", "Right" ) == 2) {
+			mes "[Ranger looking fine]";
+			mes "Yeah? Thanks.";
+			mes "Where the heck are you...";
+			mes "I can't even scream.";
+			close;
+		}
+		mes "[" + strcharinfo(0) + "]";
+		mes "A man named Briashen...";
+		next;
+		mes "[Ranger looking fine]";
+		mes "What?";
+		next;
+		mes "[Ranger looking fine]";
+		mes "I'm not hurt!";
+		mes "Who is it?";
+		next;
+		select( "Mirko and Yolanda" );
+		mes "[" + strcharinfo(0) + "]";
+		mes "Mirko and Yolanda asked to bring Briashen out after she went in alone injured.";
+		next;
+		mes "[Briashen]";
+		mes "You're right that I'm Briashen, but were you hurt? When?";
+		next;
+		mes "== I don't think you're lying. ==";
+		mes "== It looks normal on the outside, but could it be the effect of cognitive impairment that I have heard about? ==";
+		next;
+		mes "[Briashen]";
+		mes "That's weird. As you can see I'm fine. I'm looking for my friend who broke up here";
+		mes "His name is Khahris... he looks exactly like me";
+		next;
+		mes "[Briashen]";
+		mes "You can't go back until you find him";
+		mes "Tell Mirko that. Then see you later";
+		ill_anthell = 4;
+		erasequest 8721;
+		setquest 8722;
+		close2;
+		cloakonnpcself();
+		end;
+	}
+	if (ill_anthell == 4) {
+		cloakonnpcself();
+		mes "[Briashen]";
+		mes "Have you gone yet?";
+		mes "It's dangerous here. I'll find Khahris and go back soon.";
+		mes "Then see you later";
+		close;
+	}
+	if (ill_anthell == 5) {
+		mes "[Briashen]";
+		mes "Oh, I see you again";
+		mes "Have you met Mirko?";
+		mes "What did you say?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "He said he wanted to help you.";
+		next;
+		mes "[Briashen]";
+		mes "Ah~ You look pretty strong. Thank goodness.";
+		mes "Still, Mirko was too weak to come in here to search, so it was pointless to worry about.";
+		next;
+		select( "I don't think you said anything", "That's why you were hired" );	// note: the selection doesn't change the dialog
+		mes "[Briashen]";
+		mes "By the way, there are times when people have circumstances.";
+		mes "I'm in a hurry right now! Khahris might be in danger.";
+		next;
+		mes "[Briashen]";
+		mes "Did you hear that?";
+		mes "That's why Mirko asked me to help too.";
+		next;
+		select( "Maybe..." );
+		mes "[Briashen]";
+		mes "Are you sure what?";
+		next;
+		select( "A man named Khahris, is that real?" );
+		mes "[" + strcharinfo(0) + "]";
+		mes "A man named Khahris, is he real?";
+		next;
+		mes "[Briashen]";
+		mes "Are you asking the same question?";
+		mes "Seriously. We met here a few times, together with ants...";
+		mes "...got it?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "?";
+		next;
+		mes "[Briashen]";
+		mes "Anyway, we met here. We were amazed at how much alike we are.";
+		mes "But a few days ago...";
+		mes "When we were together, a large Maya suddenly appeared.";
+		next;
+		mes "[Briashen]";
+		mes "I'm seriously hurt...";
+		mes "How are you?";
+		mes "Who was hurt then?";
+		next;
+		mes "[Briashen]";
+		mes "Am I hurt?";
+		next;
+		mes "== This time, as Mirko said, Briaschen has a bad complexion. ==";
+		mes "== The bleeding should have stopped, but excessive movement will open the wound. ==";
+		next;
+		mes "== But it's not the posture of someone who's been hurt somewhere. ==";
+		mes "== Perception and reality are twisted and overworked. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "It's dangerous at this rate. You're sick, and you need to get out of here.";
+		next;
+		mes "[Briashen]";
+		mes "No, no. It's not me, it's Khahris";
+		mes "Khahris will be waiting for me... I have to go find it.";
+		next;
+		mes "[Briashen]";
+		mes "Khahris...";
+		next;
+		mes "== Briashen sat down. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Let's go outside too.";
+		next;
+		mes "[Briashen]";
+		mes "No. I've never seen an ant here... except when I'm with Mirko.";
+		mes "With Khahris... not once except for the last time Maya showed up.";
+		mes "Let's hunt together...";
+		next;
+		mes "[Briashen]";
+		mes "What did Khahris... do with me?";
+		next;
+		mes "[Briashen]";
+		mes "Save that friend.";
+		mes "As long as Maya doesn't come, I'm fine.";
+		ill_anthell = 6;
+		erasequest 8723;
+		setquest 8724;
+		cloakoffnpcself( "Rwella#part2" );
+		cloakoffnpcself( "Khahris#part3" );
+		cloakoffnpcself( "Khahris#part4" );
+		next;
+		mes "== Briashen, who was searching for memories, was confused. ==";
+		mes "== I need to explore the dungeon first. ==";
+		close;
+	}
+	if (ill_anthell == 6) {
+		mes "[Briashen]";
+		mes "Save that friend.";
+		mes "As long as Maya doesn't come, I'm fine...";
+		close;
+	}
+	end;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4056;
+	setunitdata .@npc_id, UNPC_CLOTHCOLOR, 1;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 7;
+	setunitdata .@npc_id, UNPC_HEADTOP, 1523;
+
+	// The parameters are gender, hair color, hair style, accessory 1-3 and robe
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8721) == 1" );
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8723) == 1" );
+	end;
+}
+
+
+ant_d02_i,86,189,0	script	#il_tw2	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (ill_anthell == 6 && isbegin_quest(8725) == 0)
+		cloakoffnpcself( "Rwella#part2" );
+	end;
+}
+
+// ant_d02_i,86,189,2	script	Rwella#part2	RANGER,{
+ant_d02_i,86,189,2	script(CLOAKED)	Rwella#part2	HIDDEN_NPC,{
+	if (ill_anthell == 6 && isbegin_quest(8725) == 0) {
+		mes "[Rwella]";
+		mes "What? What's your name?";
+		mes "Shouldn't you say that yourself first?";
+		mes "Ah... yes. " + strcharinfo(0) + ".";
+		mes "I'm Rwella";
+		next;
+		mes "[Rwella]";
+		mes "Didn't you see someone named Briashen around here?";
+		next;
+		mes "== The name of the person Briashen is looking for is... ==";
+		next;
+		mes "[Rwella]";
+		mes "Why are you standing there blankly?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Do you know the name Khahris?";
+		next;
+		mes "[Rwella]";
+		mes "No, I don't know";
+		mes "That's kind of rude, answer my question too. Have you seen Briashen?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "The name Briashen was looking for was Khahris...";
+		next;
+		mes "[Rwella]";
+		mes "...";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "?";
+		next;
+		mes "== Waited for a while, but Rwella didn't respond. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Rwella?";
+		next;
+		mes "[Rwella]";
+		mes "I don't think that's my name.";
+		next;
+		mes "[Rwella]";
+		mes "But... I don't think it's Khahris either.";
+		mes "I think you'll find out when you meet Briashen.";
+		mes "Where's Briashen?";
+		next;
+		mes "[Rwella]";
+		mes "Briashen...";
+		setquest 8725;
+		if (isbegin_quest(8725) != 1 || isbegin_quest(8726) != 1 || isbegin_quest(8727) != 1) {
+			specialeffect EF_DEFENDER;
+			cloakonnpcself();
+		}
+		else {
+			ill_anthell = 7;
+			erasequest 8724;
+			erasequest 8725;
+			erasequest 8726;
+			erasequest 8727;
+			setquest 8728;
+			cloakonnpcself();
+			cloakoffnpcself( "Rwella#part5" );
+			specialeffect EF_DEFENDER, AREA, "Rwella#part5";
+			mes "...I... I...!";
+			mes "I...";
+			mes "I thought...";
+			close2;
+			warp "anthell02",172,185;
+			end;
+		}
+		next;
+		mes "...";
+		next;
+		mes "== Welcome...? ==";
+		next;
+		mes "== Where is the real Khahris? ==";
+		close;
+	}
+	end;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4056;
+	setunitdata .@npc_id, UNPC_CLOTHCOLOR, 1;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 7;
+	setunitdata .@npc_id, UNPC_HEADTOP, 1523;
+
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8724) == 1 && isbegin_quest(8725) == 0" );
+	end;
+}
+
+ant_d02_i,86,189,2	duplicate(dummy_cloaked_npc)	Rwella#part5	ILL_VITATA
+
+ant_d02_i,258,42,0	script	#il_tw3	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (ill_anthell == 6 && isbegin_quest(8726) == 0)
+		cloakoffnpcself( "Khahris#part3" );
+	end;
+}
+
+// ant_d02_i,258,42,2	script	Khahris#part3	RANGER,{
+ant_d02_i,258,42,2	script(CLOAKED)	Khahris#part3	HIDDEN_NPC,{
+	if (ill_anthell == 6 && isbegin_quest(8726) == 0) {
+		mes "[Khahris]";
+		mes "What? What's your name?";
+		mes "Shouldn't you say that yourself first?";
+		mes "Ah... yes." + strcharinfo(0) + ".";
+		mes "I am Khahris.";
+		next;
+		mes "[Khahris]";
+		mes "Didn't you see a ranger named Briashen around here?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "I see. I'm looking for you...";
+		next;
+		mes "[Khahris]";
+		mes "Oh, thank God! Where are you?";
+		mes "I came back here to look for him... but he was attacked by Maya and he was taken away.";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "??";
+		next;
+		mes "[Khahris]";
+		mes "What's wrong? Is Briashen all right?";
+		next;
+		mes "== According to Bryashen, it was Khahris who was taken by Maya. ==";
+		mes "== Was it actually backwards? ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Yes. I'm fine...";
+		next;
+		mes "== But according to Mirko, Mirko has never met Khahris. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Do you know Mirko?";
+		next;
+		mes "[Khahris]";
+		mes "Okay, that's my employer. I'm sorry I did something.";
+		next;
+		select( "Who are you?" );
+		mes "[Khahris]";
+		mes "What do you mean by that?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Mirko said she never met you.";
+		next;
+		mes "== I waited for a while, but there is no response from the self-proclaimed Khahris. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Khahris?";
+		next;
+		mes "[Khahris]";
+		mes "Am I... Khahris?";
+		next;
+		mes "[Khahris]";
+		mes "I think you'll find out when you meet Briashen.";
+		mes "Where's Briashen?";
+		next;
+		mes "[Khahris]";
+		mes "Briashen...";
+		setquest 8726;
+		if (isbegin_quest(8725) != 1 || isbegin_quest(8726) != 1 || isbegin_quest(8727) != 1) {
+			specialeffect EF_DEFENDER;
+			cloakonnpcself();
+		}
+		else {
+			ill_anthell = 7;
+			erasequest 8724;
+			erasequest 8725;
+			erasequest 8726;
+			erasequest 8727;
+			setquest 8728;
+			cloakonnpcself();
+			cloakoffnpcself( "Khahris#part6" );
+			specialeffect EF_DEFENDER, AREA, "Khahris#part6";
+			mes "...I... I...!";
+			mes "I...";
+			mes "I thought...";
+			close2;
+			warp "anthell02",172,185;
+			end;
+		}
+		next;
+		mes "...";
+		next;
+		mes "== Welcome...? ==";
+		next;
+		mes "== Where is the real Khahris? ==";
+		close;
+	}
+	end;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4056;
+	setunitdata .@npc_id, UNPC_CLOTHCOLOR, 1;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 7;
+	setunitdata .@npc_id, UNPC_HEADTOP, 1523;
+
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8724) == 1 && isbegin_quest(8726) == 0" );
+	end;
+}
+ant_d02_i,258,42,2	duplicate(dummy_cloaked_npc)	Khahris#part6	ILL_VITATA
+
+
+ant_d02_i,259,147,0	script	#il_tw4	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (ill_anthell == 6 && isbegin_quest(8727) == 0)
+		cloakoffnpcself( "Khahris#part4" );
+	end;
+}
+
+// ant_d02_i,259,147,7	script	Khahris#part4	GUNSLINGER,{
+ant_d02_i,259,147,7	script(CLOAKED)	Khahris#part4	HIDDEN_NPC,{
+	if (ill_anthell == 6 && isbegin_quest(8727) == 0) {
+		mes "[Khahris]";
+		mes "What? What's your name?";
+		mes "Shouldn't you say that yourself first?";
+		mes "Ah... yes. " + strcharinfo(0) + ".";
+		mes "I am Khahris.";
+		next;
+		mes "== By the way, the Khahris that Briashen was looking for is not a gunslinger. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Khahris...";
+		next;
+		mes "[Khahris]";
+		mes "Yeah. I suddenly ran into a place like this and asked what your name was. You have a very strong heart. What is it?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "...No, I was asked to find Khahris.";
+		next;
+		mes "[Khahris]";
+		mes "What? To whom? Maybe Briashen?";
+		mes "Is Briashen all right?";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Yes. I'm fine...";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "...";
+		next;
+		select( "Who are you?" );
+		mes "[Khahris]";
+		mes "Huh? What are you talking about, I'm Khahris the adventurer. I told you before.";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Briashen asked me to find someone who looked just like her and was a ranger.";
+		mes "And why are you doing this here without coming out if you're safe?";
+		next;
+		mes "== I waited for an answer for a while, but there is no response from the self-proclaimed Khahris. ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Khahris?";
+		next;
+		mes "[Khahris]";
+		mes "Am I... Khahris?";
+		next;
+		mes "[Khahris]";
+		mes "I think you'll find out when you meet Briashen.";
+		mes "Where's Briashen?";
+		next;
+		mes "== Khahris gripped his forearm with great force. ==";
+		mes "== It hurts enough to scream! ==";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Evil! It hurts!";
+		next;
+		mes "[Khahris]";
+		mes "Take me to Briashen's!";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Leave this!";
+		next;
+		mes "[Khahris]";
+		mes "Who am I, Briashen...?";
+		mes "Who am I...?";
+		setquest 8727;
+		if (isbegin_quest(8725) != 1 || isbegin_quest(8726) != 1 || isbegin_quest(8727) != 1) {
+			specialeffect EF_DEFENDER;
+			cloakonnpcself();
+		}
+		else {
+			ill_anthell = 7;
+			erasequest 8724;
+			erasequest 8725;
+			erasequest 8726;
+			erasequest 8727;
+			setquest 8728;
+			cloakonnpcself();
+			cloakoffnpcself( "Khahris#part7" );
+			specialeffect EF_DEFENDER, AREA, "Khahris#part7";
+			mes "...I... I...!";
+			mes "I...";
+			mes "I thought...";
+			close2;
+			warp "anthell02",172,185;
+			end;
+		}
+		next;
+		mes "...";
+		next;
+		mes "== Welcome...? ==";
+		next;
+		mes "== Where is the real Khahris? ==";
+		close;
+	}
+	end;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 24;
+	setunitdata .@npc_id, UNPC_CLOTHCOLOR, 3;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 7;
+	setunitdata .@npc_id, UNPC_HEADTOP, 1523;
+
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8724) == 1 && isbegin_quest(8727) == 0" );
+	end;
+}
+ant_d02_i,259,147,7	duplicate(dummy_cloaked_npc)	Khahris#part7	ILL_VITATA
+
+
+
+ant_d02_i,130,73,0	script	#il_tw5	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (ill_anthell == 8) {
+		cloakoffnpcself( "Briashen#part8" );
+		cloakoffnpcself( "Vitata#part9" );
+		end;
+	}
+	end;
+}
+
+// ant_d02_i,130,73,2	script	Briashen#part8	RANGER,{
+ant_d02_i,130,73,2	script(CLOAKED)	Briashen#part8	HIDDEN_NPC,{
+	if (ill_anthell == 8) {
+		mes "[" + strcharinfo(0) + "]";
+		mes "!";
+		unittalk getcharid(3), "" + strcharinfo(0) + " : !", bc_self;
+		next;
+		select( "Is that Briashen real?" );
+		mes "[" + strcharinfo(0) + "]";
+		mes "...";
+		unittalk getcharid(3), "" + strcharinfo(0) + " : ...", bc_self;
+		next;
+		select( "That Vitata is Khahris" );
+		mes "[" + strcharinfo(0) + "]";
+		mes "...";
+		unittalk getcharid(3), "" + strcharinfo(0) + " : ...", bc_self;
+		next;
+		select( "How can I know that" );
+		mes "[" + strcharinfo(0) + "]";
+		mes "Khahris!";
+		unittalk getcharid(3), "" + strcharinfo(0) + " : Khahris!", bc_self;
+		next;
+		mes "== Vitata turned this way. ==";
+		next;
+		mes "[Briashen]";
+		mes "...";
+		next;
+		mes "[Briashen]";
+		mes "" + strcharinfo(0) + ".";
+		mes "I can't remember what Khahris looked like...";
+		next;
+		// specialeffect 1313;	// unsupported effect id?
+		mes "[" + strcharinfo(0) + "]";
+		mes "Briashen, that's dangerous!";
+		next;
+		mes "[Briashen]";
+		mes "Ugh!";
+		cloakonnpcself( "Vitata#part9" );
+		cloakoffnpcself( "Quiet Maya#part10" );
+		cloakoffnpcself( "Vitata#part11" );
+		specialeffect EF_FREEZE, AREA, "Quiet Maya#part10";
+		// specialeffect 1314, AREA, "Vitata#part11";	// unsupported effect id?
+		next;
+		mes "[Briashen]";
+		mes "Khahris...!?";
+		next;
+		mes "[Khahris]";
+		mes "..., ...";
+		npctalk "Briashen. I'm sorry. I don't think we can go on adventures together anymore.", "Vitata#part11", bc_self;
+		next;
+		mes "[Briashen]";
+		mes "What?? No!";
+		mes "Khahris!!";
+		next;
+		mes "== The words of Khahris can be heard from afar as if under water... ==";
+		next;
+		mes "[Khahris]";
+		mes "......, ....";
+		npctalk "I can't go out anyway. Don't be sad. I wish I could be a part of your heart. It was fun.", "Vitata#part11", bc_self;
+		next;
+		mes "[Briashen]";
+		mes "Khahris?";
+		next;
+		mes "[Khahris]";
+		mes "...., ...";
+		npctalk "Adventurer. I'm just part of the perception error built in when Briaschen came in here.", "Vitata#part11", bc_self;
+		next;
+		mes "[Briashen]";
+		mes "What are you talking about?";
+		next;
+		mes "[Khahris]";
+		mes "..., .....";
+		npctalk "I would have disappeared anyway if Briashen didn't come, but thank you for coming to find me.", "Vitata#part11", bc_self;
+		next;
+		mes "[Khahris]";
+		mes "...., .., ...";
+		next;
+		mes "== I can't hear Khahris anymore. ==";
+		mes "== Maya is moving her antennae to hear a story. ==";
+		next;
+		mes "[Briashen]";
+		mes "Khahris!";
+		next;
+		specialeffect EF_CLOUD4, AREA, "Vitata#part11";
+		cloakonnpcself( "Vitata#part11" );
+		cloakonnpcself( "Quiet Maya#part10" );
+		mes "== Maya and Khahris melted into darkness and disappeared. ==";
+		ill_anthell = 9;
+		erasequest 8729;
+		setquest 8730;
+		close2;
+		warp "anthell02",172,185;
+		end;
+	}
+	end;
+
+OnInit:
+	.@npc_id = getnpcid(0);
+	setunitdata .@npc_id, UNPC_CLASS, 4056;
+	setunitdata .@npc_id, UNPC_CLOTHCOLOR, 1;
+	setunitdata .@npc_id, UNPC_HAIRSTYLE, 13;
+	setunitdata .@npc_id, UNPC_HAIRCOLOR, 7;
+	setunitdata .@npc_id, UNPC_HEADTOP, 1523;
+
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8729) == 1" );
+	end;
+}
+
+ant_d02_i,125,73,6	script(CLOAKED)	Vitata#part9	ILL_VITATA,{
+	npctalk "...", "", bc_self;
+	end;
+}
+
+ant_d02_i,128,73,6	duplicate(dummy_cloaked_npc)	Quiet Maya#part10	ILL_MAYA
+ant_d02_i,129,73,2	duplicate(dummy_cloaked_npc)	Vitata#part11	ILL_VITATA

+ 2 - 2
npc/re/scripts_athena.conf

@@ -130,7 +130,7 @@ npc: npc/re/merchants/Dealer_Update.txt
 npc: npc/re/merchants/diamond.txt
 npc: npc/re/merchants/Emperium_Seller.txt
 npc: npc/re/merchants/enchan_edda_half_moon.txt
-npc: npc/re/merchants/enchan_illusion_16_2.txt
+npc: npc/re/merchants/enchan_illusion_dungeons.txt
 npc: npc/re/merchants/enchan_illusion_17_1.txt
 npc: npc/re/merchants/enchan_ko.txt
 npc: npc/re/merchants/enchan_mal.txt
@@ -234,7 +234,7 @@ npc: npc/re/quests/quests_15_1.txt
 npc: npc/re/quests/quests_15_2.txt
 npc: npc/re/quests/quests_16_1.txt
 npc: npc/re/quests/quests_16_2.txt
-npc: npc/re/quests/quests_16_2_illusion.txt
+npc: npc/re/quests/quests_illusion_dungeons.txt
 npc: npc/re/quests/quests_17_1.txt
 npc: npc/re/quests/quests_17_2.txt
 npc: npc/re/quests/quests_aldebaran.txt