Merge branch 'master' into hotfix/issue6912

This commit is contained in:
Aleos
2024-04-08 12:20:16 -04:00
committed by GitHub
176 changed files with 125390 additions and 37075 deletions

View File

@@ -2,6 +2,11 @@
#line 4 "scanner.c"
#ifdef _MSC_VER
#pragma warning( push )
#pragma warning( disable : 4267 )
#endif
#define YY_INT_ALIGNED short int
/* A lexical scanner generated by flex */
@@ -2365,3 +2370,7 @@ void libconfig_yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
#line 192 "scanner.l"
#ifdef _MSC_VER
#pragma warning( pop )
#endif

View File

@@ -236,7 +236,7 @@ option( ENABLE_WEB_SERVER "Build web-server (default=ON)" ON )
#
TEST_BIG_ENDIAN( BIG_ENDIAN )
if( NOT DEFINED BIG_ENDIAN )
message( WARNING "unable to determine endianess, only LITTLE ENDIAN is supported" )
message( WARNING "unable to determine endianness, only LITTLE ENDIAN is supported" )
elseif( BIG_ENDIAN )
message( FATAL_ERROR "bigendian is not supported" )
endif()

View File

@@ -134,3 +134,9 @@ min_shop_buy: 1
// Minimum sell price of items at a normal shop
// Officially items can be sold for 0 Zeny
min_shop_sell: 0
// Should items that reduce damage from element/race count all monster damage as physical? (Note 1)
// Officially "Asprika" (god item) reduces all monsters damage rather than just physical damage
// Shaman Hat on the other hand doesn't reduce monster damage at all (reduces magical damage in PVP)
// This only affects items with bonus3 bSubEle and bonus3 bSubRace.
cardfix_monster_physical: yes

View File

@@ -240,6 +240,7 @@ Body:
bypass_stat_onclone: true
bypass_max_stat: true
macro_register: true
trade_unconditional: true
#all_permission: true
Footer:

View File

@@ -1610,5 +1610,8 @@ map: 3@vrpop
// Depth biosphere 2nd floor
map: bl_depth2
// Fantasy Series Sonic Collaboration - Dr. Eggman's Secret Base
map: 1@vrsn
//------------------------- Clone Maps ---------------------------
//------------------------- Extra Maps ---------------------------

4
configure vendored
View File

@@ -4761,8 +4761,8 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
;; #(
*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to determine endianess, only little endian is supported" >&5
$as_echo "$as_me: WARNING: unable to determine endianess, only little endian is supported" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to determine endianness, only little endian is supported" >&5
$as_echo "$as_me: WARNING: unable to determine endianness, only little endian is supported" >&2;}
;;
esac

View File

@@ -490,7 +490,7 @@ CXXFLAG_CLEARS="-std=c++17"
AC_C_BIGENDIAN(
[AC_MSG_ERROR([[bigendian is not supported... stopping]])],
,
[AC_MSG_WARN([[unable to determine endianess, only little endian is supported]])]
[AC_MSG_WARN([[unable to determine endianness, only little endian is supported]])]
)

View File

@@ -45,6 +45,8 @@ Body:
Value: 4
- Name: JUMPINGCLAN
Value: 5
- Name: REPUTATION_EP18
Value: 3
Footer:
Imports:

Binary file not shown.

View File

@@ -1240,6 +1240,7 @@ t_garden
2@vrpop
3@vrpop
bl_depth2
1@vrsn
//======================================================================================
// - Other/Extra maps -

View File

@@ -20587,16 +20587,7 @@ Body:
EquipLevelMin: 94
Script: |
bonus bMdef,5;
bonus3 bSubEle,Ele_Neutral,30,BF_SHORT;
bonus3 bSubEle,Ele_Water,30,BF_SHORT;
bonus3 bSubEle,Ele_Earth,30,BF_SHORT;
bonus3 bSubEle,Ele_Fire,30,BF_SHORT;
bonus3 bSubEle,Ele_Wind,30,BF_SHORT;
bonus3 bSubEle,Ele_Poison,30,BF_SHORT;
bonus3 bSubEle,Ele_Holy,30,BF_SHORT;
bonus3 bSubEle,Ele_Dark,30,BF_SHORT;
bonus3 bSubEle,Ele_Ghost,30,BF_SHORT;
bonus3 bSubEle,Ele_Undead,30,BF_SHORT;
bonus3 bSubEle,Ele_All,30,BF_WEAPON;
bonus bFlee,30;
skill "AL_TELEPORT",1;
bonus bUnbreakableGarment;

View File

@@ -4408,7 +4408,6 @@ Body:
TargetType: Ground
DamageFlags:
Splash: true
IgnoreFlee: true
Flags:
IsTrap: true
AlterRangeResearchTrap: true
@@ -6461,6 +6460,7 @@ Body:
TargetType: Attack
DamageFlags:
IgnoreAtkCard: true
IgnoreDefense: true
IgnoreFlee: true
Flags:
IgnoreAutoGuard: true
@@ -9641,7 +9641,7 @@ Body:
Hit: Single
HitCount: 1
Duration1: 300000
Duration2: 15000
Duration2: 10000
Requires:
SpCost: 200
Status: Berserk
@@ -10233,17 +10233,7 @@ Body:
Time: 55000
- Level: 5
Time: 60000
Duration2:
- Level: 1
Time: 20000
- Level: 2
Time: 30000
- Level: 3
Time: 40000
- Level: 4
Time: 50000
- Level: 5
Time: 60000
Duration2: 60000
Requires:
SpCost:
- Level: 1
@@ -13866,8 +13856,6 @@ Body:
Description: Chain Action
MaxLevel: 10
Type: Weapon
DamageFlags:
Critical: true
Range: -9
Hit: Multi_Hit
HitCount: 2
@@ -32467,9 +32455,9 @@ Body:
Hit: Single
HitCount: 1
Duration1: 300000
Duration2: 15000
Duration2: 10000
Requires:
SpCost: 100
SpCost: 200
Status: Berserk
- Id: 8207
Name: MA_DOUBLE
@@ -32648,7 +32636,6 @@ Body:
TargetType: Ground
DamageFlags:
Splash: true
IgnoreFlee: true
Flags:
IsTrap: true
AlterRangeResearchTrap: true
@@ -33068,9 +33055,10 @@ Body:
Type: Weapon
TargetType: Attack
Range: 1
Hit: Multi_Hit
HitCount: 3
Hit: Single
HitCount: 1
Element: Weapon
CastCancel: true
CastTime: 1000
AfterCastActDelay: 2000
Duration2: 5000

View File

@@ -532,3 +532,23 @@ Body:
Points: 4545
- Level: 250
Points: 4545
- Level: 251
Points: 4545
- Level: 252
Points: 4545
- Level: 253
Points: 4545
- Level: 254
Points: 4545
- Level: 255
Points: 4545
- Level: 256
Points: 4545
- Level: 257
Points: 4545
- Level: 258
Points: 4545
- Level: 259
Points: 4545
- Level: 260
Points: 4545

View File

@@ -162,6 +162,7 @@ Body:
- Status: Poison
DurationLookup: NPC_POISON
CalcFlags:
Def: true
Def2: true
Regen: true
Opt2:
@@ -252,6 +253,7 @@ Body:
- Status: Dpoison
DurationLookup: NPC_POISON
CalcFlags:
Def: true
Def2: true
Regen: true
Opt2:
@@ -1098,6 +1100,7 @@ Body:
Icon: EFST_GROUNDMAGIC
DurationLookup: SA_VOLCANO
CalcFlags:
Batk: true
Watk: true
Flags:
NoSave: true
@@ -1121,6 +1124,10 @@ Body:
NoClearance: true
- Status: Watk_Element
DurationLookup: MS_MAGNUM
Flags:
NoSave: true
EndOnStart:
Watk_Element: true
- Status: Armor
DurationLookup: NPC_DEFENDER
- Status: Armor_Element_Water
@@ -2712,6 +2719,7 @@ Body:
CalcFlags:
Flee: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2720,6 +2728,7 @@ Body:
CalcFlags:
Watk: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2728,6 +2737,7 @@ Body:
CalcFlags:
MaxHp: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2736,6 +2746,7 @@ Body:
CalcFlags:
MaxSp: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2744,6 +2755,7 @@ Body:
CalcFlags:
Hit: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true

View File

@@ -2049,21 +2049,21 @@ Body:
- Id: 200032
Group: Goal_Level
Name: The start of another adventure!
Condition: " BaseLevel == 100 "
Condition: " BaseLevel >= 100 "
Rewards:
Item: Rebeginer_Box_100
Score: 10
- Id: 200033
Group: Goal_Level
Name: With a new mind!(1)
Condition: " BaseLevel == 170 && (Class >= JOB_RUNE_KNIGHT && Class <= JOB_GUILLOTINE_CROSS_T) "
Condition: " BaseLevel >= 170 && (Class >= JOB_RUNE_KNIGHT && Class <= JOB_GUILLOTINE_CROSS_T) "
Rewards:
Item: Costume_Ticket
Score: 50
- Id: 200034
Group: Goal_Level
Name: With a new mind!(2)
Condition: " BaseLevel == 170 && (Class >= JOB_ROYAL_GUARD && Class <= JOB_SHADOW_CHASER_T) "
Condition: " BaseLevel >= 170 && (Class >= JOB_ROYAL_GUARD && Class <= JOB_SHADOW_CHASER_T) "
Rewards:
Item: Costume_Ticket
Score: 50

View File

