Compare commits
18 Commits
hotfix/cli
...
script/epi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f73a858d6c | ||
|
|
150fc78866 | ||
|
|
a5c939bec9 | ||
|
|
88ce3fe5d3 | ||
|
|
59c716ce23 | ||
|
|
5928ad75c6 | ||
|
|
203b9d740d | ||
|
|
75c3fd1fc3 | ||
|
|
e803ba5f8a | ||
|
|
c3ff38865e | ||
|
|
94a731aad0 | ||
|
|
effd55d1ce | ||
|
|
aacca52eec | ||
|
|
4cab85cb19 | ||
|
|
54dc915661 | ||
|
|
612bf702ba | ||
|
|
6f6c74b723 | ||
|
|
7b816e18fb |
@@ -47,6 +47,8 @@ Body:
|
||||
Value: 5
|
||||
- Name: REPUTATION_EP18
|
||||
Value: 3
|
||||
- Name: REPUTATION_EP19
|
||||
Value: 4
|
||||
|
||||
Footer:
|
||||
Imports:
|
||||
|
||||
@@ -2613,7 +2613,7 @@ Body:
|
||||
Flags:
|
||||
BuyingStore: true
|
||||
Script: |
|
||||
sc_start SC_SlowDown,5000,0;
|
||||
sc_start SC_SLOWDOWN,5000,100;
|
||||
- Id: 12018
|
||||
AegisName: Fire_Cracker
|
||||
Name: Firecracker
|
||||
|
||||
@@ -3660,17 +3660,27 @@ Body:
|
||||
Reproduce: true
|
||||
CastCancel: true
|
||||
CastTime:
|
||||
- Level: 1
|
||||
Time: 700
|
||||
- Level: 2
|
||||
Time: 1400
|
||||
- Level: 3
|
||||
Time: 2100
|
||||
- Level: 4
|
||||
Time: 2800
|
||||
- Level: 5
|
||||
Time: 3500
|
||||
AfterCastActDelay:
|
||||
- Level: 1
|
||||
Time: 1000
|
||||
- Level: 2
|
||||
Time: 2000
|
||||
Time: 1200
|
||||
- Level: 3
|
||||
Time: 3000
|
||||
Time: 1400
|
||||
- Level: 4
|
||||
Time: 4000
|
||||
Time: 1600
|
||||
- Level: 5
|
||||
Time: 5000
|
||||
AfterCastActDelay: 700
|
||||
Time: 1800
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@@ -3722,7 +3732,7 @@ Body:
|
||||
Time: 4000
|
||||
- Level: 5
|
||||
Time: 5000
|
||||
AfterCastActDelay: 700
|
||||
AfterCastActDelay: 1000
|
||||
Duration1: 100
|
||||
Requires:
|
||||
SpCost:
|
||||
|
||||
@@ -501,19 +501,19 @@ Body:
|
||||
7@thts: true
|
||||
8@thts: true
|
||||
- Id: 67
|
||||
Name: The Maze of Oz
|
||||
Name: Oz Labyrinth
|
||||
Enter:
|
||||
Map: 1@oz
|
||||
X: 284
|
||||
Y: 167
|
||||
- Id: 68
|
||||
Name: Thor Gunsu Base
|
||||
Name: Thor Military Base
|
||||
Enter:
|
||||
Map: 1@tcamp
|
||||
X: 103
|
||||
Y: 237
|
||||
- Id: 69
|
||||
Name: A Gathering Place of Wolves
|
||||
Name: Wolves Gathering Place
|
||||
Enter:
|
||||
Map: 1@nyr
|
||||
X: 194
|
||||
@@ -529,7 +529,7 @@ Body:
|
||||
AdditionalMaps:
|
||||
2@nyr: true
|
||||
- Id: 71
|
||||
Name: Villa of High Priest
|
||||
Name: High Priest's Villa
|
||||
Enter:
|
||||
Map: 1@adv
|
||||
X: 123
|
||||
|
||||
@@ -187652,7 +187652,7 @@ Body:
|
||||
bonus2 bSkillAtk,"GC_CROSSIMPACT",20*(.@r/3);
|
||||
bonus2 bSkillAtk,"GC_ROLLINGCUTTER",20*(.@r/3);
|
||||
bonus2 bSkillAtk,"SC_TRIANGLESHOT",20*(.@r/3);
|
||||
bonus2 bSkillAtk,"SC_STARTMARK",20*(.@r/3);
|
||||
bonus2 bSkillAtk,"SC_FATALMENACE",20*(.@r/3);
|
||||
if (.@r>=9) {
|
||||
bonus bLongAtkRate,10;
|
||||
bonus bShortAtkRate,10;
|
||||
|
||||
@@ -86200,31 +86200,31 @@ Body:
|
||||
Flags:
|
||||
BuyingStore: true
|
||||
- Id: 1001072
|
||||
AegisName: aegis_1001072
|
||||
AegisName: Evil_Black_Bid
|
||||
Name: Evil Orb
|
||||
Type: Etc
|
||||
Buy: 1480
|
||||
Weight: 10
|
||||
- Id: 1001073
|
||||
AegisName: aegis_1001073
|
||||
AegisName: Ectoplasmic_Stone
|
||||
Name: Ectoplasmic Stone
|
||||
Type: Etc
|
||||
Buy: 1460
|
||||
Weight: 10
|
||||
- Id: 1001074
|
||||
AegisName: aegis_1001074
|
||||
AegisName: Heavy_Chain
|
||||
Name: Heavy Chain
|
||||
Type: Etc
|
||||
Buy: 1480
|
||||
Weight: 10
|
||||
- Id: 1001075
|
||||
AegisName: aegis_1001075
|
||||
AegisName: Evil_Minded_Ruby
|
||||
Name: Evil Minded Ruby
|
||||
Type: Etc
|
||||
Buy: 1500
|
||||
Weight: 10
|
||||
- Id: 1001076
|
||||
AegisName: aegis_1001076
|
||||
AegisName: Small_Sewing_Box
|
||||
Name: Small Sewing Kit
|
||||
Type: Etc
|
||||
Buy: 1640
|
||||
@@ -86236,37 +86236,37 @@ Body:
|
||||
Buy: 1600
|
||||
Weight: 10
|
||||
- Id: 1001078
|
||||
AegisName: aegis_1001078
|
||||
AegisName: Blue_Moon_Stone
|
||||
Name: Fragments of the Blue Moon
|
||||
Type: Etc
|
||||
Buy: 1720
|
||||
Weight: 10
|
||||
- Id: 1001079
|
||||
AegisName: aegis_1001079
|
||||
AegisName: Weird_Tentacle
|
||||
Name: Monstrous Tentacles
|
||||
Type: Etc
|
||||
Buy: 1520
|
||||
Weight: 10
|
||||
- Id: 1001080
|
||||
AegisName: aegis_1001080
|
||||
AegisName: Congealed_Poison
|
||||
Name: Congealed Poison
|
||||
Type: Etc
|
||||
Buy: 1600
|
||||
Weight: 10
|
||||
- Id: 1001081
|
||||
AegisName: aegis_1001081
|
||||
AegisName: Slicky_Fluid
|
||||
Name: Slimy Fluid
|
||||
Type: Etc
|
||||
Buy: 1560
|
||||
Weight: 10
|
||||
- Id: 1001082
|
||||
AegisName: aegis_1001082
|
||||
AegisName: Reptile_Stone
|
||||
Name: Monster's Stone
|
||||
Type: Etc
|
||||
Buy: 1720
|
||||
Weight: 10
|
||||
- Id: 1001083
|
||||
AegisName: aegis_1001083
|
||||
AegisName: Turn_Yellow_Leaf
|
||||
Name: Maple Leaves
|
||||
Type: Etc
|
||||
Buy: 1640
|
||||
@@ -86278,13 +86278,13 @@ Body:
|
||||
Buy: 1480
|
||||
Weight: 10
|
||||
- Id: 1001085
|
||||
AegisName: aegis_1001085
|
||||
AegisName: Cool_Liquid
|
||||
Name: Cool Liquid
|
||||
Type: Etc
|
||||
Buy: 1460
|
||||
Weight: 10
|
||||
- Id: 1001086
|
||||
AegisName: aegis_1001086
|
||||
AegisName: Green_Crystal_Fragment
|
||||
Name: Blue Crystal Shard
|
||||
Type: Etc
|
||||
Buy: 1480
|
||||
@@ -86296,7 +86296,7 @@ Body:
|
||||
Buy: 1600
|
||||
Weight: 10
|
||||
- Id: 1001088
|
||||
AegisName: aegis_1001088
|
||||
AegisName: Fresh_Pear
|
||||
Name: Fresh Pear
|
||||
Type: Etc
|
||||
Buy: 1640
|
||||
|
||||
@@ -113439,3 +113439,216 @@ Body:
|
||||
- Index: 2
|
||||
Item: Enchant_Stone_Box35
|
||||
Amount: 10
|
||||
# custom rates
|
||||
- Group: D_GW_EXTRACTOR
|
||||
SubGroups:
|
||||
- SubGroup: 1
|
||||
List:
|
||||
- Index: 0
|
||||
Item: EP19_D_P_Ore
|
||||
Amount: 1
|
||||
Rate: 5
|
||||
- Index: 1
|
||||
Item: EP19_N_P_Ore
|
||||
Amount: 1
|
||||
Rate: 3
|
||||
- Index: 2
|
||||
Item: EP19_D_P_Crystal
|
||||
Amount: 1
|
||||
Rate: 2
|
||||
- Index: 3
|
||||
Item: EP19_N_P_Crystal
|
||||
Amount: 1
|
||||
Rate: 1
|
||||
- Index: 4
|
||||
Item: EP19_D_P_Stone
|
||||
Amount: 1
|
||||
Rate: 1
|
||||
- Index: 5
|
||||
Item: EP19_S_F_1_Extract
|
||||
Amount: 1
|
||||
Rate: 1
|
||||
- Index: 6
|
||||
Item: EP19_S_F_2_Extract
|
||||
Amount: 1
|
||||
Rate: 1
|
||||
- Index: 7
|
||||
Item: EP19_S_F_3_Extract
|
||||
Amount: 1
|
||||
Rate: 1
|
||||
- Index: 8
|
||||
Item: EP19_Gla_Extract
|
||||
Amount: 1
|
||||
Rate: 1
|
||||
- Index: 9
|
||||
Item: Snow_F_Ore
|
||||
Amount: 1
|
||||
Rate: 12
|
||||
- Index: 10
|
||||
Item: Snow_F_Stone1
|
||||
Amount: 1
|
||||
Rate: 5
|
||||
- Index: 11
|
||||
Item: Snow_F_Stone2
|
||||
Amount: 1
|
||||
Rate: 3
|
||||
- Index: 12
|
||||
Item: Snow_F_Stone3
|
||||
Amount: 1
|
||||
Rate: 1
|
||||
- Index: 13
|
||||
Item: EP19_D_P_Ore
|
||||
Amount: 2
|
||||
Rate: 5
|
||||
- Index: 14
|
||||
Item: EP19_N_P_Ore
|
||||
Amount: 2
|
||||
Rate: 3
|
||||
- Index: 15
|
||||
Item: EP19_D_P_Crystal
|
||||
Amount: 2
|
||||
Rate: 2
|
||||
- Index: 16
|
||||
Item: EP19_N_P_Crystal
|
||||
Amount: 2
|
||||
Rate: 1
|
||||
- Index: 17
|
||||
Item: EP19_D_P_Stone
|
||||
Amount: 2
|
||||
Rate: 1
|
||||
- Index: 18
|
||||
Item: EP19_S_F_1_Extract
|
||||
Amount: 2
|
||||
Rate: 1
|
||||
- Index: 19
|
||||
Item: EP19_S_F_2_Extract
|
||||
Amount: 2
|
||||
Rate: 1
|
||||
- Index: 20
|
||||
Item: EP19_S_F_3_Extract
|
||||
Amount: 2
|
||||
Rate: 1
|
||||
- Index: 21
|
||||
Item: EP19_Gla_Extract
|
||||
Amount: 2
|
||||
Rate: 1
|
||||
- Index: 22
|
||||
Item: Snow_F_Ore
|
||||
Amount: 2
|
||||
Rate: 12
|
||||
- Index: 23
|
||||
Item: Snow_F_Stone1
|
||||
Amount: 2
|
||||
Rate: 5
|
||||
- Index: 24
|
||||
Item: Snow_F_Stone2
|
||||
Amount: 2
|
||||
Rate: 3
|
||||
- Index: 25
|
||||
Item: Snow_F_Stone3
|
||||
Amount: 2
|
||||
Rate: 1
|
||||
- Index: 26
|
||||
Item: EP19_D_P_Ore
|
||||
Amount: 3
|
||||
Rate: 5
|
||||
- Index: 27
|
||||
Item: EP19_N_P_Ore
|
||||
Amount: 3
|
||||
Rate: 3
|
||||
- Index: 28
|
||||
Item: EP19_D_P_Crystal
|
||||
Amount: 3
|
||||
Rate: 2
|
||||
- Index: 29
|
||||
Item: EP19_N_P_Crystal
|
||||
Amount: 3
|
||||
Rate: 1
|
||||
- Index: 30
|
||||
Item: EP19_D_P_Stone
|
||||
Amount: 3
|
||||
Rate: 1
|
||||
- Index: 31
|
||||
Item: EP19_S_F_1_Extract
|
||||
Amount: 3
|
||||
Rate: 1
|
||||
- Index: 32
|
||||
Item: EP19_S_F_2_Extract
|
||||
Amount: 3
|
||||
Rate: 1
|
||||
- Index: 33
|
||||
Item: EP19_S_F_3_Extract
|
||||
Amount: 3
|
||||
Rate: 1
|
||||
- Index: 34
|
||||
Item: EP19_Gla_Extract
|
||||
Amount: 3
|
||||
Rate: 1
|
||||
- Index: 35
|
||||
Item: Snow_F_Ore
|
||||
Amount: 3
|
||||
Rate: 12
|
||||
- Index: 36
|
||||
Item: Snow_F_Stone1
|
||||
Amount: 3
|
||||
Rate: 5
|
||||
- Index: 37
|
||||
Item: Snow_F_Stone2
|
||||
Amount: 3
|
||||
Rate: 3
|
||||
- Index: 38
|
||||
Item: Snow_F_Stone3
|
||||
Amount: 3
|
||||
Rate: 1
|
||||
- Index: 39
|
||||
Item: EP19_D_P_Ore
|
||||
Amount: 4
|
||||
Rate: 5
|
||||
- Index: 40
|
||||
Item: EP19_N_P_Ore
|
||||
Amount: 4
|
||||
Rate: 3
|
||||
- Index: 41
|
||||
Item: EP19_D_P_Crystal
|
||||
Amount: 4
|
||||
Rate: 2
|
||||
- Index: 42
|
||||
Item: EP19_N_P_Crystal
|
||||
Amount: 4
|
||||
Rate: 1
|
||||
- Index: 43
|
||||
Item: EP19_D_P_Stone
|
||||
Amount: 4
|
||||
Rate: 1
|
||||
- Index: 44
|
||||
Item: EP19_S_F_1_Extract
|
||||
Amount: 4
|
||||
Rate: 1
|
||||
- Index: 45
|
||||
Item: EP19_S_F_2_Extract
|
||||
Amount: 4
|
||||
Rate: 1
|
||||
- Index: 46
|
||||
Item: EP19_S_F_3_Extract
|
||||
Amount: 4
|
||||
Rate: 1
|
||||
- Index: 47
|
||||
Item: EP19_Gla_Extract
|
||||
Amount: 4
|
||||
Rate: 1
|
||||
- Index: 48
|
||||
Item: Snow_F_Ore
|
||||
Amount: 4
|
||||
Rate: 12
|
||||
- Index: 49
|
||||
Item: Snow_F_Stone1
|
||||
Amount: 4
|
||||
Rate: 5
|
||||
- Index: 50
|
||||
Item: Snow_F_Stone2
|
||||
Amount: 4
|
||||
Rate: 3
|
||||
- Index: 51
|
||||
Item: Snow_F_Stone3
|
||||
Amount: 4
|
||||
Rate: 1
|
||||
|
||||
@@ -4359,110 +4359,110 @@ Body:
|
||||
- Item: S_Caster_Weapon
|
||||
- Item: S_Caster_earring
|
||||
- Item: S_Caster_Pendant
|
||||
# - Item: Ice_F_Stone_Box2
|
||||
# RewardGroup: ICE_F_STONE_BOX2
|
||||
# RequiredRequirementsCount: 3
|
||||
# Requirements:
|
||||
# - Item: Ice_F_Stone_Str
|
||||
# - Item: Ice_F_Stone_Dex
|
||||
# - Item: Ice_F_Stone_Agi
|
||||
# - Item: Ice_F_Stone_Int
|
||||
# - Item: Ice_F_Stone_Vit
|
||||
# - Item: Ice_F_Stone_luk
|
||||
# - Item: Ice_F_Stone_Def
|
||||
# - Item: Ice_F_Stone_Mdef
|
||||
# - Item: Ice_F_Stone_Ran
|
||||
# - Item: Ice_F_Stone_War
|
||||
# - Item: Ice_F_Stone_Mag
|
||||
# - Item: Ice_F_Stone_R_Reject
|
||||
# - Item: Ice_F_Stone_Force
|
||||
# - Item: Ice_F_Stone_S_Delay
|
||||
# - Item: Ice_F_Stone_Skill_1
|
||||
# - Item: Ice_F_Stone_Skill_2
|
||||
# - Item: Ice_F_Stone_Skill_3
|
||||
# - Item: Ice_F_Stone_Skill_4
|
||||
# - Item: Ice_F_Stone_Skill_5
|
||||
# - Item: Ice_F_Stone_Skill_6
|
||||
# - Item: Ice_F_Stone_Skill_7
|
||||
# - Item: Ice_F_Stone_Skill_8
|
||||
# - Item: Ice_F_Stone_Skill_9
|
||||
# - Item: Ice_F_Stone_Skill_10
|
||||
# - Item: Ice_F_Stone_Skill_11
|
||||
# - Item: Ice_F_Stone_Skill_12
|
||||
# - Item: Ice_F_Stone_Skill_13
|
||||
# - Item: Ice_F_Stone_Skill_14
|
||||
# - Item: Ice_F_Stone_Skill_15
|
||||
# - Item: Ice_F_Stone_Skill_16
|
||||
# - Item: Ice_F_Stone_Skill_17
|
||||
# - Item: Ice_F_Stone_Skill_18
|
||||
# - Item: Ice_F_Stone_Skill_19
|
||||
# - Item: Ice_F_Stone_Skill_20
|
||||
# - Item: Ice_F_Stone_Skill_21
|
||||
# - Item: Ice_F_Stone_Skill_22
|
||||
# - Item: Ice_F_Stone_Skill_23
|
||||
# - Item: Ice_F_Stone_Skill_24
|
||||
# - Item: Ice_F_Stone_Skill_25
|
||||
# - Item: Ice_F_Stone_Skill_26
|
||||
# - Item: Ice_F_Stone_Skill_27
|
||||
# - Item: Ice_F_Stone_Skill_28
|
||||
# - Item: Ice_F_Stone_Skill_29
|
||||
# - Item: Ice_F_Stone_Skill_30
|
||||
# - Item: Ice_F_Stone_Skill_31
|
||||
# - Item: Ice_F_Stone_Skill_32
|
||||
# - Item: Ice_F_Stone_Skill_33
|
||||
# - Item: Ice_F_Stone_Skill_34
|
||||
# - Item: Ice_F_Stone_Skill_35
|
||||
# - Item: Ice_F_Stone_Skill_36
|
||||
# - Item: Ice_F_Stone_Skill_37
|
||||
# - Item: Ice_F_Stone_Skill_38
|
||||
# - Item: Ice_F_Stone_Skill_39
|
||||
# - Item: Ice_F_Stone_Skill_40
|
||||
# - Item: Ice_F_Stone_Skill_41
|
||||
# - Item: Ice_F_Stone_Skill_42
|
||||
# - Item: Ice_F_Stone_Skill_43
|
||||
# - Item: Ice_F_Stone_Skill_44
|
||||
# - Item: Ice_F_Stone_Skill_45
|
||||
# - Item: Ice_F_Stone_Skill_46
|
||||
# - Item: Ice_F_Stone_Skill_47
|
||||
# - Item: Ice_F_Stone_Skill_48
|
||||
# - Item: Ice_F_Stone_Skill_49
|
||||
# - Item: Ice_F_Stone_Skill_50
|
||||
# - Item: Ice_F_Stone_Skill_51
|
||||
# - Item: Ice_F_Stone_Skill_52
|
||||
# - Item: Ice_F_Stone_Skill_53
|
||||
# - Item: Ice_F_Stone_Skill_54
|
||||
# - Item: Ice_F_Stone_Speed
|
||||
# - Item: Ice_F_Stone_Caster
|
||||
# - Item: Ice_F_Stone_Critical
|
||||
# - Item: Ice_F_Stone_Guide
|
||||
# - Item: Ice_F_Stone_Above
|
||||
# - Item: Ice_F_Stone_P_Full
|
||||
# - Item: Ice_F_Stone_M_Counter
|
||||
# - Item: Ice_F_Stone_Hp
|
||||
# - Item: Ice_F_Stone_Sp
|
||||
# - Item: Ice_F_Stone_Heal
|
||||
# - Item: Ice_F_Stone_Robust
|
||||
# - Item: Ice_F_Stone_F_Cast
|
||||
# - Item: Ice_F_Stone_M_F
|
||||
# - Item: Ice_F_Stone_P_F
|
||||
# - Item: Ice_F_Stone_Un_Vit
|
||||
# - Item: Ice_F_Stone_Sp_Int
|
||||
# - Item: Ice_F_Stone_Fi_Dex
|
||||
# - Item: Ice_F_Stone_Ov_Str
|
||||
# - Item: Ice_F_Stone_Fa_Agi
|
||||
# - Item: Ice_F_Stone_Lu_Luk
|
||||
# - Item: Ice_F_Stone_A_Delay
|
||||
# - Item: Ice_F_Stone_E_Archer
|
||||
# - Item: Ice_F_Stone_Fatal
|
||||
# - Item: Ice_F_Stone_F_Spirit
|
||||
# - Item: Ice_F_Stone_Spell
|
||||
# - Item: Ice_F_Stone_HealHP
|
||||
# - Item: Ice_F_Stone_HealSP
|
||||
# - Item: Ice_F_Stone_Life
|
||||
# - Item: Ice_F_Stone_Soul
|
||||
# - Item: Ice_F_Stone_M_Heal
|
||||
# - Item: Ice_F_Stone_M_Soul
|
||||
# - Item: Ice_F_Stone_A_Force
|
||||
- Item: Ice_F_Stone_Box2
|
||||
RewardGroup: ICE_F_STONE_BOX
|
||||
RequiredRequirementsCount: 3
|
||||
Requirements:
|
||||
- Item: Ice_F_Stone_Str
|
||||
- Item: Ice_F_Stone_Dex
|
||||
- Item: Ice_F_Stone_Agi
|
||||
- Item: Ice_F_Stone_Int
|
||||
- Item: Ice_F_Stone_Vit
|
||||
- Item: Ice_F_Stone_luk
|
||||
- Item: Ice_F_Stone_Def
|
||||
- Item: Ice_F_Stone_Mdef
|
||||
- Item: Ice_F_Stone_Ran
|
||||
- Item: Ice_F_Stone_War
|
||||
- Item: Ice_F_Stone_Mag
|
||||
- Item: Ice_F_Stone_R_Reject
|
||||
- Item: Ice_F_Stone_Force
|
||||
- Item: Ice_F_Stone_S_Delay
|
||||
- Item: Ice_F_Stone_Skill_1
|
||||
- Item: Ice_F_Stone_Skill_2
|
||||
- Item: Ice_F_Stone_Skill_3
|
||||
- Item: Ice_F_Stone_Skill_4
|
||||
- Item: Ice_F_Stone_Skill_5
|
||||
- Item: Ice_F_Stone_Skill_6
|
||||
- Item: Ice_F_Stone_Skill_7
|
||||
- Item: Ice_F_Stone_Skill_8
|
||||
- Item: Ice_F_Stone_Skill_9
|
||||
- Item: Ice_F_Stone_Skill_10
|
||||
- Item: Ice_F_Stone_Skill_11
|
||||
- Item: Ice_F_Stone_Skill_12
|
||||
- Item: Ice_F_Stone_Skill_13
|
||||
- Item: Ice_F_Stone_Skill_14
|
||||
- Item: Ice_F_Stone_Skill_15
|
||||
- Item: Ice_F_Stone_Skill_16
|
||||
- Item: Ice_F_Stone_Skill_17
|
||||
- Item: Ice_F_Stone_Skill_18
|
||||
- Item: Ice_F_Stone_Skill_19
|
||||
- Item: Ice_F_Stone_Skill_20
|
||||
- Item: Ice_F_Stone_Skill_21
|
||||
- Item: Ice_F_Stone_Skill_22
|
||||
- Item: Ice_F_Stone_Skill_23
|
||||
- Item: Ice_F_Stone_Skill_24
|
||||
- Item: Ice_F_Stone_Skill_25
|
||||
- Item: Ice_F_Stone_Skill_26
|
||||
- Item: Ice_F_Stone_Skill_27
|
||||
- Item: Ice_F_Stone_Skill_28
|
||||
- Item: Ice_F_Stone_Skill_29
|
||||
- Item: Ice_F_Stone_Skill_30
|
||||
- Item: Ice_F_Stone_Skill_31
|
||||
- Item: Ice_F_Stone_Skill_32
|
||||
- Item: Ice_F_Stone_Skill_33
|
||||
- Item: Ice_F_Stone_Skill_34
|
||||
- Item: Ice_F_Stone_Skill_35
|
||||
- Item: Ice_F_Stone_Skill_36
|
||||
- Item: Ice_F_Stone_Skill_37
|
||||
- Item: Ice_F_Stone_Skill_38
|
||||
- Item: Ice_F_Stone_Skill_39
|
||||
- Item: Ice_F_Stone_Skill_40
|
||||
- Item: Ice_F_Stone_Skill_41
|
||||
- Item: Ice_F_Stone_Skill_42
|
||||
- Item: Ice_F_Stone_Skill_43
|
||||
- Item: Ice_F_Stone_Skill_44
|
||||
- Item: Ice_F_Stone_Skill_45
|
||||
- Item: Ice_F_Stone_Skill_46
|
||||
- Item: Ice_F_Stone_Skill_47
|
||||
- Item: Ice_F_Stone_Skill_48
|
||||
- Item: Ice_F_Stone_Skill_49
|
||||
- Item: Ice_F_Stone_Skill_50
|
||||
- Item: Ice_F_Stone_Skill_51
|
||||
- Item: Ice_F_Stone_Skill_52
|
||||
- Item: Ice_F_Stone_Skill_53
|
||||
- Item: Ice_F_Stone_Skill_54
|
||||
- Item: Ice_F_Stone_Speed
|
||||
- Item: Ice_F_Stone_Caster
|
||||
- Item: Ice_F_Stone_Critical
|
||||
- Item: Ice_F_Stone_Guide
|
||||
- Item: Ice_F_Stone_Above
|
||||
- Item: Ice_F_Stone_P_Full
|
||||
- Item: Ice_F_Stone_M_Counter
|
||||
- Item: Ice_F_Stone_Hp
|
||||
- Item: Ice_F_Stone_Sp
|
||||
- Item: Ice_F_Stone_Heal
|
||||
- Item: Ice_F_Stone_Robust
|
||||
- Item: Ice_F_Stone_F_Cast
|
||||
- Item: Ice_F_Stone_M_F
|
||||
- Item: Ice_F_Stone_P_F
|
||||
- Item: Ice_F_Stone_Un_Vit
|
||||
- Item: Ice_F_Stone_Sp_Int
|
||||
- Item: Ice_F_Stone_Fi_Dex
|
||||
- Item: Ice_F_Stone_Ov_Str
|
||||
- Item: Ice_F_Stone_Fa_Agi
|
||||
- Item: Ice_F_Stone_Lu_Luk
|
||||
- Item: Ice_F_Stone_A_Delay
|
||||
- Item: Ice_F_Stone_E_Archer
|
||||
- Item: Ice_F_Stone_Fatal
|
||||
- Item: Ice_F_Stone_F_Spirit
|
||||
- Item: Ice_F_Stone_Spell
|
||||
- Item: Ice_F_Stone_HealHP
|
||||
- Item: Ice_F_Stone_HealSP
|
||||
- Item: Ice_F_Stone_Life
|
||||
- Item: Ice_F_Stone_Soul
|
||||
- Item: Ice_F_Stone_M_Heal
|
||||
- Item: Ice_F_Stone_M_Soul
|
||||
- Item: Ice_F_Stone_A_Force
|
||||
- Item: R_BearersShadow_Mix
|
||||
RewardGroup: R_BEARERSSHADOW_MIX
|
||||
RequiredRequirementsCount: 6
|
||||
@@ -4812,3 +4812,33 @@ Body:
|
||||
# Amount: 100
|
||||
# - Item: Crystal_Of_Pollution
|
||||
# Amount: 100
|
||||
- Item: D_Gw_Extractor
|
||||
RewardGroup: D_GW_EXTRACTOR
|
||||
RequiredRequirementsCount: 3
|
||||
Requirements:
|
||||
- Item: D_Glacier_T_Sword
|
||||
- Item: D_Glacier_Lance
|
||||
- Item: D_Glacier_Sword
|
||||
- Item: D_Glacier_B_Sword
|
||||
- Item: D_Glacier_Spear
|
||||
- Item: D_Glacier_T_Axe
|
||||
- Item: D_Glacier_Axe
|
||||
- Item: D_Glacier_Mace
|
||||
- Item: D_Glacier_M_Mace
|
||||
- Item: D_Glacier_R_Knife
|
||||
- Item: D_Glacier_B_Knife
|
||||
- Item: D_Glacier_Bow
|
||||
- Item: D_Glacier_Knuckle
|
||||
- Item: D_Glacier_Book
|
||||
- Item: D_Glacier_Katar
|
||||
- Item: D_Glacier_Wand
|
||||
- Item: D_Glacier_Staff
|
||||
- Item: D_Glacier_Foxtail
|
||||
- Item: D_Glacier_Violin
|
||||
- Item: D_Glacier_Whip
|
||||
- Item: D_Glacier_Humma
|
||||
- Item: D_Glacier_Revolver
|
||||
- Item: D_Glacier_Rifle
|
||||
- Item: D_Glacier_Shotgun
|
||||
- Item: D_Glacier_Gatling
|
||||
- Item: D_Glacier_Launcher
|
||||
|
||||
1858
db/re/map_drops.yml
1858
db/re/map_drops.yml
File diff suppressed because it is too large
Load Diff
17361
db/re/mob_db.yml
17361
db/re/mob_db.yml
File diff suppressed because it is too large
Load Diff
@@ -13606,7 +13606,7 @@
|
||||
20811,ILL_KRAKEN@NPC_HELLJUDGEMENT2,chase,768,2,3000,500,5000,no,target,always,0,,,,,,,
|
||||
20811,ILL_KRAKEN@NPC_HELLJUDGEMENT2,attack,768,2,3000,500,5000,no,target,always,0,,,,,,,
|
||||
20811,ILL_KRAKEN@NPC_CLOUD_KILL,attack,739,5,2000,500,16000,no,target,always,0,,,,,,,
|
||||
20811,ILL_KRAKEN@NPC_DAMAGE_HEAL,attack,753,1,10000,1000,60000,no,target,myhpltmaxrate,10,,,,,,,
|
||||
20811,ILL_KRAKEN@NPC_DAMAGE_HEAL,attack,753,1,10000,1000,60000,no,self,myhpltmaxrate,10,,,,,,,
|
||||
20811,ILL_KRAKEN@NPC_PHANTOMTHRUST,chase,741,5,1000,0,5000,no,self,always,0,,,,,,,
|
||||
20811,ILL_KRAKEN@NPC_CALLSLAVE,idle,352,1,5000,0,30000,yes,self,always,0,,,,,,,
|
||||
20843,ILL_ABYSMAL_WITCH@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
|
||||
@@ -13638,7 +13638,7 @@
|
||||
20843,ILL_ABYSMAL_WITCH@NPC_HELLJUDGEMENT2,chase,768,2,2000,500,5000,no,target,always,0,,,,,,,
|
||||
20843,ILL_ABYSMAL_WITCH@NPC_HELLJUDGEMENT2,attack,768,2,2000,500,5000,no,target,always,0,,,,,,,
|
||||
20843,ILL_ABYSMAL_WITCH@NPC_CLOUD_KILL,attack,739,5,2000,500,16000,no,target,always,0,,,,,,,
|
||||
20843,ILL_ABYSMAL_WITCH@NPC_DAMAGE_HEAL,attack,753,1,10000,1000,60000,no,target,myhpltmaxrate,10,,,,,,,
|
||||
20843,ILL_ABYSMAL_WITCH@NPC_DAMAGE_HEAL,attack,753,1,10000,1000,60000,no,self,myhpltmaxrate,10,,,,,,,
|
||||
20843,ILL_ABYSMAL_WITCH@NPC_CALLSLAVE,idle,352,1,5000,0,30000,yes,self,always,0,,,,,,,
|
||||
|
||||
// Episode 17.2 - Sage's Legacy
|
||||
@@ -14239,7 +14239,7 @@
|
||||
20934,R001_BESTIA@NPC_EARTHQUAKE,attack,653,5,10000,500,20000,no,self,myhpltmaxrate,40,,,,,,,
|
||||
20934,R001_BESTIA@NPC_PULSESTRIKE,attack,661,5,10000,0,15000,no,self,myhpltmaxrate,60,,,,,,,
|
||||
20934,R001_BESTIA@NPC_DRAGONFEAR,attack,659,5,10000,0,10000,no,self,always,0,,,,,,,
|
||||
// 20934,R001_BESTIA@NPC_DAMAGE_HEAL,attack,753,1,3000,1500,40000,no,target,myhpltmaxrate,20,,,,,,,
|
||||
// 20934,R001_BESTIA@NPC_DAMAGE_HEAL,attack,753,1,3000,1500,40000,no,self,myhpltmaxrate,20,,,,,,,
|
||||
|
||||
// nif_dun
|
||||
20935,GAN_CEANN@NPC_CRITICALSLASH,attack,170,1,1000,500,5000,no,target,always,0,,,,,,,
|
||||
@@ -14339,7 +14339,7 @@
|
||||
20943,DEATH_WITCH@NPC_HELLJUDGEMENT,chase,662,2,2000,500,5000,no,self,always,0,,,,,,,
|
||||
20943,DEATH_WITCH@NPC_HELLJUDGEMENT,attack,662,2,2000,500,5000,no,self,always,0,,,,,,,
|
||||
20943,DEATH_WITCH@NPC_CLOUD_KILL,attack,739,5,2000,500,16000,no,target,always,0,,,,,,,
|
||||
// 20943,DEATH_WITCH@NPC_DAMAGE_HEAL,attack,753,1,10000,1000,60000,no,target,myhpltmaxrate,10,,,,,,,
|
||||
// 20943,DEATH_WITCH@NPC_DAMAGE_HEAL,attack,753,1,10000,1000,60000,no,self,myhpltmaxrate,10,,,,,,,
|
||||
20943,DEATH_WITCH@NPC_CALLSLAVE,idle,352,1,5000,0,30000,yes,self,always,0,,,,,,,
|
||||
20943,DEATH_WITCH@NPC_CALLSLAVE,attack,352,1,5000,0,30000,yes,self,always,0,,,,,,,
|
||||
|
||||
@@ -14570,7 +14570,7 @@
|
||||
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_DAMAGE_HEAL,attack,753,1,500,1500,120000,no,self,myhpltmaxrate,50,,,,,,32,
|
||||
21395,ILL_MAYA@NPC_ALL_STAT_DOWN,attack,751,5,5000,1500,45000,no,target,always,0,,,,,,18,
|
||||
|
||||
// Episode 18
|
||||
|
||||
1020
db/re/quest_db.yml
1020
db/re/quest_db.yml
File diff suppressed because it is too large
Load Diff
@@ -15918,6 +15918,15 @@ Body:
|
||||
- Level: 5
|
||||
Time: 350000
|
||||
FixedCastTime: 1000
|
||||
- Id: 578
|
||||
Name: DE_BERSERKAIZER # TODO: effect? The skill is only used to display a visual effect for now
|
||||
Description: Berserkaizer
|
||||
MaxLevel: 1
|
||||
TargetType: Self
|
||||
DamageFlags:
|
||||
NoDamage: true
|
||||
HitCount: 1
|
||||
Duration1: -1
|
||||
- Id: 653
|
||||
Name: NPC_EARTHQUAKE
|
||||
Description: Earthquake
|
||||
|
||||
@@ -118,7 +118,23 @@ is disabled in '/conf/battle/items.conf'.
|
||||
*nomvploot
|
||||
|
||||
Disables normal monsters and MVPs from dropping items on a map. Looted items will always drop.
|
||||
'noloot' is the same as 'nomobloot' and 'nomvploot' combined.
|
||||
'nomobloot' prevents monsters and MVPs from dropping items from the 'Drops' table.
|
||||
'nomvploot' prevents MVPs from giving MVP prize items from the 'MvpDrops' table.
|
||||
'noloot' is the same as 'nomobloot' and 'nomvploot' combined.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*nolootnormalmob
|
||||
|
||||
Disables normal monsters type (only) from dropping items on a map. Looted items will always drop.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*no_npc_selfdestruction_on_all
|
||||
|
||||
A quick mapflag to change the behaviour of the NPC_SELFDESTRUCTION skill.
|
||||
When defined, the skill always and only hits enemy type instead of all units.
|
||||
|
||||
|
||||
---------------------------------------
|
||||
|
||||
@@ -474,3 +490,9 @@ Hides monster's HP bar on a map.
|
||||
Ignores config value of 'monster_hp_bars_info'.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*specialpopup <popup ID>
|
||||
|
||||
Displays a special popup when a player enters the map. See script command "specialpopup" for details on different popup types.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
@@ -6124,11 +6124,12 @@ will always return 0.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*skilleffect <skill id>,<number>;
|
||||
*skilleffect "<skill name>",<number>;
|
||||
*skilleffect <skill id>,<number>{,<game ID>};
|
||||
*skilleffect "<skill name>",<number>{,<game ID>};
|
||||
|
||||
This command displays visual and aural effects of given skill on currently
|
||||
attached character. The number parameter is for skill whose visual effect
|
||||
attached character or, when defined, on any unit with the given ID.
|
||||
The number parameter is for skill whose visual effect
|
||||
involves displaying of a number (healing or damaging). Note, that this command
|
||||
will not actually use the skill, it is intended for scripts, which simulate
|
||||
skill usage by the NPC, such as buffs, by setting appropriate status and
|
||||
@@ -8508,6 +8509,15 @@ Opens the tip box UI for the attached player or the given character ID.
|
||||
|
||||
This command requires packet version 2017-11-22 or newer.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*specialpopup(<popup ID>);
|
||||
|
||||
Open popup and/or show text by ID from list defined in the client spopup.lub file.
|
||||
Popup and text is only visible if the player warped from one map to another map.
|
||||
|
||||
This command requires packet version 2022-10-05 or newer.
|
||||
|
||||
---------------------------------------
|
||||
\\
|
||||
6,1.- Unit-related commands
|
||||
@@ -10681,6 +10691,7 @@ current invoking character.
|
||||
*addhomintimacy <amount>{,<char_id>};
|
||||
|
||||
Increase or decrease a homunculus' intimacy value by the given <amount>. 100000 is full loyalty.
|
||||
Fails silently when no players are attached or if the player has no homunculus.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
|
||||
@@ -136,7 +136,7 @@ prt_in,243,168,4 script Jovovich 91,{
|
||||
mes "* Fees and Information *";
|
||||
mes "- 1 Dyestuffs item of the color of hair you want.";
|
||||
mes "- 1000 zeny fee.";
|
||||
break;
|
||||
close;
|
||||
|
||||
case 3:
|
||||
mes "[Hairdresser Jovovich]";
|
||||
|
||||
1538
npc/re/instances/AirshipDestruction.txt
Normal file
1538
npc/re/instances/AirshipDestruction.txt
Normal file
File diff suppressed because it is too large
Load Diff
489
npc/re/instances/BaggotLaboratory.txt
Normal file
489
npc/re/instances/BaggotLaboratory.txt
Normal file
@@ -0,0 +1,489 @@
|
||||
//===== rAthena Script =======================================
|
||||
//= 2 Instances:
|
||||
// - Bagot Laboratory
|
||||
// - Simulation Battle
|
||||
//===== Description: =========================================
|
||||
//- [Walkthrough conversion]
|
||||
//- Instance of episode 19 (same map).
|
||||
//===== Changelogs: ==========================================
|
||||
//= 1.0 First version. [Atemo]
|
||||
//============================================================
|
||||
|
||||
// Bagot Laboratory
|
||||
// ------------------------------
|
||||
|
||||
// Main Quest: Step 58
|
||||
jor_dun03,57,63,3 script(CLOAKED) Juncea#ep19re2 4_EP19_JUNCEA,{
|
||||
if (ep19_main == 49) { // Step 58
|
||||
cutin "ep19_juncea04.png",2;
|
||||
mes "[Juncea]";
|
||||
mes "Oh, I want to talk to you alone. Are you okay?";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "- ^0000ffLet's have a party of 1 and listen to Juncea's story.^000000 -";
|
||||
erasequest 16659;
|
||||
setquest 16660;
|
||||
ep19_main = 50;
|
||||
close;
|
||||
}
|
||||
if (ep19_main == 50) {
|
||||
if (is_party_leader() == false) {
|
||||
mes "[Juncea]";
|
||||
mes "I can only open the secret passage for party leaders. Please have your party leader talk to me.";
|
||||
close;
|
||||
}
|
||||
.@md_name$ = "Bagot Laboratory";
|
||||
switch( select( "Prepare to enter " + .@md_name$, "Enter " + .@md_name$ ) ) {
|
||||
case 1:
|
||||
if (is_party_leader() == false) {
|
||||
mes "[Juncea]";
|
||||
mes "I can only open the secret passage for party leaders. Please have your party leader talk to me.";
|
||||
close;
|
||||
}
|
||||
mes "- ^0000ffPreparation for entry has started. After you are ready, press the button to enter " + .@md_name$ + ".^000000 -";
|
||||
instance_create(.@md_name$);
|
||||
close;
|
||||
case 2:
|
||||
if (is_party_leader() == false) {
|
||||
mes "[Juncea]";
|
||||
mes "I can only open the secret passage for party leaders. Please have your party leader talk to me.";
|
||||
close;
|
||||
}
|
||||
switch( instance_enter(.@md_name$) ) {
|
||||
case IE_OTHER:
|
||||
mes "An unknown error occurred.";
|
||||
close;
|
||||
case IE_NOINSTANCE:
|
||||
mes "- ^0000ffMemorial dungeon not created. Please check again.^000000 -";
|
||||
close;
|
||||
case IE_NOMEMBER:
|
||||
mes "[Juncea]";
|
||||
mes "^ff0000Only a member of the party can enter the Memorial Dungeon.^000000";
|
||||
close;
|
||||
case IE_OK:
|
||||
// warp "1@jorlab",57,45;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(16659) == 1" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(16660) == 1" );
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
1@jorlab,1,1,0 script #jorlab_main -1,{
|
||||
end;
|
||||
OnInstanceInit:
|
||||
'map_jorlab$ = instance_mapname("1@jorlab");
|
||||
'event = 0;
|
||||
.@md_name$ = "Bagot Laboratory";
|
||||
|
||||
disablenpc instance_npcname("Juncea#ep19re4");
|
||||
|
||||
if (instance_live_info(ILI_NAME) == .@md_name$) // MD "Bagot Laboratory"
|
||||
disablenpc instance_npcname("Summon Device#ep19re1");
|
||||
else { // MD "Simulation"
|
||||
disablenpc instance_npcname("#jorlab_hw1");
|
||||
disablenpc instance_npcname("Juncea#ep19re3");
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
1@jorlab,58,45,0 script #jorlab_hw1 HIDDEN_WARP_NPC,4,4,{
|
||||
end;
|
||||
OnTouch:
|
||||
disablenpc();
|
||||
if (ep19_main == 50) {
|
||||
if ('event != 0)
|
||||
end;
|
||||
if (is_party_leader() == false)
|
||||
end;
|
||||
enablenpc instance_npcname("Juncea#ep19re3");
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Main Quest: Step 59
|
||||
1@jorlab,58,67,3 script Juncea#ep19re3 4_EP19_JUNCEA,{
|
||||
if (ep19_main != 50)
|
||||
end;
|
||||
if (is_party_leader() == false)
|
||||
end;
|
||||
.@npc_name$ = instance_npcname("Juncea#ep19re3");
|
||||
if ('event == 0) {
|
||||
cutin "ep19_juncea04.png",2;
|
||||
mes "[Juncea]";
|
||||
mes "Oh, I'm here. Welcome.";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "Why do you want it to be just the two of us?";
|
||||
mes "Although, I had some questions for you too.";
|
||||
next;
|
||||
cutin "ep19_juncea04.png",2;
|
||||
mes "[Juncea]";
|
||||
mes "Oh, I thought so.";
|
||||
mes "But listen to me first.";
|
||||
next;
|
||||
mes "[Juncea]";
|
||||
mes "You are in a lot of trouble.";
|
||||
mes "It must be hard to be someone you're not.";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "What do you mean? What's wrong? You're a bit strange. You scare me.";
|
||||
next;
|
||||
cutin "ep19_juncea04.png",2;
|
||||
mes "[Juncea]";
|
||||
mes "What are you afraid of? You've done a good job of pretending to be friendly so far. Why are you suddenly acting scared again?";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "I didn't pretend to be friendly. I really want to become friends with you.";
|
||||
next;
|
||||
cutin "ep19_juncea04.png",2;
|
||||
mes "[Juncea]";
|
||||
mes "Whoa, that's why you were so hard on me to gossip about Bagot? It's a good way, it's a good way.";
|
||||
mes "There is no faster way to make friends than to curse the same person.";
|
||||
next;
|
||||
mes "[Juncea]";
|
||||
mes "However, you chose the wrong opponent. Idiot.";
|
||||
next;
|
||||
mes "[Juncea]";
|
||||
mes "The great... Bagot, do you think you will... fall for such a shallow... masterpiece?";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "Are you the great Bagot?";
|
||||
next;
|
||||
cutin "ep19_juncea04.png",2;
|
||||
mes "[Juncea]";
|
||||
mes "Yeah... It's already reading your thoughts...";
|
||||
next;
|
||||
mes "[Juncea]";
|
||||
mes "You know... you're trying to... use me.";
|
||||
next;
|
||||
mes "[Juncea]";
|
||||
mes "So I...";
|
||||
next;
|
||||
mes "[Juncea]";
|
||||
mes "I am... Who am I? This is...";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(Juncea is weird..., did Bagot do something?)";
|
||||
next;
|
||||
cutin "ep19_juncea04.png",2;
|
||||
mes "[Juncea]";
|
||||
mes "Even if I jumped... you're already in Bagot's palm.";
|
||||
next;
|
||||
cutin "ep19_juncea00.png",1;
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA_M );
|
||||
mes "[Juncea]";
|
||||
mes "Here... I'll take care of it...!";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(...I don't have time to ask anyone for help! I have to do that myself!)";
|
||||
if ('event == 0)
|
||||
'event = 1;
|
||||
close;
|
||||
}
|
||||
if ('event == 1) {
|
||||
cutin "ep19_juncea04.png",2;
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA );
|
||||
mes "[Juncea]";
|
||||
mes "Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah!";
|
||||
next;
|
||||
cutin "ep19_juncea00.png",1;
|
||||
sleep2 500;
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA_M );
|
||||
mes "[Juncea]";
|
||||
mes "Everything is... Bagot's... Meaning...!";
|
||||
next;
|
||||
cutin "ep19_juncea04.png",2;
|
||||
sleep2 500;
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA );
|
||||
mes "[Juncea]";
|
||||
mes "Aaaaaaah!";
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA_M );
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA );
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA_M );
|
||||
sleep2 500;
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA );
|
||||
next;
|
||||
cutin "ep19_juncea00.png",1;
|
||||
sleep2 500;
|
||||
setnpcdisplay( .@npc_name$, 4_EP19_JUNCEA_M );
|
||||
mes "[Juncea]";
|
||||
mes "As intended... I will punish you!";
|
||||
close2;
|
||||
cutin "",255;
|
||||
if ('event != 1)
|
||||
end;
|
||||
'event = 2;
|
||||
disablenpc();
|
||||
donpcevent instance_npcname("jorlab_boss") + "::OnStart";
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
1@jorlab,1,1,0 script jorlab_boss -1,{
|
||||
end;
|
||||
OnStart:
|
||||
sleep 500;
|
||||
monster 'map_jorlab$,58,67,"--ja--",21532,1, instance_npcname("jorlab_boss") + "::OnMobDead"; // EP19_MD_JUNCEA
|
||||
end;
|
||||
OnMobDead:
|
||||
if ('event != 2)
|
||||
end;
|
||||
'event = 3;
|
||||
enablenpc instance_npcname("Juncea#ep19re4");
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
// Main Quest: Step 60
|
||||
1@jorlab,58,67,3 script Juncea#ep19re4 4_EP19_JUNCEA_D,{
|
||||
if (ep19_main != 50) {
|
||||
warp "icecastle",27,123;
|
||||
end;
|
||||
}
|
||||
if ('event != 3)
|
||||
end;
|
||||
if (is_party_leader() == false)
|
||||
end;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(Barely subdued. Juncea lost her mind...)";
|
||||
next;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(Bagot... What did you do to Juncea? You've turned her into a monster right?)";
|
||||
next;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(If everything went according to plan, we should have persuaded her and taken her out, but we should have taken her out even in this condition.)";
|
||||
mapannounce 'map_jorlab$, "Bagot: Oh, it was not enough to use Juncea as a vessel.", bc_map, 0xFFFF;
|
||||
next;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(I used the Ragan Transformation Scroll on Juncea as I had planned...)";
|
||||
mapannounce 'map_jorlab$, "Bagot: This time, my prediction was wrong.", bc_map, 0xFFFF;
|
||||
next;
|
||||
setnpcdisplay( instance_npcname("Juncea#ep19re4"), 4_EP19_RGAN_R1 );
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(For now, let's take her back to the village.)";
|
||||
mapannounce 'map_jorlab$, "Bagot: By the way, there were scrolls like that... I knew they were cheating, but the existence of such a thing is interesting.", bc_map, 0xFFFF;
|
||||
next;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "(I think I heard something... I must have heard it wrong?)";
|
||||
mapannounce 'map_jorlab$, "Bagot: Whoops.", bc_map, 0xFFFF;
|
||||
erasequest 16660;
|
||||
setquest 16661;
|
||||
ep19_main = 51;
|
||||
close2;
|
||||
warp "icecastle",27,123;
|
||||
end;
|
||||
|
||||
OnInstanceInit:
|
||||
questinfo( QTYPE_QUEST, QMARK_NONE, "checkquest(16660,HUNTING) == 2" );
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Simulation Battle
|
||||
// ------------------------------
|
||||
|
||||
jor_nest,66,260,3 script Arolong#ep19re2 4_EP19_IWIN,{
|
||||
if (ep19_main < 100)
|
||||
end;
|
||||
if (checkweight(1000811,1) == 0) {
|
||||
mes "[Arolong]";
|
||||
mes "- Your bag is full. Please check the weight and quantity of items you have and then talk to us again. -";
|
||||
close;
|
||||
}
|
||||
switch( checkquest(16663,PLAYTIME) ) {
|
||||
case -1:
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
mes "[Arolong]";
|
||||
mes "Today's challenge is over.";
|
||||
mes "If you come back tomorrow, please let me in.";
|
||||
next;
|
||||
mes "[Arolong]";
|
||||
mes "Okay?";
|
||||
mes "Have a good rest, see you again tomorrow.";
|
||||
close;
|
||||
case 2:
|
||||
erasequest 16663;
|
||||
break;
|
||||
}
|
||||
if (checkquest(16662,HUNTING) == 2) {
|
||||
mes "[Arolong]";
|
||||
mes "Societyless Simulation with Juncea";
|
||||
mes "Did you win a fight and come back?";
|
||||
next;
|
||||
mes "[Arolong]";
|
||||
mes "Child, it's okay if you don't answer.";
|
||||
mes "I've seen it all here.";
|
||||
next;
|
||||
mes "[Arolong]";
|
||||
mes "Well done.";
|
||||
mes "It's a great win and come back.";
|
||||
next;
|
||||
mes "[Arolong]";
|
||||
mes "The data are paired, so our researchers also";
|
||||
mes "Your calf.";
|
||||
mes "Then, please accept the promised reward.";
|
||||
next;
|
||||
mes "[Arolong]";
|
||||
mes "Have a good rest, see you again tomorrow.";
|
||||
mes "I'll try again tomorrow.";
|
||||
close2;
|
||||
erasequest 16662;
|
||||
setquest 16663;
|
||||
getitem 1000811,1; // Snow_F_Ore
|
||||
// todo
|
||||
end;
|
||||
}
|
||||
// Note: Player can re-enter / re-create an instance until the boss is defeated
|
||||
cutin "ep19_iwin01.png",2;
|
||||
mes "[Arolong]";
|
||||
mes "The battle with Juncea wasn't thrilling, wasn't it?";
|
||||
mes "You want to fight again, don't you think?";
|
||||
next;
|
||||
cutin "",255;
|
||||
if (select( "Lift", "Don't lift" ) == 2) {
|
||||
cutin "ep19_iwin01.png",2;
|
||||
mes "[Arolong]";
|
||||
mes "Is that so?";
|
||||
mes "I'm sorry.";
|
||||
close3;
|
||||
}
|
||||
cutin "ep19_iwin01.png",2;
|
||||
mes "[Arolong]";
|
||||
mes "It was prepared for such an adventurer.";
|
||||
mes "Exciting simulation battles with simulation data Juncea.";
|
||||
next;
|
||||
mes "[Arolong]";
|
||||
mes "I prepared it at the Ice Castle, so it's safe.";
|
||||
mes "Defeat " + getmonsterinfo("EP19_MD_JUNCEA_S", MOB_NAME) + " once a day.";
|
||||
next;
|
||||
mes "[Arolong]";
|
||||
mes "But you can try again and again until you defeat it.";
|
||||
mes "Would you like to try it?";
|
||||
next;
|
||||
.@md_name$ = "Simulation Battle";
|
||||
if (is_party_leader() == true)
|
||||
.@menu$ = "Prepare to enter Bagot's lab";
|
||||
|
||||
cutin "",255;
|
||||
switch( select( .@menu$, "Enter Bagot's Lab", "Do not challenge" ) ) {
|
||||
case 1:
|
||||
mes "- ^0000ff Preparation for entry has started. After you are ready, press the button to enter the lab in Bagot.^000000 -";
|
||||
instance_create(.@md_name$);
|
||||
close;
|
||||
case 2:
|
||||
switch( instance_enter(.@md_name$) ) {
|
||||
case IE_OTHER:
|
||||
mes "An unknown error occurred.";
|
||||
close;
|
||||
case IE_NOINSTANCE:
|
||||
mes "- ^0000ff Memorial dungeon not created. Please check again.^000000 -";
|
||||
close;
|
||||
case IE_NOMEMBER:
|
||||
mes "[Juncea]";
|
||||
mes "^ff0000Only a member of the party can enter the Memorial Dungeon.^000000";
|
||||
close;
|
||||
case IE_OK:
|
||||
if (isbegin_quest(16662) == 0)
|
||||
setquest 16662;
|
||||
// warp "1@jorlab",57,45;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
case 3:
|
||||
cutin "ep19_iwin01.png",2;
|
||||
mes "[Arolong]";
|
||||
mes "Heh, what a boring adventure.";
|
||||
close3;
|
||||
}
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
cloakonnpc();
|
||||
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "ep19_main >= 100 && checkquest(16662,HUNTING) != 2 && checkquest(16663,PLAYTIME) == -1" );
|
||||
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(16663,PLAYTIME) == 2" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(16662,HUNTING) == 2" );
|
||||
end;
|
||||
}
|
||||
|
||||
1@jorlab,58,67,3 script Summon Device#ep19re1 PORTAL,{
|
||||
if ('event == 2) {
|
||||
mes "[Summon Device]";
|
||||
mes "Battle complete, save data.";
|
||||
mes "Press the Yes button to exit the lab";
|
||||
mes "Please press";
|
||||
next;
|
||||
if (select( "Yes", "No" ) == 2) {
|
||||
mes "[Summon Device]";
|
||||
mes "Exit.";
|
||||
close;
|
||||
}
|
||||
mes "[Summon Device]";
|
||||
mes "3, 2, 1. Ready to move.";
|
||||
close2;
|
||||
warp "jor_nest",63,257;
|
||||
end;
|
||||
}
|
||||
if (is_party_leader() == false || 'event != 0) {
|
||||
mes "[Summon Device]";
|
||||
mes "- I am talking with another party member. Please listen together for a moment. -";
|
||||
mes "- If the conversation ended due to an error, you will be able to talk 5 minutes after the conversation starts. -";
|
||||
close;
|
||||
}
|
||||
mes "[Summon Device]";
|
||||
mes "Start a simulation battle.";
|
||||
mes "When you are ready, click the Yes button.";
|
||||
next;
|
||||
mes "[Summon Device]";
|
||||
mes "Are you ready?";
|
||||
next;
|
||||
if (select( "Yes", "No" ) == 2) {
|
||||
mes "[Summon Device]";
|
||||
mes "Exit.";
|
||||
close;
|
||||
}
|
||||
mes "[Summon Device]";
|
||||
mes "Summon " + getmonsterinfo("EP19_MD_JUNCEA_S", MOB_NAME) + ".";
|
||||
mes "3, 2, 1. Ready to summon.";
|
||||
close2;
|
||||
if ('event == 0) {
|
||||
'event = 1;
|
||||
disablenpc();
|
||||
donpcevent instance_npcname("ep19_simulation_battle") + "::OnStart";
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
1@jorlab,1,1,0 script ep19_simulation_battle -1,{
|
||||
end;
|
||||
OnStart:
|
||||
monster 'map_jorlab$,58,67,"--ja--","EP19_MD_JUNCEA_S",1, instance_npcname("ep19_simulation_battle") + "::OnBossDead";
|
||||
end;
|
||||
OnBossDead:
|
||||
if ('event != 1)
|
||||
end;
|
||||
'event = 2;
|
||||
enablenpc instance_npcname("Summon Device#ep19re1");
|
||||
end;
|
||||
}
|
||||
1865
npc/re/instances/ConfusedSnakesNest.txt
Normal file
1865
npc/re/instances/ConfusedSnakesNest.txt
Normal file
File diff suppressed because it is too large
Load Diff
1180
npc/re/instances/IwinPatrol.txt
Normal file
1180
npc/re/instances/IwinPatrol.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,34 +2,35 @@
|
||||
//= Instance: The Maze of Oz.
|
||||
//===== Description: =========================================
|
||||
//- [Walkthrough conversion]
|
||||
//- Part of the episode 18.1 main quest.
|
||||
//- Part of the Episode 18 main quest.
|
||||
//===== Changelogs: ==========================================
|
||||
//= 1.0 First version. [Capuche]
|
||||
//============================================================
|
||||
|
||||
// Main Quest: Step 28.
|
||||
ra_fild10,179,176,5 script Merchant#ep18_gorge 4_EP18_MERCHANT,{
|
||||
.@md_name$ = "The Maze of Oz";
|
||||
ra_fild10,179,176,5 script Merchant#ep18_gorge 4_EP18_MERCHANT,{
|
||||
.@md_name$ = "Oz Labyrinth";
|
||||
|
||||
if (ep18_1_main == 29) {
|
||||
mes "[Miriam in disguise]";
|
||||
mes "From now on <FONT SIZE = 14><B>^e5555e" + .@md_name$ + "^000000</FONT></B>";
|
||||
mes "^e5555ePrepare yourself and talk to me again^000000";
|
||||
if (ep18_main == 29) {
|
||||
mes "[Disguised Miriam]";
|
||||
mes "We are now entering the <FONT SIZE = 14><B>^e5555eMaze of Oz^000000</FONT></B>.";
|
||||
mes "^e5555ePlease finish your preparations^000000 and come back to me.";
|
||||
cutin "ep18_merchant.png",2;
|
||||
changequest 11717,11719;
|
||||
ep18_1_main = 30;
|
||||
erasequest 11717;
|
||||
setquest 11719;
|
||||
ep18_main = 30;
|
||||
close3;
|
||||
}
|
||||
if (ep18_1_main == 30) {
|
||||
mes "[Miriam in disguise]";
|
||||
mes "Then I'll start the ^e5555e" + .@md_name$ + "^000000";
|
||||
if (ep18_main == 30) {
|
||||
mes "[Disguised Miriam]";
|
||||
mes "Then let's head to ^e5555e" + .@md_name$ + "^000000";
|
||||
next;
|
||||
if (getcharid(1) == 0 || is_party_leader() == false) {
|
||||
mes "[Miriam in disguise]";
|
||||
mes "I think it would be a good idea to form a ^ff0000party before enter ^000000..";
|
||||
mes "[Disguised Miriam]";
|
||||
mes "I think it would be a good idea to form a ^ff0000party before enter^000000..";
|
||||
close;
|
||||
}
|
||||
switch( select( "Open the door", "Enter", "Stop" ) ) {
|
||||
switch( select( "Open the door.", "Enter.", "Quit." ) ) {
|
||||
case 1:
|
||||
if (instance_create(.@md_name$) < 0) {
|
||||
mes "Party: " + getpartyname(getcharid(1)) + "";
|
||||
@@ -37,21 +38,21 @@ ra_fild10,179,176,5 script Merchant#ep18_gorge 4_EP18_MERCHANT,{
|
||||
mes "^0000ff" + .@md_name$ + " ^000000- Unknown error";
|
||||
close;
|
||||
}
|
||||
mes "[Miriam in disguise]";
|
||||
mes "You'd better wait a little before you go in.";
|
||||
mes "[Disguised Miriam]";
|
||||
mes "It's better to wait a bit before entering.";
|
||||
close;
|
||||
case 2:
|
||||
switch( instance_enter(.@md_name$) ) {
|
||||
case IE_OTHER:
|
||||
mes "[Miriam in disguise]";
|
||||
mes "[Disguised Miriam]";
|
||||
mes "^ff0000An unknown error occurred.^000000";
|
||||
close;
|
||||
case IE_NOINSTANCE:
|
||||
mes "[Miriam in disguise]";
|
||||
mes "^ff0000Your party leader has not yet created the dungeon.^000000";
|
||||
mes "[Disguised Miriam]";
|
||||
mes "Let's wait a bit and try again.";
|
||||
close;
|
||||
case IE_NOMEMBER:
|
||||
mes "[Miriam in disguise]";
|
||||
mes "[Disguised Miriam]";
|
||||
mes "^ff0000Only a member of the party can enter the Memorial Dungeon.^000000";
|
||||
close;
|
||||
case IE_OK:
|
||||
@@ -62,24 +63,25 @@ ra_fild10,179,176,5 script Merchant#ep18_gorge 4_EP18_MERCHANT,{
|
||||
end;
|
||||
}
|
||||
}
|
||||
mes "[Merchant]";
|
||||
mes "It seems like someone was nearby but disappeared quickly.";
|
||||
mes "Where did they go?";
|
||||
cutin "ep18_merchant.png",2;
|
||||
mes "[Vendor]";
|
||||
mes "Someone must have been around here, but they just disappeared. Where did they go?";
|
||||
close3;
|
||||
close3;
|
||||
|
||||
OnInit:
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11717) == 1" );
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11719) == 1" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(11717) == 1" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(11719) == 1" );
|
||||
end;
|
||||
}
|
||||
|
||||
// Step 1
|
||||
1@oz,284,164,3 script Rope#outoz 4_ROPEPILE,{
|
||||
mes "I think I can climb up with a rope.";
|
||||
mes "I think we can use the rope to climb up.";
|
||||
next;
|
||||
if (select( "Use a rope to climb", "Do not use" ) == 2)
|
||||
if (select( "Use the rope to climb up.", "Do not use." ) == 2)
|
||||
end;
|
||||
warp "ra_fild10",180,174;
|
||||
warp "ra_fild10",173,176;
|
||||
end;
|
||||
}
|
||||
|
||||
@@ -88,64 +90,64 @@ OnInit:
|
||||
end;
|
||||
'event_oz = 1;
|
||||
.@miriam1$ = instance_npcname("Miriam#ozmd1");
|
||||
.@maggi1$ = instance_npcname("Magi#ozmd1");
|
||||
.@maggi1$ = instance_npcname("Maggi#ozmd1");
|
||||
.@mark1$ = instance_npcname("Mark#ozmd1");
|
||||
.@tamarin1$ = instance_npcname("Tamarin#ozmd1");
|
||||
.@miriam2$ = instance_npcname("Miriam#ozmd2");
|
||||
|
||||
setpcblock PCBLOCK_NPC, true;
|
||||
npctalk "Miriam: This is the entrance to the labyrinth of Oz.", .@miriam1$;
|
||||
npctalk "Miriam: This is the entrance to the Labyrinth of Oz.", .@miriam1$;
|
||||
cutin "ep18_miriam_03.png",2;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Everyone, please move carefully.", .@miriam1$;
|
||||
sleep2 2000;
|
||||
npctalk "Magi: Something hot and dusty...", .@maggi1$;
|
||||
cutin "4job_maggi_02.PNG",2;
|
||||
enablenpc .@maggi1$;
|
||||
enablenpc .@mark1$;
|
||||
enablenpc .@tamarin1$;
|
||||
cloakoffnpcself( .@maggi1$ );
|
||||
cloakoffnpcself( .@mark1$ );
|
||||
cloakoffnpcself( .@tamarin1$ );
|
||||
sleep2 2000;
|
||||
npctalk "Mark: Are you okay?", .@mark1$;
|
||||
cutin "ep18_mark_01.png",2;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: There is lava flowing right below it, always scattering ashes.", .@miriam1$;
|
||||
npctalk "Miriam: Lava is flowing right below, so ash is always flying.", .@miriam1$;
|
||||
cutin "ep18_miriam_03.png",2;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Beware there may be embers in the lava ash.", .@miriam1$;
|
||||
npctalk "Miriam: There may be embers left in the lava ash, so please be careful.", .@miriam1$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: If you inhale incorrectly, you will burn your lungs.", .@miriam1$;
|
||||
npctalk "Miriam: If you inhale it incorrectly, it will burn your lungs.", .@miriam1$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: There don't seem to be any monsters around here, so it's better to move slowly and check the situation again.", .@miriam1$;
|
||||
npctalk "Miriam: There don't seem to be any monsters around here, so it would be better to move slowly and check the situation again.", .@miriam1$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Please follow the road to the north first.", .@miriam1$;
|
||||
npctalk "Miriam: First, please follow the road to the north.", .@miriam1$;
|
||||
sleep2 2000;
|
||||
cutin "",255;
|
||||
setpcblock PCBLOCK_NPC, false;
|
||||
|
||||
disablenpc .@maggi1$;
|
||||
disablenpc .@mark1$;
|
||||
disablenpc .@tamarin1$;
|
||||
cloakonnpcself( .@maggi1$ );
|
||||
cloakonnpcself( .@mark1$ );
|
||||
cloakonnpcself( .@tamarin1$ );
|
||||
disablenpc .@miriam1$;
|
||||
enablenpc .@miriam2$;
|
||||
end;
|
||||
}
|
||||
|
||||
1@oz,279,175,5 duplicate(dummy_npc) Magi#ozmd1 4_4JOB_MAGGI
|
||||
1@oz,280,175,3 duplicate(dummy_npc) Mark#ozmd1 4_EP18_MARK
|
||||
1@oz,279,177,3 duplicate(dummy_npc) Tamarin#ozmd1 4_EP18_TAMARIN
|
||||
1@oz,279,175,5 duplicate(dummy_cloaked_npc) Maggi#ozmd1 4_4JOB_MAGGI
|
||||
1@oz,280,175,3 duplicate(dummy_cloaked_npc) Mark#ozmd1 4_EP18_MARK
|
||||
1@oz,279,177,3 duplicate(dummy_cloaked_npc) Tamarin#ozmd1 4_EP18_TAMARIN
|
||||
|
||||
|
||||
// Step 2
|
||||
1@oz,271,272,3 script Miriam#ozmd2 4_EP18_MIRIAM,{
|
||||
1@oz,271,272,3 script(DISABLED) Miriam#ozmd2 4_EP18_MIRIAM,{
|
||||
if ('event_oz != 1)
|
||||
end;
|
||||
'event_oz = 2;
|
||||
.@miriam2$ = instance_npcname("Miriam#ozmd2");
|
||||
'miriam3$ = instance_npcname("Miriam#ozmd3");
|
||||
setpcblock PCBLOCK_NPC, true;
|
||||
npctalk "Miriam: If you cross the bridge in front of you, it's a real maze.", .@miriam2$;
|
||||
npctalk "Miriam: If you cross the bridge in front of you, it's the real Maze of Oz.", .@miriam2$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: We must be very careful crossing the bridge, let's talk again after.", .@miriam2$;
|
||||
npctalk "Miriam: You have to be very careful when crossing the bridge, so let's talk again at the bridge.", .@miriam2$;
|
||||
sleep2 2000;
|
||||
setpcblock PCBLOCK_NPC, false;
|
||||
disablenpc .@miriam2$;
|
||||
@@ -153,69 +155,43 @@ OnInit:
|
||||
end;
|
||||
|
||||
OnInstanceInit:
|
||||
'miriam3_id = 0;
|
||||
'event_oz = 0;
|
||||
|
||||
'map_name$ = instance_mapname("1@oz");
|
||||
disablenpc instance_npcname("Miriam#ozmd2");
|
||||
disablenpc instance_npcname("Miriam#ozmd3");
|
||||
disablenpc instance_npcname("Miriam#ozmd4");
|
||||
disablenpc instance_npcname("Maram#ozmd5");
|
||||
disablenpc instance_npcname("Miriam#ozmd5");
|
||||
disablenpc instance_npcname("Maram#ozmd7");
|
||||
disablenpc instance_npcname("#oz_way");
|
||||
disablenpc instance_npcname("Maram#ozmd6");
|
||||
disablenpc instance_npcname("Magi#ozmd1");
|
||||
disablenpc instance_npcname("Mark#ozmd1");
|
||||
disablenpc instance_npcname("Tamarin#ozmd1");
|
||||
disablenpc instance_npcname("Magi#ozmd3");
|
||||
disablenpc instance_npcname("Mark#ozmd3");
|
||||
disablenpc instance_npcname("Tamarin#ozmd3");
|
||||
disablenpc instance_npcname("Maram#ozmd4");
|
||||
disablenpc instance_npcname("Magi#ozmd5");
|
||||
disablenpc instance_npcname("Mark#ozmd5");
|
||||
disablenpc instance_npcname("Tamarin#ozmd5");
|
||||
disablenpc instance_npcname("Maram#ozmd8");
|
||||
disablenpc instance_npcname("Magi#ozmd6");
|
||||
disablenpc instance_npcname("Mark#ozmd6");
|
||||
disablenpc instance_npcname("Tamarin#ozmd6");
|
||||
disablenpc instance_npcname("Miriam#ozmd7");
|
||||
disablenpc instance_npcname("Imril#ozmd7");
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
// Step 3
|
||||
1@oz,241,272,3 script Miriam#ozmd3 EP18_NPC_MIRIAM,{
|
||||
1@oz,241,272,3 script(DISABLED) Miriam#ozmd3 EP18_NPC_MIRIAM,{
|
||||
if ('event_oz != 2)
|
||||
end;
|
||||
'event_oz = 3;
|
||||
'miriam3$ = instance_npcname("Miriam#ozmd3");
|
||||
.@maggi3$ = instance_npcname("Magi#ozmd3");
|
||||
.@maggi3$ = instance_npcname("Maggi#ozmd3");
|
||||
.@mark3$ = instance_npcname("Mark#ozmd3");
|
||||
.@tamarin3$ = instance_npcname("Tamarin#ozmd3");
|
||||
|
||||
setpcblock PCBLOCK_NPC, true;
|
||||
npctalk "Miriam: This bridge is dangerous, so it's best to split your luggage and cross in turn.", 'miriam3$;
|
||||
npctalk "Miriam: This bridge is dangerous, so it would be better to share the luggage and cross it one at a time.", 'miriam3$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Then I will cross first, so please follow slowly. It will help not to look under your feet.", 'miriam3$;
|
||||
npctalk "Miriam: Then, I will cross first, so please follow me slowly. It will be helpful not to look under your feet.", 'miriam3$;
|
||||
sleep2 2000;
|
||||
npctalk "Tamarin: Wow I can't see the bottom.", .@tamarin3$;
|
||||
enablenpc .@maggi3$;
|
||||
enablenpc .@mark3$;
|
||||
enablenpc .@tamarin3$;
|
||||
npctalk "Tamarin: Wow... I can't see the bottom.", .@tamarin3$;
|
||||
cloakoffnpcself( .@maggi3$ );
|
||||
cloakoffnpcself( .@mark3$ );
|
||||
cloakoffnpcself( .@tamarin3$ );
|
||||
sleep2 2000;
|
||||
npctalk "Magi: Your legs look very old...", .@maggi3$;
|
||||
npctalk "Magi: My legs look really worn out...", .@maggi3$;
|
||||
sleep2 2000;
|
||||
npctalk "Mark: Everyone be careful", .@mark3$;
|
||||
npctalk "Mark: Everyone be careful.", .@mark3$;
|
||||
sleep2 2000;
|
||||
setpcblock PCBLOCK_NPC, false;
|
||||
disablenpc .@maggi3$;
|
||||
disablenpc .@mark3$;
|
||||
disablenpc .@tamarin3$;
|
||||
cloakonnpcself( .@maggi3$ );
|
||||
cloakonnpcself( .@mark3$ );
|
||||
cloakonnpcself( .@tamarin3$ );
|
||||
'miriam3_id = getnpcid(0);
|
||||
|
||||
unitwalk 'miriam3_id,231,272, 'miriam3$ + "::OnEvent1"; // several events are required to palliate to our too short value of MAX_WALKPATH (32) used to calculate the pathing
|
||||
unitwalk 'miriam3_id,231,272, 'miriam3$ + "::OnEvent1";
|
||||
end;
|
||||
OnEvent1:
|
||||
unitwalk 'miriam3_id,211,272, 'miriam3$ + "::OnEvent2";
|
||||
@@ -236,13 +212,13 @@ OnEvent5:
|
||||
end;
|
||||
}
|
||||
|
||||
1@oz,245,272,3 duplicate(dummy_npc) Magi#ozmd3 4_4JOB_MAGGI
|
||||
1@oz,244,273,3 duplicate(dummy_npc) Mark#ozmd3 4_EP18_MARK
|
||||
1@oz,244,270,3 duplicate(dummy_npc) Tamarin#ozmd3 4_EP18_TAMARIN
|
||||
1@oz,245,272,3 duplicate(dummy_cloaked_npc) Maggi#ozmd3 4_4JOB_MAGGI
|
||||
1@oz,244,273,3 duplicate(dummy_cloaked_npc) Mark#ozmd3 4_EP18_MARK
|
||||
1@oz,244,270,3 duplicate(dummy_cloaked_npc) Tamarin#ozmd3 4_EP18_TAMARIN
|
||||
|
||||
|
||||
// Step 4 + 5
|
||||
1@oz,157,272,3 script Miriam#ozmd4 4_EP18_MIRIAM,{
|
||||
1@oz,157,272,3 script(DISABLED) Miriam#ozmd4 4_EP18_MIRIAM,{
|
||||
if ('event_oz != 3)
|
||||
end;
|
||||
'event_oz = 4;
|
||||
@@ -250,25 +226,25 @@ OnEvent5:
|
||||
.@miriam4$ = instance_npcname("Miriam#ozmd4");
|
||||
.@tamarin4$ = instance_npcname("Tamarin#ozmd4");
|
||||
.@ashtoad2$ = instance_npcname("Ash Toad#ozmd2");
|
||||
.@maggi4$ = instance_npcname("Magi#ozmd4");
|
||||
.@maggi4$ = instance_npcname("Maggi#ozmd4");
|
||||
.@mark4$ = instance_npcname("Mark#ozmd4");
|
||||
.@ashtoad3$ = instance_npcname("Ash Toad#ozmd3");
|
||||
|
||||
setpcblock PCBLOCK_NPC, true;
|
||||
mapannounce 'map_name$, "Miriam: Ah!! A monster!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
|
||||
mapannounce 'map_name$, "Miriam: Ah!! A monster!!!", bc_map, 0xB7EE,FW_NORMAL,16;
|
||||
sleep2 1500;
|
||||
mapannounce 'map_name$, "Miriam: I'll take this rude bastard.", bc_map, 0x00B7EE,FW_NORMAL,16;
|
||||
mapannounce 'map_name$, "Miriam: I will take care of this rude guy.", bc_map, 0xB7EE,FW_NORMAL,16;
|
||||
sleep2 1500;
|
||||
mapannounce 'map_name$, "Tamarin: Appeared in the back!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
|
||||
mapannounce 'map_name$, "Tamarin: It also appeared in the back!!!", bc_map, 0xB7EE,FW_NORMAL,16;
|
||||
sleep2 2000;
|
||||
enablenpc .@tamarin4$;
|
||||
sleep2 500;
|
||||
enablenpc .@ashtoad2$;
|
||||
mapannounce 'map_name$, "Magi: Crazy!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
|
||||
mapannounce 'map_name$, "Magi: Aaaah!!!", bc_map, 0xB7EE,FW_NORMAL,16;
|
||||
sleep2 500;
|
||||
enablenpc .@maggi4$;
|
||||
enablenpc .@mark4$;
|
||||
mapannounce 'map_name$, "Mark: Please support me in the front!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
|
||||
mapannounce 'map_name$, "Mark: Please support the front!!!", bc_map, 0xB7EE,FW_NORMAL,16;
|
||||
sleep2 1000;
|
||||
'mob_count_oz = 0;
|
||||
monster 'map_name$,145,274,"Ash Toad",21295,1, .@miriam4$ + "::OnMobDead"; // EP18_ASH_TOAD
|
||||
@@ -289,7 +265,7 @@ OnMobDead:
|
||||
|
||||
.@tamarin4$ = instance_npcname("Tamarin#ozmd4");
|
||||
.@ashtoad2$ = instance_npcname("Ash Toad#ozmd2");
|
||||
.@maggi4$ = instance_npcname("Magi#ozmd4");
|
||||
.@maggi4$ = instance_npcname("Maggi#ozmd4");
|
||||
.@mark4$ = instance_npcname("Mark#ozmd4");
|
||||
.@ashtoad3$ = instance_npcname("Ash Toad#ozmd3");
|
||||
.@maram4$ = instance_npcname("Maram#ozmd4");
|
||||
@@ -301,60 +277,59 @@ OnMobDead:
|
||||
npctalk "Tamarin: I did it!!!", .@tamarin4$;
|
||||
disablenpc .@ashtoad2$;
|
||||
sleep2 2000;
|
||||
npctalk "Magi: Me too!!", .@maggi4$;
|
||||
npctalk "Magi: This way too!!", .@maggi4$;
|
||||
disablenpc .@ashtoad3$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Huh It wasn't a great monster, but it would have been dangerous if they were ordinary merchants.", .@miriam4$;
|
||||
npctalk "Miriam: Huh... It wasn't a great monster, but it would have been dangerous for ordinary merchants.", .@miriam4$;
|
||||
disablenpc .@ashtoad1$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram : " + strcharinfo(0) + " Are you okay?", .@maram4$;
|
||||
enablenpc .@maram4$;
|
||||
cloakoffnpcself( .@maram4$ );
|
||||
npctalk "Maram : " + strcharinfo(0) + ", are you okay?", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: You're late! Maram!!!", .@miriam4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: I met a monster on the way, so I'm a little late.", .@maram4$;
|
||||
npctalk "Maram: I was a little late because I met a monster on the way.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: There were no monsters on the road we passed earlier.", .@miriam4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: Yeah? Where the hell do monsters spring up like this...", .@maram4$;
|
||||
npctalk "Maram: Really? Where on earth do monsters like this come from?", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: It's a big deal because it's getting harder and harder to move goods because of these monsters.", .@maram4$;
|
||||
npctalk "Maram: It's a big problem because it's getting harder to move supplies because of these monsters.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Tamarin: If you go to the ground?", .@tamarin4$;
|
||||
npctalk "Tamarin: What if you travel by land?", .@tamarin4$;
|
||||
sleep2 2000;
|
||||
npctalk "Tamarin: I heard there used to be a bridge to cross a canyon?", .@tamarin4$;
|
||||
npctalk "Tamarin: I heard there used to be a bridge across the canyon?", .@tamarin4$;
|
||||
sleep2 2000;
|
||||
npctalk "Tamarin: Because there are still remains...", .@tamarin4$;
|
||||
npctalk "Tamarin: There are still remains left...", .@tamarin4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: It is said that the bridge above was destroyed when they saw the natives crossing to escape the hardliners' attacks.", .@maram4$;
|
||||
npctalk "Maram: It is said that the bridge above was destroyed after seeing natives crossing it while fleeing an attack by hardliners.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: The land across the bridge has become uninhabitable due to volcanic ash, so it must have been the intention to dry it to death.", .@maram4$;
|
||||
npctalk "Maram: The area across the bridge has become uninhabitable due to volcanic ash, so they must have been trying to kill him.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: It's not difficult to make a bridge again...", .@maram4$;
|
||||
npctalk "Maram: It's not difficult to build a bridge again...", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: You can't advertise that you're hiding here by making a bridge because you're in hiding.", .@maram4$;
|
||||
npctalk "Maram: Since we are in a hiding position, we can't build a bridge or something and advertise that we are hiding here.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: It's dangerous and inconvenient right now, but I have no choice but to use the maze of Oz.", .@maram4$;
|
||||
npctalk "Maram: Although it is dangerous and inconvenient now, we have no choice but to use the Maze of Oz.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: In this state, it may not have been noticed until now.", .@maram4$;
|
||||
npctalk "Maram: Because it's in this condition, it may be that it hasn't been discovered until now.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Without the Maze of Oz...", .@miriam4$;
|
||||
npctalk "Miriam: If the Maze of Oz didn't exist...", .@miriam4$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: It must have been a lot harder than it is now.", .@miriam4$;
|
||||
npctalk "Miriam: It must have been much harder than it is now.", .@miriam4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: That's right", .@maram4$;
|
||||
npctalk "Maram: That's right.", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: Now, shall we walk the lovely maze of Oz again?", .@maram4$;
|
||||
npctalk "Maram: Now then, shall we walk down the lovely maze of Oz again?", .@maram4$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: What do you mean", .@miriam4$;
|
||||
npctalk "Miriam: What do you mean...", .@miriam4$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam : " + strcharinfo(0) + " From now on, go all the way down until you come to a fork.", .@miriam4$;
|
||||
npctalk "Miriam : " + strcharinfo(0) + " , from now on, just keep going down until you reach a fork in the road.", .@miriam4$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: It would be nice if the monsters didn't appear...", .@miriam4$;
|
||||
npctalk "Miriam: It would be nice if monsters didn't appear, but...", .@miriam4$;
|
||||
sleep2 1000;
|
||||
disablenpc .@maram4$;
|
||||
cloakonnpcself( .@maram4$ );
|
||||
setpcblock PCBLOCK_NPC, false;
|
||||
|
||||
disablenpc .@maggi4$;
|
||||
disablenpc .@mark4$;
|
||||
disablenpc .@tamarin4$;
|
||||
@@ -366,43 +341,43 @@ OnMobDead:
|
||||
1@oz,156,272,5 duplicate(dummy_disabled_npc) Ash Toad#ozmd1 EP18_ASH_TOAD
|
||||
1@oz,164,272,3 duplicate(dummy_disabled_npc) Ash Toad#ozmd2 EP18_ASH_TOAD
|
||||
1@oz,153,275,5 duplicate(dummy_disabled_npc) Ash Toad#ozmd3 EP18_ASH_TOAD
|
||||
1@oz,155,275,3 duplicate(dummy_disabled_npc) Magi#ozmd4 4_4JOB_MAGGI
|
||||
1@oz,155,275,3 duplicate(dummy_disabled_npc) Maggi#ozmd4 4_4JOB_MAGGI
|
||||
1@oz,156,274,3 duplicate(dummy_disabled_npc) Mark#ozmd4 4_EP18_MARK
|
||||
1@oz,161,272,5 duplicate(dummy_disabled_npc) Tamarin#ozmd4 4_EP18_TAMARIN
|
||||
|
||||
1@oz,162,275,3 duplicate(dummy_npc) Maram#ozmd4 4_EP18_MARAM
|
||||
1@oz,162,275,3 duplicate(dummy_cloaked_npc) Maram#ozmd4 4_EP18_MARAM
|
||||
|
||||
|
||||
// Step 6
|
||||
1@oz,98,172,3 script Maram#ozmd5 EP18_NPC_MARAM,{
|
||||
1@oz,98,172,3 script(DISABLED) Maram#ozmd5 EP18_NPC_MARAM,{
|
||||
if ('event_oz != 5)
|
||||
end;
|
||||
'event_oz = 6;
|
||||
.@miriam$ = instance_npcname("Miriam#ozmd5");
|
||||
.@maram$ = instance_npcname("Maram#ozmd5");
|
||||
|
||||
npctalk "Maram: It wasn't like this before, but as the ground below begins to melt, perhaps due to the effects of Mount Tor, more monsters are appearing.", .@maram$;
|
||||
cloakoffnpcself( "Maggi#ozmd5" );
|
||||
cloakoffnpcself( "Mark#ozmd5" );
|
||||
cloakoffnpcself( "Tamarin#ozmd5" );
|
||||
enablenpc .@miriam$;
|
||||
enablenpc instance_npcname("Magi#ozmd5");
|
||||
enablenpc instance_npcname("Mark#ozmd5");
|
||||
enablenpc instance_npcname("Tamarin#ozmd5");
|
||||
npctalk "Maram: It wasn't like this before, but maybe it's the effect of Tor Volcano, as the ground below starts to melt, so more monsters are appearing.";
|
||||
setpcblock PCBLOCK_NPC, true;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: Especially in areas with a lot of molten ground, when trying to avoid monsters, the lava Because there are many people who are seriously injured or never come back... ";
|
||||
npctalk "Maram: Especially in areas where the ground has melted a lot, there are many people who try to avoid monsters and end up seriously injured or unable to return due to the lava...", .@maram$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: How long will the maze of Oz last...";
|
||||
npctalk "Maram: How long will the maze of Oz endure...", .@maram$;
|
||||
sleep2 3000;
|
||||
mapannounce 'map_name$, "??? : ugh!!!!!!!!!!!!!!!!!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
|
||||
mapannounce 'map_name$, "??? : Ugh!!!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: This voice?!?!?!?!?";
|
||||
npctalk "Maram: What is this voice?!?!?!?!?", .@maram$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Imril!!!!", .@miriam$;
|
||||
sleep2 2000;
|
||||
setpcblock PCBLOCK_NPC, false;
|
||||
npctalk "Maram: I think your friend is in trouble! I'll go first, so please follow me carefully!";
|
||||
disablenpc instance_npcname("Magi#ozmd5");
|
||||
disablenpc instance_npcname("Mark#ozmd5");
|
||||
disablenpc instance_npcname("Tamarin#ozmd5");
|
||||
npctalk "Maram: I think my friend is in trouble! I'll go first, so be careful and follow me!", .@maram$;
|
||||
cloakonnpcself( "Maggi#ozmd5" );
|
||||
cloakonnpcself( "Mark#ozmd5" );
|
||||
cloakonnpcself( "Tamarin#ozmd5" );
|
||||
unitwalk getnpcid(0),68,165, .@maram$ + "::OnMove";
|
||||
donpcevent .@miriam$ + "::OnMove";
|
||||
end;
|
||||
@@ -413,33 +388,33 @@ OnMove:
|
||||
end;
|
||||
}
|
||||
|
||||
1@oz,97,167,3 script Miriam#ozmd5 EP18_NPC_MIRIAM,{
|
||||
1@oz,97,167,3 script(DISABLED) Miriam#ozmd5 EP18_NPC_MIRIAM,{
|
||||
end;
|
||||
OnMove:
|
||||
npcwalkto 67,164;
|
||||
end;
|
||||
}
|
||||
|
||||
1@oz,92,170,3 duplicate(dummy_npc) Magi#ozmd5 4_4JOB_MAGGI
|
||||
1@oz,91,169,3 duplicate(dummy_npc) Mark#ozmd5 4_EP18_MARK
|
||||
1@oz,89,170,5 duplicate(dummy_npc) Tamarin#ozmd5 4_EP18_TAMARIN
|
||||
1@oz,92,170,3 duplicate(dummy_cloaked_npc) Maggi#ozmd5 4_4JOB_MAGGI
|
||||
1@oz,91,169,3 duplicate(dummy_cloaked_npc) Mark#ozmd5 4_EP18_MARK
|
||||
1@oz,89,170,5 duplicate(dummy_cloaked_npc) Tamarin#ozmd5 4_EP18_TAMARIN
|
||||
|
||||
|
||||
|
||||
// Step 7
|
||||
1@oz,68,165,3 script Maram#ozmd7 4_EP18_MARAM,{
|
||||
1@oz,68,165,3 script(DISABLED) Maram#ozmd7 4_EP18_MARAM,{
|
||||
if ('event_oz != 6)
|
||||
end;
|
||||
'event_oz = 7;
|
||||
npctalk "Maram: Are you okay, Imril?";
|
||||
npctalk "Maram: Imril are you okay?";
|
||||
donpcevent instance_npcname("Imril#ozmd6") + "::OnStart";
|
||||
disablenpc instance_npcname("Maram#ozmd7");
|
||||
disablenpc();
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
// Step 8
|
||||
1@oz,61,163,5 script Imril#ozmd6 4_EP18_IMRIL,{
|
||||
1@oz,61,163,5 script(DISABLED) Imril#ozmd6 4_EP18_IMRIL,{
|
||||
end;
|
||||
|
||||
OnStart:
|
||||
@@ -460,56 +435,57 @@ OnMobDead:
|
||||
.@maram8$ = instance_npcname("Maram#ozmd8");
|
||||
.@imril6$ = instance_npcname("Imril#ozmd6");
|
||||
.@miriam5$ = instance_npcname("Miriam#ozmd5");
|
||||
.@maggi6$ = instance_npcname("Magi#ozmd6");
|
||||
.@maggi6$ = instance_npcname("Maggi#ozmd6");
|
||||
.@mark6$ = instance_npcname("Mark#ozmd6");
|
||||
.@tamarin6$ = instance_npcname("Tamarin#ozmd6");
|
||||
|
||||
setpcblock PCBLOCK_NPC, true;
|
||||
enablenpc .@maram8$;
|
||||
npctalk "Imril: Thanks! We almost died!", .@imril6$;
|
||||
|
||||
cloakoffnpcself( .@maram8$ );
|
||||
npctalk "Imril: Thank you! I almost died!", .@imril6$;
|
||||
sleep2 2000;
|
||||
npctalk "Imril: Don't go downstairs because the atmosphere isn't too bad.", .@imril6$;
|
||||
npctalk "Imril: The atmosphere is unusual, so don't go downstairs.", .@imril6$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: You seem to see monsters more often than last time.", .@miriam5$;
|
||||
npctalk "Miriam: It seems like I see monsters more often than last time.", .@miriam5$;
|
||||
sleep2 2000;
|
||||
npctalk "Imril: But what about those people?", .@imril6$;
|
||||
enablenpc .@maggi6$;
|
||||
enablenpc .@mark6$;
|
||||
enablenpc .@tamarin6$;
|
||||
npctalk "Imril: And what about those people?", .@imril6$;
|
||||
cloakoffnpcself( .@maggi6$ );
|
||||
cloakoffnpcself( .@mark6$ );
|
||||
cloakoffnpcself( .@tamarin6$ );
|
||||
sleep2 2000;
|
||||
npctalk "Maram: They are adventurers who sometimes help with mother's work.", .@maram8$;
|
||||
npctalk "Maram: They are adventurers who sometimes help my mother with her work.", .@maram8$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: Trustworthy people, don't be so wary.", .@maram8$;
|
||||
npctalk "Maram: These are trustworthy people, so don't be so wary.", .@maram8$;
|
||||
sleep2 2000;
|
||||
npctalk "Imril: Because you trust people too easily.", .@imril6$;
|
||||
npctalk "Imril: I heard you trust people too easily.", .@imril6$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Yes.", .@miriam5$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: Anyway, let's escape before more monsters come out.", .@maram8$;
|
||||
npctalk "Maram: Anyway, let's escape quickly before more monsters appear.", .@maram8$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: Not long left.", .@maram8$;
|
||||
npctalk "Maram: Not much left.", .@maram8$;
|
||||
sleep2 2000;
|
||||
npctalk "Maram: It's hard to see, but just follow the road up here!", .@maram8$;
|
||||
npctalk "Maram: It's hard to see, but you can follow the road up here and keep moving!", .@maram8$;
|
||||
sleep2 2000;
|
||||
npctalk "Tamarin: I think this is the way!", .@tamarin6$;
|
||||
disablenpc .@maggi6$;
|
||||
disablenpc .@mark6$;
|
||||
disablenpc .@tamarin6$;
|
||||
disablenpc .@maram8$;
|
||||
cloakonnpcself( .@maggi6$ );
|
||||
cloakonnpcself( .@mark6$ );
|
||||
cloakonnpcself( .@tamarin6$ );
|
||||
cloakonnpcself( .@maram8$ );
|
||||
enablenpc instance_npcname("#oz_way");
|
||||
setpcblock PCBLOCK_NPC, false;
|
||||
end;
|
||||
}
|
||||
|
||||
1@oz,68,165,3 duplicate(dummy_npc) Maram#ozmd8 4_EP18_MARAM
|
||||
1@oz,61,168,3 duplicate(dummy_npc) Magi#ozmd6 4_4JOB_MAGGI
|
||||
1@oz,65,167,3 duplicate(dummy_npc) Mark#ozmd6 4_EP18_MARK
|
||||
1@oz,59,171,3 duplicate(dummy_npc) Tamarin#ozmd6 4_EP18_TAMARIN
|
||||
1@oz,68,165,3 duplicate(dummy_cloaked_npc) Maram#ozmd8 4_EP18_MARAM
|
||||
1@oz,61,168,3 duplicate(dummy_cloaked_npc) Maggi#ozmd6 4_4JOB_MAGGI
|
||||
1@oz,65,167,3 duplicate(dummy_cloaked_npc) Mark#ozmd6 4_EP18_MARK
|
||||
1@oz,59,171,3 duplicate(dummy_cloaked_npc) Tamarin#ozmd6 4_EP18_TAMARIN
|
||||
|
||||
|
||||
|
||||
// Step 9
|
||||
1@oz,58,256,5 script #oz_way 1_SHADOW_NPC,3,3,{
|
||||
1@oz,58,256,5 script(DISABLED) #oz_way 1_SHADOW_NPC,3,3,{
|
||||
end;
|
||||
OnTouch:
|
||||
if ('event_oz != 8)
|
||||
@@ -520,11 +496,11 @@ OnTouch:
|
||||
}
|
||||
|
||||
// Step 10 (maybe not required ?)
|
||||
1@oz,44,255,5 script Maram#ozmd6 4_EP18_MARAM,{
|
||||
1@oz,44,255,5 script(DISABLED) Maram#ozmd6 4_EP18_MARAM,{
|
||||
if ('event_oz != 9)
|
||||
end;
|
||||
'event_oz = 10;
|
||||
npctalk "Maram: This way!!!";
|
||||
npctalk "Maram: Go down this road.";
|
||||
initnpctimer;
|
||||
end;
|
||||
OnTimer2000:
|
||||
@@ -536,7 +512,7 @@ OnTimer2000:
|
||||
|
||||
// Step 11
|
||||
// (Step 29 on the main quest).
|
||||
1@oz,21,189,5 script Maram#ozmd9 4_EP18_MARAM,{
|
||||
1@oz,21,189,5 script(DISABLED) Maram#ozmd9 4_EP18_MARAM,{
|
||||
if ('event_oz != 10)
|
||||
end;
|
||||
'event_oz = 11;
|
||||
@@ -546,50 +522,47 @@ OnTimer2000:
|
||||
.@imril7$ = instance_npcname("Imril#ozmd7");
|
||||
|
||||
setpcblock PCBLOCK_NPC, true;
|
||||
npctalk "Maram: Climb up the rope in front of this to get out.", .@maram9$;
|
||||
enablenpc .@miriam7$;
|
||||
enablenpc .@imril7$;
|
||||
npctalk "Maram: If you climb up the rope in front of here, you can go outside.", .@maram9$;
|
||||
cloakoffnpcself( .@miriam7$ );
|
||||
cloakoffnpcself( .@imril7$ );
|
||||
sleep2 2000;
|
||||
npctalk "Imril: I'll go get some hidden stuff here, so go up first.", .@imril7$;
|
||||
npctalk "Imril: I'll take some hidden items here, so go up first.", .@imril7$;
|
||||
sleep2 2000;
|
||||
npctalk "Miriam: Everyone is very tired. Let's go upstairs.", .@miriam7$;
|
||||
if (ep18_1_main == 30) {
|
||||
changequest 11719,11720;
|
||||
ep18_1_main = 31;
|
||||
npctalk "Miriam: Everyone is very tired. Let's go up quickly.", .@miriam7$;
|
||||
if (ep18_main == 30) {
|
||||
erasequest 11719;
|
||||
setquest 11720;
|
||||
ep18_main = 31;
|
||||
}
|
||||
disablenpc .@miriam7$;
|
||||
disablenpc .@imril7$;
|
||||
cloakonnpcself( .@miriam7$ );
|
||||
cloakonnpcself( .@imril7$ );
|
||||
setpcblock PCBLOCK_NPC, false;
|
||||
end;
|
||||
|
||||
OnInstanceInit:
|
||||
disablenpc instance_npcname("Maram#ozmd9");
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11719) == 1" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(11719) == 1" );
|
||||
end;
|
||||
}
|
||||
|
||||
1@oz,22,187,5 duplicate(dummy_npc) Miriam#ozmd7 4_EP18_MIRIAM
|
||||
1@oz,16,185,3 duplicate(dummy_npc) Imril#ozmd7 4_EP18_IMRIL
|
||||
1@oz,22,187,5 duplicate(dummy_cloaked_npc) Miriam#ozmd7 4_EP18_MIRIAM
|
||||
1@oz,16,185,3 duplicate(dummy_cloaked_npc) Imril#ozmd7 4_EP18_IMRIL
|
||||
|
||||
|
||||
// Step 12
|
||||
1@oz,28,190,3 script(DISABLED) Rope#outoz2 4_ROPEPILE,{
|
||||
if ('event_oz < 11)
|
||||
end;
|
||||
mes "I think I can climb up with a rope.";
|
||||
next;
|
||||
switch( select( "Use a rope to climb", "Do not use" ) ) {
|
||||
case 1:
|
||||
close2;
|
||||
warp "gw_fild01",275,337;
|
||||
end;
|
||||
case 2:
|
||||
end;
|
||||
if ('event_oz != 11) {
|
||||
mes "It can't be used yet. Let's talk to Maram first.";
|
||||
close;
|
||||
}
|
||||
mes "I think I can climb up using the rope.";
|
||||
next;
|
||||
if (select( "Use the rope to climb up.", "Do not use." ) == 2)
|
||||
end;
|
||||
warp "gw_fild01",275,337;
|
||||
end;
|
||||
|
||||
OnInstanceInit:
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11720) == 1" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(11720) == 1" );
|
||||
end;
|
||||
}
|
||||
|
||||
@@ -601,7 +574,7 @@ OnTouch_:
|
||||
getmapxy .@map$,.@x,.@y, BL_NPC;
|
||||
monster 'map_name$,.@x-1,.@y,"Ash Toad",21295,1; // EP18_ASH_TOAD
|
||||
monster 'map_name$,.@x+1,.@y,"Rake Hand",21296,1; // EP18_RAKEHAND
|
||||
disablenpc instance_npcname( strnpcinfo(0) );
|
||||
cloakonnpcself();
|
||||
end;
|
||||
}
|
||||
|
||||
@@ -612,4 +585,3 @@ OnTouch_:
|
||||
1@oz,79,203,5 duplicate(#oz01) #oz06 1_SHADOW_NPC,4,4
|
||||
1@oz,124,261,5 duplicate(#oz01) #oz07 1_SHADOW_NPC,4,4
|
||||
1@oz,139,279,5 duplicate(#oz01) #oz08 1_SHADOW_NPC,4,4
|
||||
|
||||
|
||||
@@ -2,54 +2,56 @@
|
||||
//= Instance: Thor Gunsu Base.
|
||||
//===== Description: =========================================
|
||||
//- [Walkthrough conversion]
|
||||
//- Part of the episode 18.1 main quest.
|
||||
//- Part of the Episode 18 main quest.
|
||||
//===== Changelogs: ==========================================
|
||||
//= 1.0 First version. [Capuche]
|
||||
//============================================================
|
||||
|
||||
// Main Quest: Step 47.
|
||||
que_thr,133,53,5 script Maram#Armybase1 4_EP18_MARAM,{
|
||||
if (ep18_1_main != 45 && ep18_1_main != 46)
|
||||
if (ep18_main < 45 || ep18_main > 46)
|
||||
end;
|
||||
if (ep18_1_main == 45) {
|
||||
if (ep18_main == 45) {
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "You have arrived, adventurer!";
|
||||
mes "You did a great job getting here.";
|
||||
mes "You've arrived, adventurer!";
|
||||
mes "Thank you for coming all the way here.";
|
||||
next;
|
||||
cutin "ep18_maram_03.png",2;
|
||||
mes "[Maram]";
|
||||
mes "After all, it looks like this next one is real. The guards are different from before...";
|
||||
mes "Let's look inside, being careful not to be caught by the guards.";
|
||||
mes "It seems like this is the real deal after all. The security here is different from what it has been so far....";
|
||||
mes "Let's be careful not to be caught by the guards and explore the inside.";
|
||||
next;
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "Make sure to move out of sight of the guards as much as possible.";
|
||||
mes "If you make a mistake, you will be attacked, so if you don't break through, we'll meet again here.";
|
||||
changequest 16577,16578;
|
||||
ep18_1_main = 46;
|
||||
mes "Try to move away from the security guard's line of sight as much as possible.";
|
||||
mes "If you get caught, you might be attacked, so if you can't break through, we'll meet again here.";
|
||||
erasequest 16577;
|
||||
setquest 16578;
|
||||
ep18_main = 46;
|
||||
next;
|
||||
}
|
||||
else if (ep18_1_main == 46) {
|
||||
else if (ep18_main == 46) {
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "Let's try to get in as far as possible from the guard tower.";
|
||||
mes "Let's try to go in while avoiding the guard tower as much as possible.";
|
||||
next;
|
||||
}
|
||||
|
||||
.@md_name$ = "Thor Gunsu Base";
|
||||
.@md_name$ = "Thor Military Base";
|
||||
cutin "",255;
|
||||
mes "^FF0000 Any arbitrary processing such as taming monsters in the dungeon is not considered normal. Please note.^000000";
|
||||
mes "^FF0000Caution : If you perform arbitrary processing within the dungeon, such as monster taming, it will not be considered normal progress.^000000";
|
||||
next;
|
||||
// player has party
|
||||
if (is_party_leader()) {
|
||||
if (is_party_leader())
|
||||
// player is leader of the party
|
||||
.@create$ = "Open " + .@md_name$;
|
||||
}
|
||||
switch( select( .@create$, .@md_name$ + " entry" ) ) {
|
||||
.@create$ = "Apply for entry to " + .@md_name$ + "";
|
||||
|
||||
switch( select( .@create$, "Enter " + .@md_name$ + "" ) ) {
|
||||
case 1:
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "When the application is complete, talk to me again and select ^0000CD Thor military base entry^000000";
|
||||
mes "When the application is complete, talk to me again and select ^0000CD" + .@md_name$ + " entry^000000";
|
||||
if (instance_create(.@md_name$) < 0) {
|
||||
mes "Party: " + getpartyname(getcharid(1)) + "";
|
||||
mes "Leader: " + strcharinfo(0) + "";
|
||||
@@ -67,14 +69,14 @@ que_thr,133,53,5 script Maram#Armybase1 4_EP18_MARAM,{
|
||||
case IE_NOINSTANCE:
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "I don't think the dungeon has been created yet? Please check later.";
|
||||
mes "It seems like you haven't created the dungeon yet. Please check again in a moment.";
|
||||
close3;
|
||||
case IE_NOMEMBER:
|
||||
mes "[Maram]";
|
||||
mes "^ff0000Only a member of the party can enter the Memorial Dungeon.^000000";
|
||||
close;
|
||||
case IE_OK:
|
||||
mapannounce "que_thr", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering " + .@md_name$ + ".",bc_map,"0x00ff99",FW_NORMAL,12;
|
||||
mapannounce "que_thr", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering " + .@md_name$ + ".", bc_map, 0xFF99;
|
||||
// warp 1@tcamp,103,237;
|
||||
end;
|
||||
}
|
||||
@@ -82,34 +84,24 @@ que_thr,133,53,5 script Maram#Armybase1 4_EP18_MARAM,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(16577) == 1" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(16577) == 1" );
|
||||
end;
|
||||
}
|
||||
|
||||
1@tcamp,106,237,3 script Maram#base1 4_EP18_MARAM,{
|
||||
cutin "ep18_maram_01.png",2;
|
||||
1@tcamp,106,237,3 script Maram#Base1 4_EP18_MARAM,{
|
||||
mes "[Maram]";
|
||||
mes "Be careful and explore the inside.";
|
||||
mes "I heard from Mr. Dandelion earlier, there aren't many people, but there are Watch Towers here and there that monitor a fairly wide area.";
|
||||
mes "Be careful and explore inside.";
|
||||
mes "From what I heard from Dandelion earlier, there aren't many people, but there are watchtowers here and there that monitor a fairly wide area.";
|
||||
next;
|
||||
mes "[Maram]";
|
||||
mes "If you get caught by the Watch Tower, soldiers will appear, so be careful not to get caught.";
|
||||
mes "Well, if you find something, please contact me!";
|
||||
close3;
|
||||
mes "If you get caught by the watchtower, soldiers will appear, so be careful not to get caught.";
|
||||
mes "Well, if you find anything, please contact me!";
|
||||
close;
|
||||
|
||||
OnInstanceInit:
|
||||
'step = 0;
|
||||
'map_tcamp$ = instance_mapname("1@tcamp");
|
||||
|
||||
disablenpc instance_npcname("Document Pile#Site1");
|
||||
disablenpc instance_npcname("Document Pile#Site2");
|
||||
disablenpc instance_npcname("Document Pile#Site3");
|
||||
disablenpc instance_npcname("Document Pile#Site4");
|
||||
disablenpc instance_npcname("Document Pile#Site5");
|
||||
disablenpc instance_npcname("Maram#Lock1");
|
||||
disablenpc instance_npcname("Maram#Lock2");
|
||||
disablenpc instance_npcname("Maram#Lock3");
|
||||
disablenpc instance_npcname("Maram#Lock4");
|
||||
|
||||
setcell 'map_tcamp$,137,216,142,216,cell_walkable,0;
|
||||
setcell 'map_tcamp$,135,145,144,145,cell_walkable,0;
|
||||
setcell 'map_tcamp$,223,105,223,110,cell_walkable,0;
|
||||
@@ -128,11 +120,11 @@ OnInstanceInit:
|
||||
//-------------------------------------------------------------------
|
||||
// Traps
|
||||
//-------------------------------------------------------------------
|
||||
1@tcamp,120,228,3 script Watch Tower#Watch1 4_SYSTEM_BOX,7,7,{
|
||||
1@tcamp,120,228,3 script Watchtower#Watch1 4_SYSTEM_BOX,7,7,{
|
||||
end;
|
||||
OnTouch: // note: hidden player trigger the event
|
||||
npctalk "Detect intruders. Exclude them.";
|
||||
mapannounce 'map_tcamp$, "Intruder detected, intruder detected. We rule out immediately.", bc_map, 0xFF0000;
|
||||
npctalk "Intruder detected !!";
|
||||
mapannounce 'map_tcamp$, "Intruder found, intruder found. Ruled out immediately.", bc_map, 0xFF0000;
|
||||
getmapxy .@map$,.@x,.@y, BL_NPC;
|
||||
|
||||
areamonster 'map_tcamp$,.@x-2,.@y-2,.@x+2,.@y+2,"Base Soldier",21309,3; // EP18_MD_THOR_GUARD
|
||||
@@ -147,316 +139,338 @@ OnInstanceInit:
|
||||
end;
|
||||
}
|
||||
|
||||
1@tcamp,135,228,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch2 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,152,133,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch3 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,167,133,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch4 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,182,133,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch5 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,161,96,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch6 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,146,96,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch7 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,116,102,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch8 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,88,92,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch9 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,240,148,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch10 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,156,71,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch11 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,176,194,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch12 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,192,194,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch13 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,142,153,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch14 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,142,168,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch15 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,192,179,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch16 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,237,90,3 duplicate(Watch Tower#Watch1) Watch Tower#Watch17 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,135,228,3 duplicate(Watchtower#Watch1) Watchtower#Watch2 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,152,133,3 duplicate(Watchtower#Watch1) Watchtower#Watch3 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,167,133,3 duplicate(Watchtower#Watch1) Watchtower#Watch4 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,182,133,3 duplicate(Watchtower#Watch1) Watchtower#Watch5 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,161,96,3 duplicate(Watchtower#Watch1) Watchtower#Watch6 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,146,96,3 duplicate(Watchtower#Watch1) Watchtower#Watch7 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,116,102,3 duplicate(Watchtower#Watch1) Watchtower#Watch8 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,88,92,3 duplicate(Watchtower#Watch1) Watchtower#Watch9 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,240,148,3 duplicate(Watchtower#Watch1) Watchtower#Watch10 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,156,71,3 duplicate(Watchtower#Watch1) Watchtower#Watch11 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,176,194,3 duplicate(Watchtower#Watch1) Watchtower#Watch12 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,192,194,3 duplicate(Watchtower#Watch1) Watchtower#Watch13 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,142,153,3 duplicate(Watchtower#Watch1) Watchtower#Watch14 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,142,168,3 duplicate(Watchtower#Watch1) Watchtower#Watch15 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,192,179,3 duplicate(Watchtower#Watch1) Watchtower#Watch16 4_SYSTEM_BOX,7,7
|
||||
1@tcamp,237,90,3 duplicate(Watchtower#Watch1) Watchtower#Watch17 4_SYSTEM_BOX,7,7
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Walls
|
||||
//-------------------------------------------------------------------
|
||||
1@tcamp,138,216,3 script Lock#1-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock1");
|
||||
1@tcamp,138,216,3 script Lock Device#1-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock Device1");
|
||||
enablenpc .@maram$;
|
||||
npctalk "Maram: Wait a minute. I know how to open it.", .@maram$;
|
||||
npctalk "Maram: Please wait a moment. I know how to open it.", .@maram$;
|
||||
progressbar_npc "3131FF",10;
|
||||
npctalk "Maram: Now we can pass!", .@maram$;
|
||||
disablenpc instance_npcname("Lock#1-1");
|
||||
disablenpc instance_npcname("Lock#1-2");
|
||||
npctalk "Maram: Well, we can pass now!", .@maram$;
|
||||
disablenpc instance_npcname("Lock Device#1-1");
|
||||
disablenpc instance_npcname("Lock Device#1-2");
|
||||
disablenpc .@maram$;
|
||||
setcell 'map_tcamp$,137,216,142,216,cell_walkable,1;
|
||||
end;
|
||||
}
|
||||
1@tcamp,141,216,3 duplicate(Lock#1-1) Lock#1-2 4_ROPEPILE
|
||||
1@tcamp,140,218,3 duplicate(dummy_npc) Maram#Lock1 4_EP18_MARAM
|
||||
1@tcamp,141,216,3 duplicate(Lock Device#1-1) Lock Device#1-2 4_ROPEPILE
|
||||
1@tcamp,140,218,3 duplicate(dummy_disabled_npc) Maram#Lock Device1 4_EP18_MARAM
|
||||
|
||||
1@tcamp,136,145,3 script Lock#2-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock2");
|
||||
1@tcamp,136,145,3 script Lock Device#2-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock Device2");
|
||||
enablenpc .@maram$;
|
||||
progressbar_npc "3131FF",10;
|
||||
npctalk "It would be better to proceed with caution.", .@maram$;
|
||||
disablenpc instance_npcname("Lock#2-1");
|
||||
disablenpc instance_npcname("Lock#2-2");
|
||||
disablenpc instance_npcname("Lock#2-3");
|
||||
disablenpc instance_npcname("Lock#2-4");
|
||||
disablenpc instance_npcname("Lock Device#2-1");
|
||||
disablenpc instance_npcname("Lock Device#2-2");
|
||||
disablenpc instance_npcname("Lock Device#2-3");
|
||||
disablenpc instance_npcname("Lock Device#2-4");
|
||||
disablenpc .@maram$;
|
||||
setcell 'map_tcamp$,135,145,144,145,cell_walkable,1;
|
||||
end;
|
||||
}
|
||||
1@tcamp,138,145,3 duplicate(Lock#2-1) Lock#2-2 4_ROPEPILE
|
||||
1@tcamp,141,145,3 duplicate(Lock#2-1) Lock#2-3 4_ROPEPILE
|
||||
1@tcamp,143,145,3 duplicate(Lock#2-1) Lock#2-4 4_ROPEPILE
|
||||
1@tcamp,142,147,3 duplicate(dummy_npc) Maram#Lock2 4_EP18_MARAM
|
||||
1@tcamp,138,145,3 duplicate(Lock Device#2-1) Lock Device#2-2 4_ROPEPILE
|
||||
1@tcamp,141,145,3 duplicate(Lock Device#2-1) Lock Device#2-3 4_ROPEPILE
|
||||
1@tcamp,143,145,3 duplicate(Lock Device#2-1) Lock Device#2-4 4_ROPEPILE
|
||||
1@tcamp,142,147,3 duplicate(dummy_disabled_npc) Maram#Lock Device2 4_EP18_MARAM
|
||||
|
||||
1@tcamp,223,109,3 script Lock#3-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock3");
|
||||
1@tcamp,223,109,3 script Lock Device#3-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock Device3");
|
||||
enablenpc .@maram$;
|
||||
npctalk "Maram: This building looks pretty suspicious, right? There must be a surveillance system in it as well.", .@maram$;
|
||||
npctalk "Maram: This building looks quite suspicious, right? There must be a surveillance system in here too.", .@maram$;
|
||||
progressbar_npc "3131FF",10;
|
||||
npctalk "Maram: Let's explore carefully, being careful not to get caught this time.", .@maram$;
|
||||
disablenpc instance_npcname("Lock#3-1");
|
||||
disablenpc instance_npcname("Lock#3-2");
|
||||
npctalk "Maram: Let's explore carefully this time, being careful not to get caught.", .@maram$;
|
||||
disablenpc instance_npcname("Lock Device#3-1");
|
||||
disablenpc instance_npcname("Lock Device#3-2");
|
||||
disablenpc .@maram$;
|
||||
setcell 'map_tcamp$,223,105,223,110,cell_walkable,1;
|
||||
end;
|
||||
}
|
||||
1@tcamp,223,106,3 duplicate(Lock#3-1) Lock#3-2 4_ROPEPILE
|
||||
1@tcamp,226,114,3 duplicate(dummy_npc) Maram#Lock3 4_EP18_MARAM
|
||||
1@tcamp,223,106,3 duplicate(Lock Device#3-1) Lock Device#3-2 4_ROPEPILE
|
||||
1@tcamp,226,114,3 duplicate(dummy_disabled_npc) Maram#Lock Device3 4_EP18_MARAM
|
||||
|
||||
1@tcamp,80,99,3 script Lock#4-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock4");
|
||||
1@tcamp,80,99,3 script Lock Device#4-1 4_ROPEPILE,{
|
||||
.@maram$ = instance_npcname("Maram#Lock Device4");
|
||||
enablenpc .@maram$;
|
||||
npctalk "Maram: I think you've gotten pretty deep. You should be able to find what you need safely.", .@maram$;
|
||||
npctalk "Maram: Looks like we're in pretty deep. We should be able to safely find what we need.", .@maram$;
|
||||
progressbar_npc "3131FF",10;
|
||||
npctalk "Maram: Shall we wish you luck?", .@maram$;
|
||||
disablenpc instance_npcname("Lock#4-1");
|
||||
disablenpc instance_npcname("Lock#4-2");
|
||||
disablenpc instance_npcname("Lock#4-3");
|
||||
npctalk "Maram: Shall we wish you good luck?", .@maram$;
|
||||
disablenpc instance_npcname("Lock Device#4-1");
|
||||
disablenpc instance_npcname("Lock Device#4-2");
|
||||
disablenpc instance_npcname("Lock Device#4-3");
|
||||
disablenpc .@maram$;
|
||||
setcell 'map_tcamp$,80,94,80,100,cell_walkable,1;
|
||||
|
||||
enablenpc instance_npcname("Document Pile#Site1");
|
||||
enablenpc instance_npcname("Document Pile#Site2");
|
||||
enablenpc instance_npcname("Document Pile#Site3");
|
||||
enablenpc instance_npcname("Document Pile#Site4");
|
||||
enablenpc instance_npcname("Document Pile#Site5");
|
||||
enablenpc instance_npcname("Miriam#base1");
|
||||
enablenpc instance_npcname("Maram#base5");
|
||||
enablenpc instance_npcname("Pile of documents#Base1");
|
||||
enablenpc instance_npcname("Pile of documents#Base2");
|
||||
enablenpc instance_npcname("Pile of documents#Base3");
|
||||
enablenpc instance_npcname("Pile of documents#Base4");
|
||||
enablenpc instance_npcname("Pile of documents#Base5");
|
||||
enablenpc instance_npcname("Miriam#Base1");
|
||||
enablenpc instance_npcname("Maram#Base5");
|
||||
if ('step == 0)
|
||||
'step = 1;
|
||||
end;
|
||||
}
|
||||
1@tcamp,80,97,3 duplicate(Lock#4-1) Lock#4-2 4_ROPEPILE
|
||||
1@tcamp,80,95,3 duplicate(Lock#4-1) Lock#4-3 4_ROPEPILE
|
||||
1@tcamp,82,100,3 duplicate(dummy_npc) Maram#Lock4 4_EP18_MARAM
|
||||
1@tcamp,80,97,3 duplicate(Lock Device#4-1) Lock Device#4-2 4_ROPEPILE
|
||||
1@tcamp,80,95,3 duplicate(Lock Device#4-1) Lock Device#4-3 4_ROPEPILE
|
||||
1@tcamp,82,100,3 duplicate(dummy_disabled_npc) Maram#Lock Device4 4_EP18_MARAM
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Final
|
||||
//-------------------------------------------------------------------
|
||||
1@tcamp,32,100,3 script Document Pile#Site1 4_EP18_PAPERS,{
|
||||
mes "[Pile of Papers]";
|
||||
mes "All the papers are jumbled up.";
|
||||
mes "I took out a few sheets from the middle These are the expiry date of the weapon and the sales statement.";
|
||||
1@tcamp,32,100,3 script(DISABLED) Pile of documents#Base1 4_EP18_PAPERS,{
|
||||
if ('step != 1)
|
||||
end;
|
||||
mes "[Pile of documents]";
|
||||
mes "All kinds of documents are all mixed up.";
|
||||
mes "I took out a few pages from the middle and found that they were weapons expiration dates and sales records.";
|
||||
next;
|
||||
mes "[Pile of Papers]";
|
||||
mes "Even the date is very recent. There is a record of handing over a large number of weapons to Mr. Dandelion.";
|
||||
mes "I think I found what I was looking for. I put the documents in my pocket.";
|
||||
mes "[Pile of documents]";
|
||||
mes "Even the date is very recent. There is also a record of handing over a large amount of weapons to Mr. Dandelion.";
|
||||
mes "It looks like I found what I was looking for. I put the documents in my arms.";
|
||||
close2;
|
||||
getitem 1000409,1; // Ep18_Docu_File
|
||||
cloakonnpcself( instance_npcname("Document Pile#Site1") );
|
||||
cloakonnpcself();
|
||||
end;
|
||||
}
|
||||
|
||||
1@tcamp,49,123,3 script Document Pile#Site2 4_EP18_PAPERS,{
|
||||
mes "[Pile of Papers]";
|
||||
mes "All the papers are jumbled up.";
|
||||
mes "At the top of the page the final menu for luncheon dinner?";
|
||||
1@tcamp,49,123,3 script(DISABLED) Pile of documents#Base2 4_EP18_PAPERS,{
|
||||
if ('step != 1)
|
||||
end;
|
||||
mes "[Pile of documents]";
|
||||
mes "All kinds of documents are all mixed up.";
|
||||
mes "On the top page... is it a battle to decide the menu for lunch?";
|
||||
next;
|
||||
mes "[Pile of Papers]";
|
||||
mes "It seems that the menu is fried fish with sauce.";
|
||||
mes "You seem to have left unimportant documents. Let's take care of them first.";
|
||||
mes "[Pile of documents]";
|
||||
mes "It looks like the menu has been set on fried fish covered in sauce....";
|
||||
mes "It looks like he left behind only unimportant documents. Let's take care of them for now.";
|
||||
close2;
|
||||
getitem 1000409,1; // Ep18_Docu_File
|
||||
cloakonnpcself( instance_npcname("Document Pile#Site2") );
|
||||
cloakonnpcself();
|
||||
end;
|
||||
}
|
||||
|
||||
1@tcamp,29,86,3 script Document Pile#Site3 4_EP18_PAPERS,{
|
||||
mes "[Pile of Papers]";
|
||||
mes "All the papers are jumbled up.";
|
||||
mes "I took one out of the middle The layout of the military base guards?";
|
||||
1@tcamp,29,86,3 script(DISABLED) Pile of documents#Base3 4_EP18_PAPERS,{
|
||||
if ('step != 1)
|
||||
end;
|
||||
mes "[Pile of documents]";
|
||||
mes "All kinds of documents are all mixed up.";
|
||||
mes "I took one out from the middle and saw... a map of the security guards at the military base?";
|
||||
next;
|
||||
mes "[Pile of Papers]";
|
||||
mes "Looking at the date, it was a long time ago.";
|
||||
mes "You seem to have left unimportant documents. Let's take care of them first.";
|
||||
mes "[Pile of documents]";
|
||||
mes "Looking at the date, it's a long time ago document.";
|
||||
mes "It looks like he left behind only unimportant documents. Let's take care of them for now.";
|
||||
close2;
|
||||
getitem 1000409,1; // Ep18_Docu_File
|
||||
cloakonnpcself( instance_npcname("Document Pile#Site3") );
|
||||
cloakonnpcself();
|
||||
end;
|
||||
}
|
||||
|
||||
1@tcamp,60,122,3 script Document Pile#Site4 4_EP18_PAPERS,{
|
||||
mes "[Pile of Papers]";
|
||||
mes "All the papers are jumbled up.";
|
||||
mes "The top one... 'If you feed the magmaring potatoes and hunt them after a while, will they drop the baked potatoes?'";
|
||||
1@tcamp,60,122,3 script(DISABLED) Pile of documents#Base4 4_EP18_PAPERS,{
|
||||
if ('step != 1)
|
||||
end;
|
||||
mes "[Pile of documents]";
|
||||
mes "All kinds of documents are all mixed up.";
|
||||
mes "The top chapter is... ¡®If you feed a magmaring a potato and then hunt it after a while, should it drop a baked potato?'";
|
||||
next;
|
||||
mes "[Pile of Papers]";
|
||||
mes "why is this here. But I'm curious about the result!";
|
||||
mes "You seem to have left unimportant documents. Let's take care of them first.";
|
||||
mes "[Pile of documents]";
|
||||
mes "...Why is this here? But I'm curious about the results!";
|
||||
mes "It looks like he left behind only unimportant documents. Let's take care of them for now.";
|
||||
close2;
|
||||
getitem 1000409,1; // Ep18_Docu_File
|
||||
cloakonnpcself( instance_npcname("Document Pile#Site4") );
|
||||
cloakonnpcself();
|
||||
end;
|
||||
}
|
||||
|
||||
1@tcamp,31,84,3 script Document Pile#Site5 4_EP18_PAPERS,{
|
||||
mes "[Pile of Papers]";
|
||||
mes "All the papers are jumbled up.";
|
||||
mes "Picking one out of the middle I found an illustration of the Pope drawn by icing the Pope's cookie icing with a pen.";
|
||||
1@tcamp,31,84,3 script(DISABLED) Pile of documents#Base5 4_EP18_PAPERS,{
|
||||
if ('step != 1)
|
||||
end;
|
||||
mes "[Pile of documents]";
|
||||
mes "All kinds of documents are all mixed up.";
|
||||
mes "When I pulled one out from the middle... I found an illustration of the Pope drawn with Pope cookie icing using a pen.";
|
||||
next;
|
||||
mes "[Pile of Papers]";
|
||||
mes "What kind of picture is it? Besides, you drew it very well.";
|
||||
mes "You seem to have left unimportant documents. Let's take care of them first.";
|
||||
mes "[Pile of documents]";
|
||||
mes "What kind of picture is this? And it's really well drawn....";
|
||||
mes "It looks like he left behind only unimportant documents. Let's take care of them for now.";
|
||||
close2;
|
||||
getitem 1000409,1; // Ep18_Docu_File
|
||||
cloakonnpcself( instance_npcname("Document Pile#Site5") );
|
||||
cloakonnpcself();
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
1@tcamp,34,100,3 script Miriam#base1 4_EP18_MIRIAM,3,3,{
|
||||
disable_items;
|
||||
if (countitem(1000409) < 5) { // Ep18_Docu_File
|
||||
1@tcamp,34,100,3 script(DISABLED) Miriam#Base1 4_EP18_MIRIAM,3,3,{
|
||||
if ('step == 1) {
|
||||
if (countitem(1000409) < 5) { // Ep18_Docu_File
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "As expected, you are talented, adventurer. I used all my connections to find out the location.";
|
||||
mes "It looks like you found the adventurer and Maram right away.";
|
||||
next;
|
||||
mes "[Miriam]";
|
||||
mes "Please read these documents. They contain what we are looking for.";
|
||||
mes "Rather than having me explain everything to you, I think it would be better for you to see it for yourself.";
|
||||
close3;
|
||||
}
|
||||
if (getequipid(EQI_HEAD_TOP) != 400127) { // Ep18_Mini_Elly
|
||||
mes "[Mini Elly]";
|
||||
mes "Get it out of the bag. Put it on your head.";
|
||||
close;
|
||||
}
|
||||
mes "[Miriam]";
|
||||
mes ".......";
|
||||
next;
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "No, Miriam! How are you here?";
|
||||
mes "They said they would conduct a separate investigation!";
|
||||
next;
|
||||
cutin "ep18_miriam_01.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "How did you and the adventurer dig this far?";
|
||||
mes "As expected, your skills are good. I used all my connections to find out the location, but you found it right away.";
|
||||
next;
|
||||
cutin "ep18_maram_02.png",2;
|
||||
mes "[Maram]";
|
||||
mes "Let's do something about it, right, adventurer?";
|
||||
mes "Anyway, what information did you get?";
|
||||
next;
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "As expected, you are talented, adventurer. I used all sorts of connections to find the position.";
|
||||
mes "It seems that Adventurer and Maram found it at once.";
|
||||
mes "Look at this document here.";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[Mini Elly]";
|
||||
mes "This document is a weapon sales record. Please show it to me.";
|
||||
mes "All of the weapons and firearms that these people disposed of have less than a year left before their expiration date.";
|
||||
next;
|
||||
cutin "ep18_miriam_03.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "You sell weapons like this so recklessly.";
|
||||
mes "If a weapon is not properly maintained, it may not function properly.";
|
||||
next;
|
||||
cutin "ep18_maram_03.png",2;
|
||||
mes "[Maram]";
|
||||
mes "The quality of all weapons coming out of the back hole is the same.";
|
||||
mes "...But I guess it's at this point in time.";
|
||||
next;
|
||||
mes "[Maram]";
|
||||
mes "One year is not a long expiration date, but it is not too tight.";
|
||||
mes "Why did it pour out at this moment when we were preparing for the protest?";
|
||||
next;
|
||||
mes "[Maram]";
|
||||
mes "There wouldn't have been a need to dispose of it right away.";
|
||||
next;
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "This is one of the military bases managed by my adoptive father.";
|
||||
mes "I was wondering if it would really pop out at a time like this.";
|
||||
next;
|
||||
cutin "",255;
|
||||
select( "If it's your adoptive father, is it Priest Amal?", "That adoptive father who is a hardliner and pro-war?" );
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "That's right, adventurer. When I looked at the ledger, it doesn't seem like my adoptive father was involved.";
|
||||
mes "I think it's an isolated corruption at the lowest level, the weapons leak incident.";
|
||||
next;
|
||||
mes "[Miriam]";
|
||||
mes "Read some of the documents here. We have what we were looking for.";
|
||||
mes "I think it would be better to come and see it firsthand than to explain everything.";
|
||||
close3;
|
||||
mes "I'll have to dig a little deeper, but that's my guess for now.";
|
||||
mes "Oh, please give me the documents. I'll take them as evidence.";
|
||||
delitem 1000409,5; // Ep18_Docu_File
|
||||
if ('step == 1)
|
||||
'step = 2;
|
||||
if (isbegin_quest(16578) == 1) {
|
||||
erasequest 16578;
|
||||
setquest 16579;
|
||||
}
|
||||
close2;
|
||||
cutin "",255;
|
||||
npctalk "Maram: Ha, this is really fun.", instance_npcname("Maram#Base5");
|
||||
end;
|
||||
}
|
||||
if (getequipid(EQI_HEAD_TOP) != 400127) { // Ep18_Mini_Elly
|
||||
mes "[Mini Elly]";
|
||||
mes "Get it out of the bag. Put it on your head.";
|
||||
if ('step == 2) {
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "...Just a moment, I'm reading the document.";
|
||||
close;
|
||||
}
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes ".";
|
||||
next;
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "No, Miriam! How are you here?";
|
||||
mes "They said they would investigate separately!";
|
||||
next;
|
||||
cutin "ep18_miriam_01.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "How did you and the adventurer dig this far?";
|
||||
mes "You have good skills, too. It was a location that I found using all kinds of connections, but you found it at once.";
|
||||
next;
|
||||
cutin "ep18_maram_02.png",2;
|
||||
mes "[Maram]";
|
||||
mes "Let's do some, right, adventurer?";
|
||||
mes "Anyway, what information did you get?";
|
||||
next;
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "Look at this document here.";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "[Mini Elly]";
|
||||
mes "This is a sales statement for arms. Show it to me as well.";
|
||||
mes "The weapons and firearms these men have disposed of are all less than a year old.";
|
||||
next;
|
||||
cutin "ep18_miriam_03.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "How dare you sell such weapons.";
|
||||
mes "A weapon that is not properly maintained may not function properly.";
|
||||
next;
|
||||
cutin "ep18_maram_03.png",2;
|
||||
mes "[Maram]";
|
||||
mes "The weapons that come out of the back hole are all the same.";
|
||||
mes "but, at least it's at this point.";
|
||||
next;
|
||||
mes "[Maram]";
|
||||
mes "A year is not a long term, but it is not tight.";
|
||||
mes "Why did we pour out at this moment in preparation for the protest?";
|
||||
next;
|
||||
mes "[Maram]";
|
||||
mes "You wouldn't have to dispose of it right away.";
|
||||
next;
|
||||
npctalk "Maram: haha, this is so funny", instance_npcname("Maram#base5");
|
||||
sleep2 300;
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "This is one of the military bases managed by my stepfather.";
|
||||
mes "Just by chance, it really came out at a time like this.";
|
||||
next;
|
||||
cutin "",255;
|
||||
select( "If your stepfather is a priest, Youth Amal?", "The hard-line and pro-war stepfather?" );
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "That's right, adventurer. Looking at the ledger, it doesn't seem like the stepfather was involved.";
|
||||
mes "I think it was a single corruption at the end, the weapon leak case.";
|
||||
next;
|
||||
mes "[Miriam]";
|
||||
mes "I'll have to dig a little deeper, but that's my guess for now.";
|
||||
mes "Oh, give me the documents. I'll take it as evidence.";
|
||||
delitem 1000409,5; // Ep18_Docu_File
|
||||
if (isbegin_quest(16578) == 1) {
|
||||
erasequest 16578;
|
||||
setquest 16579;
|
||||
}
|
||||
close2;
|
||||
cutin "",255;
|
||||
npctalk "Maram: haha, this is so funny", instance_npcname("Maram#base5");
|
||||
end;
|
||||
|
||||
OnTouch:
|
||||
npctalk "Miriam: Oh, adventurer? Maram you too!?";
|
||||
if (countitem(1000409) < 5)
|
||||
npctalk "Miriam: Oh, adventurer? Maram, you too!?";
|
||||
end;
|
||||
|
||||
OnInstanceInit:
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(16578) == 1 && countitem(1000409) > 4" ); // Ep18_Docu_File
|
||||
disablenpc instance_npcname("Miriam#base1");
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(16578) == 1 && countitem(1000409) > 4" ); // Ep18_Docu_File
|
||||
end;
|
||||
}
|
||||
|
||||
1@tcamp,32,102,3 script Maram#base5 4_EP18_MARAM,{
|
||||
if (isbegin_quest(16579) == 0) {
|
||||
1@tcamp,32,102,3 script(DISABLED) Maram#Base5 4_EP18_MARAM,{
|
||||
if ('step == 1) {
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "I didn't know Miriam was here, right, adventurer?";
|
||||
mes "I didn't know Miriam would be here. Right, adventurer?";
|
||||
close3;
|
||||
}
|
||||
cutin "ep18_maram_02.png",2;
|
||||
mes "[Maram]";
|
||||
mes "We moved separately, but in the end we are in the same position.";
|
||||
mes "Still, what I got in the process was different, so I guess it has its own meaning.";
|
||||
next;
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "Then I must be away for a while.";
|
||||
mes "I'm going to pass on my findings to my stepfather.";
|
||||
next;
|
||||
mes "[Miriam]";
|
||||
mes "Because there is a possibility that the adoptive father may not know yet if it is a single corruption.";
|
||||
next;
|
||||
cutin "ep18_maram_03.png",2;
|
||||
mes "[Maram]";
|
||||
mes "Is it really an independent corruption? That's probably what bothers me.";
|
||||
mes "I have something to give to Rachel, Miriam, let's go together.";
|
||||
next;
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "I'll give you a shortcut, so can you please tell Suad what you found out here?";
|
||||
mes "We will follow soon, so please go ahead and tell me.";
|
||||
if (ep18_1_main == 46) {
|
||||
ep18_1_main = 47;
|
||||
erasequest 16579;
|
||||
setquest 16580;
|
||||
getitem "Ep18_Amethyst_Fragment",50;
|
||||
if ('step == 2) {
|
||||
mes "[Maram]";
|
||||
mes "They moved separately, but ended up in the same place.";
|
||||
mes "Still, what I gained from the process was different, so I guess it has some meaning.";
|
||||
next;
|
||||
cutin "ep18_miriam_02.png",2;
|
||||
mes "[Miriam]";
|
||||
mes "Then I guess I'll have to leave for a while.";
|
||||
mes "I'll have to relay what I found out to my adoptive father.";
|
||||
next;
|
||||
mes "[Miriam]";
|
||||
mes "If it's an isolated corruption, there's a chance that even my adoptive father doesn't know about it yet.";
|
||||
next;
|
||||
cutin "ep18_maram_03.png",2;
|
||||
mes "[Maram]";
|
||||
mes "Is this really an isolated case of corruption? That is something that bothers me.";
|
||||
mes "I also have something to deliver to Rachel, so Miriam, let's go together.";
|
||||
next;
|
||||
cutin "ep18_maram_01.png",2;
|
||||
mes "[Maram]";
|
||||
mes "I will tell you a shortcut to get out, so would you, adventurer, tell Suad what you found out here?";
|
||||
mes "We will follow shortly, so please go and tell us first.";
|
||||
if (ep18_main == 46) {
|
||||
ep18_main = 47;
|
||||
erasequest 16579;
|
||||
setquest 16580;
|
||||
getitem 1000405,50; // Ep18_Amethyst_Fragment
|
||||
}
|
||||
close2;
|
||||
warp "wolfvill",162,154;
|
||||
end;
|
||||
}
|
||||
close2;
|
||||
// debug
|
||||
warp "wolfvill",162,154;
|
||||
end;
|
||||
|
||||
OnInstanceInit:
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(16579) == 1" );
|
||||
disablenpc instance_npcname("Maram#base5");
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(16579) == 1" );
|
||||
end;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
//= Instance Villa of Deception.
|
||||
//===== Description: =========================================
|
||||
//- [Walkthrough conversion]
|
||||
//- Require to complete the episode 18.1 main quest.
|
||||
//- Require to complete the Episode 18 main quest.
|
||||
//- The function to drop an item with random option is defined in re/other/glocal_npc2.txt
|
||||
// Notes:
|
||||
// Some of the setting can be modified in 'Optional settings'.
|
||||
@@ -16,14 +16,14 @@
|
||||
wolfvill,79,260,0 script #con_wp11 HIDDEN_WARP_NPC,4,4,{
|
||||
end;
|
||||
OnTouch:
|
||||
if (ep18_1_main < 57)
|
||||
if (ep18_main < 57)
|
||||
end;
|
||||
cloakoffnpcself( "Aira#con" );
|
||||
end;
|
||||
}
|
||||
|
||||
wolfvill,79,260,4 script(CLOAKED) Aira#con 4_M_BRZ_JACI,{
|
||||
if (ep18_1_main < 57)
|
||||
if (ep18_main < 57)
|
||||
end;
|
||||
switch( checkquest(12522,PLAYTIME) ) {
|
||||
case -1:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
50
npc/re/mapflag/specialpopup.txt
Normal file
50
npc/re/mapflag/specialpopup.txt
Normal file
@@ -0,0 +1,50 @@
|
||||
//===== rAthena Script =======================================
|
||||
//= Mapflag: special popup map setting.
|
||||
//===== Description: =========================================
|
||||
//= Displays a special popup when a player enters the map.
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 Initial script. [eppc0330]
|
||||
//============================================================
|
||||
|
||||
herosria mapflag specialpopup 1
|
||||
hero_in1 mapflag specialpopup 1
|
||||
hero_in2 mapflag specialpopup 1
|
||||
hero_in3 mapflag specialpopup 1
|
||||
hero_in4 mapflag specialpopup 1
|
||||
hero_out1 mapflag specialpopup 1
|
||||
hero_out2 mapflag specialpopup 1
|
||||
hero_out3 mapflag specialpopup 1
|
||||
hero_out4 mapflag specialpopup 1
|
||||
hero_ent1 mapflag specialpopup 1
|
||||
hero_ent2 mapflag specialpopup 1
|
||||
hero_ent3 mapflag specialpopup 1
|
||||
|
||||
hero_tra mapflag specialpopup 2
|
||||
hero_dun1 mapflag specialpopup 2
|
||||
|
||||
bl_ice mapflag specialpopup 3
|
||||
bl_lava mapflag specialpopup 3
|
||||
bl_grass mapflag specialpopup 3
|
||||
bl_death mapflag specialpopup 3
|
||||
bl_soul mapflag specialpopup 3
|
||||
bl_venom mapflag specialpopup 3
|
||||
bl_temple mapflag specialpopup 3
|
||||
|
||||
thana_step mapflag specialpopup 4
|
||||
tha_t07 mapflag specialpopup 4
|
||||
tha_t08 mapflag specialpopup 4
|
||||
tha_t09 mapflag specialpopup 4
|
||||
tha_t10 mapflag specialpopup 4
|
||||
tha_t11 mapflag specialpopup 4
|
||||
tha_t12 mapflag specialpopup 4
|
||||
|
||||
ama_dun01 mapflag specialpopup 5
|
||||
|
||||
lhz_dun_n mapflag specialpopup 6
|
||||
|
||||
bl_depth1 mapflag specialpopup 7
|
||||
|
||||
for_dun01 mapflag specialpopup 8
|
||||
for_dun02 mapflag specialpopup 8
|
||||
|
||||
bl_depth2 mapflag specialpopup 9
|
||||
@@ -60,4 +60,5 @@ Footer:
|
||||
- Path: npc/re/merchants/barters/enchan_illusion_dungeons.yml
|
||||
- Path: npc/re/merchants/barters/quests_exp_175.yml
|
||||
- Path: npc/re/merchants/barters/mysterious_cookie_shop.yml
|
||||
- Path: npc/re/merchants/barters/quests_18_1.yml
|
||||
- Path: npc/re/merchants/barters/quests_18.yml
|
||||
- Path: npc/re/merchants/barters/quests_19.yml
|
||||
|
||||
289
npc/re/merchants/barters/quests_19.yml
Normal file
289
npc/re/merchants/barters/quests_19.yml
Normal file
@@ -0,0 +1,289 @@
|
||||
# This file is a part of rAthena.
|
||||
# Copyright(C) 2022 rAthena Development Team
|
||||
# https://rathena.org - https://github.com/rathena
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###########################################################################
|
||||
# Barter Database
|
||||
###########################################################################
|
||||
#
|
||||
# Barter Settings
|
||||
#
|
||||
###########################################################################
|
||||
# - Name NPC name.
|
||||
# Map Map name. (Default: not on a map)
|
||||
# X Map x coordinate. (Default: 0)
|
||||
# Y Map y coordinate. (Default: 0)
|
||||
# Direction Direction the NPC is looking. (Default: North)
|
||||
# Sprite Sprite name of the NPC. (Default: FakeNpc)
|
||||
# Items: List of sold items.
|
||||
# - Index Index of the item inside the shop. (0-...)
|
||||
# Maximum index depends on client.
|
||||
# Item Aegis name of the item.
|
||||
# Stock Amount of item in stock. 0 means unlimited. (Default: 0)
|
||||
# Zeny Cost of them item in Zeny. (Default: 0)
|
||||
# RequiredItems: List of required items (Optional)
|
||||
# - Index Index of the required item. (0-4)
|
||||
# Item Aegis name of required item.
|
||||
# Amount Amount of required item. (Default: 1)
|
||||
# Refine Refine level of required item. (Default: 0)
|
||||
###########################################################################
|
||||
|
||||
Header:
|
||||
Type: BARTER_DB
|
||||
Version: 1
|
||||
|
||||
Body:
|
||||
- Name: barter_Ep19_Rgan_Scroll
|
||||
Items:
|
||||
- Index: 0
|
||||
Item: Ep19_Rgan_Scroll
|
||||
Zeny: 2000
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Rgan_Core_F
|
||||
Amount: 2
|
||||
- Name: barter_ep19_snow_stone
|
||||
Items:
|
||||
- Index: 0
|
||||
Item: Snow_F_Stone1
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Snow_F_Ore
|
||||
Amount: 5
|
||||
- Index: 1
|
||||
Item: Snow_F_Stone2
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Snow_F_Stone1
|
||||
Amount: 5
|
||||
- Index: 2
|
||||
Item: Snow_F_Stone3
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Snow_F_Stone2
|
||||
Amount: 5
|
||||
- Name: barter_ep19_repu_1
|
||||
Items:
|
||||
- Index: 0
|
||||
Item: Snow_F_Refine
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 200
|
||||
- Index: 1
|
||||
Item: Glacier_W_Refine
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 500
|
||||
- Index: 2
|
||||
Item: Teleport_Ep19_01
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
- Name: barter_ep19_repu_2
|
||||
Items:
|
||||
- Index: 0
|
||||
Item: Snow_F_Refine
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 200
|
||||
- Index: 1
|
||||
Item: Glacier_W_Refine
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 500
|
||||
- Index: 2
|
||||
Item: Teleport_Ep19_01
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
- Index: 3
|
||||
Item: Ep19_Dry_Icegangu
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
- Index: 4
|
||||
Item: C_Ep19_Rgan
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 1000
|
||||
- Index: 5
|
||||
Item: C_Ep19_Iwin
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 1000
|
||||
- Name: barter_ep19_snow_armor
|
||||
Items:
|
||||
- Index: 0
|
||||
Item: Snowflower_Armor
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 1
|
||||
Item: Snowflower_Robe
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 2
|
||||
Item: Snowflower_Manteau
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 3
|
||||
Item: Snowflower_Muffler
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 4
|
||||
Item: Snowflower_Boots
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 5
|
||||
Item: Snowflower_Shoes
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 6
|
||||
Item: Snowflower_Pendant
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 7
|
||||
Item: Snowflower_Ring
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 8
|
||||
Item: Snowflower_Necklace
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Index: 9
|
||||
Item: Snowflower_Earring
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 100
|
||||
- Name: barter_ep19_new_content
|
||||
Items:
|
||||
- Index: 0
|
||||
Item: EP19_N_P_Ore
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: EP19_D_P_Ore
|
||||
Amount: 3
|
||||
- Index: 1
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 5
|
||||
- Index: 2
|
||||
Item: Ep18_Amethyst_Fragment
|
||||
Amount: 25
|
||||
- Index: 1
|
||||
Item: EP19_D_P_Crystal
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: EP19_D_P_Ore
|
||||
Amount: 15
|
||||
- Index: 1
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 30
|
||||
- Index: 2
|
||||
Item: Ep18_Amethyst_Fragment
|
||||
Amount: 150
|
||||
- Index: 2
|
||||
Item: EP19_N_P_Crystal
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: EP19_N_P_Ore
|
||||
Amount: 5
|
||||
- Index: 1
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 5
|
||||
- Index: 2
|
||||
Item: Ep18_Amethyst_Fragment
|
||||
Amount: 25
|
||||
- Index: 3
|
||||
Item: EP19_S_F_1_Extract
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Snow_F_Stone1
|
||||
Amount: 20
|
||||
- Index: 1
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 5
|
||||
- Index: 2
|
||||
Item: Ep18_Amethyst_Fragment
|
||||
Amount: 25
|
||||
- Index: 4
|
||||
Item: EP19_S_F_2_Extract
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Snow_F_Stone2
|
||||
Amount: 15
|
||||
- Index: 1
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 10
|
||||
- Index: 2
|
||||
Item: Ep18_Amethyst_Fragment
|
||||
Amount: 50
|
||||
- Index: 5
|
||||
Item: EP19_S_F_3_Extract
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Snow_F_Stone3
|
||||
Amount: 10
|
||||
- Index: 1
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 15
|
||||
- Index: 2
|
||||
Item: Ep18_Amethyst_Fragment
|
||||
Amount: 75
|
||||
- Index: 6
|
||||
Item: EP19_Gla_Extract
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: Ep19_Snow_Flower
|
||||
Amount: 40
|
||||
- Index: 1
|
||||
Item: Ep18_Amethyst_Fragment
|
||||
Amount: 200
|
||||
- Index: 7
|
||||
Item: EP19_DGW_Refine
|
||||
RequiredItems:
|
||||
- Index: 0
|
||||
Item: EP19_D_P_Stone
|
||||
Amount: 1
|
||||
- Index: 1
|
||||
Item: EP19_D_P_Crystal
|
||||
Amount: 10
|
||||
- Index: 2
|
||||
Item: EP19_N_P_Crystal
|
||||
Amount: 10
|
||||
97
npc/re/merchants/episode_19.txt
Normal file
97
npc/re/merchants/episode_19.txt
Normal file
@@ -0,0 +1,97 @@
|
||||
//===== rAthena Script =======================================
|
||||
//= Episode 19 NPCs.
|
||||
//===== Description: =========================================
|
||||
//- [Walkthrough conversion]
|
||||
//- Related to new content.
|
||||
//===== Changelogs: ==========================================
|
||||
//= 1.0 First version. [Capuche]
|
||||
//============================================================
|
||||
|
||||
icas_in,192,57,3 script Incineration Furnace#ep19 4_POINT_RED,{
|
||||
mes "There is a brazier where you can feel the heat.";
|
||||
mes "If you have useless Dim Glacier weapons, put them in and melt them.";
|
||||
close2;
|
||||
laphine_synthesis("Dim Glacier Extractor");
|
||||
end;
|
||||
}
|
||||
|
||||
icas_in,188,60,3 script Forr#ep19 4_EP19_IWIN,{
|
||||
cutin "ep19_iwin11.png",2;
|
||||
mes "[Forr]";
|
||||
mes "Did you know that weapons are being found in recently abandoned pits and the like?";
|
||||
mes "It is called Dim Glacier because it is an object imbued with unusual magical powers.";
|
||||
next;
|
||||
mes "[Forr]";
|
||||
mes "I've done some research with Vellgunde, and I've found that it has the magical powers of mutated Jormungand.";
|
||||
mes "If you have Dim Glacier, try adjusting your magic to increase the weapon's performance.";
|
||||
next;
|
||||
mes "[Forr]";
|
||||
mes "I need some tricky refining materials, but how about exchanging them appropriately for what I'm lacking?";
|
||||
next;
|
||||
switch( select( "Exchange materials.", "Awaken Dim Glacier's potential.", "What do you do with unnecessary weapons?", "Okay." ) ) {
|
||||
case 1:
|
||||
mes "[Forr]";
|
||||
mes "The amethyst shards brought by Maram helped make various containers.";
|
||||
mes "It's something you can't get here, so you might ask for it often.";
|
||||
close2;
|
||||
cutin "",255;
|
||||
callshop "barter_ep19_new_content";
|
||||
end;
|
||||
case 2:
|
||||
mes "[Forr]";
|
||||
mes "I wish you good luck";
|
||||
close2;
|
||||
cutin "",255;
|
||||
item_enchant(47);
|
||||
end;
|
||||
case 3:
|
||||
mes "[Forr]";
|
||||
mes "Can you see the brazier down there?";
|
||||
mes "I made it for the incineration of useless things that have been researched.";
|
||||
next;
|
||||
mes "[Forr]";
|
||||
mes "If you're going to throw it away, use that incinerator.";
|
||||
mes "Dim Glacier has magical powers, so if you melt it, whatever comes out will come out.";
|
||||
close3;
|
||||
case 4:
|
||||
mes "[Forr]";
|
||||
mes "I will stay for a while to help Vellgunde-sama.";
|
||||
mes "Come to me anytime.";
|
||||
close3;
|
||||
}
|
||||
}
|
||||
|
||||
// Storage
|
||||
icas_in,169,70,3 script Card#ep19 4_POINT_BLUE,{
|
||||
.@total_storage = 1; // by default rAthena just open the basic storage (but 3 on kRO)
|
||||
|
||||
cutin "ep19_iwin02.png",2;
|
||||
mes "[Hoyoyo]";
|
||||
mes "Are you going to use the closet?";
|
||||
mes "Hyo, hy, hyo, put in a coin from the continent.";
|
||||
mes "Hey... Would you like to put 500zeny in it?";
|
||||
next;
|
||||
cutin "",255;
|
||||
for ( .@i = 0; .@i < .@total_storage; .@i++ )
|
||||
.@menu$ += "Storage " + (.@i+1) + ":";
|
||||
.@menu$ += "Stop.";
|
||||
.@s = select( .@menu$ ) - 2;
|
||||
|
||||
if (.@s == (.@total_storage - 1)) {
|
||||
mes "I decided to use it next time.";
|
||||
close;
|
||||
}
|
||||
|
||||
if (Zeny < 500) {
|
||||
mes "Looks like you have to put 500 zeny to use the closet.";
|
||||
close3;
|
||||
}
|
||||
mes "When a coin was inserted, the cabinet opened with a rattling sound.";
|
||||
close2;
|
||||
Zeny -= 500;
|
||||
if (.@s == -1) // basic storage
|
||||
openstorage;
|
||||
else // "premium" storage starting from index 0
|
||||
openstorage2 .@s, STOR_MODE_GET|STOR_MODE_PUT; // note: opened before close button
|
||||
end;
|
||||
}
|
||||
19
npc/re/mobs/dungeons/jor_ab.txt
Normal file
19
npc/re/mobs/dungeons/jor_ab.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
//===== rAthena Script =======================================
|
||||
//= jor_ab Monsters Spawn Script
|
||||
//===== Current Version: =====================================
|
||||
//= 1.0
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First version. [Atemo]
|
||||
//============================================================
|
||||
|
||||
jor_ab01 monster --ja-- 21538,65
|
||||
jor_ab01 monster --ja-- 21540,65
|
||||
jor_ab01 monster --ja-- 21541,35
|
||||
jor_ab01 monster --ja-- 21543,35
|
||||
jor_ab01 monster --ja-- 21600,10
|
||||
|
||||
jor_ab02 monster --ja-- 21539,55
|
||||
jor_ab02 monster --ja-- 21542,55
|
||||
jor_ab02 monster --ja-- 21544,40
|
||||
jor_ab02 monster --ja-- 21545,40
|
||||
jor_ab02 monster --ja-- 21601,10
|
||||
20
npc/re/mobs/dungeons/jor_dun.txt
Normal file
20
npc/re/mobs/dungeons/jor_dun.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
//===== rAthena Script =======================================
|
||||
//= jor_dun Monsters Spawn Script
|
||||
//===== Current Version: =====================================
|
||||
//= 1.0
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First version. [Atemo]
|
||||
//============================================================
|
||||
|
||||
jor_dun01 monster --ja-- 21526,80
|
||||
jor_dun01 monster --ja-- 21527,50
|
||||
jor_dun01 monster --ja-- 21528,20
|
||||
jor_dun01 monster --ja-- 21599,10
|
||||
|
||||
jor_dun02 monster --ja-- 21527,60
|
||||
jor_dun02 monster --ja-- 21528,50
|
||||
jor_dun02 monster --ja-- 21529,15
|
||||
jor_dun02 monster --ja-- 21599,10
|
||||
|
||||
jor_que monster --ja-- 21534,3
|
||||
jor_que monster --ja-- 21535,5
|
||||
24
npc/re/mobs/fields/jor_back.txt
Normal file
24
npc/re/mobs/fields/jor_back.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
//===== rAthena Script =======================================
|
||||
//= jor_back Monsters Spawn Script
|
||||
//===== Current Version: =====================================
|
||||
//= 1.0
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First version. [Atemo]
|
||||
//============================================================
|
||||
|
||||
jor_back1 monster --ja-- 21524,60
|
||||
jor_back1 monster --ja-- 21525,60
|
||||
jor_back1 monster --ja-- 21523,80
|
||||
|
||||
jor_back2 monster --ja-- 21521,70
|
||||
jor_back2 monster --ja-- 21525,25
|
||||
jor_back2 monster --ja-- 21523,35
|
||||
jor_back2 monster --ja-- 21520,70
|
||||
|
||||
jor_back3 monster --ja-- 21526,30
|
||||
jor_back3 monster --ja-- 21527,15
|
||||
jor_back3 monster --ja-- 21525,20
|
||||
jor_back3 monster --ja-- 21522,70
|
||||
jor_back3 monster --ja-- 21520,70
|
||||
// unknown delay
|
||||
jor_back3 boss_monster --ja-- 21537,1,7200000,600000,1
|
||||
@@ -65,4 +65,23 @@ function script F_queststatus {
|
||||
return 2;
|
||||
}
|
||||
end;
|
||||
}
|
||||
}
|
||||
|
||||
// Return a value referring to the state of the quests in range.
|
||||
// -1 : at least on of the quest doesn't have the same state
|
||||
// 0 : all the quests are in the state 0 (not in quest log)
|
||||
// 1 : all the quests are in the state 1 (given)
|
||||
// 2 : all the quests are in the state 2 (completed)
|
||||
function script F_queststatus_between {
|
||||
.@start = getarg(0);
|
||||
.@end = getarg(1);
|
||||
.@state = isbegin_quest(.@start);
|
||||
|
||||
for ( .@i = .@start+1; .@i <= .@end; ++.@i ) {
|
||||
if (isbegin_quest(.@i) != .@state) {
|
||||
.@state = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return .@state;
|
||||
}
|
||||
|
||||
@@ -4007,8 +4007,8 @@ OnInit:
|
||||
}
|
||||
|
||||
|
||||
// ba_in01,26,266,3 script Smart Ellie#ep18ely01 4_EP17_TABLET,{
|
||||
ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
|
||||
// ba_in01,26,266,3 script Smart Elly#ep18ely01 4_EP17_TABLET,{
|
||||
ba_in01,26,266,3 script Smart Elly#ep172_ely01 4_EP17_TABLET,{
|
||||
if (checkweight(1000103,15) == 0) {
|
||||
mes "You cannot proceed with the quest because you have too many items in your possession.";
|
||||
mes "Please clean up your inventory and try again.";
|
||||
@@ -4016,39 +4016,39 @@ ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
|
||||
}
|
||||
if (ep17_2_main < 32) {
|
||||
cutin "ep172_beta.bmp", 2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Hello, guest.";
|
||||
mes "I'm responsible for the airship hangar's information.";
|
||||
mes "Please call me Ellie.";
|
||||
mes "Please call me Elly.";
|
||||
close3;
|
||||
}
|
||||
if (ep17_2_main == 32) {
|
||||
cutin "ep172_beta",2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Hello, guest.";
|
||||
mes "I'm responsible for the airship hangar's information.";
|
||||
mes "Please call me Ellie.";
|
||||
mes "Please call me Elly.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "After the master had destroyed this place, I have been doing something else for a while, but...";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Now I'm back at Alpha's request.";
|
||||
mes "Please leave the hangar's matters to me, Ellie.";
|
||||
mes "Please leave the hangar's matters to me, Elly.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "The leader of the 'intruders' had freely access the area for the master's collection 3...";
|
||||
mes "I returned here to manage it.";
|
||||
npctalk "Sounds troublesome.", "", bc_self;
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "We are currently tracking the expected path after receiving the incident report.";
|
||||
mes "However, tracking it is not easy because the main system of No. 3 is completely disconnected.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "The 'invaders' which the 'guests' calls the 'Illusions' has a 99.9% chance that they made modifications on the system.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Dear 'guests', are you here?";
|
||||
cloakoffnpcself( "Est#ep172_est02" );
|
||||
cloakoffnpcself( "Rookie#ep172_rk03" );
|
||||
@@ -4063,15 +4063,15 @@ ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
|
||||
mes "I told Alpha that the analysisable data in the current state is over.";
|
||||
next;
|
||||
cutin "ep172_beta",2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Yes. I have sent the data.";
|
||||
mes "Currently, there is no reception from the master's collection 3, but we have caught some unusual signals.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "This facility has not been used for a long time, but it has been secretly used by the 'intruders' and...";
|
||||
npctalk "Unusual signal?", "Rookie#ep172_rk03", bc_self;
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "There are traces of magical communication with certain places outside the mansion.";
|
||||
mes "It's an intermittent signal.";
|
||||
next;
|
||||
@@ -4081,16 +4081,16 @@ ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
|
||||
mes "Where? the enterprise?";
|
||||
next;
|
||||
cutin "ep172_beta",2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "According to the analysis, it's a one-way reception.";
|
||||
mes "It appears to be collecting reports from the outside...";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "It will take some time to completely analyze the code because it was used by the 'intruders' for one-way reception.";
|
||||
next;
|
||||
cutin "16loo_01",0;
|
||||
mes "[Rookie]";
|
||||
mes "Then, Ellie, I'll ask for one thing.";
|
||||
mes "Then, Elly, I'll ask for one thing.";
|
||||
mes "Continue receiving the signals as if the 'intruders' leader is still here.";
|
||||
next;
|
||||
cutin "ep162_est01",1;
|
||||
@@ -4099,7 +4099,7 @@ ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
|
||||
mes "With that, we'll be able to trace back the other collaborators out there.";
|
||||
next;
|
||||
cutin "ep172_beta",2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "I will do as you say.";
|
||||
mes "We will maintain information patters of the 'intruders' and collect information received from their accomplices from outside the mansion.";
|
||||
next;
|
||||
@@ -4135,10 +4135,10 @@ ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
|
||||
cutin "16loo_03",0;
|
||||
mes "[Rookie]";
|
||||
mes "Then I'll let everyone and help Alpha.";
|
||||
mes "Take good care of Ellie!";
|
||||
mes "Take good care of Elly!";
|
||||
next;
|
||||
cutin "ep172_beta",2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Do not worry about this place.";
|
||||
mes "Me and Almond will take care of it.";
|
||||
mes "You can be rest assured.";
|
||||
@@ -4148,189 +4148,190 @@ ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
|
||||
cloakonnpcself( "Rookie#ep172_rk03" );
|
||||
end;
|
||||
}
|
||||
if (ep18_1_main == 0 && BaseLevel >= 170) {
|
||||
if (ep18_main == 0 && BaseLevel >= 170) {
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "The periodic signal has not yet been received.";
|
||||
mes "The whereabouts of your master's collection#3 are also being tracked.";
|
||||
mes "[Elly]";
|
||||
mes "No regular signals have been received yet.";
|
||||
mes "We're also tracking the whereabouts of your collection #3.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "Don't worry.";
|
||||
mes "Time is on our side";
|
||||
mes "[Elly]";
|
||||
mes "No worries.";
|
||||
mes "Time is on our side.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "I and Alpha will analyze the information properly, so if you clean up the abandoned remnants... Ah!";
|
||||
mes "[Elly]";
|
||||
mes "We'll properly analyze the information, so it would be great if the guest could clean up the remnants left behind... Oh!";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "Please don't go anywhere for a moment.";
|
||||
mes "It will be over soon";
|
||||
mes "Time was on our side, wasn't it?";
|
||||
mes "[Elly]";
|
||||
mes "Just a moment, please stay here.";
|
||||
mes "It'll be over soon.";
|
||||
mes "Time is on our side, right?";
|
||||
next;
|
||||
// note: progressbar_npc must be after "next" otherwise the client may crash
|
||||
progressbar_npc "FFFF00",4;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Wait a minute...";
|
||||
mes "...";
|
||||
mes "...";
|
||||
// note: progressbar_npc must be after "next" otherwise the client may crash
|
||||
// progressbar_npc "FFFF00",4;
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "As soon as the password is decrypted, it will be fast.";
|
||||
mes "The thing that took the longest is an instant.";
|
||||
progressbar_npc "FFFF00",4;
|
||||
mes "[Elly]";
|
||||
mes "Once we decrypt the code, it'll be quick.";
|
||||
mes "The longest part is over, so it feels like it went by in a flash.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "There is something in ^0000FFRachel^000000";
|
||||
mes "Of course I've only heard of Rachel, but I've never been there.";
|
||||
mes "The 'collaborators' there don't seem to know that their heads have moved yet.";
|
||||
mes "[Elly]";
|
||||
mes "There is something in ^0000FFRachel^000000.";
|
||||
mes "Of course, I've only heard of Rachel, and I've never been there.";
|
||||
mes "The 'collaborators' at that location seem unaware of their leaders' movements as of yet.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "Although we don't know where your master's Collection#3 is yet, we'll have to keep an eye out for information coming in here...";
|
||||
mes "what if?";
|
||||
mes "[Elly]";
|
||||
mes "Although we still don't know the whereabouts of Master's Collection No. 3, we need to continue to gather information coming in from here...";
|
||||
mes "What should we do?";
|
||||
next;
|
||||
select( "What?" );
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "What are you doing?";
|
||||
mes "What should I do?";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "The collaborator's position has been roughly secured. Reportedly 'waiting for your next instruction',";
|
||||
mes "Then, before the next instruction is issued, we should catch up on that side as soon as possible...";
|
||||
mes "[Elly]";
|
||||
mes "The location of the collaborator has been roughly secured. According to the report, they are awaiting further instructions, so...";
|
||||
mes "In that case, we should thoroughly investigate that area before the next instructions are given...";
|
||||
cloakoffnpcself( "Rookie#ep181_rk01" );
|
||||
cloakoffnpcself( "EST#ep181_est01" );
|
||||
npctalk "Rookie: Did you call?", "Rookie#ep181_rk01", bc_self;
|
||||
npctalk "EST: It ended sooner than I thought.", "EST#ep181_est01", bc_self;
|
||||
cloakoffnpcself( "Est#ep181_est01" );
|
||||
npctalk "Rookie: Did you call me?", "Rookie#ep181_rk01", bc_self;
|
||||
npctalk "Est: That was quicker than I thought.", "Est#ep181_est01", bc_self;
|
||||
next;
|
||||
cutin "ep162_est01.bmp",1;
|
||||
mes "[EST]";
|
||||
mes "Okay then Rachel...";
|
||||
mes "[Est]";
|
||||
mes "Okay, so Rachel...";
|
||||
next;
|
||||
cutin "16loo_01.bmp",0;
|
||||
mes "[Rookie]";
|
||||
mes "Rachel... who's going?";
|
||||
mes "Rachel... Who's going?";
|
||||
next;
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "Is this a conflict of opinion?";
|
||||
mes "[Elly]";
|
||||
mes "Are we having a difference of opinion?";
|
||||
next;
|
||||
cutin "16loo_03.bmp",0;
|
||||
mes "[Rookie]";
|
||||
mes "It's not like that...";
|
||||
mes "I think it will be a bit difficult if we all go.";
|
||||
mes "Not really...";
|
||||
mes "I think it would be a little awkward if we all went.";
|
||||
next;
|
||||
cutin "ep162_est01.bmp",1;
|
||||
mes "[EST]";
|
||||
mes "Ah... I see.";
|
||||
mes "Yes. If 'Rebellion' moves, it could become a diplomatic matter.";
|
||||
mes "[Est]";
|
||||
mes "Ah, I see.";
|
||||
mes "Yes. If the Rebellion moves, it could become a diplomatic issue.";
|
||||
next;
|
||||
cutin "16loo_03.bmp",0;
|
||||
mes "[Rookie]";
|
||||
mes "Yes. Especially if it's Rachel.";
|
||||
mes "The problem between the mansion and the business has not yet been fully resolved...";
|
||||
mes "Yes, even more so if it's Rachel.";
|
||||
mes "...and the problems between the mansion and the company haven't all been solved yet.";
|
||||
next;
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "Okay.";
|
||||
mes "[Elly]";
|
||||
mes "I see.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "Then...";
|
||||
mes "[Elly]";
|
||||
mes "If so, then...";
|
||||
next;
|
||||
select( "Why are you looking at me?" );
|
||||
select( "Why are they looking at me?" );
|
||||
cutin "",255;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "what are you doing?";
|
||||
mes "What do I do?";
|
||||
next;
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Let's go, Rachel.";
|
||||
npctalk "Rookie: name.", "Rookie#ep181_rk01", bc_self;
|
||||
npctalk "Est: Name.", "EST#ep181_est01", bc_self;
|
||||
npctalk "Rookie: So it's a place name, huh?", "Rookie#ep181_rk01", bc_self;
|
||||
npctalk "Est: A place name.", "Est#ep181_est01", bc_self;
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "Are other guests affiliated?";
|
||||
mes "It is difficult when disputes arise because of jurisdiction.";
|
||||
mes "You never know how long it will take, so it's not suitable for a companion.";
|
||||
mes "[Elly]";
|
||||
mes "But the other guests have affiliations, don't they?";
|
||||
mes "It will be difficult if there is a conflict due to jurisdiction.";
|
||||
mes "You don't know how long it will take, so it's not a good idea to accompany them.";
|
||||
next;
|
||||
cutin "ep162_est01.bmp",1;
|
||||
mes "[EST]";
|
||||
mes "It sounds like you want to go there yourself.";
|
||||
mes "[Est]";
|
||||
mes "That sounds like you're saying you're definitely going to go in person.";
|
||||
next;
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "Yes.";
|
||||
mes "Please wait a minute.";
|
||||
mes "[Elly]";
|
||||
mes "Yes, it is.";
|
||||
mes "Please wait a moment.";
|
||||
next;
|
||||
progressbar_npc "00CCFF",7;
|
||||
mes "[Ellie]";
|
||||
progressbar_npc "CCFF",7;
|
||||
mes "[Elly]";
|
||||
mes "...";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "You have permission.";
|
||||
npctalk "Meeting ended.", "", bc_self;
|
||||
mes "[Elly]";
|
||||
mes "You're authorized.";
|
||||
npctalk "The meeting has ended.", "Smart Elly#ep18ely01", bc_self;
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "The purpose is support, not hindrance.";
|
||||
mes "I will follow you without burden.";
|
||||
mes "I'll give you this.";
|
||||
mes "[Elly]";
|
||||
mes "The purpose is not to hinder but to support.";
|
||||
mes "We'll follow along, no pressure.";
|
||||
mes "I will give this to you.";
|
||||
next;
|
||||
cutin "",255;
|
||||
mes "What Ellie gave her was a doll with a slightly droopy feel that resembled Ellie.";
|
||||
mes "It may not necessarily be Ellie.";
|
||||
mes "What Elly gave was a doll that looked exactly like Elly and felt a little stretched out.";
|
||||
mes "It may not be Elly, but...";
|
||||
next;
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "We have equipment that can transmit and receive data over long distances.";
|
||||
mes "Because we are such beings.";
|
||||
mes "[Elly]";
|
||||
mes "We also have equipment capable of long-distance data transmission and reception.";
|
||||
mes "Because that's who we are.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "But things are a little different now, so I'll give you a simple beta.";
|
||||
npctalk "Be sure to take it with you", "", bc_self;
|
||||
mes "[Elly]";
|
||||
mes "But things are a little different now, so I'll give you a beta version.";
|
||||
npctalk "Don't forget to take it with you.", "Smart Elly#ep18ely01", bc_self;
|
||||
next;
|
||||
cutin "16loo_02.bmp",0;
|
||||
mes "[Rookie]";
|
||||
mes "Uh... Mini Ellie?";
|
||||
mes "Uh... Mini Elly?";
|
||||
next;
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "Okay. I'll take that name.";
|
||||
mes "Using the resources of the main body, it is possible to collect visual and auditory information and communicate like a clone.";
|
||||
mes "[Elly]";
|
||||
mes "Great, I'm adopting that name.";
|
||||
mes "I can collect information like vision and hearing and communicate like an avatar using my own resources.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "There is no individual core, so the information obtained is not shared between betas unless I update it,";
|
||||
mes "If communication is lost, it's just a doll.";
|
||||
mes "[Elly]";
|
||||
mes "There are no individual cores, so the information I get is not shared between betas unless I update it,";
|
||||
mes "If communication is lost, it's just a puppet.";
|
||||
next;
|
||||
cutin "16loo_01.bmp",0;
|
||||
mes "[Rookie]";
|
||||
mes "Then call us if you need assistance.";
|
||||
mes "Like Ellie, we will provide generous support except for the manpower.";
|
||||
mes "Then call us if you need our support.";
|
||||
mes "I will support you without reservation, just like Elly, except for manpower.";
|
||||
next;
|
||||
cutin "ep172_beta.bmp",2;
|
||||
mes "[Ellie]";
|
||||
mes "It will be so";
|
||||
mes "[Elly]";
|
||||
mes "Yes, I will do that.";
|
||||
mes "Please take care of yourself.";
|
||||
npctalk "I'm going with you, but it's strange to greet you like this.", "", bc_self;
|
||||
npctalk "It's strange to be greeting each other like this when we're going together.", "Smart Elly#ep18ely01", bc_self;
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "The almost exact coordinates from which the signal was sent...";
|
||||
mes "About <NAVI>[here]<INFO>rachel,182,176,0,101,0</INFO></NAVI>";
|
||||
ep18_1_main = 1;
|
||||
mes "[Elly]";
|
||||
mes "The nearly exact coordinates of the signal's origin are...";
|
||||
mes "around <NAVI>[here]<INFO>rachel,182,176,0,101,0</INFO></NAVI> or so.";
|
||||
ep18_main = 1;
|
||||
setquest 8681;
|
||||
getitem 400127,1; // Ep18_Mini_Elly
|
||||
close3;
|
||||
}
|
||||
if (ep18_1_main == 1) {
|
||||
mes "[Ellie]";
|
||||
mes "Please be safe.";
|
||||
if (ep18_main == 1) {
|
||||
mes "[Elly]";
|
||||
mes "Safe travels to Rachel.";
|
||||
close;
|
||||
|
||||
}
|
||||
cutin "ep172_beta",2;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "No intermittent signal has been received yet.";
|
||||
mes "The whereabouts of the master's collection 3 are also being tracked at the same time.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Don't worry.";
|
||||
mes "Time is on our side.";
|
||||
next;
|
||||
mes "[Ellie]";
|
||||
mes "[Elly]";
|
||||
mes "Me and Alpha will analyze the information properly, so I'd like you to clean up the intruders remnant.";
|
||||
close3;
|
||||
|
||||
@@ -4339,7 +4340,7 @@ OnInit:
|
||||
// questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(18018) == 1" );
|
||||
|
||||
// check for episode 17.2 completion
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8681) == 0 && isbegin_quest(18018) == 2 && BaseLevel >= 170" );
|
||||
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8681) == 0 && isbegin_quest(18018) == 2 && BaseLevel >= 170" );
|
||||
end;
|
||||
}
|
||||
|
||||
@@ -9389,8 +9390,8 @@ ba_in01,32,250,3 script Sweety#ep172_swty 4_EP17_SWEETY,{
|
||||
mes "[Almond]";
|
||||
mes "Not possible.";
|
||||
mes "You won't be able to receieve it even if it came.";
|
||||
mes "Ellie took your receiving chip while we're repairing you.";
|
||||
mes "Doesn't that mean Ellie will take the orders for you?";
|
||||
mes "Elly took your receiving chip while we're repairing you.";
|
||||
mes "Doesn't that mean Elly will take the orders for you?";
|
||||
npctalk "No! I'll receive my next orders soon!", "", bc_self;
|
||||
next;
|
||||
mes "[Almond]";
|
||||
|
||||
13096
npc/re/quests/quests_18.txt
Normal file
13096
npc/re/quests/quests_18.txt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
17224
npc/re/quests/quests_19.txt
Normal file
17224
npc/re/quests/quests_19.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1225,9 +1225,9 @@ OnInit:
|
||||
rockrdg1,160,306,3 duplicate(dummy_cloaked_npc) Johnny James#revt04 4_M_JOHNNYJAMES
|
||||
rockrdg1,168,306,3 duplicate(dummy_cloaked_npc) Albert Ford#revt08 4_M_ALBERTFORD
|
||||
rockrdg1,156,302,7 duplicate(dummy_cloaked_npc) Ivoka Skudi#revt02 4_M_EVOKASCUDI
|
||||
rockrdg1,156,306,5 duplicate(dummy_cloaked_npc) Cactus Gunslinger#revt01 4_M_EVOKASCUDI
|
||||
rockrdg1,161,302,1 duplicate(dummy_cloaked_npc) Cactus Gunslinger#revt02 4_M_EVOKASCUDI
|
||||
rockrdg1,164,306,3 duplicate(dummy_cloaked_npc) Cactus Gunslinger#revt03 4_M_EVOKASCUDI
|
||||
rockrdg1,156,306,5 duplicate(dummy_cloaked_npc) Cactus Gunslinger#revt05 4_M_EVOKASCUDI
|
||||
rockrdg1,161,302,1 duplicate(dummy_cloaked_npc) Cactus Gunslinger#revt06 4_M_EVOKASCUDI
|
||||
rockrdg1,164,306,3 duplicate(dummy_cloaked_npc) Cactus Gunslinger#revt07 4_M_EVOKASCUDI
|
||||
|
||||
rockrdg1,156,312,3 script Unmoving Freight Train# 4_ENERGY_RED,{
|
||||
if (rock_main_quest == 5) {
|
||||
|
||||
@@ -63,11 +63,14 @@ npc: npc/re/guides/guides_woe_te.txt
|
||||
|
||||
// ------------------------ Instances ---------------------------
|
||||
npc: npc/re/instances/AirshipAssault.txt
|
||||
npc: npc/re/instances/AirshipDestruction.txt
|
||||
npc: npc/re/instances/BaggotLaboratory.txt
|
||||
npc: npc/re/instances/BakonawaLake.txt
|
||||
npc: npc/re/instances/BangungotHospital.txt
|
||||
npc: npc/re/instances/BuwayaCave.txt
|
||||
npc: npc/re/instances/CentralLaboratory.txt
|
||||
npc: npc/re/instances/CharlestonCrisis.txt
|
||||
npc: npc/re/instances/ConfusedSnakesNest.txt
|
||||
npc: npc/re/instances/CorOperation.txt
|
||||
npc: npc/re/instances/DevilTower.txt
|
||||
npc: npc/re/instances/EclageInterior.txt
|
||||
@@ -81,6 +84,7 @@ npc: npc/re/instances/HeartHunterWarBase.txt
|
||||
npc: npc/re/instances/HiddenGarden.txt
|
||||
npc: npc/re/instances/InfiniteSpace.txt
|
||||
npc: npc/re/instances/IsleOfBios.txt
|
||||
npc: npc/re/instances/IwinPatrol.txt
|
||||
npc: npc/re/instances/LastRoom.txt
|
||||
npc: npc/re/instances/LostFarm.txt
|
||||
npc: npc/re/instances/MalangdoCulvert.txt
|
||||
@@ -143,6 +147,7 @@ npc: npc/re/merchants/enchan_rockridge.txt
|
||||
npc: npc/re/merchants/enchan_sage_legacy_17_2.txt
|
||||
npc: npc/re/merchants/enchan_verus.txt
|
||||
npc: npc/re/merchants/enchantgrade.txt
|
||||
npc: npc/re/merchants/episode_19.txt
|
||||
npc: npc/re/merchants/Extended_Ammunition.txt
|
||||
npc: npc/re/merchants/Extended_Stylist.txt
|
||||
npc: npc/re/merchants/flute.txt
|
||||
@@ -242,7 +247,8 @@ npc: npc/re/quests/quests_16_2.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_18_1.txt
|
||||
npc: npc/re/quests/quests_18.txt
|
||||
npc: npc/re/quests/quests_19.txt
|
||||
npc: npc/re/quests/quests_aldebaran.txt
|
||||
npc: npc/re/quests/quests_dewata.txt
|
||||
npc: npc/re/quests/quests_dicastes.txt
|
||||
|
||||
@@ -22,3 +22,4 @@ npc: npc/re/mapflag/town.txt
|
||||
npc: npc/re/mapflag/reset.txt
|
||||
npc: npc/re/mapflag/skill_duration.txt
|
||||
npc: npc/re/mapflag/nodynamicnpc.txt
|
||||
npc: npc/re/mapflag/specialpopup.txt
|
||||
|
||||
@@ -39,6 +39,8 @@ npc: npc/re/mobs/dungeons/gon_dun.txt
|
||||
npc: npc/re/mobs/dungeons/ice_dun.txt
|
||||
npc: npc/re/mobs/dungeons/in_sphinx.txt
|
||||
npc: npc/re/mobs/dungeons/iz_dun.txt
|
||||
npc: npc/re/mobs/dungeons/jor_ab.txt
|
||||
npc: npc/re/mobs/dungeons/jor_dun.txt
|
||||
npc: npc/re/mobs/dungeons/juperos.txt
|
||||
npc: npc/re/mobs/dungeons/kh_dun.txt
|
||||
npc: npc/re/mobs/dungeons/lhz_dun.txt
|
||||
@@ -89,6 +91,7 @@ npc: npc/re/mobs/fields/geffen.txt
|
||||
npc: npc/re/mobs/fields/gonryun.txt
|
||||
npc: npc/re/mobs/fields/gw_fild.txt
|
||||
npc: npc/re/mobs/fields/hugel.txt
|
||||
npc: npc/re/mobs/fields/jor_back.txt
|
||||
npc: npc/re/mobs/fields/lighthalzen.txt
|
||||
npc: npc/re/mobs/fields/louyang.txt
|
||||
npc: npc/re/mobs/fields/lutie.txt
|
||||
|
||||
1
sql-files/upgrades/upgrade_20240803.sql
Normal file
1
sql-files/upgrades/upgrade_20240803.sql
Normal file
@@ -0,0 +1 @@
|
||||
UPDATE `char_reg_num` SET `key` = 'ep18_main' WHERE `key` = 'ep18_1_main';
|
||||
@@ -1675,7 +1675,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
damage += damage * bonus / 100;
|
||||
}
|
||||
if (tsc->getSCE(SC_HOLY_OIL) && (flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON))
|
||||
damage += damage * 50 / 100;// Need official adjustment. [Rytech]
|
||||
damage += damage * (3 * tsc->getSCE(SC_HOLY_OIL)->val1) / 100;
|
||||
|
||||
if( tsc->getSCE( SC_RUSH_QUAKE1 ) && ( flag&BF_WEAPON ) == BF_WEAPON ){
|
||||
damage += damage * 50 / 100;
|
||||
|
||||
@@ -1926,17 +1926,6 @@ void clif_homskillinfoblock( homun_data& hd ){
|
||||
}
|
||||
|
||||
clif_send( packet, packet->packetLength, &sd->bl, SELF );
|
||||
|
||||
if (battle_config.display_status_timers) {
|
||||
// Clear cooldown display for skills that are no longer blocked
|
||||
for (auto& it : hd.homunculus.hskill) {
|
||||
if (it.id == 0)
|
||||
continue;
|
||||
|
||||
if (util::vector_get(hd.blockskill, it.id) == hd.blockskill.end())
|
||||
clif_skill_cooldown(*sd, it.id, 0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3681,16 +3670,16 @@ void clif_updatestatus( map_session_data& sd, enum _sp type ){
|
||||
break;
|
||||
#else
|
||||
case SP_BASEEXP:
|
||||
clif_par_change(sd, type, client_exp(sd.status.base_exp));
|
||||
clif_longpar_change(sd, type, client_exp(sd.status.base_exp));
|
||||
break;
|
||||
case SP_JOBEXP:
|
||||
clif_par_change(sd, type, client_exp(sd.status.job_exp));
|
||||
clif_longpar_change(sd, type, client_exp(sd.status.job_exp));
|
||||
break;
|
||||
case SP_NEXTBASEEXP:
|
||||
clif_par_change(sd, type, client_exp(pc_nextbaseexp(&sd)));
|
||||
clif_longpar_change(sd, type, client_exp(pc_nextbaseexp(&sd)));
|
||||
break;
|
||||
case SP_NEXTJOBEXP:
|
||||
clif_par_change(sd, type, client_exp(pc_nextjobexp(&sd)));
|
||||
clif_longpar_change(sd, type, client_exp(pc_nextjobexp(&sd)));
|
||||
break;
|
||||
#endif
|
||||
|
||||
@@ -10834,9 +10823,9 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd)
|
||||
return;
|
||||
clif_spawn(&sd->ed->bl);
|
||||
clif_elemental_info(sd);
|
||||
clif_elemental_updatestatus(sd,SP_HP);
|
||||
clif_elemental_updatestatus(*sd, SP_HP);
|
||||
clif_hpmeter_single( *sd, sd->ed->bl.id, sd->ed->battle_status.hp, sd->ed->battle_status.max_hp );
|
||||
clif_elemental_updatestatus(sd,SP_SP);
|
||||
clif_elemental_updatestatus(*sd, SP_SP);
|
||||
status_calc_bl(&sd->ed->bl, { SCB_SPEED }); //Elemental mimic their master's speed on each map change
|
||||
}
|
||||
|
||||
@@ -18798,34 +18787,36 @@ void clif_parse_ItemListWindowSelected(int fd, map_session_data* sd) {
|
||||
/*==========================================
|
||||
* Elemental System
|
||||
*==========================================*/
|
||||
void clif_elemental_updatestatus(map_session_data *sd, int type) {
|
||||
s_elemental_data *ed;
|
||||
struct status_data *status;
|
||||
int fd;
|
||||
|
||||
if( !clif_session_isValid(sd) || (ed = sd->ed) == nullptr )
|
||||
/// Notifies client of a change in an elemental's status parameter.
|
||||
/// 0x81e <type>.W <value>.L (ZC_EL_PAR_CHANGE)
|
||||
void clif_elemental_updatestatus(map_session_data& sd, _sp type) {
|
||||
#if PACKETVER >= 20100309
|
||||
if (sd.ed == nullptr)
|
||||
return;
|
||||
|
||||
fd = sd->fd;
|
||||
status = &ed->battle_status;
|
||||
WFIFOHEAD(fd,8);
|
||||
WFIFOW(fd,0) = 0x81e;
|
||||
WFIFOW(fd,2) = type;
|
||||
PACKET_ZC_EL_PAR_CHANGE p = {};
|
||||
|
||||
p.packetType = HEADER_ZC_EL_PAR_CHANGE;
|
||||
p.type = static_cast<decltype(p.type)>(type);
|
||||
status_data* status = &sd.ed->battle_status;
|
||||
switch( type ) {
|
||||
case SP_HP:
|
||||
WFIFOL(fd,4) = status->hp;
|
||||
p.value = static_cast<decltype(p.value)>(status->hp);
|
||||
break;
|
||||
case SP_MAXHP:
|
||||
WFIFOL(fd,4) = status->max_hp;
|
||||
p.value = static_cast<decltype(p.value)>(status->max_hp);
|
||||
break;
|
||||
case SP_SP:
|
||||
WFIFOL(fd,4) = status->sp;
|
||||
p.value = static_cast<decltype(p.value)>(status->sp);
|
||||
break;
|
||||
case SP_MAXSP:
|
||||
WFIFOL(fd,4) = status->max_sp;
|
||||
p.value = static_cast<decltype(p.value)>(status->max_sp);
|
||||
break;
|
||||
}
|
||||
WFIFOSET(fd,8);
|
||||
|
||||
clif_send( &p, sizeof( p ), &sd.bl, SELF );
|
||||
#endif
|
||||
}
|
||||
|
||||
void clif_elemental_info(map_session_data *sd) {
|
||||
@@ -19724,6 +19715,12 @@ static void clif_loadConfirm( map_session_data *sd ){
|
||||
/// 0447
|
||||
void clif_parse_blocking_playcancel( int fd, map_session_data *sd ){
|
||||
clif_loadConfirm( sd );
|
||||
|
||||
int32 mf = map_getmapflag(sd->bl.m, MF_SPECIALPOPUP);
|
||||
|
||||
if (mf > 0) {
|
||||
clif_specialpopup(*sd, mf);
|
||||
}
|
||||
}
|
||||
|
||||
/// req world info (CZ_CLIENT_VERSION)
|
||||
@@ -25130,6 +25127,20 @@ void clif_set_npc_window_pos_percent(map_session_data& sd, int x, int y)
|
||||
#endif // PACKETVER_MAIN_NUM >= 20220504
|
||||
}
|
||||
|
||||
/// Displays a special popup.
|
||||
/// Works only if player moved from one map to another.
|
||||
/// 0bbe <popup id>.L (ZC_SPECIALPOPUP)
|
||||
void clif_specialpopup(map_session_data& sd, int32 id ){
|
||||
#if PACKETVER >= 20221005
|
||||
PACKET_ZC_SPECIALPOPUP p = {};
|
||||
|
||||
p.PacketType = HEADER_ZC_SPECIALPOPUP;
|
||||
p.ppId = id;
|
||||
|
||||
clif_send( &p, sizeof( p ), &sd.bl, SELF);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* Main client packet processing function
|
||||
*------------------------------------------*/
|
||||
|
||||
@@ -1299,7 +1299,7 @@ void clif_autoshadowspell_list( map_session_data& sd );
|
||||
|
||||
int clif_skill_itemlistwindow( map_session_data *sd, uint16 skill_id, uint16 skill_lv );
|
||||
void clif_elemental_info(map_session_data *sd);
|
||||
void clif_elemental_updatestatus(map_session_data *sd, int type);
|
||||
void clif_elemental_updatestatus(map_session_data& sd, _sp type);
|
||||
|
||||
void clif_spiritcharm( map_session_data& sd );
|
||||
|
||||
@@ -1456,4 +1456,6 @@ void clif_set_npc_window_pos_percent(map_session_data& sd, int x, int y);
|
||||
|
||||
void clif_noask_sub( map_session_data& sd, map_session_data& tsd, int type );
|
||||
|
||||
void clif_specialpopup(map_session_data& sd, int32 id);
|
||||
|
||||
#endif /* CLIF_HPP */
|
||||
|
||||
@@ -1544,7 +1544,6 @@
|
||||
//packet(0x081B,4);
|
||||
//packet(0x081C,6);
|
||||
packet(0x081d,22);
|
||||
packet(0x081e,8);
|
||||
#endif
|
||||
|
||||
// 2010-03-23aRagexeRE
|
||||
|
||||
@@ -282,9 +282,9 @@ int elemental_data_received(s_elemental *ele, bool flag) {
|
||||
return 0;
|
||||
clif_spawn(&ed->bl);
|
||||
clif_elemental_info(sd);
|
||||
clif_elemental_updatestatus(sd,SP_HP);
|
||||
clif_elemental_updatestatus(*sd, SP_HP);
|
||||
clif_hpmeter_single( *sd, ed->bl.id, ed->battle_status.hp, ed->battle_status.max_hp );
|
||||
clif_elemental_updatestatus(sd,SP_SP);
|
||||
clif_elemental_updatestatus(*sd, SP_SP);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -441,9 +441,9 @@ void elemental_heal(s_elemental_data *ed, int hp, int sp) {
|
||||
if (ed->master == nullptr)
|
||||
return;
|
||||
if( hp )
|
||||
clif_elemental_updatestatus(ed->master, SP_HP);
|
||||
clif_elemental_updatestatus(*ed->master, SP_HP);
|
||||
if( sp )
|
||||
clif_elemental_updatestatus(ed->master, SP_SP);
|
||||
clif_elemental_updatestatus(*ed->master, SP_SP);
|
||||
}
|
||||
|
||||
int elemental_dead(s_elemental_data *ed) {
|
||||
@@ -595,8 +595,8 @@ static int elemental_ai_sub_timer(s_elemental_data *ed, map_session_data *sd, t_
|
||||
if( master_dist > AREA_SIZE ) { // Master out of vision range.
|
||||
elemental_unlocktarget(ed);
|
||||
unit_warp(&ed->bl,sd->bl.m,sd->bl.x,sd->bl.y,CLR_TELEPORT);
|
||||
clif_elemental_updatestatus(sd,SP_HP);
|
||||
clif_elemental_updatestatus(sd,SP_SP);
|
||||
clif_elemental_updatestatus(*sd, SP_HP);
|
||||
clif_elemental_updatestatus(*sd, SP_SP);
|
||||
return 0;
|
||||
} else if( master_dist > MAX_ELEDISTANCE ) { // Master too far, chase.
|
||||
short x = sd->bl.x, y = sd->bl.y;
|
||||
|
||||
@@ -292,10 +292,6 @@ int hom_vaporize(map_session_data *sd, int flag)
|
||||
if (battle_config.hom_delay_reset_vaporize) {
|
||||
hd->blockskill.clear();
|
||||
hd->blockskill.shrink_to_fit();
|
||||
|
||||
// End all cooldown display timers
|
||||
if (battle_config.display_status_timers)
|
||||
clif_homskillinfoblock(*sd->hd);
|
||||
}
|
||||
status_change_clear(&hd->bl, 1);
|
||||
clif_hominfo(sd, sd->hd, 0);
|
||||
|
||||
@@ -2843,6 +2843,7 @@ enum e_random_item_group {
|
||||
IG_COSTUMEMILEPACK_35_1,
|
||||
IG_COSTUMEMILEPACK_35_2,
|
||||
IG_COSTUMEMILEPACK_35_3,
|
||||
IG_D_GW_EXTRACTOR,
|
||||
|
||||
IG_MAX,
|
||||
};
|
||||
|
||||
@@ -4785,6 +4785,14 @@ bool map_setmapflag_sub(int16 m, enum e_mapflag mapflag, bool status, union u_ma
|
||||
mapdata->setMapFlag(MF_NOBASEEXP, false);
|
||||
ShowWarning("map_setmapflag: Unable to set No Base EXP and BEXP flags for the same map! Removing No Base EXP flag from %s.\n", mapdata->name);
|
||||
}
|
||||
mapdata->setMapFlag(mapflag, args->flag_val);
|
||||
} else
|
||||
mapdata->setMapFlag(mapflag, false);
|
||||
break;
|
||||
case MF_SPECIALPOPUP:
|
||||
if (status) {
|
||||
nullpo_retr(false, args);
|
||||
|
||||
mapdata->setMapFlag(mapflag, args->flag_val);
|
||||
} else
|
||||
mapdata->setMapFlag(mapflag, false);
|
||||
|
||||
@@ -676,6 +676,9 @@ enum e_mapflag : int16 {
|
||||
MF_NOBUYINGSTORE,
|
||||
MF_NODYNAMICNPC,
|
||||
MF_NOBANK,
|
||||
MF_SPECIALPOPUP,
|
||||
MF_NOLOOTNORMALMOB,
|
||||
MF_NO_NPC_SELFDESTRUCTION_ON_ALL,
|
||||
MF_MAX
|
||||
};
|
||||
|
||||
|
||||
@@ -2889,7 +2889,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
||||
}
|
||||
}
|
||||
|
||||
if( !(type&1) && !map_getmapflag(m, MF_NOMOBLOOT) && !md->state.rebirth && (
|
||||
if( !(type&1) && !map_getmapflag(m, MF_NOMOBLOOT) && !(md->get_bosstype() == BOSSTYPE_NONE && map_getmapflag(m, MF_NOLOOTNORMALMOB)) && !md->state.rebirth && (
|
||||
!md->special_state.ai || //Non special mob
|
||||
battle_config.alchemist_summon_reward == 2 || //All summoned give drops
|
||||
(md->special_state.ai==AI_SPHERE && battle_config.alchemist_summon_reward == 1) //Marine Sphere Drops items.
|
||||
|
||||
@@ -5507,6 +5507,16 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con
|
||||
map_setmapflag_sub(m, mapflag, state, &args);
|
||||
}
|
||||
break;
|
||||
|
||||
case MF_SPECIALPOPUP: {
|
||||
union u_mapflag_args args = {};
|
||||
|
||||
if (sscanf(w4, "%11d", &args.flag_val) < 1)
|
||||
args.flag_val = 0;
|
||||
|
||||
map_setmapflag_sub(m, mapflag, state, &args);
|
||||
}
|
||||
break;
|
||||
|
||||
case MF_SKILL_DAMAGE: {
|
||||
char skill_name[SKILL_NAME_LENGTH];
|
||||
|
||||
@@ -1154,6 +1154,13 @@ struct PACKET_CZ_PARTY_JOIN_REQ_ACK{
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(CZ_PARTY_JOIN_REQ_ACK, 0x2c7);
|
||||
|
||||
struct PACKET_ZC_EL_PAR_CHANGE {
|
||||
int16 packetType;
|
||||
uint16 type;
|
||||
uint32 value;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_EL_PAR_CHANGE, 0x81e);
|
||||
|
||||
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
|
||||
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
|
||||
#pragma pack( pop )
|
||||
|
||||
@@ -6690,7 +6690,7 @@ bool pc_steal_item(map_session_data *sd,struct block_list *bl, uint16 skill_lv)
|
||||
md_status= status_get_status_data(bl);
|
||||
|
||||
if (md->master_id || status_has_mode(md_status, MD_STATUSIMMUNE) || util::vector_exists(status_get_race2(&md->bl), RC2_TREASURE) ||
|
||||
map_getmapflag(bl->m, MF_NOMOBLOOT) || // check noloot map flag [Lorky]
|
||||
map_getmapflag(bl->m, MF_NOMOBLOOT) || md->get_bosstype() == BOSSTYPE_NONE && map_getmapflag(bl->m, MF_NOLOOTNORMALMOB) || // check noloot map flag [Lorky]
|
||||
(battle_config.skill_steal_max_tries && //Reached limit of steal attempts. [Lupus]
|
||||
md->state.steal_flag++ >= battle_config.skill_steal_max_tries)
|
||||
) { //Can't steal from
|
||||
@@ -7016,10 +7016,6 @@ enum e_setpos pc_setpos(map_session_data* sd, unsigned short mapindex, int x, in
|
||||
if (battle_config.hom_delay_reset_warp) {
|
||||
sd->hd->blockskill.clear();
|
||||
sd->hd->blockskill.shrink_to_fit();
|
||||
|
||||
// End all cooldown display timers
|
||||
if (battle_config.display_status_timers)
|
||||
clif_homskillinfoblock(*sd->hd);
|
||||
}
|
||||
|
||||
sd->hd->bl.m = m;
|
||||
|
||||
@@ -15337,18 +15337,16 @@ BUILDIN_FUNC(petskillsupport)
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void script_skill_effect(block_list *bl, uint16 skill_id, uint16 skill_lv, int16 x, int16 y) {
|
||||
nullpo_retv(bl);
|
||||
|
||||
static inline void script_skill_effect( block_list& bl, uint16 skill_id, uint16 skill_lv, int16 x, int16 y ) {
|
||||
switch (skill_get_casttype(skill_id)) {
|
||||
case CAST_GROUND:
|
||||
clif_skill_poseffect(bl, skill_id, skill_lv, x, y, gettick());
|
||||
clif_skill_poseffect(&bl, skill_id, skill_lv, x, y, gettick());
|
||||
break;
|
||||
case CAST_NODAMAGE:
|
||||
clif_skill_nodamage(bl, bl, skill_id, skill_lv, 1);
|
||||
clif_skill_nodamage(&bl, &bl, skill_id, skill_lv, 1);
|
||||
break;
|
||||
case CAST_DAMAGE:
|
||||
clif_skill_damage(bl, bl, gettick(), status_get_amotion(bl), status_get_dmotion(bl), 0, 1, skill_id, skill_lv, skill_get_hit(skill_id));
|
||||
clif_skill_damage(&bl, &bl, gettick(), status_get_amotion(&bl), status_get_dmotion(&bl), 0, 1, skill_id, skill_lv, skill_get_hit(skill_id));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -15356,32 +15354,46 @@ static inline void script_skill_effect(block_list *bl, uint16 skill_id, uint16 s
|
||||
/*==========================================
|
||||
* Scripted skill effects [Celest]
|
||||
*------------------------------------------*/
|
||||
/// skilleffect <skill id>,<level>
|
||||
/// skilleffect "<skill name>",<level>
|
||||
/// skilleffect <skill id>,<level>{,<game id>}
|
||||
/// skilleffect "<skill name>",<level>{,<game id>}
|
||||
BUILDIN_FUNC(skilleffect)
|
||||
{
|
||||
TBL_PC *sd;
|
||||
uint16 skill_id, skill_lv;
|
||||
|
||||
if( !script_rid2sd(sd) )
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
|
||||
skill_id = ( script_isstring(st, 2) ? skill_name2id(script_getstr(st,2)) : script_getnum(st,2) );
|
||||
skill_lv = script_getnum(st,3);
|
||||
block_list* bl;
|
||||
map_session_data* sd;
|
||||
|
||||
if (script_hasdata(st, 4)) {
|
||||
if (!script_rid2bl(4, bl))
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
else {
|
||||
// target is the character attached (default)
|
||||
if (!script_rid2sd(sd))
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
|
||||
bl = &sd->bl;
|
||||
}
|
||||
|
||||
uint16 skill_id = ( script_isstring(st, 2) ? skill_name2id(script_getstr(st, 2)) : script_getnum(st, 2) );
|
||||
|
||||
if (skill_db.find(skill_id) == nullptr) {
|
||||
ShowError("buildin_skilleffect: Invalid skill defined (%s)!\n", script_getstr(st, 2));
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
/* Ensure we're standing because the following packet causes the client to virtually set the char to stand,
|
||||
* which leaves the server thinking it still is sitting. */
|
||||
if( pc_issit(sd) && pc_setstand(sd, false) ) {
|
||||
skill_sit(sd, 0);
|
||||
clif_standing(&sd->bl);
|
||||
uint16 skill_lv = script_getnum(st, 3);
|
||||
|
||||
if (bl->type == BL_PC) {
|
||||
/* Ensure we're standing because the following packet causes the client to virtually set the char to stand,
|
||||
* which leaves the server thinking it still is sitting. */
|
||||
sd = reinterpret_cast<map_session_data*>( bl );
|
||||
|
||||
if (pc_issit(sd) && pc_setstand(sd, false)) {
|
||||
skill_sit(sd, 0);
|
||||
clif_standing(&sd->bl);
|
||||
}
|
||||
}
|
||||
|
||||
script_skill_effect(&sd->bl, skill_id, skill_lv, sd->bl.x, sd->bl.y);
|
||||
script_skill_effect( *bl, skill_id, skill_lv, bl->x, bl->y );
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
@@ -15413,7 +15425,7 @@ BUILDIN_FUNC(npcskilleffect)
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
script_skill_effect(bl, skill_id, skill_lv, bl->x, bl->y);
|
||||
script_skill_effect( *bl, skill_id, skill_lv, bl->x, bl->y );
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
@@ -15849,7 +15861,7 @@ BUILDIN_FUNC(addhomintimacy)
|
||||
homun_data *hd;
|
||||
|
||||
if (!script_charid2sd(3, sd) || !(hd = sd->hd))
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
|
||||
int32 value = script_getnum(st, 2);
|
||||
|
||||
@@ -27234,6 +27246,22 @@ BUILDIN_FUNC(opentips){
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a special popup.
|
||||
* specialpopup(<popup id>);
|
||||
*/
|
||||
BUILDIN_FUNC(specialpopup) {
|
||||
map_session_data* sd;
|
||||
|
||||
if( !script_rid2sd(sd) )
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
|
||||
int32 id = script_getnum(st,2);
|
||||
clif_specialpopup(*sd, id);
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(setdialogalign){
|
||||
map_session_data *sd;
|
||||
|
||||
@@ -27384,6 +27412,27 @@ BUILDIN_FUNC(permission_add)
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(unitisforcewalk)
|
||||
{
|
||||
block_list *bl = nullptr;
|
||||
bool force_walk = false;
|
||||
|
||||
if (script_getnum(st, 2))
|
||||
bl = map_id2bl(script_getnum(st,2));
|
||||
else
|
||||
bl = map_id2bl(st->rid);
|
||||
|
||||
if (bl != nullptr) {
|
||||
struct unit_data *ud = unit_bl2ud(bl);
|
||||
|
||||
if (ud != nullptr)
|
||||
force_walk = (ud->walktimer == INVALID_TIMER && ud->state.force_walk);
|
||||
}
|
||||
script_pushint(st, force_walk);
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
#include <custom/script.inc>
|
||||
|
||||
// declarations that were supposed to be exported from npc_chat.cpp
|
||||
@@ -27711,7 +27760,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(petskillattack,"viii"), // [Skotlex]
|
||||
BUILDIN_DEF(petskillattack2,"viiii"), // [Valaris]
|
||||
BUILDIN_DEF(petskillsupport,"viiii"), // [Skotlex]
|
||||
BUILDIN_DEF(skilleffect,"vi"), // skill effect [Celest]
|
||||
BUILDIN_DEF(skilleffect,"vi?"), // skill effect [Celest]
|
||||
BUILDIN_DEF(npcskilleffect,"viii"), // npc skill effect [Valaris]
|
||||
BUILDIN_DEF(specialeffect,"i??"), // npc skill effect [Valaris]
|
||||
BUILDIN_DEF(specialeffect2,"i??"), // skill effect on players[Valaris]
|
||||
@@ -28143,6 +28192,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(has_autoloot,"?"),
|
||||
BUILDIN_DEF(autoloot,"??"),
|
||||
BUILDIN_DEF(opentips, "i?"),
|
||||
BUILDIN_DEF(specialpopup,"i"),
|
||||
|
||||
BUILDIN_DEF(setdialogalign, "i"),
|
||||
BUILDIN_DEF(setdialogsize, "ii"),
|
||||
@@ -28153,6 +28203,8 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(permission_add, "i?"),
|
||||
BUILDIN_DEF2(permission_add, "permission_remove", "i?"),
|
||||
|
||||
BUILDIN_DEF(unitisforcewalk, "i"),
|
||||
|
||||
#include <custom/script_def.inc>
|
||||
|
||||
{nullptr,nullptr,nullptr},
|
||||
|
||||
@@ -538,6 +538,9 @@
|
||||
export_constant(MF_NOBUYINGSTORE);
|
||||
export_constant(MF_NODYNAMICNPC);
|
||||
export_constant(MF_NOBANK);
|
||||
export_constant(MF_SPECIALPOPUP);
|
||||
export_constant(MF_NOLOOTNORMALMOB);
|
||||
export_constant(MF_NO_NPC_SELFDESTRUCTION_ON_ALL);
|
||||
|
||||
/* setcell types */
|
||||
export_constant(CELL_WALKABLE);
|
||||
@@ -7808,6 +7811,7 @@
|
||||
export_constant(IG_COSTUMEMILEPACK_35_1);
|
||||
export_constant(IG_COSTUMEMILEPACK_35_2);
|
||||
export_constant(IG_COSTUMEMILEPACK_35_3);
|
||||
export_constant(IG_D_GW_EXTRACTOR);
|
||||
|
||||
/* unit stop walking */
|
||||
export_constant(USW_NONE);
|
||||
|
||||
@@ -8821,7 +8821,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
case NPC_SELFDESTRUCTION:
|
||||
//Self Destruction hits everyone in range (allies+enemies)
|
||||
//Except for Summoned Marine spheres on non-versus maps, where it's just enemy.
|
||||
i = ((!md || md->special_state.ai == AI_SPHERE) && !map_flag_vs(src->m))?
|
||||
i = ((!md || md->special_state.ai == AI_SPHERE) && !map_flag_vs(src->m) || md && map_getmapflag(src->m, MF_NO_NPC_SELFDESTRUCTION_ON_ALL))?
|
||||
BCT_ENEMY:BCT_ALL;
|
||||
clif_skill_nodamage(src, src, skill_id, -1, 1);
|
||||
map_delblock(src); //Required to prevent chain-self-destructions hitting back.
|
||||
@@ -11705,15 +11705,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
if( !status_isdead(bl) )
|
||||
break;
|
||||
|
||||
status_zap(bl, 0, tstatus->sp * 10 * skill_lv / 100);
|
||||
|
||||
int heal = tstatus->sp;
|
||||
|
||||
if( heal <= 0 )
|
||||
heal = 1;
|
||||
tstatus->hp = heal;
|
||||
tstatus->hp = max(tstatus->sp, 1);
|
||||
tstatus->sp -= tstatus->sp * ( 60 - 10 * skill_lv ) / 100;
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||
pc_revive((TBL_PC*)bl,heal,0);
|
||||
pc_revive(reinterpret_cast<map_session_data*>(bl),true,true);
|
||||
clif_resurrection( *bl );
|
||||
}
|
||||
break;
|
||||
@@ -12970,6 +12965,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
clif_skill_nodamage(src, src, skill_id, skill_lv, 1);
|
||||
break;
|
||||
|
||||
case DE_BERSERKAIZER:
|
||||
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
||||
break;
|
||||
|
||||
default: {
|
||||
std::shared_ptr<s_skill_db> skill = skill_db.find(skill_id);
|
||||
ShowWarning("skill_castend_nodamage_id: missing code case for skill %s(%d)\n", skill ? skill->name : "UNKNOWN", skill_id);
|
||||
@@ -23039,17 +23038,13 @@ int skill_blockpc_clear(map_session_data *sd) {
|
||||
}
|
||||
|
||||
TIMER_FUNC(skill_blockhomun_end){
|
||||
homun_data *hd = reinterpret_cast<homun_data *>(map_id2bl(id));
|
||||
struct homun_data *hd = (TBL_HOM*) map_id2bl(id);
|
||||
|
||||
if (hd) {
|
||||
auto skill = util::vector_get(hd->blockskill, static_cast<uint16>(data));
|
||||
auto skill = util::vector_get(hd->blockskill, (uint16)data);
|
||||
|
||||
if (skill != hd->blockskill.end())
|
||||
hd->blockskill.erase(skill);
|
||||
|
||||
// Make sure the cooldown display is removed
|
||||
if (battle_config.display_status_timers)
|
||||
clif_homskillinfoblock(*hd);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -23071,11 +23066,8 @@ int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick) //[
|
||||
|
||||
hd->blockskill.push_back(skill_id);
|
||||
|
||||
if (battle_config.display_status_timers) {
|
||||
// Reset the skill cooldown display first
|
||||
clif_homskillinfoblock(*hd);
|
||||
if (battle_config.display_status_timers)
|
||||
clif_skill_cooldown(*hd->master, skill_id, tick);
|
||||
}
|
||||
|
||||
return add_timer(gettick() + tick, skill_blockhomun_end, hd->bl.id, skill_id);
|
||||
}
|
||||
|
||||
@@ -5951,9 +5951,12 @@ void status_calc_bl_main(struct block_list& bl, std::bitset<SCB_MAX> flag)
|
||||
* No status changes alter these yet.
|
||||
* if(flag[SCB_SIZE])
|
||||
* if(flag[SCB_RACE])
|
||||
* if(flag[SCB_RANGE])
|
||||
**/
|
||||
|
||||
if (flag[SCB_RANGE]) {
|
||||
status->rhw.range = b_status->rhw.range;
|
||||
}
|
||||
|
||||
if(flag[SCB_MAXHP]) {
|
||||
if( bl.type == BL_PC ) {
|
||||
status->max_hp = status_calc_maxhpsp_pc(sd,status->vit,true);
|
||||
@@ -6445,13 +6448,13 @@ void status_calc_bl_(struct block_list* bl, std::bitset<SCB_MAX> flag, uint8 opt
|
||||
return;
|
||||
|
||||
if( b_status.max_hp != status->max_hp )
|
||||
clif_elemental_updatestatus(ed->master, SP_MAXHP);
|
||||
clif_elemental_updatestatus(*ed->master, SP_MAXHP);
|
||||
if( b_status.max_sp != status->max_sp )
|
||||
clif_elemental_updatestatus(ed->master, SP_MAXSP);
|
||||
clif_elemental_updatestatus(*ed->master, SP_MAXSP);
|
||||
if( b_status.hp != status->hp )
|
||||
clif_elemental_updatestatus(ed->master, SP_HP);
|
||||
clif_elemental_updatestatus(*ed->master, SP_HP);
|
||||
if( b_status.sp != status->sp )
|
||||
clif_mercenary_updatestatus(ed->master, SP_SP);
|
||||
clif_elemental_updatestatus(*ed->master, SP_SP);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user