Compare commits
1 Commits
hotfix/iss
...
refactor/s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
036a5b1950 |
9
3rdparty/libconfig/scanner.c
vendored
9
3rdparty/libconfig/scanner.c
vendored
@@ -2,11 +2,6 @@
|
||||
|
||||
#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 */
|
||||
@@ -2370,7 +2365,3 @@ void libconfig_yyfree (void * ptr , yyscan_t yyscanner)
|
||||
#define YYTABLES_NAME "yytables"
|
||||
|
||||
#line 192 "scanner.l"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning( pop )
|
||||
#endif
|
||||
|
||||
@@ -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 endianness, only LITTLE ENDIAN is supported" )
|
||||
message( WARNING "unable to determine endianess, only LITTLE ENDIAN is supported" )
|
||||
elseif( BIG_ENDIAN )
|
||||
message( FATAL_ERROR "bigendian is not supported" )
|
||||
endif()
|
||||
|
||||
@@ -175,19 +175,3 @@ feature.stylist: on
|
||||
// If this is allowed the "nosave" mapflag is still being respected
|
||||
// and may prevent players from warping back into the instance.
|
||||
//feature.instance_allow_reconnect: yes
|
||||
|
||||
// Enable the Gold PC timer? (Note 1)
|
||||
// Default: yes
|
||||
feature.goldpc_active: yes
|
||||
|
||||
// How many seconds does a player have to be online to receive a point?
|
||||
// Default: 3600 (1h)
|
||||
feature.goldpc_time: 3600
|
||||
|
||||
// How many points can a player have at maximum?
|
||||
// Default: 300
|
||||
feature.goldpc_max_points: 300
|
||||
|
||||
// Should being VIP double the points a player gets? (Note 1)
|
||||
// Default: yes
|
||||
feature.goldpc_vip: yes
|
||||
|
||||
@@ -134,9 +134,3 @@ 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
|
||||
|
||||
@@ -240,7 +240,6 @@ Body:
|
||||
bypass_stat_onclone: true
|
||||
bypass_max_stat: true
|
||||
macro_register: true
|
||||
trade_unconditional: true
|
||||
#all_permission: true
|
||||
|
||||
Footer:
|
||||
|
||||
4
configure
vendored
4
configure
vendored
@@ -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 endianness, only little endian is supported" >&5
|
||||
$as_echo "$as_me: WARNING: unable to determine endianness, only little endian is supported" >&2;}
|
||||
{ $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;}
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -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 endianness, only little endian is supported]])]
|
||||
[AC_MSG_WARN([[unable to determine endianess, only little endian is supported]])]
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -45,8 +45,6 @@ Body:
|
||||
Value: 4
|
||||
- Name: JUMPINGCLAN
|
||||
Value: 5
|
||||
- Name: REPUTATION_EP18
|
||||
Value: 3
|
||||
|
||||
Footer:
|
||||
Imports:
|
||||
|
||||
@@ -20587,7 +20587,16 @@ Body:
|
||||
EquipLevelMin: 94
|
||||
Script: |
|
||||
bonus bMdef,5;
|
||||
bonus3 bSubEle,Ele_All,30,BF_WEAPON;
|
||||
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;
|
||||
bonus bFlee,30;
|
||||
skill "AL_TELEPORT",1;
|
||||
bonus bUnbreakableGarment;
|
||||
|
||||
@@ -4408,6 +4408,7 @@ Body:
|
||||
TargetType: Ground
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
IgnoreFlee: true
|
||||
Flags:
|
||||
IsTrap: true
|
||||
AlterRangeResearchTrap: true
|
||||
@@ -6460,7 +6461,6 @@ 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: 10000
|
||||
Duration2: 15000
|
||||
Requires:
|
||||
SpCost: 200
|
||||
Status: Berserk
|
||||
@@ -10233,7 +10233,17 @@ Body:
|
||||
Time: 55000
|
||||
- Level: 5
|
||||
Time: 60000
|
||||
Duration2: 60000
|
||||
Duration2:
|
||||
- Level: 1
|
||||
Time: 20000
|
||||
- Level: 2
|
||||
Time: 30000
|
||||
- Level: 3
|
||||
Time: 40000
|
||||
- Level: 4
|
||||
Time: 50000
|
||||
- Level: 5
|
||||
Time: 60000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@@ -13856,6 +13866,8 @@ Body:
|
||||
Description: Chain Action
|
||||
MaxLevel: 10
|
||||
Type: Weapon
|
||||
DamageFlags:
|
||||
Critical: true
|
||||
Range: -9
|
||||
Hit: Multi_Hit
|
||||
HitCount: 2
|
||||
@@ -32455,9 +32467,9 @@ Body:
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Duration1: 300000
|
||||
Duration2: 10000
|
||||
Duration2: 15000
|
||||
Requires:
|
||||
SpCost: 200
|
||||
SpCost: 100
|
||||
Status: Berserk
|
||||
- Id: 8207
|
||||
Name: MA_DOUBLE
|
||||
@@ -32636,6 +32648,7 @@ Body:
|
||||
TargetType: Ground
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
IgnoreFlee: true
|
||||
Flags:
|
||||
IsTrap: true
|
||||
AlterRangeResearchTrap: true
|
||||
@@ -33055,10 +33068,9 @@ Body:
|
||||
Type: Weapon
|
||||
TargetType: Attack
|
||||
Range: 1
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Hit: Multi_Hit
|
||||
HitCount: 3
|
||||
Element: Weapon
|
||||
CastCancel: true
|
||||
CastTime: 1000
|
||||
AfterCastActDelay: 2000
|
||||
Duration2: 5000
|
||||
|
||||
@@ -162,7 +162,6 @@ Body:
|
||||
- Status: Poison
|
||||
DurationLookup: NPC_POISON
|
||||
CalcFlags:
|
||||
Def: true
|
||||
Def2: true
|
||||
Regen: true
|
||||
Opt2:
|
||||
@@ -253,7 +252,6 @@ Body:
|
||||
- Status: Dpoison
|
||||
DurationLookup: NPC_POISON
|
||||
CalcFlags:
|
||||
Def: true
|
||||
Def2: true
|
||||
Regen: true
|
||||
Opt2:
|
||||
@@ -1100,7 +1098,6 @@ Body:
|
||||
Icon: EFST_GROUNDMAGIC
|
||||
DurationLookup: SA_VOLCANO
|
||||
CalcFlags:
|
||||
Batk: true
|
||||
Watk: true
|
||||
Flags:
|
||||
NoSave: true
|
||||
@@ -1124,10 +1121,6 @@ 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
|
||||
@@ -2719,7 +2712,6 @@ Body:
|
||||
CalcFlags:
|
||||
Flee: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2728,7 +2720,6 @@ Body:
|
||||
CalcFlags:
|
||||
Watk: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2737,7 +2728,6 @@ Body:
|
||||
CalcFlags:
|
||||
MaxHp: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2746,7 +2736,6 @@ Body:
|
||||
CalcFlags:
|
||||
MaxSp: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2755,7 +2744,6 @@ Body:
|
||||
CalcFlags:
|
||||
Hit: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
|
||||
@@ -35943,14 +35943,14 @@ Body:
|
||||
bonus bVariableCastrate,-5;
|
||||
- Combos:
|
||||
- Combo:
|
||||
- Grey_Icewind_Card
|
||||
- aegis_300457 # 300457
|
||||
- aegis_300455 # 300455
|
||||
Script: |
|
||||
.@r_shoes = getequiprefinerycnt(EQI_SHOES);
|
||||
bonus2 bAddSize,Size_Large,10+3*(.@r_shoes/2);
|
||||
- Combos:
|
||||
- Combo:
|
||||
- Icewind_Card
|
||||
- aegis_300458 # 300458
|
||||
- aegis_300455 # 300455
|
||||
Script: |
|
||||
.@r_shoes = getequiprefinerycnt(EQI_SHOES);
|
||||
@@ -46814,8 +46814,7 @@ 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;
|
||||
.@class_ = geteleminfo(ELEMINFO_CLASS);
|
||||
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0 && .@class_ >= 20816 && .@class_ <= 20820) {
|
||||
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0) {
|
||||
bonus4 bAutoSpellOnSkill,"EM_DIAMOND_STORM","EM_ELEMENTAL_BUSTER",getskilllv("EM_ELEMENTAL_BUSTER"),1000;
|
||||
}
|
||||
}
|
||||
@@ -46836,8 +46835,7 @@ 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;
|
||||
.@class_ = geteleminfo(ELEMINFO_CLASS);
|
||||
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0 && .@class_ >= 20816 && .@class_ <= 20820) {
|
||||
if (getskilllv("EM_ELEMENTAL_BUSTER") > 0 && geteleminfo(0) > 0) {
|
||||
bonus4 bAutoSpellOnSkill,"EM_TERRA_DRIVE","EM_ELEMENTAL_BUSTER",getskilllv("EM_ELEMENTAL_BUSTER"),1000;
|
||||
}
|
||||
}
|
||||
@@ -48625,92 +48623,3 @@ Body:
|
||||
- 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
16370
db/re/item_db_usable.yml
16370
db/re/item_db_usable.yml
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
85694
db/re/item_group_db.yml
85694
db/re/item_group_db.yml
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
# This file is a part of rAthena.
|
||||
# Copyright(C) 2024 rAthena Development Team
|
||||
# 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
|
||||
@@ -159,153 +159,77 @@ 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: Minus_Status_Box_
|
||||
- Item: Boost_Armor_Box
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Minus_Str
|
||||
Amount: 6
|
||||
- Item: Atker_Plate
|
||||
- Item: Atker_Manteau
|
||||
- Item: Atker_Greave
|
||||
- Item: Atker_Ring
|
||||
- Item: Boost_Up_1
|
||||
Amount: 3
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Minus_Agi
|
||||
Amount: 6
|
||||
- Item: Ran_Suits
|
||||
- Item: Ran_Manteau
|
||||
- Item: Ran_Boots
|
||||
- Item: Ran_Brooch
|
||||
- Item: Boost_Up_1
|
||||
Amount: 3
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Minus_Vit
|
||||
Amount: 6
|
||||
- Item: Ele_Robe
|
||||
- Item: Ele_Muffler
|
||||
- Item: Ele_Shoes
|
||||
- Item: Ele_Earing
|
||||
- Item: Boost_Up_1
|
||||
Amount: 3
|
||||
- Group: 3
|
||||
Items:
|
||||
- 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_
|
||||
- Item: Defn_Robe
|
||||
- Item: Defn_Muffler
|
||||
- Item: Defn_Shoes
|
||||
- Item: Defn_Earing
|
||||
- Item: Boost_Up_1
|
||||
Amount: 3
|
||||
- Item: Special_Coin_Pack
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Fire_Bottle
|
||||
Amount: 50
|
||||
- Item: EP17_1_EVT39
|
||||
Amount: 3
|
||||
- Item: EP17_1_EVT02
|
||||
Amount: 18
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Acid_Bottle
|
||||
Amount: 50
|
||||
- Item: BarMealTicket
|
||||
Amount: 20
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: MenEater_Plant_Bottle
|
||||
Amount: 50
|
||||
- Item: Ep18_Amethyst_Fragment
|
||||
Amount: 20
|
||||
- Group: 3
|
||||
Items:
|
||||
- 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: Ep19_Snow_Flower
|
||||
Amount: 20
|
||||
- Item: Metal_W_Box
|
||||
Groups:
|
||||
- Group: 0
|
||||
@@ -402,581 +326,206 @@ Body:
|
||||
- Group: 3
|
||||
Items:
|
||||
- Item: C_School_Bag_PU
|
||||
- Item: Special_Coin_Pack
|
||||
- Item: aegis_101470
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: EP17_1_EVT39
|
||||
Amount: 3
|
||||
- Item: EP17_1_EVT02
|
||||
Amount: 18
|
||||
- Item: Minus_Str
|
||||
Amount: 6
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: BarMealTicket
|
||||
Amount: 20
|
||||
- Item: Minus_Agi
|
||||
Amount: 6
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Ep18_Amethyst_Fragment
|
||||
Amount: 20
|
||||
- Item: Minus_Vit
|
||||
Amount: 6
|
||||
- Group: 3
|
||||
Items:
|
||||
- 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
|
||||
- Item: Minus_Int
|
||||
Amount: 6
|
||||
- Group: 4
|
||||
Items:
|
||||
- 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
|
||||
- Item: Minus_Dex
|
||||
Amount: 6
|
||||
- Group: 5
|
||||
Items:
|
||||
- Item: Hero_Weapon_Up_Box_6
|
||||
- Item: Hero_Weapon_Hammer_S
|
||||
- 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
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Hero_Weapon_Hammer_1
|
||||
- Item: Fire_Bottle
|
||||
Amount: 50
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Hero_Weapon_Hammer_2
|
||||
- Item: Acid_Bottle
|
||||
Amount: 50
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Hero_Weapon_Hammer_3
|
||||
- Item: MenEater_Plant_Bottle
|
||||
Amount: 50
|
||||
- Group: 3
|
||||
Items:
|
||||
- Item: Hero_Weapon_Hammer_4
|
||||
- Item: Coating_Bottle
|
||||
Amount: 50
|
||||
- Group: 4
|
||||
Items:
|
||||
- Item: Hero_Weapon_Hammer_5
|
||||
- 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
|
||||
- Group: 5
|
||||
Items:
|
||||
- Item: Hero_Weapon_Hammer_6
|
||||
- Item: aegis_102215
|
||||
- Item: Scorpio_Diadem_K
|
||||
- Group: 6
|
||||
Items:
|
||||
- Item: Sagittarius_DiademK
|
||||
- Item: aegis_101565
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Bio_Weapon_Refine_Cube
|
||||
- Item: Class_Sha_R_M_Melee
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Old_Refine_Cube
|
||||
- Item: Class_Sha_R_M_Magic
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Geffen_Refine_Cube
|
||||
- Item: aegis_102216
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Bio_Helm_Refine_Cube
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Circlet_Refine_Cube
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Auto_Armor_Refine_Cube
|
||||
- Item: Skill_Sha_R_M_Melee
|
||||
- Group: 3
|
||||
Items:
|
||||
- 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
|
||||
- Item: Skill_Sha_R_M_Magic
|
||||
- Item: aegis_101654
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Royal_Bow_K
|
||||
Refine: 11
|
||||
- Item: aegis_101655
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Shadow_Staff_K
|
||||
Refine: 11
|
||||
- Item: aegis_101656
|
||||
- Item: aegis_101657
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: aegis_101658
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: aegis_101659
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Iron_Nail_K
|
||||
Refine: 11
|
||||
- Item: aegis_101660
|
||||
- Group: 3
|
||||
Items:
|
||||
- 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
|
||||
- Item: aegis_101661
|
||||
- Item: aegis_101662
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Sword_Of_Bluefire
|
||||
Refine: 11
|
||||
- Item: aegis_101663
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Iron_Staff
|
||||
Refine: 11
|
||||
- Item: aegis_101664
|
||||
- Item: aegis_101727
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: aegis_101717
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: aegis_101718
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Oriental_Sword
|
||||
Refine: 11
|
||||
- Item: aegis_101719
|
||||
- Group: 3
|
||||
Items:
|
||||
- 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
|
||||
- Item: aegis_101720
|
||||
- Item: aegis_101728
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: Narcis_Bow
|
||||
Refine: 11
|
||||
- Item: aegis_101721
|
||||
- Group: 1
|
||||
Items:
|
||||
- Item: Magic_Sword
|
||||
Refine: 11
|
||||
- Item: aegis_101722
|
||||
- Group: 2
|
||||
Items:
|
||||
- Item: Avenger
|
||||
Refine: 11
|
||||
- Item: aegis_101723
|
||||
- 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
|
||||
- Item: aegis_101724
|
||||
- Item: aegis_101729
|
||||
Groups:
|
||||
- Group: 0
|
||||
Items:
|
||||
- Item: OneSkyOneSun
|
||||
Refine: 11
|
||||
- Item: aegis_101725
|
||||
- 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
|
||||
- Item: aegis_101726
|
||||
|
||||
@@ -15318,663 +15318,3 @@ 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
|
||||
|
||||
14406
db/re/item_reform.yml
14406
db/re/item_reform.yml
File diff suppressed because it is too large
Load Diff
@@ -4727,174 +4727,170 @@ Body:
|
||||
- Item: Gray_W_Muffler
|
||||
- Item: Gray_W_Boots
|
||||
- Item: Gray_W_Shoes
|
||||
- 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: 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: Bio_Helm_Refine_Cube
|
||||
ResultRefine: 11
|
||||
MaximumRefine: 10
|
||||
|
||||
1619
db/re/mob_db.yml
1619
db/re/mob_db.yml
File diff suppressed because it is too large
Load Diff
@@ -14489,234 +14489,3 @@
|
||||
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,,,,,,,
|
||||
|
||||
2171
db/re/pet_db.yml
2171
db/re/pet_db.yml
File diff suppressed because it is too large
Load Diff
@@ -1571,32 +1571,8 @@ 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
|
||||
@@ -3233,27 +3209,6 @@ 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
|
||||
@@ -6315,56 +6270,6 @@ 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
|
||||
@@ -8135,106 +8040,6 @@ 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
|
||||
@@ -9274,31 +9079,6 @@ 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
|
||||
@@ -11446,90 +11226,6 @@ 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
|
||||
@@ -11791,61 +11487,12 @@ 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
|
||||
@@ -11974,23 +11621,6 @@ 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
|
||||
|
||||
@@ -9940,7 +9940,7 @@ Body:
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Duration1: 300000
|
||||
Duration2: 10000
|
||||
Duration2: 15000
|
||||
Requires:
|
||||
SpCost: 200
|
||||
Status: Berserk
|
||||
@@ -10486,11 +10486,11 @@ Body:
|
||||
- Level: 1
|
||||
Time: 40000
|
||||
- Level: 2
|
||||
Time: 60000
|
||||
Time: 45000
|
||||
- Level: 3
|
||||
Time: 80000
|
||||
Time: 50000
|
||||
- Level: 4
|
||||
Time: 100000
|
||||
Time: 55000
|
||||
- Level: 5
|
||||
Time: 120000
|
||||
Duration2:
|
||||
@@ -18417,68 +18417,6 @@ Body:
|
||||
HitCount: 1
|
||||
Duration1: 60000
|
||||
Status: Relieve_off
|
||||
- Id: 780
|
||||
Name: NPC_CANE_OF_EVIL_EYE
|
||||
Description: Cane of evil eye
|
||||
MaxLevel: 10
|
||||
Type: Misc
|
||||
TargetType: Ground
|
||||
DamageFlags:
|
||||
IgnoreFlee: true
|
||||
Flags:
|
||||
IsNpc: true
|
||||
Hit: Single
|
||||
Range: 11 # unknown
|
||||
HitCount:
|
||||
- Level: 1
|
||||
Count: 1
|
||||
- Level: 2
|
||||
Count: 2
|
||||
- Level: 3
|
||||
Count: 3
|
||||
- Level: 4
|
||||
Count: 4
|
||||
- Level: 5
|
||||
Count: 5
|
||||
- Level: 6
|
||||
Count: 6
|
||||
- Level: 7
|
||||
Count: 7
|
||||
- Level: 8
|
||||
Count: 8
|
||||
- Level: 9
|
||||
Count: 9
|
||||
- Level: 10
|
||||
Count: 10
|
||||
CastTime: 500
|
||||
Duration1:
|
||||
- Level: 1
|
||||
Time: 1000
|
||||
- Level: 2
|
||||
Time: 2000
|
||||
- Level: 3
|
||||
Time: 3000
|
||||
- Level: 4
|
||||
Time: 4000
|
||||
- Level: 5
|
||||
Time: 5000
|
||||
- Level: 6
|
||||
Time: 6000
|
||||
- Level: 7
|
||||
Time: 7000
|
||||
- Level: 8
|
||||
Time: 8000
|
||||
- Level: 9
|
||||
Time: 9000
|
||||
- Level: 10
|
||||
Time: 10000
|
||||
Unit:
|
||||
Id: Cane_of_evil_eye
|
||||
Interval: 3000
|
||||
Target: Enemy
|
||||
Flag:
|
||||
NoReiteration: true
|
||||
NoOverlap: true
|
||||
- Id: 783
|
||||
Name: NPC_KILLING_AURA
|
||||
Description: Killing Aura
|
||||
@@ -34993,7 +34931,17 @@ Body:
|
||||
Time: 2000
|
||||
- Level: 5
|
||||
Time: 1000
|
||||
Cooldown: 60000
|
||||
Cooldown:
|
||||
- Level: 1
|
||||
Time: 30000
|
||||
- Level: 2
|
||||
Time: 60000
|
||||
- Level: 3
|
||||
Time: 90000
|
||||
- Level: 4
|
||||
Time: 120000
|
||||
- Level: 5
|
||||
Time: 150000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@@ -35018,7 +34966,7 @@ Body:
|
||||
Critical: true
|
||||
Range: 1
|
||||
Hit: Multi_Hit
|
||||
HitCount: 3
|
||||
HitCount: 2
|
||||
Element: Weapon
|
||||
Requires:
|
||||
SpCost: 1
|
||||
@@ -36770,8 +36718,7 @@ Body:
|
||||
SplashArea: 3
|
||||
CastCancel: true
|
||||
Duration1: 600000
|
||||
AfterCastActDelay: 500
|
||||
Cooldown: 700
|
||||
Cooldown: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@@ -36798,7 +36745,6 @@ Body:
|
||||
Element: Weapon
|
||||
SplashArea: 3
|
||||
CastCancel: true
|
||||
AfterCastActDelay: 700
|
||||
Cooldown: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
@@ -36909,16 +36855,16 @@ Body:
|
||||
Toggleable: true
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
GiveAp: 15
|
||||
SplashArea: 10
|
||||
CastCancel: true
|
||||
CastTime: 2000
|
||||
AfterCastActDelay: 300
|
||||
Duration1: 40000
|
||||
Cooldown: 25000
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 60000
|
||||
Cooldown: 15000
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost: 60
|
||||
ApCost: 35
|
||||
Status:
|
||||
Guard_Stance: true
|
||||
Status: Guardian_S
|
||||
@@ -37080,7 +37026,7 @@ Body:
|
||||
Range: 9
|
||||
Hit: Multi_Hit
|
||||
HitCount: -10
|
||||
Element: Neutral
|
||||
Element: Holy
|
||||
CastCancel: true
|
||||
CastTime: 2000
|
||||
Cooldown: 5000
|
||||
@@ -37120,7 +37066,7 @@ Body:
|
||||
Hit: Multi_Hit
|
||||
HitCount: -7
|
||||
Element: Weapon
|
||||
GiveAp: 5
|
||||
GiveAp: 3
|
||||
SplashArea:
|
||||
- Level: 1
|
||||
Area: 2
|
||||
@@ -37167,7 +37113,7 @@ Body:
|
||||
HitCount: 3
|
||||
Element: Weapon
|
||||
SplashArea: 3
|
||||
GiveAp: 5
|
||||
GiveAp: 3
|
||||
CastCancel: true
|
||||
CastTime: 1000
|
||||
AfterCastActDelay: 500
|
||||
@@ -37207,7 +37153,7 @@ Body:
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Element: Holy
|
||||
GiveAp: 6
|
||||
GiveAp: 4
|
||||
CastCancel: true
|
||||
CastTime: 1000
|
||||
AfterCastActDelay: 150
|
||||
@@ -38246,7 +38192,7 @@ Body:
|
||||
Area: 3
|
||||
GiveAp: 3
|
||||
CastCancel: true
|
||||
AfterCastActDelay: 700
|
||||
AfterCastActDelay: 250
|
||||
Duration1:
|
||||
- Level: 1
|
||||
Time: 10000
|
||||
@@ -38919,7 +38865,7 @@ Body:
|
||||
Time: 1500
|
||||
- Level: 5
|
||||
Time: 1000
|
||||
Cooldown: 30000
|
||||
Cooldown: 60000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@@ -38950,27 +38896,26 @@ Body:
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost: 100
|
||||
ApCost: 120
|
||||
ApCost: 150
|
||||
Status: Abyss_Slayer
|
||||
- Id: 5319
|
||||
Name: ABC_ABYSS_STRIKE
|
||||
Description: Omega Abyss Strike
|
||||
Description: Abyss Strike
|
||||
MaxLevel: 10
|
||||
Type: Magic
|
||||
TargetType: Ground
|
||||
Range: 9
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Element: Fire
|
||||
CastCancel: true
|
||||
CastTime: 2000
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 100
|
||||
Cooldown: 700
|
||||
Cooldown: 3000
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost: 125
|
||||
ApCost: 10
|
||||
ApCost: 15
|
||||
Unit:
|
||||
Id: Dummyskill
|
||||
Range: 4
|
||||
@@ -39085,7 +39030,7 @@ Body:
|
||||
Hit: Multi_Hit
|
||||
HitCount: 2
|
||||
Element: Weapon
|
||||
GiveAp: 3
|
||||
GiveAp: 1
|
||||
CastCancel: true
|
||||
AfterCastActDelay: 500
|
||||
Cooldown: 350
|
||||
@@ -40972,7 +40917,7 @@ Body:
|
||||
GiveAp: 5
|
||||
CastCancel: true
|
||||
CastTime: 4000
|
||||
AfterCastActDelay: 700
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 3000
|
||||
Duration2: 10000
|
||||
Cooldown: 2000
|
||||
@@ -41011,7 +40956,7 @@ Body:
|
||||
GiveAp: 5
|
||||
CastCancel: true
|
||||
CastTime: 4000
|
||||
AfterCastActDelay: 700
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 3000
|
||||
Duration2: 20000
|
||||
Cooldown: 2000
|
||||
@@ -41050,7 +40995,7 @@ Body:
|
||||
GiveAp: 5
|
||||
CastCancel: true
|
||||
CastTime: 4000
|
||||
AfterCastActDelay: 700
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 3000
|
||||
Duration2: 20000
|
||||
Cooldown: 2000
|
||||
@@ -41131,7 +41076,7 @@ Body:
|
||||
CastTime: 3000
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 1500000
|
||||
Cooldown: 60000
|
||||
Cooldown: 900000
|
||||
FixedCastTime: 2000
|
||||
Requires:
|
||||
SpCost: 100
|
||||
@@ -41152,7 +41097,7 @@ Body:
|
||||
CastTime: 3000
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 1500000
|
||||
Cooldown: 60000
|
||||
Cooldown: 900000
|
||||
FixedCastTime: 2000
|
||||
Requires:
|
||||
SpCost: 100
|
||||
@@ -41173,7 +41118,7 @@ Body:
|
||||
CastTime: 3000
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 1500000
|
||||
Cooldown: 60000
|
||||
Cooldown: 900000
|
||||
FixedCastTime: 2000
|
||||
Requires:
|
||||
SpCost: 100
|
||||
@@ -41194,7 +41139,7 @@ Body:
|
||||
CastTime: 3000
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 1500000
|
||||
Cooldown: 60000
|
||||
Cooldown: 900000
|
||||
FixedCastTime: 2000
|
||||
Requires:
|
||||
SpCost: 100
|
||||
@@ -41215,7 +41160,7 @@ Body:
|
||||
CastTime: 3000
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 1500000
|
||||
Cooldown: 60000
|
||||
Cooldown: 900000
|
||||
FixedCastTime: 2000
|
||||
Requires:
|
||||
SpCost: 100
|
||||
@@ -41234,11 +41179,11 @@ Body:
|
||||
CastCancel: true
|
||||
CastTime: 8000
|
||||
AfterCastActDelay: 500
|
||||
Cooldown: 2000
|
||||
Cooldown: 5000
|
||||
FixedCastTime: 1500
|
||||
Requires:
|
||||
SpCost: 140
|
||||
ApCost: 15
|
||||
ApCost: 30
|
||||
- Id: 5381
|
||||
Name: EM_ELEMENTAL_VEIL
|
||||
Description: Elemental Veil
|
||||
@@ -41303,7 +41248,7 @@ Body:
|
||||
Splash: true
|
||||
Range: 1
|
||||
Hit: Multi_Hit
|
||||
HitCount: 5
|
||||
HitCount: 2
|
||||
SplashArea: 4
|
||||
Requires:
|
||||
SpCost: 1
|
||||
@@ -41442,473 +41387,6 @@ Body:
|
||||
SplashArea: 6
|
||||
Requires:
|
||||
SpCost: 1
|
||||
- Id: 5401
|
||||
Name: NW_P_F_I
|
||||
Description: P.F.I
|
||||
MaxLevel: 10
|
||||
- Id: 5402
|
||||
Name: NW_GRENADE_MASTERY
|
||||
Description: Grenade Mastery
|
||||
MaxLevel: 10
|
||||
- Id: 5403
|
||||
Name: NW_INTENSIVE_AIM
|
||||
Description: Intensive Aim
|
||||
MaxLevel: 1
|
||||
Type: Weapon
|
||||
TargetType: Self
|
||||
DamageFlags:
|
||||
NoDamage: true
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Duration1: -1
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 10
|
||||
Status: Intensive_Aim
|
||||
- Id: 5404
|
||||
Name: NW_GRENADE_FRAGMENT
|
||||
Description: Grenade Fragment
|
||||
MaxLevel: 7
|
||||
Type: Weapon
|
||||
TargetType: Self
|
||||
DamageFlags:
|
||||
NoDamage: true
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Duration1: 300000
|
||||
Cooldown: 2000
|
||||
Requires:
|
||||
SpCost: 50
|
||||
- Id: 5405
|
||||
Name: NW_THE_VIGILANTE_AT_NIGHT
|
||||
Description: The Vigilante at Night
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Self
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
Hit: Multi_Hit
|
||||
HitCount: 4
|
||||
Element: Weapon
|
||||
SplashArea:
|
||||
- Level: 1
|
||||
Area: 2
|
||||
- Level: 2
|
||||
Area: 2
|
||||
- Level: 3
|
||||
Area: 2
|
||||
- Level: 4
|
||||
Area: 3
|
||||
- Level: 5
|
||||
Area: 3
|
||||
GiveAp: 2
|
||||
AfterCastActDelay: 1000
|
||||
Cooldown: 500
|
||||
CastCancel: true
|
||||
FixedCastTime: 1500
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 72
|
||||
- Level: 2
|
||||
Amount: 76
|
||||
- Level: 3
|
||||
Amount: 80
|
||||
- Level: 4
|
||||
Amount: 84
|
||||
- Level: 5
|
||||
Amount: 88
|
||||
Weapon:
|
||||
Gatling: true
|
||||
Shotgun: true
|
||||
Ammo:
|
||||
Bullet: true
|
||||
AmmoAmount: 10
|
||||
- Id: 5406
|
||||
Name: NW_ONLY_ONE_BULLET
|
||||
Description: Only One Bullet
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Attack
|
||||
DamageFlags:
|
||||
Critical: true
|
||||
Range: -9
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Element: Weapon
|
||||
GiveAp: 2
|
||||
AfterCastActDelay: 500
|
||||
Cooldown: 350
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 39
|
||||
- Level: 2
|
||||
Amount: 43
|
||||
- Level: 3
|
||||
Amount: 47
|
||||
- Level: 4
|
||||
Amount: 51
|
||||
- Level: 5
|
||||
Amount: 55
|
||||
Weapon:
|
||||
Revolver: true
|
||||
Rifle: true
|
||||
Ammo:
|
||||
Bullet: true
|
||||
AmmoAmount: 1
|
||||
- Id: 5407
|
||||
Name: NW_SPIRAL_SHOOTING
|
||||
Description: Spiral Shooting
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Attack
|
||||
DamageFlags:
|
||||
Critical: true
|
||||
Splash: true
|
||||
Range: -9
|
||||
Hit: Multi_Hit
|
||||
HitCount: 1
|
||||
Element: Weapon
|
||||
SplashArea:
|
||||
- Level: 1
|
||||
Area: 2
|
||||
- Level: 2
|
||||
Area: 2
|
||||
- Level: 3
|
||||
Area: 2
|
||||
- Level: 4
|
||||
Area: 3
|
||||
- Level: 5
|
||||
Area: 3
|
||||
GiveAp: 2
|
||||
AfterCastActDelay: 1000
|
||||
Cooldown: 500
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 48
|
||||
- Level: 2
|
||||
Amount: 53
|
||||
- Level: 3
|
||||
Amount: 58
|
||||
- Level: 4
|
||||
Amount: 63
|
||||
- Level: 5
|
||||
Amount: 68
|
||||
Weapon:
|
||||
Grenade: true
|
||||
Rifle: true
|
||||
Ammo:
|
||||
Bullet: true
|
||||
AmmoAmount: 6
|
||||
- Id: 5408
|
||||
Name: NW_MAGAZINE_FOR_ONE
|
||||
Description: Magazine for One
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Attack
|
||||
DamageFlags:
|
||||
Critical: true
|
||||
Range: -9
|
||||
Hit: Multi_Hit
|
||||
HitCount: 6
|
||||
Element: Weapon
|
||||
GiveAp: 2
|
||||
AfterCastActDelay: 1000
|
||||
Cooldown: 500
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 42
|
||||
- Level: 2
|
||||
Amount: 46
|
||||
- Level: 3
|
||||
Amount: 50
|
||||
- Level: 4
|
||||
Amount: 54
|
||||
- Level: 5
|
||||
Amount: 58
|
||||
Weapon:
|
||||
Revolver: true
|
||||
Gatling: true
|
||||
Ammo:
|
||||
Bullet: true
|
||||
AmmoAmount: 6
|
||||
- Id: 5409
|
||||
Name: NW_WILD_FIRE
|
||||
Description: Wild Fire
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Ground
|
||||
Range: -9
|
||||
Hit: Single
|
||||
HitCount: -3
|
||||
Element: Weapon
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
SplashArea:
|
||||
- Level: 1
|
||||
Area: 2
|
||||
- Level: 2
|
||||
Area: 2
|
||||
- Level: 3
|
||||
Area: 2
|
||||
- Level: 4
|
||||
Area: 3
|
||||
- Level: 5
|
||||
Area: 3
|
||||
GiveAp: 2
|
||||
AfterCastActDelay: 1000
|
||||
Cooldown: 500
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 51
|
||||
- Level: 2
|
||||
Amount: 55
|
||||
- Level: 3
|
||||
Amount: 59
|
||||
- Level: 4
|
||||
Amount: 63
|
||||
- Level: 5
|
||||
Amount: 67
|
||||
Weapon:
|
||||
Shotgun: true
|
||||
Grenade: true
|
||||
Ammo:
|
||||
Bullet: true
|
||||
AmmoAmount: 5
|
||||
- Id: 5410
|
||||
Name: NW_BASIC_GRENADE
|
||||
Description: Basic Grenade
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Ground
|
||||
Range: -9
|
||||
Hit: Single
|
||||
HitCount: -2
|
||||
Element: Weapon
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
SplashArea:
|
||||
- Level: 1
|
||||
Area: 1
|
||||
- Level: 2
|
||||
Area: 1
|
||||
- Level: 3
|
||||
Area: 1
|
||||
- Level: 4
|
||||
Area: 2
|
||||
- Level: 5
|
||||
Area: 2
|
||||
GiveAp: 2
|
||||
Cooldown: 300
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 36
|
||||
- Level: 2
|
||||
Amount: 42
|
||||
- Level: 3
|
||||
Amount: 48
|
||||
- Level: 4
|
||||
Amount: 54
|
||||
- Level: 5
|
||||
Amount: 60
|
||||
ItemCost:
|
||||
- Item: Nw_Grenade
|
||||
Amount: 1
|
||||
- Id: 5411
|
||||
Name: NW_HASTY_FIRE_IN_THE_HOLE
|
||||
Description: Hasty Fire in the Hole
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Ground
|
||||
Range: -9
|
||||
Hit: Multi_Hit
|
||||
HitCount: -2
|
||||
Element: Weapon
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
SplashArea: 2
|
||||
GiveAp: 3
|
||||
Cooldown: 1000
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
AfterCastActDelay: 1500
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 50
|
||||
- Level: 2
|
||||
Amount: 53
|
||||
- Level: 3
|
||||
Amount: 56
|
||||
- Level: 4
|
||||
Amount: 59
|
||||
- Level: 5
|
||||
Amount: 62
|
||||
ItemCost:
|
||||
- Item: Nw_Grenade
|
||||
Amount: 3
|
||||
- Id: 5412
|
||||
Name: NW_GRENADES_DROPPING
|
||||
Description: Grenades Dropping
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Ground
|
||||
Range: -9
|
||||
Hit: Multi_Hit
|
||||
HitCount: 3
|
||||
Element: Weapon
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
SplashArea:
|
||||
- Level: 1
|
||||
Area: 5
|
||||
- Level: 2
|
||||
Area: 5
|
||||
- Level: 3
|
||||
Area: 5
|
||||
- Level: 4
|
||||
Area: 4
|
||||
- Level: 5
|
||||
Area: 4
|
||||
GiveAp: 5
|
||||
Cooldown: 4500
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 60
|
||||
- Level: 2
|
||||
Amount: 66
|
||||
- Level: 3
|
||||
Amount: 72
|
||||
- Level: 4
|
||||
Amount: 78
|
||||
- Level: 5
|
||||
Amount: 84
|
||||
ItemCost:
|
||||
- Item: Nw_Grenade
|
||||
Amount: 15
|
||||
Duration1: 4000
|
||||
Duration2: 100
|
||||
Unit:
|
||||
Id: Grenades_Dropping
|
||||
Layout: 0
|
||||
Range:
|
||||
- Level: 1
|
||||
Size: 1
|
||||
- Level: 2
|
||||
Size: 1
|
||||
- Level: 3
|
||||
Size: 1
|
||||
- Level: 4
|
||||
Size: 2
|
||||
- Level: 5
|
||||
Size: 2
|
||||
Interval: 250
|
||||
Target: Enemy
|
||||
Flag:
|
||||
NoOverlap: true
|
||||
PathCheck: true
|
||||
- Id: 5413
|
||||
Name: NW_AUTO_FIRING_LAUNCHER
|
||||
Description: Auto Firing Launcher
|
||||
MaxLevel: 5
|
||||
Type: Weapon
|
||||
TargetType: Self
|
||||
DamageFlags:
|
||||
NoDamage: true
|
||||
Duration1:
|
||||
- Level: 1
|
||||
Time: 120000
|
||||
- Level: 2
|
||||
Time: 150000
|
||||
- Level: 3
|
||||
Time: 180000
|
||||
- Level: 4
|
||||
Time: 210000
|
||||
- Level: 5
|
||||
Time: 240000
|
||||
Cooldown: 30000
|
||||
CastCancel: true
|
||||
FixedCastTime: 3000
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 90
|
||||
- Level: 2
|
||||
Amount: 100
|
||||
- Level: 3
|
||||
Amount: 110
|
||||
- Level: 4
|
||||
Amount: 120
|
||||
- Level: 5
|
||||
Amount: 130
|
||||
Status: Auto_Firing_Launcher
|
||||
- Id: 5414
|
||||
Name: NW_HIDDEN_CARD
|
||||
Description: Hidden Card
|
||||
MaxLevel: 10
|
||||
Type: Weapon
|
||||
TargetType: Self
|
||||
DamageFlags:
|
||||
NoDamage: true
|
||||
Duration1: 300000
|
||||
Cooldown: 60000
|
||||
CastCancel: true
|
||||
FixedCastTime: 2000
|
||||
Requires:
|
||||
SpCost: 150
|
||||
ApCost: 150
|
||||
Status: Hidden_Card
|
||||
- Id: 5415
|
||||
Name: NW_MISSION_BOMBARD
|
||||
Description: Mission Bombard
|
||||
MaxLevel: 10
|
||||
Type: Weapon
|
||||
TargetType: Ground
|
||||
Range: -9
|
||||
Hit: Multi_Hit
|
||||
HitCount: -3
|
||||
Element: Weapon
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
SplashArea: 4
|
||||
Cooldown: 10000
|
||||
CastCancel: true
|
||||
FixedCastTime: 1000
|
||||
Requires:
|
||||
SpCost: 100
|
||||
ApCost: 35
|
||||
ItemCost:
|
||||
- Item: Nw_Grenade
|
||||
Amount: 15
|
||||
Duration1: 10000
|
||||
Unit:
|
||||
Id: Mission_Bombard
|
||||
Layout: 0
|
||||
Range: 2
|
||||
Interval: 250
|
||||
Target: Enemy
|
||||
Flag:
|
||||
NoOverlap: true
|
||||
PathCheck: true
|
||||
- Id: 5449
|
||||
Name: HN_SELFSTUDY_TATICS
|
||||
Description: Self Study Tactics
|
||||
@@ -42689,16 +42167,6 @@ Body:
|
||||
SpCost: 150
|
||||
ApCost: 150
|
||||
Status: Rulebreak
|
||||
- Id: 5496
|
||||
Name: NW_THE_VIGILANTE_AT_NIGHT_GUN_GATLING
|
||||
Description: The Vigilante At Night Gun Gatling
|
||||
MaxLevel: 5
|
||||
CastCancel: true
|
||||
- Id: 5497
|
||||
Name: NW_THE_VIGILANTE_AT_NIGHT_GUN_SHOTGUN
|
||||
Description: The Vigilante At Night Gun Shotgun
|
||||
MaxLevel: 5
|
||||
CastCancel: true
|
||||
- Id: 6001
|
||||
Name: DK_DRAGONIC_BREATH
|
||||
Description: Dragonic Breath
|
||||
@@ -42911,7 +42379,7 @@ Body:
|
||||
- Level: 10
|
||||
Area: 3
|
||||
CastCancel: true
|
||||
AfterCastActDelay: 700
|
||||
AfterCastActDelay: 250
|
||||
Cooldown: 500
|
||||
Requires:
|
||||
SpCost:
|
||||
@@ -45919,7 +45387,7 @@ Body:
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Duration1: 300000
|
||||
Duration2: 10000
|
||||
Duration2: 15000
|
||||
Requires:
|
||||
SpCost: 200
|
||||
Status: Berserk
|
||||
@@ -46552,10 +46020,9 @@ Body:
|
||||
Type: Weapon
|
||||
TargetType: Attack
|
||||
Range: 1
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Hit: Multi_Hit
|
||||
HitCount: 3
|
||||
Element: Weapon
|
||||
CastCancel: true
|
||||
CastTime: 1000
|
||||
AfterCastActDelay: 2000
|
||||
Duration2: 4500
|
||||
|
||||
@@ -7864,95 +7864,6 @@ 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
|
||||
|
||||
112
db/re/status.yml
112
db/re/status.yml
@@ -165,7 +165,6 @@ Body:
|
||||
- Status: Poison
|
||||
DurationLookup: NPC_POISON
|
||||
CalcFlags:
|
||||
Def: true
|
||||
Def2: true
|
||||
Regen: true
|
||||
Opt2:
|
||||
@@ -262,7 +261,6 @@ Body:
|
||||
- Status: Dpoison
|
||||
DurationLookup: NPC_POISON
|
||||
CalcFlags:
|
||||
Def: true
|
||||
Def2: true
|
||||
Regen: true
|
||||
Opt2:
|
||||
@@ -1117,7 +1115,6 @@ Body:
|
||||
Icon: EFST_GROUNDMAGIC
|
||||
DurationLookup: SA_VOLCANO
|
||||
CalcFlags:
|
||||
Batk: true
|
||||
Watk: true
|
||||
Matk: true
|
||||
Flags:
|
||||
@@ -1142,10 +1139,6 @@ 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
|
||||
@@ -2829,7 +2822,6 @@ Body:
|
||||
CalcFlags:
|
||||
Flee: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2838,7 +2830,6 @@ Body:
|
||||
CalcFlags:
|
||||
Watk: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2847,7 +2838,6 @@ Body:
|
||||
CalcFlags:
|
||||
MaxHp: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2856,7 +2846,6 @@ Body:
|
||||
CalcFlags:
|
||||
MaxSp: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -2865,7 +2854,6 @@ Body:
|
||||
CalcFlags:
|
||||
Hit: true
|
||||
Flags:
|
||||
BlEffect: true
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
@@ -7949,9 +7937,6 @@ Body:
|
||||
Flags:
|
||||
BlEffect: true
|
||||
DisplayPc: true
|
||||
NoBanishingBuster: true
|
||||
NoDispell: true
|
||||
NoClearance: true
|
||||
- Status: Ultimate_S
|
||||
Icon: EFST_ULTIMATE_S
|
||||
DurationLookup: IG_ULTIMATE_SACRIFICE
|
||||
@@ -8764,10 +8749,6 @@ Body:
|
||||
DurationLookup: MT_RUSH_QUAKE
|
||||
CalcFlags:
|
||||
All: true
|
||||
Flags:
|
||||
NoDispell: true
|
||||
NoBanishingBuster: true
|
||||
NoClearance: true
|
||||
- Status: G_LIFEPOTION
|
||||
Icon: EFST_G_LIFEPOTION
|
||||
Flags:
|
||||
@@ -8802,96 +8783,3 @@ Body:
|
||||
- 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
|
||||
|
||||
@@ -125,12 +125,6 @@ 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 |
|
||||
======================
|
||||
|
||||
@@ -20,30 +20,11 @@ Title: Quest title.
|
||||
|
||||
TimeLimit: Amount of time before the quest expires.
|
||||
|
||||
Specifying with "+" will mark how long until 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).
|
||||
Format: "d" (optional), [0-23]"h" (optional), [0-59]"mn" (optional), [0-59]"s" (optional).
|
||||
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).
|
||||
|
||||
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
|
||||
Please note the number before "d" only shifts the exact timer to the given day(s).
|
||||
|
||||
---------------------------------------
|
||||
|
||||
|
||||
@@ -8966,9 +8966,8 @@ Get info of elemental of attached player or player by char_id.
|
||||
Other info can be obtained by 'getunitdata' command.
|
||||
|
||||
Valid types are:
|
||||
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)
|
||||
0: Elemental ID
|
||||
1: Elemental Game ID
|
||||
|
||||
---------------------------------------
|
||||
\\
|
||||
|
||||
@@ -1,279 +0,0 @@
|
||||
//===== rAthena Script =======================================
|
||||
//= Gold PC Bonus NPC
|
||||
//===== Description: =========================================
|
||||
//= NPC that can be spawned via the Gold PC Timer Button.
|
||||
//===== Changelog: ===========================================
|
||||
//= 1.0 Initial release [Lemongrass]
|
||||
//= 1.1 Replay version [eppc0330]
|
||||
//= 1.2 Translation of the replay version [Lemongrass]
|
||||
//= 1.3 Cleanup of NPC logic [Lemongrass]
|
||||
//= 1.4 Added replay version of buff NPC [eppc0330]
|
||||
//============================================================
|
||||
|
||||
prontera,0,0,0 script Goldpoint Manager::GOLDPCCAFE 4_F_02,{
|
||||
// ID:AMOUNT:PRICE
|
||||
setarray .items$[1],
|
||||
"25464:1:2", // World_Tour_Ticket 1
|
||||
"23919:1:10", // K_Secret_Key 1
|
||||
"23919:11:100",// K_Secret_Key 11
|
||||
"23919:33:300";// K_Secret_Key 33
|
||||
|
||||
mes "[Goldpoint Manager]";
|
||||
mes "You currently have ^0000ff"+Goldpc_Points+"^000000 points.";
|
||||
mes "What reward do you want?";
|
||||
next;
|
||||
|
||||
.@menu$ = "View current points";
|
||||
|
||||
for(.@i = 1; .@i < getarraysize(.items$); .@i++) {
|
||||
explode(.@array$, .items$[.@i], ":");
|
||||
.@cost = atoi(.@array$[2]);
|
||||
.@menu$ += ":" + .@cost + " points gift";
|
||||
if( Goldpc_Points < .@cost ){
|
||||
.@menu$ += " ^ff0000(not enough points)^000000";
|
||||
}
|
||||
}
|
||||
|
||||
.@s = select(.@menu$)-1;
|
||||
|
||||
if(.@s == 0) {
|
||||
mes "[Goldpoint Manager]";
|
||||
mes "You currently have ^0000ff"+Goldpc_Points+"^000000 points.";
|
||||
close;
|
||||
}
|
||||
|
||||
explode(.@array$, .items$[.@s], ":");
|
||||
.@itemid = atoi(.@array$[0]);
|
||||
.@amount = atoi(.@array$[1]);
|
||||
.@cost = atoi(.@array$[2]);
|
||||
|
||||
if(Goldpc_Points < .@cost) {
|
||||
mes "[Goldpoint Manager]";
|
||||
mes "You have ^0000ff"+Goldpc_Points+"^000000 points remaining.";
|
||||
mes "You cannot get the prize with this amount of points.";
|
||||
close;
|
||||
}
|
||||
|
||||
mes "[Goldpoint Manager]";
|
||||
mes "You chose the "+.@cost+" points gift. We will reward you immediately.";
|
||||
Goldpc_Points -= .@cost;
|
||||
getitem .@itemid,.@amount;
|
||||
mes "You have ^0000ff"+Goldpc_Points+"^000000 points remaining.";
|
||||
close;
|
||||
}
|
||||
|
||||
prontera,146,93,5 script 프버방시피 4_M_MANAGER,{
|
||||
mes "[프버방시피]";
|
||||
mes "여~ 계속 보게 되는군 친구.";
|
||||
mes "별로 소개도 필요없을 정도로";
|
||||
mes "많이 본 것 같지만 아무튼...";
|
||||
mes "..입아프게 말하는 것도 귀찮고,";
|
||||
mes "이미 익히들 잘 알고 있을거라고";
|
||||
mes "생각하니 간단하게 이야기할게.";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "자네가 있는 장소에 따라서,";
|
||||
mes "나는 자네에게 여러가지";
|
||||
mes "서비스를 해 줄 예정이야.";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "아무튼 자네가 지금 서비스를";
|
||||
mes "받을 수 있는가 체크를 해";
|
||||
mes "보도록 하겠어. 잠깐만";
|
||||
mes "기다려봐.";
|
||||
next;
|
||||
if(vip_status(VIP_STATUS_ACTIVE)==1||getgroupid()==99)
|
||||
goto VIP; //Custom. In KRo there's two PC cafe grade : gold and silver.
|
||||
else
|
||||
goto Normal;
|
||||
Normal:
|
||||
mes "[프버방시피]";
|
||||
mes "애석하게도 자네는 서비스를";
|
||||
mes "받을 수 있는 곳에 존재하고";
|
||||
mes "있지않군... 정 서비스를 받고";
|
||||
mes "싶다면 다른 장소에서 컨택트";
|
||||
mes "하도록 해.";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "거 왜, 많은 사람들이 모여서";
|
||||
mes "각자 다른 세계와 조우하는 그";
|
||||
mes "장소 있잖아? 거기로 가서";
|
||||
mes "이쪽 세계로 들어오란 말야.";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "그 때 다시 이야기";
|
||||
mes "하도록 하지. 좋은 하루되게.";
|
||||
close;
|
||||
|
||||
Vip:
|
||||
// ID:갯수:가격:이름:조사
|
||||
setarray .items$[1],
|
||||
"14529:10:2000:을", //탐욕스크롤
|
||||
"12274:1:10000:을", //대환단
|
||||
"12275:1:10000:을", //태청단
|
||||
"12262:10:10000:를"; //마패
|
||||
|
||||
mes "[프버방시피]";
|
||||
mes "오케이. 자네는 서비스를 받을";
|
||||
mes "수 있는 장소...거기서 등급을";
|
||||
mes "나눠보자면 골드 등급인가.";
|
||||
mes "탐욕 스크롤, 대환단, 태청단,";
|
||||
mes "마패를 받을 수 있는데...";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "각자 탐욕 스크롤이 2000제니.";
|
||||
mes "대환단이 10000제니";
|
||||
mes "태청단이 10000제니";
|
||||
mes "마패가 10000제니!";
|
||||
mes "자아, 자네는 이중에 뭘 받고";
|
||||
mes "싶어?";
|
||||
next;
|
||||
|
||||
for(.@i = 1; .@i < getarraysize(.items$); .@i++) {
|
||||
explode(.@array$, .items$[.@i], ":");
|
||||
.@menu$ += ":"+getitemname(atoi(.@array$[0]));
|
||||
}
|
||||
.@s = select(.@menu$+":받지 않는다.")-1;
|
||||
if(.@s == getarraysize(.items$)) {
|
||||
mes "[프버방시피]";
|
||||
mes "확고한 인간이로군. 오케이.";
|
||||
mes "뭐 강요할 생각은 없다네.";
|
||||
mes "그럼 좋은 하루되게나.";
|
||||
close;
|
||||
}
|
||||
explode(.@array$, .items$[.@s], ":");
|
||||
.@itemid = atoi(.@array$[0]);
|
||||
.@amount = atoi(.@array$[1]);
|
||||
.@cost = atoi(.@array$[2]);
|
||||
.@name$ = getitemname(atoi(.@array$[0]));
|
||||
.@part$ = (.@array$[3]);
|
||||
if(zeny < .@cost) {
|
||||
mes "[프버방시피]";
|
||||
mes "애석하게도 자넨 "+.@cost+"제니라는";
|
||||
mes "돈도 없구만... 서비스받기는";
|
||||
mes "글렀어. 아무리 서비스라지만";
|
||||
mes "그렇게 정해졌으니 공짜로 해";
|
||||
mes "줄 수는 없다네.";
|
||||
close;
|
||||
}
|
||||
if(countitem(.@itemid) > 0) {
|
||||
mes "[프버방시피]";
|
||||
mes "애석하게도 음... 자네는";
|
||||
mes "이미 "+.@name$+""+.@part$+" 하나";
|
||||
mes "가지고 있구만. 내가 이야기";
|
||||
mes "안했었나? 아..이거 원 요즘";
|
||||
mes "건망증이 늘어서 말이지.";
|
||||
mes "핫핫핫.";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "좌우지간, 물건이 많지는 않은";
|
||||
mes "관계로 물건을 소지하고 있는";
|
||||
mes "사람에게는 지급 할 수가 없어.";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "다음 기회를 이용해 달라구.";
|
||||
mes "다음에 또 보자구~!";
|
||||
close;
|
||||
}
|
||||
mes "[프버방시피]";
|
||||
mes "오케이. 잘 생각했어. 정말";
|
||||
mes "탁월한 선택이야. 핫핫핫.";
|
||||
mes "잘 쓰도록 하라구~";
|
||||
set Zeny, Zeny - .@cost;
|
||||
getitem .@itemid,.@amount;
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "그리고... 약속의 서비스다-!";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "여기서 골드 등급의 손님을";
|
||||
mes "위한 깜짝 선택! 서비스 4가지";
|
||||
mes "중에 하나를 선택가능!";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "첫 번째, ^FF0000STR+8, AGI+6, DEX+4,";
|
||||
mes "^FF0000ATK+32, FLEE+5!";
|
||||
mes "^000000두 번째, ^FF0000INT+8, DEX+6,";
|
||||
mes "^FF0000VIT+4, MATK+40!^000000";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "세 번째, ^FF0000DEX+8, AGI+6, LUK+4,";
|
||||
mes "^FF0000ATK+24, MATK+24!";
|
||||
mes "^000000네 번째, ^FF0000올+6 ATK+24, MATK+24!!^000000";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "넷 중 뭘 받을래!";
|
||||
next;
|
||||
.@s2 = (select("첫 번째:두 번째:세 번째:네 번째"));
|
||||
|
||||
mes "[프버방시피]";
|
||||
mes "이야아아아아아아압!";
|
||||
if(.@s2 == 1) {
|
||||
sc_start SC_STRFOOD,5400000,8;
|
||||
sc_start SC_AGIFOOD,5400000,6;
|
||||
sc_start SC_DEXFOOD,5400000,4;
|
||||
sc_start SC_ATKPOTION,5400000,32;
|
||||
sc_start SC_FLEEFOOD,5400000,5;
|
||||
} else if(.@s2 == 2) {
|
||||
sc_start SC_INTFOOD,5400000,8;
|
||||
sc_start SC_DEXFOOD,5400000,6;
|
||||
sc_start SC_VITFOOD,5400000,4;
|
||||
sc_start SC_MATKPOTION,5400000,40;
|
||||
} else if(.@s2 == 3) {
|
||||
sc_start SC_DEXFOOD,5400000,8;
|
||||
sc_start SC_AGIFOOD,5400000,6;
|
||||
sc_start SC_LUKFOOD,5400000,4;
|
||||
sc_start SC_ATKPOTION,5400000,24;
|
||||
sc_start SC_MATKPOTION,5400000,24;
|
||||
} else {
|
||||
sc_start SC_STRFOOD,5400000,6;
|
||||
sc_start SC_AGIFOOD,5400000,6;
|
||||
sc_start SC_VITFOOD,5400000,6;
|
||||
sc_start SC_INTFOOD,5400000,6;
|
||||
sc_start SC_DEXFOOD,5400000,6;
|
||||
sc_start SC_LUKFOOD,5400000,6;
|
||||
sc_start SC_ATKPOTION,5400000,24;
|
||||
sc_start SC_MATKPOTION,5400000,24;
|
||||
}
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "힘을 불어넣어주었어. 어때?";
|
||||
mes "손해봤다는 생각은 죽어도";
|
||||
mes "안들지? 핫핫핫. 글쎄 남는";
|
||||
mes "남는 장사도 이렇게 남는";
|
||||
mes "장사가 있을 수가 없대두.";
|
||||
next;
|
||||
mes "[프버방시피]";
|
||||
mes "자 그럼 다음에 또~";
|
||||
close;
|
||||
}
|
||||
|
||||
alberta,104,60,5 duplicate(프버방시피) 프버방시피#alb 4_M_MANAGER
|
||||
aldebaran,146,116,5 duplicate(프버방시피) 프버방시피#ald 4_M_MANAGER
|
||||
amatsu,102,152,5 duplicate(프버방시피) 프버방시피#ama 4_M_MANAGER
|
||||
ayothaya,212,173,5 duplicate(프버방시피) 프버방시피#ayo 4_M_MANAGER
|
||||
brasilis,200,224,5 duplicate(프버방시피) 프버방시피#bra 4_M_MANAGER
|
||||
comodo,199,149,5 duplicate(프버방시피) 프버방시피#com 4_M_MANAGER
|
||||
dewata,202,188,5 duplicate(프버방시피) 프버방시피#dew 4_M_MANAGER
|
||||
dicastes01,193,191,5 duplicate(프버방시피) 프버방시피#dic 4_M_MANAGER
|
||||
einbroch,235,207,5 duplicate(프버방시피) 프버방시피#ein 4_M_MANAGER
|
||||
geffen,126,64,5 duplicate(프버방시피) 프버방시피#gef 4_M_MANAGER
|
||||
gonryun,156,122,5 duplicate(프버방시피) 프버방시피#gon 4_M_MANAGER
|
||||
hugel,80,152,5 duplicate(프버방시피) 프버방시피#hug 4_M_MANAGER
|
||||
izlude,125,148,5 duplicate(프버방시피) 프버방시피#izl 4_M_MANAGER
|
||||
lighthalzen,167,97,5 duplicate(프버방시피) 프버방시피#lig 4_M_MANAGER
|
||||
louyang,210,107,5 duplicate(프버방시피) 프버방시피#lou 4_M_MANAGER
|
||||
malangdo,178,139,5 duplicate(프버방시피) 프버방시피#mld 4_M_MANAGER
|
||||
malaya,234,218,5 duplicate(프버방시피) 프버방시피#mly 4_M_MANAGER
|
||||
manuk,296,147,5 duplicate(프버방시피) 프버방시피#man 4_M_MANAGER
|
||||
mid_camp,201,237,5 duplicate(프버방시피) 프버방시피#mid 4_M_MANAGER
|
||||
mora,113,112,5 duplicate(프버방시피) 프버방시피#mra 4_M_MANAGER
|
||||
morocc,164,255,5 duplicate(프버방시피) 프버방시피#mro 4_M_MANAGER
|
||||
moscovia,220,191,5 duplicate(프버방시피) 프버방시피#mos 4_M_MANAGER
|
||||
niflheim,206,179,5 duplicate(프버방시피) 프버방시피#nif 4_M_MANAGER
|
||||
payon,184,102,5 duplicate(프버방시피) 프버방시피#pay 4_M_MANAGER
|
||||
rachel,111,143,5 duplicate(프버방시피) 프버방시피#rah 4_M_MANAGER
|
||||
splendide,201,153,5 duplicate(프버방시피) 프버방시피#spl 4_M_MANAGER
|
||||
umbala,93,160,5 duplicate(프버방시피) 프버방시피#umb 4_M_MANAGER
|
||||
veins,210,109,5 duplicate(프버방시피) 프버방시피#vei 4_M_MANAGER
|
||||
yuno,149,187,5 duplicate(프버방시피) 프버방시피#yun 4_M_MANAGER
|
||||
@@ -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
|
||||
getgroupitem(IG_GiftBox);
|
||||
getrandgroupitem(IG_GiftBox),1;
|
||||
close;
|
||||
case 2:
|
||||
mes "[Lazy Young Man]";
|
||||
|
||||
@@ -1,615 +0,0 @@
|
||||
//===== 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
|
||||
|
||||
@@ -1,462 +0,0 @@
|
||||
//===== 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;
|
||||
}
|
||||
@@ -1,959 +0,0 @@
|
||||
//===== 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
File diff suppressed because it is too large
Load Diff
@@ -60,4 +60,3 @@ 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
|
||||
|
||||
@@ -1,132 +0,0 @@
|
||||
# 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
|
||||
@@ -1,17 +0,0 @@
|
||||
//===== 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
|
||||
@@ -1,17 +0,0 @@
|
||||
//===== 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
|
||||
@@ -82,23 +82,12 @@ ra_fild08,0,0 monster Anopheles 1627,15,5000
|
||||
//==================================================
|
||||
|
||||
//==================================================
|
||||
// ra_fild10
|
||||
// ra_fild10 - Disabled on Renewal
|
||||
//==================================================
|
||||
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
|
||||
// ra_fild11 - Disabled on Renewal
|
||||
//==================================================
|
||||
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
|
||||
|
||||
@@ -4007,21 +4007,12 @@ 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]";
|
||||
@@ -4148,179 +4139,6 @@ 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.";
|
||||
@@ -4334,13 +4152,10 @@ 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" );
|
||||
|
||||
// check for episode 17.2 completion
|
||||
questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(8681) == 0 && isbegin_quest(18018) == 2 && BaseLevel >= 170" );
|
||||
end;
|
||||
// end;
|
||||
}
|
||||
|
||||
ba_in01,22,262,5 duplicate(dummy_cloaked_npc) Est#ep172_est02 4_F_ESTLOVELOY
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -85,7 +85,6 @@ 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
|
||||
@@ -100,16 +99,12 @@ 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. -------------------
|
||||
@@ -243,7 +238,6 @@ 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
|
||||
|
||||
@@ -55,7 +55,6 @@ 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
|
||||
@@ -87,7 +86,6 @@ 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
|
||||
|
||||
@@ -30,11 +30,9 @@ 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
|
||||
@@ -42,7 +40,6 @@ 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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
//===== 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
|
||||
@@ -1,9 +0,0 @@
|
||||
//===== 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
|
||||
@@ -1,11 +0,0 @@
|
||||
//===== 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
|
||||
@@ -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
|
||||
|
||||
@@ -178,7 +178,6 @@ npc: npc/other/comodo_gambling.txt
|
||||
npc: npc/other/divorce.txt
|
||||
npc: npc/other/fortune.txt
|
||||
npc: npc/other/gm_npcs.txt
|
||||
npc: npc/other/goldpc.txt
|
||||
npc: npc/other/guildpvp.txt
|
||||
npc: npc/other/gympass.txt
|
||||
npc: npc/other/hugel_bingo.txt
|
||||
|
||||
@@ -4,14 +4,15 @@
|
||||
#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>
|
||||
@@ -2830,10 +2831,9 @@ void char_config_split_startpoint( char* w1_value, char* w2_value, struct s_poin
|
||||
lineitem = strtok(w2_value, ":");
|
||||
|
||||
while (lineitem != NULL && (*count) < MAX_STARTPOINT) {
|
||||
bool error;
|
||||
size_t n = sv_split( lineitem, strlen( lineitem ), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE, error );
|
||||
int n = sv_split(lineitem, strlen(lineitem), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE);
|
||||
|
||||
if( error || ( n + 1 ) < fields_length ){
|
||||
if (n + 1 < fields_length) {
|
||||
ShowDebug("%s: not enough arguments for %s! Skipping...\n", w1_value, lineitem);
|
||||
lineitem = strtok(NULL, ":"); //next lineitem
|
||||
continue;
|
||||
@@ -2867,10 +2867,9 @@ void char_config_split_startitem(char *w1_value, char *w2_value, struct startite
|
||||
lineitem = strtok(w2_value, ":");
|
||||
|
||||
while (lineitem != NULL && i < MAX_STARTITEM) {
|
||||
bool error;
|
||||
size_t n = sv_split( lineitem, strlen( lineitem ), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE, error );
|
||||
int n = sv_split(lineitem, strlen(lineitem), 0, ',', fields, fields_length, SV_NOESCAPE_NOTERMINATE);
|
||||
|
||||
if( error || ( n + 1 ) < fields_length ){
|
||||
if (n + 1 < fields_length) {
|
||||
ShowDebug("%s: not enough arguments for %s! Skipping...\n", w1_value, lineitem);
|
||||
lineitem = strtok(NULL, ":"); //next lineitem
|
||||
continue;
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "char_cnslif.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/cli.hpp>
|
||||
#include <common/ers.hpp>
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#include "int_achievement.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/db.hpp>
|
||||
#include <common/malloc.hpp>
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "int_elemental.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/mmo.hpp>
|
||||
#include <common/showmsg.hpp>
|
||||
|
||||
@@ -3,11 +3,13 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "int_homun.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/mmo.hpp>
|
||||
#include <common/showmsg.hpp>
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "int_mercenary.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/mmo.hpp>
|
||||
#include <common/showmsg.hpp>
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
|
||||
#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>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "int_pet.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/malloc.hpp>
|
||||
#include <common/mmo.hpp>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "int_quest.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/malloc.hpp>
|
||||
#include <common/mmo.hpp>
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#pragma warning(disable:4800) //forcing value to bool
|
||||
#include "int_storage.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/malloc.hpp>
|
||||
#include <common/mmo.hpp>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
#endif
|
||||
|
||||
#include <cinttypes>
|
||||
#include <climits>
|
||||
#include <limits.h>
|
||||
|
||||
// temporary fix for bugreport:4961 (unintended conversion from signed to unsigned)
|
||||
// (-20 >= UCHAR_MAX) returns true
|
||||
@@ -178,7 +178,8 @@ typedef unsigned long int ppuint32;
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// integer with exact processor width (and best speed)
|
||||
//////////////////////////////
|
||||
#include <cstddef> // size_t
|
||||
#include <stddef.h> // size_t
|
||||
//#include <stdbool.h> //boolean
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -300,7 +301,7 @@ typedef char bool;
|
||||
#define Assert(EX)
|
||||
#else
|
||||
// extern "C" {
|
||||
#include <cassert>
|
||||
#include <assert.h>
|
||||
// }
|
||||
#if !defined(DEFCPP) && defined(WIN32) && !defined(MINGW)
|
||||
#include <crtdbg.h>
|
||||
@@ -312,7 +313,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 <cctype>
|
||||
#include <ctype.h>
|
||||
#define ISALNUM(c) (isalnum((unsigned char)(c)))
|
||||
#define ISALPHA(c) (isalpha((unsigned char)(c)))
|
||||
#define ISCNTRL(c) (iscntrl((unsigned char)(c)))
|
||||
@@ -334,7 +335,7 @@ typedef char bool;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Make sure va_copy exists
|
||||
#include <cstdarg> // va_list, va_copy(?)
|
||||
#include <stdarg.h> // va_list, va_copy(?)
|
||||
#if !defined(va_copy)
|
||||
#if defined(__va_copy)
|
||||
#define va_copy __va_copy
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#include "cli.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <conio.h>
|
||||
|
||||
@@ -3,9 +3,6 @@
|
||||
|
||||
#include "core.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <csignal>
|
||||
|
||||
#include <config/core.hpp>
|
||||
|
||||
#ifndef MINICORE
|
||||
@@ -15,7 +12,8 @@
|
||||
#include "timer.hpp"
|
||||
#include "sql.hpp"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#ifndef _WIN32
|
||||
#include <unistd.h>
|
||||
#else
|
||||
@@ -342,8 +340,9 @@ 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;
|
||||
size_t n = p1-argv[0]; //calc dir name len
|
||||
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);
|
||||
|
||||
@@ -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 <csignal>
|
||||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
#if defined(BUILDBOT)
|
||||
|
||||
@@ -70,8 +70,8 @@
|
||||
|
||||
#include "db.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "ers.hpp"
|
||||
#include "malloc.hpp"
|
||||
|
||||
@@ -42,9 +42,10 @@
|
||||
#ifndef DB_HPP
|
||||
#define DB_HPP
|
||||
|
||||
#include <cstdarg>
|
||||
#include <utility>
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
|
||||
/*****************************************************************************\
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
|
||||
#include "ers.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
#include "malloc.hpp" // CREATE, RECREATE, aMalloc, aFree
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
|
||||
#include "grfio.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <zlib.h>
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#include "malloc.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "core.hpp"
|
||||
#include "showmsg.hpp"
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#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))
|
||||
@@ -32,6 +33,8 @@
|
||||
|
||||
#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)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "mapindex.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "core.hpp"
|
||||
#include "mmo.hpp"
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
#include "md5calc.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "random.hpp"
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#ifndef MMO_HPP
|
||||
#define MMO_HPP
|
||||
|
||||
#include <ctime>
|
||||
#include <time.h>
|
||||
|
||||
#include <config/core.hpp>
|
||||
|
||||
@@ -607,8 +607,7 @@ struct mmo_charstatus {
|
||||
#ifdef HOTKEY_SAVING
|
||||
struct hotkey hotkeys[MAX_HOTKEYS_DB];
|
||||
#endif
|
||||
bool show_equip, disable_call;
|
||||
bool disable_partyinvite;
|
||||
bool show_equip,allow_party, disable_call;
|
||||
short rename;
|
||||
|
||||
time_t delete_date;
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#include "msg_conf.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "malloc.hpp"
|
||||
#include "showmsg.hpp"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#include "nullpo.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdarg>
|
||||
#include <cstring>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "showmsg.hpp"
|
||||
|
||||
|
||||
@@ -4,30 +4,20 @@
|
||||
#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
|
||||
#define DEFINE_PACKET_ID( name, id ) DEFINE_PACKET_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;
|
||||
@@ -219,88 +209,4 @@ DEFINE_PACKET_HEADER( TC_RESULT, 0xae3 );
|
||||
|
||||
#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 */
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "showmsg.hpp"
|
||||
|
||||
#include <cstdlib> // atexit
|
||||
#include <ctime>
|
||||
#include <stdlib.h> // atexit
|
||||
#include <time.h>
|
||||
|
||||
#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_; \
|
||||
size_t l_; \
|
||||
int 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 ), (DWORD)BUFLEN( tempbuf ), &written, 0 );
|
||||
WriteFile(handle, BUFVAL(tempbuf), BUFLEN(tempbuf), &written, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
#include "socket.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include "winapi.hpp"
|
||||
#else
|
||||
#include <cerrno>
|
||||
#include <errno.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <net/if.h>
|
||||
#include <netdb.h>
|
||||
@@ -1696,7 +1696,10 @@ void send_shortlist_add_fd(int fd)
|
||||
// Do pending network sends and eof handling from the shortlist.
|
||||
void send_shortlist_do_sends()
|
||||
{
|
||||
for( int i = static_cast<int>( send_shortlist_count - 1 ); i >= 0; --i ){
|
||||
int i;
|
||||
|
||||
for( i = send_shortlist_count-1; i >= 0; --i )
|
||||
{
|
||||
int fd = send_shortlist_array[i];
|
||||
int idx = fd/32;
|
||||
int bit = fd%32;
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
#ifndef SOCKET_HPP
|
||||
#define SOCKET_HPP
|
||||
|
||||
#include <ctime>
|
||||
|
||||
#include <config/core.hpp>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -16,6 +14,7 @@
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
#include "malloc.hpp"
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
#include "winapi.hpp"
|
||||
#endif
|
||||
|
||||
#include <cstdlib>// strtoul
|
||||
|
||||
#include <mysql.h>
|
||||
#include <stdlib.h>// strtoul
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
#include "malloc.hpp"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#ifndef SQL_HPP
|
||||
#define SQL_HPP
|
||||
|
||||
#include <cstdarg>// va_list
|
||||
#include <stdarg.h>// va_list
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
|
||||
#include "strlib.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdlib>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
#include "malloc.hpp"
|
||||
@@ -349,7 +348,8 @@ bool bin2hex(char* output, unsigned char* input, size_t count)
|
||||
///
|
||||
/// @param sv Parse state
|
||||
/// @return 1 if a field was parsed, 0 if already done, -1 on error.
|
||||
int sv_parse_next( s_svstate& sv ){
|
||||
int sv_parse_next(struct s_svstate* sv)
|
||||
{
|
||||
enum {
|
||||
START_OF_FIELD,
|
||||
PARSING_FIELD,
|
||||
@@ -358,11 +358,19 @@ int sv_parse_next( s_svstate& sv ){
|
||||
TERMINATE,
|
||||
END
|
||||
} state;
|
||||
const char* str;
|
||||
int len;
|
||||
enum e_svopt opt;
|
||||
char delim;
|
||||
int i;
|
||||
|
||||
const char* str = sv.str;
|
||||
size_t len = sv.len;
|
||||
int opt = sv.opt;
|
||||
char delim = sv.delim;
|
||||
if( sv == NULL )
|
||||
return -1;// error
|
||||
|
||||
str = sv->str;
|
||||
len = sv->len;
|
||||
opt = sv->opt;
|
||||
delim = sv->delim;
|
||||
|
||||
// check opt
|
||||
if( delim == '\n' && (opt&(SV_TERMINATE_CRLF|SV_TERMINATE_LF)) )
|
||||
@@ -376,9 +384,9 @@ int sv_parse_next( s_svstate& sv ){
|
||||
return -1;// error
|
||||
}
|
||||
|
||||
if( sv.done || str == NULL )
|
||||
if( sv->done || str == NULL )
|
||||
{
|
||||
sv.done = true;
|
||||
sv->done = true;
|
||||
return 0;// nothing to parse
|
||||
}
|
||||
|
||||
@@ -389,10 +397,10 @@ int sv_parse_next( s_svstate& sv ){
|
||||
((opt&SV_TERMINATE_CR) && str[i] == '\r') || \
|
||||
((opt&SV_TERMINATE_CRLF) && i+1 < len && str[i] == '\r' && str[i+1] == '\n') )
|
||||
#define IS_C_ESCAPE() ( (opt&SV_ESCAPE_C) && str[i] == '\\' )
|
||||
#define SET_FIELD_START() sv.start = i
|
||||
#define SET_FIELD_END() sv.end = i
|
||||
#define SET_FIELD_START() sv->start = i
|
||||
#define SET_FIELD_END() sv->end = i
|
||||
|
||||
size_t i = sv.off;
|
||||
i = sv->off;
|
||||
state = START_OF_FIELD;
|
||||
while( state != END )
|
||||
{
|
||||
@@ -472,14 +480,14 @@ int sv_parse_next( s_svstate& sv ){
|
||||
else
|
||||
++i;// CR or LF
|
||||
#endif
|
||||
sv.done = true;
|
||||
sv->done = true;
|
||||
state = END;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( IS_END() )
|
||||
sv.done = true;
|
||||
sv.off = i;
|
||||
sv->done = true;
|
||||
sv->off = i;
|
||||
|
||||
#undef IS_END
|
||||
#undef IS_DELIM
|
||||
@@ -512,20 +520,15 @@ int sv_parse_next( s_svstate& sv ){
|
||||
/// @param npos Size of the pos array
|
||||
/// @param opt Options that determine the parsing behaviour
|
||||
/// @return Number of fields found in the string or -1 if an error occured
|
||||
size_t sv_parse( const char* str, size_t len, size_t startoff, char delim, size_t* out_pos, size_t npos, int opt, bool& error ){
|
||||
int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, int npos, enum e_svopt opt)
|
||||
{
|
||||
struct s_svstate sv;
|
||||
int count;
|
||||
|
||||
// initialize
|
||||
error = false;
|
||||
|
||||
if( out_pos == nullptr ){
|
||||
npos = 0;
|
||||
}
|
||||
|
||||
for( size_t i = 0; i < npos; ++i ){
|
||||
out_pos[i] = -1;
|
||||
}
|
||||
|
||||
s_svstate sv = {};
|
||||
|
||||
if( out_pos == NULL ) npos = 0;
|
||||
for( count = 0; count < npos; ++count )
|
||||
out_pos[count] = -1;
|
||||
sv.str = str;
|
||||
sv.len = len;
|
||||
sv.off = startoff;
|
||||
@@ -533,34 +536,18 @@ size_t sv_parse( const char* str, size_t len, size_t startoff, char delim, size_
|
||||
sv.delim = delim;
|
||||
sv.done = false;
|
||||
|
||||
if( npos > 0 ){
|
||||
out_pos[0] = startoff;
|
||||
}
|
||||
|
||||
// parse
|
||||
size_t count = 0;
|
||||
|
||||
while( !sv.done ){
|
||||
count = 0;
|
||||
if( npos > 0 ) out_pos[0] = startoff;
|
||||
while( !sv.done )
|
||||
{
|
||||
++count;
|
||||
|
||||
if( sv_parse_next( sv ) <= 0 ){
|
||||
error = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if( npos > count * 2 ){
|
||||
out_pos[count * 2] = sv.start;
|
||||
}
|
||||
|
||||
if( npos > count * 2 + 1 ){
|
||||
out_pos[count * 2 + 1] = sv.end;
|
||||
}
|
||||
if( sv_parse_next(&sv) <= 0 )
|
||||
return -1;// error
|
||||
if( npos > count*2 ) out_pos[count*2] = sv.start;
|
||||
if( npos > count*2+1 ) out_pos[count*2+1] = sv.end;
|
||||
}
|
||||
|
||||
if( npos > 1 ){
|
||||
out_pos[1] = sv.off;
|
||||
}
|
||||
|
||||
if( npos > 1 ) out_pos[1] = sv.off;
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -583,21 +570,18 @@ size_t sv_parse( const char* str, size_t len, size_t startoff, char delim, size_
|
||||
/// @param nfields Size of the field array
|
||||
/// @param opt Options that determine the parsing behaviour
|
||||
/// @return Number of fields found in the string or -1 if an error occured
|
||||
size_t sv_split( char* str, size_t len, size_t startoff, char delim, char** out_fields, size_t nfields, int opt, bool& error ){
|
||||
if( out_fields == nullptr || nfields <= 0 ){
|
||||
return 0; // nothing to do
|
||||
}
|
||||
int sv_split(char* str, int len, int startoff, char delim, char** out_fields, size_t nfields, enum e_svopt opt)
|
||||
{
|
||||
int pos[1024];
|
||||
int done;
|
||||
char* end;
|
||||
int ret = sv_parse(str, len, startoff, delim, pos, ARRAYLENGTH(pos), opt);
|
||||
|
||||
size_t pos[1024];
|
||||
size_t ret = sv_parse( str, len, startoff, delim, pos, ARRAYLENGTH( pos ), opt, error );
|
||||
|
||||
// An error occurred
|
||||
if( error ){
|
||||
return 0;
|
||||
}
|
||||
if( ret == -1 || out_fields == NULL || nfields <= 0 )
|
||||
return ret; // nothing to do
|
||||
|
||||
// next line
|
||||
char* end = str + pos[1];
|
||||
end = str + pos[1];
|
||||
if( end[0] == '\0' )
|
||||
{
|
||||
*out_fields = end;
|
||||
@@ -630,7 +614,7 @@ size_t sv_split( char* str, size_t len, size_t startoff, char delim, char** out_
|
||||
|
||||
// fields
|
||||
size_t i = 2;
|
||||
size_t done = 0;
|
||||
done = 0;
|
||||
while( done < ret && nfields > 0 )
|
||||
{
|
||||
if( i < ARRAYLENGTH(pos) )
|
||||
@@ -646,13 +630,7 @@ size_t sv_split( char* str, size_t len, size_t startoff, char delim, char** out_
|
||||
}
|
||||
else
|
||||
{// get more fields
|
||||
sv_parse( str, len, pos[i - 1] + 1, delim, pos, ARRAYLENGTH( pos ), opt, error );
|
||||
|
||||
// An error occurred
|
||||
if( error ){
|
||||
return 0;
|
||||
}
|
||||
|
||||
sv_parse(str, len, pos[i-1] + 1, delim, pos, ARRAYLENGTH(pos), opt);
|
||||
i = 2;
|
||||
}
|
||||
}
|
||||
@@ -884,11 +862,13 @@ const char* skip_escaped_c(const char* p)
|
||||
* @param silent : should we display error if file not found ?
|
||||
* @return true on success, false if file could not be opened
|
||||
*/
|
||||
bool sv_readdb( const char* directory, const char* filename, char delim, size_t mincols, size_t maxcols, size_t maxrows, bool (*parseproc)( char* fields[], size_t columns, size_t current ), bool silent ){
|
||||
bool sv_readdb(const char* directory, const char* filename, char delim, int mincols, int maxcols, int maxrows, bool (*parseproc)(char* fields[], int columns, int current), bool silent)
|
||||
{
|
||||
FILE* fp;
|
||||
int lines = 0;
|
||||
size_t entries = 0;
|
||||
int entries = 0;
|
||||
char** fields; // buffer for fields ([0] is reserved)
|
||||
int columns, nb_cols;
|
||||
char path[1024], *line;
|
||||
const short colsize=512;
|
||||
|
||||
@@ -903,12 +883,13 @@ bool sv_readdb( const char* directory, const char* filename, char delim, size_t
|
||||
}
|
||||
|
||||
// allocate enough memory for the maximum requested amount of columns plus the reserved one
|
||||
size_t nb_cols = maxcols + 1;
|
||||
nb_cols = maxcols+1;
|
||||
fields = (char**)aMalloc(nb_cols*sizeof(char*));
|
||||
line = (char*)aMalloc(nb_cols*colsize);
|
||||
|
||||
// process rows one by one
|
||||
while( fgets( line, static_cast<int>( maxcols * colsize ), fp ) ){
|
||||
while( fgets(line, maxcols*colsize, fp) )
|
||||
{
|
||||
char *match;
|
||||
lines++;
|
||||
|
||||
@@ -922,13 +903,7 @@ bool sv_readdb( const char* directory, const char* filename, char delim, size_t
|
||||
if( line[0] == '\0' || line[0] == '\n' || line[0] == '\r')
|
||||
continue;
|
||||
|
||||
bool error;
|
||||
size_t columns = sv_split( line, strlen( line ), 0, delim, fields, nb_cols, SV_TERMINATE_LF|SV_TERMINATE_CRLF, error );
|
||||
|
||||
if( error ){
|
||||
ShowError( "sv_readdb: error in line %d of \"%s\".\n", lines, path );
|
||||
continue;
|
||||
}
|
||||
columns = sv_split(line, strlen(line), 0, delim, fields, nb_cols, (e_svopt)(SV_TERMINATE_LF|SV_TERMINATE_CRLF));
|
||||
|
||||
if( columns < mincols )
|
||||
{
|
||||
@@ -990,49 +965,53 @@ void _StringBuf_Init(const char *file, int line, const char *func,StringBuf* sel
|
||||
}
|
||||
|
||||
/// Appends the result of printf to the StringBuf
|
||||
size_t _StringBuf_Printf( const char* file, int line, const char* func, StringBuf* self, const char* fmt, ... ){
|
||||
int _StringBuf_Printf(const char *file, int line, const char *func,StringBuf* self, const char* fmt, ...)
|
||||
{
|
||||
int len;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
size_t len = _StringBuf_Vprintf(file,line,func,self, fmt, ap);
|
||||
len = _StringBuf_Vprintf(file,line,func,self, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
/// Appends the result of vprintf to the StringBuf
|
||||
size_t _StringBuf_Vprintf( const char* file, int line, const char* func, StringBuf* self, const char* fmt, va_list ap ){
|
||||
int _StringBuf_Vprintf(const char *file, int line, const char *func,StringBuf* self, const char* fmt, va_list ap)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
int n, size, off;
|
||||
va_list apcopy;
|
||||
/* Try to print in the allocated space. */
|
||||
size_t size = self->max_ - (self->ptr_ - self->buf_);
|
||||
size = self->max_ - (self->ptr_ - self->buf_);
|
||||
va_copy(apcopy, ap);
|
||||
int n = vsnprintf( self->ptr_, size, fmt, apcopy );
|
||||
n = vsnprintf(self->ptr_, size, fmt, apcopy);
|
||||
va_end(apcopy);
|
||||
/* If that worked, return the length. */
|
||||
if( n > -1 && n < size )
|
||||
{
|
||||
self->ptr_ += n;
|
||||
return self->ptr_ - self->buf_;
|
||||
return (int)(self->ptr_ - self->buf_);
|
||||
}
|
||||
/* Else try again with more space. */
|
||||
self->max_ *= 2; // twice the old size
|
||||
size_t off = self->ptr_ - self->buf_;
|
||||
off = (int)(self->ptr_ - self->buf_);
|
||||
self->buf_ = (char*)aRealloc2(self->buf_, self->max_ + 1, file, line, func);
|
||||
self->ptr_ = self->buf_ + off;
|
||||
}
|
||||
}
|
||||
|
||||
/// Appends the contents of another StringBuf to the StringBuf
|
||||
size_t _StringBuf_Append(const char *file, int line, const char *func,StringBuf* self, const StringBuf* sbuf)
|
||||
int _StringBuf_Append(const char *file, int line, const char *func,StringBuf* self, const StringBuf* sbuf)
|
||||
{
|
||||
size_t available = self->max_ - (self->ptr_ - self->buf_);
|
||||
size_t needed = sbuf->ptr_ - sbuf->buf_;
|
||||
int available = self->max_ - (self->ptr_ - self->buf_);
|
||||
int needed = (int)(sbuf->ptr_ - sbuf->buf_);
|
||||
|
||||
if( needed >= available )
|
||||
{
|
||||
size_t off = self->ptr_ - self->buf_;
|
||||
int off = (int)(self->ptr_ - self->buf_);
|
||||
self->max_ += needed;
|
||||
self->buf_ = (char*)aRealloc2(self->buf_, self->max_ + 1, file, line, func);
|
||||
self->ptr_ = self->buf_ + off;
|
||||
@@ -1040,26 +1019,26 @@ size_t _StringBuf_Append(const char *file, int line, const char *func,StringBuf*
|
||||
|
||||
memcpy(self->ptr_, sbuf->buf_, needed);
|
||||
self->ptr_ += needed;
|
||||
return self->ptr_ - self->buf_;
|
||||
return (int)(self->ptr_ - self->buf_);
|
||||
}
|
||||
|
||||
// Appends str to the StringBuf
|
||||
size_t _StringBuf_AppendStr(const char *file, int line, const char *func,StringBuf* self, const char* str)
|
||||
int _StringBuf_AppendStr(const char *file, int line, const char *func,StringBuf* self, const char* str)
|
||||
{
|
||||
size_t available = self->max_ - ( self->ptr_ - self->buf_ );
|
||||
size_t needed = strlen( str );
|
||||
int available = self->max_ - (self->ptr_ - self->buf_);
|
||||
int needed = (int)strlen(str);
|
||||
|
||||
if( needed >= available )
|
||||
{// not enough space, expand the buffer (minimum expansion = 1024)
|
||||
size_t off = self->ptr_ - self->buf_;
|
||||
self->max_ += std::max( needed, static_cast<size_t>( 1024 ) );
|
||||
int off = (int)(self->ptr_ - self->buf_);
|
||||
self->max_ += max(needed, 1024);
|
||||
self->buf_ = (char*)aRealloc2(self->buf_, self->max_ + 1, file, line, func);
|
||||
self->ptr_ = self->buf_ + off;
|
||||
}
|
||||
|
||||
memcpy(self->ptr_, str, needed);
|
||||
self->ptr_ += needed;
|
||||
return self->ptr_ - self->buf_;
|
||||
return (int)(self->ptr_ - self->buf_);
|
||||
}
|
||||
|
||||
// Returns the length of the data in the Stringbuf
|
||||
|
||||
@@ -4,20 +4,21 @@
|
||||
#ifndef STRLIB_HPP
|
||||
#define STRLIB_HPP
|
||||
|
||||
#include <cstdarg>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
#include "malloc.hpp"
|
||||
|
||||
#if !defined(__USE_GNU)
|
||||
#define __USE_GNU // required to enable strnlen on some platforms
|
||||
#define __USED_GNU
|
||||
#endif
|
||||
#include <cstring>
|
||||
#include <string.h>
|
||||
#if defined(__USED_GNU)
|
||||
#undef __USE_GNU
|
||||
#undef __USED_GNU
|
||||
#endif
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
#include "malloc.hpp"
|
||||
|
||||
int remove_control_chars(char* str);
|
||||
char* trim(char* str);
|
||||
char* normalize_name(char* str,const char* delims);
|
||||
@@ -84,11 +85,11 @@ typedef enum e_svopt
|
||||
struct s_svstate
|
||||
{
|
||||
const char* str; //< string to parse
|
||||
size_t len; //< string length
|
||||
size_t off; //< current offset in the string
|
||||
size_t start; //< where the field starts
|
||||
size_t end; //< where the field ends
|
||||
int opt; //< parse options
|
||||
int len; //< string length
|
||||
int off; //< current offset in the string
|
||||
int start; //< where the field starts
|
||||
int end; //< where the field ends
|
||||
enum e_svopt opt; //< parse options
|
||||
char delim; //< field delimiter
|
||||
bool done; //< if all the text has been parsed
|
||||
};
|
||||
@@ -98,14 +99,14 @@ struct s_svstate
|
||||
///
|
||||
/// @param sv Parse state
|
||||
/// @return 1 if a field was parsed, 0 if done, -1 on error.
|
||||
int sv_parse_next( s_svstate& sv );
|
||||
int sv_parse_next(struct s_svstate* sv);
|
||||
|
||||
/// Parses a delim-separated string.
|
||||
/// Starts parsing at startoff and fills the pos array with position pairs.
|
||||
/// out_pos[0] and out_pos[1] are the start and end of line.
|
||||
/// Other position pairs are the start and end of fields.
|
||||
/// Returns the number of fields found or -1 if an error occurs.
|
||||
size_t sv_parse( const char* str, size_t len, size_t startoff, char delim, size_t* out_pos, size_t npos, int opt, bool& error );
|
||||
int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, int npos, enum e_svopt opt);
|
||||
|
||||
/// Splits a delim-separated string.
|
||||
/// WARNING: this function modifies the input string
|
||||
@@ -113,7 +114,7 @@ size_t sv_parse( const char* str, size_t len, size_t startoff, char delim, size_
|
||||
/// out_fields[0] is the start of the next line.
|
||||
/// Other entries are the start of fields (nul-teminated).
|
||||
/// Returns the number of fields found or -1 if an error occurs.
|
||||
size_t sv_split( char* str, size_t len, size_t startoff, char delim, char** out_fields, size_t nfields, int opt, bool& error );
|
||||
int sv_split(char* str, int len, int startoff, char delim, char** out_fields, size_t nfields, enum e_svopt opt);
|
||||
|
||||
/// Escapes src to out_dest according to the format of the C compiler.
|
||||
/// Returns the length of the escaped string.
|
||||
@@ -131,7 +132,7 @@ const char* skip_escaped_c(const char* p);
|
||||
/// Opens and parses a file containing delim-separated columns, feeding them to the specified callback function row by row.
|
||||
/// Tracks the progress of the operation (current line number, number of successfully processed rows).
|
||||
/// Returns 'true' if it was able to process the specified file, or 'false' if it could not be read.
|
||||
bool sv_readdb( const char* directory, const char* filename, char delim, size_t mincols, size_t maxcols, size_t maxrows, bool (*parseproc)( char* fields[], size_t columns, size_t current ), bool silent );
|
||||
bool sv_readdb(const char* directory, const char* filename, char delim, int mincols, int maxcols, int maxrows, bool (*parseproc)(char* fields[], int columns, int current), bool silent);
|
||||
|
||||
|
||||
/// StringBuf - dynamic string
|
||||
@@ -139,7 +140,7 @@ struct StringBuf
|
||||
{
|
||||
char *buf_;
|
||||
char *ptr_;
|
||||
size_t max_;
|
||||
unsigned int max_;
|
||||
};
|
||||
typedef struct StringBuf StringBuf;
|
||||
|
||||
@@ -147,13 +148,13 @@ StringBuf* _StringBuf_Malloc(const char *file, int line, const char *func);
|
||||
#define StringBuf_Malloc() _StringBuf_Malloc(ALC_MARK)
|
||||
void _StringBuf_Init(const char *file, int line, const char *func, StringBuf* self);
|
||||
#define StringBuf_Init(self) _StringBuf_Init(ALC_MARK,self)
|
||||
size_t _StringBuf_Printf( const char* file, int line, const char* func, StringBuf* self, const char* fmt, ... );
|
||||
int _StringBuf_Printf(const char *file, int line, const char *func, StringBuf* self, const char* fmt, ...);
|
||||
#define StringBuf_Printf(self,fmt,...) _StringBuf_Printf(ALC_MARK,self,fmt, ## __VA_ARGS__)
|
||||
size_t _StringBuf_Vprintf( const char* file, int line, const char* func, StringBuf* self, const char* fmt, va_list args );
|
||||
int _StringBuf_Vprintf(const char *file, int line, const char *func,StringBuf* self, const char* fmt, va_list args);
|
||||
#define StringBuf_Vprintf(self,fmt,args) _StringBuf_Vprintf(ALC_MARK,self,fmt,args)
|
||||
size_t _StringBuf_Append(const char *file, int line, const char *func, StringBuf* self, const StringBuf *sbuf);
|
||||
int _StringBuf_Append(const char *file, int line, const char *func, StringBuf* self, const StringBuf *sbuf);
|
||||
#define StringBuf_Append(self,sbuf) _StringBuf_Append(ALC_MARK,self,sbuf)
|
||||
size_t _StringBuf_AppendStr(const char *file, int line, const char *func, StringBuf* self, const char* str);
|
||||
int _StringBuf_AppendStr(const char *file, int line, const char *func, StringBuf* self, const char* str);
|
||||
#define StringBuf_AppendStr(self,str) _StringBuf_AppendStr(ALC_MARK,self,str)
|
||||
int StringBuf_Length(StringBuf* self);
|
||||
char* StringBuf_Value(StringBuf* self);
|
||||
|
||||
@@ -3,19 +3,22 @@
|
||||
|
||||
#include "timer.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <utility>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include "winapi.hpp" // GetTickCount()
|
||||
#else
|
||||
#endif
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
#include "db.hpp"
|
||||
#include "malloc.hpp"
|
||||
#include "nullpo.hpp"
|
||||
#include "showmsg.hpp"
|
||||
#include "utils.hpp"
|
||||
#ifdef WIN32
|
||||
#include "winapi.hpp" // GetTickCount()
|
||||
#endif
|
||||
|
||||
// If the server can't handle processing thousands of monsters
|
||||
// or many connected clients, please increase TIMER_MIN_INTERVAL.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#ifndef TIMER_HPP
|
||||
#define TIMER_HPP
|
||||
|
||||
#include <ctime>
|
||||
#include <time.h>
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
|
||||
|
||||
@@ -69,60 +69,14 @@ int levenshtein(const std::string &s1, const std::string &s2)
|
||||
return result;
|
||||
}
|
||||
|
||||
bool rathena::util::safe_substraction( int64 a, int64 b, int64& result ){
|
||||
#if __has_builtin( __builtin_sub_overflow ) || ( defined( __GNUC__ ) && !defined( __clang__ ) && defined( GCC_VERSION ) && GCC_VERSION >= 50100 )
|
||||
return __builtin_sub_overflow( a, b, &result );
|
||||
#else
|
||||
bool overflow = false;
|
||||
|
||||
if( b < 0 ){
|
||||
if( a > ( INT64_MAX + b ) ){
|
||||
overflow = true;
|
||||
}
|
||||
}else{
|
||||
if( a < ( INT64_MIN + b ) ){
|
||||
overflow = true;
|
||||
}
|
||||
}
|
||||
|
||||
result = a - b;
|
||||
|
||||
return overflow;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool rathena::util::safe_multiplication( int64 a, int64 b, int64& result ){
|
||||
#if __has_builtin( __builtin_mul_overflow ) || ( defined( __GNUC__ ) && !defined( __clang__ ) && defined( GCC_VERSION ) && GCC_VERSION >= 50100 )
|
||||
return __builtin_mul_overflow( a, b, &result );
|
||||
#else
|
||||
result = a * b;
|
||||
|
||||
if( a > 0 ){
|
||||
if( b > 0 ){
|
||||
return result < 0;
|
||||
}else if( b < 0 ){
|
||||
return result > 0;
|
||||
}
|
||||
}else if( a < 0 ){
|
||||
if( b > 0 ){
|
||||
return result > 0;
|
||||
}else if( b < 0 ){
|
||||
return result < 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void rathena::util::string_left_pad_inplace(std::string& str, char padding, size_t num)
|
||||
{
|
||||
str.insert( 0, std::min( static_cast<size_t>( 0 ), num - str.length() ), padding );
|
||||
str.insert(0, min(0, num - str.length()), padding);
|
||||
}
|
||||
|
||||
std::string rathena::util::string_left_pad(const std::string& original, char padding, size_t num)
|
||||
{
|
||||
return std::string( num - std::min( num, original.length() ), padding ) + original;
|
||||
return std::string(num - min(num, original.length()), padding) + original;
|
||||
}
|
||||
|
||||
constexpr char base62_dictionary[] = {
|
||||
|
||||
@@ -233,26 +233,25 @@ namespace rathena {
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T, typename = std::enable_if<std::is_integral<T>::value, T>::type>
|
||||
bool safe_addition( T a, T b, T& result ){
|
||||
#if __has_builtin( __builtin_add_overflow ) || ( defined( __GNUC__ ) && !defined( __clang__ ) && defined( GCC_VERSION ) && GCC_VERSION >= 50100 )
|
||||
template <typename T> bool safe_addition(T a, T b, T &result) {
|
||||
return __builtin_add_overflow(a, b, &result);
|
||||
}
|
||||
return __builtin_add_overflow( a, b, &result );
|
||||
#else
|
||||
template <typename T> bool safe_addition( T a, T b, T& result ){
|
||||
bool overflow = false;
|
||||
|
||||
if( std::numeric_limits<T>::is_signed ){
|
||||
if( b < 0 ){
|
||||
if( a < ( (std::numeric_limits<T>::min)() - b ) ){
|
||||
if( a < ( std::numeric_limits<T>::min() - b ) ){
|
||||
overflow = true;
|
||||
}
|
||||
}else{
|
||||
if( a > ( (std::numeric_limits<T>::max)() - b ) ){
|
||||
if( a > ( std::numeric_limits<T>::max() - b ) ){
|
||||
overflow = true;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if( a > ( (std::numeric_limits<T>::max)() - b ) ){
|
||||
if( a > ( std::numeric_limits<T>::max() - b ) ){
|
||||
overflow = true;
|
||||
}
|
||||
}
|
||||
@@ -260,11 +259,56 @@ namespace rathena {
|
||||
result = a + b;
|
||||
|
||||
return overflow;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool safe_substraction( int64 a, int64 b, int64& result );
|
||||
bool safe_multiplication( int64 a, int64 b, int64& result );
|
||||
template <typename T, typename = std::enable_if<std::is_integral<T>::value, T>::type>
|
||||
bool safe_substraction( T a, T b, T& result ){
|
||||
#if __has_builtin( __builtin_sub_overflow ) || ( defined( __GNUC__ ) && !defined( __clang__ ) && defined( GCC_VERSION ) && GCC_VERSION >= 50100 )
|
||||
return __builtin_sub_overflow( a, b, &result );
|
||||
#else
|
||||
bool overflow = false;
|
||||
|
||||
if( b < 0 ){
|
||||
if( a > ( std::numeric_limits<T>::max() + b ) ){
|
||||
overflow = true;
|
||||
}
|
||||
}else{
|
||||
if( a < ( std::numeric_limits<T>::min() + b ) ){
|
||||
overflow = true;
|
||||
}
|
||||
}
|
||||
|
||||
result = a - b;
|
||||
|
||||
return overflow;
|
||||
#endif
|
||||
}
|
||||
|
||||
template <typename T, typename = std::enable_if<std::is_integral<T>::value, T>::type>
|
||||
bool safe_multiplication( T a, T b, T& result ){
|
||||
#if __has_builtin( __builtin_mul_overflow ) || ( defined( __GNUC__ ) && !defined( __clang__ ) && defined( GCC_VERSION ) && GCC_VERSION >= 50100 )
|
||||
return __builtin_mul_overflow( a, b, &result );
|
||||
#else
|
||||
result = a * b;
|
||||
|
||||
if( a > 0 ){
|
||||
if( b > 0 ){
|
||||
return result < 0;
|
||||
}else if( b < 0 ){
|
||||
return result > 0;
|
||||
}
|
||||
}else if( a < 0 ){
|
||||
if( b > 0 ){
|
||||
return result > 0;
|
||||
}else if( b < 0 ){
|
||||
return result < 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Safely add values without overflowing.
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#include "utils.hpp"
|
||||
|
||||
#include <cmath> // floor()
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <math.h> // floor()
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include "winapi.hpp"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#ifndef UTILS_HPP
|
||||
#define UTILS_HPP
|
||||
|
||||
#include <cstdio> // FILE*
|
||||
#include <stdio.h> // FILE*
|
||||
|
||||
#include "cbasetypes.hpp"
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user