Compare commits

...

21 Commits

Author SHA1 Message Date
Atemo
afba22a2aa * Removed the warning in unitstopwalk (there is no way to check is the unit is curently walking with npc script command)
* Corrected mistakes in unitwalk
2022-07-17 18:02:27 +02:00
eppc0330
caa5cdd678 Fix displayed attack when missed (#7093)
Fix miss when a unit dodges attack from player
2022-07-17 06:58:46 +07:00
eppc0330
85454cc7ae Minor change of TF_BACKSLIDING behavior (#7094)
Fix Backsliding blow only when a character is moved by the skill.

If wall is placed behind the character, skill will show casting animation.

Thanks to @Haydrich!
2022-07-17 06:57:38 +07:00
Vincent Stumpf
595fc925e3 Fix an invalid access (#7102) 2022-07-15 20:08:02 -07:00
Vincent Stumpf
ca740549e2 Fix va_arg in getareausers (#7108) 2022-07-15 20:07:40 -07:00
idk-whoami
b2feb2e9b0 Corrected script for some item (#7091)
Fixed #7073
2022-07-15 19:33:12 +02:00
Atemo
6637f0a73c Updated laphine datas (#7110) 2022-07-15 19:26:19 +02:00
Atemo
bb16e43d87 Added missing DropEffect for some items (#7107) 2022-07-15 15:00:22 +02:00
idk-whoami
03b40f7101 Corrected script for some item #8 (#7044)
* Fixed item IDs 19669 Costume Reginleif Hairband
* Fixed items locations IDs 28310 and 28311
2022-07-15 14:58:35 +02:00
Balfear
ec659d576a Added robe for monster avail feature (#7103)
* Added robe to mob avail.
2022-07-14 14:08:29 -04:00
Atemo
f6bc10bfb1 Mob quest target (#7071)
* Added functionality to select monsters that increase the quest counter
* Removed the extra conditions on Id
* Added an example in quest_db.yml for MapMobTargets
* Clean-up the docs
* Added the possibility to define "All" to Location

Thanks to @aleos89 !
2022-07-14 19:00:48 +02:00
Atemo
0fa3e6a672 Fixed a bug with the random options (#7100)
Fixed an issue in the current random option system when the options are re-applied.
2022-07-12 22:32:16 +02:00
Atemo
961951108c Implemented 17.2 items (#7101)
Credits to @crazy-arashi, @JohnnyPlayy and @Everade
2022-07-12 01:34:07 +02:00
Aleos
66c441d765 Fixes itemskill use items being blocked (#7077)
* Fixes #7075.
* Adjusts the skill status check to look for OPT1 flags again instead of cant.cast as this is value is checked later on.
* Resolves items like Fly Wing not working when Silenced.
Thanks to @LadyNanuia!
2022-07-08 08:52:17 -04:00
idk-whoami
8bdff8002c Corrected script for Payon Soldier Card (#7090)
* Fixes #7085.
* Corrected script for Payon Soldier Card.
2022-07-08 08:43:53 -04:00
Daegaladh
15a5bcb2cf Fixed Baphomet Jr. pet Stun resistance (#7079) 2022-07-01 00:30:31 +02:00
Daegaladh
b2cbf263de Fixed MATK rate on pre-re staffs (#7074) 2022-06-30 19:40:04 +02:00
Balfear
79b97bdc51 Auto Spell rate fix (#7068)
* Updates the check for Auto Spell rate values to range from -1000~1000.
Thanks to @Balferian!
2022-06-30 12:40:27 -04:00
eppc0330
56a47cd0a5 Partial revert of #7072 (#7078)
* Baphomet Jr's stun resistance should increase, not decrease.
* Glorious Holy Avenger has been confirmed to give +6 INT.
Thanks to @eppc0330 and @Daegladh!
2022-06-30 12:38:34 -04:00
Aleos
fe60611892 Fixes some bonus inconsistencies (#7072)
* Fixes #7031.
* Resolves Glorious Holy Avenger giving an extra 6 INT in renewal.
* Also cleans up the refine checks for Glorious Holy Avenger in pre-renewal.
* Baphomet Jr pet should now reduce resistance to stun in renewal.
Thanks to @Melk3000!
2022-06-30 09:55:00 -04:00
Aleos
394dab1237 Cleans up Thief's Double Attack item bonuses (#7070)
* Items that grant TF_DOUBLE now no longer require bDoubleRate.
* Adds pc_checkskill_flag() to return a skill's flag value.
Thanks to @eppc0330 and @secretdataz!
2022-06-28 12:01:57 -04:00
34 changed files with 4897 additions and 2316 deletions

View File

@@ -33,6 +33,7 @@
# HeadTop Item name of headgear (if Sprite is a player). (Default: 0)
# HeadMid Item name of headgear (if Sprite is a player). (Default: 0)
# HeadLow Item name of headgear (if Sprite is a player). (Default: 0)
# Robe Item name of robe (if Sprite is a player). (Default: 0)
# PetEquip Item name of pet equipment (if Mob is a valid pet). (Default: 0)
# Options: Set an option for an object. (Optional)
# <Option>: bool
@@ -68,6 +69,7 @@ Header:
# HeadTop: Sahkkat
# HeadMid: Sunglasses
# HeadLow: Cigar
# Robe: Archangel_Wing
# Options:
# Falcon: true
# Valaris Worshiper

View File

@@ -22,37 +22,29 @@
# Quest Settings
#
###########################################################################
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Use a number following by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
# Specify with "+" for how long until the quest expires.
# Specify without "+" for the exact time the quest expires using "d" (optional), [0-23]"h" (required), [0-59]"mn" (optional), [0-59]"s" (optional) format.
# Please note the number before "d" only shift the exact timer to the given day(s).
# Targets: Quest objective target. (Default: null)
# The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
# If Mob is supplied, Count is required and the other fields are ignored.
# If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
# If Id is supplied, Count is required for each new entry.
# - Mob Monster to kill (aegis monster name).
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target (default All). Valid races are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
# Size Monster size target (default All). Valid sizes are Small, Medium, Large, All.
# Element Monster element target (default All). Valid elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default any location)
# On normal maps only kills of permanently spawned monsters increase the counter.
# On instance maps all monster kills increase the counter.
# MapName Displayed map name in quest UI. (Default: empty string)
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Targets: Quest objective target. (Default: null)
# - Mob Name of monster to kill.
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target. (Default: All)
# Size Monster size target. (Default: All)
# Element Monster element target. (Default: All)
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default: All)
# MapName Displayed map name in quest UI. (Default: empty string)
# MapMobTargets List of monster names. Only names in the list will increase the kill counter. Only active when Id is used. (Default: all monsters)
# <name>: <bool> Monster name and whether the monster is added or removed from the list.
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
###########################################################################
Header:
Type: QUEST_DB
Version: 2
Version: 3

View File

@@ -844,7 +844,6 @@ Body:
Refineable: true
Script: |
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
bonus2 bAddRace,RC_DemiHuman,5;
bonus2 bAddRace,RC_Player_Human,5;
- Id: 1131
@@ -10432,8 +10431,9 @@ Body:
bonus bDex,1;
bonus bAtkEle,Ele_Undead;
bonus bMatkRate,20;
bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+getrefine();
if (getrefine()>=9) {
.@r = getrefine();
bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+.@r;
if (.@r>=9) {
bonus bMatkRate,3;
bonus bMaxSP,300;
}
@@ -10485,8 +10485,9 @@ Body:
Script: |
bonus bInt,4;
bonus bMatkRate,15;
bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine();
bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine();
.@r = getrefine();
bonus2 bIgnoreMdefClassRate,Class_Normal,10+.@r;
bonus2 bIgnoreMdefClassRate,Class_Boss,10+.@r;
- Id: 1627
AegisName: Staffy
Name: Staffy
@@ -10781,9 +10782,10 @@ Body:
bonus bInt,3;
bonus bDex,3;
bonus bMatkRate,20;
bonus2 bIgnoreMdefClassRate,Class_Normal,getrefine();
bonus2 bIgnoreMdefClassRate,Class_Boss,getrefine();
bonus bDelayRate,-(getrefine()*3/2);
.@r = getrefine();
bonus2 bIgnoreMdefClassRate,Class_Normal,.@r;
bonus2 bIgnoreMdefClassRate,Class_Boss,.@r;
bonus bDelayRate,-(.@r*3/2);
- Id: 1637
AegisName: Eraser
Name: Eraser
@@ -10908,12 +10910,14 @@ Body:
NoMail: true
NoAuction: true
Script: |
bonus bMatkRate,15;
bonus2 bMagicAddRace,RC_DemiHuman,15;
bonus2 bMagicAddRace,RC_Player_Human,15;
bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0);
bonus2 bIgnoreMdefRaceRate,RC_Player_Human,25 + ((getrefine()>5) ? 5 : 0);
.@r = getrefine();
bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((.@r>5) ? 5 : 0);
bonus2 bIgnoreMdefRaceRate,RC_Player_Human,25 + ((.@r>5) ? 5 : 0);
bonus bUnbreakableWeapon;
if (getrefine()>8) {
if (.@r>8) {
bonus bCastrate,-5;
bonus bDelayRate,-5;
bonus bMatkRate,5;
@@ -10948,17 +10952,19 @@ Body:
NoMail: true
NoAuction: true
Script: |
bonus bMatkRate,15;
bonus bHealPower,14;
bonus bDelayRate,-10;
bonus bUnbreakableWeapon;
if (getrefine()>5) {
.@r = getrefine();
if (.@r>5) {
bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5;
bonus2 bIgnoreMdefRaceRate,RC_Player_Human,5;
bonus bHealPower,5+(getrefine()-5)*2;
bonus bHealPower,5+(.@r-5)*2;
}
if (getrefine()>8)
if (.@r>8)
bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1;
if (getrefine()>9) {
if (.@r>9) {
bonus bHealPower,10;
}
- Id: 1642
@@ -11016,10 +11022,11 @@ Body:
EquipLevelMin: 70
Refineable: true
Script: |
bonus bMatk,15;
bonus bMatkRate,15;
bonus bInt,4;
if (getrefine()>5) {
bonus bInt,getrefine()-5;
.@r = getrefine();
if (.@r>5) {
bonus bInt,.@r-5;
bonus bMaxHP,-200;
bonus bMaxSP,-100;
}
@@ -11057,8 +11064,9 @@ Body:
Script: |
bonus bInt,4;
bonus bMatkRate,15;
bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine();
bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine();
.@r = getrefine();
bonus2 bIgnoreMdefClassRate,Class_Normal,10+.@r;
bonus2 bIgnoreMdefClassRate,Class_Boss,10+.@r;
- Id: 1645
AegisName: Lich_Bone_Wand_M
Name: Lich's Bone Wand
@@ -11096,8 +11104,9 @@ Body:
bonus bDex,1;
bonus bAtkEle,Ele_Undead;
bonus bMatkRate,20;
bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+getrefine();
if (getrefine()>=9) {
.@r = getrefine();
bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+.@r;
if (.@r>=9) {
bonus bMatkRate,3;
bonus bMaxSP,300;
}
@@ -11125,9 +11134,10 @@ Body:
Script: |
bonus bInt,4;
bonus bMatkRate,15;
bonus bMdef,getrefine();
bonus2 bSkillAtk,"WZ_STORMGUST",getrefine();
if (getrefine()>9)
.@r = getrefine();
bonus bMdef,.@r;
bonus2 bSkillAtk,"WZ_STORMGUST",.@r;
if (.@r>9)
bonus2 bCastrate,"WZ_STORMGUST",-8;
- Id: 1647
AegisName: Croce_Staff
@@ -14223,11 +14233,12 @@ Body:
EquipLevelMin: 80
Refineable: true
Script: |
bonus bMatkRate,25+getrefine()/2;
.@r = getrefine();
bonus bMatkRate,25+(.@r/2);
bonus bInt,3;
bonus bAgi,10;
bonus bUseSPrate,(getrefine()*2);
bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20);
bonus bUseSPrate,(.@r*2);
bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(.@r*20);
bonus2 bCastrate,"HW_MAGICPOWER",-50;
- Id: 2001
AegisName: Divine_Cross
@@ -14281,19 +14292,20 @@ Body:
NoMail: true
NoAuction: true
Script: |
bonus bMatkRate,getrefine();
.@r = getrefine();
bonus bMatkRate,15 + .@r;
bonus2 bMagicAddRace,RC_DemiHuman,15;
bonus2 bMagicAddRace,RC_Player_Human,15;
bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25;
bonus2 bIgnoreMdefRaceRate,RC_Player_Human,25;
bonus bUnbreakableWeapon;
if (getrefine()>5) {
bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2;
bonus2 bMagicAddRace,RC_Player_Human,(getrefine()-5)*2;
bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2;
bonus2 bIgnoreMdefRaceRate,RC_Player_Human,5+(getrefine()-5)*2;
if (.@r>5) {
bonus2 bMagicAddRace,RC_DemiHuman,(.@r-5)*2;
bonus2 bMagicAddRace,RC_Player_Human,(.@r-5)*2;
bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(.@r-5)*2;
bonus2 bIgnoreMdefRaceRate,RC_Player_Human,5+(.@r-5)*2;
}
if (getrefine()>8) {
if (.@r>8) {
bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1;
bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1;
bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1;
@@ -14326,11 +14338,12 @@ Body:
NoMail: true
NoAuction: true
Script: |
bonus bMatkRate,25+getrefine()/2;
.@r = getrefine();
bonus bMatkRate,25+(.@r/2);
bonus bInt,3;
bonus bAgi,10;
bonus bUseSPrate,(getrefine()*2);
bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20);
bonus bUseSPrate,(.@r*2);
bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(.@r*20);
bonus2 bCastrate,"HW_MAGICPOWER",-50;
- Id: 2004
AegisName: Kronos
@@ -14353,9 +14366,10 @@ Body:
EquipLevelMin: 50
Refineable: true
Script: |
.@r = getrefine();
bonus bMatkRate,20;
bonus bInt,3+(getrefine()/2);
bonus bMaxHP,300+(50*getrefine()/2);
bonus bInt,3+(.@r/2);
bonus bMaxHP,300+(50*.@r/2);
autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }";
- Id: 2005
AegisName: Dea_Staff
@@ -14384,29 +14398,6 @@ Body:
bonus bInt,6;
bonus bVit,2;
autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }";
- Id: 2006
AegisName: G_Staff_Of_Light
Name: Staff Of Light
Type: Weapon
SubType: 2hStaff
Buy: 20
Weight: 1900
Attack: 80
Range: 1
Jobs:
Mage: true
Sage: true
SoulLinker: true
Wizard: true
Locations:
Both_Hand: true
WeaponLevel: 4
EquipLevelMin: 60
Refineable: true
Script: |
/* bonus bMatk,150;
*/ bonus bAtkEle,Ele_Holy;
bonus bInt,6;
- Id: 2101
AegisName: Guard
Name: Guard
@@ -24702,7 +24693,6 @@ Body:
Script: |
bonus bMaxSP,100;
skill "TF_DOUBLE",3;
bonus bDoubleRate,15;
skill "TF_STEAL",1;
skill "TF_HIDING",1;
skill "TF_POISON",1;
@@ -29767,7 +29757,6 @@ Body:
bonus bMaxHP,50;
bonus bMaxSP,50;
skill "TF_DOUBLE",2;
bonus bDoubleRate,10;
bonus2 bSubRace,RC_DemiHuman,3;
bonus2 bSubRace,RC_Player_Human,3;
- Id: 5284
@@ -31728,7 +31717,6 @@ Body:
NoGuildStorage: true
Script: |
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
- Id: 5389
AegisName: Angel_Spirit
Name: Angel Spirit
@@ -34171,9 +34159,7 @@ Body:
View: 525
Script: |
bonus bDex,2;
.@bonus = max(getskilllv("TF_DOUBLE"), 5);
skill "TF_DOUBLE",.@bonus;
bonus bDoubleRate,.@bonus * 5;
skill "TF_DOUBLE",5;
- Id: 5532
AegisName: Pirate_Dagger_J
Name: Pirate Dagger
@@ -39963,7 +39949,6 @@ Body:
WeaponLevel: 4
Script: |
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
bonus2 bAddRace,RC_DemiHuman,40;
bonus2 bAddRace,RC_Player_Human,40;
- Id: 13408
@@ -40350,14 +40335,16 @@ Body:
NoMail: true
NoAuction: true
Script: |
bonus bInt,getrefine()-5;
.@r = getrefine();
bonus bInt,6;
bonus bInt,.@r-5;
bonus bMatkRate,10;
bonus bUnbreakableWeapon;
if (getrefine()>5)
if (.@r>5)
bonus bUseSPrate,-10;
if (getrefine()>8)
if (.@r>8)
bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000;
if (getrefine()>9)
if (.@r>9)
bonus bInt,5;
- Id: 13419
AegisName: Holy_Saber

View File

@@ -4026,7 +4026,6 @@ Body:
BuyingStore: true
Script: |
skill "TF_DOUBLE",1;
bonus bDoubleRate,5;
- Id: 4118
AegisName: Petit_Card
Name: Earth Petite Card

View File

@@ -22,40 +22,32 @@
# Quest Settings
#
###########################################################################
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Use a number following by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
# Specify with "+" for how long until the quest expires.
# Specify without "+" for the exact time the quest expires using "d" (optional), [0-23]"h" (required), [0-59]"mn" (optional), [0-59]"s" (optional) format.
# Please note the number before "d" only shift the exact timer to the given day(s).
# Targets: Quest objective target. (Default: null)
# The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
# If Mob is supplied, Count is required and the other fields are ignored.
# If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
# If Id is supplied, Count is required for each new entry.
# - Mob Monster to kill (aegis monster name).
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target (default All). Valid races are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
# Size Monster size target (default All). Valid sizes are Small, Medium, Large, All.
# Element Monster element target (default All). Valid elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default any location)
# On normal maps only kills of permanently spawned monsters increase the counter.
# On instance maps all monster kills increase the counter.
# MapName Displayed map name in quest UI. (Default: empty string)
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Targets: Quest objective target. (Default: null)
# - Mob Name of monster to kill.
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target. (Default: All)
# Size Monster size target. (Default: All)
# Element Monster element target. (Default: All)
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default: All)
# MapName Displayed map name in quest UI. (Default: empty string)
# MapMobTargets List of monster names. Only names in the list will increase the kill counter. Only active when Id is used. (Default: all monsters)
# <name>: <bool> Monster name and whether the monster is added or removed from the list.
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
###########################################################################
Header:
Type: QUEST_DB
Version: 2
Version: 3
Body:
- Id: 1000

View File

@@ -22,40 +22,32 @@
# Quest Settings
#
###########################################################################
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Use a number following by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
# Specify with "+" for how long until the quest expires.
# Specify without "+" for the exact time the quest expires using "d" (optional), [0-23]"h" (required), [0-59]"mn" (optional), [0-59]"s" (optional) format.
# Please note the number before "d" only shift the exact timer to the given day(s).
# Targets: Quest objective target. (Default: null)
# The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
# If Mob is supplied, Count is required and the other fields are ignored.
# If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
# If Id is supplied, Count is required for each new entry.
# - Mob Monster to kill (aegis monster name).
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target (default All). Valid races are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
# Size Monster size target (default All). Valid sizes are Small, Medium, Large, All.
# Element Monster element target (default All). Valid elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default any location)
# On normal maps only kills of permanently spawned monsters increase the counter.
# On instance maps all monster kills increase the counter.
# MapName Displayed map name in quest UI. (Default: empty string)
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Targets: Quest objective target. (Default: null)
# - Mob Name of monster to kill.
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target. (Default: All)
# Size Monster size target. (Default: All)
# Element Monster element target. (Default: All)
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default: All)
# MapName Displayed map name in quest UI. (Default: empty string)
# MapMobTargets List of monster names. Only names in the list will increase the kill counter. Only active when Id is used. (Default: all monsters)
# <name>: <bool> Monster name and whether the monster is added or removed from the list.
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
###########################################################################
Header:
Type: QUEST_DB
Version: 2
Version: 3
Footer:
Imports:

View File

@@ -355,17 +355,21 @@ Body:
bonus bAspdRate,getequiprefinerycnt(EQI_HAND_R);
- Combos:
- Combo:
- Principles_Of_Magic
- Librarian_Glove
- Pocket_Watch_
- Principles_Of_Magic # 1572
- Librarian_Glove # 2716
- Pocket_Watch__ # 2971
- Combo:
- Ancient_Magic
- Librarian_Glove
- Pocket_Watch_
- Ancient_Magic # 1573
- Librarian_Glove # 2716
- Pocket_Watch__ # 2971
- Combo:
- Ancient_Magic
- Librarian_Glove
- Pocket_Watch
- Ancient_Magic # 1573
- Librarian_Glove # 2716
- Pocket_Watch_ # 2717
- Combo:
- Principles_Of_Magic # 1572
- Librarian_Glove # 2716
- Pocket_Watch_ # 2717
Script: |
bonus bInt,5;
bonus bMaxHP,700;
@@ -1061,37 +1065,37 @@ Body:
}
- Combos:
- Combo:
- Memorize_Book
- One_Eyed_Glass
- Pocket_Watch
- Memorize_Book # 2109
- One_Eyed_Glass # 2239
- Pocket_Watch_ # 2717
- Combo:
- Memorize_Book
- One_Eyed_Glass
- Pocket_Watch_
- Memorize_Book # 2109
- One_Eyed_Glass # 2239
- Pocket_Watch__ # 2971
- Combo:
- Memorize_Book
- Pocket_Watch_
- One_Eyed_Glass_
- Memorize_Book # 2109
- One_Eyed_Glass_ # 18874
- Pocket_Watch_ # 2717
- Combo:
- Memorize_Book
- Pocket_Watch
- One_Eyed_Glass_
- Memorize_Book # 2109
- One_Eyed_Glass_ # 18874
- Pocket_Watch__ # 2971
- Combo:
- Memorize_Book_
- One_Eyed_Glass
- Pocket_Watch
- Memorize_Book_ # 2121
- One_Eyed_Glass # 2239
- Pocket_Watch_ # 2717
- Combo:
- Memorize_Book_
- One_Eyed_Glass
- Pocket_Watch_
- Memorize_Book_ # 2121
- One_Eyed_Glass # 2239
- Pocket_Watch__ # 2971
- Combo:
- Memorize_Book_
- Pocket_Watch_
- One_Eyed_Glass_
- Memorize_Book_ # 2121
- One_Eyed_Glass_ # 18874
- Pocket_Watch_ # 2717
- Combo:
- Memorize_Book_
- Pocket_Watch
- One_Eyed_Glass_
- Memorize_Book_ # 2121
- One_Eyed_Glass_ # 18874
- Pocket_Watch__ # 2971
Script: |
bonus bHPrecovRate,15;
bonus bSPrecovRate,15;
@@ -1314,11 +1318,11 @@ Body:
- ILL_Phen_Card
- ILL_Obeaune_Card
- Combo:
- Yellow_Pitaya_Card
- Boiling_Marc_Card
- Pitaya_Y_Card
- EP17_2_Marc_Card
- Combo:
- Purple_Pitaya_Card
- Boiling_Marc_Card
- Pitaya_V_Card
- EP17_2_Marc_Card
Script: |
bonus2 bSubEle,Ele_Neutral,5;
- Combos:
@@ -2518,13 +2522,10 @@ Body:
Script: |
.@r = getequiprefinerycnt(EQI_GARMENT);
if (.@r >= 7) {
.@bonus = max(getskilllv("TF_DOUBLE"),5);
skill "TF_DOUBLE",.@bonus;
bonus bDoubleRate,.@bonus*5;
skill "TF_DOUBLE",5;
}
else if (.@r >= 5) {
skill "TF_DOUBLE",1;
bonus bDoubleRate,25;
}
- Combos:
- Combo:
@@ -4823,13 +4824,15 @@ Body:
bonus2 bSPLossRate,6,6000;
- Combos:
- Combo:
- White_Knightage_Card
- Khaliz_Knightage_Card
- White_Knightage_Card # 4608
- Khaliz_Knightage_Card # 4609
Script: |
bonus2 bAddSize,Size_Medium,15;
bonus2 bAddSize,Size_Large,15;
bonus2 bSubSize,Size_Medium,5;
bonus2 bSubSize,Size_Large,5;
bonus2 bMagicSubSize,Size_Medium,5;
bonus2 bMagicSubSize,Size_Large,5;
- Combos:
- Combo:
- Sarah_Card
@@ -9915,7 +9918,6 @@ Body:
.@val += 15;
if ((.@weapon + .@eq) >= 22) {
skill "TF_DOUBLE",4;
bonus bDoubleRate,20;
}
}
bonus bAspdRate,.@val;
@@ -13125,35 +13127,35 @@ Body:
bonus bMaxSPrate,10;
- Combos:
- Combo:
- SuraStone_Robe_
- SuraStone_Top_
- Sura_Robe # 29426
- Sura_Top # 29423
Script: |
bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",10;
- Combos:
- Combo:
- SuraStone_Robe_
- SuraStone_Middle_
- Sura_Robe # 29426
- Sura_Middle # 29424
Script: |
bonus2 bFixedCastrate,"CH_SOULCOLLECT",-40;
- Combos:
- Combo:
- SuraStone_Robe_
- SuraStone_Bottom_
- Sura_Robe # 29426
- Sura_Bottom # 29425
Script: |
bonus4 bAutoSpellOnSkill,"SR_RAMPAGEBLASTER","CH_SOULCOLLECT",300,1;
- Combos:
- Combo:
- SuraStone_Robe2_
- SuraStone_Top2_
- Sura_Robe2 # 29427
- Sura_Top2 # 29613
- Combo:
- SuraStone_Robe2_
- SuraStone_Bottom2_
- Sura_Robe2 # 29427
- Sura_Bottom2 # 29611
Script: |
bonus2 bSkillAtk,"SR_TIGERCANNON",15;
- Combos:
- Combo:
- SuraStone_Robe2_
- SuraStone_Middle2_
- Sura_Robe2 # 29427
- Sura_Middle2 # 29612
Script: |
bonus bMaxHPrate,10;
- Combos:
@@ -13253,50 +13255,50 @@ Body:
bonus2 bSkillUseSPrate,"SC_TRIANGLESHOT",10;
- Combos:
- Combo:
- MechanicStone_Robe_
- MechanicStone_Top_
- Mechanic_Robe # 29484
- Mechanic_Top # 29481
- Combo:
- RoyalguardStone_Robe_
- PaladinStone_Top_
- Royalguard_Robe # 29520
- Paladin_Top # 29517
- Combo:
- GuillcrossStone_Robe_
- AssacrossStone_Top_
- Guillotinecross_Robe # 29524
- Assassincross_Top # 29521
- Combo:
- WanderMins_Top3
- WanderMinstrelStone_Robe_
- WanderMins_Top3 # 311005
- WanderMinstrel_Robe # 29488
Script: |
bonus2 bSPDrainRate,20,1;
- Combos:
- Combo:
- MechanicStone_Robe_
- MechanicStone_Middle_
- Mechanic_Robe # 29484
- Mechanic_Middle # 29482
Script: |
bonus2 bSkillCooldown,"NC_AXETORNADO",-1000;
- Combos:
- Combo:
- MechanicStone_Robe_
- MechanicStone_Bottom_
- Mechanic_Robe # 29484
- Mechanic_Bottom # 29483
Script: |
bonus2 bSkillAtk,"NC_AXETORNADO",15;
- Combos:
- Combo:
- WanderMinstrelStone_Robe_
- WanderMinstrelStone_Top_
- WanderMinstrel_Robe # 29488
- WanderMinstrel_Top # 29485
- Combo:
- WanderMins_Bottom3
- WanderMinstrelStone_Robe_
- WanderMins_Bottom3 # 311007
- WanderMinstrel_Robe # 29488
Script: |
bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15;
- Combos:
- Combo:
- WanderMinstrelStone_Robe_
- WanderMinstrelStone_Middle_
- WanderMinstrel_Robe # 29488
- WanderMinstrel_Middle # 29486
Script: |
bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-1000;
- Combos:
- Combo:
- WanderMinstrelStone_Robe_
- WanderMinstrelStone_Bottom_
- WanderMinstrel_Robe # 29488
- WanderMinstrel_Bottom # 29487
Script: |
bonus2 bSkillFixedCast,"WM_SEVERE_RAINSTORM",-500;
- Combos:
@@ -13325,31 +13327,31 @@ Body:
bonus bFixedCast,-500;
- Combos:
- Combo:
- RoyalguardStone_Robe_
- PaladinStone_Middle_
- Royalguard_Robe # 29520
- Paladin_Middle # 29518
Script: |
bonus2 bSkillCooldown,"LG_CANNONSPEAR",-500;
- Combos:
- Combo:
- RoyalguardStone_Robe_
- PaladinStone_Bottom_
- Royalguard_Robe # 29520
- Paladin_Bottom # 29519
- Combo:
- Royalguard_Middle3
- RoyalguardStone_Robe_
- Royalguard_Middle3 # 310888
- Royalguard_Robe # 29520
- Combo:
- Royalguard_Middle3
- RoyalGuard_Robe2
- Royalguard_Middle3 # 310888
- RoyalGuard_Robe2 # 310184
Script: |
bonus2 bSkillAtk,"LG_BANISHINGPOINT",15;
- Combos:
- Combo:
- GuillcrossStone_Robe_
- Guillotinecross_Robe # 29524
- AssacrossStone_Middle_
Script: |
bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",15;
- Combos:
- Combo:
- GuillcrossStone_Robe_
- Guillotinecross_Robe # 29524
- AssacrossStone_Bottom_
Script: |
bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15;
@@ -14147,7 +14149,7 @@ Body:
- Combos:
- Combo:
- ILL_Obeaune_Card
- Boiling_Piranha_Card
- EP17_2_Piranha_Card
Script: |
bonus2 bMagicAddEle,Ele_Water,15;
- Combos:
@@ -14747,7 +14749,7 @@ Body:
- Combo:
- Omega_Cleaner_Card
- KickAndKick_Card
- MD_Papila_H_Card
- Papila_Ruba_H_Card
Script: |
bonus2 bSkillAtk,"NC_AXEBOOMERANG",20;
bonus2 bSkillAtk,"NC_VULCANARM",20;
@@ -14757,7 +14759,7 @@ Body:
bonus2 bSkillAtk,"NC_AXEBOOMERANG",5*(.@r_weapon/2);
- Combos:
- Combo:
- Broken_Cleaner_Card
- Beta_Cleaner_Card
- Verporta_Card
- MD_Papila_Ruba_H_Card
Script: |
@@ -14769,9 +14771,9 @@ Body:
bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",5*(.@r_weapon/2);
- Combos:
- Combo:
- Bath_Manager_Card
- Beta_Baths_A_Card
- P_Archer_Skeleton_Card
- MD_Papila_H_Card
- Papila_Ruba_H_Card
Script: |
bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",20;
bonus2 bSkillAtk,"GN_CARTCANNON",20;
@@ -14783,7 +14785,7 @@ Body:
- Combo:
- Bookworm_Card
- Assistant_Card
- Blue_Pitaya_Card
- Pitaya_B_Card
Script: |
bonus2 bSkillAtk,"SO_DIAMONDDUST",20;
bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",20;
@@ -14793,9 +14795,9 @@ Body:
bonus2 bSkillAtk,"SO_DIAMONDDUST",5*(.@r_weapon/2);
- Combos:
- Combo:
- Roaming_Spellbook_Card
- Roaming_Splbook_Card
- Assistant_Card
- Red_Pitaya_Card
- Pitaya_R_Card
Script: |
bonus2 bSkillAtk,"WL_CRIMSONROCK",20;
bonus2 bSkillAtk,"WL_COMET",20;
@@ -14805,7 +14807,7 @@ Body:
bonus2 bSkillAtk,"WL_CRIMSONROCK",5*(.@r_weapon/2);
- Combos:
- Combo:
- Sewage_Venenum_Card
- Venenum3_Card
- Cowraiders3_Card
- Aries_Card
Script: |
@@ -14817,7 +14819,7 @@ Body:
bonus2 bSkillAtk,"SC_TRIANGLESHOT",5*(.@r_weapon/2);
- Combos:
- Combo:
- Sewage_Cramp_Card
- EP17_2_Cramp_Card
- Mt_Dolor_Card
- Aries_Card
Script: |
@@ -14828,7 +14830,7 @@ Body:
bonus2 bSkillAtk,"GC_ROLLINGCUTTER",5*(.@r_shoes/3);
- Combos:
- Combo:
- Sewage_Waterfall_Card
- Waterfall_Card
- Soheon_Card
- Dry_Rafflesia_Card
Script: |
@@ -14864,7 +14866,7 @@ Body:
bonus2 bSkillAtk,"SP_SWHOO",5*(.@r_weapon/2);
- Combos:
- Combo:
- Unleashed_Magic_Card
- Plasma_Y_Card
- MD_Papila_Cae_Card
- MD_Papila_Cae_H_Card
Script: |
@@ -14888,7 +14890,7 @@ Body:
bonus2 bSkillAtk,"AB_JUDEX",5*(.@r_weapon/2);
- Combos:
- Combo:
- Powerful_Magic_Card
- Plasma_R_Card
- Mutant_Plaga_Card
- MD_Papila_Ruba_Card
Script: |
@@ -14900,7 +14902,7 @@ Body:
bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",5*(.@r_weapon/2);
- Combos:
- Combo:
- Sharp_Magic_Card
- Plasma_R2_Card
- P_Archer_Skeleton_Card
- MD_Papila_Cae_Card
Script: |
@@ -14912,9 +14914,9 @@ Body:
bonus2 bSkillAtk,"RA_ARROWSTORM",5*(.@r_weapon/2);
- Combos:
- Combo:
- Boiling_Phen_Card
- EP17_2_Phen_Card
- Alnoldi_Ex_Card
- Beta_Basic_H_Card
- B_Scissore_Ng_H_Card
Script: |
bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",20;
bonus2 bSkillAtk,"SJ_FULLMOONKICK",20;
@@ -14924,7 +14926,7 @@ Body:
bonus2 bSkillAtk,"SJ_FULLMOONKICK",5*(.@r_weapon/2);
- Combos:
- Combo:
- Boiling_Swordfish_Card
- EP17_2_Sword_Fish_Card
- High_Bellare_Card
- MD_Papila_Card
Script: |
@@ -14936,15 +14938,15 @@ Body:
bonus2 bSkillAtk,"RL_R_TRIP",5*(.@r_weapon/2);
- Combos:
- Combo:
- Boiling_Piranha_Card
- EP17_2_Piranha_Card
- Piranha_Card
Script: |
bonus2 bMagicAddEle,Ele_Water,15;
bonus bMatk,10;
- Combos:
- Combo:
- Green_Pitaya_Card
- Beta_Basic_Card
- Pitaya_G_Card
- Beta_Scissore_Ng_Card
- Plaga3_Card
Script: |
bonus2 bSkillAtk,"SU_CN_METEOR",20;
@@ -18050,20 +18052,20 @@ Body:
bonus bDelayrate,-5;
- Combos:
- Combo:
- aegis_490090
- Egir_Armor_K
- Aegir_Helm
- Egir_Manteau_K
- Egir_Shoes_K
- Egir_Ring_K # 490090
- Egir_Armor_K # 15138
- Aegir_Helm # 19026
- Egir_Manteau_K # 20756
- Egir_Shoes_K # 22059
- Combo:
- aegis_310667
- aegis_310664
- Magic_Robe_D # 310667
- Magic_Top # 310664
- Combo:
- aegis_310667
- aegis_310665
- Magic_Robe_D # 310667
- Magic_Middle # 310665
- Combo:
- aegis_310667
- aegis_310666
- Magic_Robe_D # 310667
- Magic_Bottom # 310666
Script: |
bonus2 bMagicAtkEle,Ele_All,2;
- Combos:
@@ -19885,7 +19887,7 @@ Body:
autobonus "{ bonus2 bIgnoreDefRaceRate,RC_All,100; }",5,.@time,BF_NORMAL;
- Combos:
- Combo:
- aegis_400043
- Fallen_Angel_feather
- Fallen_Angel_Wing
Script: |
.@head = getequiprefinerycnt(EQI_HEAD_TOP);
@@ -19896,7 +19898,7 @@ Body:
bonus2 bSubRace,RC_Angel,-3;
- Combos:
- Combo:
- aegis_450131
- Fallen_Angel_Armor_TW
- Fallen_Angel_Wing
Script: |
if (getequiprefinerycnt(EQI_GARMENT) >= 9) {
@@ -19905,14 +19907,14 @@ Body:
}
- Combos:
- Combo:
- aegis_450131
- aegis_400043
- Fallen_Angel_Armor_TW
- Fallen_Angel_feather
Script: |
bonus bVit,2;
bonus bMaxHPrate,10;
- Combos:
- Combo:
- aegis_490033
- Fallen_Angel_tear
- Fallen_Angel_Wing
Script: |
if (getequiprefinerycnt(EQI_GARMENT) >= 9) {
@@ -19921,15 +19923,15 @@ Body:
}
- Combos:
- Combo:
- aegis_490033
- aegis_400043
- Fallen_Angel_tear
- Fallen_Angel_feather
Script: |
if (getequiprefinerycnt(EQI_HEAD_TOP) >= 9)
bonus bVariableCastrate,-5;
- Combos:
- Combo:
- aegis_490033
- aegis_450131
- Fallen_Angel_tear
- Fallen_Angel_Armor_TW
Script: |
if (getequiprefinerycnt(EQI_ARMOR) >= 9)
bonus bMaxHPrate,8;
@@ -20313,7 +20315,7 @@ Body:
}
- Combos:
- Combo:
- aegis_300310
- S_Helmut_Card
- Skia_Nerius_Card
Script: |
bonus2 bAddRace,RC_All,3;
@@ -20692,9 +20694,9 @@ Body:
bonus bShortAtkRate,2;
- Combos:
- Combo:
- aegis_310664
- aegis_310665
- aegis_310666
- Magic_Top # 310664
- Magic_Middle # 310665
- Magic_Bottom # 310666
Script: |
bonus2 bMagicAtkEle,Ele_All,6;
- Combos:
@@ -20745,11 +20747,11 @@ Body:
bonus2 bSkillAtk,"WL_CHAINLIGHTNING",15;
- Combos:
- Combo:
- Royalguard_Top3
- RoyalguardStone_Robe_
- Royalguard_Top3 # 310887
- Royalguard_Robe # 29520
- Combo:
- Royalguard_Bottom3
- RoyalguardStone_Robe_
- Royalguard_Bottom3 # 310889
- Royalguard_Robe # 29520
Script: |
bonus2 bSkillAtk,"LG_CANNONSPEAR",15;
- Combos:
@@ -20798,8 +20800,8 @@ Body:
bonus2 bSkillAtk,"WM_METALICSOUND",15;
- Combos:
- Combo:
- WanderMins_Middle3
- WanderMinstrelStone_Robe_
- WanderMins_Middle3 # 311006
- WanderMinstrel_Robe # 29488
Script: |
bonus2 bAddSize,Size_All,15;
- Combos:
@@ -26287,3 +26289,161 @@ Body:
bonus bMatkRate,5;
bonus bVariableCastrate,-5;
}
- Combos:
- Combo:
- aegis_311426 # 311426
- aegis_311425 # 311425
Script: |
bonus bSMatk,5;
bonus bSpl,3;
- Combos:
- Combo:
- aegis_311426 # 311426
- Magic_Top # 310664
- Combo:
- aegis_311426 # 311426
- Magic_Middle # 310665
- Combo:
- aegis_311426 # 311426
- Magic_Bottom # 310666
Script: |
bonus bSMatk,1;
bonus bSpl,1;
- Combos:
- Combo:
- Sura_Robe # 29426
- aegis_311427 # 311427
- Combo:
- Sura_Robe # 29426
- aegis_311428 # 311428
Script: |
bonus2 bSkillAtk,"SR_RIDEINLIGHTNING",20;
- Combos:
- Combo:
- Sura_Robe2 # 29427
- aegis_311427 # 311427
- Combo:
- Sura_Robe2 # 29427
- aegis_311429 # 311429
Script: |
bonus2 bSkillAtk,"SR_KNUCKLEARROW",15;
- Combos:
- Combo:
- aegis_311428 # 311428
- Sura_Robe2 # 29427
Script: |
bonus2 bSkillAtk,"SR_TIGERCANNON",15;
- Combos:
- Combo:
- aegis_311429 # 311429
- Sura_Robe # 29426
Script: |
bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",15;
- Combos:
- Combo:
- aegis_311430 # 311430
- Mechanic_Robe # 29484
Script: |
bonus2 bSkillAtk,"NC_AXETORNADO",15;
- Combos:
- Combo:
- aegis_311430 # 311430
- Mechanic_Robe2 # 310007
Script: |
bonus2 bSkillAtk,"NC_BOOSTKNUCKLE",15;
- Combos:
- Combo:
- aegis_311431 # 311431
- Mechanic_Robe # 29484
Script: |
bonus2 bSkillAtk,"NC_AXEBOOMERANG",15;
- Combos:
- Combo:
- aegis_311431 # 311431
- Mechanic_Robe2 # 310007
Script: |
bonus2 bSkillAtk,"NC_ARMSCANNON",15;
- Combos:
- Combo:
- aegis_311432 # 311432
- Mechanic_Robe # 29484
Script: |
bonus2 bSkillAtk,"NC_POWERSWING",15;
- Combos:
- Combo:
- aegis_311432 # 311432
- Mechanic_Robe2 # 310007
Script: |
bonus2 bSkillAtk,"NC_VULCANARM",15;
- Combos:
- Combo:
- aegis_311433 # 311433
- Guillotinecross_Robe # 29524
Script: |
bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",15;
- Combos:
- Combo:
- aegis_311433 # 311433
- GuillotineCross_Robe2 # 310188
Script: |
bonus2 bSkillAtk,"GC_COUNTERSLASH",15;
- Combos:
- Combo:
- aegis_311434 # 311434
- Guillotinecross_Robe # 29524
Script: |
bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15;
- Combos:
- Combo:
- aegis_311434 # 311434
- GuillotineCross_Robe2 # 310188
Script: |
bonus2 bSkillAtk,"GC_CROSSIMPACT",15;
- Combos:
- Combo:
- aegis_311435 # 311435
- Guillotinecross_Robe # 29524
Script: |
bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",15;
- Combos:
- Combo:
- aegis_311435 # 311435
- GuillotineCross_Robe2 # 310188
Script: |
bonus2 bAddRace,RC_All,15;
bonus2 bAddRace,RC_Player_Human,-15;
bonus2 bAddRace,RC_Player_Doram,-15;
- Combos:
- Combo:
- aegis_490221 # 490221
- Old_Rune_Circlet # 18971
Script: |
bonus bLongAtkRate,15;
- Combos:
- Combo:
- aegis_490221 # 490221
- Old_Protect_Of_Crown # 18983
Script: |
bonus2 bSkillCooldown,"LG_EARTHDRIVE",-2200;
- Combos:
- Combo:
- Luminous_Blue_Stone_TW # 32270
- Sharp2 # 4817
- Combo:
- Luminous_Blue_Stone_TW # 32270
- Sharp1 # 4818
Script: |
bonus bCritAtkRate,5;
- Combos:
- Combo:
- aegis_490229 # 490229
- Old_Circlet_Of_Bone # 18982
Script: |
bonus2 bIgnoreDefRaceRate,RC_All,15;
bonus2 bAddRace,RC_All,10;
- Combos:
- Combo:
- aegis_490229 # 490229
- Old_Shadow_Handicraft # 18975
Script: |
autobonus3 "{}",30,100,"SC_TRIANGLESHOT","{ sc_start SC_UNLIMIT,5000,3; sc_start SC_SPCOST_RATE,5000,-100; }";

View File

@@ -844,7 +844,6 @@ Body:
Refineable: true
Script: |
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
bonus2 bAddRace,RC_DemiHuman,5;
bonus2 bAddRace,RC_Player_Human,5;
- Id: 1131
@@ -8689,7 +8688,6 @@ Body:
bonus bAtkEle,Ele_Poison;
bonus bCritical,10;
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
bonus2 bAddEff,Eff_Poison,1000;
bonus2 bAddEff2,Eff_Poison,300;
- Id: 1448
@@ -17195,7 +17193,7 @@ Body:
if (.@r>9) {
bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100;
bonus2 bFixedCastrate,"MO_EXTREMITYFIST",-100;
bonus4 bAutoSpellOnSkill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,10000;
bonus4 bAutoSpellOnSkill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000;
bonus2 bHPLossRate,500,3000;
}
- Id: 1833
@@ -35842,7 +35840,6 @@ Body:
Script: |
bonus bMaxSP,100;
skill "TF_DOUBLE",3;
bonus bDoubleRate,15;
skill "TF_STEAL",1;
skill "TF_HIDING",1;
skill "TF_POISON",1;
@@ -38208,10 +38205,10 @@ Body:
Script: |
bonus bMatkRate,1;
- Id: 2971
AegisName: Pocket_Watch
AegisName: Pocket_Watch__
Name: Pocket Watch
Type: Armor
Buy: 10
Buy: 20
Weight: 200
Defense: 1
Slots: 1
@@ -38224,10 +38221,6 @@ Body:
Both_Accessory: true
ArmorLevel: 1
EquipLevelMin: 80
Script: |
bonus bHPrecovRate,15;
bonus bSPrecovRate,15;
bonus bMatkRate,7;
- Id: 2976
AegisName: Red_Lantern
Name: Red Lantern
@@ -43509,7 +43502,6 @@ Body:
bonus bMaxHP,50;
bonus bMaxSP,50;
skill "TF_DOUBLE",2;
bonus bDoubleRate,10;
bonus2 bSubRace,RC_DemiHuman,3;
bonus2 bSubRace,RC_Player_Human,3;
bonus2 bSubRace,RC_Brute,3;
@@ -45480,7 +45472,6 @@ Body:
View: 393
Script: |
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
- Id: 5389
AegisName: Angel_Spirit
Name: Angel Spirit
@@ -48103,9 +48094,7 @@ Body:
NoDrop: true
Script: |
bonus bDex,2;
.@bonus = max(getskilllv("TF_DOUBLE"), 5);
skill "TF_DOUBLE",.@bonus;
bonus bDoubleRate,.@bonus * 5;
skill "TF_DOUBLE",5;
- Id: 5532
AegisName: Pirate_Dagger_J
Name: Pirate Dagger
@@ -49893,7 +49882,6 @@ Body:
bonus2 bSubRace,RC_Brute,3;
bonus2 bSubRace,RC_Player_Doram,3;
skill "TF_DOUBLE",2;
bonus bDoubleRate,10;
bonus bMaxHP,50;
bonus bMaxSP,50;
- Id: 5626
@@ -55916,12 +55904,12 @@ Body:
Type: Petegg
Buy: 20
- Id: 9123
AegisName: Ep_17_2_C_Admin1_Egg
AegisName: Ep17_2_C_Admin1_Egg
Name: Child Admin Beta Egg
Type: Petegg
Buy: 20
- Id: 9124
AegisName: Ep_17_2_C_Admin2_Egg
AegisName: Ep17_2_C_Admin2_Egg
Name: Child Admin Alpha Egg
Type: Petegg
Buy: 20
@@ -62443,7 +62431,6 @@ Body:
NoAuction: true
Script: |
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
bonus2 bAddRace,RC_DemiHuman,40;
bonus2 bAddRace,RC_Player_Human,40;
- Id: 13408
@@ -68997,6 +68984,7 @@ Body:
Refineable: true
Script: |
.@r = getrefine();
bonus bUnbreakableArmor;
bonus2 bAddSize,Size_Medium,10;
bonus2 bAddSize,Size_Large,10;
bonus2 bMagicAddSize,Size_Medium,10;
@@ -82624,7 +82612,6 @@ Body:
bonus bMaxHP,50;
bonus bMaxSP,50;
skill "TF_DOUBLE",2;
bonus bDoubleRate,10;
bonus2 bSubRace,RC_DemiHuman,3;
bonus2 bSubRace,RC_Player_Human,3;
- Id: 19130
@@ -83583,7 +83570,6 @@ Body:
bonus bCritAtkRate,5*getskilllv("BS_OVERTHRUST");
if (.@r>=11) {
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
}
- Id: 19190
AegisName: Racing_Cap_GN
@@ -83797,7 +83783,6 @@ Body:
if (.@r>=11) {
bonus bUnbreakableWeapon;
skill "TF_DOUBLE",5;
bonus bDoubleRate,25;
}
- Id: 19196
AegisName: Racing_Cap_RG
@@ -85129,6 +85114,19 @@ Body:
bonus2 bAddClass,Class_All,5;
bonus2 bHPDrainRate,30,15;
}
- Id: 19314
AegisName: Royal_Mantle
Name: Royal Mantle
Type: Armor
Buy: 20
Weight: 100
Locations:
Head_Low: true
ArmorLevel: 1
EquipLevelMin: 90
View: 1697
Script: |
bonus2 bSubEle,Ele_All,5;
- Id: 19321
AegisName: Bell_Pigeon_J
Name: Mysterious Pigeon # !todo check english name
@@ -88750,14 +88748,14 @@ Body:
EquipLevelMin: 1
View: 463
- Id: 19669
AegisName: C_Reginleif_Hairband_
AegisName: C_Reginleif_Wings_J
Name: Costume Reginleif Hairband
Type: Armor
Locations:
Costume_Head_Mid: true
ArmorLevel: 1
EquipLevelMin: 1
View: 214
View: 468
- Id: 19670
AegisName: C_Southern_Cross
Name: Costume Southern Cross
@@ -99654,21 +99652,18 @@ Body:
bonus bFlee,30;
skill "TF_DOUBLE",10;
skill "MO_TRIPLEATTACK",10;
bonus bDoubleRate,50;
}
else if (.@r>=7) {
bonus bAspdRate,6;
bonus bFlee,20;
skill "TF_DOUBLE",5;
skill "MO_TRIPLEATTACK",5;
bonus bDoubleRate,25;
}
else {
bonus bAspdRate,3;
bonus bFlee,10;
skill "TF_DOUBLE",3;
skill "MO_TRIPLEATTACK",3;
bonus bDoubleRate,15;
}
- Id: 20863
AegisName: MenblattWing
@@ -100848,6 +100843,43 @@ Body:
Costume_Garment: true
ArmorLevel: 1
View: 82
- Id: 20986
AegisName: Scientist_Mantle
Name: Scientists Mantle
Type: Armor
Weight: 300
Defense: 25
Slots: 1
Locations:
Garment: true
ArmorLevel: 1
EquipLevelMin: 100
Refineable: true
Script: |
.@r = getrefine();
bonus bFlee2,5;
bonus2 bSubEle,Ele_Fire,10;
bonus2 bSubEle,Ele_Wind,10;
bonus2 bSubRace,RC_Player_Human,10;
bonus2 bSubRace,RC_Player_Doram,10;
bonus bMaxHP,1500*getskilllv("GN_CRAZYWEED");
bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",20*getskilllv("GN_FIRE_EXPANSION");
if (getskilllv("GN_MANDRAGORA")>=5)
bonus bHitRate,50;
if (getskilllv("GN_HELLS_PLANT")>=5)
bonus2 bVariableCastrate,"GN_SPORE_EXPLOSION",-100;
if (.@r>=7) {
bonus bFlee2,8;
bonus bLongAtkRate,10;
bonus2 bSubEle,Ele_Fire,20;
bonus2 bSubEle,Ele_Wind,20;
}
if (.@r>=9) {
bonus bFlee2,12;
bonus bLongAtkRate,10;
bonus2 bSubEle,Ele_Fire,20;
bonus2 bSubEle,Ele_Wind,20;
}
- Id: 20987
AegisName: C_Heart_Wing_Bag_J
Name: Costume Piglering Bag
@@ -101652,6 +101684,8 @@ Body:
WeaponLevel: 4
EquipLevelMin: 175
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bBaseAtk,20*(.@r/2);
@@ -117824,6 +117858,8 @@ Body:
WeaponLevel: 3
EquipLevelMin: 175
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bLongAtkRate,3*(.@r/2);
@@ -118546,7 +118582,6 @@ Body:
}
if (.@r>=10) {
skill "TF_DOUBLE",3;
bonus bDoubleRate,15;
}
- Id: 26154
AegisName: SoulWeight
@@ -122001,7 +122036,7 @@ Body:
Buy: 10
Weight: 100
Locations:
Both_Accessory: true
Left_Accessory: true
ArmorLevel: 1
EquipLevelMin: 145
Trade:
@@ -122020,7 +122055,7 @@ Body:
Buy: 10
Weight: 100
Locations:
Both_Accessory: true
Right_Accessory: true
ArmorLevel: 1
EquipLevelMin: 145
Trade:
@@ -137345,6 +137380,25 @@ Body:
bonus2 bSkillVariableCast,"LG_EARTHDRIVE",-500;
bonus2 bSkillUseSP,"LG_EARTHDRIVE",25;
}
- Id: 32270
AegisName: Luminous_Blue_Stone_TW
Name: Luminous Blue Stone
Type: Armor
Weight: 400
Slots: 1
Locations:
Both_Accessory: true
ArmorLevel: 1
EquipLevelMin: 90
Script: |
bonus bAspdRate,5;
bonus bCritical,5;
skill "MG_SIGHT",1;
bonus bCritAtkRate,5;
if (readparam(bLuk)>=100) {
bonus bCritical,5;
bonus bCritAtkRate,5;
}
- Id: 32295
AegisName: Crystal_Blade_Necklace
Name: Crystal Blade Necklace
@@ -138105,7 +138159,7 @@ Body:
bonus bDelayrate,-15;
}
- Id: 400043
AegisName: aegis_400043
AegisName: Fallen_Angel_feather
Name: Fallen Angel Hairband
Type: Armor
Weight: 100
@@ -138479,6 +138533,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bBaseAtk,20*(.@r/2);
@@ -138509,6 +138565,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bMatk,20*(.@r/2);
@@ -138543,6 +138601,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bSPrecovRate,6*(.@r/2);
@@ -138576,6 +138636,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bSPrecovRate,6*(.@r/2);
@@ -138630,6 +138692,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bBaseAtk,20*(.@r/2);
@@ -138660,6 +138724,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bBaseAtk,20*(.@r/2);
@@ -138754,6 +138820,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bBaseAtk,20*(.@r/2);
@@ -138784,6 +138852,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bMatk,20*(.@r/2);
@@ -138818,6 +138888,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bMatk,20*(.@r/2);
@@ -138852,6 +138924,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bBaseAtk,20*(.@r/2);
@@ -138882,6 +138956,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bMatk,20*(.@r/2);
@@ -138915,6 +138991,8 @@ Body:
ArmorLevel: 1
EquipLevelMin: 170
Refineable: true
Flags:
DropEffect: CLIENT
Script: |
.@r = getrefine();
bonus bBaseAtk,20*(.@r/2);
@@ -140137,6 +140215,38 @@ Body:
bonus bBaseAtk,10*(.@r/2);
bonus2 bSkillAtk,"LG_OVERBRAND",15*(.@r/3);
bonus bShortAtkRate,7*(.@r/4);
- Id: 400203
AegisName: Wolf_Officer_Hat
Name: Wolf Officer Hat
Type: Armor
Weight: 500
Defense: 10
Slots: 1
Locations:
Head_Top: true
ArmorLevel: 1
EquipLevelMin: 100
Refineable: true
View: 2177
Script: |
.@r = getrefine();
bonus bDelayrate,-10;
bonus2 bSkillAtk,"RA_ARROWSTORM",15;
if (getskilllv("RA_AIMEDBOLT")>=10) {
bonus2 bSubClass,Class_Boss,20;
bonus bDelayrate,-15;
}
if (getskilllv("RA_WUGRIDER")>=3)
bonus bDelayrate,-20;
if (getskilllv("RA_RANGERMAIN")>=10)
bonus2 bAddEle,Ele_All,25;
if (getskilllv("RA_CAMOUFLAGE")>=5)
bonus2 bSkillCooldown,"RA_ARROWSTORM",200;
bonus bDex,3*.@r;
if (.@r>=7)
bonus2 bSkillAtk,"RA_ARROWSTORM",20;
if (.@r>=9)
bonus2 bSkillCooldown,"RA_UNLIMIT",-150000;
- Id: 400204
AegisName: C_Cat_Ear_Red_Hat_TW
Name: Costume Cat Ear Red Witch Hat
@@ -141679,6 +141789,54 @@ Body:
Costume_Head_Mid: true
ArmorLevel: 1
View: 2171
- Id: 410129
AegisName: aegis_410129
Name: Phantom Ears
Type: Armor
Weight: 100
Defense: 2
Locations:
Head_Mid: true
ArmorLevel: 1
EquipLevelMin: 100
View: 2226
Script: |
bonus2 bMagicAddSize,Size_All,10;
bonus2 bSubRace,RC_Player_Human,5;
bonus2 bSubRace,RC_Player_Doram,5;
bonus2 bResEff,Eff_Sleep,10000;
if (getskilllv("WL_TELEKINESIS_INTENSE")>=5) {
bonus2 bFixedCastrate,"WL_JACKFROST",-100;
bonus2 bSkillCooldown,"WL_TELEKINESIS_INTENSE",-80000;
}
if (getskilllv("WL_RECOGNIZEDSPELL")>=5)
bonus bDelayrate,-15;
UnEquipScript: |
sc_end SC_RECOGNIZEDSPELL;
- Id: 410130
AegisName: aegis_410130
Name: Phantom Ears
Type: Armor
Weight: 100
Defense: 2
Locations:
Head_Mid: true
ArmorLevel: 1
EquipLevelMin: 100
View: 2226
Script: |
bonus2 bMagicAddSize,Size_All,10;
bonus2 bSubRace,RC_Player_Human,5;
bonus2 bSubRace,RC_Player_Doram,5;
bonus2 bResEff,Eff_Sleep,10000;
if (getskilllv("WL_TELEKINESIS_INTENSE")>=5) {
bonus2 bFixedCastrate,"WL_JACKFROST",-100;
bonus2 bSkillCooldown,"WL_TELEKINESIS_INTENSE",-80000;
}
if (getskilllv("WL_RECOGNIZEDSPELL")>=5)
bonus bDelayrate,-15;
UnEquipScript: |
sc_end SC_RECOGNIZEDSPELL;
- Id: 410131
AegisName: C_Tiger_WH
Name: Costume Tiger (White)
@@ -142307,6 +142465,52 @@ Body:
ArmorLevel: 1
EquipLevelMin: 1
View: 1110
- Id: 420109
AegisName: C_Charm_Of_Flame_Heart
Name: Costume Charm of Frame Heart # !todo check english name
Type: Armor
Locations:
Costume_Head_Low: true
ArmorLevel: 1
EquipLevelMin: 1
View: 1261
- Id: 420110
AegisName: ScarfOfHero_J
Name: Scarf Of Hero # !todo check english name
Type: Armor
Weight: 100
Locations:
Head_Low: true
ArmorLevel: 1
EquipLevelMin: 100
View: 1882
Script: |
bonus2 bAddSize,Size_All,BaseLevel/10;
bonus2 bMagicAddSize,Size_All,BaseLevel/10;
- Id: 420111
AegisName: C_Rocking_Short
Name: Costume Rocking Short # !todo check english name
Type: Armor
Locations:
Costume_Head_Low: true
ArmorLevel: 1
EquipLevelMin: 1
View: 2225
- Id: 420112
AegisName: Guardian_Claus
Name: Guardian Claus # !todo check english name
Type: Armor
Defense: 2
Weight: 100
Locations:
Head_Low: true
ArmorLevel: 1
EquipLevelMin: 100
View: 2227
Script: |
bonus bMdef,5;
bonus bMaxHPrate,15;
bonus2 bSubRace,RC_DemiHuman,3;
- Id: 420113
AegisName: C_WL_Hair_BL
Name: Costume Side Roll Pony (Black)
@@ -146349,7 +146553,7 @@ Body:
bonus bVariableCastrate,-15;
}
- Id: 450131
AegisName: aegis_450131
AegisName: Fallen_Angel_Armor_TW
Name: Fallen Angel Armor
Type: Armor
Weight: 1000
@@ -147317,6 +147521,33 @@ Body:
bonus bMaxHPrate,3;
if (BaseLevel>=130)
bonus bMatk,40;
- Id: 450189
AegisName: Oceanus_Blessing
Name: Oceanus Blessing
Type: Armor
Buy: 20
Weight: 600
Defense: 100
Slots: 1
Locations:
Armor: true
ArmorLevel: 1
EquipLevelMin: 100
Refineable: true
Script: |
.@r = getrefine();
bonus bUnbreakableArmor;
bonus2 bExpAddRace,RC_Fish,10;
if (.@r>=5) {
bonus2 bAddRace,RC_Fish,20;
bonus2 bMagicAddRace,RC_Fish,20;
bonus2 bExpAddRace,RC_Fish,10;
}
if (.@r>=7) {
bonus2 bAddRace,RC_Fish,20;
bonus2 bMagicAddRace,RC_Fish,20;
bonus2 bResEff,Eff_Confusion,10000;
}
- Id: 450191
AegisName: ST_Orleans_Gown
Name: Engraved Orlean's Gown
@@ -147649,6 +147880,101 @@ Body:
bonus bDef,150;
bonus bMdef,15;
}
- Id: 450209
AegisName: Imp_Powered_Suit
Name: Imp Powered Suit
Type: Armor
Weight: 1000
Buy: 20
Defense: 120
Slots: 1
Locations:
Armor: true
ArmorLevel: 1
EquipLevelMin: 100
Refineable: true
Script: |
.@r = getrefine();
bonus bMaxHPrate,10;
bonus bMaxSPrate,10;
if (getskilllv("NC_ARMSCANNON")>=3)
bonus bBaseAtk,BaseLevel;
if (getskilllv("NC_NEUTRALBARRIER")>=3)
bonus bLongAtkRate,70;
bonus bDelayrate,-10*getskilllv("NC_PILEBUNKER");
if (.@r>=5) {
bonus2 bSkillAtk,"NC_ARMSCANNON",50;
bonus2 bSkillAtk,"NC_COLDSLOWER",50;
bonus2 bSkillAtk,"NC_FLAMELAUNCHER",50;
}
if (.@r>=7) {
bonus2 bSkillAtk,"NC_ARMSCANNON",50;
bonus2 bSkillAtk,"NC_COLDSLOWER",50;
bonus2 bSkillAtk,"NC_FLAMELAUNCHER",50;
}
- Id: 450210
AegisName: Fluffy_Shark_Pajama
Name: Fluffy Shark Pajama
Type: Armor
Weight: 100
Buy: 20
Defense: 100
Slots: 1
Locations:
Armor: true
ArmorLevel: 1
EquipLevelMin: 100
Refineable: true
Script: |
.@r = getrefine();
bonus bUnbreakableArmor;
bonus bHealPower2,10;
if (getskilllv("SU_SPIRITOFSEA")>=1) {
bonus5 bAutoSpellWhenHit,"SU_TUNAPARTY",1,100,BF_WEAPON,0;
bonus5 bAutoSpellWhenHit,"SU_TUNAPARTY",1,100,BF_MAGIC,0;
}
bonus2 bVariableCastrate,"SU_FRESHSHRIMP",-10*getskilllv("SU_SHRIMPARTY");
bonus2 bVariableCastrate,"SU_BUNCHOFSHRIMP",-10*getskilllv("SU_SHRIMPARTY");
bonus2 bVariableCastrate,"SU_TUNABELLY",-10*getskilllv("SU_SHRIMPARTY");
bonus2 bVariableCastrate,"SU_TUNAPARTY",-10*getskilllv("SU_SHRIMPARTY");
bonus bMaxHPrate,10*getskilllv("SU_GROOMING");
if (getskilllv("SU_PURRING")>=5)
bonus2 bSubClass,Class_Boss,5;
if (.@r>=5) {
bonus bHealPower2,10;
bonus bFlee2,5;
}
if (.@r>=7) {
bonus bHealPower2,10;
bonus bFlee2,5;
}
- Id: 450214
AegisName: Dark_Triad
Name: Dark Triad
Type: Armor
Weight: 1000
Defense: 100
Slots: 1
Locations:
Armor: true
ArmorLevel: 1
EquipLevelMin: 1
Refineable: true
Script: |
.@r = getrefine();
bonus bMaxHPrate,10;
bonus bMaxSPrate,10;
if (getskilllv("SC_AUTOSHADOWSPELL")>=10)
autobonus3 "{}",30,100,"SC_TRIANGLESHOT","{ sc_start SC_UNLIMIT,5000,1; }";
bonus2 bAddRace,RC_All,7*getskilllv("SC_TRIANGLESHOT");
bonus bAgi,10*getskilllv("SC_MAELSTROM");
bonus bBaseAtk,50*getskilllv("SC_MAELSTROM");
if (.@r>=5)
bonus bPerfectHitRate,25;
if (.@r>=7)
bonus bPerfectHitRate,25;
UnEquipScript: |
sc_end SC_UNLIMIT;
- Id: 460004
AegisName: Illusion_Shield_A
Name: Illusion Shield I
@@ -150364,7 +150690,7 @@ Body:
}
- Id: 480023
AegisName: Arabian_Manteau
Name: Arabian Manteau # !todo check english name
Name: Arabian Manteau
Type: Armor
Defense: 10
Weight: 300
@@ -150974,6 +151300,42 @@ Body:
Costume_Garment: true
ArmorLevel: 1
View: 97
- Id: 480094
AegisName: ErymanthianSkin
Name: Erymanthian Skin
Type: Armor
Weight: 100
Defense: 12
Slots: 1
Locations:
Garment: true
ArmorLevel: 1
EquipLevelMin: 100
Refineable: true
Script: |
.@r = getrefine();
bonus bUnbreakableGarment;
bonus bDex,6;
bonus2 bSubRace,RC_Player_Human,5;
bonus2 bSubRace,RC_Player_Doram,5;
bonus bDelayrate,-3;
if (.@r>=7) {
bonus bDex,12;
bonus bAspdRate,5;
bonus bLongAtkDef,10;
}
if (.@r>=9) {
bonus bDex,12;
bonus bAspdRate,7;
bonus bLongAtkDef,10;
}
if (getskilllv("RA_UNLIMIT")>=5)
bonus2 bSkillCooldown,"RA_ARROWSTORM",-300;
if (getskilllv("RA_WUGRIDER")>=3)
bonus bMaxHP,10000;
bonus2 bAddSize,Size_All,2*getskilllv("RA_AIMEDBOLT");
if (getskilllv("RA_ELECTRICSHOCKER")>=5)
bonus2 bSubEle,Ele_Fire,100;
- Id: 480095
AegisName: C_Giant_White_Rabbit
Name: Costume Giant White Rabbit
@@ -152148,7 +152510,7 @@ Body:
if (getskilllv("WL_RECOGNIZEDSPELL") == 5)
bonus bDelayrate,-30;
- Id: 490033
AegisName: aegis_490033
AegisName: Fallen_Angel_tear
Name: Fallen Angel's Tear
Type: Armor
Weight: 100
@@ -152828,7 +153190,7 @@ Body:
Script: |
bonus bAllTraits,6-(JobLevel/5);
- Id: 490090
AegisName: aegis_490090
AegisName: Egir_Ring_K
Name: Aegir Ring
Type: Armor
Weight: 200
@@ -154126,6 +154488,39 @@ Body:
UnEquipScript: |
if ((eaclass()&EAJ_THIRDMASK)==EAJ_MINSTRELWANDERER)
sc_end SC_UNLIMIT;
- Id: 490221
AegisName: aegis_490221
Name: Record of Swordsman # !todo check english name
Type: Armor
Weight: 100
Slots: 1
Locations:
Both_Accessory: true
ArmorLevel: 1
EquipLevelMin: 100
Script: |
bonus bAtkRate,5;
bonus bBaseAtk,15*(getskilllv("SM_BASH")/2);
- Id: 490229
AegisName: aegis_490229
Name: Record of Thief # !todo check english name
Type: Armor
Weight: 100
Slots: 1
Jobs:
Thief: true
Assassin: true
Rogue: true
Classes:
All_Third: true
Fourth: true
Locations:
Right_Accessory: true
ArmorLevel: 1
EquipLevelMin: 100
Script: |
bonus bAtkRate,5;
bonus bBaseAtk,15*(getskilllv("TF_HIDING")/2);
- Id: 500000
AegisName: IDTest_weapon
Name: IDTest weapon
@@ -156046,6 +156441,27 @@ Body:
}
}
}
- Id: 510031
AegisName: Rotten_Garden_knife
Name: Rotten Garden Knife
Type: Weapon
SubType: Dagger
Buy: 20
Weight: 400
Attack: 360
MagicAttack: 160
Range: 1
Slots: 1
Locations:
Right_Hand: true
WeaponLevel: 4
EquipLevelMin: 100
Refineable: true
Script: |
.@r = getrefine();
bonus2 bSkillAtk,"RA_CLUSTERBOMB",4*getskilllv("RA_CLUSTERBOMB");
bonus bFlee2,.@r;
bonus bLongAtkDef,.@r;
- Id: 510032
AegisName: Adulter_F_Dagger
Name: Adulter Fides Dagger
@@ -156466,7 +156882,7 @@ Body:
}
}
- Id: 510049
AegisName: Rotten_Garden_knife
AegisName: C_Garden_Knife
Name: Corrode Garden Knife
Type: Weapon
SubType: Dagger

File diff suppressed because it is too large Load Diff

View File

@@ -3305,8 +3305,7 @@ Body:
Script: |
itemheal 0,100;
if (getequipid(EQI_HEAD_MID) == 15385)
warp "xmas",147,134;
/* todo check map x y */
warp "xmas",233,296;
- Id: 11564
AegisName: Sweet_Canape
Name: Sweet Canape
@@ -46355,6 +46354,8 @@ Body:
Type: Usable
Buy: 1
Weight: 1
Flags:
DropEffect: CLIENT
Script: |
callfunc("F_Cursed_Fragment");
- Id: 23027
@@ -49333,6 +49334,27 @@ Body:
Weight: 10
Script: |
laphine_upgrade();
- Id: 100147
AegisName: Bath_Foam_A
Name: Bath Foam A
Type: Usable
Weight: 10
Script: |
/* bonus_script "{ bonus2 bAddRace2,RC2_EP172BATH,5; }",900,1,0,EFST_BATH_FOAM_A; */
- Id: 100148
AegisName: Bath_Foam_B
Name: Bath Foam B
Type: Usable
Weight: 10
Script: |
/* bonus_script "{ bonus2 bAddRace2,RC2_EP172BATH,10; }",900,1,0,EFST_BATH_FOAM_B; */
- Id: 100149
AegisName: Bath_Foam_C
Name: Bath Foam C
Type: Usable
Weight: 10
Script: |
/* bonus_script "{ bonus2 bAddRace2,RC2_EP172BATH,15; }",900,1,0,EFST_BATH_FOAM_C; */
- Id: 100151
AegisName: Skill_Sha_M_S_Weapon
Name: Skill Shadow Weapon Combination Scroll
@@ -49359,6 +49381,30 @@ Body:
Script: |
specialeffect2 EF_CLAYMORE;
setmadogear true,MADO_SUIT;
- Id: 100160
AegisName: Auto_M_Box
Name: Automatic Module Box
Type: Usable
Script: |
getrandgroupitem(IG_AUTOMATIC_MODULE_MIX,1);
- Id: 100161
AegisName: Epic_M_Box
Name: Epic Module Box
Type: Usable
Script: |
getrandgroupitem(IG_EPIC_MODULE_MIX,1);
- Id: 100162
AegisName: Auto_M_I_Box_A
Name: Automatic Improvement Device Physical
Type: Usable
Script: |
getrandgroupitem(IG_AUTO_M_I_BOX_A,1);
- Id: 100163
AegisName: Auto_M_I_Box_B
Name: Automatic Improvement Device Magical
Type: Usable
Script: |
getrandgroupitem(IG_AUTO_M_I_BOX_B,1);
- Id: 100164
AegisName: Auto_Imp_Melee_1
Name: Normal Automatic Improvement Device (Physical)
@@ -50573,7 +50619,7 @@ Body:
Flags:
Container: true
Script: |
/* getgroupitem(IG_Enchant_Stone_Box22); */
getgroupitem(IG_Enchant_Stone_Box22);
- Id: 100516
AegisName: Eye_Cleaner
Name: Eye Cleaner
@@ -50885,6 +50931,15 @@ Body:
Weight: 10
Script: |
laphine_upgrade();
- Id: 100721
AegisName: Enchant_Stone_Box23
Name: Costume Enchant Stone Box 23
Type: Usable
Weight: 10
Flags:
Container: true
Script: |
getgroupitem(IG_Enchant_Stone_Box23);
- Id: 100722
AegisName: Booster_RandomOpt_P
Name: Booster Modification Stone(Physical)
@@ -51163,6 +51218,15 @@ Body:
Weight: 10
Script: |
/* reform(); */
- Id: 100920
AegisName: Enchant_Stone_Box24
Name: Costume Enchant Stone Box 24
Type: Usable
Weight: 10
Flags:
Container: true
Script: |
getgroupitem(IG_Enchant_Stone_Box24);
- Id: 100938
AegisName: Hero_Weapon_Hammer_5
Name: Modified Hero's Weapon Refinement Hammer V
@@ -51211,6 +51275,15 @@ Body:
Weight: 10
Script: |
bonus_script "{ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bCritAtkRate,5; bonus bLongAtkRate,5; bonus2 bMagicAddEle,Ele_All,5; bonus bNoCastCancel;}",1800;
- Id: 101103
AegisName: Enchant_Stone_Box25
Name: Costume Enchant Stone Box 25
Type: Usable
Weight: 10
Flags:
Container: true
Script: |
getgroupitem(IG_Enchant_Stone_Box25);
- Id: 101107
AegisName: Cannon_Box_Ice
Name: Cannon Box Ice
@@ -51657,7 +51730,7 @@ Body:
Script: |
laphine_upgrade();
- Id: 101271
AegisName: aegis_101271
AegisName: Enchant_Stone_Box26
Name: Costume Enchant Stone Box 26
Type: Usable
Weight: 10
@@ -51800,6 +51873,142 @@ Body:
Script: |
sc_start SC_FOOD_VIT_CASH,1800000,15;
bonus_script "{ bonus bHPRecovRate,rand(11,33); }",1800,1;
- Id: 101340
AegisName: Bs_Item_M_S_52
Name: Blacksmith's Blessing Combination Scroll
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101341
AegisName: Bs_Item_M_S_53
# Name: Hollgrehenn's Shadow Refine Hammer Combination Scroll
Name: Hollgrehenn Combination Scroll
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101342
AegisName: Bs_Item_M_S_54
Name: Powerful Soul Essence Combination Scroll
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101343
AegisName: Bs_Item_M_S_55
Name: Powerful Dimension Essence Combination Scroll
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101344
AegisName: Bs_Item_M_S_56
Name: Enchantment Ticket Combination Scroll
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101345
AegisName: Bs_Item_M_S_57
Name: Beast's Leather Shoes Combination Scroll
Type: DelayConsume
Weight: 10
EquipLevelMin: 200
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101346
AegisName: Bs_Item_M_S_58
Name: Pirate Captain's Coat Combination Scroll
Type: DelayConsume
Weight: 10
EquipLevelMin: 200
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101347
AegisName: Bs_Item_M_S_59
Name: Phreeoni Wing Suit Combination Scroll
Type: DelayConsume
Weight: 10
EquipLevelMin: 200
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101359
AegisName: MajorAutoSpell_Up
Name: Major Auto Spell Shadow Spellbook
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_upgrade();
- Id: 101360
AegisName: Hasty_Up
Name: Hasty Shadow Spellbook
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_upgrade();
- Id: 101361
AegisName: PhysicalShadow_Up
Name: Durable Shadow Spellbook
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_upgrade();
- Id: 101362
AegisName: PerfectSize_Up
Name: Perfect Size Shadow Spellbook
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_upgrade();
- Id: 101416
AegisName: aegis_101416
Name: Costume Enchant Stone Box 27
Type: Usable
Weight: 10
Flags:
Container: true
Script: |
getgroupitem(IG_Enchant_Stone_Box27);
- Id: 101455
AegisName: E_Auto_Up
Name: Automatic (bound) upgrade package # !todo check english name
Type: DelayConsume
EquipLevelMin: 160
Trade:
NoDrop: true
NoTrade: true
NoCart: true
NoStorage: true
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
laphine_upgrade();
- Id: 101463
AegisName: HD_Elunium_10Box_MSP
Name: (Limited) HD Elunium 10 Box
@@ -51830,6 +52039,78 @@ Body:
Script: |
getitem 6240,10;
getitembound 23919,11,Bound_Account;
- Id: 101482
AegisName: Freedom_Stick_Cube
Name: Freedom Stick Remodeling Cube
Type: DelayConsume
Weight: 10
Script: |
laphine_synthesis();
- Id: 101483
AegisName: Blessed_Knife_Cube
Name: Blessed Knife Remodeling Cube
Type: DelayConsume
Weight: 10
Script: |
laphine_synthesis();
- Id: 101512
AegisName: aegis_101512
Name: Ancient Hero Box 1 # !todo check english name
Type: Usable
Weight: 200
Flags:
Container: true
Script: |
getgroupitem(IG_Ancient_Hero_Box_1);
- Id: 101513
AegisName: aegis_101513
Name: "[Scroll] STR Biscuit Stick" # !todo check english name
Type: Usable
Weight: 10
Script: |
sc_start SC_FOOD_STR_CASH,1800000,15;
sc_start SC_ATKPOTION,600000,rand(11,111);
- Id: 101514
AegisName: aegis_101514
Name: "[Scroll] INT Biscuit Stick" # !todo check english name
Type: Usable
Weight: 10
Script: |
sc_start SC_FOOD_INT_CASH,1800000,15;
sc_start SC_MATKPOTION,600000,rand(11,111);
- Id: 101564
AegisName: AllMighty_Up
Name: Almighty Shadow Spellbook
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_upgrade();
- Id: 101639
AegisName: D_Gw_Extractor
Name: Dim Glacier Extractor # !todo check english name
Type: DelayConsume
Trade:
NoDrop: true
NoTrade: true
NoSell: true
NoCart: true
NoStorage: true
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
laphine_synthesis();
- Id: 101665
AegisName: EXPShadow_Mix2
Name: Experience Shadow Pickbox (Weapon) # !todo check english name
Type: DelayConsume
Weight: 10
Flags:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 200055
AegisName: C_Acid_B_50Box
Name: Acid Bomb 50 Box

File diff suppressed because it is too large Load Diff

View File

@@ -2223,7 +2223,7 @@ Body:
Requirements:
- Item: Shadowdecon
Amount: 10
- Item: Pocket_Watch__
- Item: Pocket_Watch
Amount: 50
- Item: Bs_Sha_M_S_17
RewardGroup: BS_SHA_M_S_17
@@ -2367,7 +2367,7 @@ Body:
Requirements:
- Item: Zelunium
Amount: 20
- Item: Pocket_Watch__
- Item: Pocket_Watch
Amount: 150
- Item: Bs_Item_M_S_39
RewardGroup: BS_ITEM_M_S_39
@@ -2735,7 +2735,7 @@ Body:
Requirements:
- Item: Shadowdecon
Amount: 25
- Item: Pocket_Watch__
- Item: Pocket_Watch
Amount: 150
- Item: Bs_Sha_M_S_25
RewardGroup: BS_SHA_M_S_25
@@ -2982,202 +2982,202 @@ Body:
MinimumRefine: 9
Requirements:
- Item: Freezing_Rod
# - Item: 3Lv_9Refine_Weapon_7Gu
# RewardGroup: 3LV_9REFINE_WEAPON_7GU
# MinimumRefine: 9
# MaximumRefine: 9
# Requirements:
# - Item: Scarlet_Knuckle
# - Item: Scarlet_Dagger
# - Item: Scarlet_Lance
# - Item: Scarlet_Rod
# - Item: Scarlet_Revolver
# - Item: Scarlet_Mace
# - Item: Scarlet_Bible
# - Item: Scarlet_Viollin
# - Item: Scarlet_Bow
# - Item: Scarlet_Saber
# - Item: Scarlet_Staff
# - Item: Scarlet_Spear
# - Item: Scarlet_Wire
# - Item: Scarlet_Katar
# - Item: Scarlet_Twohand_Sword
# - Item: Scarlet_Twohand_Axe
# - Item: Scarlet_Huuma
# - Item: 3Lv_10Refine_Weapon_8Gu
# RewardGroup: 3LV_10REFINE_WEAPON_8GU
# MinimumRefine: 10
# MaximumRefine: 10
# Requirements:
# - Item: Scarlet_Knuckle
# - Item: Scarlet_Dagger
# - Item: Scarlet_Lance
# - Item: Scarlet_Rod
# - Item: Scarlet_Revolver
# - Item: Scarlet_Mace
# - Item: Scarlet_Bible
# - Item: Scarlet_Viollin
# - Item: Scarlet_Bow
# - Item: Scarlet_Saber
# - Item: Scarlet_Staff
# - Item: Scarlet_Spear
# - Item: Scarlet_Wire
# - Item: Scarlet_Katar
# - Item: Scarlet_Twohand_Sword
# - Item: Scarlet_Twohand_Axe
# - Item: Scarlet_Huuma
# - Item: 3Lv_11Refine_Weapon_9Gu
# RewardGroup: 3LV_11REFINE_WEAPON_9GU
# MinimumRefine: 11
# MaximumRefine: 11
# Requirements:
# - Item: Scarlet_Knuckle
# - Item: Scarlet_Dagger
# - Item: Scarlet_Lance
# - Item: Scarlet_Rod
# - Item: Scarlet_Revolver
# - Item: Scarlet_Mace
# - Item: Scarlet_Bible
# - Item: Scarlet_Viollin
# - Item: Scarlet_Bow
# - Item: Scarlet_Saber
# - Item: Scarlet_Staff
# - Item: Scarlet_Spear
# - Item: Scarlet_Wire
# - Item: Scarlet_Katar
# - Item: Scarlet_Twohand_Sword
# - Item: Scarlet_Twohand_Axe
# - Item: Scarlet_Huuma
# - Item: 3Lv_12Refine_Weapon_10G
# RewardGroup: 3LV_12REFINE_WEAPON_10G
# MinimumRefine: 12
# MaximumRefine: 12
# Requirements:
# - Item: Scarlet_Knuckle
# - Item: Scarlet_Dagger
# - Item: Scarlet_Lance
# - Item: Scarlet_Rod
# - Item: Scarlet_Revolver
# - Item: Scarlet_Mace
# - Item: Scarlet_Bible
# - Item: Scarlet_Viollin
# - Item: Scarlet_Bow
# - Item: Scarlet_Saber
# - Item: Scarlet_Staff
# - Item: Scarlet_Spear
# - Item: Scarlet_Wire
# - Item: Scarlet_Katar
# - Item: Scarlet_Twohand_Sword
# - Item: Scarlet_Twohand_Axe
# - Item: Scarlet_Huuma
# - Item: 4Lv_9Refine_Weapon_8Gu
# RewardGroup: 4LV_9REFINE_WEAPON_8GU
# MinimumRefine: 9
# MaximumRefine: 9
# Requirements:
# - Item: Thanos_Sword
# - Item: Thanos_Knuckle
# - Item: Thanos_Dagger
# - Item: Thanos_Great_Sword
# - Item: Thanos_Axe
# - Item: Thanos_Hammer
# - Item: Thanos_Violin
# - Item: Thanos_Rod
# - Item: Thanos_Long_Spear
# - Item: Thanos_Whip
# - Item: Thanos_Staff
# - Item: Thanos_Spear
# - Item: Thanos_Katar
# - Item: Thanos_Bow
# - Item: Sinister_Dagger
# - Item: Sinister_Lance
# - Item: Sinister_Rod
# - Item: Sinister_Revolver
# - Item: Sinister_Mace
# - Item: Sinister_Viollin
# - Item: Sinister_Bow
# - Item: Sinister_Book
# - Item: Sinister_Saber
# - Item: Sinister_Staff
# - Item: Sinister_Spear
# - Item: Sinister_Wire
# - Item: Sinister_Katar
# - Item: Sinister_Twohand_Sword
# - Item: Sinister_Twohand_Axe
# - Item: Sinister_Huuma
# - Item: Sinister_Fist
# - Item: 4Lv_10Refine_Weapon_9Gu
# RewardGroup: 4LV_10REFINE_WEAPON_9GU
# MinimumRefine: 10
# MaximumRefine: 10
# Requirements:
# - Item: Thanos_Sword
# - Item: Thanos_Knuckle
# - Item: Thanos_Dagger
# - Item: Thanos_Great_Sword
# - Item: Thanos_Axe
# - Item: Thanos_Hammer
# - Item: Thanos_Violin
# - Item: Thanos_Rod
# - Item: Thanos_Long_Spear
# - Item: Thanos_Whip
# - Item: Thanos_Staff
# - Item: Thanos_Spear
# - Item: Thanos_Katar
# - Item: Thanos_Bow
# - Item: Sinister_Dagger
# - Item: Sinister_Lance
# - Item: Sinister_Rod
# - Item: Sinister_Revolver
# - Item: Sinister_Mace
# - Item: Sinister_Viollin
# - Item: Sinister_Bow
# - Item: Sinister_Book
# - Item: Sinister_Saber
# - Item: Sinister_Staff
# - Item: Sinister_Spear
# - Item: Sinister_Wire
# - Item: Sinister_Katar
# - Item: Sinister_Twohand_Sword
# - Item: Sinister_Twohand_Axe
# - Item: Sinister_Huuma
# - Item: Sinister_Fist
# - Item: 4Lv_11Refine_Weapon_10G
# RewardGroup: 4LV_11REFINE_WEAPON_10G
# MinimumRefine: 11
# MaximumRefine: 11
# Requirements:
# - Item: Thanos_Sword
# - Item: Thanos_Knuckle
# - Item: Thanos_Dagger
# - Item: Thanos_Great_Sword
# - Item: Thanos_Axe
# - Item: Thanos_Hammer
# - Item: Thanos_Violin
# - Item: Thanos_Rod
# - Item: Thanos_Long_Spear
# - Item: Thanos_Whip
# - Item: Thanos_Staff
# - Item: Thanos_Spear
# - Item: Thanos_Katar
# - Item: Thanos_Bow
# - Item: Sinister_Dagger
# - Item: Sinister_Lance
# - Item: Sinister_Rod
# - Item: Sinister_Revolver
# - Item: Sinister_Mace
# - Item: Sinister_Viollin
# - Item: Sinister_Bow
# - Item: Sinister_Book
# - Item: Sinister_Saber
# - Item: Sinister_Staff
# - Item: Sinister_Spear
# - Item: Sinister_Wire
# - Item: Sinister_Katar
# - Item: Sinister_Twohand_Sword
# - Item: Sinister_Twohand_Axe
# - Item: Sinister_Huuma
# - Item: Sinister_Fist
- Item: 3Lv_9Refine_Weapon_7Gu
RewardGroup: 3LV_9REFINE_WEAPON_7GU
MinimumRefine: 9
MaximumRefine: 9
Requirements:
- Item: Scarlet_Knuckle
- Item: Scarlet_Dagger
- Item: Scarlet_Lance
- Item: Scarlet_Rod
- Item: Scarlet_Revolver
- Item: Scarlet_Mace
- Item: Scarlet_Bible
- Item: Scarlet_Viollin
- Item: Scarlet_Bow
- Item: Scarlet_Saber
- Item: Scarlet_Staff
- Item: Scarlet_Spear
- Item: Scarlet_Wire
- Item: Scarlet_Katar
- Item: Scarlet_Twohand_Sword
- Item: Scarlet_Twohand_Axe
- Item: Scarlet_Huuma
- Item: 3Lv_10Refine_Weapon_8Gu
RewardGroup: 3LV_10REFINE_WEAPON_8GU
MinimumRefine: 10
MaximumRefine: 10
Requirements:
- Item: Scarlet_Knuckle
- Item: Scarlet_Dagger
- Item: Scarlet_Lance
- Item: Scarlet_Rod
- Item: Scarlet_Revolver
- Item: Scarlet_Mace
- Item: Scarlet_Bible
- Item: Scarlet_Viollin
- Item: Scarlet_Bow
- Item: Scarlet_Saber
- Item: Scarlet_Staff
- Item: Scarlet_Spear
- Item: Scarlet_Wire
- Item: Scarlet_Katar
- Item: Scarlet_Twohand_Sword
- Item: Scarlet_Twohand_Axe
- Item: Scarlet_Huuma
- Item: 3Lv_11Refine_Weapon_9Gu
RewardGroup: 3LV_11REFINE_WEAPON_9GU
MinimumRefine: 11
MaximumRefine: 11
Requirements:
- Item: Scarlet_Knuckle
- Item: Scarlet_Dagger
- Item: Scarlet_Lance
- Item: Scarlet_Rod
- Item: Scarlet_Revolver
- Item: Scarlet_Mace
- Item: Scarlet_Bible
- Item: Scarlet_Viollin
- Item: Scarlet_Bow
- Item: Scarlet_Saber
- Item: Scarlet_Staff
- Item: Scarlet_Spear
- Item: Scarlet_Wire
- Item: Scarlet_Katar
- Item: Scarlet_Twohand_Sword
- Item: Scarlet_Twohand_Axe
- Item: Scarlet_Huuma
- Item: 3Lv_12Refine_Weapon_10G
RewardGroup: 3LV_12REFINE_WEAPON_10G
MinimumRefine: 12
MaximumRefine: 12
Requirements:
- Item: Scarlet_Knuckle
- Item: Scarlet_Dagger
- Item: Scarlet_Lance
- Item: Scarlet_Rod
- Item: Scarlet_Revolver
- Item: Scarlet_Mace
- Item: Scarlet_Bible
- Item: Scarlet_Viollin
- Item: Scarlet_Bow
- Item: Scarlet_Saber
- Item: Scarlet_Staff
- Item: Scarlet_Spear
- Item: Scarlet_Wire
- Item: Scarlet_Katar
- Item: Scarlet_Twohand_Sword
- Item: Scarlet_Twohand_Axe
- Item: Scarlet_Huuma
- Item: 4Lv_9Refine_Weapon_8Gu
RewardGroup: 4LV_9REFINE_WEAPON_8GU
MinimumRefine: 9
MaximumRefine: 9
Requirements:
- Item: Thanos_Sword
- Item: Thanos_Knuckle
- Item: Thanos_Dagger
- Item: Thanos_Great_Sword
- Item: Thanos_Axe
- Item: Thanos_Hammer
- Item: Thanos_Violin
- Item: Thanos_Rod
- Item: Thanos_Long_Spear
- Item: Thanos_Whip
- Item: Thanos_Staff
- Item: Thanos_Spear
- Item: Thanos_Katar
- Item: Thanos_Bow
- Item: Sinister_Dagger
- Item: Sinister_Lance
- Item: Sinister_Rod
- Item: Sinister_Revolver
- Item: Sinister_Mace
- Item: Sinister_Viollin
- Item: Sinister_Bow
- Item: Sinister_Book
- Item: Sinister_Saber
- Item: Sinister_Staff
- Item: Sinister_Spear
- Item: Sinister_Wire
- Item: Sinister_Katar
- Item: Sinister_Twohand_Sword
- Item: Sinister_Twohand_Axe
- Item: Sinister_Huuma
- Item: Sinister_Fist
- Item: 4Lv_10Refine_Weapon_9Gu
RewardGroup: 4LV_10REFINE_WEAPON_9GU
MinimumRefine: 10
MaximumRefine: 10
Requirements:
- Item: Thanos_Sword
- Item: Thanos_Knuckle
- Item: Thanos_Dagger
- Item: Thanos_Great_Sword
- Item: Thanos_Axe
- Item: Thanos_Hammer
- Item: Thanos_Violin
- Item: Thanos_Rod
- Item: Thanos_Long_Spear
- Item: Thanos_Whip
- Item: Thanos_Staff
- Item: Thanos_Spear
- Item: Thanos_Katar
- Item: Thanos_Bow
- Item: Sinister_Dagger
- Item: Sinister_Lance
- Item: Sinister_Rod
- Item: Sinister_Revolver
- Item: Sinister_Mace
- Item: Sinister_Viollin
- Item: Sinister_Bow
- Item: Sinister_Book
- Item: Sinister_Saber
- Item: Sinister_Staff
- Item: Sinister_Spear
- Item: Sinister_Wire
- Item: Sinister_Katar
- Item: Sinister_Twohand_Sword
- Item: Sinister_Twohand_Axe
- Item: Sinister_Huuma
- Item: Sinister_Fist
- Item: 4Lv_11Refine_Weapon_10G
RewardGroup: 4LV_11REFINE_WEAPON_10G
MinimumRefine: 11
MaximumRefine: 11
Requirements:
- Item: Thanos_Sword
- Item: Thanos_Knuckle
- Item: Thanos_Dagger
- Item: Thanos_Great_Sword
- Item: Thanos_Axe
- Item: Thanos_Hammer
- Item: Thanos_Violin
- Item: Thanos_Rod
- Item: Thanos_Long_Spear
- Item: Thanos_Whip
- Item: Thanos_Staff
- Item: Thanos_Spear
- Item: Thanos_Katar
- Item: Thanos_Bow
- Item: Sinister_Dagger
- Item: Sinister_Lance
- Item: Sinister_Rod
- Item: Sinister_Revolver
- Item: Sinister_Mace
- Item: Sinister_Viollin
- Item: Sinister_Bow
- Item: Sinister_Book
- Item: Sinister_Saber
- Item: Sinister_Staff
- Item: Sinister_Spear
- Item: Sinister_Wire
- Item: Sinister_Katar
- Item: Sinister_Twohand_Sword
- Item: Sinister_Twohand_Axe
- Item: Sinister_Huuma
- Item: Sinister_Fist
- Item: Iron_Nail_K_Cube
RewardGroup: IRON_NAIL_K_CUBE
MinimumRefine: 9
@@ -4055,148 +4055,148 @@ Body:
# - Item: S_R_Bearers_Earring
# - Item: S_Mega_Blitz_Shield
# - Item: S_Mega_Blitz_Weapon
# - Item: Illusion_Module_Mix
# RewardGroup: ILLUSION_MODULE_MIX
# RequiredRequirementsCount: 5
# Requirements:
# - Item: EP17_1_EVT03
# - Item: EP17_1_EVT04
# - Item: EP17_1_EVT05
# - Item: EP17_1_EVT06
# - Item: EP17_1_EVT07
# - Item: EP17_1_EVT08
# - Item: EP17_1_EVT09
# - Item: EP17_1_EVT10
# - Item: EP17_1_EVT11
# - Item: EP17_1_EVT12
# - Item: EP17_1_EVT13
# - Item: EP17_1_EVT14
# - Item: EP17_1_EVT15
# - Item: EP17_1_EVT16
# - Item: EP17_1_EVT17
# - Item: EP17_1_EVT18
# - Item: EP17_1_EVT19
# - Item: EP17_1_EVT20
# - Item: EP17_1_EVT21
# - Item: EP17_1_EVT22
# - Item: EP17_1_EVT23
# - Item: EP17_1_EVT24
# - Item: EP17_1_EVT25
# - Item: EP17_1_EVT26
# - Item: EP17_1_EVT27
# - Item: EP17_1_EVT28
# - Item: EP17_1_EVT29
# - Item: EP17_1_EVT30
# - Item: EP17_1_EVT31
# - Item: EP17_1_EVT32
# - Item: EP17_1_EVT33
# - Item: EP17_1_EVT34
# - Item: EP17_1_EVT35
# - Item: EP17_1_EVT36
# - Item: EP17_1_EVT37
# - Item: EP17_1_EVT38
# - Item: Automatic_Module_Mix
# RewardGroup: AUTOMATIC_MODULE_MIX
# RequiredRequirementsCount: 5
# Requirements:
# - Item: EP17_2_NO1
# - Item: EP17_2_NO2
# - Item: EP17_2_NO3
# - Item: EP17_2_NO4
# - Item: EP17_2_NO5
# - Item: EP17_2_NO6
# - Item: EP17_2_NO7
# - Item: EP17_2_NO8
# - Item: EP17_2_RA1
# - Item: EP17_2_RA2
# - Item: EP17_2_RA3
# - Item: EP17_2_RA4
# - Item: EP17_2_RA5
# - Item: EP17_2_RA6
# - Item: EP17_2_RA7
# - Item: EP17_2_RA8
# - Item: EP17_2_RA9
# - Item: EP17_2_RA10
# - Item: EP17_2_RA11
# - Item: EP17_2_RA12
# - Item: EP17_2_RA13
# - Item: EP17_2_RA14
# - Item: EP17_2_RA15
# - Item: EP17_2_RA16
# - Item: EP17_2_RA17
# - Item: EP17_2_RA18
# - Item: EP17_2_RA19
# - Item: EP17_2_RA20
# - Item: EP17_2_UQ1
# - Item: EP17_2_UQ2
# - Item: EP17_2_UQ3
# - Item: EP17_2_UQ4
# - Item: EP17_2_UQ5
# - Item: EP17_2_UQ6
# - Item: EP17_2_UQ7
# - Item: EP17_2_UQ8
# - Item: EP17_2_UQ9
# - Item: EP17_2_UQ10
# - Item: EP17_2_UQ11
# - Item: EP17_2_LE1
# - Item: EP17_2_LE2
# - Item: EP17_2_LE3
# - Item: EP17_2_LE4
# - Item: EP17_2_LE5
# - Item: EP17_2_LE6
# - Item: EP17_2_EP1
# - Item: EP17_2_EP2
# - Item: EP17_2_EP3
# - Item: EP17_2_EP4
# - Item: EP17_2_EP5
# - Item: EP17_2_EP6
# - Item: EP17_2_EP7
# - Item: EP17_2_EP8
# - Item: EP17_2_EP9
# - Item: EP17_2_EP10
# - Item: EP17_2_EP11
# - Item: EP17_2_EP12
# - Item: EP17_2_EP13
# - Item: EP17_2_EP14
# - Item: EP17_2_EP15
# - Item: EP17_2_EP16
# - Item: EP17_2_EP17
# - Item: EP17_2_EP18
# - Item: EP17_2_EP19
# - Item: EP17_2_EP20
# - Item: EP17_2_EP21
# - Item: EP17_2_EP22
# - Item: EP17_2_EP23
# - Item: EP17_2_EP24
# - Item: EP17_2_EP25
# - Item: EP17_2_EP26
# - Item: EP17_2_EP27
# - Item: EP17_2_EP28
# - Item: EP17_2_EP29
# - Item: EP17_2_EP30
# - Item: EP17_2_EP31
# - Item: EP17_2_EP32
# - Item: EP17_2_EP33
# - Item: EP17_2_EP34
# - Item: EP17_2_EP35
# - Item: EP17_2_EP36
# - Item: EP17_2_EP37
# - Item: EP17_2_EP38
# - Item: EP17_2_EP39
# - Item: EP17_2_EP40
# - Item: EP17_2_EP41
# - Item: EP17_2_EP42
# - Item: EP17_2_EP43
# - Item: EP17_2_EP44
# - Item: EP17_2_EP45
# - Item: EP17_2_EP46
# - Item: EP17_2_EP47
# - Item: EP17_2_EP48
# - Item: EP17_2_EP49
# - Item: EP17_2_EP50
# - Item: EP17_2_EP51
# - Item: EP17_2_RA21
# - Item: EP17_2_UQ12
- Item: Illusion_Module_Mix
RewardGroup: ILLUSION_MODULE_MIX
RequiredRequirementsCount: 5
Requirements:
- Item: EP17_1_EVT03
- Item: EP17_1_EVT04
- Item: EP17_1_EVT05
- Item: EP17_1_EVT06
- Item: EP17_1_EVT07
- Item: EP17_1_EVT08
- Item: EP17_1_EVT09
- Item: EP17_1_EVT10
- Item: EP17_1_EVT11
- Item: EP17_1_EVT12
- Item: EP17_1_EVT13
- Item: EP17_1_EVT14
- Item: EP17_1_EVT15
- Item: EP17_1_EVT16
- Item: EP17_1_EVT17
- Item: EP17_1_EVT18
- Item: EP17_1_EVT19
- Item: EP17_1_EVT20
- Item: EP17_1_EVT21
- Item: EP17_1_EVT22
- Item: EP17_1_EVT23
- Item: EP17_1_EVT24
- Item: EP17_1_EVT25
- Item: EP17_1_EVT26
- Item: EP17_1_EVT27
- Item: EP17_1_EVT28
- Item: EP17_1_EVT29
- Item: EP17_1_EVT30
- Item: EP17_1_EVT31
- Item: EP17_1_EVT32
- Item: EP17_1_EVT33
- Item: EP17_1_EVT34
- Item: EP17_1_EVT35
- Item: EP17_1_EVT36
- Item: EP17_1_EVT37
- Item: EP17_1_EVT38
- Item: Automatic_Module_Mix
RewardGroup: AUTOMATIC_MODULE_MIX
RequiredRequirementsCount: 5
Requirements:
- Item: EP17_2_NO1
- Item: EP17_2_NO2
- Item: EP17_2_NO3
- Item: EP17_2_NO4
- Item: EP17_2_NO5
- Item: EP17_2_NO6
- Item: EP17_2_NO7
- Item: EP17_2_NO8
- Item: EP17_2_RA1
- Item: EP17_2_RA2
- Item: EP17_2_RA3
- Item: EP17_2_RA4
- Item: EP17_2_RA5
- Item: EP17_2_RA6
- Item: EP17_2_RA7
- Item: EP17_2_RA8
- Item: EP17_2_RA9
- Item: EP17_2_RA10
- Item: EP17_2_RA11
- Item: EP17_2_RA12
- Item: EP17_2_RA13
- Item: EP17_2_RA14
- Item: EP17_2_RA15
- Item: EP17_2_RA16
- Item: EP17_2_RA17
- Item: EP17_2_RA18
- Item: EP17_2_RA19
- Item: EP17_2_RA20
- Item: EP17_2_UQ1
- Item: EP17_2_UQ2
- Item: EP17_2_UQ3
- Item: EP17_2_UQ4
- Item: EP17_2_UQ5
- Item: EP17_2_UQ6
- Item: EP17_2_UQ7
- Item: EP17_2_UQ8
- Item: EP17_2_UQ9
- Item: EP17_2_UQ10
- Item: EP17_2_UQ11
- Item: EP17_2_LE1
- Item: EP17_2_LE2
- Item: EP17_2_LE3
- Item: EP17_2_LE4
- Item: EP17_2_LE5
- Item: EP17_2_LE6
- Item: EP17_2_EP1
- Item: EP17_2_EP2
- Item: EP17_2_EP3
- Item: EP17_2_EP4
- Item: EP17_2_EP5
- Item: EP17_2_EP6
- Item: EP17_2_EP7
- Item: EP17_2_EP8
- Item: EP17_2_EP9
- Item: EP17_2_EP10
- Item: EP17_2_EP11
- Item: EP17_2_EP12
- Item: EP17_2_EP13
- Item: EP17_2_EP14
- Item: EP17_2_EP15
- Item: EP17_2_EP16
- Item: EP17_2_EP17
- Item: EP17_2_EP18
- Item: EP17_2_EP19
- Item: EP17_2_EP20
- Item: EP17_2_EP21
- Item: EP17_2_EP22
- Item: EP17_2_EP23
- Item: EP17_2_EP24
- Item: EP17_2_EP25
- Item: EP17_2_EP26
- Item: EP17_2_EP27
- Item: EP17_2_EP28
- Item: EP17_2_EP29
- Item: EP17_2_EP30
- Item: EP17_2_EP31
- Item: EP17_2_EP32
- Item: EP17_2_EP33
- Item: EP17_2_EP34
- Item: EP17_2_EP35
- Item: EP17_2_EP36
- Item: EP17_2_EP37
- Item: EP17_2_EP38
- Item: EP17_2_EP39
- Item: EP17_2_EP40
- Item: EP17_2_EP41
- Item: EP17_2_EP42
- Item: EP17_2_EP43
- Item: EP17_2_EP44
- Item: EP17_2_EP45
- Item: EP17_2_EP46
- Item: EP17_2_EP47
- Item: EP17_2_EP48
- Item: EP17_2_EP49
- Item: EP17_2_EP50
- Item: EP17_2_EP51
- Item: EP17_2_RA21
- Item: EP17_2_UQ12
- Item: True_GemShadow_Mix
RewardGroup: TRUE_GEMSHADOW_MIX
RequiredRequirementsCount: 6
@@ -4490,3 +4490,63 @@ Body:
- Item: S_Blitz_Shoes
- Item: S_Blitz_Pendent
- Item: S_Blitz_Earring
- Item: Bs_Item_M_S_52
RewardGroup: BS_ITEM_M_S_52
Requirements:
- Item: Zelunium
Amount: 150
- Item: Bs_Item_M_S_53
RewardGroup: BS_ITEM_M_S_53
Requirements:
- Item: Shadowdecon
Amount: 150
- Item: Bs_Item_M_S_54
RewardGroup: BS_ITEM_M_S_54
RequiredRequirementsCount: 2
Requirements:
- Item: Zelunium
Amount: 200
- Item: Shadowdecon
Amount: 200
- Item: Bs_Item_M_S_55
RewardGroup: BS_ITEM_M_S_55
RequiredRequirementsCount: 2
Requirements:
- Item: Zelunium
Amount: 200
- Item: Shadowdecon
Amount: 200
- Item: Bs_Item_M_S_56
RewardGroup: BS_ITEM_M_S_56
RequiredRequirementsCount: 4
Requirements:
- Item: Mightysoul_Essence
- Item: M_Dimension_Essence
- Item: Zelunium
Amount: 150
- Item: Shadowdecon
Amount: 150
# - Item: Bs_Item_M_S_57
# RewardGroup: BS_ITEM_M_S_57
# RequiredRequirementsCount: 2
# Requirements:
# - Item: Tiger's_Skin
# Amount: 50
# - Item: Zelunium
# Amount: 250
# - Item: Bs_Item_M_S_58
# RewardGroup: BS_ITEM_M_S_58
# RequiredRequirementsCount: 2
# Requirements:
# - Item: Will_Of_Darkness_
# Amount: 30
# - Item: Zelunium
# Amount: 250
# - Item: Bs_Item_M_S_59
# RewardGroup: BS_ITEM_M_S_59
# RequiredRequirementsCount: 2
# Requirements:
# - Item: Loki's_Whispers
# Amount: 30
# - Item: Zelunium
# Amount: 250

File diff suppressed because it is too large Load Diff

View File

@@ -29966,7 +29966,7 @@ Body:
- Item: Old_Card_Album
Rate: 2000
Drops:
- Item: Pocket_Watch__
- Item: Pocket_Watch
Rate: 1500
- Item: Old_Violet_Box
Rate: 1500

View File

@@ -626,11 +626,11 @@ Body:
if (.@i >= PET_INTIMATE_LOYAL) {
bonus bDef,2;
bonus bMdef,2;
bonus2 bResEff,Eff_Stun,200;
bonus2 bResEff,Eff_Stun,-200;
} else if (.@i >= PET_INTIMATE_CORDIAL) {
bonus bDef,1;
bonus bMdef,1;
bonus2 bResEff,Eff_Stun,100;
bonus2 bResEff,Eff_Stun,-100;
}
- Mob: BON_GUN
TameItem: Heart_Of_Her
@@ -1574,7 +1574,7 @@ Body:
# Evolution:
# - Target: ORK_HERO2
# ItemRequirements:
# - Item: Powerful_Soul_Essence
# - Item: Mightysoul_Essence
# Amount: 30
# - Item: Orc_Warrior_Card
# Amount: 10
@@ -1682,7 +1682,7 @@ Body:
Evolution:
- Target: MOONLIGHT
ItemRequirements:
- Item: Powerful_Soul_Essence
- Item: Mightysoul_Essence
Amount: 30
- Item: Nine_Tail_Card
Amount: 10

View File

@@ -22,40 +22,32 @@
# Quest Settings
#
###########################################################################
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Use a number following by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
# Specify with "+" for how long until the quest expires.
# Specify without "+" for the exact time the quest expires using "d" (optional), [0-23]"h" (required), [0-59]"mn" (optional), [0-59]"s" (optional) format.
# Please note the number before "d" only shift the exact timer to the given day(s).
# Targets: Quest objective target. (Default: null)
# The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
# If Mob is supplied, Count is required and the other fields are ignored.
# If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
# If Id is supplied, Count is required for each new entry.
# - Mob Monster to kill (aegis monster name).
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target (default All). Valid races are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
# Size Monster size target (default All). Valid sizes are Small, Medium, Large, All.
# Element Monster element target (default All). Valid elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default any location)
# On normal maps only kills of permanently spawned monsters increase the counter.
# On instance maps all monster kills increase the counter.
# MapName Displayed map name in quest UI. (Default: empty string)
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Targets: Quest objective target. (Default: null)
# - Mob Name of monster to kill.
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target. (Default: All)
# Size Monster size target. (Default: All)
# Element Monster element target. (Default: All)
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default: All)
# MapName Displayed map name in quest UI. (Default: empty string)
# MapMobTargets List of monster names. Only names in the list will increase the kill counter. Only active when Id is used. (Default: all monsters)
# <name>: <bool> Monster name and whether the monster is added or removed from the list.
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
###########################################################################
Header:
Type: QUEST_DB
Version: 2
Version: 3
Body:
- Id: 1000
@@ -2841,6 +2833,17 @@ Body:
- Id: 5929
Title: "[Standby] Subjugation-Turtle Island Dungeon"
TimeLimit: 4h
- Id: 5930
Title: Subjugation-Yanggeochon
Targets:
- Id: 1
Count: 80
Location: tur_dun03
MapMobTargets:
ASSULTER: true
PERMETER: true
FREEZER: true
HEATER: true
- Id: 5931
Title: "[Standby] Subjugation-Yanggeochon"
TimeLimit: 4h

57
doc/quest_db.txt Normal file
View File

@@ -0,0 +1,57 @@
//===== rAthena Documentation ================================
//= Quest Database Structure
//===== By: ==================================================
//= rAthena Dev Team
//===== Last Updated: ========================================
//= 20220629
//===== Description: =========================================
//= Explanation of the quest_db.yml file and structure.
//============================================================
---------------------------------------
Id: Quest ID.
---------------------------------------
Title: Quest title.
---------------------------------------
TimeLimit: Amount of time before the quest expires.
Use a number followed by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
Specifying with "+" will mark how long until the quest expires.
Specifying without "+" will mark the exact time the quest expires. Format: "d" (optional), [0-23]"h" (required), [0-59]"mn" (optional), [0-59]"s" (optional).
Please note the number before "d" only shifts the exact timer to the given day(s).
---------------------------------------
Targets: Quest objective target.
The target can be a combination of Mob/Count or of Id/Count and other fields.
If Mob is supplied, Count is required and the other fields are ignored.
If Id is supplied, Count is required for each new entry.
- Mob Name of monster to kill (aegis monster name).
Count Amount of monsters to kill. Set to 0 to skip the target on import.
Id Unique target index for the quest Id. Requires a positive number.
Race Monster race target. (Default: All). Valid races are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
Size Monster size target. (Default: All). Valid sizes are Small, Medium, Large, All.
Element Monster element target. (Default: All). Valid elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import.
MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import.
Location Map name where kills are counted.
MapName Displayed map name in quest UI.
MapMobTargets List of monster names. Only names in the list will increase the kill counter. Only active when Id is used.
<name>: <bool> Monster name and whether the monster is added or removed from the list.
---------------------------------------
Drops: Quest item drop targets.
- Mob Monster to kill. 0 will apply to all monsters.
Item Item to drop (aegis item name).
Count Amount of items that will drop. Non-stackable items default to 1.
Rate Item drop rate. (10000 = 100%)

View File

@@ -16,6 +16,7 @@
# HeadTop Item name of headgear (if Sprite is a player). (Default: 0)
# HeadMid Item name of headgear (if Sprite is a player). (Default: 0)
# HeadLow Item name of headgear (if Sprite is a player). (Default: 0)
# Robe Item name of robe (if Sprite is a player). (Default: 0)
# PetEquip Item name of pet equipment (if Mob is a valid pet). (Default: 0)
# Options: Set an option for an object. (Optional)
# <Option>: bool

View File

@@ -5,33 +5,25 @@
# Quest Settings
#
###########################################################################
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Use a number following by "d" for day(s), "h" for hour(s), "mn" for minute(s), and "s" for second(s).
# Specify with "+" for how long until the quest expires.
# Specify without "+" for the exact time the quest expires using "d" (optional), [0-23]"h" (required), [0-59]"mn" (optional), [0-59]"s" (optional) format.
# Please note the number before "d" only shift the exact timer to the given day(s).
# Targets: Quest objective target. (Default: null)
# The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
# If Mob is supplied, Count is required and the other fields are ignored.
# If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
# If Id is supplied, Count is required for each new entry.
# - Mob Monster to kill (aegis monster name).
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target (default All). Valid races are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
# Size Monster size target (default All). Valid sizes are Small, Medium, Large, All.
# Element Monster element target (default All). Valid elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default any location)
# On normal maps only kills of permanently spawned monsters increase the counter.
# On instance maps all monster kills increase the counter.
# MapName Displayed map name in quest UI. (Default: empty string)
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
# - Id Quest ID.
# Title Quest title.
# TimeLimit Amount of time before the quest expires. (Default: 0)
# Targets: Quest objective target. (Default: null)
# - Mob Name of monster to kill.
# Count Amount of monsters to kill. Set to 0 to skip the target on import.
# Id Unique target index for the quest Id. Requires a positive number.
# Race Monster race target. (Default: All)
# Size Monster size target. (Default: All)
# Element Monster element target. (Default: All)
# MinLevel Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
# MaxLevel Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
# Location Map name where kills are counted. (Default: All)
# MapName Displayed map name in quest UI. (Default: empty string)
# MapMobTargets List of monster names. Only names in the list will increase the kill counter. Only active when Id is used. (Default: all monsters)
# <name>: <bool> Monster name and whether the monster is added or removed from the list.
# Drops: Quest item drop targets. (Default: null)
# - Mob Monster to kill. 0 will apply to all monsters. (Default: 0)
# Item Item to drop.
# Count Amount of items that will drop. Non-stackable items default to 1. (Default: 1)
# Rate Item drop rate. (10000 = 100%)
###########################################################################

View File

@@ -363,8 +363,9 @@ struct startitem {
uint32 pos;
};
enum e_skill_flag
enum e_skill_flag : int8
{
SKILL_FLAG_NONE = -1,
SKILL_FLAG_PERMANENT,
SKILL_FLAG_TEMPORARY,
SKILL_FLAG_PLAGIARIZED,

View File

@@ -3805,6 +3805,7 @@ static void battle_calc_multi_attack(struct Damage* wd, struct block_list *src,s
if( sd && !skill_id ) { // if no skill_id passed, check for double attack [helvetica]
short i;
if( ( ( skill_lv = pc_checkskill(sd,TF_DOUBLE) ) > 0 && sd->weapontype1 == W_DAGGER )
|| ( pc_checkskill_flag(*sd, TF_DOUBLE) > SKILL_FLAG_PERMANENT && sd->weapontype1 != W_FIST )
|| ( sd->bonus.double_rate > 0 && sd->weapontype1 != W_FIST ) // Will fail bare-handed
|| ( sc && sc->data[SC_KAGEMUSYA] && sd->weapontype1 != W_FIST )) // Will fail bare-handed
{ //Success chance is not added, the higher one is used [Skotlex]
@@ -8267,7 +8268,9 @@ struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct bl
if (d.dmg_lv == ATK_DEF /*&& attack_type&(BF_MAGIC|BF_MISC)*/) // Isn't it that additional effects don't apply if miss?
d.dmg_lv = ATK_MISS;
d.dmotion = 0;
if(bl->type == BL_PC)
d.div_ = 1;
status_change *tsc = status_get_sc(target);
// Weapon Blocking has the ability to trigger on ATK_MISS as well.

View File

@@ -3245,6 +3245,13 @@ void s_random_opt_group::apply( struct item& item ){
item_option.param = option->param;
};
// (Re)initialize all the options
for( size_t i = 0; i < MAX_ITEM_RDM_OPT; i++ ){
item.option[i].id = 0;
item.option[i].value = 0;
item.option[i].param = 0;
};
// Apply Must options
for( size_t i = 0; i < this->slots.size(); i++ ){
// Try to apply an entry

View File

@@ -971,6 +971,29 @@ enum e_random_item_group {
IG_SHADOW_CUBE_SHIELD,
IG_SHADOW_CUBE_SHOES,
IG_SHADOW_CUBE_WEAPON,
IG_AUTOMATIC_MODULE_MIX,
IG_EPIC_MODULE_MIX,
IG_AUTO_M_I_BOX_A,
IG_AUTO_M_I_BOX_B,
IG_ILLUSION_MODULE_MIX,
IG_ENCHANT_STONE_BOX22,
IG_ENCHANT_STONE_BOX23,
IG_ENCHANT_STONE_BOX24,
IG_ENCHANT_STONE_BOX25,
IG_ENCHANT_STONE_BOX27,
IG_ANCIENT_HERO_BOX_1,
IG_3LV_9REFINE_WEAPON_7GU,
IG_3LV_10REFINE_WEAPON_8GU,
IG_3LV_11REFINE_WEAPON_9GU,
IG_3LV_12REFINE_WEAPON_10G,
IG_4LV_9REFINE_WEAPON_8GU,
IG_4LV_10REFINE_WEAPON_9GU,
IG_4LV_11REFINE_WEAPON_10G,
IG_BS_ITEM_M_S_52,
IG_Bs_Item_M_S_53,
IG_Bs_Item_M_S_54,
IG_Bs_Item_M_S_55,
IG_Bs_Item_M_S_56,
IG_MAX,
};

View File

@@ -5496,6 +5496,27 @@ uint64 MobAvailDatabase::parseBodyNode(const ryml::NodeRef& node) {
mob->vd.head_bottom = item->look;
}
if (this->nodeExists(node, "Robe")) {
if (pcdb_checkid(mob->vd.class_) == 0) {
this->invalidWarning(node["Robe"], "Robe is only applicable to Job sprites.\n");
return 0;
}
std::string robe;
if (!this->asString(node, "Robe", robe))
return 0;
std::shared_ptr<item_data> item = item_db.search_aegisname(robe.c_str());
if (item == nullptr) {
this->invalidWarning(node["Robe"], "Robe %s is not a valid item.\n", robe.c_str());
return 0;
}
mob->vd.robe = item->look;
}
if (this->nodeExists(node, "PetEquip")) {
std::shared_ptr<s_pet_db> pet_db_ptr = pet_db.find(mob->id);

View File

@@ -4956,7 +4956,7 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c
for( i = 0; i < ( strlen( message ) + 1 ) && k < 127; i ++ ) {
if( message[i] == ' ' || message[i] == '\0' ) {
if( message[ ( i - 1 ) ] == ' ' ) {
if (i > 0 && message[i - 1] == ' ') {
continue; // To prevent "@atcmd [space][space]" and .@atcmd_numparameters return 1 without any parameter.
}
temp[k] = '\0';

View File

@@ -2679,19 +2679,19 @@ static void pc_bonus_autospell(std::vector<s_autospell> &spell, uint16 id, uint1
if ((it.card_id == card_id || it.rate < 0 || rate < 0) && it.id == id && it.lv == lv && it.battle_flag == battle_flag && it.flag == flag) {
if (!battle_config.autospell_stacking && it.rate > 0 && rate > 0) // Stacking disabled
return;
it.rate = util::safe_addition_cap(it.rate, rate, (short)10000);
it.rate = util::safe_addition_cap(it.rate, rate, (short)1000);
return;
}
}
struct s_autospell entry = {};
if (rate < -10000 || rate > 10000)
ShowWarning("pc_bonus_autospell: Item bonus rate %d exceeds -10000~10000 range, capping.\n", rate);
if (rate < -1000 || rate > 1000)
ShowWarning("pc_bonus_autospell: Item bonus rate %d exceeds -1000~1000 range, capping.\n", rate);
entry.id = id;
entry.lv = lv;
entry.rate = cap_value(rate, -10000, 10000);
entry.rate = cap_value(rate, -1000, 1000);
entry.battle_flag = battle_flag;
entry.card_id = card_id;
entry.flag = flag;
@@ -2723,13 +2723,13 @@ static void pc_bonus_autospell_onskill(std::vector<s_autospell> &spell, uint16 s
struct s_autospell entry = {};
if (rate < -10000 || rate > 10000)
ShowWarning("pc_bonus_onskill: Item bonus rate %d exceeds -10000~10000 range, capping.\n", rate);
if (rate < -1000 || rate > 1000)
ShowWarning("pc_bonus_onskill: Item bonus rate %d exceeds -1000~1000 range, capping.\n", rate);
entry.trigger_skill = src_skill;
entry.id = id;
entry.lv = lv;
entry.rate = cap_value(rate, -10000, 10000);
entry.rate = cap_value(rate, -1000, 1000);
entry.card_id = card_id;
entry.flag = flag;
@@ -4959,15 +4959,13 @@ bool pc_skill(struct map_session_data* sd, uint16 skill_id, int level, enum e_ad
case ADDSKILL_TEMP: //Item bonus skill.
if (sd->status.skill[idx].id != 0) {
if (sd->status.skill[idx].lv >= level)
return true;
if (sd->status.skill[idx].flag == SKILL_FLAG_PERMANENT) //Non-granted skill, store it's level.
sd->status.skill[idx].flag = SKILL_FLAG_REPLACED_LV_0 + sd->status.skill[idx].lv;
} else {
sd->status.skill[idx].id = skill_id;
sd->status.skill[idx].flag = SKILL_FLAG_TEMPORARY;
}
sd->status.skill[idx].lv = level;
sd->status.skill[idx].lv = max(sd->status.skill[idx].lv, level);
break;
case ADDSKILL_TEMP_ADDLEVEL: //Add skill bonus on top of what you had.
@@ -6694,6 +6692,31 @@ uint8 pc_checkskill(struct map_session_data *sd, uint16 skill_id)
return (sd->status.skill[idx].id == skill_id) ? sd->status.skill[idx].lv : 0;
}
/**
* Returns the flag of the given skill (when learned).
* @param sd: Player data
* @param skill_id: Skill to lookup
* @return Skill flag type
*/
e_skill_flag pc_checkskill_flag(map_session_data &sd, uint16 skill_id) {
uint16 idx;
#ifdef RENEWAL
if ((idx = skill_get_index(skill_id)) == 0) {
#else
if ((idx = skill_db.get_index(skill_id, skill_id >= RK_ENCHANTBLADE, __FUNCTION__, __FILE__, __LINE__)) == 0) {
if (skill_id >= RK_ENCHANTBLADE) {
// Silently fail for now -> future update planned
return SKILL_FLAG_NONE;
}
#endif
ShowError("pc_checkskill_flag: Invalid skill id %d (char_id=%d).\n", skill_id, sd.status.char_id);
return SKILL_FLAG_NONE;
}
return (sd.status.skill[idx].id == skill_id && sd.status.skill[idx].lv > 0) ? static_cast<e_skill_flag>(sd.status.skill[idx].flag) : SKILL_FLAG_NONE;
}
/**
* Returns the amount of skill points invested in a Summoner's Power of Sea/Land/Life
* @param sd: Player data

View File

@@ -1265,6 +1265,7 @@ void pc_setinventorydata(struct map_session_data *sd);
int pc_get_skillcooldown(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
uint8 pc_checkskill(struct map_session_data *sd,uint16 skill_id);
e_skill_flag pc_checkskill_flag(map_session_data &sd, uint16 skill_id);
uint8 pc_checkskill_summoner(map_session_data *sd, e_summoner_power_type type);
uint8 pc_checkskill_imperial_guard(struct map_session_data *sd, short flag);
short pc_checkequip(struct map_session_data *sd,int pos,bool checkall=false);

View File

@@ -26,6 +26,8 @@
#include "party.hpp"
#include "pc.hpp"
using namespace rathena;
static int split_exact_quest_time(char* modif_p, int* day, int* hour, int* minute, int *second);
const std::string QuestDatabase::getDefaultLocation() {
@@ -162,13 +164,6 @@ uint64 QuestDatabase::parseBodyNode(const ryml::NodeRef& node) {
return 0;
}
if (!this->nodeExists(targetNode, "Mob") && !this->nodeExists(targetNode, "MinLevel") && !this->nodeExists(targetNode, "MaxLevel") &&
!this->nodeExists(targetNode, "Race") && !this->nodeExists(targetNode, "Size") && !this->nodeExists(targetNode, "Element") &&
!this->nodeExists(targetNode, "Location") && !this->nodeExists(targetNode, "MapName")) {
this->invalidWarning(targetNode, "Targets is missing required field, skipping.\n");
return 0;
}
target = std::make_shared<s_quest_objective>();
target->index = index;
target->mob_id = mob_id;
@@ -279,7 +274,7 @@ uint64 QuestDatabase::parseBodyNode(const ryml::NodeRef& node) {
uint16 mapindex = mapindex_name2idx(location.c_str(), nullptr);
if (mapindex == 0) {
if (mapindex == 0 && strcmpi(location.c_str(), "All") != 0) {
this->invalidWarning(targetNode["Location"], "Map \"%s\" not found.\n", location.c_str());
return 0;
}
@@ -296,6 +291,35 @@ uint64 QuestDatabase::parseBodyNode(const ryml::NodeRef& node) {
target->map_name = map_name;
}
if (this->nodeExists(targetNode, "MapMobTargets")) {
const auto& MapMobTargetsNode = targetNode["MapMobTargets"];
for (const auto& MapMobTargetsIt : MapMobTargetsNode) {
std::string mob_name;
c4::from_chars(MapMobTargetsIt.key(), &mob_name);
std::shared_ptr<s_mob_db> mob = mobdb_search_aegisname(mob_name.c_str());
if (!mob) {
this->invalidWarning(MapMobTargetsNode[MapMobTargetsIt.key()], "Mob %s does not exist, skipping.\n", mob_name.c_str());
continue;
}
bool active;
if (!this->asBool(MapMobTargetsNode, mob_name, active))
return 0;
if (!active) {
util::vector_erase_if_exists(target->mobs_allowed, mob->id);
continue;
}
if (!util::vector_exists( target->mobs_allowed, mob->id ))
target->mobs_allowed.push_back(mob->id);
}
}
// if max_level is set, min_level is 1
if (target->min_level == 0 && target->max_level > 0)
target->min_level = 1;
@@ -708,11 +732,13 @@ void quest_update_objective(struct map_session_data *sd, struct mob_data* md)
continue;
// Process quest objectives
uint8 total_check = 7; // Must pass all checks
for (int j = 0; j < qi->objectives.size(); j++) {
uint8 objective_check = 0; // Must pass all 6 checks
uint8 objective_check = 0;
if (qi->objectives[j]->mob_id == md->mob_id)
objective_check = 6;
objective_check = total_check;
else if (qi->objectives[j]->mob_id == 0) {
if (qi->objectives[j]->min_level == 0 || qi->objectives[j]->min_level <= md->level)
objective_check++;
@@ -724,17 +750,21 @@ void quest_update_objective(struct map_session_data *sd, struct mob_data* md)
objective_check++;
if (qi->objectives[j]->element == ELE_ALL || qi->objectives[j]->element == md->status.def_ele)
objective_check++;
if (qi->objectives[j]->mapid < 0 || (qi->objectives[j]->mapid == sd->bl.m && md->spawn != nullptr))
if (qi->objectives[j]->mapid < 0)
objective_check++;
else if (qi->objectives[j]->mapid >= 0) {
else if (qi->objectives[j]->mapid == sd->bl.m)
objective_check++;
else {
struct map_data *mapdata = map_getmapdata(sd->bl.m);
if (mapdata->instance_id && mapdata->instance_src_map == qi->objectives[j]->mapid)
objective_check++;
}
if (qi->objectives[j]->mobs_allowed.empty() || util::vector_exists( qi->objectives[j]->mobs_allowed, md->mob_id ))
objective_check++;
}
if (objective_check == 6 && sd->quest_log[i].count[j] < qi->objectives[j]->count) {
if (objective_check == total_check && sd->quest_log[i].count[j] < qi->objectives[j]->count) {
sd->quest_log[i].count[j]++;
sd->save_quest = true;
clif_quest_update_objective(sd, &sd->quest_log[i]);

View File

@@ -35,6 +35,7 @@ struct s_quest_objective {
e_element element;
int16 mapid;
std::string map_name;
std::vector<uint16> mobs_allowed;
};
struct s_quest_db {
@@ -55,7 +56,7 @@ enum e_quest_check_type : uint8 {
class QuestDatabase : public TypesafeYamlDatabase<uint32, s_quest_db> {
public:
QuestDatabase() : TypesafeYamlDatabase("QUEST_DB", 2, 1) {
QuestDatabase() : TypesafeYamlDatabase("QUEST_DB", 3, 1) {
}

View File

@@ -11712,7 +11712,7 @@ BUILDIN_FUNC(getmapusers)
*------------------------------------------*/
static int buildin_getareausers_sub(struct block_list *bl,va_list ap)
{
int *users=va_arg(ap,int *);
int *users = va_arg(ap, int *);
(*users)++;
return SCRIPT_CMD_SUCCESS;
}
@@ -11720,7 +11720,8 @@ static int buildin_getareausers_sub(struct block_list *bl,va_list ap)
BUILDIN_FUNC(getareausers)
{
const char *str;
int16 m,x0,y0,x1,y1,users=0; //doubt we can have more then 32k users on
int16 m,x0,y0,x1,y1;
int users = 0;
str=script_getstr(st,2);
x0=script_getnum(st,3);
y0=script_getnum(st,4);
@@ -19324,11 +19325,15 @@ BUILDIN_FUNC(unitwalk)
status_calc_npc(((TBL_NPC*)bl), SCO_NONE);
}
bool can_reach = false;
if (!strcmp(cmd,"unitwalk")) {
int x = script_getnum(st,3);
int y = script_getnum(st,4);
can_reach = unit_can_reach_pos(bl,x,y,0);
script_pushint(st, can_reach);
if (script_pushint(st, unit_can_reach_pos(bl,x,y,0))) {
if (can_reach) {
if (ud != nullptr)
ud->state.force_walk = true;
add_timer(gettick()+50, unit_delay_walktoxy_timer, bl->id, (x<<16)|(y&0xFFFF)); // Need timer to avoid mismatches
@@ -19340,7 +19345,11 @@ BUILDIN_FUNC(unitwalk)
ShowError("buildin_unitwalk: Bad target destination.\n");
script_pushint(st, 0);
return SCRIPT_CMD_FAILURE;
} else if (script_pushint(st, unit_can_reach_bl(bl, tbl, distance_bl(bl, tbl)+1, 0, NULL, NULL))) {
}
can_reach = unit_can_reach_bl(bl, tbl, distance_bl(bl, tbl)+1, 0, NULL, NULL);
script_pushint(st, can_reach);
if (can_reach) {
if (ud != nullptr)
ud->state.force_walk = true;
add_timer(gettick()+50, unit_delay_walktobl_timer, bl->id, tbl->id); // Need timer to avoid mismatches
@@ -19348,7 +19357,7 @@ BUILDIN_FUNC(unitwalk)
off = 4;
}
if (ud && script_hasdata(st, off)) {
if (ud && script_hasdata(st, off) && can_reach) {
done_label = script_getstr(st, off);
check_event(st, done_label);
safestrncpy(ud->walk_done_event, done_label, sizeof(ud->walk_done_event));
@@ -19496,11 +19505,6 @@ BUILDIN_FUNC(unitstopwalk)
if (ud != nullptr)
ud->state.force_walk = false;
if (unit_stop_walking(bl, flag) == 0 && flag != USW_FORCE_STOP) {
ShowWarning("buildin_unitstopwalk: Unable to find unit or unit is not walking.\n");
return SCRIPT_CMD_FAILURE;
}
return SCRIPT_CMD_SUCCESS;
} else {
return SCRIPT_CMD_FAILURE;

View File

@@ -5734,6 +5734,29 @@
export_constant(IG_SHADOW_CUBE_SHIELD);
export_constant(IG_SHADOW_CUBE_SHOES);
export_constant(IG_SHADOW_CUBE_WEAPON);
export_constant(IG_AUTOMATIC_MODULE_MIX);
export_constant(IG_EPIC_MODULE_MIX);
export_constant(IG_AUTO_M_I_BOX_A);
export_constant(IG_AUTO_M_I_BOX_B);
export_constant(IG_ILLUSION_MODULE_MIX);
export_constant(IG_ENCHANT_STONE_BOX22);
export_constant(IG_ENCHANT_STONE_BOX23);
export_constant(IG_ENCHANT_STONE_BOX24);
export_constant(IG_ENCHANT_STONE_BOX25);
export_constant(IG_ENCHANT_STONE_BOX27);
export_constant(IG_ANCIENT_HERO_BOX_1);
export_constant(IG_3LV_9REFINE_WEAPON_7GU);
export_constant(IG_3LV_10REFINE_WEAPON_8GU);
export_constant(IG_3LV_11REFINE_WEAPON_9GU);
export_constant(IG_3LV_12REFINE_WEAPON_10G);
export_constant(IG_4LV_9REFINE_WEAPON_8GU);
export_constant(IG_4LV_10REFINE_WEAPON_9GU);
export_constant(IG_4LV_11REFINE_WEAPON_10G);
export_constant(IG_BS_ITEM_M_S_52);
export_constant(IG_Bs_Item_M_S_53);
export_constant(IG_Bs_Item_M_S_54);
export_constant(IG_Bs_Item_M_S_55);
export_constant(IG_Bs_Item_M_S_56);
/* unit stop walking */
export_constant(USW_NONE);

View File

@@ -9248,17 +9248,20 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
break;
case TF_BACKSLIDING: //This is the correct implementation as per packet logging information. [Skotlex]
skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),unit_getdir(bl),(enum e_skill_blown)(BLOWN_IGNORE_NO_KNOCKBACK
{
short blew_count = skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),unit_getdir(bl),(enum e_skill_blown)(BLOWN_IGNORE_NO_KNOCKBACK
#ifdef RENEWAL
|BLOWN_DONT_SEND_PACKET
#endif
));
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
));
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
#ifdef RENEWAL
clif_blown(src); // Always blow, otherwise it shows a casting animation. [Lemongrass]
if(blew_count > 0)
clif_blown(src); // Always blow, otherwise it shows a casting animation. [Lemongrass]
#else
clif_slide(bl, bl->x, bl->y); //Show the casting animation on pre-re
clif_slide(bl, bl->x, bl->y); //Show the casting animation on pre-re
#endif
}
break;
case TK_HIGHJUMP:

View File

@@ -1899,7 +1899,7 @@ bool status_check_skilluse(struct block_list *src, struct block_list *target, ui
return false;
}
if (skill_id && sc->cant.cast && skill_id != RK_REFRESH && skill_id != SU_GROOMING && skill_id != SR_GENTLETOUCH_CURE) { // Stuned/Frozen/etc
if (skill_id > 0 && sc->opt1 && sc->opt1 != OPT1_STONEWAIT && sc->opt1 != OPT1_BURNING && skill_id != RK_REFRESH && skill_id != SU_GROOMING && skill_id != SR_GENTLETOUCH_CURE) { // Stuned/Frozen/etc
if (flag != 1) // Can't cast, casted stuff can't damage.
return false;
if (skill_get_casttype(skill_id) == CAST_DAMAGE)

View File

@@ -288,7 +288,7 @@ int do_init( int argc, char** argv ){
return 0;
}
if (!process("QUEST_DB", 2, root_paths, "quest_db", [](const std::string &path, const std::string &name_ext) -> bool {
if (!process("QUEST_DB", 3, root_paths, "quest_db", [](const std::string &path, const std::string &name_ext) -> bool {
return sv_readdb(path.c_str(), name_ext.c_str(), ',', 3 + MAX_QUEST_OBJECTIVES * 2 + MAX_QUEST_DROPS * 3, 100, -1, &quest_read_db, false);
})) {
return 0;