@@ -35943,14 +35943,14 @@ Body:
bonus bVariableCastrate,-5;
- Combos:
- Combo:
- aegis_300457 # 300457
- Grey_Icewind_Card
- aegis_300455 # 300455
Script: |
.@r_shoes = getequiprefinerycnt(EQI_SHOES);
bonus2 bAddSize,Size_Large,10+3*(.@r_shoes/2);
- Combos:
- Combo:
- aegis_300458 # 300458
- Icewind_Card
- aegis_300455 # 300455
Script: |
.@r_shoes = getequiprefinerycnt(EQI_SHOES);
@@ -46814,7 +46814,8 @@ Body:
bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_WIND",2*.@sum;
bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_POISON",2*.@sum;
bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_GROUND",2*.@sum;
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0) {
.@class_ = geteleminfo(ELEMINFO_CLASS);
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0 && .@class_ >= 20816 && .@class_ <= 20820) {
bonus4 bAutoSpellOnSkill,"EM_DIAMOND_STORM","EM_ELEMENTAL_BUSTER",getskilllv("EM_ELEMENTAL_BUSTER"),1000;
}
}
@@ -46835,7 +46836,8 @@ Body:
bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_WIND",2*.@sum;
bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_POISON",2*.@sum;
bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_GROUND",2*.@sum;
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0 && geteleminfo(0) > 0) {
.@class_ = geteleminfo(ELEMINFO_CLASS);
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0 && .@class_ >= 20816 && .@class_ <= 20820) {
bonus4 bAutoSpellOnSkill,"EM_TERRA_DRIVE","EM_ELEMENTAL_BUSTER",getskilllv("EM_ELEMENTAL_BUSTER"),1000;
}
}
@@ -48064,3 +48066,651 @@ Body:
- Improve_Orb_Cri # 29539
Script: |
bonus2 bAddRace,RC_All,6;
- Combos:
- Combo:
- Signet_Of_Pow3 # 312984
- Star_Cluster_Of_Pow3 # 310676
Script: |
bonus2 bAddRace,RC_All,10;
bonus2 bAddRace,RC_Player_Human,-10;
bonus2 bAddRace,RC_Player_Doram,-10;
- Combos:
- Combo:
- Signet_Of_Pow4 # 312985
- Star_Cluster_Of_Pow3 # 310676
Script: |
bonus2 bAddRace,RC_All,15;
bonus2 bAddRace,RC_Player_Human,-15;
bonus2 bAddRace,RC_Player_Doram,-15;
- Combos:
- Combo:
- Signet_Of_Pow5 # 312986
- Star_Cluster_Of_Pow3 # 310676
Script: |
bonus2 bAddRace,RC_All,20;
bonus2 bAddRace,RC_Player_Human,-20;
bonus2 bAddRace,RC_Player_Doram,-20;
- Combos:
- Combo:
- Signet_Of_Con3 # 312989
- Star_Cluster_Of_Con3 # 310682
Script: |
bonus2 bAddRace,RC_All,10;
bonus2 bAddRace,RC_Player_Human,-10;
bonus2 bAddRace,RC_Player_Doram,-10;
- Combos:
- Combo:
- Signet_Of_Con4 # 312990
- Star_Cluster_Of_Con3 # 310682
Script: |
bonus2 bAddRace,RC_All,15;
bonus2 bAddRace,RC_Player_Human,-15;
bonus2 bAddRace,RC_Player_Doram,-15;
- Combos:
- Combo:
- Signet_Of_Con5 # 312991
- Star_Cluster_Of_Con3 # 310682
Script: |
bonus2 bAddRace,RC_All,20;
bonus2 bAddRace,RC_Player_Human,-20;
bonus2 bAddRace,RC_Player_Doram,-20;
- Combos:
- Combo:
- Signet_Of_Spl3 # 312994
- Star_Cluster_Of_Spl3 # 310688
Script: |
bonus2 bMagicAddRace,RC_All,10;
bonus2 bMagicAddRace,RC_Player_Human,-10;
bonus2 bMagicAddRace,RC_Player_Doram,-10;
- Combos:
- Combo:
- Signet_Of_Spl4 # 312995
- Star_Cluster_Of_Spl3 # 310688
Script: |
bonus2 bMagicAddRace,RC_All,15;
bonus2 bMagicAddRace,RC_Player_Human,-15;
bonus2 bMagicAddRace,RC_Player_Doram,-15;
- Combos:
- Combo:
- Signet_Of_Spl5 # 312996
- Star_Cluster_Of_Spl3 # 310688
Script: |
bonus2 bMagicAddRace,RC_All,20;
bonus2 bMagicAddRace,RC_Player_Human,-20;
bonus2 bMagicAddRace,RC_Player_Doram,-20;
- Combos:
- Combo:
- Signet_Of_Sta3 # 312999
- Star_Cluster_Of_Sta3 # 310679
Script: |
bonus bMaxHPrate,5;
- Combos:
- Combo:
- Signet_Of_Sta4 # 313000
- Star_Cluster_Of_Sta3 # 310679
Script: |
bonus bMaxHPrate,7;
- Combos:
- Combo:
- Signet_Of_Sta5 # 313001
- Star_Cluster_Of_Sta3 # 310679
Script: |
bonus bMaxHPrate,10;
- Combos:
- Combo:
- Signet_Of_Crt3 # 313004
- Star_Cluster_Of_Crt3 # 310685
Script: |
bonus2 bAddRace,RC_All,10;
bonus2 bAddRace,RC_Player_Human,-10;
bonus2 bAddRace,RC_Player_Doram,-10;
- Combos:
- Combo:
- Signet_Of_Crt4 # 313005
- Star_Cluster_Of_Crt3 # 310685
Script: |
bonus2 bAddRace,RC_All,15;
bonus2 bAddRace,RC_Player_Human,-15;
bonus2 bAddRace,RC_Player_Doram,-15;
- Combos:
- Combo:
- Signet_Of_Crt5 # 313006
- Star_Cluster_Of_Crt3 # 310685
Script: |
bonus2 bAddRace,RC_All,20;
bonus2 bAddRace,RC_Player_Human,-20;
bonus2 bAddRace,RC_Player_Doram,-20;
- Combos:
- Combo:
- Signet_Of_Wis3 # 313009
- Star_Cluster_Of_Wis3 # 310691
Script: |
bonus bMaxSPrate,5;
- Combos:
- Combo:
- Signet_Of_Wis4 # 313010
- Star_Cluster_Of_Wis3 # 310691
Script: |
bonus bMaxSPrate,7;
- Combos:
- Combo:
- Signet_Of_Wis5 # 313011
- Star_Cluster_Of_Wis3 # 310691
Script: |
bonus bMaxSPrate,10;
- Combos:
- Combo:
- Life_of_Spring_Pow # 313012
- Star_Armor_Of_Pow # 450169
Script: |
bonus2 bAddEle,Ele_All,2;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus2 bAddEle,Ele_All,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Life_of_Spring_Sta # 313013
- Star_Armor_Of_Sta # 450170
Script: |
.@r_armor = getequiprefinerycnt(EQI_ARMOR);
bonus bMaxHPrate,3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bMaxHPrate,(.@r_armor/2);
bonus bRes,20*(.@r_armor/2);
}
- Combos:
- Combo:
- Life_of_Spring_Crt # 313014
- Star_Suit_Of_Crt # 450172
Script: |
bonus bCritAtkRate,3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bCritAtkRate,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Life_of_Summer_Con # 313015
- Star_Suit_Of_Con # 450171
Script: |
bonus2 bAddEle,Ele_All,2;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus2 bAddEle,Ele_All,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Life_of_Summer_Sta # 313016
- Star_Armor_Of_Sta # 450170
Script: |
.@r_armor = getequiprefinerycnt(EQI_ARMOR);
bonus bMaxHPrate,3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bMaxHPrate,(.@r_armor/2);
bonus bRes,20*(.@r_armor/2);
}
- Combos:
- Combo:
- Life_of_Summer_Crt # 313017
- Star_Suit_Of_Crt # 450172
Script: |
bonus bCritAtkRate,3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bCritAtkRate,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Life_of_Autumn_Spl # 313018
- Star_Robe_Of_Spl # 450173
Script: |
bonus2 bMagicAddEle,Ele_All,2;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus2 bMagicAddEle,Ele_All,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Life_of_Autumn_Sta # 313019
- Star_Armor_Of_Sta # 450170
Script: |
.@r_armor = getequiprefinerycnt(EQI_ARMOR);
bonus bMaxHPrate,3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bMaxHPrate,(.@r_armor/2);
bonus bRes,20*(.@r_armor/2);
}
- Combos:
- Combo:
- Life_of_Autumn_Wis # 313020
- Star_Robe_Of_Wis # 450174
Script: |
.@r_armor = getequiprefinerycnt(EQI_ARMOR);
bonus bDelayrate,-3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bDelayrate,-2*(.@r_armor/2);
bonus bMaxSPrate,(.@r_armor/2);
}
- Combos:
- Combo:
- Life_of_Winter_Pow # 313021
- Star_Armor_Of_Pow # 450169
Script: |
bonus bCritAtkRate,3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bCritAtkRate,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Life_of_Winter_Con # 313022
- Star_Suit_Of_Con # 450171
Script: |
bonus bCritAtkRate,3;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus bCritAtkRate,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Life_of_Winter_Crt # 313023
- Star_Suit_Of_Crt # 450172
Script: |
bonus2 bAddEle,Ele_All,2;
if (getenchantgrade(EQI_ARMOR)>=ENCHANTGRADE_A) {
bonus2 bAddEle,Ele_All,3*(getequiprefinerycnt(EQI_ARMOR)/2);
}
- Combos:
- Combo:
- Star_Cluster_Of_Str1 # 313024
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,3;
bonus2 bAddClass,Class_Boss,3;
- Combos:
- Combo:
- Star_Cluster_Of_Str2 # 313025
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,6;
bonus2 bAddClass,Class_Boss,6;
- Combos:
- Combo:
- Star_Cluster_Of_Str3 # 313026
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,9;
bonus2 bAddClass,Class_Boss,9;
- Combos:
- Combo:
- Star_Cluster_Of_Str4 # 313027
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,12;
bonus2 bAddClass,Class_Boss,12;
- Combos:
- Combo:
- Star_Cluster_Of_Str5 # 313028
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,15;
bonus2 bAddClass,Class_Boss,15;
- Combos:
- Combo:
- Star_Cluster_Of_Luk1 # 313029
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,3;
bonus2 bAddClass,Class_Boss,3;
- Combos:
- Combo:
- Star_Cluster_Of_Luk2 # 313030
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,6;
bonus2 bAddClass,Class_Boss,6;
- Combos:
- Combo:
- Star_Cluster_Of_Luk3 # 313031
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,9;
bonus2 bAddClass,Class_Boss,9;
- Combos:
- Combo:
- Star_Cluster_Of_Luk4 # 313032
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,12;
bonus2 bAddClass,Class_Boss,12;
- Combos:
- Combo:
- Star_Cluster_Of_Luk5 # 313033
- Token_Of_Life # 312981
Script: |
bonus2 bAddClass,Class_Normal,15;
bonus2 bAddClass,Class_Boss,15;
- Combos:
- Combo:
- Star_Cluster_Of_Int1 # 313034
- Token_Of_Life # 312981
Script: |
bonus2 bMagicAddClass,Class_Normal,3;
bonus2 bMagicAddClass,Class_Boss,3;
- Combos:
- Combo:
- Star_Cluster_Of_Int2 # 313035
- Token_Of_Life # 312981
Script: |
bonus2 bMagicAddClass,Class_Normal,6;
bonus2 bMagicAddClass,Class_Boss,6;
- Combos:
- Combo:
- Star_Cluster_Of_Int3 # 313036
- Token_Of_Life # 312981
Script: |
bonus2 bMagicAddClass,Class_Normal,9;
bonus2 bMagicAddClass,Class_Boss,9;
- Combos:
- Combo:
- Star_Cluster_Of_Int4 # 313037
- Token_Of_Life # 312981
Script: |
bonus2 bMagicAddClass,Class_Normal,12;
bonus2 bMagicAddClass,Class_Boss,12;
- Combos:
- Combo:
- Star_Cluster_Of_Int5 # 313038
- Token_Of_Life # 312981
Script: |
bonus2 bMagicAddClass,Class_Normal,15;
bonus2 bMagicAddClass,Class_Boss,15;
- Combos:
- Combo:
- Star_Cluster_Of_Res1 # 313039
- Token_Of_Life # 312981
Script: |
bonus bMaxHPrate,1;
bonus bMaxSPrate,1;
- Combos:
- Combo:
- Star_Cluster_Of_Res2 # 313040
- Token_Of_Life # 312981
Script: |
bonus bMaxHPrate,2;
bonus bMaxSPrate,2;
- Combos:
- Combo:
- Star_Cluster_Of_Res3 # 313041
- Token_Of_Life # 312981
Script: |
bonus bMaxHPrate,3;
bonus bMaxSPrate,3;
- Combos:
- Combo:
- Star_Cluster_Of_Res4 # 313042
- Token_Of_Life # 312981
Script: |
bonus bMaxHPrate,4;
bonus bMaxSPrate,4;
- Combos:
- Combo:
- Star_Cluster_Of_Res5 # 313043
- Token_Of_Life # 312981
Script: |
bonus bMaxHPrate,5;
bonus bMaxSPrate,5;
- Combos:
- Combo:
- aegis_313059 # 313059
- Runeknight_Top3 # 310881
Script: |
bonus2 bAddSize,Size_All,3*(getskilllv("DK_TWOHANDDEF")/2);
- Combos:
- Combo:
- aegis_313059 # 313059
- Runeknight_Middle3 # 310882
Script: |
bonus2 bSkillAtk,"DK_HACKANDSLASHER",10;
- Combos:
- Combo:
- aegis_313059 # 313059
- Runeknight_Bottom3 # 310883
Script: |
bonus bCRate,3;
bonus2 bSkillAtk,"DK_STORMSLASH",15;
- Combos:
- Combo:
- aegis_313060 # 313060
- Royalguard_Top3 # 310887
Script: |
bonus2 bSkillAtk,"IG_CROSS_RAIN",15;
- Combos:
- Combo:
- aegis_313060 # 313060
- Royalguard_Middle3 # 310888
Script: |
bonus2 bMagicAddSize,Size_All,10;
- Combos:
- Combo:
- aegis_313060 # 313060
- Royalguard_Bottom3 # 310889
Script: |
bonus2 bMagicAddEle,Ele_All,3*(getskilllv("IG_SHIELD_MASTERY")/2);
- Combos:
- Combo:
- aegis_313061 # 313061
- aegis_311463 # 311463
Script: |
bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",10;
- Combos:
- Combo:
- aegis_313061 # 313061
- aegis_311464 # 311464
Script: |
bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",15;
- Combos:
- Combo:
- aegis_313061 # 313061
- aegis_311465 # 311465
Script: |
bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",10;
- Combos:
- Combo:
- FuriousCirclet_WH # 400608
- StormBow_Furious # 700100
Script: |
bonus2 bSkillAtk,"WH_GALESTORM",15;
- Combos:
- Combo:
- FuriousCirclet_WH # 400608
- TornadoBow_Furious # 700101
Script: |
bonus2 bSkillAtk,"WH_CRESCIVE_BOLT",15;
- Combos:
- Combo:
- FuriousCirclet_CD # 400609
- SaintBook_Furious # 540086
Script: |
bonus2 bSkillAtk,"CD_PETITIO",15;
- Combos:
- Combo:
- FuriousCirclet_CD # 400609
- SaintWand_Furious # 550141
Script: |
bonus2 bSkillAtk,"CD_FRAMEN",15;
- Combos:
- Combo:
- FuriousCirclet_SKE # 400610
- SunBook_Furious # 540087
Script: |
bonus2 bSkillAtk,"SKE_NOON_BLAST",15;
- Combos:
- Combo:
- FuriousCirclet_SKE # 400610
- MoonBook_Furious # 540088
Script: |
bonus2 bSkillAtk,"SKE_MIDNIGHT_KICK",15;
- Combos:
- Combo:
- Signet_Of_Spring # 490483
- Circul_Of_Life_Spring # 480349
Script: |
.@val = 5+3*(getequiprefinerycnt(EQI_GARMENT)/2);
bonus2 bAddRace,RC_All,.@val;
bonus2 bAddRace,RC_Player_Human,-.@val;
bonus2 bAddRace,RC_Player_Doram,-.@val;
bonus bDelayrate,-10;
- Combos:
- Combo:
- Signet_Of_Summer # 490484
- Circul_Of_Life_Summer # 480350
Script: |
.@val = 5+3*(getequiprefinerycnt(EQI_GARMENT)/2);
bonus2 bAddRace,RC_All,.@val;
bonus2 bAddRace,RC_Player_Human,-.@val;
bonus2 bAddRace,RC_Player_Doram,-.@val;
bonus bDelayrate,-10;
- Combos:
- Combo:
- Signet_Of_Autumn # 490485
- Circul_Of_Life_Autumn # 480351
Script: |
.@val = 5+3*(getequiprefinerycnt(EQI_GARMENT)/2);
bonus2 bMagicAddRace,RC_All,.@val;
bonus2 bMagicAddRace,RC_Player_Human,-.@val;
bonus2 bMagicAddRace,RC_Player_Doram,-.@val;
bonus bDelayrate,-10;
- Combos:
- Combo:
- Signet_Of_Winter # 490486
- Circul_Of_Life_Winter # 480352
Script: |
.@val = 5+3*(getequiprefinerycnt(EQI_GARMENT)/2);
bonus2 bAddRace,RC_All,.@val;
bonus2 bAddRace,RC_Player_Human,-.@val;
bonus2 bAddRace,RC_Player_Doram,-.@val;
bonus bDelayrate,-10;
- Combos:
- Combo:
- SaintBook_Furious # 540086
- FuriousBoots # 470265
Script: |
autobonus "{ .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,\"AB_DUPLELIGHT_MELEE\",(15*.@sum); bonus2 bSkillAtk,\"AB_DUPLELIGHT_MAGIC\",(15*.@sum); }",70,10000,BF_WEAPON;
- Combos:
- Combo:
- SunBook_Furious # 540087
- FuriousBoots # 470265
Script: |
bonus bDelayrate,-10;
- Combos:
- Combo:
- MoonBook_Furious # 540088
- FuriousBoots # 470265
Script: |
.@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES);
bonus2 bSkillAtk,"SKE_MIDNIGHT_KICK",15;
bonus2 bSkillAtk,"SKE_DAWN_BREAK",.@sum*2;
- Combos:
- Combo:
- SaintWand_Furious # 550141
- FuriousBoots # 470265
Script: |
.@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES);
bonus bDelayrate,-10;
bonus2 bSkillAtk,"CD_FRAMEN",.@sum;
- Combos:
- Combo:
- StormBow_Furious # 700100
- FuriousBoots # 470265
Script: |
bonus2 bSkillUseSP,"WH_GALESTORM",20;
- Combos:
- Combo:
- TornadoBow_Furious # 700101
- FuriousBoots # 470265
Script: |
bonus bDelayrate,-10;
- Combos:
- Combo:
- FuriousCirclet_DK # 400628
- Slayer_Furious # 600059
Script: |
bonus2 bSkillAtk,"DK_HACKANDSLASHER",15;
- Combos:
- Combo:
- FuriousCirclet_DK # 400628
- Trident_Furious # 630045
Script: |
bonus2 bSkillAtk,"DK_MADNESS_CRUSHER",15;
- Combos:
- Combo:
- FuriousCirclet_ABC # 400629
- Demonius_Furious # 510150
Script: |
bonus2 bSkillAtk,"ABC_DEFT_STAB",15;
- Combos:
- Combo:
- FuriousCirclet_ABC # 400629
- Demonsword_Furious # 510151
Script: |
bonus2 bSkillAtk,"ABC_ABYSS_SQUARE",15;
- Combos:
- Combo:
- FuriousCirclet_SH # 400630
- Foxtail_Furious # 550143
Script: |
bonus2 bSkillAtk,"SH_HOGOGONG_STRIKE",15;
- Combos:
- Combo:
- FuriousCirclet_SH # 400630
- Setaria_Furious # 550144
Script: |
bonus2 bSkillAtk,"SH_HYUN_ROKS_BREEZE",15;
- Combos:
- Combo:
- Demonius_Furious # 510150
- FuriousBoots # 470265
Script: |
.@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES);
bonus2 bSkillAtk,"ABC_DEFT_STAB",.@sum;
- Combos:
- Combo:
- Demonsword_Furious # 510151
- FuriousBoots # 470265
Script: |
.@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES);
bonus2 bSkillAtk,"ABC_ABYSS_SQUARE",.@sum;
- Combos:
- Combo:
- Foxtail_Furious # 550143
- FuriousBoots # 470265
Script: |
.@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES);
bonus2 bSkillAtk,"SH_HOGOGONG_STRIKE",.@sum;
- Combos:
- Combo:
- Setaria_Furious # 550144
- FuriousBoots # 470265
Script: |
.@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES);
bonus2 bSkillAtk,"SH_HYUN_ROKS_BREEZE",.@sum;
- Combos:
- Combo:
- Slayer_Furious # 600059
- FuriousBoots # 470265
Script: |
bonus2 bSkillAtk,"DK_HACKANDSLASHER",15;
- Combos:
- Combo:
- Trident_Furious # 630045
- FuriousBoots # 470265
Script: |
.@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES);
bonus2 bSkillAtk,"DK_MADNESS_CRUSHER",.@sum;
- Combos:
- Combo:
- IDTest_arrow # 1200000
- IDTest_bow # 700000
Script: |
bonus bDex,1;
- Combos:
- Combo:
- IDTest_ammo # 1230000
- IDTest_gun # 800000
Script: |
bonus bDex,1;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# Copyright(C) 2024 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
@@ -159,77 +159,153 @@ Body:
RentalHours: 1
- Group: 9
Items:
- Item: Red_Potion
Amount: 10
- Item: Red_Potion
Amount: 5
- Item: Red_Potion
- Item: Red_Potion
Amount: 3
RentalHours: 1
- Group: 10
Items:
- Item: Guard_
- Item: Guard_
- Item: Guard_
- Group: 11
Items:
- Item: Orange_Potion
Amount: 800
- Item: Boost_Armor_Box
- Item: Minus_Status_Box_
Groups:
- Group: 0
Items:
- Item: Atker_Plate
- Item: Atker_Manteau
- Item: Atker_Greave
- Item: Atker_Ring
- Item: Boost_Up_1
Amount: 3
- Item: Minus_Str
Amount: 6
- Group: 1
Items:
- Item: Ran_Suits
- Item: Ran_Manteau
- Item: Ran_Boots
- Item: Ran_Brooch
- Item: Boost_Up_1
Amount: 3
- Item: Minus_Agi
Amount: 6
- Group: 2
Items:
- Item: Ele_Robe
- Item: Ele_Muffler
- Item: Ele_Shoes
- Item: Ele_Earing
- Item: Boost_Up_1
Amount: 3
- Item: Minus_Vit
Amount: 6
- Group: 3
Items:
- Item: Defn_Robe
- Item: Defn_Muffler
- Item: Defn_Shoes
- Item: Defn_Earing
- Item: Boost_Up_1
Amount: 3
- Item: Special_Coin_Pack
- Item: Minus_Int
Amount: 6
- Group: 4
Items:
- Item: Minus_Dex
Amount: 6
- Group: 5
Items:
- Item: Minus_Luk
Amount: 6
- Group: 6
Items:
- Item: Minus_Str
- Item: Minus_Agi
- Item: Minus_Vit
- Item: Minus_Int
- Item: Minus_Dex
- Item: Minus_Luk
- Item: Alchemist_Box_
Groups:
- Group: 0
Items:
- Item: EP17_1_EVT39
Amount: 3
- Item: EP17_1_EVT02
Amount: 18
- Item: Fire_Bottle
Amount: 50
- Group: 1
Items:
- Item: BarMealTicket
Amount: 20
- Item: Acid_Bottle
Amount: 50
- Group: 2
Items:
- Item: Ep18_Amethyst_Fragment
Amount: 20
- Item: MenEater_Plant_Bottle
Amount: 50
- Group: 3
Items:
- Item: Ep19_Snow_Flower
Amount: 20
- Item: Coating_Bottle
Amount: 50
- Group: 4
Items:
- Item: Mini_Bottle
Amount: 50
- Item: FullPene_Select_Box
Groups:
- Group: 0
Items:
- Item: FullPene_Earring_Box
- Group: 1
Items:
- Item: FullPene_Pendant_Box
- Group: 2
Items:
- Item: FullPene_Armor_Box
- Group: 3
Items:
- Item: FullPene_Shoes_Box
- Item: FullTemp_Select_Box
Groups:
- Group: 0
Items:
- Item: FullTemp_Earring_Box
- Group: 1
Items:
- Item: FullTemp_Pendant_Box
- Group: 2
Items:
- Item: FullTemp_Armor_Box
- Group: 3
Items:
- Item: FullTemp_Shoes_Box
- Item: Durable_Select_Box
Groups:
- Group: 0
Items:
- Item: Durable_Weapon_Box
- Group: 1
Items:
- Item: Durable_Shield_Box
- Item: Clever_Select_Box
Groups:
- Group: 0
Items:
- Item: Clever_Weapon_Box
- Group: 1
Items:
- Item: Clever_Shield_Box
- Item: OS_Helm_Box_
Groups:
- Group: 0
Items:
- Item: Ignis_CapK
- Group: 1
Items:
- Item: Phantom_Cap
- Group: 2
Items:
- Item: Stripe_Hat
- Group: 3
Items:
- Item: Clock_Casket_RD
- Group: 4
Items:
- Item: Large_Sorcerer_Crown
- Group: 5
Items:
- Item: Scorpio_Diadem_K
- Group: 6
Items:
- Item: Sagittarius_DiademK
- Item: Shadow_R_M_Box_
Groups:
- Group: 0
Items:
- Item: Class_Sha_R_M_Melee
- Group: 1
Items:
- Item: Class_Sha_R_M_Magic
- Group: 2
Items:
- Item: Skill_Sha_R_M_Melee
- Group: 3
Items:
- Item: Skill_Sha_R_M_Magic
- Item: Metal_W_Box
Groups:
- Group: 0
@@ -326,206 +402,581 @@ Body:
- Group: 3
Items:
- Item: C_School_Bag_PU
- Item: aegis_101470
- Item: Special_Coin_Pack
Groups:
- Group: 0
Items:
- Item: Minus_Str
Amount: 6
- Item: EP17_1_EVT39
Amount: 3
- Item: EP17_1_EVT02
Amount: 18
- Group: 1
Items:
- Item: Minus_Agi
Amount: 6
- Item: BarMealTicket
Amount: 20
- Group: 2
Items:
- Item: Minus_Vit
Amount: 6
- Item: Ep18_Amethyst_Fragment
Amount: 20
- Group: 3
Items:
- Item: Minus_Int
Amount: 6
- Item: Ep19_Snow_Flower
Amount: 20
- Item: Boost_Armor_Box
Groups:
- Group: 0
Items:
- Item: Atker_Plate
- Item: Atker_Manteau
- Item: Atker_Greave
- Item: Atker_Ring
- Item: Boost_Up_1
Amount: 3
- Group: 1
Items:
- Item: Ran_Suits
- Item: Ran_Manteau
- Item: Ran_Boots
- Item: Ran_Brooch
- Item: Boost_Up_1
Amount: 3
- Group: 2
Items:
- Item: Ele_Robe
- Item: Ele_Muffler
- Item: Ele_Shoes
- Item: Ele_Earing
- Item: Boost_Up_1
Amount: 3
- Group: 3
Items:
- Item: Defn_Robe
- Item: Defn_Muffler
- Item: Defn_Shoes
- Item: Defn_Earing
- Item: Boost_Up_1
Amount: 3
- Item: AllMighty_Select_Box
Groups:
- Group: 0
Items:
- Item: AllMighty_Earring_Box
- Group: 1
Items:
- Item: AllMighty_Pendant_Box
- Item: TrueGem_Select_Box
Groups:
- Group: 0
Items:
- Item: TrueGem_Earring_Box
- Group: 1
Items:
- Item: TrueGem_Pendant_Box
- Group: 2
Items:
- Item: TrueGem_Shoes_Box
- Group: 3
Items:
- Item: TrueGem_Armor_Box
- Item: PerfectSize_Select_Box
Groups:
- Group: 0
Items:
- Item: PerfectSize_Weapon_Box
- Group: 1
Items:
- Item: PerfectSize_Armor_Box
- Item: Mammoth_Select_Box
Groups:
- Group: 0
Items:
- Item: Mammoth_Earring_Box
- Group: 1
Items:
- Item: Mammoth_Pendant_Box
- Group: 2
Items:
- Item: Mammoth_Armor_Box
- Group: 3
Items:
- Item: Mammoth_Shoes_Box
- Item: SpellCaster_Select_Box
Groups:
- Group: 0
Items:
- Item: SpellCaster_Earring_Box
- Group: 1
Items:
- Item: SpellCaster_Pendant_Box
- Group: 2
Items:
- Item: SpellCaster_Armor_Box
- Group: 3
Items:
- Item: SpellCaster_Shoes_Box
- Item: Absorb_Select_Box
Groups:
- Group: 0
Items:
- Item: Absorb_Weapon_Box
- Group: 1
Items:
- Item: Absorb_Shield_Box
- Item: R_Bearers_Select_Box
Groups:
- Group: 0
Items:
- Item: R_Bearers_Earring_Box
- Group: 1
Items:
- Item: R_Bearers_Pendant_Box
- Group: 2
Items:
- Item: R_Bearers_Armor_Box
- Group: 3
Items:
- Item: R_Bearers_Shoes_Box
- Item: Hasty_Select_Box
Groups:
- Group: 0
Items:
- Item: Hasty_Weapon_Box
- Group: 1
Items:
- Item: Hasty_Shield_Box
- Item: MAutoSpell_Select_Box
Groups:
- Group: 0
Items:
- Item: MAutoSpell_Earring_Box
- Group: 1
Items:
- Item: MAutoSpell_Pendant_Box
- Group: 2
Items:
- Item: MAutoSpell_Armor_Box
- Group: 3
Items:
- Item: MAutoSpell_Shoes_Box
- Item: Infinity_Select_Box
Groups:
- Group: 0
Items:
- Item: Infinity_Weapon_Box
- Group: 1
Items:
- Item: Infinity_Shield_Box
- Item: EXP_Select_Box
Groups:
- Group: 0
Items:
- Item: EXP_Weapon_Box
- Group: 1
Items:
- Item: EXP_Shield_Box
- Item: M_Blitz_Select_Box
Groups:
- Group: 0
Items:
- Item: M_Blitz_Weapon_Box
- Group: 1
Items:
- Item: M_Blitz_Shield_Box
- Item: GoodnEvil_Circlet_Box
Groups:
- Group: 0
Items:
- Item: GoodnEvil_Circlet_NW
- Group: 1
Items:
- Item: GoodnEvil_Circlet_NW2
- Group: 2
Items:
- Item: GoodnEvil_Circlet_NW3
- Group: 3
Items:
- Item: GoodnEvil_Circlet_NW4
- Group: 4
Items:
- Item: Minus_Dex
Amount: 6
- Item: GoodnEvil_Circlet_NW5
- Item: Hero_Weapon_Up_S_Box
Groups:
- Group: 0
Items:
- Item: Hero_Weapon_Up_Box_1
- Group: 1
Items:
- Item: Hero_Weapon_Up_Box_2
- Group: 2
Items:
- Item: Hero_Weapon_Up_Box_3
- Group: 3
Items:
- Item: Hero_Weapon_Up_Box_4
- Group: 4
Items:
- Item: Hero_Weapon_Up_Box_5
- Group: 5
Items:
- Item: Minus_Luk
Amount: 6
- Group: 6
Items:
- Item: Minus_Str
- Item: Minus_Agi
- Item: Minus_Vit
- Item: Minus_Int
- Item: Minus_Dex
- Item: Minus_Luk
- Item: aegis_101471
- Item: Hero_Weapon_Up_Box_6
- Item: Hero_Weapon_Hammer_S
Groups:
- Group: 0
Items:
- Item: Fire_Bottle
Amount: 50
- Item: Hero_Weapon_Hammer_1
- Group: 1
Items:
- Item: Acid_Bottle
Amount: 50
- Item: Hero_Weapon_Hammer_2
- Group: 2
Items:
- Item: MenEater_Plant_Bottle
Amount: 50
- Item: Hero_Weapon_Hammer_3
- Group: 3
Items:
- Item: Coating_Bottle
Amount: 50
- Item: Hero_Weapon_Hammer_4
- Group: 4
Items:
- Item: Mini_Bottle
Amount: 50
- Item: aegis_101542
Groups:
- Group: 0
Items:
- Item: aegis_101543
- Group: 1
Items:
- Item: aegis_101544
- Group: 2
Items:
- Item: aegis_101545
- Group: 3
Items:
- Item: aegis_101546
- Item: aegis_101547
Groups:
- Group: 0
Items:
- Item: aegis_101548
- Group: 1
Items:
- Item: aegis_101549
- Group: 2
Items:
- Item: aegis_101550
- Group: 3
Items:
- Item: aegis_101551
- Item: aegis_101552
Groups:
- Group: 0
Items:
- Item: aegis_101553
- Group: 1
Items:
- Item: aegis_101554
- Item: aegis_101555
Groups:
- Group: 0
Items:
- Item: aegis_101556
- Group: 1
Items:
- Item: aegis_101557
- Item: aegis_101563
Groups:
- Group: 0
Items:
- Item: Ignis_CapK
- Group: 1
Items:
- Item: Phantom_Cap
- Group: 2
Items:
- Item: Stripe_Hat
- Group: 3
Items:
- Item: Clock_Casket_RD
- Group: 4
Items:
- Item: Large_Sorcerer_Crown
- Item: Hero_Weapon_Hammer_5
- Group: 5
Items:
- Item: Scorpio_Diadem_K
- Group: 6
Items:
- Item: Sagittarius_DiademK
- Item: aegis_101565
- Item: Hero_Weapon_Hammer_6
- Item: aegis_102215
Groups:
- Group: 0
Items:
- Item: Class_Sha_R_M_Melee
- Item: Bio_Weapon_Refine_Cube
- Group: 1
Items:
- Item: Class_Sha_R_M_Magic
- Item: Old_Refine_Cube
- Group: 2
Items:
- Item: Skill_Sha_R_M_Melee
- Group: 3
Items:
- Item: Skill_Sha_R_M_Magic
- Item: aegis_101654
- Item: Geffen_Refine_Cube
- Item: aegis_102216
Groups:
- Group: 0
Items:
- Item: aegis_101655
- Item: Bio_Helm_Refine_Cube
- Group: 1
Items:
- Item: aegis_101656
- Item: aegis_101657
Groups:
- Group: 0
Items:
- Item: aegis_101658
- Group: 1
Items:
- Item: aegis_101659
- Item: Circlet_Refine_Cube
- Group: 2
Items:
- Item: aegis_101660
- Item: Auto_Armor_Refine_Cube
- Group: 3
Items:
- Item: aegis_101661
- Item: aegis_101662
- Item: Racecap_Refine_Cube
- Group: 4
Items:
- Item: OS_Weapon_Refine_Cube
- Group: 5
Items:
- Item: Temporal_Refine_Cube
- Item: Hero_Weapon_S_Box_1
Groups:
- Group: 0
Items:
- Item: aegis_101663
- Item: Royal_Bow_K
Refine: 11
- Group: 1
Items:
- Item: aegis_101664
- Item: aegis_101727
Groups:
- Group: 0
Items:
- Item: aegis_101717
- Group: 1
Items:
- Item: aegis_101718
- Item: Shadow_Staff_K
Refine: 11
- Group: 2
Items:
- Item: aegis_101719
- Item: Iron_Nail_K
Refine: 11
- Group: 3
Items:
- Item: aegis_101720
- Item: aegis_101728
- Item: Blue_Crystal_Staff
Refine: 11
- Group: 4
Items:
- Item: Freezing_Rod
Refine: 11
- Group: 5
Items:
- Item: Ancient_Hero_Boots
Refine: 11
- Item: Hero_Weapon_S_Box_2
Groups:
- Group: 0
Items:
- Item: aegis_101721
- Item: Sword_Of_Bluefire
Refine: 11
- Group: 1
Items:
- Item: aegis_101722
- Item: Iron_Staff
Refine: 11
- Group: 2
Items:
- Item: aegis_101723
- Item: Oriental_Sword
Refine: 11
- Group: 3
Items:
- Item: aegis_101724
- Item: aegis_101729
- Item: Fog_Dew_Sword
Refine: 11
- Group: 4
Items:
- Item: Sharp_Wind_Sword
Refine: 11
- Group: 5
Items:
- Item: Humma_Clear
Refine: 11
- Item: Hero_Weapon_S_Box_3
Groups:
- Group: 0
Items:
- Item: aegis_101725
- Item: Narcis_Bow
Refine: 11
- Group: 1
Items:
- Item: aegis_101726
- Item: Magic_Sword
Refine: 11
- Group: 2
Items:
- Item: Avenger
Refine: 11
- Group: 3
Items:
- Item: Undine_Spear_K
Refine: 11
- Group: 4
Items:
- Item: Demon_Hunting_Bible_K
Refine: 11
- Group: 5
Items:
- Item: Shiver_Katar_K
Refine: 11
- Item: Hero_Weapon_S_Box_4
Groups:
- Group: 0
Items:
- Item: OneSkyOneSun
Refine: 11
- Group: 1
Items:
- Item: SoulWeight
Refine: 11
- Group: 2
Items:
- Item: MeawFoxtail
Refine: 11
- Group: 3
Items:
- Item: Freedom_Stick
Refine: 11
- Group: 4
Items:
- Item: Blessed_Knife
Refine: 11
- Item: Hero_Weapon_S_Box_5
Groups:
- Group: 0
Items:
- Item: Dragonic_Slayer
Refine: 11
- Group: 1
Items:
- Item: Light_Blade
Refine: 11
- Group: 2
Items:
- Item: Slate_Sword
Refine: 11
- Group: 3
Items:
- Item: Trumpet_Shell_K
Refine: 11
- Group: 4
Items:
- Item: Barb_Wire_K
Refine: 11
- Group: 5
Items:
- Item: Meteor_Striker
Refine: 11
- Item: Hero_Weapon_S_Box_6
Groups:
- Group: 0
Items:
- Item: Saint_Hall
Refine: 11
- Group: 1
Items:
- Item: Ray_Knuckle
Refine: 11
- Group: 2
Items:
- Item: Blade_Katar
Refine: 11
- Group: 3
Items:
- Item: Fatalist
Refine: 11
- Group: 4
Items:
- Item: Scalet_Dragon_L_Bow
Refine: 11
- Item: Hero_Weapon_S_Box_7
Groups:
- Group: 0
Items:
- Item: Crimson_Rose
Refine: 11
- Group: 1
Items:
- Item: Master_Soul_Rifle
Refine: 11
- Group: 2
Items:
- Item: Demon_S_Shot
Refine: 11
- Group: 3
Items:
- Item: Golden_L_Launcher
Refine: 11
- Group: 4
Items:
- Item: The_Black_Gatling
Refine: 11
- Item: 2023_Spring_Select
Groups:
- Group: 0
Items:
- Item: C_Lop_Bunny_Cloak
- Group: 1
Items:
- Item: C_Heart_Chiffon_Rabbit
- Group: 2
Items:
- Item: C_Teaparty_Wonderland
- Group: 3
Items:
- Item: C_Chocolat_Rabbit_Hair
- Item: RO_Concert_Scroll2
Groups:
- Group: 0
Items:
- Item: C_Headset_OST
- Group: 1
Items:
- Item: C_Music_Decoration
- Group: 2
Items:
- Item: C_Whistle
- Item: 21th_Costume_Select
Groups:
- Group: 0
Items:
- Item: C_Ocean_Color_Long
- Group: 1
Items:
- Item: C_Aqua_Fin_Decoration
- Group: 2
Items:
- Item: C_Sailor_Cap
- Item: Cinnamon_Costume_Box
Groups:
- Group: 0
Items:
- Item: C_Cinnamon2
- Group: 1
Items:
- Item: C_Cinnamon
- Group: 2
Items:
- Item: C_JP_EV16
- Group: 3
Items:
- Item: C_JP_EV17
- Item: IsgardCrown_Box
Groups:
- Group: 0
Items:
- Item: Glacier_Helm_1
- Group: 1
Items:
- Item: Glacier_Helm_2
- Group: 2
Items:
- Item: Glacier_Helm_3
- Item: AceCard_Box
Groups:
- Group: 0
Items:
- Item: Heart_Ace_Melee
- Group: 1
Items:
- Item: Spade_Ace_Melee
- Group: 2
Items:
- Item: Diamond_Ace_Range
- Group: 3
Items:
- Item: Clover_Ace_Defense
- Item: Loki_Coin_Box
Groups:
- Group: 0
Items:
- Item: Loki_Coin
Amount: 10
- Group: 1
Items:
- Item: Loki_Coin_2
Amount: 10
- Group: 2
Items:
- Item: Loki_Coin_3
Amount: 10
- Group: 3
Items:
- Item: Loki_Coin_4
Amount: 10
- Item: Loki_Advice_Box
Groups:
- Group: 0
Items:
- Item: Loki_Advice
Amount: 10
- Group: 1
Items:
- Item: Loki_Advice_2
Amount: 10
- Group: 2
Items:
- Item: Loki_Advice_3
Amount: 10
- Group: 3
Items:
- Item: Loki_Advice_4
Amount: 10
- Item: 2023_Xmas_Costume
Groups:
- Group: 0
Items:
- Item: C_SnowmanHat
- Group: 1
Items:
- Item: C_WinterNightBells
- Group: 2
Items:
- Item: C_SantaTeddyBear
- Item: 10AllMighty_Select_Box
Groups:
- Group: 0
Items:
- Item: S_AllMighty_Earring
Refine: 10
- Group: 1
Items:
- Item: S_AllMighty_Pendant
Refine: 10
- Item: Sonic_Costume_Pack
Groups:
- Group: 0
Items:
- Item: C_Super_Sonic_Mini
- Group: 1
Items:
- Item: C_Chaos_Emerald

View File

@@ -15318,3 +15318,663 @@ Body:
MinValue: 1
MaxValue: 7
Chance: 400
- Id: 168
Group: PONTIFEX_COURAGE
Slots:
- Slot: 1
Options:
- Option: VAR_MAXHPAMOUNT
MinValue: 200
MaxValue: 1000
Chance: 10000
- Option: VAR_MAXSPAMOUNT
MinValue: 50
MaxValue: 250
Chance: 10000
- Option: VAR_ATKPERCENT
MinValue: 1
MaxValue: 5
Chance: 10000
- Option: VAR_ATTPOWER
MinValue: 10
MaxValue: 50
Chance: 10000
- Option: VAR_ITEMDEFPOWER
MinValue: 10
MaxValue: 50
Chance: 10000
- Option: VAR_AVOIDSUCCESSVALUE
MinValue: 5
MaxValue: 25
Chance: 10000
- Option: VAR_HITSUCCESSVALUE
MinValue: 5
MaxValue: 25
Chance: 10000
- Option: RACE_DAMAGE_HUMAN
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_ANIMAL
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_DEVIL
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_DRAGON
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_PLANT
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_NOTHING
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_ANGEL
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_UNDEAD
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_INSECT
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_DAMAGE_FISHS
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RANGE_ATTACK_DAMAGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: MELEE_ATTACK_DAMAGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_CRI_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 3
Chance: 10000
- Slot: 2
Options:
- Option: DAMAGE_PROPERTY_FIRE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_PROPERTY_SAINT_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_PROPERTY_DARKNESS_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_PROPERTY_POISON_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_PROPERTY_NOTHING_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_PROPERTY_UNDEAD_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: RANGE_ATTACK_DAMAGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: MELEE_ATTACK_DAMAGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_CRI_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_SIZE_SMALL_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_SIZE_MIDIUM_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_SIZE_LARGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 3
Chance: 10000
- Id: 169
Group: PONTIFEX_WISDOM
Slots:
- Slot: 1
Options:
- Option: VAR_MAXHPAMOUNT
MinValue: 200
MaxValue: 1000
Chance: 10000
- Option: VAR_MAXSPAMOUNT
MinValue: 50
MaxValue: 250
Chance: 10000
- Option: VAR_MAGICATKPERCENT
MinValue: 1
MaxValue: 5
Chance: 10000
- Option: VAR_ATTMPOWER
MinValue: 10
MaxValue: 50
Chance: 10000
- Option: VAR_ITEMDEFPOWER
MinValue: 10
MaxValue: 50
Chance: 10000
- Option: VAR_AVOIDSUCCESSVALUE
MinValue: 5
MaxValue: 25
Chance: 10000
- Option: DEC_SPELL_CAST_TIME
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: RACE_MDAMAGE_HUMAN
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_ANIMAL
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_DEVIL
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_DRAGON
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_PLANT
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_NOTHING
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_ANGEL
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_UNDEAD
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_INSECT
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_FISHS
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_WATER
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_WIND
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_GROUND
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_FIRE
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_SAINT
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_DARKNESS
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_POISON
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_NOTHING
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_TELEKINESIS
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 3
Chance: 10000
- Slot: 2
Options:
- Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_WATER
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_WIND
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_GROUND
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_FIRE
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_SAINT
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_DARKNESS
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_POISON
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_NOTHING
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: ADDSKILLMDAMAGE_TELEKINESIS
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: MDAMAGE_SIZE_SMALL_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: MDAMAGE_SIZE_MIDIUM_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: MDAMAGE_SIZE_LARGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 3
Chance: 10000
- Id: 170
Group: PONTIFEX_TENACITY
Slots:
- Slot: 1
Options:
- Option: VAR_MAXHPAMOUNT
MinValue: 250
MaxValue: 1250
Chance: 10000
- Option: VAR_MAXSPAMOUNT
MinValue: 75
MaxValue: 375
Chance: 10000
- Option: VAR_ATKPERCENT
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: VAR_ATTPOWER
MinValue: 12
MaxValue: 60
Chance: 10000
- Option: VAR_ITEMDEFPOWER
MinValue: 12
MaxValue: 60
Chance: 10000
- Option: VAR_AVOIDSUCCESSVALUE
MinValue: 6
MaxValue: 30
Chance: 10000
- Option: VAR_HITSUCCESSVALUE
MinValue: 6
MaxValue: 30
Chance: 10000
- Option: RACE_DAMAGE_HUMAN
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_ANIMAL
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_DEVIL
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_DRAGON
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_PLANT
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_NOTHING
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_ANGEL
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_UNDEAD
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_INSECT
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_DAMAGE_FISHS
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RANGE_ATTACK_DAMAGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: MELEE_ATTACK_DAMAGE_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DAMAGE_CRI_TARGET
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 5
Chance: 10000
- Slot: 2
Options:
- Option: DAMAGE_PROPERTY_WATER_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_WIND_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_GROUND_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_FIRE_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_SAINT_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_DARKNESS_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_POISON_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_NOTHING_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_PROPERTY_UNDEAD_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RANGE_ATTACK_DAMAGE_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: MELEE_ATTACK_DAMAGE_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_CRI_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_SIZE_SMALL_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_SIZE_MIDIUM_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DAMAGE_SIZE_LARGE_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 5
Chance: 10000
- Id: 171
Group: PONTIFEX_BELIEF
Slots:
- Slot: 1
Options:
- Option: VAR_MAXHPAMOUNT
MinValue: 250
MaxValue: 1250
Chance: 10000
- Option: VAR_MAXSPAMOUNT
MinValue: 75
MaxValue: 375
Chance: 10000
- Option: VAR_MAGICATKPERCENT
MinValue: 2
MaxValue: 10
Chance: 10000
- Option: VAR_ATTMPOWER
MinValue: 12
MaxValue: 60
Chance: 10000
- Option: VAR_ITEMDEFPOWER
MinValue: 12
MaxValue: 60
Chance: 10000
- Option: VAR_AVOIDSUCCESSVALUE
MinValue: 6
MaxValue: 30
Chance: 10000
- Option: DEC_SPELL_CAST_TIME
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: RACE_MDAMAGE_HUMAN
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_ANIMAL
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_DEVIL
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_DRAGON
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_PLANT
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_NOTHING
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_ANGEL
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_UNDEAD
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_INSECT
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: RACE_MDAMAGE_FISHS
MinValue: 4
MaxValue: 20
Chance: 10000
- Option: ADDSKILLMDAMAGE_WATER
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_WIND
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_GROUND
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_FIRE
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_SAINT
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_DARKNESS
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_POISON
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_NOTHING
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_TELEKINESIS
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 5
Chance: 10000
- Slot: 2
Options:
- Option: MDAMAGE_PROPERTY_POISON_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: MDAMAGE_PROPERTY_NOTHING_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_WATER
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_WIND
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_GROUND
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_FIRE
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_SAINT
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_DARKNESS
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_POISON
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_NOTHING
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: ADDSKILLMDAMAGE_TELEKINESIS
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: MDAMAGE_SIZE_SMALL_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: MDAMAGE_SIZE_MIDIUM_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: MDAMAGE_SIZE_LARGE_TARGET
MinValue: 3
MaxValue: 15
Chance: 10000
- Option: DEC_SPELL_DELAY_TIME
MinValue: 1
MaxValue: 5
Chance: 10000

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8884,6 +8884,15 @@ Body:
- Level: 50
Vit: 1
Pow: 1
- Level: 51
Crt: 1
- Level: 52
Pow: 1
- Level: 54
Pow: 1
Crt: 1
- Level: 55
Sta: 1
- Jobs:
Meister: true
Meister2: true
@@ -9017,6 +9026,15 @@ Body:
- Level: 50
Pow: 1
Wis: 1
- Level: 51
Pow: 1
- Level: 52
Con: 1
- Level: 53
Sta: 1
Wis: 1
- Level: 55
Pow: 1
- Jobs:
Shadow_Cross: true
MaxWeight: 32000
@@ -9149,6 +9167,15 @@ Body:
- Level: 50
Pow: 1
Crt: 1
- Level: 51
Pow: 1
- Level: 53
Con: 1
- Level: 54
Sta: 1
Crt: 1
- Level: 55
Crt: 1
- Jobs:
Arch_Mage: true
MaxWeight: 30000
@@ -9281,6 +9308,15 @@ Body:
- Level: 50
Sta: 1
Wis: 1
- Level: 52
Spl: 1
- Level: 53
Con: 1
- Level: 54
Sta: 1
Wis: 1
- Level: 55
Spl: 1
- Jobs:
Cardinal: true
MaxWeight: 30000
@@ -9413,6 +9449,16 @@ Body:
- Level: 50
Spl: 1
Crt: 1
- Level: 51
Spl: 1
- Level: 52
Pow: 1
- Level: 53
Sta: 1
- Level: 54
Wis: 1
- Level: 55
Crt: 1
- Jobs:
Windhawk: true
Windhawk2: true
@@ -9546,6 +9592,15 @@ Body:
- Level: 50
Dex: 1
Con: 1
- Level: 51
Con: 1
- Level: 52
Pow: 1
Con: 1
- Level: 53
Sta: 1
- Level: 55
Pow: 1
- Jobs:
Imperial_Guard: true
Imperial_Guard2: true
@@ -9680,6 +9735,15 @@ Body:
- Level: 50
Pow: 1
Sta: 1
- Level: 51
Pow: 1
- Level: 52
Sta: 1
- Level: 53
Sta: 1
- Level: 55
Wis: 1
Con: 1
- Jobs:
Biolo: true
MaxWeight: 32000
@@ -9812,6 +9876,15 @@ Body:
- Level: 50
Str: 1
Crt: 1
- Level: 51
Crt: 1
- Level: 52
Sta: 1
- Level: 53
Pow: 1
Crt: 1
- Level: 55
Con: 1
- Jobs:
Abyss_Chaser: true
MaxWeight: 28000
@@ -9944,6 +10017,15 @@ Body:
- Level: 50
Pow: 1
Spl: 1
- Level: 51
Pow: 1
- Level: 52
Crt: 1
- Level: 54
Sta: 1
- Level: 55
Sta: 1
Con: 1
- Jobs:
Elemental_Master: true
MaxWeight: 30000
@@ -10076,6 +10158,16 @@ Body:
- Level: 50
Wis: 1
Spl: 1
- Level: 51
Spl: 1
- Level: 52
Sta: 1
- Level: 53
Sta: 1
- Level: 54
Wis: 1
- Level: 55
Spl: 1
- Jobs:
Inquisitor: true
MaxWeight: 30000
@@ -10208,6 +10300,15 @@ Body:
- Level: 50
Pow: 1
Wis: 1
- Level: 51
Pow: 1
- Level: 52
Sta: 1
- Level: 53
Sta: 1
- Level: 55
Pow: 1
Wis: 1
- Jobs:
Troubadour: true
MaxWeight: 32000
@@ -10340,6 +10441,15 @@ Body:
Con: 1
- Level: 50
Dex: 1
- Level: 51
Con: 1
- Level: 52
Spl: 1
- Level: 53
Sta: 1
- Level: 55
Pow: 1
Con: 1
- Jobs:
Trouvere: true
MaxWeight: 32000
@@ -10473,6 +10583,15 @@ Body:
Con: 1
- Level: 50
Agi: 1
- Level: 51
Con: 1
- Level: 52
Sta: 1
- Level: 53
Spl: 1
- Level: 55
Pow: 1
Con: 1
- Jobs:
Sky_Emperor: true
MaxWeight: 42000
@@ -10607,6 +10726,14 @@ Body:
- Level: 50
Pow: 1
Crt: 1
- Level: 51
Sta: 1
Con: 1
- Level: 53
Sta: 1
- Level: 55
Pow: 1
Con: 1
- Jobs:
Soul_Ascetic: true
MaxWeight: 42000
@@ -10730,6 +10857,16 @@ Body:
- Level: 50
Wis: 1
Spl: 1
- Level: 51
Spl: 1
- Level: 52
Con: 1
- Level: 53
Wis: 1
- Level: 54
Sta: 1
- Level: 55
Spl: 1
- Jobs:
Shinkiro: true
MaxWeight: 45000
@@ -10863,6 +11000,16 @@ Body:
- Level: 50
Pow: 1
Crt: 1
- Level: 51
Crt: 1
- Level: 52
Con: 1
- Level: 53
Wis: 1
- Level: 54
Sta: 1
- Level: 55
Sta: 1
- Jobs:
Shiranui: true
MaxWeight: 45000
@@ -10985,6 +11132,15 @@ Body:
- Level: 50
Wis: 1
Spl: 1
- Level: 51
Pow: 1
- Level: 52
Spl: 1
- Level: 54
Spl: 1
- Level: 55
Spl: 1
Con: 1
- Jobs:
Night_Watch: true
MaxWeight: 48000
@@ -11112,6 +11268,15 @@ Body:
Con: 1
- Level: 50
Pow: 1
- Level: 51
Con: 1
- Level: 53
Pow: 1
Con: 1
- Level: 54
Wis: 1
- Level: 55
Pow: 1
- Jobs:
Hyper_Novice: true
MaxWeight: 40000
@@ -11248,6 +11413,15 @@ Body:
- Level: 50
Agi: 1
Dex: 1
- Level: 51
Con: 1
- Level: 52
Pow: 1
Con: 1
- Level: 53
Sta: 1
- Level: 55
Spl: 1
- Jobs:
Spirit_Handler: true
MaxWeight: 42000
@@ -11379,3 +11553,13 @@ Body:
Crt: 1
- Level: 50
Pow: 1
- Level: 51
Con: 1
- Level: 52
Pow: 1
- Level: 53
Spl: 1
- Level: 54
Wis: 1
- Level: 55
Sta: 1

View File

@@ -4727,170 +4727,174 @@ Body:
- Item: Gray_W_Muffler
- Item: Gray_W_Boots
- Item: Gray_W_Shoes
# - Item: Pontifex_Courage
# TargetItems:
# - Item: Adulter_F_T_Sword
# - Item: Adulter_F_Cakram
# - Item: Adulter_F_Katar
# - Item: Adulter_F_Lance
# - Item: Adulter_F_T_Staff
# - Item: Adulter_F_Rod
# - Item: Adulter_F_Humma
# - Item: Adulter_F_C_Humma
# - Item: Adulter_F_C_Bow
# - Item: Adulter_F_Ballista
# - Item: Adulter_F_A_Bow
# - Item: Adulter_F_Revolver
# - Item: Adulter_F_Rifle
# - Item: Adulter_F_Shotgun
# - Item: Adulter_F_Gatling
# - Item: Adulter_F_Launcher
# - Item: Adulter_F_G_Sword
# - Item: Adulter_F_Lapier
# - Item: Adulter_F_Dagger
# - Item: Adulter_F_Axe
# - Item: Adulter_F_G_Spear
# - Item: Adulter_F_M_Book
# - Item: Adulter_F_P_Book
# - Item: Adulter_F_Bible
# - Item: Adulter_F_Moon_B
# - Item: Adulter_F_Star_B
# - Item: Adulter_F_Wand
# - Item: Adulter_F_S_Stick
# - Item: Adulter_F_D_Wand
# - Item: Adulter_F_F_Wand
# - Item: Adulter_F_F_model
# - Item: Adulter_F_Knuckle
# - Item: Adulter_F_Claw
# - Item: Adulter_F_Violin
# - Item: Adulter_F_Harp
# - Item: Adulter_F_C_Rope
# - Item: Adulter_F_Ribbon
# - Item: Adulter_F_Mace
# - Item: Adulter_F_Hall
# - Item: Pontifex_Wisdom
# TargetItems:
# - Item: Adulter_F_T_Sword
# - Item: Adulter_F_Cakram
# - Item: Adulter_F_Katar
# - Item: Adulter_F_Lance
# - Item: Adulter_F_T_Staff
# - Item: Adulter_F_Rod
# - Item: Adulter_F_Humma
# - Item: Adulter_F_C_Humma
# - Item: Adulter_F_C_Bow
# - Item: Adulter_F_Ballista
# - Item: Adulter_F_A_Bow
# - Item: Adulter_F_Revolver
# - Item: Adulter_F_Rifle
# - Item: Adulter_F_Shotgun
# - Item: Adulter_F_Gatling
# - Item: Adulter_F_Launcher
# - Item: Adulter_F_G_Sword
# - Item: Adulter_F_Lapier
# - Item: Adulter_F_Dagger
# - Item: Adulter_F_Axe
# - Item: Adulter_F_G_Spear
# - Item: Adulter_F_M_Book
# - Item: Adulter_F_P_Book
# - Item: Adulter_F_Bible
# - Item: Adulter_F_Moon_B
# - Item: Adulter_F_Star_B
# - Item: Adulter_F_Wand
# - Item: Adulter_F_S_Stick
# - Item: Adulter_F_D_Wand
# - Item: Adulter_F_F_Wand
# - Item: Adulter_F_F_model
# - Item: Adulter_F_Knuckle
# - Item: Adulter_F_Claw
# - Item: Adulter_F_Violin
# - Item: Adulter_F_Harp
# - Item: Adulter_F_C_Rope
# - Item: Adulter_F_Ribbon
# - Item: Adulter_F_Mace
# - Item: Adulter_F_Hall
# - Item: Pontifex_Tenacity
# TargetItems:
# - Item: Vivatus_F_T_Sword
# - Item: Vivatus_F_Cakram
# - Item: Vivatus_F_Katar
# - Item: Vivatus_F_Lance
# - Item: Vivatus_F_T_Staff
# - Item: Vivatus_F_Rod
# - Item: Vivatus_F_C_Bow
# - Item: Vivatus_F_Ballista
# - Item: Vivatus_F_A_Bow
# - Item: Vivatus_F_G_Sword
# - Item: Vivatus_F_Lapier
# - Item: Vivatus_F_Dagger
# - Item: Vivatus_F_Axe
# - Item: Vivatus_F_G_Spear
# - Item: Vivatus_F_M_Book
# - Item: Vivatus_F_P_Book
# - Item: Vivatus_F_Bible
# - Item: Vivatus_F_Wand
# - Item: Vivatus_F_Knuckle
# - Item: Vivatus_F_Claw
# - Item: Vivatus_F_Violin
# - Item: Vivatus_F_Harp
# - Item: Vivatus_F_C_Rope
# - Item: Vivatus_F_Ribbon
# - Item: Vivatus_F_Mace
# - Item: Vivatus_F_Hall
# - Item: Vivatus_F_D_Wand
# - Item: Vivatus_F_S_Stick
# - Item: Vivatus_F_F_Wand
# - Item: Vivatus_F_F_model
# - Item: Vivatus_F_Star_B
# - Item: Vivatus_F_Moon_B
# - Item: Vivatus_F_Gatling
# - Item: Vivatus_F_Launcher
# - Item: Vivatus_F_Rifle
# - Item: Vivatus_F_Shotgun
# - Item: Vivatus_F_Revolver
# - Item: Vivatus_F_C_Humma
# - Item: Vivatus_F_Humma
# - Item: Pontifex_Belief
# TargetItems:
# - Item: Vivatus_F_T_Sword
# - Item: Vivatus_F_Cakram
# - Item: Vivatus_F_Katar
# - Item: Vivatus_F_Lance
# - Item: Vivatus_F_T_Staff
# - Item: Vivatus_F_Rod
# - Item: Vivatus_F_C_Bow
# - Item: Vivatus_F_Ballista
# - Item: Vivatus_F_A_Bow
# - Item: Vivatus_F_G_Sword
# - Item: Vivatus_F_Lapier
# - Item: Vivatus_F_Dagger
# - Item: Vivatus_F_Axe
# - Item: Vivatus_F_G_Spear
# - Item: Vivatus_F_M_Book
# - Item: Vivatus_F_P_Book
# - Item: Vivatus_F_Bible
# - Item: Vivatus_F_Wand
# - Item: Vivatus_F_Knuckle
# - Item: Vivatus_F_Claw
# - Item: Vivatus_F_Violin
# - Item: Vivatus_F_Harp
# - Item: Vivatus_F_C_Rope
# - Item: Vivatus_F_Ribbon
# - Item: Vivatus_F_Mace
# - Item: Vivatus_F_Hall
# - Item: Vivatus_F_D_Wand
# - Item: Vivatus_F_S_Stick
# - Item: Vivatus_F_F_Wand
# - Item: Vivatus_F_F_model
# - Item: Vivatus_F_Star_B
# - Item: Vivatus_F_Moon_B
# - Item: Vivatus_F_Gatling
# - Item: Vivatus_F_Launcher
# - Item: Vivatus_F_Rifle
# - Item: Vivatus_F_Shotgun
# - Item: Vivatus_F_Revolver
# - Item: Vivatus_F_C_Humma
# - Item: Vivatus_F_Humma
- Item: Pontifex_Courage
RandomOptionGroup: PONTIFEX_COURAGE
TargetItems:
- Item: Adulter_F_T_Sword
- Item: Adulter_F_Cakram
- Item: Adulter_F_Katar
- Item: Adulter_F_Lance
- Item: Adulter_F_T_Staff
- Item: Adulter_F_Rod
- Item: Adulter_F_Humma
- Item: Adulter_F_C_Humma
- Item: Adulter_F_C_Bow
- Item: Adulter_F_Ballista
- Item: Adulter_F_A_Bow
- Item: Adulter_F_Revolver
- Item: Adulter_F_Rifle
- Item: Adulter_F_Shotgun
- Item: Adulter_F_Gatling
- Item: Adulter_F_Launcher
- Item: Adulter_F_G_Sword
- Item: Adulter_F_Lapier
- Item: Adulter_F_Dagger
- Item: Adulter_F_Axe
- Item: Adulter_F_G_Spear
- Item: Adulter_F_M_Book
- Item: Adulter_F_P_Book
- Item: Adulter_F_Bible
- Item: Adulter_F_Moon_B
- Item: Adulter_F_Star_B
- Item: Adulter_F_Wand
- Item: Adulter_F_S_Stick
- Item: Adulter_F_D_Wand
- Item: Adulter_F_F_Wand
- Item: Adulter_F_F_model
- Item: Adulter_F_Knuckle
- Item: Adulter_F_Claw
- Item: Adulter_F_Violin
- Item: Adulter_F_Harp
- Item: Adulter_F_C_Rope
- Item: Adulter_F_Ribbon
- Item: Adulter_F_Mace
- Item: Adulter_F_Hall
- Item: Pontifex_Wisdom
RandomOptionGroup: PONTIFEX_WISDOM
TargetItems:
- Item: Adulter_F_T_Sword
- Item: Adulter_F_Cakram
- Item: Adulter_F_Katar
- Item: Adulter_F_Lance
- Item: Adulter_F_T_Staff
- Item: Adulter_F_Rod
- Item: Adulter_F_Humma
- Item: Adulter_F_C_Humma
- Item: Adulter_F_C_Bow
- Item: Adulter_F_Ballista
- Item: Adulter_F_A_Bow
- Item: Adulter_F_Revolver
- Item: Adulter_F_Rifle
- Item: Adulter_F_Shotgun
- Item: Adulter_F_Gatling
- Item: Adulter_F_Launcher
- Item: Adulter_F_G_Sword
- Item: Adulter_F_Lapier
- Item: Adulter_F_Dagger
- Item: Adulter_F_Axe
- Item: Adulter_F_G_Spear
- Item: Adulter_F_M_Book
- Item: Adulter_F_P_Book
- Item: Adulter_F_Bible
- Item: Adulter_F_Moon_B
- Item: Adulter_F_Star_B
- Item: Adulter_F_Wand
- Item: Adulter_F_S_Stick
- Item: Adulter_F_D_Wand
- Item: Adulter_F_F_Wand
- Item: Adulter_F_F_model
- Item: Adulter_F_Knuckle
- Item: Adulter_F_Claw
- Item: Adulter_F_Violin
- Item: Adulter_F_Harp
- Item: Adulter_F_C_Rope
- Item: Adulter_F_Ribbon
- Item: Adulter_F_Mace
- Item: Adulter_F_Hall
- Item: Pontifex_Tenacity
RandomOptionGroup: PONTIFEX_TENACITY
TargetItems:
- Item: Vivatus_F_T_Sword
- Item: Vivatus_F_Cakram
- Item: Vivatus_F_Katar
- Item: Vivatus_F_Lance
- Item: Vivatus_F_T_Staff
- Item: Vivatus_F_Rod
- Item: Vivatus_F_C_Bow
- Item: Vivatus_F_Ballista
- Item: Vivatus_F_A_Bow
- Item: Vivatus_F_G_Sword
- Item: Vivatus_F_Lapier
- Item: Vivatus_F_Dagger
- Item: Vivatus_F_Axe
- Item: Vivatus_F_G_Spear
- Item: Vivatus_F_M_Book
- Item: Vivatus_F_P_Book
- Item: Vivatus_F_Bible
- Item: Vivatus_F_Wand
- Item: Vivatus_F_Knuckle
- Item: Vivatus_F_Claw
- Item: Vivatus_F_Violin
- Item: Vivatus_F_Harp
- Item: Vivatus_F_C_Rope
- Item: Vivatus_F_Ribbon
- Item: Vivatus_F_Mace
- Item: Vivatus_F_Hall
- Item: Vivatus_F_D_Wand
- Item: Vivatus_F_S_Stick
- Item: Vivatus_F_F_Wand
- Item: Vivatus_F_F_model
- Item: Vivatus_F_Star_B
- Item: Vivatus_F_Moon_B
- Item: Vivatus_F_Gatling
- Item: Vivatus_F_Launcher
- Item: Vivatus_F_Rifle
- Item: Vivatus_F_Shotgun
- Item: Vivatus_F_Revolver
- Item: Vivatus_F_C_Humma
- Item: Vivatus_F_Humma
- Item: Pontifex_Belief
RandomOptionGroup: PONTIFEX_BELIEF
TargetItems:
- Item: Vivatus_F_T_Sword
- Item: Vivatus_F_Cakram
- Item: Vivatus_F_Katar
- Item: Vivatus_F_Lance
- Item: Vivatus_F_T_Staff
- Item: Vivatus_F_Rod
- Item: Vivatus_F_C_Bow
- Item: Vivatus_F_Ballista
- Item: Vivatus_F_A_Bow
- Item: Vivatus_F_G_Sword
- Item: Vivatus_F_Lapier
- Item: Vivatus_F_Dagger
- Item: Vivatus_F_Axe
- Item: Vivatus_F_G_Spear
- Item: Vivatus_F_M_Book
- Item: Vivatus_F_P_Book
- Item: Vivatus_F_Bible
- Item: Vivatus_F_Wand
- Item: Vivatus_F_Knuckle
- Item: Vivatus_F_Claw
- Item: Vivatus_F_Violin
- Item: Vivatus_F_Harp
- Item: Vivatus_F_C_Rope
- Item: Vivatus_F_Ribbon
- Item: Vivatus_F_Mace
- Item: Vivatus_F_Hall
- Item: Vivatus_F_D_Wand
- Item: Vivatus_F_S_Stick
- Item: Vivatus_F_F_Wand
- Item: Vivatus_F_F_model
- Item: Vivatus_F_Star_B
- Item: Vivatus_F_Moon_B
- Item: Vivatus_F_Gatling
- Item: Vivatus_F_Launcher
- Item: Vivatus_F_Rifle
- Item: Vivatus_F_Shotgun
- Item: Vivatus_F_Revolver
- Item: Vivatus_F_C_Humma
- Item: Vivatus_F_Humma
- Item: Bio_Helm_Refine_Cube
ResultRefine: 11
MaximumRefine: 10

File diff suppressed because it is too large Load Diff

View File

@@ -14489,3 +14489,234 @@
21395,ILL_MAYA@NPC_IMMUNE_PROPERTY,attack,754,1,1500,1500,60000,no,self,longrangeattacked,0,,,,,,,
21395,ILL_MAYA@NPC_DAMAGE_HEAL,attack,753,1,500,1500,120000,no,target,myhpltmaxrate,50,,,,,,32,
21395,ILL_MAYA@NPC_ALL_STAT_DOWN,attack,751,5,5000,1500,45000,no,target,always,0,,,,,,18,
// Episode 18
20846,MD_HIDDEN_GROUND01@NPC_GRADUAL_GRAVITY,idle,752,3,1000,0,5000,no,target,always,0,,,,,,,
20846,MD_HIDDEN_GROUND01@NPC_GRADUAL_GRAVITY,attack,752,3,1000,0,5000,no,target,always,0,,,,,,,
21295,EP18_ASH_TOAD@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21295,EP18_ASH_TOAD@NPC_GUIDEDATTACK,chase,172,3,2000,0,5000,yes,target,always,0,,,,,,,
21295,EP18_ASH_TOAD@NPC_POISONATTACK,attack,188,5,1000,0,5000,yes,target,always,0,,,,,,,
21295,EP18_ASH_TOAD@NPC_BLINDATTACK,chase,177,5,1000,500,5000,no,target,always,0,,,,,,,
21295,EP18_ASH_TOAD@NPC_BLINDATTACK,attack,177,3,1000,500,5000,no,target,always,0,,,,,,,
21296,EP18_RAKEHAND@NPC_GUIDEDATTACK,attack,172,3,2000,0,5000,yes,target,always,0,,,,,,,
21296,EP18_RAKEHAND@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,0,,,,,,12,
21296,EP18_RAKEHAND@NPC_STUNATTACK,attack,179,3,1000,500,5000,no,target,always,0,,,,,,11,
21296,EP18_RAKEHAND@RG_CLOSECONFINE,attack,1005,1,1000,0,30000,yes,target,always,0,,,,,,,
21297,EP18_SPARK@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21297,EP18_SPARK@MG_FIREBOLT,chase,19,3,2000,300,5000,no,target,always,0,,,,,,,
21297,EP18_SPARK@MG_FIREBALL,chase,17,3,5000,0,30000,yes,target,always,0,,,,,,,
21297,EP18_SPARK@NPC_GUIDEDATTACK,attack,172,3,2000,0,30000,yes,target,always,0,,,,,,,
21297,EP18_SPARK@MG_FIREBOLT,attack,19,3,1000,0,10000,yes,target,always,0,,,,,,,
21297,EP18_SPARK@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,12,
21297,EP18_SPARK@NPC_SELFDESTRUCTION,attack,173,1,10000,1000,0,no,self,myhpltmaxrate,30,,,,,,,
21297,EP18_SPARK@NPC_SELFDESTRUCTION,chase,173,1,2000,1000,0,no,self,myhpltmaxrate,30,,,,,,,
21298,EP18_HOT_MOLAR@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21298,EP18_HOT_MOLAR@NPC_COMBOATTACK,chase,171,3,5000,0,30000,yes,target,always,0,,,,,,,
21298,EP18_HOT_MOLAR@SM_BASH,attack,5,4,2000,0,5000,yes,target,always,0,,,,,,,
21298,EP18_HOT_MOLAR@NPC_GUIDEDATTACK,chase,172,3,2000,0,300000,yes,target,always,0,,,,,,,
21298,EP18_HOT_MOLAR@NPC_BLEEDING2,attack,764,3,2000,0,5000,yes,target,always,0,,,,,,,
21298,EP18_HOT_MOLAR@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,12,
21298,EP18_HOT_MOLAR@SM_MAGNUM,attack,7,5,5000,0,5000,yes,self,attackpcge,2,,,,,,,
21299,EP18_VOLCARING@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21299,EP18_VOLCARING@MG_FIREBOLT,chase,19,5,1000,500,30000,yes,target,always,0,,,,,,,
21299,EP18_VOLCARING@NPC_FIREATTACK,attack,186,3,2000,0,5000,yes,target,always,0,,,,,,,
21300,EP18_LAVA_TOAD@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21300,EP18_LAVA_TOAD@MG_FIREBOLT,chase,19,3,2000,0,30000,yes,target,always,0,,,,,,,
21300,EP18_LAVA_TOAD@NPC_CRITICALSLASH,attack,170,1,3000,0,10000,yes,target,always,0,,,,,,,
21300,EP18_LAVA_TOAD@SM_MAGNUM,attack,7,5,5000,0,5000,yes,self,attackpcge,2,,,,,,,
21300,EP18_LAVA_TOAD@RG_STRIPSHIELD,attack,216,3,3000,0,30000,yes,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_COMBOATTACK,idle,171,4,5000,0,5000,yes,target,always,0,,,,,,7,
21301,EP18_BURNING_FANG@NPC_GUIDEDATTACK,chase,172,5,5000,0,1000,yes,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_MOVE_COORDINATE,chase,755,1,5000,0,30000,no,target,always,0,,,,,,39,
21301,EP18_BURNING_FANG@NPC_CRITICALWOUND,attack,673,4,500,500,5000,no,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_MENTALBREAKER,attack,159,4,500,1500,5000,yes,target,always,0,,,,,,42,
21301,EP18_BURNING_FANG@NPC_CRITICALSLASH,attack,170,1,10000,0,30000,yes,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_MOVE_COORDINATE,attack,755,1,5000,0,60000,no,target,longrangeattacked,0,,,,,,39,
21301,EP18_BURNING_FANG@NPC_CURSEATTACK,attack,181,5,4000,0,30000,yes,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_STUNATTACK,attack,179,5,2000,0,30000,yes,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@HW_GANBANTEIN,attack,483,1,7000,0,60000,no,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_POWERUP,attack,349,3,3000,0,60000,yes,self,always,0,,,,,,,
21301,EP18_BURNING_FANG@RG_STRIPHELM,attack,218,5,1000,0,30000,yes,target,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_SUMMONSLAVE,idle,196,1,10000,1000,30000,no,self,slavele,3,,,,,,,
21301,EP18_BURNING_FANG@NPC_CALLSLAVE,idle,352,1,10000,0,30000,no,self,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_CALLSLAVE,attack,352,1,10000,0,30000,no,self,always,0,,,,,,,
21301,EP18_BURNING_FANG@NPC_SUMMONSLAVE,attack,196,1,10000,700,10000,no,self,slavele,3,,,,,,,
21302,EP18_ASHHOPPER@NPC_EMOTION,chase,197,1,500,0,30000,yes,self,always,0,0x0091,,,,,19,
21302,EP18_ASHHOPPER@NPC_EMOTION,idle,197,1,2000,0,30000,yes,self,always,0,0x3885,,,,,44,
21302,EP18_ASHHOPPER@NPC_GUIDEDATTACK,chase,172,3,3000,500,30000,yes,target,always,0,,,,,,,
21302,EP18_ASHHOPPER@NPC_POISONATTACK,attack,188,5,1000,0,5000,yes,target,always,0,,,,,,,
21302,EP18_ASHHOPPER@NPC_POISON_BUSTER,attack,742,1,2000,1500,30000,no,self,always,0,,,,,,,
21302,EP18_ASHHOPPER@NPC_CLOUD_KILL,attack,739,3,2000,500,15000,no,target,always,0,,,,,,,
21302,EP18_ASHHOPPER@MO_BODYRELOCATION,chase,264,1,2000,500,5000,yes,target,always,0,,,,,,28,
21303,EP18_ASHRING@NPC_POISON,attack,176,3,500,800,5000,no,target,always,0,,,,,,,
21303,EP18_ASHRING@NPC_POISONATTACK,attack,188,3,2000,0,5000,yes,target,always,0,,,,,,,
21303,EP18_ASHRING@NPC_AGIUP,chase,350,1,1000,0,30000,yes,self,always,0,,,,,,,
21303,EP18_ASHRING@WZ_QUAGMIRE,chase,92,2,500,0,30000,yes,target,always,0,,,,,,6,
21304,EP18_GREY_WOLF@NPC_POISONATTACK,chase,188,3,2000,0,5000,yes,target,always,0,,,,,,,
21304,EP18_GREY_WOLF@NPC_COMBOATTACK,attack,171,3,2000,200,5000,yes,target,always,0,,,,,,,
21304,EP18_GREY_WOLF@NPC_COMBOATTACK,chase,171,3,2000,200,5000,yes,target,always,0,,,,,,,
21304,EP18_GREY_WOLF@NPC_STUNATTACK,attack,179,3,2000,0,5000,yes,target,always,0,,,,,,,
21304,EP18_GREY_WOLF@NPC_STUNATTACK,attack,179,3,2000,0,5000,yes,target,always,0,,,,,,,
21305,EP18_TUMBLE_RING@AL_TELEPORT,idle,26,3,7000,0,5000,yes,self,rudeattacked,0,,,,,,,
21305,EP18_TUMBLE_RING@NPC_CRITICALWOUND,attack,673,1,1000,300,5000,no,target,always,0,,,,,,,
21305,EP18_TUMBLE_RING@NPC_POISONATTACK,attack,188,2,2000,500,15000,no,target,always,0,,,,,,9,
21305,EP18_TUMBLE_RING@NPC_CLOUD_KILL,attack,739,5,2000,0,15000,yes,target,always,0,,,,,,,
21305,EP18_TUMBLE_RING@NPC_AGIUP,chase,350,10,2000,0,100000,yes,self,longrangeattacked,0,,,,,,,
21306,EP18_FIREWIND_KITE@AL_TELEPORT,idle,26,3,7000,0,5000,yes,self,rudeattacked,0,,,,,,,
21306,EP18_FIREWIND_KITE@MG_FIREBOLT,idle,19,5,5000,300,5000,no,target,always,0,,,,,,,
21306,EP18_FIREWIND_KITE@NPC_WINDATTACK,chase,187,5,2000,300,5000,yes,target,always,0,,,,,,,
21306,EP18_FIREWIND_KITE@NPC_FIREATTACK,chase,186,5,3000,300,5000,yes,target,always,0,,,,,,9,
21306,EP18_FIREWIND_KITE@NPC_CRITICALSLASH,attack,170,4,2000,500,15000,no,target,always,0,,,,,,9,
21307,EP18_PHANTOM_WOLF@NPC_GUIDEDATTACK,chase,172,2,5000,0,60000,yes,target,always,0,,,,,,,
21307,EP18_PHANTOM_WOLF@NPC_CRITICALSLASH,attack,170,1,500,300,30000,yes,target,always,0,,,,,,9,
21307,EP18_PHANTOM_WOLF@AS_CLOAKING,idle,135,1,1000,300,30000,yes,self,always,0,,,,,,9,
21307,EP18_PHANTOM_WOLF@AS_GRIMTOOTH,chase,137,5,5000,0,5000,yes,target,always,0,,,,,,,
21307,EP18_PHANTOM_WOLF@ASC_METEORASSAULT,attack,406,8,3000,0,10000,yes,self,always,0,,,,,,,
21307,EP18_PHANTOM_WOLF@ASC_BREAKER,chase,379,10,2000,0,5000,yes,target,always,0,,,,,,,
21308,EP18_MD_HEARTHUNTER_A@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21308,EP18_MD_HEARTHUNTER_A@TF_SPRINKLESAND,attack,149,1,2000,300,30000,yes,target,always,0,,,,,,,
21308,EP18_MD_HEARTHUNTER_A@NPC_CRITICALSLASH,chase,170,1,3000,0,10000,yes,target,always,0,,,,,,,
21308,EP18_MD_HEARTHUNTER_A@SM_MAGNUM,attack,7,5,5000,0,5000,yes,self,attackpcge,2,,,,,,,
21308,EP18_MD_HEARTHUNTER_A@RG_STRIPSHIELD,attack,216,3,3000,0,60000,yes,target,always,0,,,,,,,
21309,EP18_MD_THOR_GUARD@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21309,EP18_MD_THOR_GUARD@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,12,
21309,EP18_MD_THOR_GUARD@SM_PROVOKE,chase,6,10,2000,100,10000,yes,target,always,0,,,,,,3,
21309,EP18_MD_THOR_GUARD@NPC_CURSEATTACK,attack,181,5,1000,300,5000,no,target,always,0,,,,,,,
21309,EP18_MD_THOR_GUARD@CR_AUTOGUARD,attack,249,3,3000,0,300000,no,self,always,0,,,,,,,
21310,EP18_MD_GUARD_A@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21310,EP18_MD_GUARD_A@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,12,
21310,EP18_MD_GUARD_A@SM_PROVOKE,chase,6,10,2000,100,10000,yes,target,always,0,,,,,,3,
21310,EP18_MD_GUARD_A@NPC_CURSEATTACK,attack,181,5,1000,300,5000,no,target,always,0,,,,,,,
21310,EP18_MD_GUARD_A@CR_AUTOGUARD,attack,249,3,3000,0,300000,no,self,always,0,,,,,,,
21310,EP18_MD_GUARD_A@NPC_STUNATTACK,attack,179,1,500,500,5000,no,target,always,0,,,,,,9,
21311,EP18_MD_GUARD_B@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21311,EP18_MD_GUARD_B@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,12,
21311,EP18_MD_GUARD_B@SM_PROVOKE,chase,6,10,2000,100,10000,yes,target,always,0,,,,,,3,
21311,EP18_MD_GUARD_B@NPC_CURSEATTACK,attack,181,5,1000,300,5000,no,target,always,0,,,,,,,
21311,EP18_MD_GUARD_B@CR_AUTOGUARD,attack,249,3,3000,0,300000,no,self,always,0,,,,,,,
21311,EP18_MD_GUARD_B@NPC_STUNATTACK,attack,179,1,500,500,5000,no,target,always,0,,,,,,9,
21312,EP18_MD_HEARTHUNTER_R@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21312,EP18_MD_HEARTHUNTER_R@TF_SPRINKLESAND,attack,149,1,2000,300,30000,yes,target,always,0,,,,,,,
21312,EP18_MD_HEARTHUNTER_R@NPC_CRITICALSLASH,chase,170,1,3000,0,10000,yes,target,always,0,,,,,,,
21312,EP18_MD_HEARTHUNTER_R@SM_MAGNUM,attack,7,5,5000,0,5000,yes,self,attackpcge,2,,,,,,,
21312,EP18_MD_HEARTHUNTER_R@RG_STRIPSHIELD,attack,216,3,3000,0,60000,yes,target,always,0,,,,,,,
21313,EP18_MD_HEARTHUNTER_F@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,12,
21313,EP18_MD_HEARTHUNTER_F@NPC_EMOTION,chase,197,1,500,0,30000,yes,self,always,0,0x0091,,,,,19,
21313,EP18_MD_HEARTHUNTER_F@NPC_BLINDATTACK,chase,177,3,1000,0,5000,yes,target,always,0,,,,,,39,
21313,EP18_MD_HEARTHUNTER_F@HT_BLASTMINE,idle,122,3,2000,500,180000,no,target,always,0,,,,,,,
21313,EP18_MD_HEARTHUNTER_F@NPC_COMBOATTACK,attack,171,2,3000,500,15000,yes,target,always,0,,,,,,,
21313,EP18_MD_HEARTHUNTER_F@NPC_EMOTION,idle,197,1,2000,0,30000,yes,self,always,0,0x2085,,,,,44,
21313,EP18_MD_HEARTHUNTER_F@TF_SPRINKLESAND,attack,149,1,3000,0,30000,yes,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_TELEKINESISATTACK,attack,191,2,3000,0,5000,yes,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_POWERUP,attack,349,3,5000,0,30000,yes,self,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_DARKSTRIKE,chase,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_DARKSTRIKE,attack,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_WIDESTONE2,attack,759,3,3000,500,30000,no,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@MG_THUNDERSTORM,attack,21,5,7000,500,30000,no,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@MG_LIGHTNINGBOLT,chase,20,6,3000,300,5000,no,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_WIDECONFUSE2,attack,762,3,3000,500,30000,no,target,always,0,,,,,,,
21314,EP18_MD_SCHULANG@NPC_CHANGEWIND,attack,165,1,3000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21314,EP18_MD_SCHULANG@NPC_CHANGEHOLY,attack,167,1,5000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21314,EP18_MD_SCHULANG@NPC_CHANGETELEKINESIS,attack,169,1,1000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21314,EP18_MD_SCHULANG@WZ_VERMILION,chase,85,3,5000,500,60000,no,target,myhpltmaxrate,70,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_DARKNESSATTACK,attack,190,4,3000,0,5000,yes,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_DARKSTRIKE,attack,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_EARTHQUAKE,attack,653,4,2000,500,30000,yes,self,always,0,,,,,,6,
21315,EP18_MD_DEMI_FREYJA@NPC_POWERUP,attack,349,3,5000,0,30000,yes,self,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_DARKSTRIKE,chase,340,4,3000,200,15000,yes,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_DARKSTRIKE,attack,340,6,3000,200,15000,yes,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_WIDESTONE2,attack,759,5,3000,500,30000,no,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_WIDECONFUSE2,attack,762,5,3000,500,30000,no,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_WIDECURSE2,attack,761,3,3000,500,60000,no,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_HELLJUDGEMENT2,attack,768,5,1000,500,120000,yes,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_CHANGEDARKNESS,attack,168,1,1000,0,120000,yes,self,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_CHANGEHOLY,attack,167,1,3000,0,120000,yes,self,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_CANE_OF_EVIL_EYE,chase,780,3,8000,300,30000,no,target,always,0,,,,,,,
21315,EP18_MD_DEMI_FREYJA@NPC_CANE_OF_EVIL_EYE,attack,780,5,7000,300,30000,yes,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_TELEKINESISATTACK,attack,191,2,3000,0,5000,yes,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_POWERUP,attack,349,3,5000,0,30000,yes,self,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_DARKSTRIKE,chase,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_DARKSTRIKE,attack,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_WIDESTONE2,attack,759,3,3000,500,30000,no,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@MG_THUNDERSTORM,attack,21,5,7000,500,30000,no,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@MG_LIGHTNINGBOLT,chase,20,6,3000,300,5000,no,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_WIDECONFUSE2,attack,762,3,3000,500,30000,no,target,always,0,,,,,,,
21316,EP18_MD_SCHULANG_R@NPC_CHANGEWIND,attack,165,1,3000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21316,EP18_MD_SCHULANG_R@NPC_CHANGEHOLY,attack,167,1,5000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21316,EP18_MD_SCHULANG_R@NPC_CHANGETELEKINESIS,attack,169,1,1000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21316,EP18_MD_SCHULANG_R@WZ_VERMILION,chase,85,3,5000,500,60000,no,target,myhpltmaxrate,70,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_DARKNESSATTACK,attack,190,4,3000,0,5000,yes,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_DARKSTRIKE,attack,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_EARTHQUAKE,attack,653,4,2000,500,30000,yes,self,always,0,,,,,,6,
21317,EP18_MD_DEMI_FREYJA_R@NPC_POWERUP,attack,349,3,5000,0,30000,yes,self,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_DARKSTRIKE,chase,340,4,3000,200,15000,yes,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_DARKSTRIKE,attack,340,6,3000,200,15000,yes,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_WIDESTONE2,attack,759,5,3000,500,30000,no,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_WIDECONFUSE2,attack,762,5,3000,500,30000,no,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_WIDECURSE2,attack,761,3,3000,500,60000,no,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_HELLJUDGEMENT2,attack,768,5,1000,500,120000,yes,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_CHANGEDARKNESS,attack,168,1,1000,0,120000,yes,self,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_CHANGEHOLY,attack,167,1,3000,0,120000,yes,self,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_CANE_OF_EVIL_EYE,chase,780,3,8000,300,30000,no,target,always,0,,,,,,,
21317,EP18_MD_DEMI_FREYJA_R@NPC_CANE_OF_EVIL_EYE,attack,780,5,7000,300,30000,yes,target,always,0,,,,,,,
21318,EP18_MD_SANARE_R@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
21318,EP18_MD_SANARE_R@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,12,
21318,EP18_MD_SANARE_R@NPC_EMOTION,chase,197,1,500,0,30000,yes,self,always,0,0x0091,,,,,19,
21318,EP18_MD_SANARE_R@AL_HEAL,idle,28,9,7000,500,5000,yes,friend,myhpltmaxrate,50,,,,,,3,
21318,EP18_MD_SANARE_R@NPC_EMOTION,idle,197,1,2000,0,30000,yes,self,always,0,0x3885,,,,,14,
21318,EP18_MD_SANARE_R@AL_HEAL,attack,28,9,7000,500,15000,yes,friend,always,0,,,,,,3,
21318,EP18_MD_SANARE_R@NPC_DARKCROSS,attack,338,5,3000,500,15000,yes,target,always,0,,,,,,,
21318,EP18_MD_SANARE_R@AL_HOLYLIGHT,chase,156,1,3000,300,15000,yes,target,always,0,,,,,,,
21318,EP18_MD_SANARE_R@NPC_HOLYATTACK,chase,189,3,4000,500,15000,yes,target,always,0,,,,,,,
21318,EP18_MD_SANARE_R@AL_HEAL,idle,28,9,10000,700,3000,yes,friend,friendhpltmaxrate,50,,,,,,,
21323,EP18_GREY_GOAT@BS_ADRENALINE,attack,111,10,500,1500,300000,no,self,always,0,,,,,,6,
21323,EP18_GREY_GOAT@BS_ADRENALINE,chase,111,10,500,1500,300000,no,self,always,0,,,,,,6,
21323,EP18_GREY_GOAT@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,0x1089,,,,,19,
21323,EP18_GREY_GOAT@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,attackpcge,2,,,,,,,
21323,EP18_GREY_GOAT@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,0,,,,,,6,
21323,EP18_GREY_GOAT@NPC_CRITICALWOUND,attack,673,1,500,0,5000,yes,target,always,0,,,,,,,
21323,EP18_GREY_GOAT@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,,
21323,EP18_GREY_GOAT@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,12,
21324,EP18_GREY_WOLF_BABY@NPC_PROVOCATION,chase,194,1,200,0,5000,yes,target,always,0,,,,,,19,
21324,EP18_GREY_WOLF_BABY@NPC_STUNATTACK,attack,179,3,2000,500,5000,no,target,always,0,,,,,,19,
21324,EP18_GREY_WOLF_BABY@NPC_CRITICALWOUND,attack,673,5,2000,300,10000,no,target,always,0,,,,,,,
21324,EP18_GREY_WOLF_BABY@NPC_GUIDEDATTACK,attack,172,4,1500,300,10000,yes,target,always,0,,,,,,,
21324,EP18_GREY_WOLF_BABY@AL_TELEPORT,chase,26,1,3000,0,300000,yes,self,mobnearbygt,23,,,,,,,
21324,EP18_GREY_WOLF_BABY@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,12,
21360,EP18_MD_SCHULANG_L@NPC_TELEKINESISATTACK,attack,191,2,3000,0,5000,yes,target,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@NPC_POWERUP,attack,349,3,5000,0,30000,yes,self,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@NPC_DARKSTRIKE,chase,340,3,3000,200,15000,yes,target,always,0,,,,,,,
// 21360,EP18_MD_SCHULANG_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55,
21360,EP18_MD_SCHULANG_L@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@NPC_DARKSTRIKE,attack,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@NPC_WIDESTONE2,attack,759,3,3000,500,30000,no,target,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@MG_THUNDERSTORM,attack,21,5,7000,500,30000,no,target,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@MG_LIGHTNINGBOLT,chase,20,6,3000,300,5000,no,target,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@NPC_WIDECONFUSE2,attack,762,3,3000,500,30000,no,target,always,0,,,,,,,
21360,EP18_MD_SCHULANG_L@NPC_CHANGEWIND,attack,165,1,3000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21360,EP18_MD_SCHULANG_L@NPC_CHANGEHOLY,attack,167,1,5000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21360,EP18_MD_SCHULANG_L@NPC_CHANGETELEKINESIS,attack,169,1,1000,300,120000,yes,self,myhpltmaxrate,50,,,,,,47,
21360,EP18_MD_SCHULANG_L@WZ_VERMILION,chase,85,3,5000,500,60000,no,target,myhpltmaxrate,70,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_DARKNESSATTACK,attack,190,4,3000,0,5000,yes,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_DARKSTRIKE,attack,340,3,3000,200,15000,yes,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_EARTHQUAKE,attack,653,4,2000,500,30000,yes,self,always,0,,,,,,6,
21361,EP18_MD_DEMI_FREYJA_L@NPC_POWERUP,attack,349,3,5000,0,30000,yes,self,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_DARKSTRIKE,chase,340,4,3000,200,15000,yes,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_DARKSTRIKE,attack,340,6,3000,200,15000,yes,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_WIDESTONE2,attack,759,5,3000,500,30000,no,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_WIDECONFUSE2,attack,762,5,3000,500,30000,no,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_WIDECURSE2,attack,761,3,3000,500,60000,no,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_HELLJUDGEMENT2,attack,768,5,1000,500,120000,yes,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_CHANGEDARKNESS,attack,168,1,1000,0,120000,yes,self,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_CHANGEHOLY,attack,167,1,3000,0,120000,yes,self,always,0,,,,,,,
// 21361,EP18_MD_DEMI_FREYJA_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55,
21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,chase,780,3,8000,300,30000,no,target,always,0,,,,,,,
21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,attack,780,5,7000,300,30000,yes,target,always,0,,,,,,,

File diff suppressed because it is too large Load Diff

View File

@@ -1571,8 +1571,32 @@ Body:
- Id: 3492
Title: (Skilled) Dragon Monster Hunting - Standby
TimeLimit: 4h
- Id: 3493
Title: Conversation with Jarad
- Id: 3494
Title: Conversation with Rohi
- Id: 3495
Title: Conversation with Jeojin
- Id: 3496
Title: Conversation with Squain
- Id: 3497
Title: Conversation with Senado
- Id: 3498
Title: Conversation with Japer
- Id: 3499
Title: Conversation with Shirouan
- Id: 3500
Title: Conversation with Ishira
- Id: 3501
Title: Conversation with Gina
- Id: 3502
Title: Conversation with Hari
- Id: 3503
Title: Examine the Sky
- Id: 3504
Title: Look at the Sky - Standby
- Id: 3505
Title: Report to Junok
TimeLimit: 4h
- Id: 3507
Title: Illusion Investigation Team - Sheshin
@@ -3209,6 +3233,27 @@ Body:
- Id: 5931
Title: "[Standby] Subjugation-Yanggeochon"
TimeLimit: 4h
- Id: 5932
Title: The Abused Child
- Id: 5933
Title: Business Plan Presentation
- Id: 5934
Title: Gathering Training (1)
- Id: 5935
Title: Gathering Training (2)
- Id: 5936
Title: Gathering Training (3)
- Id: 5937
Title: "[Standby] Flower Room's work"
TimeLimit: 4h
- Id: 5938
Title: Gathering Half Flower
- Id: 5939
Title: Gathering Half Flower
- Id: 5940
Title: Gathering Half Flower
- Id: 5941
Title: Gathering Half Flower
- Id: 6000
Title: Job Change to Taekwon
- Id: 6001
@@ -6270,6 +6315,56 @@ Body:
MAGMARING: true
DROSERA: true
MUSCIPULAR: true
- Id: 8681
Title: To Rachel (1)
- Id: 8682
Title: To Rachel (2)
- Id: 8683
Title: Please stop fighting
- Id: 8684
Title: It's over
- Id: 8685
Title: A suspicious movement detected in the temple
- Id: 8686
Title: The Intruder of the Temple
- Id: 8687
Title: Did you break it?
- Id: 8688
Title: Thanks for today's daily food
- Id: 8689
Title: Today's Daily food - Standby
TimeLimit: 4h
- Id: 8690
Title: Thanks for today's daily food
- Id: 8691
Title: Sacred Relics for Essence (1)
- Id: 8692
Title: Sacred Relics for Essence (2)
- Id: 8693
Title: Sacred Relics for Essence (3)
- Id: 8694
Title: Clean Water Procurement - Standby
TimeLimit: 4h
- Id: 8695
Title: Procurement of clean water (1)
- Id: 8696
Title: Procurement of clean water (2)
- Id: 8697
Title: Procurement of clean water (3)
- Id: 8698
Title: Late migration
- Id: 8699
Title: First Step Out of the City
- Id: 8700
Title: I couldn't even come halfway
- Id: 8701
Title: Scenery I've Seen for the First Time
- Id: 8702
Title: Smell of Volcanic Ash
- Id: 8703
Title: The easy way to go
- Id: 8718
Title: My friend's regards
- Id: 8719
Title: A new area somewhere in the anthill
- Id: 8720
@@ -8040,6 +8135,106 @@ Body:
- Id: 11667
Title: Squirrels are rats, too? Standby
TimeLimit: 4h
- Id: 11696
Title: Niren's Request
- Id: 11697
Title: Niren's Request
- Id: 11698
Title: Niren's Request
- Id: 11699
Title: Niren's Request
- Id: 11700
Title: Niren's Request
- Id: 11701
Title: Niren's Request
- Id: 11702
Title: Niren's Request
- Id: 11703
Title: Niren's Request
- Id: 11704
Title: Niren's Request
- Id: 11705
Title: Children of Grey
- Id: 11706
Title: Children of Grey
- Id: 11707
Title: Children of Grey
- Id: 11708
Title: Children of Grey
- Id: 11709
Title: Children of Grey
- Id: 11710
Title: Children of Grey
- Id: 11711
Title: Children of Grey
- Id: 11712
Title: Children of Grey
- Id: 11713
Title: Children of Grey
- Id: 11714
Title: Children of Grey
- Id: 11715
Title: Children of Grey
- Id: 11716
Title: Children of Grey
- Id: 11717
Title: Children of Grey
- Id: 11718
Title: Children of Grey
- Id: 11719
Title: Children of Grey
- Id: 11720
Title: Children of Grey
- Id: 11721
Title: Children of Grey
- Id: 11722
Title: Children of Grey
- Id: 11723
Title: Children of Grey
- Id: 11724
Title: Children of Grey
- Id: 11725
Title: Investigation of Oz Labyrinth
- Id: 11726
Title: Investigation of Oz Labyrinth
- Id: 11727
Title: Investigation of Oz Labyrinth
- Id: 11728
Title: Investigation of Oz Labyrinth
- Id: 11729
Title: Investigation of Oz Labyrinth
- Id: 11730
Title: Investigation of Oz Labyrinth
Targets:
- Id: 1
Location: oz_dun01
Count: 10
- Id: 11731
Title: Investigation of Oz Labyrinth
- Id: 11732
Title: Investigation of Oz Labyrinth
- Id: 11733
Title: Investigation of Oz Labyrinth
- Id: 11734
Title: Investigation of Oz Labyrinth
- Id: 11735
Title: Investigation of Oz Labyrinth
- Id: 11736
Title: Maze of Oz 1st Floor (170lv)
Targets:
- Mob: EP18_ASH_TOAD
Count: 20
- Id: 11737
Title: Maze of Oz Level 1 - Standby
TimeLimit: 4h
- Id: 11738
Title: Maze of Oz Level 2 (200lv)
Targets:
- Mob: EP18_HOT_MOLAR
Count: 20
- Id: 11739
Title: Maze of Oz Level 2 (200lv)
TimeLimit: 4h
- Id: 12000
Title: An old friend
- Id: 12001
@@ -9079,6 +9274,31 @@ Body:
- Id: 12506
Title: Let's try again to seal the crack
TimeLimit: 4h
- Id: 12520
Title: Villa of Deception
- Id: 12521
Title: Villa of Deception Hard
- Id: 12522
Title: Cooldown: Villa of Deception
TimeLimit: 4h
- Id: 12531
Title: Future General Candidate
- Id: 12532
Title: Trouble at the Top
- Id: 12533
Title: The Hidden Helper
- Id: 12534
Title: The Missing Camille
- Id: 12535
Title: The Governor's Decision
- Id: 12536
Title: The Scattered Luggage (North)
- Id: 12537
Title: Scattered Luggage (West)
- Id: 12538
Title: The Scattered Luggage (East)
- Id: 12539
Title: Scattered Luggage (South)
- Id: 13000
Title: RWC2011Card Gathering
- Id: 13001
@@ -11226,6 +11446,90 @@ Body:
Title: Farm Worker
- Id: 16547
Title: Juno Monster Society
- Id: 16548
Title: I can't sleep
Targets:
- Mob: EP18_FIREWIND_KITE
Count: 30
- Id: 16549
Title: I can't sleep
Targets:
- Mob: EP18_FIREWIND_KITE
Count: 30
- Id: 16550
Title: I Can't Sleep - Wait
TimeLimit: 4h
- Id: 16551
Title: The Story of Dinar
- Id: 16552
Title: Amira's Story
- Id: 16553
Title: Shanina's Grandma's Story
- Id: 16554
Title: Please collect the stories
- Id: 16555
Title: The Story of Dinar
- Id: 16556
Title: Amira's Story
- Id: 16557
Title: Shanina's Grandma's Story
- Id: 16558
Title: Please collect the stories
- Id: 16559
Title: Please collect the stories - Standby
TimeLimit: 4h
- Id: 16560
Title: This is not the place
- Id: 16561
Title: This is not the place
- Id: 16562
Title: This is not the place
- Id: 16563
Title: This is not the place
- Id: 16564
Title: This is not the place
- Id: 16565
Title: This is not the place
- Id: 16566
Title: This is not the place
- Id: 16567
Title: The Contest of the Grey Wolf Forest
- Id: 16568
Title: Everyone's Opinion
- Id: 16569
Title: Everyone's Opinion
- Id: 16570
Title: Everyone's Opinion
- Id: 16571
Title: Everyone's Opinion
- Id: 16572
Title: The Contest of the Grey Wolf Forest
- Id: 16573
Title: Source of Weapon
- Id: 16574
Title: Source of Weapon
- Id: 16575
Title: Source of Weapon
- Id: 16576
Title: Source of Weapon
- Id: 16577
Title: Source of Weapon
- Id: 16578
Title: Source of Weapon
- Id: 16579
Title: Source of Weapon
- Id: 16580
Title: Source of Weapon
- Id: 16581
Title: Children Know It
- Id: 16582
Title: Children Know It
- Id: 16583
Title: Children Know It
- Id: 16584
Title: The Price of Labor
- Id: 16585
Title: The Price of Labor
- Id: 17000
Title: Meet with Father Bamph
- Id: 17001
@@ -11487,12 +11791,61 @@ Body:
- Id: 17425
Title: (Standby) Thanatos Tower, 12th floor
TimeLimit: 4h
- Id: 17504
Title: Where's My Home
- Id: 17505
Title: Where's My Home
- Id: 17506
Title: Where's My Home
- Id: 17507
Title: Where's My Home
- Id: 17508
Title: Lack of Supplies
Drops:
- Mob: EP18_GREY_WOLF
Item: Ep18_Very_Ddan_Crystal
Rate: 5000
- Id: 17509
Title: (Standby) Lack of supplies
TimeLimit: 4h
- Id: 17510
Title: There are no bad beasts in the world
- Id: 17511
Title: There are no bad beasts in the world
- Id: 17512
Title: There are no bad beasts in the world
- Id: 17513
Title: The Unexpected Shepherd
- Id: 17514
Title: The Unexpected Shepherd
Targets:
- Mob: EP18_ASHRING
Count: 20
- Id: 17515
Title: The Unexpected Shepherd
- Id: 17516
Title: (Standby) Unexpected shepherd
TimeLimit: 4h
- Id: 17517
Title: The Rebels
- Id: 17518
Title: The Rebels
- Id: 17519
Title: The Rebels
- Id: 17520
Title: Wolf in the Sheep
- Id: 17521
Title: When you need a conversation
- Id: 17522
Title: Cleaning the Traitors
- Id: 17523
Title: Purification of the Sanctuary
- Id: 17524
Title: Cleaning the Traitors
- Id: 17525
Title: When you need a conversation
- Id: 17526
Title: Purification of the Sanctuary
- Id: 17527
Title: (Standby) Cleaning strategy
TimeLimit: 4h
@@ -11621,6 +11974,23 @@ Body:
- Id: 18080
Title: Goseong dungeon 1st floor attack
TimeLimit: 4h
- Id: 18082
Title: Eligibility to Participate in the Competition
- Id: 18083
Title: Investigation of Daishinkan's Villa
- Id: 18084
Title: Fact Investigation
- Id: 18085
Title: The Direction of Prayer
- Id: 18086
Title: Make the Grey Wolf Forest Safer
Targets:
- Id: 1
Location: gw_fild01
Count: 30
- Id: 18087
Title: Safer in the Gray Wolf Forest - Standby
TimeLimit: 4h
- Id: 18100
Title: Legends from Moscovia
- Id: 18101

File diff suppressed because it is too large Load Diff

View File

@@ -7864,3 +7864,178 @@ Body:
Royal_Guard: true
Royal_Guard_T: true
Imperial_Guard: true
- Job: Night_Watch
Inherit:
Novice: true
Gunslinger: true
Rebellion: true
Tree:
- Name: NW_P_F_I
MaxLevel: 10
- Name: NW_GRENADE_MASTERY
MaxLevel: 10
- Name: NW_INTENSIVE_AIM
MaxLevel: 1
Requires:
- Name: NW_P_F_I
Level: 1
- Name: NW_HIDDEN_CARD
MaxLevel: 10
Requires:
- Name: NW_P_F_I
Level: 5
- Name: NW_INTENSIVE_AIM
Level: 1
- Name: NW_BASIC_GRENADE
MaxLevel: 5
Requires:
- Name: NW_GRENADE_MASTERY
Level: 3
- Name: NW_GRENADE_FRAGMENT
MaxLevel: 7
Requires:
- Name: NW_GRENADE_MASTERY
Level: 1
- Name: NW_THE_VIGILANTE_AT_NIGHT
MaxLevel: 5
Requires:
- Name: NW_P_F_I
Level: 3
- Name: NW_INTENSIVE_AIM
Level: 1
- Name: NW_ONLY_ONE_BULLET
MaxLevel: 5
Requires:
- Name: NW_P_F_I
Level: 3
- Name: NW_INTENSIVE_AIM
Level: 1
- Name: NW_SPIRAL_SHOOTING
MaxLevel: 5
Requires:
- Name: NW_P_F_I
Level: 3
- Name: NW_INTENSIVE_AIM
Level: 1
- Name: NW_MAGAZINE_FOR_ONE
MaxLevel: 5
Requires:
- Name: NW_P_F_I
Level: 3
- Name: NW_INTENSIVE_AIM
Level: 1
- Name: NW_WILD_FIRE
MaxLevel: 5
Requires:
- Name: NW_P_F_I
Level: 3
- Name: NW_INTENSIVE_AIM
Level: 1
- Name: NW_HASTY_FIRE_IN_THE_HOLE
MaxLevel: 5
Requires:
- Name: NW_BASIC_GRENADE
Level: 3
- Name: NW_GRENADES_DROPPING
MaxLevel: 5
Requires:
- Name: NW_HASTY_FIRE_IN_THE_HOLE
Level: 3
- Name: NW_AUTO_FIRING_LAUNCHER
MaxLevel: 5
Requires:
- Name: NW_GRENADES_DROPPING
Level: 3
- Name: NW_MISSION_BOMBARD
MaxLevel: 10
Requires:
- Name: NW_GRENADE_MASTERY
Level: 5
- Name: NW_GRENADES_DROPPING
Level: 3
- Job: Hyper_Novice
Inherit:
Novice: true
Supernovice: true
Super_Novice_E: true
Tree:
- Name: HN_SELFSTUDY_TATICS
MaxLevel: 10
- Name: HN_SELFSTUDY_SOCERY
MaxLevel: 10
- Name: HN_DOUBLEBOWLINGBASH
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_TATICS
Level: 5
- Name: HN_SHIELD_CHAIN_RUSH
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_TATICS
Level: 5
- Name: HN_METEOR_STORM_BUSTER
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_SOCERY
Level: 5
- Name: HN_JUPITEL_THUNDER_STORM
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_SOCERY
Level: 5
- Name: HN_JACK_FROST_NOVA
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_SOCERY
Level: 5
- Name: HN_HELLS_DRIVE
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_SOCERY
Level: 5
- Name: HN_MEGA_SONIC_BLOW
MaxLevel: 10
Requires:
- Name: HN_DOUBLEBOWLINGBASH
Level: 7
- Name: HN_SPIRAL_PIERCE_MAX
MaxLevel: 10
Requires:
- Name: HN_SHIELD_CHAIN_RUSH
Level: 7
- Name: HN_GROUND_GRAVITATION
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_SOCERY
Level: 5
- Name: HN_NAPALM_VULCAN_STRIKE
MaxLevel: 10
Requires:
- Name: HN_SELFSTUDY_SOCERY
Level: 5
- Name: HN_BREAKINGLIMIT
MaxLevel: 1
Requires:
- Name: HN_DOUBLEBOWLINGBASH
Level: 7
- Name: HN_MEGA_SONIC_BLOW
Level: 7
- Name: HN_SHIELD_CHAIN_RUSH
Level: 7
- Name: HN_SPIRAL_PIERCE_MAX
Level: 7
- Name: HN_RULEBREAK
MaxLevel: 1
Requires:
- Name: HN_METEOR_STORM_BUSTER
Level: 5
- Name: HN_JUPITEL_THUNDER_STORM
Level: 5
- Name: HN_JACK_FROST_NOVA
Level: 5
- Name: HN_HELLS_DRIVE
Level: 5
- Name: HN_GROUND_GRAVITATION
Level: 5
- Name: HN_NAPALM_VULCAN_STRIKE
Level: 5

View File

@@ -582,3 +582,33 @@ Body:
- Level: 250
Points: 4099
TraitPoints: 190
- Level: 251
Points: 4099
TraitPoints: 193
- Level: 252
Points: 4099
TraitPoints: 196
- Level: 253
Points: 4099
TraitPoints: 199
- Level: 254
Points: 4099
TraitPoints: 202
- Level: 255
Points: 4099
TraitPoints: 209
- Level: 256
Points: 4099
TraitPoints: 212
- Level: 257
Points: 4099
TraitPoints: 215
- Level: 258
Points: 4099
TraitPoints: 218
- Level: 259
Points: 4099
TraitPoints: 221
- Level: 260
Points: 4099
TraitPoints: 228

View File

@@ -165,6 +165,7 @@ Body:
- Status: Poison
DurationLookup: NPC_POISON
CalcFlags:
Def: true
Def2: true
Regen: true
Opt2:
@@ -261,6 +262,7 @@ Body:
- Status: Dpoison
DurationLookup: NPC_POISON
CalcFlags:
Def: true
Def2: true
Regen: true
Opt2:
@@ -1115,6 +1117,7 @@ Body:
Icon: EFST_GROUNDMAGIC
DurationLookup: SA_VOLCANO
CalcFlags:
Batk: true
Watk: true
Matk: true
Flags:
@@ -1139,6 +1142,10 @@ Body:
NoClearance: true
- Status: Watk_Element
DurationLookup: MS_MAGNUM
Flags:
NoSave: true
EndOnStart:
Watk_Element: true
- Status: Armor
DurationLookup: NPC_DEFENDER
- Status: Armor_Element_Water
@@ -2822,6 +2829,7 @@ Body:
CalcFlags:
Flee: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2830,6 +2838,7 @@ Body:
CalcFlags:
Watk: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2838,6 +2847,7 @@ Body:
CalcFlags:
MaxHp: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2846,6 +2856,7 @@ Body:
CalcFlags:
MaxSp: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -2854,6 +2865,7 @@ Body:
CalcFlags:
Hit: true
Flags:
BlEffect: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
@@ -5732,6 +5744,8 @@ Body:
DurationLookup: RA_UNLIMIT
Flags:
DisplayPc: true
NoDispell: true
NoClearance: true
- Status: Kings_Grace
Icon: EFST_KINGS_GRACE
DurationLookup: LG_KINGS_GRACE
@@ -7633,7 +7647,7 @@ Body:
RemoveOnDamaged: true
- Status: Handicapstate_Lightningstrike
Icon: EFST_HANDICAPSTATE_LIGHTNINGSTRIKE
DurationLookup: WH_SWIFTTRAP
DurationLookup: EM_LIGHTNING_LAND
States:
#NoMove: true
#NoCast: true
@@ -7646,7 +7660,7 @@ Body:
RemoveOnDamaged: true
- Status: Handicapstate_Crystallization
Icon: EFST_HANDICAPSTATE_CRYSTALLIZATION
DurationLookup: WH_SOLIDTRAP
DurationLookup: EM_TERRA_DRIVE
States:
#NoMove: true
#NoCast: true
@@ -7660,7 +7674,7 @@ Body:
RemoveOnDamaged: true
- Status: Handicapstate_Conflagration
Icon: EFST_HANDICAPSTATE_CONFLAGRATION
DurationLookup: WH_FLAMETRAP
DurationLookup: EM_CONFLAGRATION
Flags:
BlEffect: true
DisplayPc: true
@@ -7888,6 +7902,8 @@ Body:
BlEffect: true
DisplayPc: true
SendVal1: true
NoDispell: true
NoClearance: true
- Status: Shadow_Weapon
Icon: EFST_SHADOW_WEAPON
DurationLookup: SHC_ENCHANTING_SHADOW
@@ -7933,6 +7949,9 @@ Body:
Flags:
BlEffect: true
DisplayPc: true
NoBanishingBuster: true
NoDispell: true
NoClearance: true
- Status: Ultimate_S
Icon: EFST_ULTIMATE_S
DurationLookup: IG_ULTIMATE_SACRIFICE
@@ -8745,9 +8764,134 @@ Body:
DurationLookup: MT_RUSH_QUAKE
CalcFlags:
All: true
Flags:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: G_LIFEPOTION
Icon: EFST_G_LIFEPOTION
Flags:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Hnnoweapon
Icon: EFST_NOEQUIPWEAPON
DurationLookup: HN_DOUBLEBOWLINGBASH
- Status: Shieldchainrush
Icon: EFST_SHIELDCHAINRUSH
DurationLookup: HN_SHIELD_CHAIN_RUSH
CalcFlags:
Speed: true
Flags:
BossResist: true
- Status: Mistyfrost
Icon: EFST_MISTYFROST
DurationLookup: HN_JACK_FROST_NOVA
Flags:
BossResist: true
- Status: Groundgravity
Icon: EFST_GROUNDGRAVITY
DurationLookup: HN_GROUND_GRAVITATION
CalcFlags:
Speed: true
Flags:
BossResist: true
- Status: Breakinglimit
Icon: EFST_BREAKINGLIMIT
DurationLookup: HN_BREAKINGLIMIT
- Status: Rulebreak
Icon: EFST_RULEBREAK
DurationLookup: HN_RULEBREAK
- Status: Intensive_Aim
Icon: EFST_INTENSIVE_AIM
States:
NoMove: true
CalcFlags:
Batk: true
Hit: true
Cri: true
Flags:
BlEffect: true
DisplayPc: true
SendVal1: true
NoSave: true
NoBanishingBuster: true
NoDispell: true
NoClearance: true
- Status: Intensive_Aim_Count
Icon: EFST_INTENSIVE_AIM_COUNT
Flags:
DisplayPc: true
SendVal1: true
NoSave: true
NoBanishingBuster: true
NoDispell: true
NoClearance: true
- Status: Grenade_Fragment_1
Icon: EFST_GRENADE_FRAGMENT_1
DurationLookup: NW_GRENADE_FRAGMENT
EndOnStart:
Grenade_Fragment_2: true
Grenade_Fragment_3: true
Grenade_Fragment_4: true
Grenade_Fragment_5: true
Grenade_Fragment_6: true
- Status: Grenade_Fragment_2
Icon: EFST_GRENADE_FRAGMENT_2
DurationLookup: NW_GRENADE_FRAGMENT
EndOnStart:
Grenade_Fragment_1: true
Grenade_Fragment_3: true
Grenade_Fragment_4: true
Grenade_Fragment_5: true
Grenade_Fragment_6: true
- Status: Grenade_Fragment_3
Icon: EFST_GRENADE_FRAGMENT_3
DurationLookup: NW_GRENADE_FRAGMENT
EndOnStart:
Grenade_Fragment_1: true
Grenade_Fragment_2: true
Grenade_Fragment_4: true
Grenade_Fragment_5: true
Grenade_Fragment_6: true
- Status: Grenade_Fragment_4
Icon: EFST_GRENADE_FRAGMENT_4
DurationLookup: NW_GRENADE_FRAGMENT
EndOnStart:
Grenade_Fragment_1: true
Grenade_Fragment_2: true
Grenade_Fragment_3: true
Grenade_Fragment_5: true
Grenade_Fragment_6: true
- Status: Grenade_Fragment_5
Icon: EFST_GRENADE_FRAGMENT_5
DurationLookup: NW_GRENADE_FRAGMENT
EndOnStart:
Grenade_Fragment_1: true
Grenade_Fragment_2: true
Grenade_Fragment_3: true
Grenade_Fragment_4: true
Grenade_Fragment_6: true
- Status: Grenade_Fragment_6
Icon: EFST_GRENADE_FRAGMENT_6
DurationLookup: NW_GRENADE_FRAGMENT
EndOnStart:
Grenade_Fragment_1: true
Grenade_Fragment_2: true
Grenade_Fragment_3: true
Grenade_Fragment_4: true
Grenade_Fragment_5: true
- Status: Auto_Firing_Launcher
Icon: EFST_AUTO_FIRING_LAUNCHEREFST
DurationLookup: NW_AUTO_FIRING_LAUNCHER
Flags:
SendVal1: true
- Status: Hidden_Card
Icon: EFST_HIDDEN_CARD
DurationLookup: NW_HIDDEN_CARD
CalcFlags:
All: true
Flags:
NoBanishingBuster: true
NoDispell: true
NoClearance: true

View File

@@ -125,6 +125,12 @@ item delay, etc).
---------------------------------------
*trade_unconditional
Allows player to ignore the trade conditions of items (drop, trade, sell, cart, storage/gstorage, mail and auction).
---------------------------------------
======================
| 3. Command-related |
======================

View File

@@ -20,11 +20,30 @@ Title: Quest title.
TimeLimit: Amount of time before the quest expires.
Use a number followed by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
Specifying with "+" will mark how long until the quest expires.
Specifying without "+" will mark the exact time the quest expires. Format: "d" (optional), [0-23]"h" (required), [0-59]"mn" (optional), [0-59]"s" (optional).
Use a number followed by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
Format: "d" (optional), [0-23]"h" (optional), [0-59]"mn" (optional), [0-59]"s" (optional).
Please note the number before "d" only shifts the exact timer to the given day(s).
Example:
- Id: 2069
Title: Tierra Gorge Battle
# The quest expires 5 minutes after being taken.
TimeLimit: +5mn
Specifying without "+" will mark the exact time the quest expires.
Use a number followed by "d" for day(s) to shift the exact timer to the given day(s) or use the days of the week to set the expiration day,
and "h" for hour(s), "mn" for minute(s), and "s" for second(s).
Format: [days of the week] or "d" (optionals), [0-23]"h" (optional), [0-59]"mn" (optional), [0-59]"s" (optional).
Examples:
- Id: 9419
Title: Attack Sky Fortress Invading Prontera
# The quest expires 3 days after being taken at 4am.
TimeLimit: 3d 4h
- Id: 5965
Title: "[Standby] Devil's Special"
# The quest expires Monday at 4am.
TimeLimit: Monday 4h
---------------------------------------

View File

@@ -8966,8 +8966,9 @@ Get info of elemental of attached player or player by char_id.
Other info can be obtained by 'getunitdata' command.
Valid types are:
0: Elemental ID
1: Elemental Game ID
ELEMINFO_ID Elemental ID (ID unique to elementals unit type)
ELEMINFO_GAMEID Elemental Game ID
ELEMINFO_CLASS Elemental Class (ID defined in elemental_db.yml)
---------------------------------------
\\
@@ -11412,3 +11413,37 @@ Example:
autoloot(10000); // 100.00%
---------------------------------------
*setdialogalign(<align>);
Set vertical or horizontal align in NPC dialog.
Valid aligns:
- horizontal align:
DIALOG_ALIGN_LEFT
DIALOG_ALIGN_CENTER
DIALOG_ALIGN_RIGHT
- vertical align:
DIALOG_ALIGN_TOP
DIALOG_ALIGN_MIDDLE
DIALOG_ALIGN_BOTTOM
---------------------------------------
*setdialogsize(<width>, <height>)
Set size for NPC dialog in pixels.
---------------------------------------
*setdialogpos(<x>, <y>)
Set position for NPC dialog in pixels.
---------------------------------------
*setdialogpospercent(<x>, <y>)
Set position for NPC dialog in screen size percent.
---------------------------------------

View File

@@ -191,7 +191,7 @@ dewata,114,243,6 script Lazy Young Man#dew 536,1,1,{
mes "[Lazy Young Man]";
mes "Really? For me?? I'll give you this in return... Thanks... Hehe~";
delitem 11534,1; //Coco_Juice
getrandgroupitem(IG_GiftBox),1;
getgroupitem(IG_GiftBox);
close;
case 2:
mes "[Lazy Young Man]";

View File

@@ -10,6 +10,7 @@
//= 1.0 Initial release [crazyarashi]
//= 1.1 Optimizations and cleanup [Everade]
//= 1.2 Cleanup [Capuche]
//= 1.3 Updated monsters spawn times (significantly reduced). [Atemo]
//============================================================
ba_maison,120,320,0 script #herbs_chk HIDDEN_WARP_NPC,3,3,{
@@ -1623,36 +1624,36 @@ OnSummon:
'total_mobs = 16;
monster 'map_herbs$,77,197,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,51,196,"Flower Garden Watcher",20622,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,63,217,"Flower Garden Watcher",20622,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,81,195,"Flower Garden Watcher",20624,1, .@event$;
monster 'map_herbs$,61,217,"Flower Garden Watcher",20622,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,57,193,"Flower Garden Watcher",20622,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,56,191,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,59,193,"Flower Garden Watcher",20626,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,59,192,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,60,222,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,58,191,"Flower Garden Watcher",20622,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,78,199,"Flower Garden Watcher",20622,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,54,192,"Flower Garden Watcher",20626,1, .@event$;
monster 'map_herbs$,79,195,"Flower Garden Watcher",20622,1, .@event$;
sleep 9000;
sleep 100;
monster 'map_herbs$,76,192,"Flower Garden Watcher",20626,1, .@event$;
monster 'map_herbs$,51,196,"Flower Garden Watcher",20624,1, .@event$;
}
else {
'total_mobs = 16;
monster 'map_herbs$,53,197,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,62,217,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,57,219,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,62,222,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,79,200,"Flower Garden Watcher",20623,1, .@event$;
@@ -1660,14 +1661,14 @@ OnSummon:
monster 'map_herbs$,80,199,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,58,193,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,56,192,"Flower Garden Watcher",20625,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,51,191,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,51,192,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,83,199,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,83,191,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,83,196,"Flower Garden Watcher",20623,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,57,193,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,62,222,"Flower Garden Watcher",20623,1, .@event$;
}
@@ -1678,15 +1679,15 @@ OnSummon:
monster 'map_herbs$,114,226,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,114,227,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,119,217,"Flower Garden Watcher",20624,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,118,227,"Flower Garden Watcher",20622,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,116,216,"Flower Garden Watcher",20626,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,114,215,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,114,225,"Flower Garden Watcher",20622,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,114,224,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,139,205,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,140,202,"Flower Garden Watcher",20622,1, .@event$;
@@ -1708,30 +1709,30 @@ OnSummon:
monster 'map_herbs$,142,205,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,145,200,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,146,201,"Flower Garden Watcher",20625,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,147,201,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,141,208,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,166,224,"Flower Garden Watcher",20625,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,171,217,"Flower Garden Watcher",20627,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,172,225,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,173,214,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,174,225,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,174,223,"Flower Garden Watcher",20627,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,170,213,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,169,219,"Flower Garden Watcher",20623,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,136,205,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,136,210,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,120,224,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,118,223,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,117,219,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,115,214,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,115,233,"Flower Garden Watcher",20623,1, .@event$;
}
break;
@@ -1740,45 +1741,45 @@ OnSummon:
'total_mobs = 28;
monster 'map_herbs$,213,205,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,202,214,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,202,213,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,210,212,"Flower Garden Watcher",20626,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,211,207,"Flower Garden Watcher",20624,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,209,214,"Flower Garden Watcher",20624,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,203,212,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,218,194,"Flower Garden Watcher",20622,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,203,196,"Flower Garden Watcher",20622,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,204,193,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,215,201,"Flower Garden Watcher",20624,1, .@event$;
monster 'map_herbs$,204,193,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,205,213,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,218,208,"Flower Garden Watcher",20622,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,210,210,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,245,214,"Flower Garden Watcher",20626,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,220,192,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,248,208,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,253,208,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,253,208,"Flower Garden Watcher",20626,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,246,212,"Flower Garden Watcher",20624,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,251,210,"Flower Garden Watcher",20622,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,245,209,"Flower Garden Watcher",20626,1, .@event$;
monster 'map_herbs$,222,195,"Flower Garden Watcher",20624,1, .@event$;
monster 'map_herbs$,203,212,"Flower Garden Watcher",20624,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,208,213,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,219,192,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,245,209,"Flower Garden Watcher",20626,1, .@event$;
@@ -1787,35 +1788,35 @@ OnSummon:
'total_mobs = 27;
monster 'map_herbs$,207,194,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,217,204,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,210,210,"Flower Garden Watcher",20627,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,218,195,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,211,209,"Flower Garden Watcher",20627,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,210,211,"Flower Garden Watcher",20625,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,207,194,"Flower Garden Watcher",20625,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,209,214,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,216,192,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,208,211,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,214,208,"Flower Garden Watcher",20623,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,209,214,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,215,201,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,205,214,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,205,214,"Flower Garden Watcher",20625,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,220,207,"Flower Garden Watcher",20625,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,208,213,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,202,212,"Flower Garden Watcher",20623,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,202,193,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,206,214,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,245,212,"Flower Garden Watcher",20627,1, .@event$;
@@ -1849,15 +1850,15 @@ OnSummon:
monster 'map_herbs$,285,210,"Flower Garden Watcher",20624,1, .@event$;
monster 'map_herbs$,283,228,"Flower Garden Watcher",20624,1, .@event$;
monster 'map_herbs$,294,252,"Flower Garden Watcher",20624,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,295,247,"Flower Garden Watcher",20626,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,294,245,"Flower Garden Watcher",20624,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,281,232,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,287,219,"Flower Garden Watcher",20626,1, .@event$;
monster 'map_herbs$,302,239,"Flower Garden Watcher",20626,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,307,217,"Flower Garden Watcher",20622,1, .@event$;
monster 'map_herbs$,300,235,"Flower Garden Watcher",20624,1, .@event$;
monster 'map_herbs$,295,249,"Flower Garden Watcher",20624,1, .@event$;
@@ -1873,18 +1874,18 @@ OnSummon:
monster 'map_herbs$,284,236,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,283,235,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,304,240,"Flower Garden Watcher",20627,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,298,246,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,305,224,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,310,225,"Flower Garden Watcher",20627,1, .@event$;
sleep 9000;
sleep 100;
monster 'map_herbs$,284,218,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,298,213,"Flower Garden Watcher",20625,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,308,224,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,290,210,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,310,224,"Flower Garden Watcher",20627,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,308,220,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,284,211,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,284,218,"Flower Garden Watcher",20623,1, .@event$;
@@ -1892,22 +1893,22 @@ OnSummon:
monster 'map_herbs$,281,231,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,280,226,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,285,210,"Flower Garden Watcher",20625,1, .@event$;
sleep 6000;
sleep 100;
monster 'map_herbs$,280,227,"Flower Garden Watcher",20623,1, .@event$;
monster 'map_herbs$,285,234,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,283,236,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,284,233,"Flower Garden Watcher",20625,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,284,237,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,284,239,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,293,246,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,300,247,"Flower Garden Watcher",20627,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,294,253,"Flower Garden Watcher",20627,1, .@event$;
monster 'map_herbs$,302,240,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,299,255,"Flower Garden Watcher",20625,1, .@event$;
monster 'map_herbs$,295,256,"Flower Garden Watcher",20625,1, .@event$;
sleep 3000;
sleep 100;
monster 'map_herbs$,310,218,"Flower Garden Watcher",20623,1, .@event$;
}
break;

View File

@@ -0,0 +1,615 @@
//===== rAthena script =======================================
//= Instance: The Maze of Oz.
//===== Description: =========================================
//- [Walkthrough conversion]
//- Part of the episode 18.1 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";
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";
cutin "ep18_merchant.png",2;
changequest 11717,11719;
ep18_1_main = 30;
close3;
}
if (ep18_1_main == 30) {
mes "[Miriam in disguise]";
mes "Then I'll start the ^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..";
close;
}
switch( select( "Open the door", "Enter", "Stop" ) ) {
case 1:
if (instance_create(.@md_name$) < 0) {
mes "Party: " + getpartyname(getcharid(1)) + "";
mes "Leader: " + strcharinfo(0) + "";
mes "^0000ff" + .@md_name$ + " ^000000- Unknown error";
close;
}
mes "[Miriam in disguise]";
mes "You'd better wait a little before you go in.";
close;
case 2:
switch( instance_enter(.@md_name$) ) {
case IE_OTHER:
mes "[Miriam in disguise]";
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";
close;
case IE_NOMEMBER:
mes "[Miriam in disguise]";
mes "^ff0000Only a member of the party can enter the Memorial Dungeon.^000000";
close;
case IE_OK:
mapannounce "ra_fild10", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering " + .@md_name$ + ".",bc_map,"0x00ff99",FW_NORMAL ,12;
end;
}
case 3:
end;
}
}
cutin "ep18_merchant.png",2;
mes "[Vendor]";
mes "Someone must have been around here, but they just disappeared. Where did they go?";
close3;
OnInit:
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11717) == 1" );
questinfo( QTYPE_QUEST, 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.";
next;
if (select( "Use a rope to climb", "Do not use" ) == 2)
end;
warp "ra_fild10",180,174;
end;
}
1@oz,282,175,3 script Miriam#ozmd1 4_EP18_MIRIAM,{
if ('event_oz != 0)
end;
'event_oz = 1;
.@miriam1$ = instance_npcname("Miriam#ozmd1");
.@maggi1$ = instance_npcname("Magi#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$;
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$;
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$;
cutin "ep18_miriam_03.png",2;
sleep2 2000;
npctalk "Miriam: Beware there may be embers in the lava ash.", .@miriam1$;
sleep2 2000;
npctalk "Miriam: If you inhale incorrectly, you 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$;
sleep2 2000;
npctalk "Miriam: Please follow the road to the north first.", .@miriam1$;
sleep2 2000;
cutin "",255;
setpcblock PCBLOCK_NPC, false;
disablenpc .@maggi1$;
disablenpc .@mark1$;
disablenpc .@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
// Step 2
1@oz,271,272,3 script 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$;
sleep2 2000;
npctalk "Miriam: We must be very careful crossing the bridge, let's talk again after.", .@miriam2$;
sleep2 2000;
setpcblock PCBLOCK_NPC, false;
disablenpc .@miriam2$;
enablenpc 'miriam3$;
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,{
if ('event_oz != 2)
end;
'event_oz = 3;
'miriam3$ = instance_npcname("Miriam#ozmd3");
.@maggi3$ = instance_npcname("Magi#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$;
sleep2 2000;
npctalk "Miriam: Then I will cross first, so please follow slowly. It will help 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$;
sleep2 2000;
npctalk "Magi: Your legs look very old...", .@maggi3$;
sleep2 2000;
npctalk "Mark: Everyone be careful", .@mark3$;
sleep2 2000;
setpcblock PCBLOCK_NPC, false;
disablenpc .@maggi3$;
disablenpc .@mark3$;
disablenpc .@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
end;
OnEvent1:
unitwalk 'miriam3_id,211,272, 'miriam3$ + "::OnEvent2";
end;
OnEvent2:
unitwalk 'miriam3_id,191,272, 'miriam3$ + "::OnEvent3";
end;
OnEvent3:
unitwalk 'miriam3_id,171,272, 'miriam3$ + "::OnEvent4";
end;
OnEvent4:
unitwalk 'miriam3_id,157,272, 'miriam3$ + "::OnEvent5";
end;
OnEvent5:
disablenpc 'miriam3$;
enablenpc instance_npcname("Miriam#ozmd4");
enablenpc instance_npcname("Ash Toad#ozmd1");
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
// Step 4 + 5
1@oz,157,272,3 script Miriam#ozmd4 4_EP18_MIRIAM,{
if ('event_oz != 3)
end;
'event_oz = 4;
.@miriam4$ = instance_npcname("Miriam#ozmd4");
.@tamarin4$ = instance_npcname("Tamarin#ozmd4");
.@ashtoad2$ = instance_npcname("Ash Toad#ozmd2");
.@maggi4$ = instance_npcname("Magi#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;
sleep2 1500;
mapannounce 'map_name$, "Miriam: I'll take this rude bastard.", bc_map, 0x00B7EE,FW_NORMAL,16;
sleep2 1500;
mapannounce 'map_name$, "Tamarin: Appeared in the back!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
sleep2 2000;
enablenpc .@tamarin4$;
sleep2 500;
enablenpc .@ashtoad2$;
mapannounce 'map_name$, "Magi: Crazy!!!", bc_map, 0x00B7EE,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;
sleep2 1000;
'mob_count_oz = 0;
monster 'map_name$,145,274,"Ash Toad",21295,1, .@miriam4$ + "::OnMobDead"; // EP18_ASH_TOAD
enablenpc .@ashtoad3$;
monster 'map_name$,143,278,"Ash Toad",21295,1, .@miriam4$ + "::OnMobDead"; // EP18_ASH_TOAD
setpcblock PCBLOCK_NPC, false;
end;
// Note: on official the event seems to start right after killing the 2 mobs. The character can't move.
// There is no OnTouch area, a character outside the npc range can't see the dialog. Intended ?
OnMobDead:
'mob_count_oz++;
if ('mob_count_oz < 2)
end;
if ('event_oz != 4)
end;
'event_oz = 5;
.@tamarin4$ = instance_npcname("Tamarin#ozmd4");
.@ashtoad2$ = instance_npcname("Ash Toad#ozmd2");
.@maggi4$ = instance_npcname("Magi#ozmd4");
.@mark4$ = instance_npcname("Mark#ozmd4");
.@ashtoad3$ = instance_npcname("Ash Toad#ozmd3");
.@maram4$ = instance_npcname("Maram#ozmd4");
.@ashtoad1$ = instance_npcname("Ash Toad#ozmd1");
.@tamarin4$ = instance_npcname("Tamarin#ozmd4");
.@miriam4$ = instance_npcname("Miriam#ozmd4");
setpcblock PCBLOCK_NPC, true;
npctalk "Tamarin: I did it!!!", .@tamarin4$;
disablenpc .@ashtoad2$;
sleep2 2000;
npctalk "Magi: Me 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$;
disablenpc .@ashtoad1$;
sleep2 2000;
npctalk "Maram : " + strcharinfo(0) + " Are you okay?", .@maram4$;
enablenpc .@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$;
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$;
sleep2 2000;
npctalk "Maram: It's a big deal because it's getting harder and harder to move goods because of these monsters.", .@maram4$;
sleep2 2000;
npctalk "Tamarin: If you go to the ground?", .@tamarin4$;
sleep2 2000;
npctalk "Tamarin: I heard there used to be a bridge to cross a canyon?", .@tamarin4$;
sleep2 2000;
npctalk "Tamarin: Because there are still remains...", .@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$;
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$;
sleep2 2000;
npctalk "Maram: It's not difficult to make 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$;
sleep2 2000;
npctalk "Maram: It's dangerous and inconvenient right now, but I 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$;
sleep2 2000;
npctalk "Miriam: Without the Maze of Oz...", .@miriam4$;
sleep2 2000;
npctalk "Miriam: It must have been a lot harder than it is now.", .@miriam4$;
sleep2 2000;
npctalk "Maram: That's right", .@maram4$;
sleep2 2000;
npctalk "Maram: Now, shall we walk the lovely maze of Oz again?", .@maram4$;
sleep2 2000;
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$;
sleep2 2000;
npctalk "Miriam: It would be nice if the monsters didn't appear...", .@miriam4$;
sleep2 1000;
disablenpc .@maram4$;
setpcblock PCBLOCK_NPC, false;
disablenpc .@maggi4$;
disablenpc .@mark4$;
disablenpc .@tamarin4$;
disablenpc .@miriam4$;
enablenpc instance_npcname("Maram#ozmd5");
end;
}
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,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
// Step 6
1@oz,98,172,3 script Maram#ozmd5 EP18_NPC_MARAM,{
if ('event_oz != 5)
end;
'event_oz = 6;
.@miriam$ = instance_npcname("Miriam#ozmd5");
.@maram$ = instance_npcname("Maram#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... ";
sleep2 2000;
npctalk "Maram: How long will the maze of Oz last...";
sleep2 3000;
mapannounce 'map_name$, "??? : ugh!!!!!!!!!!!!!!!!!!!", bc_map, 0x00B7EE,FW_NORMAL,16;
sleep2 2000;
npctalk "Maram: This voice?!?!?!?!?";
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");
unitwalk getnpcid(0),68,165, .@maram$ + "::OnMove";
donpcevent .@miriam$ + "::OnMove";
end;
OnMove:
disablenpc instance_npcname("Maram#ozmd5");
enablenpc instance_npcname("Maram#ozmd7");
enablenpc instance_npcname("Imril#ozmd6");
end;
}
1@oz,97,167,3 script 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
// Step 7
1@oz,68,165,3 script Maram#ozmd7 4_EP18_MARAM,{
if ('event_oz != 6)
end;
'event_oz = 7;
npctalk "Maram: Are you okay, Imril?";
donpcevent instance_npcname("Imril#ozmd6") + "::OnStart";
disablenpc instance_npcname("Maram#ozmd7");
end;
}
// Step 8
1@oz,61,163,5 script Imril#ozmd6 4_EP18_IMRIL,{
end;
OnStart:
'mob_count_oz = 0;
.@npc_name$ = instance_npcname("Imril#ozmd6");
monster 'map_name$,64,164,"Ash Toad",21295,1, .@npc_name$ + "::OnMobDead"; // EP18_ASH_TOAD
monster 'map_name$,62,161,"rake hand",21296,1, .@npc_name$ + "::OnMobDead"; // EP18_RAKEHAND
end;
OnMobDead:
'mob_count_oz++;
if ('mob_count_oz < 2)
end;
if ('event_oz != 7)
end;
'event_oz = 8;
.@maram8$ = instance_npcname("Maram#ozmd8");
.@imril6$ = instance_npcname("Imril#ozmd6");
.@miriam5$ = instance_npcname("Miriam#ozmd5");
.@maggi6$ = instance_npcname("Magi#ozmd6");
.@mark6$ = instance_npcname("Mark#ozmd6");
.@tamarin6$ = instance_npcname("Tamarin#ozmd6");
setpcblock PCBLOCK_NPC, true;
enablenpc .@maram8$;
npctalk "Imril: Thanks! We almost died!", .@imril6$;
sleep2 2000;
npctalk "Imril: Don't go downstairs because the atmosphere isn't too bad.", .@imril6$;
sleep2 2000;
npctalk "Miriam: You seem to see monsters more often than last time.", .@miriam5$;
sleep2 2000;
npctalk "Imril: But what about those people?", .@imril6$;
enablenpc .@maggi6$;
enablenpc .@mark6$;
enablenpc .@tamarin6$;
sleep2 2000;
npctalk "Maram: They are adventurers who sometimes help with mother's work.", .@maram8$;
sleep2 2000;
npctalk "Maram: Trustworthy people, don't be so wary.", .@maram8$;
sleep2 2000;
npctalk "Imril: Because 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$;
sleep2 2000;
npctalk "Maram: Not long left.", .@maram8$;
sleep2 2000;
npctalk "Maram: It's hard to see, but just follow the road up here!", .@maram8$;
sleep2 2000;
npctalk "Tamarin: I think this is the way!", .@tamarin6$;
disablenpc .@maggi6$;
disablenpc .@mark6$;
disablenpc .@tamarin6$;
disablenpc .@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
// Step 9
1@oz,58,256,5 script #oz_way 1_SHADOW_NPC,3,3,{
end;
OnTouch:
if ('event_oz != 8)
end;
'event_oz = 9;
enablenpc instance_npcname("Maram#ozmd6");
end;
}
// Step 10 (maybe not required ?)
1@oz,44,255,5 script Maram#ozmd6 4_EP18_MARAM,{
if ('event_oz != 9)
end;
'event_oz = 10;
npctalk "Maram: This way!!!";
initnpctimer;
end;
OnTimer2000:
disablenpc instance_npcname("Maram#ozmd6");
enablenpc instance_npcname("Maram#ozmd9");
enablenpc instance_npcname("Rope#outoz2");
end;
}
// Step 11
// (Step 29 on the main quest).
1@oz,21,189,5 script Maram#ozmd9 4_EP18_MARAM,{
if ('event_oz != 10)
end;
'event_oz = 11;
.@maram9$ = instance_npcname("Maram#ozmd9");
.@miriam7$ = instance_npcname("Miriam#ozmd7");
.@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$;
sleep2 2000;
npctalk "Imril: I'll go get some hidden stuff 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;
}
disablenpc .@miriam7$;
disablenpc .@imril7$;
setpcblock PCBLOCK_NPC, false;
end;
OnInstanceInit:
disablenpc instance_npcname("Maram#ozmd9");
questinfo( QTYPE_QUEST, 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
// 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;
}
end;
OnInstanceInit:
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11720) == 1" );
end;
}
// Spawn monsters
1@oz,22,207,5 script #oz01 1_SHADOW_NPC,4,4,{
end;
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) );
end;
}
1@oz,30,237,5 duplicate(#oz01) #oz02 1_SHADOW_NPC,4,4
1@oz,44,264,5 duplicate(#oz01) #oz03 1_SHADOW_NPC,4,4
1@oz,62,247,5 duplicate(#oz01) #oz04 1_SHADOW_NPC,4,4
1@oz,72,222,5 duplicate(#oz01) #oz05 1_SHADOW_NPC,4,4
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

View File

@@ -0,0 +1,462 @@
//===== rAthena Script =======================================
//= Instance: Thor Gunsu Base.
//===== Description: =========================================
//- [Walkthrough conversion]
//- Part of the episode 18.1 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)
end;
if (ep18_1_main == 45) {
cutin "ep18_maram_01.png",2;
mes "[Maram]";
mes "You have arrived, adventurer!";
mes "You did a great job getting 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.";
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;
next;
}
else if (ep18_1_main == 46) {
mes "[Maram]";
mes "Let's try to get in as far as possible from the guard tower.";
next;
}
.@md_name$ = "Thor Gunsu Base";
cutin "",255;
mes "^FF0000 Any arbitrary processing such as taming monsters in the dungeon is not considered normal. Please note.^000000";
next;
// player has party
if (is_party_leader()) {
// player is leader of the party
.@create$ = "Open " + .@md_name$;
}
switch( select( .@create$, .@md_name$ + " entry" ) ) {
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";
if (instance_create(.@md_name$) < 0) {
mes "Party: " + getpartyname(getcharid(1)) + "";
mes "Leader: " + strcharinfo(0) + "";
mes "^0000ff" + .@md_name$ + " ^000000- Unknown error";
close3;
}
close3;
case 2:
// Note: instance not forced solo
switch( instance_enter(.@md_name$) ) {
case IE_OTHER:
mes "[Maram]";
mes "^ff0000An unknown error occurred.^000000";
close;
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.";
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;
// warp 1@tcamp,103,237;
end;
}
}
end;
OnInit:
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(16577) == 1" );
end;
}
1@tcamp,106,237,3 script Maram#base1 4_EP18_MARAM,{
cutin "ep18_maram_01.png",2;
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.";
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;
OnInstanceInit:
'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;
setcell 'map_tcamp$,80,94,80,100,cell_walkable,0;
// some monsters spawn randomly
monster 'map_tcamp$,0,0,"Base Soldier",21310,18; // EP18_MD_GUARD_A
monster 'map_tcamp$,0,0,"Base Soldier",21309,18; // EP18_MD_THOR_GUARD
end;
}
// unknown npc effect
// 1@tcamp,244,152,3 duplicate(dummy_npc) #Remote 1 CLEAR_NPC
//-------------------------------------------------------------------
// Traps
//-------------------------------------------------------------------
1@tcamp,120,228,3 script Watch Tower#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;
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
areamonster 'map_tcamp$,.@x-2,.@y-2,.@x+2,.@y+2,"Base Soldier",21310,3; // EP18_MD_GUARD_A
end;
OnTimer2000:
specialeffect EF_WARP;
initnpctimer;
end;
OnInstanceInit:
initnpctimer;
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
//-------------------------------------------------------------------
// Walls
//-------------------------------------------------------------------
1@tcamp,138,216,3 script Lock#1-1 4_ROPEPILE,{
.@maram$ = instance_npcname("Maram#Lock1");
enablenpc .@maram$;
npctalk "Maram: Wait a minute. 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");
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,136,145,3 script Lock#2-1 4_ROPEPILE,{
.@maram$ = instance_npcname("Maram#Lock2");
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 .@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,223,109,3 script Lock#3-1 4_ROPEPILE,{
.@maram$ = instance_npcname("Maram#Lock3");
enablenpc .@maram$;
npctalk "Maram: This building looks pretty suspicious, right? There must be a surveillance system in it as well.", .@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");
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,80,99,3 script Lock#4-1 4_ROPEPILE,{
.@maram$ = instance_npcname("Maram#Lock4");
enablenpc .@maram$;
npctalk "Maram: I think you've gotten pretty deep. You should be able to find what you need safely.", .@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");
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");
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
//-------------------------------------------------------------------
// 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.";
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.";
close2;
getitem 1000409,1; // Ep18_Docu_File
cloakonnpcself( instance_npcname("Document Pile#Site1") );
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?";
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.";
close2;
getitem 1000409,1; // Ep18_Docu_File
cloakonnpcself( instance_npcname("Document Pile#Site2") );
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?";
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.";
close2;
getitem 1000409,1; // Ep18_Docu_File
cloakonnpcself( instance_npcname("Document Pile#Site3") );
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?'";
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.";
close2;
getitem 1000409,1; // Ep18_Docu_File
cloakonnpcself( instance_npcname("Document Pile#Site4") );
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.";
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.";
close2;
getitem 1000409,1; // Ep18_Docu_File
cloakonnpcself( instance_npcname("Document Pile#Site5") );
end;
}
1@tcamp,34,100,3 script Miriam#base1 4_EP18_MIRIAM,3,3,{
disable_items;
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 sorts of connections to find the position.";
mes "It seems that Adventurer and Maram found it at once.";
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;
}
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;
}
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!?";
end;
OnInstanceInit:
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(16578) == 1 && countitem(1000409) > 4" ); // Ep18_Docu_File
disablenpc instance_npcname("Miriam#base1");
end;
}
1@tcamp,32,102,3 script Maram#base5 4_EP18_MARAM,{
if (isbegin_quest(16579) == 0) {
cutin "ep18_maram_01.png",2;
mes "[Maram]";
mes "I didn't know Miriam was 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;
}
close2;
warp "wolfvill",162,154;
end;
OnInstanceInit:
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(16579) == 1" );
disablenpc instance_npcname("Maram#base5");
end;
}

View File

@@ -0,0 +1,959 @@
//===== rAthena Script =======================================
//= Instance Villa of Deception.
//===== Description: =========================================
//- [Walkthrough conversion]
//- Require to complete the episode 18.1 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'.
// The monster inside the hard mode are using relieve level 10 (-99% damages).
// Change it if you think the player damage are too low, this level is a workaround but the damages
// on the mobs are lower in hard mode than in normal on official. The level is 9 on official.
//===== Changelogs: ==========================================
//= 1.0 First version. [Capuche]
//============================================================
wolfvill,79,260,0 script #con_wp11 HIDDEN_WARP_NPC,4,4,{
end;
OnTouch:
if (ep18_1_main < 57)
end;
cloakoffnpcself( "Aira#con" );
end;
}
wolfvill,79,260,4 script(CLOAKED) Aira#con 4_M_BRZ_JACI,{
if (ep18_1_main < 57)
end;
switch( checkquest(12522,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Aira]";
mes "Please wait the end of the quest delay.";
close;
case 2:
erasequest 12522;
mes "^0000ff All the aftereffects of access are gone.^000000";
close;
}
mes "[Aira]";
mes "" + strcharinfo(0) + "Thanks to Mr. I arrived safely in the village.";
mes "But it seems that something has been revived in the villa. I think I need to get help one more time.";
next;
.@md_name_normal$ = "Villa of Deception";
.@md_name_hard$ = "Villa of Deception Advanced";
if (is_party_leader() == true) {
.@create_normal$ = "^000044Create " + .@md_name_normal$ + "^000000";
if (countitem(1000471) > 0)
.@create_hard$ = "^000044Create " + .@md_name_hard$ + "^000000";
}
switch( select( "Entry", .@create_normal$, .@create_hard$ ) ) {
case 1:
if (select( .@md_name_normal$, .@md_name_hard$ ) == 1) {
if (BaseLevel < 170) {
mes "[Aira]";
mes "You must be at least BaseLevel 170 to enter.";
close;
}
.@enter_to$ = .@md_name_normal$;
}
else {
if (BaseLevel < 200) {
mes "[Aira]";
mes "You must be at least BaseLevel 200 to enter.";
close;
}
.@enter_to$ = .@md_name_hard$;
}
switch( instance_enter(.@enter_to$) ) {
case IE_OTHER:
mes "^ff0000An unknown error occurred.^000000";
close;
case IE_NOINSTANCE:
mes "^0000ff The dungeon has not been created or you are trying to enter a dungeon different from the party leader.^000000";
close;
case IE_NOMEMBER:
mes "^ff0000Only a member of the party can enter the Memorial Dungeon.^000000";
close;
case IE_OK:
mapannounce "wolfvill", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering " + .@enter_to$ + ".",bc_map,"0x00ff99",FW_NORMAL,12;
if (.@enter_to$ == .@md_name_normal$)
setquest 12520;
else
setquest 12521;
setquest 12522;
// warp "1@advs",111,19;
end;
}
end;
case 2:
if (BaseLevel < 170) {
mes "[Aira]";
mes "You must be at least BaseLevel 170 to create the instance.";
close;
}
if (instance_create(.@md_name_normal$) < 0) {
mes "Party: " + getpartyname(getcharid(1)) + "";
mes "Leader: " + strcharinfo(0) + "";
mes "^0000ff" + .@md_name_normal$ + " ^000000- Unknown error";
close;
}
end;
case 3:
if (BaseLevel < 200) {
mes "[Aira]";
mes "You must be at least BaseLevel 200 to create the instance.";
close;
}
if (countitem(1000471) < 1) {
mes "[Aira]";
mes "Where is the " + getitemname(1000471) + "?";
close;
}
if (instance_create(.@md_name_hard$) < 0) {
mes "Party: " + getpartyname(getcharid(1)) + "";
mes "Leader: " + strcharinfo(0) + "";
mes "^0000ff" + .@md_name_hard$ + " ^000000- Unknown error";
close;
}
delitem 1000471,1;
end;
}
end;
}
1@advs,1,1,0 script advs_init -1,{
end;
OnInstanceInit:
//--------------------------------------------
// variables initialization
//--------------------------------------------
'advs_step = 0;
'map_advs$ = instance_mapname("1@advs");
// variables step 1
'sw_timer = 0;
deletearray 'sw[0], 2;
// variables step 3
deletearray 'x_reaper[0], 'size_reaper;
deletearray 'y_reaper[0], 'size_reaper;
'size_reaper = 0;
//--------------------------------------------
// Optional settings
//--------------------------------------------
// Number minimum of reaper spawn on step 3
'min_reaper = 3;
// Setting according to the mode
if (instance_live_info(ILI_NAME) == "Villa of Deception Advanced") {
'advs_difficult = 1;
'sanare_id = 21377; // EP18_MD_SANARE_L
'hunter_id = 21378; // EP18_MD_HEARTHUNTER_L
'monster_relieve = 10; // need check but the damages are very low compared to normal mode
// Total of monster to kill in step 1, 2, 3
'total_monster_step_1 = 80;
'total_monster_step_2 = 70;
'total_monster_step_3 = 80;
// Number of monster spawn at the start of step 1, 2, 3
'init_monster_step_1 = 40;
'init_monster_step_2 = 30;
'init_monster_step_3 = 40;
'schulang_id = 21360; // EP18_MD_SCHULANG_L
'freyja_id = 21361; // EP18_MD_DEMI_FREYJA_L
// Don't touch this unless you know what you're doing
.@interval = 5; // distance between each reaper
.@max_reaper = 48; // number max of reaper spawn
}
else {
'advs_difficult = 0;
'sanare_id = 21318; // EP18_MD_SANARE_R
'hunter_id = 21319; // EP18_MD_HEARTHUNTER_R2
'monster_relieve = 9;
// Total of monster to kill in step 1, 2, 3
'total_monster_step_1 = 35;
'total_monster_step_2 = 35;
'total_monster_step_3 = 35;
// Number of monster spawn at the start of step 1, 2, 3
'init_monster_step_1 = 35;
'init_monster_step_2 = 25;
'init_monster_step_3 = 24;
'schulang_id = 21316; // EP18_MD_SCHULANG_R
'freyja_id = 21317; // EP18_MD_DEMI_FREYJA_R
// Don't touch this unless you know what you're doing
.@interval = 10;
.@max_reaper = 16;
}
for ( .@i = 109; .@i <= 139; .@i += .@interval ) {
for ( .@j = 219; .@j <= 249; .@j += .@interval ) {
if (.@i == 124 && .@j == 234)
continue;
'x_reaper[ 'size_reaper ] = .@i;
'y_reaper[ 'size_reaper ] = .@j;
'size_reaper++;
}
}
'total_reaper = min(.@max_reaper, 'size_reaper);
// number total of food necessary to reduce the number of reaper to 'min_reaper
'max_food = ('total_reaper * 2) - ('min_reaper * 2);
// debug
'total_monster_step_1 = max('init_monster_step_1, 'total_monster_step_1);
'total_monster_step_2 = max('init_monster_step_2, 'total_monster_step_2);
'total_monster_step_3 = max('init_monster_step_3, 'total_monster_step_3);
//--------------------------------------------
// npcs management
//--------------------------------------------
disablenpc instance_npcname("#boss2");
disablenpc instance_npcname("#box_admin");
// warps
disablenpc instance_npcname("#wp1");
disablenpc instance_npcname("#wp2");
disablenpc instance_npcname("#wp3");
disablenpc instance_npcname("#wp4");
disablenpc instance_npcname("#food1");
disablenpc instance_npcname("#food2");
disablenpc instance_npcname("#food3");
disablenpc instance_npcname("#food4");
// circles step final
disablenpc instance_npcname("#b_tr1");
disablenpc instance_npcname("#b_tr2");
disablenpc instance_npcname("#b_tr3");
disablenpc instance_npcname("#b_tr4");
// stop circles from moving
disablenpc instance_npcname("#b_sw1");
disablenpc instance_npcname("#b_sw2");
disablenpc instance_npcname("#b_sw3");
disablenpc instance_npcname("#b_sw4");
disablenpc instance_npcname("#boss1");
disablenpc instance_npcname("#boss2_sw");
donpcevent instance_npcname("#advs_step_1") + "::OnStart";
end;
}
// Entrance
// (npc probably used to enable the npcs according to the instance mode - normal or hard)
// 1@advs,111,19,0 duplicate(dummy_npc) #hidden_wp1 HIDDEN_WARP_NPC,2,2
// 1@advs,134,19,0 duplicate(dummy_npc) #hidden_wp2 HIDDEN_WARP_NPC,2,2
//---------------------------------------------------------------
// Warps
//---------------------------------------------------------------
1@advs,124,101,0 warp #wp1 2,2,1@advs,124,115
1@advs,124,205,0 script #wp2 WARPNPC,2,2,{
end;
OnTouch:
.@r = rand(3);
if (.@r == 0)
warp 'map_advs$,101,235;
else if (.@r == 1)
warp 'map_advs$,155,233;
else
warp 'map_advs$,124,211;
end;
}
1@advs,124,266,0 warp #wp3 2,2,1@advs,124,277
1@advs,124,307,0 warp #wp4 2,2,1@advs,124,319
// 1@advs,124,307,0 duplicate(dummy_npc) #wp4 WARPNPC,10,10
//---------------------------------------------------------------
// Step 1
//---------------------------------------------------------------
1@advs,1,1,0 script #advs_step_1 -1,{
end;
OnStart:
'mob_to_respawn = 'total_monster_step_1 - 'init_monster_step_1;
// The coordinates may be inaccurates (maybe not random on official)
for ( .@i = 0; .@i < 'init_monster_step_1; ++.@i )
callsub( S_Spawn );
end;
OnMobDead:
if ('mob_to_respawn > 0)
'mob_to_respawn--;
initnpctimer;
sleep 2000;
if ('advs_step == 0 && 'mob_to_respawn > 0) {
if ('mob_to_respawn > 0)
callsub( S_Spawn );
if ('mob_to_respawn > 1)
callsub( S_Spawn );
}
end;
OnTimer2000:
stopnpctimer;
.@alive = mobcount('map_advs$, instance_npcname("#advs_step_1") + "::OnMobDead");
mapannounce 'map_advs$, "Number of monsters left: " + .@alive, bc_map, 0xAAAAFF;
end;
S_Spawn:
.@label$ = instance_npcname("#advs_step_1") + "::OnMobDead";
if (rand(2))
.@mob_id = 'hunter_id;
else
.@mob_id = 'sanare_id;
.@r = rand(3);
if (.@r == 0)
areamonster 'map_advs$,63,89,72,182,"--en--",.@mob_id,1, .@label$;
else if (.@r == 1)
areamonster 'map_advs$,63,89,184,101,"--en--",.@mob_id,1, .@label$;
else
areamonster 'map_advs$,184,89,174,182,"--en--",.@mob_id,1, .@label$;
unitskilluseid $@mobid[0], 771, 'monster_relieve; // NPC_RELIEVE_ON
return;
}
1@advs,67,182,5 script #sw_1 4_NFWISP,1,1,{
if ('advs_step != 0)
end;
mes "[Unidentified grudge]";
mes "Are you here to set me free?";
next;
if (select( "Stop", "Do it" ) == 1)
end;
if ('advs_step != 0)
end;
disablenpc instance_npcname("#sw_1");
'sw[0] = 1;
donpcevent instance_npcname("#sw_timer") + "::OnStart";
end;
OnTouch_:
end;
}
1@advs,180,182,5 script #sw_2 4_NFWISP,1,1,{
if ('advs_step != 0)
end;
mes "[Unidentified grudge]";
mes "Are you here to set me free?";
next;
if (select( "Stop", "Do it" ) == 1)
end;
if ('advs_step != 0)
end;
disablenpc instance_npcname("#sw_2");
'sw[1] = 1;
donpcevent instance_npcname("#sw_timer") + "::OnStart";
end;
OnTouch_:
end;
}
1@advs,1,1,5 script #sw_timer -1,{
end;
OnStart:
if ('sw_timer == 1)
end;
'sw_timer = 1;
initnpctimer;
end;
OnTimer3000:
stopnpctimer;
if ('sw[0] != 1 || 'sw[1] != 1) {
'sw_timer = 0;
if ('sw[0] == 1)
enablenpc instance_npcname("#sw_1");
if ('sw[1] == 1)
enablenpc instance_npcname("#sw_2");
'sw[0] = 0;
'sw[1] = 0;
npctalk "Ah... my half soul beyond this hallway is still unfulfilled...", instance_npcname("#sw_1");
npctalk "Ah... my half soul beyond this hallway is still unfulfilled...", instance_npcname("#sw_2");
mapannounce 'map_advs$, "You must free both souls on the left and right of the hallway at the same time.", bc_map, 0xAAAAFF;
end;
}
if ('advs_step != 0)
end;
mapannounce 'map_advs$, "Two souls are simultaneously liberated, opening the door to the center.", bc_map, 0xAAAAFF;
donpcevent instance_npcname("#advs_step_2") + "::OnStart";
end;
}
1@advs,75,89,5 script #trap_1 4_M_DEATH,1,1,{
end;
OnTouch:
specialeffect2 EF_FIREHIT;
specialeffect2 EF_ACIDDEMON;
getmapxy( .@map$, .@x, .@y, BL_PC );
getmapxy( .@map$, .@x_npc, .@y_npc, BL_NPC );
if (.@x == .@x_npc) {
if (.@y < 89)
pushpc DIR_SOUTH, 1;
else if (.@y > 99)
pushpc DIR_NORTH, 1;
else
pushpc DIR_EAST, 1; // default
}
else if (.@x < .@x_npc)
pushpc DIR_WEST, 1;
else
pushpc DIR_EAST, 1;
heal -((MaxHp*50)/100),0; // note: heal command is used to (potentially) kill the target
end;
OnMove1:
getmapxy( .@map$, .@x, .@y, BL_NPC );
unitwalk( getnpcid(0),.@x,99, instance_npcname( strnpcinfo(0) ) + "::OnMove2" );
end;
OnMove2:
getmapxy( .@map$, .@x, .@y, BL_NPC );
unitwalk( getnpcid(0),.@x,89, instance_npcname( strnpcinfo(0) ) + "::OnMove1" );
end;
OnInstanceInit:
npcspeed 150;
sleep rand(100,3000);
donpcevent instance_npcname( strnpcinfo(0) ) + "::OnMove1";
end;
}
// traps left
1@advs,80,89,1 duplicate(#trap_1) #trap_2 4_M_DEATH,1,1
1@advs,85,89,1 duplicate(#trap_1) #trap_3 4_M_DEATH,1,1
1@advs,90,89,1 duplicate(#trap_1) #trap_4 4_M_DEATH,1,1
1@advs,95,89,1 duplicate(#trap_1) #trap_5 4_M_DEATH,1,1
1@advs,100,89,1 duplicate(#trap_1) #trap_6 4_M_DEATH,1,1
1@advs,105,89,1 duplicate(#trap_1) #trap_7 4_M_DEATH,1,1
1@advs,110,89,1 duplicate(#trap_1) #trap_8 4_M_DEATH,1,1
1@advs,115,89,1 duplicate(#trap_1) #trap_9 4_M_DEATH,1,1
// traps right
1@advs,130,89,1 duplicate(#trap_1) #trap_10 4_M_DEATH,1,1
1@advs,135,89,1 duplicate(#trap_1) #trap_11 4_M_DEATH,1,1
1@advs,140,89,1 duplicate(#trap_1) #trap_12 4_M_DEATH,1,1
1@advs,145,89,1 duplicate(#trap_1) #trap_13 4_M_DEATH,1,1
1@advs,150,89,1 duplicate(#trap_1) #trap_14 4_M_DEATH,1,1
1@advs,155,89,1 duplicate(#trap_1) #trap_15 4_M_DEATH,1,1
1@advs,160,89,1 duplicate(#trap_1) #trap_16 4_M_DEATH,1,1
1@advs,165,89,1 duplicate(#trap_1) #trap_17 4_M_DEATH,1,1
1@advs,170,89,1 duplicate(#trap_1) #trap_18 4_M_DEATH,1,1
//---------------------------------------------------------------
// Step 2
//---------------------------------------------------------------
1@advs,1,1,0 script #advs_step_2 -1,{
end;
OnStart:
if ('advs_step != 0)
end;
'advs_step = 1;
disablenpc instance_npcname("#advs_step_1");
enablenpc instance_npcname("#wp1");
enablenpc instance_npcname("#food1");
enablenpc instance_npcname("#food2");
enablenpc instance_npcname("#food3");
enablenpc instance_npcname("#food4");
killmonster 'map_advs$, instance_npcname("#advs_step_1") + "::OnMobDead";
'mob_to_respawn = 'total_monster_step_2 - 'init_monster_step_2;
for ( .@i = 0; .@i < 'init_monster_step_2; ++.@i )
callsub( S_Spawn );
end;
OnMobDead:
if ('mob_to_respawn > 0)
'mob_to_respawn--;
initnpctimer;
sleep 2000;
if ('advs_step == 1 && 'mob_to_respawn > 0) {
if ('mob_to_respawn > 0)
callsub( S_Spawn );
if ('mob_to_respawn > 1)
callsub( S_Spawn );
}
end;
OnTimer2000:
stopnpctimer;
.@alive = mobcount('map_advs$, instance_npcname("#advs_step_2") + "::OnMobDead");
mapannounce 'map_advs$, "Number of monsters left: " + .@alive, bc_map, 0xAAAAFF;
if ('advs_step == 1 && 'mob_to_respawn == 0 && .@alive == 0)
donpcevent instance_npcname("#advs_step_3_A") + "::OnStart";
end;
S_Spawn:
.@label$ = instance_npcname("#advs_step_2") + "::OnMobDead";
if (rand(2))
.@mob_id = 'hunter_id;
else
.@mob_id = 'sanare_id;
.@r = rand(3);
if (.@r == 0)
areamonster 'map_advs$,76,145,171,139,"--en--",.@mob_id,1, .@label$;
else if (.@r == 1)
areamonster 'map_advs$,113,205,135,125,"--en--",.@mob_id,1, .@label$;
else
areamonster 'map_advs$,113,205,135,125,"--en--",.@mob_id,1, .@label$;
unitskilluseid $@mobid[0], 771, 'monster_relieve; // NPC_RELIEVE_ON
return;
}
1@advs,101,159,5 script #food1 4_EP16_FOOD,1,1,{
if ('max_food <= 0) {
mapannounce 'map_advs$, "??? : You really don't know how to cook well, you deserve a casual tour of my garden.", bc_map, 0xAAAAFF;
end;
}
progressbar "",4;
'max_food--;
.@r = rand(5);
if (.@r == 0)
sc_start SC_CONFUSION,30000,0,100, SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF;
else if (.@r == 1)
sc_start SC_CURSE,30000,0,100, SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF;
else if (.@r == 2)
sc_start SC_BLIND,30000,0,100, SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF;
else if (.@r == 3)
sc_start SC_POISON,30000,0,100, SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF;
else
sc_start SC_SILENCE,30000,0,100, SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF;
if ('total_reaper > 'min_reaper && ('max_food % 2) == 0)
'total_reaper--;
end;
}
1@advs,101,125,5 duplicate(#food1) #food2 4_EP16_FOOD,1,1
1@advs,147,162,5 duplicate(#food1) #food3 4_EP16_FOOD,1,1
1@advs,147,122,5 duplicate(#food1) #food4 4_EP16_FOOD,1,1
//---------------------------------------------------------------
// Step 3
//---------------------------------------------------------------
1@advs,1,1,5 script #advs_step_3_A -1,{
end;
OnStart:
if ('advs_step != 1)
end;
'advs_step = 2;
enablenpc instance_npcname("#wp2");
disablenpc instance_npcname("#advs_step_2");
donpcevent instance_npcname("#advs_step_3_A") + "::OnEvent";
donpcevent instance_npcname("#advs_step_3_B") + "::OnEvent";
end;
OnEvent:
.@label$ = instance_npcname("#advs_step_3_A") + "::OnMobDead";
copyarray .@x[0], 'x_reaper[0], 'size_reaper;
copyarray .@y[0], 'y_reaper[0], 'size_reaper;
.@size = 'size_reaper;
for ( .@i = 0; .@i < 'total_reaper; ++.@i ) {
.@r = rand(.@size);
monster 'map_advs$,.@x[.@r],.@y[.@r],"--en--",20846,1, .@label$; // MD_HIDDEN_GROUND01
deletearray .@x[.@r],1;
deletearray .@y[.@r],1;
.@size--;
}
initnpctimer;
end;
OnTimer10000:
killmonster 'map_advs$, instance_npcname("#advs_step_3_A") + "::OnMobDead";
donpcevent instance_npcname("#advs_step_3_A") + "::OnEvent"; // this event never stop
end;
OnMobDead:
end;
}
1@advs,1,1,0 script #advs_step_3_B -1,{
end;
OnEvent:
'mob_to_respawn = 'total_monster_step_3 - 'init_monster_step_3;
for ( .@i = 0; .@i < 'init_monster_step_3; ++.@i )
callsub( S_Spawn );
end;
OnMobDead:
if ('mob_to_respawn > 0)
'mob_to_respawn--;
initnpctimer;
sleep 2000;
if ('advs_step == 2 && 'mob_to_respawn > 0) {
if ('mob_to_respawn > 0)
callsub( S_Spawn );
if ('mob_to_respawn > 1)
callsub( S_Spawn );
}
end;
OnTimer2000:
stopnpctimer;
.@alive = mobcount('map_advs$, instance_npcname("#advs_step_3_B") + "::OnMobDead");
mapannounce 'map_advs$, "Number of monsters left: " + .@alive, bc_map, 0xAAAAFF;
if ('advs_step == 2 && 'mob_to_respawn == 0 && .@alive == 0)
donpcevent instance_npcname("#boss1_advs") + "::OnStart";
end;
S_Spawn:
.@label$ = instance_npcname("#advs_step_3_B") + "::OnMobDead";
if (rand(2))
.@mob_id = 'hunter_id;
else
.@mob_id = 'sanare_id;
.@r = rand(4);
if (.@r == 0)
areamonster 'map_advs$,109,238,119,248,"--en--",.@mob_id,1, .@label$;
else if (.@r == 1)
areamonster 'map_advs$,109,219,119,229,"--en--",.@mob_id,1, .@label$;
else if (.@r == 2)
areamonster 'map_advs$,128,238,138,248,"--en--",.@mob_id,1, .@label$;
else
areamonster 'map_advs$,128,219,138,229,"--en--",.@mob_id,1, .@label$;
unitskilluseid $@mobid[0], 771, 'monster_relieve; // NPC_RELIEVE_ON
return;
}
//---------------------------------------------------------------
// Step 4
//---------------------------------------------------------------
1@advs,1,1,4 script #boss1_advs -1,{
end;
OnStart:
if ('advs_step != 2)
end;
'advs_step = 3;
enablenpc instance_npcname("#wp3");
disablenpc instance_npcname("#advs_step_3_B");
enablenpc instance_npcname("#boss1");
end;
OnMobDead:
if ('advs_step != 4)
end;
'advs_step = 5;
enablenpc instance_npcname("#wp4");
enablenpc instance_npcname("#boss2_sw");
donpcevent instance_npcname("#boss1_advs_skill_1") + "::OnStop";
end;
}
// 1@advs,124,295,4 script #boss1 EP18_MD_SCHULANG_R,1,1,{
1@advs,124,295,4 script #boss1 EP18_MD_SCHULANG_R,{
if ('advs_step != 3)
end;
if (is_party_leader() == false)
end;
'advs_step = 4;
npctalk "That's all human.";
unitwalk getnpcid(0), 124,290, instance_npcname("#boss1") + "::OnMove";
end;
OnMove:
disablenpc instance_npcname("#boss1");
monster 'map_advs$,124,290,"--en--",'schulang_id,1, instance_npcname("#boss1_advs") + "::OnMobDead";
'schulang_gid = $@mobid[0];
unitskilluseid $@mobid[0], 771, 1; // NPC_RELIEVE_ON
unittalk 'schulang_gid, "I'm in a bit of trouble if I approach this more than that!!!";
monster 'map_advs$,123,285,"--en--",21319,1; // EP18_MD_HEARTHUNTER_R2
unitskilluseid $@mobid[0], 771, 'monster_relieve; // NPC_RELIEVE_ON
donpcevent instance_npcname("#boss1_advs_skill_1") + "::OnStart";
end;
// OnTouch: // effect ?
// end;
}
1@advs,1,1,0 script #boss1_advs_skill_1 -1,{
end;
OnStart:
initnpctimer;
getunitdata 'schulang_gid, .@data;
'x_sch_event = .@data[UMOB_X];
'y_sch_event = .@data[UMOB_Y];
'ignore_column = rand(5); // one column is randomly free
end;
OnTimer1000:
callsub( S_Skill,-8 );
end;
OnTimer1500:
callsub( S_Skill,-4 );
end;
OnTimer2000:
callsub( S_Skill,0 );
end;
OnTimer2500:
callsub( S_Skill,4 );
end;
OnTimer3000:
callsub( S_Skill,8 );
stopnpctimer;
donpcevent instance_npcname("#boss1_advs_skill_1") + "::OnStart";
end;
S_Skill:
.@dxy = getarg(0);
if ('ignore_column != 0)
unitskillusepos 'schulang_gid,"MG_THUNDERSTORM",4, ('x_sch_event - 8), ('y_sch_event + .@dxy), -50;
if ('ignore_column != 1)
unitskillusepos 'schulang_gid,"MG_THUNDERSTORM",4, ('x_sch_event - 4), ('y_sch_event + .@dxy), -50;
if ('ignore_column != 2)
unitskillusepos 'schulang_gid,"MG_THUNDERSTORM",4, 'x_sch_event, ('y_sch_event + .@dxy), -50;
if ('ignore_column != 3)
unitskillusepos 'schulang_gid,"MG_THUNDERSTORM",4, ('x_sch_event + 4), ('y_sch_event + .@dxy), -50;
if ('ignore_column != 4)
unitskillusepos 'schulang_gid,"MG_THUNDERSTORM",4, ('x_sch_event + 8), ('y_sch_event + .@dxy), -50;
return;
OnStop:
stopnpctimer;
end;
}
//---------------------------------------------------------------
// Step 5 (final)
//---------------------------------------------------------------
// 1@advs,124,358,4 script #boss2_sw CLEAR_NPC,1,1,{
1@advs,124,358,4 script #boss2_sw CLEAR_NPC,{
if ('advs_step != 5)
end;
if (is_party_leader() == false)
end;
'advs_step = 6;
cloakonnpc instance_npcname("#boss2_sw"); // cloakonnpc to display effect
specialeffect EF_CLOUD4;
specialeffect EF_DQ9_CHARGE3;
sleep 4000;
specialeffect EF_SCREEN_QUAKE;
setnpcdisplay( instance_npcname("#boss2"), 'freyja_id );
enablenpc instance_npcname("#boss2");
specialeffect EF_BEGINSPELL_YB;
sleep 2000;
npctalk "I... and... together... let's play...", instance_npcname("#boss2");
unitwalk getnpcid(0, instance_npcname("#boss2")), 124,346, instance_npcname("#boss2_sw") + "::OnMove";
end;
OnMove:
setnpcdisplay( instance_npcname("#boss2"), CLEAR_NPC );
disablenpc instance_npcname("#boss2");
monster 'map_advs$,124,346,"--en--",'freyja_id,1, instance_npcname("#boss2_sw") + "::OnMobDead";
'freyja_gid = $@mobid[0];
donpcevent instance_npcname("#advs_boss_relieve") + "::OnStart";
sleep 3000;
mapannounce 'map_advs$, "Tip: Twisted God Freyja is weaken as it get closer to the chandelier.", bc_map, 0xFFCC;
if ('advs_difficult == 1)
sleep 8000;
else
sleep 30000;
// circles
if ('advs_difficult == 1) {
donpcevent instance_npcname("#b_tr1") + "::OnEnable";
donpcevent instance_npcname("#b_tr2") + "::OnEnable";
}
donpcevent instance_npcname("#b_tr3") + "::OnEnable";
donpcevent instance_npcname("#b_tr4") + "::OnEnable";
// stop the circles from moving
enablenpc instance_npcname("#b_sw1");
enablenpc instance_npcname("#b_sw2");
enablenpc instance_npcname("#b_sw3");
enablenpc instance_npcname("#b_sw4");
end;
OnMobDead:
'freyja_gid = 0;
donpcevent instance_npcname("#advs_boss_relieve") + "::OnStop";
disablenpc instance_npcname("#boss2_sw");
enablenpc instance_npcname("#box_admin");
if ('advs_difficult == 1) {
donpcevent instance_npcname("#b_tr1") + "::OnStop";
donpcevent instance_npcname("#b_tr2") + "::OnStop";
}
donpcevent instance_npcname("#b_tr3") + "::OnStop";
donpcevent instance_npcname("#b_tr4") + "::OnStop";
end;
// OnTouch: // effect ?
// end;
}
1@advs,124,356,4 duplicate(dummy_npc) #boss2 CLEAR_NPC,1,1
1@advs,1,1,4 script #advs_boss_relieve -1,{
end;
OnStart:
if (unitexists('freyja_gid) == false)
end;
getunitdata 'freyja_gid, .@data;
.@d = distance(124,356,.@data[UMOB_X],.@data[UMOB_Y]);
.@lv = (.@d / 2) + 1; // level 6 on spawn
.@lv = min(10,.@lv);
.@lv = max(1,.@lv);
unitskilluseid 'freyja_gid, 772, 1; // NPC_RELIEVE_OFF
unitskilluseid 'freyja_gid, 771, .@lv; // NPC_RELIEVE_ON
initnpctimer;
end;
OnTimer2000:
donpcevent instance_npcname("#advs_boss_relieve") + "::OnStart";
end;
OnStop:
stopnpctimer;
end;
}
// circles
1@advs,124,337,5 script #b_tr1 MD_HIDDEN_GROUND02,2,2,{
end;
OnTouch: // note: warp dead player
if ('freyja_gid == 0)
end;
specialeffect2 EF_FIREHIT;
specialeffect2 EF_ACIDDEMON;
percentheal -10,0; // deal some damage
if (rand(2))
warp 'map_advs$,67,182;
else
warp 'map_advs$,180,182;
end;
OnEnable:
enablenpc instance_npcname( strnpcinfo(0) );
OnStart:
'circle_move = 1;
OnMove:
if ('freyja_gid == 0)
end;
if ('circle_move == 0)
end;
getmapxy( .@map$, .@x, .@y, BL_NPC );
do {
.@dx = rand(-2,2);
.@dy = rand(-2,2);
.@new_x = .@x + .@dx;
.@new_y = .@y + .@dy;
}
while ((.@dx == 0 && .@dy == 0) || .@new_x < 108 || .@new_x > 139 || .@new_y < 325 || .@new_y > 351);
unitwalk( getnpcid(0),.@new_x,.@new_y, instance_npcname( strnpcinfo(0) ) + "::OnMove" );
end;
OnStop:
'circle_move = 0; // double check just because
unitstopwalk getnpcid(0);
end;
}
1@advs,124,337,5 duplicate(#b_tr1) #b_tr2 MD_HIDDEN_GROUND02,2,2
1@advs,124,337,5 duplicate(#b_tr1) #b_tr3 MD_HIDDEN_GROUND02,2,2
1@advs,124,337,5 duplicate(#b_tr1) #b_tr4 MD_HIDDEN_GROUND02,2,2
// stop the circles from moving
1@advs,108,358,4 script #b_sw1 4_ENERGY_YELLOW,2,2,{
mes "Ddispel the circle ^ff0000requires your health and mana.^000000 During the process, you ^ff0000becomes immobile and defenseless.^000000 Are you sure you want to start dispelling?";
next;
if (select( "Cancel", "Proceed" ) == 1)
end;
if ('freyja_gid == 0)
end;
// this part need to be checked when more information are available
.@success = callsub( S_Venom );
mes "^0000ffThe magic stone that absorbed your stamina and magic resonates. The magic circle that has been wandering disappears.^000000";
specialeffect EF_BASH3D6;
if (.@success == true && 'circle_move == 1) {
disablenpc();
if ('advs_difficult == 1) {
donpcevent instance_npcname("#b_tr1") + "::OnStop";
donpcevent instance_npcname("#b_tr2") + "::OnStop";
}
donpcevent instance_npcname("#b_tr3") + "::OnStop";
donpcevent instance_npcname("#b_tr4") + "::OnStop";
initnpctimer;
}
close;
S_Venom:
.@percent_hp = max(1, (MaxHp/100)); // deal random damage to the player
.@percent_sp = max(1, (MaxSp/100));
.@r = rand(2,20);
for ( .@i = 0; .@i < .@r; ++.@i ) {
specialeffect2 EF_INVENOM;
heal -.@percent_hp, -.@percent_sp;
if (Hp < 1)
return 0;
sleep2 500;
}
return (Hp > 0);
OnTimer10000: // seems to be around 10s to re-enable the circle, 20s the npc
if ('freyja_gid == 0)
end;
if ('advs_difficult == 1) {
donpcevent instance_npcname("#b_tr1") + "::OnStart";
donpcevent instance_npcname("#b_tr2") + "::OnStart";
}
donpcevent instance_npcname("#b_tr3") + "::OnStart";
donpcevent instance_npcname("#b_tr4") + "::OnStart";
end;
OnTimer20000:
stopnpctimer;
enablenpc();
end;
OnTouch: // effect ?
end;
}
1@advs,101,351,4 duplicate(#b_sw1) #b_sw2 4_ENERGY_YELLOW,2,2
1@advs,139,358,4 duplicate(#b_sw1) #b_sw3 4_ENERGY_YELLOW,2,2
1@advs,145,351,4 duplicate(#b_sw1) #b_sw4 4_ENERGY_YELLOW,2,2
// exit
1@advs,123,358,4 script #box_admin 4_ENERGY_YELLOW,2,2,{
.@is_hard = (instance_live_info(ILI_NAME) == "Villa of Deception Advanced");
if (isbegin_quest(12520) == 1 && !.@is_hard || isbegin_quest(12521) == 1 && .@is_hard) {
if (checkweight(1000405,10, 1000471,1) == 0) {
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
mes "- Please try again -";
mes "- after you loose some weight. -";
close;
}
mes "^0000ffFound something in a bright glowing halo.^000000";
if (get_reputation_points(3) >= 5000)
.@bonus = 2;
getitem 1000405,8+.@bonus; // Ep18_Amethyst_Fragment
if (.@is_hard)
erasequest 12521;
else
erasequest 12520;
if (rand(100) < 10)
getitem 1000471,1;
close;
}
mes "^0000ffI think you can get out now.^000000";
next;
if (select( "Cancel", "Exit" ) == 1)
end;
warp "wolfvill",77,258;
end;
}

File diff suppressed because it is too large Load Diff

3238
npc/re/instances/Wolves.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -60,3 +60,4 @@ 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

View File

@@ -412,6 +412,20 @@ Body:
- Index: 3
Item: IllusionStone
Amount: 120
- Name: resonance_stone_barter
Items:
- Index: 0
Item: ILL_Piece_A
RequiredItems:
- Index: 0
Item: IllusionStone
Amount: 10
- Index: 1
Item: ILL_Piece_B
RequiredItems:
- Index: 0
Item: IllusionStone
Amount: 10
- Name: barter_ill_moonlight
Items:
- Index: 0

View File

@@ -0,0 +1,132 @@
# 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_ep18_1
Items:
- Index: 0
Item: Gray_W_Suits
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 1
Item: Gray_W_Robe
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 2
Item: Gray_W_Manteau
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 3
Item: Gray_W_Muffler
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 4
Item: Gray_W_Boots
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 5
Item: Gray_W_Shoes
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 6
Item: Gray_W_Pendant
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 7
Item: Gray_W_Robe
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 8
Item: Gray_W_Ring
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Index: 9
Item: Gray_W_Earing
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 350
- Name: barter_ep18_2
Items:
- Index: 0
Item: GrayWolf_7_Ticket
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 1050
- Name: barter_ep18_3
Items:
- Index: 0
Item: GrayWolf_7_Ticket
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 1050
- Index: 1
Item: GrayWolf_9_Ticket
RequiredItems:
- Index: 0
Item: Ep18_Amethyst_Fragment
Amount: 2250

View File

@@ -14,6 +14,7 @@
//= 1.5 Added Illusion of Luanda enchanter [Capuche]
//= 1.6 Added Illusion of Underwater exchange [Capuche]
//= 1.7 Added Illusion of Twins enchanter [Capuche]
//= 1.8 Added Illusion Merchant [Haydrich]
//============================================================
//============================================================
@@ -846,3 +847,40 @@ OnInit:
setunitdata .@npc_id, UNPC_HAIRCOLOR, 6;
end;
}
//============================================================
//= Illusion Merchant
//============================================================
- marketshop market_resonance_stone -1,100003:2000000:99999,100004:2000000:99999
prontera,88,113,5 script Illusion Merchant#0829 HIDDEN_NPC,{
mes "[Illusion Merchant]";
mes "I'm selling two random optional weapon grant scrolls that I made myself. You can choose the payment method you like.";
next;
switch( select( "Purchase with Zeny.", "Purchase with Illusion Stones" )) {
case 1:
mes "[Illusion Merchant]";
mes "I hope you like it.";
close2;
callshop "market_resonance_stone";
end;
case 2:
mes "[Illusion Merchant]";
mes "I hope you like it.";
close2;
callshop "resonance_stone_barter";
end;
}
OnInit:
.@npc_id = getnpcid(0);
setunitdata .@npc_id,UNPC_CLASS, JOB_MAGE_HIGH;
setunitdata .@npc_id,UNPC_SEX,SEX_FEMALE;
setunitdata .@npc_id,UNPC_HEADTOP,142;
setunitdata .@npc_id,UNPC_HEADMIDDLE,92;
setunitdata .@npc_id,UNPC_HAIRSTYLE,2;
setunitdata .@npc_id,UNPC_HAIRCOLOR,2;
// Restock
npcshopupdate "market_resonance_stone",100003,2000000,99999;
npcshopupdate "market_resonance_stone",100004,2000000,99999;
end;
}

View File

@@ -9,35 +9,66 @@
// monsters killed. [Capuche]
//============================================================
lhz_dun_n,0,0 monster Eremes Guille 3208,20,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Magaleta Sorin 3209,10,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Catherine Cheiron 3210,15,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Shecil Damon 3211,20,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Harword Alt-Eisen 3212,10,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Seyren Windsor 3213,10,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Eremes Guille 3208,20,5000,0,"lhz_dun_n::OnRegularDead3208"
lhz_dun_n,0,0 monster Magaleta Sorin 3209,10,5000,0,"lhz_dun_n::OnRegularDead3209"
lhz_dun_n,0,0 monster Catherine Cheiron 3210,15,5000,0,"lhz_dun_n::OnRegularDead3210"
lhz_dun_n,0,0 monster Shecil Damon 3211,20,5000,0,"lhz_dun_n::OnRegularDead3211"
lhz_dun_n,0,0 monster Harword Alt-Eisen 3212,10,5000,0,"lhz_dun_n::OnRegularDead3212"
lhz_dun_n,0,0 monster Seyren Windsor 3213,10,5000,0,"lhz_dun_n::OnRegularDead3213"
lhz_dun_n,0,0 monster Randel Lawrence 3226,10,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Flamel Emule 3227,10,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Celia Alde 3228,15,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Chen Liu 3229,15,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Gertie Wie 3230,15,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Alphoccio Basil 3231,10,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Trentini 3232,10,5000,0,"lhz_dun_n::OnRegularDead"
lhz_dun_n,0,0 monster Randel Lawrence 3226,10,5000,0,"lhz_dun_n::OnRegularDead3226"
lhz_dun_n,0,0 monster Flamel Emule 3227,10,5000,0,"lhz_dun_n::OnRegularDead3227"
lhz_dun_n,0,0 monster Celia Alde 3228,15,5000,0,"lhz_dun_n::OnRegularDead3228"
lhz_dun_n,0,0 monster Chen Liu 3229,15,5000,0,"lhz_dun_n::OnRegularDead3229"
lhz_dun_n,0,0 monster Gertie Wie 3230,15,5000,0,"lhz_dun_n::OnRegularDead3230"
lhz_dun_n,0,0 monster Alphoccio Basil 3231,10,5000,0,"lhz_dun_n::OnRegularDead3231"
lhz_dun_n,0,0 monster Trentini 3232,10,5000,0,"lhz_dun_n::OnRegularDead3232"
lhz_dun_n,0,0,0 script lhz_dun_n -1,{
end;
OnRegularDead:
.@mob_id = killedrid;
OnRegularDead3208: callsub( S_Regular, 3208 );
OnRegularDead3209: callsub( S_Regular, 3209 );
OnRegularDead3210: callsub( S_Regular, 3210 );
OnRegularDead3211: callsub( S_Regular, 3211 );
OnRegularDead3212: callsub( S_Regular, 3212 );
OnRegularDead3213: callsub( S_Regular, 3213 );
OnRegularDead3226: callsub( S_Regular, 3226 );
OnRegularDead3227: callsub( S_Regular, 3227 );
OnRegularDead3228: callsub( S_Regular, 3228 );
OnRegularDead3229: callsub( S_Regular, 3229 );
OnRegularDead3230: callsub( S_Regular, 3230 );
OnRegularDead3231: callsub( S_Regular, 3231 );
OnRegularDead3232: callsub( S_Regular, 3232 );
S_Regular:
.@mob_id = getarg(0);
if (.lhz_dun_n[.@mob_id] < 110 && .lhz_dun_n_boss == 0) {
.lhz_dun_n[.@mob_id]++;
if (.lhz_dun_n[.@mob_id] == 110) {
.@mini_boss = .@mob_id + 6 + (.@mob_id > 3213); // mini boss version ID: regular ID +6 for non-transcendent, +7 for others
monster "lhz_dun_n",0,0,"--en--",.@mini_boss,1, "lhz_dun_n::OnMiniDead";
.@mini_boss = .@mob_id + 6 + (.@mob_id > 3219); // mini boss version ID: regular ID +6 for non-transcendent, +7 for others
monster "lhz_dun_n",0,0,"--en--",.@mini_boss,1, "lhz_dun_n::OnMiniDead" + .@mini_boss;
}
}
end;
OnMiniDead:
.@mob_id = killedrid;
OnMiniDead3214: callsub( S_Mini, 3214 );
OnMiniDead3215: callsub( S_Mini, 3215 );
OnMiniDead3216: callsub( S_Mini, 3216 );
OnMiniDead3217: callsub( S_Mini, 3217 );
OnMiniDead3218: callsub( S_Mini, 3218 );
OnMiniDead3219: callsub( S_Mini, 3219 );
OnMiniDead3233: callsub( S_Mini, 3233 );
OnMiniDead3234: callsub( S_Mini, 3234 );
OnMiniDead3235: callsub( S_Mini, 3235 );
OnMiniDead3236: callsub( S_Mini, 3236 );
OnMiniDead3237: callsub( S_Mini, 3237 );
OnMiniDead3238: callsub( S_Mini, 3238 );
OnMiniDead3239: callsub( S_Mini, 3239 );
S_Mini:
.@mob_id = getarg(0);
if (.lhz_dun_n[.@mob_id] < 4 && .lhz_dun_n_boss == 0) {
.lhz_dun_n[.@mob_id]++;
.@regular = .@mob_id - 6 - (.@mob_id > 3219);
@@ -53,11 +84,7 @@ OnMiniDead:
monster "lhz_dun_n",140,230,"--en--", F_Rand(3220,3221,3222,3223,3224,3225,3240,3241,3242,3243,3244,3245,3246),1, "lhz_dun_n::OnMyMVPDead";
mapannounce "lhz_dun_n", "Voice of Reaper: It's been a while.", bc_map; // unknown message
.lhz_dun_n_boss = 1;
for ( .@i = 0; .@i < 13; ++.@i ) {
.@regular = .@mini_boss_list[.@i] - 6 - (.@mini_boss_list[.@i] > 3219);
.lhz_dun_n[.@regular] = 0;
.lhz_dun_n[.@mini_boss_list[.@i]] = 0;
}
deletearray .lhz_dun_n;
}
}
end;

View File

@@ -0,0 +1,17 @@
//===== rAthena Script =======================================
//= oz_dun Monsters Spawn Script
//===== Current Version: =====================================
//= 1.0
//===== Additional Comments: =================================
//= 1.0 First version. [Capuche]
//============================================================
oz_dun01 monster Rake Hand 21296,70
oz_dun01 monster Ash Toad 21295,65
oz_dun01 monster Spark 21297,10
oz_dun02 monster Spark 21297,25
oz_dun02 monster Volcaring 21299,35
oz_dun02 monster Lava Toad 21300,25
oz_dun02 monster Hot Molar 21298,60
oz_dun02 boss_monster Burning Fang 21301,1,21600000,600000,0

View File

@@ -0,0 +1,17 @@
//===== rAthena Script =======================================
//= gw_fild Monsters Spawn Script
//===== Current Version: =====================================
//= 1.0
//===== Additional Comments: =================================
//= 1.0 First version. [Capuche]
//============================================================
gw_fild01 monster Ashhopper 21302,50
gw_fild01 monster Ashring 21303,70
gw_fild01 monster Grey Wolf 21304,35
gw_fild02 monster Ashring 21303,15
gw_fild02 monster Bushring 21305,60
gw_fild02 monster Phantom Wolf 21307,25
gw_fild02 monster Grey Wolf 21304,35
gw_fild02 monster Firewind Kite 21306,35

View File

@@ -82,12 +82,23 @@ ra_fild08,0,0 monster Anopheles 1627,15,5000
//==================================================
//==================================================
// ra_fild10 - Disabled on Renewal
// ra_fild10
//==================================================
ra_fild10 monster Drosera 1781,5
ra_fild10 monster Magmaring 1836,5
ra_fild10 monster Grey Baby Wolf 21324,50
ra_fild10 monster Grey Goat 21323,60
ra_fild10 monster Rake Hand 21296,5
//==================================================
// ra_fild11 - Disabled on Renewal
// ra_fild11
//==================================================
ra_fild11 monster Red Plant 1078,5
ra_fild11 monster Yellow Plant 1081,15
ra_fild11 monster Drosera 1781,10
ra_fild11 monster Grey Baby Wolf 21324,50
ra_fild11 monster Grey Goat 21323,70
ra_fild11 monster Rake Hand 21296,5
//==================================================
// ra_fild12 - The Plain of Ida

View File

@@ -4007,12 +4007,21 @@ 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,{
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.";
close;
}
if (ep17_2_main < 32) {
cutin "ep172_beta.bmp", 2;
mes "[Ellie]";
mes "Hello, guest.";
mes "I'm responsible for the airship hangar's information.";
mes "Please call me Ellie.";
close3;
}
if (ep17_2_main == 32) {
cutin "ep172_beta",2;
mes "[Ellie]";
@@ -4139,6 +4148,179 @@ 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) {
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.";
next;
mes "[Ellie]";
mes "Don't worry.";
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!";
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?";
next;
// note: progressbar_npc must be after "next" otherwise the client may crash
progressbar_npc "FFFF00",4;
mes "[Ellie]";
mes "Wait a minute...";
mes "...";
mes "...";
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.";
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.";
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?";
next;
select( "What?" );
mes "[" + strcharinfo(0) + "]";
mes "What are you doing?";
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...";
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;
next;
cutin "ep162_est01.bmp",1;
mes "[EST]";
mes "Okay then Rachel...";
next;
cutin "16loo_01.bmp",0;
mes "[Rookie]";
mes "Rachel... who's going?";
next;
cutin "ep172_beta.bmp",2;
mes "[Ellie]";
mes "Is this a conflict 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.";
next;
cutin "ep162_est01.bmp",1;
mes "[EST]";
mes "Ah... I see.";
mes "Yes. If 'Rebellion' moves, it could become a diplomatic matter.";
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...";
next;
cutin "ep172_beta.bmp",2;
mes "[Ellie]";
mes "Okay.";
next;
mes "[Ellie]";
mes "Then...";
next;
select( "Why are you looking at me?" );
cutin "",255;
mes "[" + strcharinfo(0) + "]";
mes "what are you doing?";
next;
cutin "ep172_beta.bmp",2;
mes "[Ellie]";
mes "Let's go, Rachel.";
npctalk "Rookie: name.", "Rookie#ep181_rk01", bc_self;
npctalk "Est: 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.";
next;
cutin "ep162_est01.bmp",1;
mes "[EST]";
mes "It sounds like you want to go there yourself.";
next;
cutin "ep172_beta.bmp",2;
mes "[Ellie]";
mes "Yes.";
mes "Please wait a minute.";
next;
progressbar_npc "00CCFF",7;
mes "[Ellie]";
mes "...";
next;
mes "[Ellie]";
mes "You have permission.";
npctalk "Meeting ended.", "", 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.";
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.";
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.";
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;
next;
cutin "16loo_02.bmp",0;
mes "[Rookie]";
mes "Uh... Mini Ellie?";
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.";
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.";
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.";
next;
cutin "ep172_beta.bmp",2;
mes "[Ellie]";
mes "It will be so";
mes "Please take care of yourself.";
npctalk "I'm going with you, but it's strange to greet you like this.", "", 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;
setquest 8681;
getitem 400127,1; // Ep18_Mini_Elly
close3;
}
if (ep18_1_main == 1) {
mes "[Ellie]";
mes "Please be safe.";
close;
}
cutin "ep172_beta",2;
mes "[Ellie]";
mes "No intermittent signal has been received yet.";
@@ -4152,10 +4334,13 @@ ba_in01,26,266,3 script Smart Ellie#ep172_ely01 4_EP17_TABLET,{
mes "Me and Alpha will analyze the information properly, so I'd like you to clean up the intruders remnant.";
close3;
// OnInit:
OnInit:
// note: commented (no questinfo at this point)
// questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(18018) == 1" );
// end;
// check for episode 17.2 completion
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8681) == 0 && isbegin_quest(18018) == 2 && BaseLevel >= 170" );
end;
}
ba_in01,22,262,5 duplicate(dummy_cloaked_npc) Est#ep172_est02 4_F_ESTLOVELOY

12435
npc/re/quests/quests_18_1.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -85,6 +85,7 @@ npc: npc/re/instances/IsleOfBios.txt
npc: npc/re/instances/LastRoom.txt
npc: npc/re/instances/LostFarm.txt
npc: npc/re/instances/MalangdoCulvert.txt
npc: npc/re/instances/MazeofOz.txt
npc: npc/re/instances/MorseCave.txt
npc: npc/re/instances/NightmarishJitterbug.txt
npc: npc/re/instances/OctopusCave.txt
@@ -99,12 +100,16 @@ npc: npc/re/instances/SaraMemory.txt
npc: npc/re/instances/SealedOs.txt
npc: npc/re/instances/SkyFortress.txt
npc: npc/re/instances/TempleOfDemonGod.txt
npc: npc/re/instances/ThorGunsuBase.txt
npc: npc/re/instances/TwilightGarden.txt
npc: npc/re/instances/VillaofDeception.txt
npc: npc/re/instances/VillaofHighPriest.txt
npc: npc/re/instances/WaterGarden.txt
//npc: npc/re/instances/WaveMode.txt
npc: npc/re/instances/WeekendDungeon.txt
npc: npc/re/instances/WernerLaboratoryCentralRoom.txt
npc: npc/re/instances/WolfchevLaboratory.txt
npc: npc/re/instances/Wolves.txt
//npc: npc/custom/official/GeffenMagicTournament.txt
// ---------------- Kafras & Cool Event Corp. -------------------
@@ -238,6 +243,7 @@ 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_aldebaran.txt
npc: npc/re/quests/quests_brasilis.txt
npc: npc/re/quests/quests_dewata.txt

View File

@@ -55,6 +55,7 @@ npc: npc/re/mobs/dungeons/nif_dun.txt
npc: npc/re/mobs/dungeons/nyd_dun.txt
npc: npc/re/mobs/dungeons/odin.txt
npc: npc/re/mobs/dungeons/orcsdun.txt
npc: npc/re/mobs/dungeons/oz_dun.txt
npc: npc/re/mobs/dungeons/pay_dun.txt
npc: npc/re/mobs/dungeons/prt_maze.txt
npc: npc/re/mobs/dungeons/prt_prison.txt
@@ -86,6 +87,7 @@ npc: npc/re/mobs/fields/eclage.txt
npc: npc/re/mobs/fields/einbroch.txt
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/lighthalzen.txt
npc: npc/re/mobs/fields/louyang.txt

View File

@@ -30,9 +30,11 @@ npc: npc/re/warps/dungeons/iz_dun.txt
npc: npc/re/warps/dungeons/mag_dun.txt
npc: npc/re/warps/dungeons/moc_pryd.txt
npc: npc/re/warps/dungeons/nif_dun.txt
npc: npc/re/warps/dungeons/oz_dun.txt
npc: npc/re/warps/dungeons/rockmi1.txt
npc: npc/re/warps/dungeons/sp_rudus.txt
npc: npc/re/warps/dungeons/slabw01.txt
npc: npc/re/warps/dungeons/thor_v.txt
// --------------------------- Fields ---------------------------
npc: npc/re/warps/fields/bif_fild.txt
@@ -40,6 +42,7 @@ npc: npc/re/warps/fields/bra_fild.txt
npc: npc/re/warps/fields/com_fild.txt
npc: npc/re/warps/fields/dic_fild.txt
npc: npc/re/warps/fields/geffen_fild.txt
npc: npc/re/warps/fields/gw_fild.txt
npc: npc/re/warps/fields/hugel_fild.txt
npc: npc/re/warps/fields/morroc_fild.txt
npc: npc/re/warps/fields/payon_fild.txt

View File

@@ -106,7 +106,7 @@ ra_temsky,99,135,0 warp rachel71 1,1,ra_temsky,99,113
ra_temsky,137,139,0 warp rachel72 1,1,ra_temsky,109,143
ra_temsky,62,139,0 warp rachel73 1,1,ra_temsky,91,143
//rachel,25,125,0 warp rachel74 1,1,ra_fild11,353,226
rachel,25,125,0 warp rachel74 1,1,ra_fild11,353,226
rachel,275,125,0 warp rachel75 1,1,ra_fild12,40,226
rachel,130,21,0 warp rachel76 1,1,ve_fild02,195,377

View File

@@ -0,0 +1,10 @@
//===== rAthena Script =======================================
//= Warps
//===== Description: =========================================
//= Warp Points for oz_dun
//===== Additional Comments: =================================
//= 1.0 First version. [Capuche]
//============================================================
oz_dun01,112,30,0 warp to_oz_dun02 1,1,oz_dun02,142,279
oz_dun02,142,284,0 warp to_oz_dun01 1,1,oz_dun01,112,34

View File

@@ -0,0 +1,9 @@
//===== rAthena Script =======================================
//= Warps
//===== Description: =========================================
//= Warp Points for thor_v01
//===== Additional Comments: =================================
//= 1.0 First version. [Capuche]
//============================================================
que_thr,186,58,0 warp #Secret passage - Logistics base 2,2,thor_v01,169,169

View File

@@ -0,0 +1,11 @@
//===== rAthena Script =======================================
//= Warps
//===== Description: =========================================
//= Warp Points for gw_fild
//===== Additional Comments: =================================
//= 1.0 First version. [Capuche]
//============================================================
gw_fild01,135,9,0 warp gw_fild01_to_gw_fild02 1,1,gw_fild02,122,385
gw_fild02,122,391,0 warp gw_fild02_to_gw_fild01 1,1,gw_fild01,135,14
wolfvill,276,25,0 warp wolfvill_to_gw_fild01 1,1,gw_fild01,25,101

View File

@@ -37,9 +37,9 @@ ra_fild08,165,29,0 warp ra018 1,1,ra_fild12,149,369
ra_fild12,149,374,0 warp ra019 1,1,ra_fild08,165,36
//ra_fild12,303,27,0 warp ra020 1,1,ra_fild13,295,341
//ra_fild13,295,346,0 warp ra021 1,1,ra_fild12,303,33
//ra_fild11,360,226,0 warp ra022 1,1,rachel,30,125
//ra_fild11,21,290,0 warp ra023 1,1,ra_fild10,379,283
//ra_fild10,384,287,0 warp ra024 1,1,ra_fild11,28,290
ra_fild11,360,226,0 warp ra022 1,1,rachel,30,125
ra_fild11,21,290,0 warp ra023 1,1,ra_fild10,379,283
ra_fild10,384,287,0 warp ra024 1,1,ra_fild11,28,290
//ra_fild11,202,335,0 warp ra025a 1,1,ra_fild07,215,32
//ra_fild07,215,27,0 warp ra025b 1,1,ra_fild11,201,329
//ra_fild07,168,353,0 warp ra026 1,1,ra_fild02,171,45

View File

@@ -4,15 +4,14 @@
#pragma warning(disable:4800)
#include "char.hpp"
#include <cstdarg>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <memory>
#include <unordered_map>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <common/cbasetypes.hpp>
#include <common/cli.hpp>
#include <common/core.hpp>
@@ -2831,9 +2830,10 @@ void char_config_split_startpoint( char* w1_value, char* w2_value, struct s_poin
lineitem = strtok(w2_value, ":");
while (lineitem != NULL && (*count) < MAX_STARTPOINT) {
int n = sv_split(lineitem, strlen(lineitem), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE);
bool error;
size_t n = sv_split( lineitem, strlen( lineitem ), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE, error );
if (n + 1 < fields_length) {
if( error || ( n + 1 ) < fields_length ){
ShowDebug("%s: not enough arguments for %s! Skipping...\n", w1_value, lineitem);
lineitem = strtok(NULL, ":"); //next lineitem
continue;
@@ -2867,9 +2867,10 @@ void char_config_split_startitem(char *w1_value, char *w2_value, struct startite
lineitem = strtok(w2_value, ":");
while (lineitem != NULL && i < MAX_STARTITEM) {
int n = sv_split(lineitem, strlen(lineitem), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE);
bool error;
size_t n = sv_split( lineitem, strlen( lineitem ), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE, error );
if (n + 1 < fields_length) {
if( error || ( n + 1 ) < fields_length ){
ShowDebug("%s: not enough arguments for %s! Skipping...\n", w1_value, lineitem);
lineitem = strtok(NULL, ":"); //next lineitem
continue;

View File

@@ -3,13 +3,12 @@
#include "char_clif.hpp"
#include <cstdlib>
#include <cstring>
#include <memory>
#include <unordered_map>
#include <vector>
#include <stdlib.h>
#include <string.h>
#include <common/malloc.hpp>
#include <common/mapindex.hpp>
#include <common/mmo.hpp>
@@ -30,10 +29,6 @@
using namespace rathena;
// Reuseable global packet buffer to prevent too many allocations
// Take socket.cpp::socket_max_client_packet into consideration
static int8 packet_buffer[UINT16_MAX];
std::vector<struct s_point_str> accessible_maps{
s_point_str{ MAP_PRONTERA, 273, 354 },
s_point_str{ MAP_GEFFEN, 120, 100 },

View File

@@ -3,8 +3,8 @@
#include "char_cnslif.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include <common/cli.hpp>
#include <common/ers.hpp>

View File

@@ -3,11 +3,10 @@
#include "char_logif.hpp"
#include <cstdlib>
#include <cstring>
#include <memory>
#include <stdlib.h>
#include <string.h>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>

View File

@@ -3,11 +3,10 @@
#include "char_mapif.hpp"
#include <cstdlib>
#include <cstring> //memcpy
#include <memory>
#include <stdlib.h>
#include <string.h> //memcpy
#include <common/malloc.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>

View File

@@ -3,9 +3,9 @@
#include "int_achievement.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <common/db.hpp>
#include <common/malloc.hpp>

View File

@@ -3,13 +3,12 @@
#include "int_auction.hpp"
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <memory>
#include <unordered_map>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>

View File

@@ -3,13 +3,12 @@
#include "int_clan.hpp"
#include <cstdlib>
#include <cstring> //memset
#include <memory>
#include <unordered_map>
#include <vector>
#include <stdlib.h>
#include <string.h> //memset
#include <common/cbasetypes.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>

View File

@@ -3,8 +3,8 @@
#include "int_elemental.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>

View File

@@ -3,13 +3,11 @@
#include "int_guild.hpp"
#include <cstdlib>
#include <cstring>
#include <memory>
#include <unordered_map>
#include <stdlib.h>
#define __STDC_WANT_LIB_EXT1__ 1
#include <string.h>
#include <common/cbasetypes.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>

View File

@@ -3,8 +3,8 @@
#include "int_homun.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>

View File

@@ -3,11 +3,10 @@
#include "int_mail.hpp"
#include <cstdlib>
#include <cstring>
#include <memory>
#include <stdlib.h>
#include <string.h>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>

View File

@@ -3,8 +3,8 @@
#include "int_mercenary.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>

View File

@@ -3,12 +3,11 @@
#include "int_party.hpp"
#include <cstdlib>
#include <cstring>
#include <memory>
#include <unordered_map>
#include <stdlib.h>
#include <string.h>
#include <common/cbasetypes.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>

View File

@@ -3,8 +3,8 @@
#include "int_pet.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include <common/malloc.hpp>
#include <common/mmo.hpp>

View File

@@ -3,8 +3,8 @@
#include "int_quest.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include <common/malloc.hpp>
#include <common/mmo.hpp>

View File

@@ -4,8 +4,8 @@
#pragma warning(disable:4800) //forcing value to bool
#include "int_storage.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include <common/malloc.hpp>
#include <common/mmo.hpp>

View File

@@ -3,13 +3,13 @@
#include "inter.hpp"
#include <cstdlib>
#include <cstring>
#include <cstring>
#include <memory>
#include <unordered_map>
#include <vector>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <sys/stat.h> // for stat/lstat/fstat - [Dekamaster/Ultimate GM Tool]
#include <common/cbasetypes.hpp>

View File

@@ -87,7 +87,7 @@
#endif
#include <cinttypes>
#include <limits.h>
#include <climits>
// temporary fix for bugreport:4961 (unintended conversion from signed to unsigned)
// (-20 >= UCHAR_MAX) returns true
@@ -178,8 +178,7 @@ typedef unsigned long int ppuint32;
//////////////////////////////////////////////////////////////////////////
// integer with exact processor width (and best speed)
//////////////////////////////
#include <stddef.h> // size_t
//#include <stdbool.h> //boolean
#include <cstddef> // size_t
//////////////////////////////////////////////////////////////////////////
@@ -301,7 +300,7 @@ typedef char bool;
#define Assert(EX)
#else
// extern "C" {
#include <assert.h>
#include <cassert>
// }
#if !defined(DEFCPP) && defined(WIN32) && !defined(MINGW)
#include <crtdbg.h>
@@ -313,7 +312,7 @@ typedef char bool;
//////////////////////////////////////////////////////////////////////////
// Has to be unsigned to avoid problems in some systems
// Problems arise when these functions expect an argument in the range [0,256[ and are fed a signed char.
#include <ctype.h>
#include <cctype>
#define ISALNUM(c) (isalnum((unsigned char)(c)))
#define ISALPHA(c) (isalpha((unsigned char)(c)))
#define ISCNTRL(c) (iscntrl((unsigned char)(c)))
@@ -335,7 +334,7 @@ typedef char bool;
//////////////////////////////////////////////////////////////////////////
// Make sure va_copy exists
#include <stdarg.h> // va_list, va_copy(?)
#include <cstdarg> // va_list, va_copy(?)
#if !defined(va_copy)
#if defined(__va_copy)
#define va_copy __va_copy

View File

@@ -3,9 +3,9 @@
#include "cli.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#ifdef WIN32
#include <conio.h>

View File

@@ -34,6 +34,7 @@
<ClInclude Include="mmo.hpp" />
<ClInclude Include="msg_conf.hpp" />
<ClInclude Include="nullpo.hpp" />
<ClInclude Include="packets.hpp" />
<ClInclude Include="random.hpp" />
<ClInclude Include="showmsg.hpp" />
<ClInclude Include="socket.hpp" />

View File

@@ -56,6 +56,9 @@
<ClInclude Include="nullpo.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="packets.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="random.hpp">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -3,6 +3,9 @@
#include "core.hpp"
#include <cstdlib>
#include <csignal>
#include <config/core.hpp>
#ifndef MINICORE
@@ -12,8 +15,7 @@
#include "timer.hpp"
#include "sql.hpp"
#endif
#include <stdlib.h>
#include <signal.h>
#ifndef _WIN32
#include <unistd.h>
#else
@@ -340,9 +342,8 @@ int Core::start( int argc, char **argv ){
char *p1;
if((p1 = strrchr(argv[0], '/')) != NULL || (p1 = strrchr(argv[0], '\\')) != NULL ){
char *pwd = NULL; //path working directory
int n=0;
SERVER_NAME = ++p1;
n = p1-argv[0]; //calc dir name len
size_t n = p1-argv[0]; //calc dir name len
pwd = safestrncpy((char*)malloc(n + 1), argv[0], n);
if(chdir(pwd) != 0)
ShowError("Couldn't change working directory to %s for %s, runtime will probably fail",pwd,SERVER_NAME);

View File

@@ -15,7 +15,7 @@
/* so that developers with --enable-debug can raise signals from any section of the code they'd like */
#ifdef DEBUG
#include <signal.h>
#include <csignal>
#endif
#if defined(BUILDBOT)

View File

@@ -70,8 +70,8 @@
#include "db.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <cstdio>
#include <cstdlib>
#include "ers.hpp"
#include "malloc.hpp"

View File

@@ -42,10 +42,9 @@
#ifndef DB_HPP
#define DB_HPP
#include <cstdarg>
#include <utility>
#include <stdarg.h>
#include "cbasetypes.hpp"
/*****************************************************************************\

View File

@@ -42,8 +42,8 @@
#include "ers.hpp"
#include <stdlib.h>
#include <string.h>
#include <cstdlib>
#include <cstring>
#include "cbasetypes.hpp"
#include "malloc.hpp" // CREATE, RECREATE, aMalloc, aFree

View File

@@ -3,7 +3,8 @@
#include "grfio.hpp"
#include <stdlib.h>
#include <cstdlib>
#include <zlib.h>
#include "cbasetypes.hpp"

View File

@@ -3,9 +3,9 @@
#include "malloc.hpp"
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include "core.hpp"
#include "showmsg.hpp"
@@ -20,7 +20,6 @@
#if defined(MEMWATCH)
# include <string.h>
# include "memwatch.h"
# define MALLOC(n,file,line,func) mwMalloc((n),(file),(line))
# define CALLOC(m,n,file,line,func) mwCalloc((m),(n),(file),(line))
@@ -33,8 +32,6 @@
#elif defined(DMALLOC)
# include <string.h>
# include <stdlib.h>
# include "dmalloc.hpp"
# define MALLOC(n,file,line,func) dmalloc_malloc((file),(line),(n),DMALLOC_FUNC_MALLOC,0,0)
# define CALLOC(m,n,file,line,func) dmalloc_malloc((file),(line),(m)*(n),DMALLOC_FUNC_CALLOC,0,0)

View File

@@ -3,7 +3,7 @@
#include "mapindex.hpp"
#include <stdlib.h>
#include <cstdlib>
#include "core.hpp"
#include "mmo.hpp"

View File

@@ -11,8 +11,8 @@
#include "md5calc.hpp"
#include <stdio.h>
#include <string.h>
#include <cstdio>
#include <cstring>
#include "random.hpp"

View File

@@ -4,7 +4,7 @@
#ifndef MMO_HPP
#define MMO_HPP
#include <time.h>
#include <ctime>
#include <config/core.hpp>
@@ -116,6 +116,9 @@ typedef uint32 t_itemid;
#ifndef MAX_BARTER_REQUIREMENTS
#define MAX_BARTER_REQUIREMENTS 5
#endif
#ifndef WEB_AUTH_TOKEN_LENGTH
#define WEB_AUTH_TOKEN_LENGTH 16+1
#endif
enum e_enchantgrade : uint16{
ENCHANTGRADE_NONE = 0,
@@ -604,7 +607,8 @@ struct mmo_charstatus {
#ifdef HOTKEY_SAVING
struct hotkey hotkeys[MAX_HOTKEYS_DB];
#endif
bool show_equip,allow_party, disable_call;
bool show_equip, disable_call;
bool disable_partyinvite;
short rename;
time_t delete_date;

View File

@@ -3,9 +3,9 @@
#include "msg_conf.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "malloc.hpp"
#include "showmsg.hpp"

View File

@@ -3,9 +3,9 @@
#include "nullpo.hpp"
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <cstdio>
#include <cstdarg>
#include <cstring>
#include "showmsg.hpp"

306
src/common/packets.hpp Normal file
View File

@@ -0,0 +1,306 @@
// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
#ifndef PACKETS_HPP
#define PACKETS_HPP
#include <functional>
#include <unordered_map>
#include <common/cbasetypes.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/utilities.hpp>
#pragma warning( push )
#pragma warning( disable : 4200 )
#define DEFINE_PACKET_HEADER( name, id ) const int16 HEADER_##name = id
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
#pragma pack( push, 1 )
#endif
struct PACKET{
int16 packetType;
int16 packetLength;
} __attribute__((packed));
struct PACKET_CA_LOGIN{
int16 packetType;
uint32 version;
char username[NAME_LENGTH];
char password[NAME_LENGTH];
uint8 clienttype;
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_LOGIN, 0x64 );
#if PACKETVER >= 20170315
struct PACKET_AC_ACCEPT_LOGIN_sub{
uint32 ip;
uint16 port;
char name[20];
uint16 users;
uint16 type;
uint16 new_;
uint8 unknown[128];
} __attribute__((packed));
struct PACKET_AC_ACCEPT_LOGIN{
int16 packetType;
int16 packetLength;
uint32 login_id1;
uint32 AID;
uint32 login_id2;
uint32 last_ip;
char last_login[26];
uint8 sex;
char token[WEB_AUTH_TOKEN_LENGTH];
PACKET_AC_ACCEPT_LOGIN_sub char_servers[];
} __attribute__((packed));
DEFINE_PACKET_HEADER( AC_ACCEPT_LOGIN, 0xac4 );
#else
struct PACKET_AC_ACCEPT_LOGIN_sub{
uint32 ip;
uint16 port;
char name[20];
uint16 users;
uint16 type;
uint16 new_;
} __attribute__((packed));
struct PACKET_AC_ACCEPT_LOGIN{
int16 packetType;
int16 packetLength;
uint32 login_id1;
uint32 AID;
uint32 login_id2;
uint32 last_ip;
char last_login[26];
uint8 sex;
PACKET_AC_ACCEPT_LOGIN_sub char_servers[];
} __attribute__((packed));
DEFINE_PACKET_HEADER( AC_ACCEPT_LOGIN, 0x69 );
#endif
// not sure when this started
#if PACKETVER >= 20120000
struct PACKET_AC_REFUSE_LOGIN{
int16 packetType;
uint32 error;
char unblock_time[20];
} __attribute__((packed));
DEFINE_PACKET_HEADER( AC_REFUSE_LOGIN, 0x83e );
#else
struct PACKET_AC_REFUSE_LOGIN{
int16 packetType;
uint8 error;
char unblock_time[20];
} __attribute__((packed));
DEFINE_PACKET_HEADER( AC_REFUSE_LOGIN, 0x6a );
#endif
struct PACKET_SC_NOTIFY_BAN{
int16 packetType;
uint8 result;
} __attribute__((packed));
DEFINE_PACKET_HEADER( SC_NOTIFY_BAN, 0x81 );
struct PACKET_CA_REQ_HASH{
int16 packetType;
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_REQ_HASH, 0x1db );
struct PACKET_AC_ACK_HASH{
int16 packetType;
int16 packetLength;
char salt[];
} __attribute__((packed));
DEFINE_PACKET_HEADER( AC_ACK_HASH, 0x1dc );
struct PACKET_CA_LOGIN2{
int16 packetType;
uint32 version;
char username[NAME_LENGTH];
uint8 passwordMD5[16];
uint8 clienttype;
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_LOGIN2, 0x1dd );
struct PACKET_CA_LOGIN3{
int16 packetType;
uint32 version;
char username[NAME_LENGTH];
uint8 passwordMD5[16];
uint8 clienttype;
uint8 clientinfo;
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_LOGIN3, 0x1fa );
struct PACKET_CA_CONNECT_INFO_CHANGED{
int16 packetType;
char name[NAME_LENGTH];
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_CONNECT_INFO_CHANGED, 0x200 );
struct PACKET_CA_EXE_HASHCHECK{
int16 packetType;
char hash[16];
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_EXE_HASHCHECK, 0x204 );
struct PACKET_CA_LOGIN_PCBANG{
int16 packetType;
uint32 version;
char username[NAME_LENGTH];
char password[NAME_LENGTH];
uint8 clienttype;
char ip[16];
char mac[13];
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_LOGIN_PCBANG, 0x277 );
struct PACKET_CA_LOGIN4{
int16 packetType;
uint32 version;
char username[NAME_LENGTH];
uint8 passwordMD5[16];
uint8 clienttype;
char mac[13];
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_LOGIN4, 0x27c );
struct PACKET_CA_LOGIN_CHANNEL{
int16 packetType;
uint32 version;
char username[NAME_LENGTH];
char password[NAME_LENGTH];
uint8 clienttype;
char ip[16];
char mac[13];
uint8 is_gravity;
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_LOGIN_CHANNEL, 0x2b0 );
struct PACKET_CA_SSO_LOGIN_REQ{
int16 packetType;
int16 packetLength;
uint32 version;
uint8 clienttype;
char username[NAME_LENGTH];
char password[27];
char mac[17];
char ip[15];
char token[];
} __attribute__((packed));
DEFINE_PACKET_HEADER( CA_SSO_LOGIN_REQ, 0x825 );
struct PACKET_CT_AUTH{
int16 packetType;
uint8 unknown[66];
} __attribute__((packed));
DEFINE_PACKET_HEADER( CT_AUTH, 0xacf );
struct PACKET_TC_RESULT{
int16 packetType;
int16 packetLength;
uint32 type;
char unknown1[20];
char unknown2[6];
} __attribute__((packed));
DEFINE_PACKET_HEADER( TC_RESULT, 0xae3 );
// 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 )
#endif
#pragma warning( pop )
template <typename sessiontype> class PacketDatabase{
private:
struct s_packet_info{
bool fixed;
int16 size;
std::function<bool ( int fd, sessiontype& sd )> func;
};
std::unordered_map<int16, s_packet_info> infos;
public:
void add( int16 packetType, bool fixed, int16 size, std::function<bool ( int fd, sessiontype& sd )> func ){
if( fixed ){
if( size < 2 ){
ShowError( "Definition for packet 0x%04x is invalid. Minimum size for a fixed length packet is 2 bytes.\n", packetType );
return;
}
}else{
if( size < 4 ){
ShowError( "Definition for packet 0x%04x is invalid. Minimum size for a dynamic length packet is 2 bytes.\n", packetType );
return;
}
}
s_packet_info& info = infos[packetType];
info.fixed = fixed;
info.size = size;
info.func = func;
}
bool handle( int fd, sessiontype& sd ){
int16 remaining = static_cast<int16>( RFIFOREST( fd ) );
if( remaining < 2 ){
ShowError( "Did not receive enough bytes to process a packet\n" );
set_eof( fd );
return false;
}
PACKET* p = (PACKET*)RFIFOP( fd, 0 );
s_packet_info* info = rathena::util::umap_find( this->infos, p->packetType );
if( info == nullptr ){
ShowError( "Received unknown packet 0x%04x\n", p->packetType );
set_eof( fd );
return false;
}
if( info->fixed ){
if( remaining < info->size ){
ShowError( "Invalid size %hd for packet 0x%04x with fixed size of %hd\n", remaining, p->packetType, info->size );
set_eof( fd );
return false;
}
bool ret = info->func( fd, sd );
RFIFOSKIP( fd, info->size );
return ret;
}else{
if( remaining < info->size ){
ShowError( "Invalid size %hd for packet 0x%04x with dynamic minimum size of %hd\n", remaining, p->packetType, info->size );
set_eof( fd );
return false;
}
if( remaining < p->packetLength ){
ShowError( "Invalid size %hd for packet 0x%04x with dynamic size of %hd\n", remaining, p->packetType, p->packetLength );
set_eof( fd );
return false;
}
bool ret = info->func( fd, sd );
RFIFOSKIP( fd, p->packetLength );
return ret;
}
}
};
#endif /* PACKETS_HPP */

View File

@@ -3,8 +3,8 @@
#include "showmsg.hpp"
#include <stdlib.h> // atexit
#include <time.h>
#include <cstdlib> // atexit
#include <ctime>
#ifdef WIN32
#include "winapi.hpp"
@@ -61,7 +61,7 @@ char console_log_filepath[32] = "./log/unknown.log";
char s_[SBUF_SIZE]; \
StringBuf *d_; \
char *v_; \
int l_; \
size_t l_; \
} buf ={"",NULL,NULL,0}; \
//define NEWBUF
@@ -210,7 +210,7 @@ int VFPRINTF(HANDLE handle, const char *fmt, va_list argptr)
if( !is_console(handle) && stdout_with_ansisequence )
{
WriteFile(handle, BUFVAL(tempbuf), BUFLEN(tempbuf), &written, 0);
WriteFile( handle, BUFVAL( tempbuf ), (DWORD)BUFLEN( tempbuf ), &written, 0 );
return 0;
}

Some files were not shown because too many files have changed in this diff Show More