summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/const.txt21
-rw-r--r--db/re/item_combo_db.txt1
-rw-r--r--db/re/item_db.conf950
-rw-r--r--db/re/item_group.conf23
-rw-r--r--db/re/map_zone_db.conf15
-rw-r--r--db/re/skill_require_db.txt2
-rw-r--r--doc/script_commands.txt37
-rw-r--r--npc/mapflag/zone.txt16
-rw-r--r--npc/merchants/alchemist.txt36
-rw-r--r--npc/merchants/shops.txt18
-rw-r--r--npc/other/Global_Functions.txt8
-rw-r--r--sql-files/item_db_re.sql120
-rw-r--r--sql-files/upgrades/eAthena-logs-upgrade.sql44
-rw-r--r--sql-files/upgrades/eAthena-main-upgrade.sql (renamed from sql-files/upgrades/eathena-upgrade.sql)21
-rw-r--r--src/map/atcommand.c6
-rw-r--r--src/map/battle.c6
-rw-r--r--src/map/clif.c6
-rw-r--r--src/map/itemdb.h2
-rw-r--r--src/map/npc.c7
-rw-r--r--src/map/pc.c5
-rw-r--r--src/map/script.c605
-rw-r--r--src/map/script.h3
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc12
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc3
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc81
25 files changed, 1594 insertions, 454 deletions
diff --git a/db/const.txt b/db/const.txt
index ec2d6280c..104435660 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -3556,3 +3556,24 @@ UNITTYPE_MOB 3
UNITTYPE_HOM 4
UNITTYPE_MER 5
UNITTYPE_ELEM 6
+
+C_AQUA 0x00FFFF
+C_BLACK 0x000000
+C_BLUE 0x0000FF
+C_GRAY 0x808080
+C_GREEN 0x008000
+C_LIME 0x00FF00
+C_MAROON 0x800000
+C_NAVY 0x000080
+C_OLIVE 0x808000
+C_ORANGE 0xFFA500
+C_PURPLE 0x800080
+C_RED 0xFF0000
+C_SILVER 0xC0C0C0
+C_TEAL 0x008080
+C_WHITE 0xFFFFFF
+C_YELLOW 0xFFFF00
+C_PINK 0xFFC0CB
+C_CHOCOLATE 0xD2691E
+C_GOLD 0xFFD700
+C_VIOLET 0xEE82EE
diff --git a/db/re/item_combo_db.txt b/db/re/item_combo_db.txt
index bc5203d8f..c0435c7cc 100644
--- a/db/re/item_combo_db.txt
+++ b/db/re/item_combo_db.txt
@@ -202,6 +202,7 @@
2777:2778:5479,{ bonus bMaxHP,300; bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,5; }
2779:2780:5482,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; }
2779:2780:5577,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; }
+2950:15067:20709:22012,{ bonus2 bExpAddRace,RC_All,10; }
2963:15073,{ bonus bAspdRate,5; }
2963:15074,{ bonus bDelayrate,-5; bonus2 bAddRaceTolerance,RC_DemiPlayer,5; }
2964:15073,{ bonus bDelayrate,-5; bonus2 bAddRaceTolerance,RC_DemiPlayer,5; }
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 6fc8f88df..349b79524 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -7974,7 +7974,6 @@ item_db: (
AegisName: "TE_WoE_Katar"
Name: "TE WoE Katar"
Type: 4
- Buy: 20
Atk: 120
Range: 1
Job: 0x00001000
@@ -7994,7 +7993,7 @@ item_db: (
}
Script: <"
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Bleeding,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Bleeding,1000;
">
},
@@ -8358,7 +8357,7 @@ item_db: (
Buy: 20
Atk: 100
Range: 1
- Job: 0x000454A3
+ Job: 0x000654E3
Loc: 2
WeaponLv: 3
EquipLv: 40
@@ -8376,7 +8375,7 @@ item_db: (
Script: <"
bonus bUnbreakableWeapon,0;
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Freeze,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Freeze,1000;
">
},
{
@@ -9475,7 +9474,7 @@ item_db: (
Script: <"
bonus bUnbreakableWeapon,0;
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Stun,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Stun,1000;
">
},
@@ -10300,7 +10299,7 @@ item_db: (
}
Script: <"
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Curse,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Curse,1000;
">
},
{
@@ -11294,7 +11293,6 @@ item_db: (
AegisName: "TE_WoE_Lance"
Name: "TE WoE Lance"
Type: 4
- Buy: 20
Atk: 150
Range: 3
Job: 0x00004082
@@ -11314,7 +11312,7 @@ item_db: (
}
Script: <"
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Blind,1000;
">
},
{
@@ -11864,12 +11862,12 @@ item_db: (
Refine: false
View: 8
Script: <"
- bonus bAtkEle,Ele_Wind;
bonus bDex,50;
bonus bStr,20;
bonus bAspdRate,10;
bonus3 bAutoSpell,MG_THUNDERSTORM,10,100;
- autobonus "{ bonus bSplashRange,1; }",50,10000;
+ autobonus "{ bonus bSplashRange,1; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";
+ bonus bUnbreakableWeapon,0;
">
},
{
@@ -13282,7 +13280,7 @@ item_db: (
bonus2 bAddRace,RC_Player,40;
bonus2 bMagicAddRace,RC_Player,5;
bonus bHealPower,5;
- bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Blind,1000;
">
},
{
@@ -14924,7 +14922,7 @@ item_db: (
Script: <"
bonus2 bMagicAddRace,RC_Player,10;
bonus bHealPower,5;
- bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Blind,1000;
">
},
{
@@ -17084,7 +17082,7 @@ item_db: (
}
Script: <"
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Freeze,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Freeze,1000;
">
},
{
@@ -17853,7 +17851,6 @@ item_db: (
AegisName: "TE_WoE_Guitar"
Name: "TE WoE Guitar"
Type: 4
- Buy: 20
Atk: 100
Range: 1
Job: 0x00080000
@@ -17874,7 +17871,7 @@ item_db: (
}
Script: <"
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Poison,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Poison,1000;
">
},
{
@@ -18820,7 +18817,6 @@ item_db: (
AegisName: "TE_WoE_Rope"
Name: "TE WoE Rope"
Type: 4
- Buy: 20
Atk: 100
Range: 2
Job: 0x00080000
@@ -18840,7 +18836,7 @@ item_db: (
}
Script: <"
bonus2 bAddRace,RC_Player,40;
- bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Blind,1000;
">
},
{
@@ -19502,8 +19498,8 @@ item_db: (
},
{
Id: 2019
- AegisName: "TE_WoE_Two_Handed_Staff"
- Name: "TE WoE Two-Handed Staff"
+ AegisName: "TE_Woe_Two_Hand_Staff"
+ Name: "TE Woe Two Hand Staff"
Type: 4
Buy: 20
Atk: 50
@@ -19527,7 +19523,7 @@ item_db: (
Script: <"
bonus2 bMagicAddRace,RC_Player,20;
bonus bHealPower,5;
- bonus2 bAddEff,Eff_Stun,500; /* Custom IRO */
+ bonus2 bAddEff,Eff_Stun,1000;
">
},
{
@@ -19539,18 +19535,19 @@ item_db: (
Weight: 3000
Atk: 200
Matk: 280
+ Range: 1
Job: 0x00810200
Loc: 34
WeaponLv: 4
EquipLv: 90
Refine: false
- View: 10
+ View: 23
Script: <"
bonus bInt,20;
bonus bAtkEle,Ele_Poison;
- bonus3 bAddEff,Eff_Poison,500,ATF_SKILL; /* Custom IRO */
- bonus3 bAddEff,Eff_Poison,500,ATF_SHORT;
- bonus bUnbreakableWeapon,1;
+ bonus3 bAddEff,Eff_Poison,300,ATF_SKILL;
+ bonus2 bAddEffWhenHit,Eff_Poison,100;
+ bonus bUnbreakableWeapon,0;
">
},
{
@@ -19559,22 +19556,23 @@ item_db: (
Name: "Ganbantein"
Type: 5
Buy: 20
- Weight: 3000
- Atk: 200
+ Weight: 2000
+ Atk: 100
Matk: 320
+ Range: 1
Job: 0x00000200
Upper: 56
Loc: 34
WeaponLv: 4
- EquipLv: 90
+ EquipLv: 100
Refine: false
- View: 10
+ View: 23
Script: <"
bonus bInt,25;
bonus bDex,25;
- bonus5 bAutoSpell,AB_SILENTIUM,1,500,BF_SKILL,1;/* Custom IRO */
- bonus3 bAddEff,Eff_Poison,500,ATF_SKILL;
- bonus3 bAddEff,Eff_Silence,500,ATF_SHORT;
+ bonus5 bAutoSpell,AB_SILENTIUM,1,100,BF_MAGIC,1;
+ bonus3 bAddEff,Eff_Poison,100,ATF_SKILL;
+ bonus2 bAddEffWhenHit,Eff_Silence,10000;
bonus bUnbreakableWeapon,0;
">
},
@@ -21009,7 +21007,6 @@ item_db: (
AegisName: "TE_WoE_Buckler"
Name: "TE WoE Buckler"
Type: 5
- Buy: 20
Def: 15
Loc: 32
EquipLv: 40
@@ -21036,7 +21033,6 @@ item_db: (
AegisName: "TE_WoE_Shield"
Name: "TE WoE Shield"
Type: 5
- Buy: 20
Def: 25
Job: 0x00004082
Loc: 32
@@ -21063,8 +21059,7 @@ item_db: (
AegisName: "TE_WoE_Magic_Guard"
Name: "TE WoE Magic Guard"
Type: 5
- Buy: 20
- Def: 25
+ Def: 5
Job: 0x00818315
Loc: 32
EquipLv: 40
@@ -21099,14 +21094,14 @@ item_db: (
View: 2
Script: <"
bonus bMdef,5;
- bonus2 bSubRace, RC_All, 30;
+ bonus2 bSubRace,RC_All,30;
bonus bUnbreakableShield,1;
">
},
{
Id: 2182
- AegisName: "Hervor_Alvtir"
- Name: "Hervor Alvtir"
+ AegisName: "Hervor_Alvitr"
+ Name: "Hervor Alvitr"
Type: 5
Buy: 20
Weight: 3000
@@ -21119,11 +21114,9 @@ item_db: (
Script: <"
bonus bVit,20;
bonus bMdef,10;
- bonus2 bAddRaceTolerance, RC_All, 30;
- bonus bUnbreakableShield,0;
- /* When you receive Melee Physical damage, chance of casting Protective Light for 60 seconds. */
- /* Cancels Stun, Sleep, Curse, Stone Curse, Poison, Blind, Silence, Bleeding, Chaos, and Frozen. */
- /* Protects the user against such effects for a set duration. */
+ bonus2 bAddRaceTolerance,RC_All,30;
+ /* TODO: bonus3 bAutoSpellWhenHit,"ALL_RAY_OF_PROTECTION",1,50; */
+ bonus bUnbreakableShield,1;
">
},
{
@@ -24353,7 +24346,7 @@ item_db: (
bonus bMdef,10;
bonus bMaxHPrate,20;
bonus bMaxSPrate,20;
- bonus bSPrecovRate,25;
+ bonus bSPrecovRate,15;
bonus bSpeedRate,25;
bonus bInt,25;
">
@@ -25882,7 +25875,6 @@ item_db: (
AegisName: "TE_WoE_Shoes"
Name: "TE WoE Shoes"
Type: 5
- Buy: 20
Def: 5
Loc: 64
EquipLv: 40
@@ -25897,6 +25889,7 @@ item_db: (
noauction: true
}
Script: <"
+ bonus bMdef,5;
bonus bMaxHP,150;
bonus bMaxSP,150;
bonus2 bAddRace,RC_Player,5;
@@ -25909,9 +25902,8 @@ item_db: (
AegisName: "TE_WoE_Boots"
Name: "TE WoE Boots"
Type: 5
- Buy: 20
Def: 10
- Job: 0x00004082
+ Job: 0x000444A2
Loc: 64
EquipLv: 40
Refine: false
@@ -25933,10 +25925,9 @@ item_db: (
},
{
Id: 2498
- AegisName: "TE_WoE_Magic_Sandals"
- Name: "TE WoE Magic Sandals"
+ AegisName: "TE_WoE_Magic_Sandal"
+ Name: "TE WoE Magic Sandal"
Type: 5
- Buy: 20
Def: 5
Job: 0x00818315
Loc: 64
@@ -28061,7 +28052,6 @@ item_db: (
Weight: 8000
Def: 2
Loc: 136
- EquipLv: 94
Refine: false
Script: <"
bonus bStr,40+BaseLevel/5;
@@ -28090,7 +28080,6 @@ item_db: (
bonus bInt,10;
bonus bLuk,10;
bonus bMdef,5;
- bonus bHealPower,6;
">
},
{
@@ -33575,7 +33564,6 @@ item_db: (
AegisName: "TE_Ring_of_Protection"
Name: "TE Ring of Protection"
Type: 5
- Buy: 20
Loc: 136
EquipLv: 40
Refine: false
@@ -33595,10 +33583,9 @@ item_db: (
},
{
Id: 2945
- AegisName: "TE_Rage_Ring"
- Name: "TE Rage Ring"
+ AegisName: "TE_Ring_Of_Rage"
+ Name: "TE Rage Of Ring"
Type: 5
- Buy: 20
Loc: 136
EquipLv: 40
Refine: false
@@ -33618,10 +33605,9 @@ item_db: (
},
{
Id: 2946
- AegisName: "TE_Defiance_Ring"
- Name: "TE Defiance Ring"
+ AegisName: "TE_Ring_Of_Defiance"
+ Name: "TE Ring Of Defiance"
Type: 5
- Buy: 20
Loc: 136
EquipLv: 40
Refine: false
@@ -33660,6 +33646,62 @@ item_db: (
Script: <" bonus2 bExpAddRace, RC_All, 10; ">
},
{
+ Id: 2951
+ AegisName: "Kvasir_Ring_Blue"
+ Name: "Kvasir Ring Blue"
+ Type: 5
+ Buy: 20000
+ Weight: 100
+ Loc: 136
+ Refine: false
+ Script: <"
+ bonus bMaxSP,30;
+ skill ECL_SNOWFLIP,1;
+ ">
+},
+{
+ Id: 2952
+ AegisName: "Kvasir_Ring_Red"
+ Name: "Kvasir Ring Red"
+ Type: 5
+ Buy: 20000
+ Weight: 100
+ Loc: 136
+ Refine: false
+ Script: <"
+ bonus bMaxSP,30;
+ skill "ECL_PEONYMAMY",1;
+ ">
+},
+{
+ Id: 2953
+ AegisName: "Kvasir_Ring_Green"
+ Name: "Kvasir Ring Green"
+ Type: 5
+ Buy: 20000
+ Weight: 100
+ Loc: 136
+ Refine: false
+ Script: <"
+ bonus bMaxHP,100;
+ skill "ECL_SADAGUI",1;
+ ">
+},
+{
+ Id: 2954
+ AegisName: "Kvasir_Ring_Brown"
+ Name: "Kvasir Ring Brown"
+ Type: 5
+ Buy: 20000
+ Weight: 100
+ Loc: 136
+ Refine: false
+ Script: <"
+ bonus bMaxHP,100;
+ skill "ECL_SEQUOIADUST",1;
+ ">
+},
+{
Id: 2959
AegisName: "Fidelity_Necklace"
Name: "Fidelity Necklace"
@@ -65131,6 +65173,12 @@ item_db: (
}
},
{
+ Id: 6592
+ AegisName: "Small_Wooden_Chest"
+ Name: "Small Wooden Chest"
+ Weight: 10
+},
+{
Id: 6593
AegisName: "Criatura_Hair_Coupon"
Name: "Criatura Hair Coupon"
@@ -65146,6 +65194,88 @@ item_db: (
}
},
{
+ Id: 6594
+ AegisName: "Magic_Bronze_Bullion"
+ Name: "Magic Bronze Bullion"
+ Buy: 20
+ Weight: 1000
+},
+{
+ Id: 6595
+ AegisName: "Hammer_Of_Velund"
+ Name: "Hammer Of Velund"
+ Buy: 20
+ Weight: 500
+},
+{
+ Id: 6596
+ AegisName: "Anvil_Of_Velund"
+ Name: "Anvil Of Velund"
+ Buy: 20
+ Weight: 2000
+},
+{
+ Id: 6597
+ AegisName: "Bracelet_Of_Velund"
+ Name: "Bracelet Of Velund"
+ Buy: 20
+ Weight: 500
+},
+{
+ Id: 6598
+ AegisName: "Rib_Of_Jormungand"
+ Name: "Rib Of Jormungand"
+ Buy: 20
+ Weight: 10000
+},
+{
+ Id: 6599
+ AegisName: "Spirit_Of_Hugin"
+ Name: "Spirit Of Hugin"
+ Buy: 20
+ Weight: 100
+},
+{
+ Id: 6600
+ AegisName: "Spirit_Of_Munin"
+ Name: "Spirit Of Munin"
+ Buy: 20
+ Weight: 100
+},
+{
+ Id: 6601
+ AegisName: "Chisel_Of_Giant"
+ Name: "Chisel Of Giant"
+ Buy: 20
+ Weight: 1000
+},
+{
+ Id: 6602
+ AegisName: "Secret_Of_Rune"
+ Name: "Secret Of Rune"
+ Buy: 20
+ Weight: 100
+},
+{
+ Id: 6603
+ AegisName: "Skin_Of_Hraesvelg"
+ Name: "Skin Of Hraesvelg"
+ Buy: 20
+ Weight: 500
+},
+{
+ Id: 6604
+ AegisName: "Essence_Of_Rune"
+ Name: "Essence Of Rune"
+ Buy: 20
+},
+{
+ Id: 6605
+ AegisName: "Muspellium"
+ Name: "Muspellium"
+ Buy: 20
+},
+{
Id: 6606
AegisName: "P_Cart_C"
Name: "P Cart C"
@@ -65167,6 +65297,12 @@ item_db: (
Weight: 10
},
{
+ Id: 6615
+ AegisName: "Siege_Guild_Coin"
+ Name: "Siege Guild Coin"
+ Weight: 10
+},
+{
Id: 6616
AegisName: "Lmtd_Manny_Card"
Name: "Lmtd Manny Card"
@@ -65917,8 +66053,8 @@ item_db: (
{
Id: 7056
AegisName: "Payroll_Of_Kafra"
- Name: "Payment Statement for Kafra Employee"
- Buy: 0
+ Name: "Payroll Of Kafra"
+ Buy: 1
Weight: 50
BuyingStore: true
},
@@ -75643,6 +75779,12 @@ item_db: (
Weight: 10
},
{
+ Id: 11059
+ AegisName: "WoE_TE_Rental_List"
+ Name: "WoE TE Rental List"
+ Weight: 10
+},
+{
Id: 11060
AegisName: "Energy_Xtal_Combi_Book"
Name: "Energy Crystal Book"
@@ -76303,6 +76445,24 @@ item_db: (
Script: <" itemheal rand(20,30),0; ">
},
{
+ Id: 11557
+ AegisName: "TE_White_Potion"
+ Name: "TE White Potion"
+ Type: 0
+ Buy: 200
+ Weight: 300
+ Script: <" itemheal rand(325,405),0; ">
+},
+{
+ Id: 11558
+ AegisName: "TE_White_Slim_Potion"
+ Name: "TE White Slim Potion"
+ Type: 0
+ Buy: 275
+ Weight: 100
+ Script: <" itemheal rand(325,405),0; ">
+},
+{
Id: 11592
AegisName: "Trance_Candy_R"
Name: "Red Transform Candy"
@@ -86963,6 +87123,103 @@ item_db: (
Weight: 10
},
{
+ Id: 12873
+ AegisName: "TE_Potion_Box"
+ Name: "TE Potion Box"
+ Type: 2
+ Buy: 20
+ Weight: 100
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nomail: true
+ noauction: true
+ }
+ Script: <" getitem TE_White_Slim_Potion,10; ">
+},
+{
+ Id: 12874
+ AegisName: "Frost_Giant_Blood"
+ Name: "Frost Giant Blood"
+ Type: 2
+ Buy: 20
+ Weight: 100
+ Script: <"
+ specialeffect2 EF_POTION_CON;
+ autobonus "{ heal -3000,0; bonus2 bAddRace,RC_Player,100; bonus2 bMagicAddRace,RC_Player,100; }",10,0,0,SI_GVG_GIANT;
+ ">
+},
+{
+ Id: 12875
+ AegisName: "Golem_Stone"
+ Name: "Golem Stone"
+ Type: 2
+ Buy: 20
+ Weight: 10
+ Script: <"
+ specialeffect2 EF_POTION_CON;
+ autobonus "{ heal 0,-300; bonus2 bSubRace,RC_Player,15; }",10,0,0,SI_GVG_GOLEM;
+ ">
+},
+{
+ Id: 12876
+ AegisName: "Elf_Tear_Stun"
+ Name: "Elf Tear Stun"
+ Type: 2
+ Weight: 10
+ Script: <" autobonus "{ heal -3000,0; bonus2 bResEff,Eff_Stun,10000; }",10,0,0,SI_GVG_STUN; ">
+},
+{
+ Id: 12877
+ AegisName: "Elf_Tear_Stone_Curse"
+ Name: "Elf Tear Stone Curse"
+ Type: 2
+ Weight: 10
+ Script: <" autobonus "{ heal -3000,0; bonus2 bResEff,Eff_Stone,10000; }",10,0,0,SI_GVG_STONE; ">
+},
+{
+ Id: 12878
+ AegisName: "Elf_Tear_Freezing"
+ Name: "Elf Tear Freezing"
+ Type: 2
+ Weight: 10
+ Script: <" autobonus "{ heal -3000,0; bonus2 bResEff,Eff_Freeze,10000; }",10,0,0,SI_GVG_FREEZ; ">
+},
+{
+ Id: 12879
+ AegisName: "Elf_Tear_Sleep"
+ Name: "Elf Tear Sleep"
+ Type: 2
+ Weight: 10
+ Script: <" autobonus "{ heal -3000,0; bonus2 bResEff,Eff_Sleep,10000; }",10,0,0,SI_GVG_SLEEP; ">
+},
+{
+ Id: 12880
+ AegisName: "Elf_Tear_Curse"
+ Name: "Elf Tear Curse"
+ Type: 2
+ Weight: 10
+ Script: <" autobonus "{ heal -3000,0; bonus2 bResEff,Eff_Curse,10000; }",10,0,0,SI_GVG_CURSE; ">
+},
+{
+ Id: 12881
+ AegisName: "Elf_Tear_Silence"
+ Name: "Elf Tear Silence"
+ Type: 2
+ Weight: 10
+ Script: <" autobonus "{ heal -3000,0; bonus2 bResEff,Eff_Silence,10000; }",10,0,0,SI_GVG_SILENCE; ">
+},
+{
+ Id: 12882
+ AegisName: "Elf_Tear_Blind"
+ Name: "Elf Tear Blind"
+ Type: 2
+ Weight: 10
+ Script: <" autobonus "{ heal -3000,0; bonus2 bResEff,Eff_Blind,10000; }",10,0,0,SI_GVG_BLIND; ">
+},
+{
Id: 12884
AegisName: "C_Center_Potion"
Name: "Infinite Concentration Potion"
@@ -87046,6 +87303,29 @@ item_db: (
">
},
{
+ Id: 12888
+ AegisName: "Siege_Kit_Box"
+ Name: "Siege Kit Box"
+ Type: 2
+ Buy: 20
+ Weight: 100
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ getrandgroupitem 12888,1;
+ getrandgroupitem 12888,1;
+ getrandgroupitem 12888,1;
+ ">
+},
+{
Id: 12900
AegisName: "Battle_Manual_Box"
Name: "Battle Manual Box"
@@ -90509,6 +90789,35 @@ item_db: (
View: 1
},
{
+ Id: 13083
+ AegisName: "TE_Woe_Knife"
+ Name: "T Woe Knife"
+ Type: 4
+ Atk: 100
+ Matk: 100
+ Range: 1
+ Job: 0x3E9F7EEF
+ Upper: 1
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 1
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Silence,1000;
+ ">
+},
+{
Id: 13092
AegisName: "RWC_Memory_Knife"
Name: "RWC Memory Knife"
@@ -90982,6 +91291,33 @@ item_db: (
Script: <" bonus bHit,-5; ">
},
{
+ Id: 13117
+ AegisName: "TE_Woe_Pistol"
+ Name: "TE Woe Pistol"
+ Type: 4
+ Atk: 60
+ Range: 7
+ Job: 0x41000000
+ Loc: 34
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 17
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Curse,1000;
+ ">
+},
+{
Id: 13120
AegisName: "Heaven's_Feather_and_Hell's_Fire"
Name: "Heaven's_Feather_&_Hell's_Fire"
@@ -91876,6 +92212,114 @@ item_db: (
View: 21
},
{
+ Id: 13184
+ AegisName: "TE_Woe_Rifle"
+ Name: "TE Woe Rifle"
+ Type: 4
+ Atk: 80
+ Range: 9
+ Job: 0x41000000
+ Loc: 34
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 18
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Silence,1000;
+ ">
+},
+{
+ Id: 13185
+ AegisName: "TE_Woe_Gatling"
+ Name: "TE Woe Gatling"
+ Type: 4
+ Atk: 100
+ Range: 9
+ Job: 0x41000000
+ Loc: 34
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 19
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Stun,1000;
+ ">
+},
+{
+ Id: 13186
+ AegisName: "TE_Woe_Shotgun"
+ Name: "TE Woe Shotgun"
+ Type: 4
+ Atk: 100
+ Range: 9
+ Job: 0x41000000
+ Loc: 34
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 20
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Poison,1000;
+ ">
+},
+{
+ Id: 13187
+ AegisName: "TE_Woe_Grenade"
+ Name: "TE Woe Grenade"
+ Type: 4
+ Atk: 100
+ Range: 9
+ Job: 0x41000000
+ Loc: 34
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 21
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Blind,1000;
+ ">
+},
+{
Id: 13189
AegisName: "Color_Scope"
Name: "Color Scope"
@@ -93371,6 +93815,35 @@ item_db: (
">
},
{
+ Id: 13317
+ AegisName: "TE_Woe_Huuma"
+ Name: "TE Woe Huuma"
+ Type: 4
+ Atk: 80
+ Matk: 100
+ Range: 1
+ Job: 0x22000000
+ Upper: 1
+ Loc: 34
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 22
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Bleeding,1000;
+ ">
+},
+{
Id: 13327
AegisName: "Crimson_Huuma_Shuriken"
Name: "Crimson Huuma Shuriken"
@@ -94257,6 +94730,34 @@ item_db: (
View: 2
},
{
+ Id: 13439
+ AegisName: "TE_Woe_Sword"
+ Name: "TE Woe Sword"
+ Type: 4
+ Atk: 120
+ Matk: 100
+ Range: 1
+ Job: 0x000654E3
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 2
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Poison,1000;
+ ">
+},
+{
Id: 13442
AegisName: "Old_Parasol"
Name: "Old Parasol"
@@ -113270,6 +113771,100 @@ item_db: (
">
},
{
+ Id: 15062
+ AegisName: "TE_Woe_Coat"
+ Name: "TE Woe Coat"
+ Type: 5
+ Def: 15
+ Loc: 16
+ EquipLv: 40
+ Refine: false
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus bMdef,15;
+ bonus bMaxHP,250;
+ bonus bMaxSP,250;
+ bonus2 bSubRace,RC_Player,10;
+ bonus2 bResEff,Eff_Freeze,25;
+ bonus bUnbreakableArmor,0;
+ ">
+},
+{
+ Id: 15063
+ AegisName: "TE_Woe_Chain_Mail"
+ Name: "TE Woe Chain Mail"
+ Type: 5
+ Def: 25
+ Job: 0x000444A2
+ Loc: 16
+ EquipLv: 40
+ Refine: false
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus bMdef,5;
+ bonus bMaxHP,450;
+ bonus bMaxSP,50;
+ bonus2 bSubRace,RC_Player,15;
+ bonus2 bResEff,Eff_Freeze,25;
+ bonus bUnbreakableArmor,0;
+ ">
+},
+{
+ Id: 15064
+ AegisName: "TE_Woe_Mage_Coat"
+ Name: "TE Woe Mage Coat"
+ Type: 5
+ Def: 5
+ Job: 0x00818315
+ Loc: 16
+ EquipLv: 40
+ Refine: false
+ Script: <"
+ bonus bMdef,25;
+ bonus bMaxHP,200;
+ bonus bMaxSP,200;
+ bonus2 bSubRace,RC_Player,5;
+ bonus2 bResEff,Eff_Freeze,25;
+ bonus bUnbreakableArmor,0;
+ ">
+},
+{
+ Id: 15067
+ AegisName: "Rune_Suit"
+ Name: "Rune Suit"
+ Type: 5
+ Loc: 16
+ Refine: false
+ EquipLv: [1, 100]
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <" bonus2 bExpAddRace,RC_All,10; ">
+},
+{
Id: 15068
AegisName: "Adv_Angel's_Protection"
Name: "Advanced Angelic Protection"
@@ -114035,6 +114630,35 @@ item_db: (
">
},
{
+ Id: 16025
+ AegisName: "TE_Woe_Mace"
+ Name: "TE Woe Mace"
+ Type: 4
+ Atk: 120
+ Range: 1
+ Job: 0x00000010
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 8
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus bUnbreakableWeapon,1;
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Freeze,1000;
+ bonus bHealPower,5;
+ ">
+},
+{
Id: 16026
AegisName: "RWC_Memory_Mace"
Name: "RWC Memory Mace"
@@ -118953,6 +119577,35 @@ item_db: (
View: 11
},
{
+ Id: 18118
+ AegisName: "TE_Woe_Bow"
+ Name: "TE Woe Bow"
+ Type: 4
+ Buy: 200000
+ Weight: 1500
+ Atk: 120
+ Range: 5
+ Job: 0x000A0808
+ Loc: 34
+ WeaponLv: 3
+ EquipLv: 40
+ Refine: false
+ View: 11
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus2 bAddRace,RC_Player,40;
+ bonus2 bAddEff,Eff_Curse,1000;
+ ">
+},
+{
Id: 18119
AegisName: "Thanatos_Bow"
Name: "Thanatos Bow"
@@ -122748,9 +123401,9 @@ item_db: (
AegisName: "TE_WoE_Cap"
Name: "TE WoE Cap"
Type: 5
- Buy: 0
Def: 5
Loc: 256
+ EquipLv: 40
Refine: false
View: 14
Trade: {
@@ -122762,18 +123415,25 @@ item_db: (
nomail: true
noauction: true
}
+ Script: <"
+ bonus bMdef,5;
+ bonus bBaseAtk,10;
+ bonus2 bAddRace,RC_Player,20;
+ bonus2 bResEff,Eff_Freeze,25;
+ bonus bUnbreakableHelm,0;
+ ">
},
{
Id: 18733
AegisName: "TE_WoE_Bone_Helm"
Name: "TE WoE Bone Helm"
Type: 5
- Buy: 0
Def: 10
Job: 0x000444A2
Loc: 256
+ EquipLv: 40
Refine: false
- View: 103
+ View: 40
Trade: {
nodrop: true
notrade: true
@@ -122783,16 +123443,23 @@ item_db: (
nomail: true
noauction: true
}
+ Script: <"
+ bonus bBaseAtk,10;
+ bonus2 bAddRace,RC_Player,20;
+ bonus2 bResEff,Eff_Freeze,25;
+ bonus bUnbreakableHelm,0;
+ ">
+
},
{
Id: 18734
AegisName: "TE_WoE_Magic_Eyes"
Name: "TE WoE Magic Eyes"
Type: 5
- Buy: 0
Def: 5
Job: 0x00812201
Loc: 256
+ EquipLv: 40
Refine: false
View: 209
Trade: {
@@ -122804,6 +123471,29 @@ item_db: (
nomail: true
noauction: true
}
+ Script: <"
+ bonus bMdef,5;
+ bonus bMatk,10;
+ bonus2 bMagicAddRace,RC_Player,20;
+ bonus2 bResEff,Eff_Freeze,25;
+ bonus bUnbreakableHelm,0;
+ ">
+},
+{
+ Id: 18736
+ AegisName: "Censor_Bar_"
+ Name: "Censor Bar"
+ Type: 5
+ Buy: 20
+ Weight: 100
+ Loc: 512
+ Refine: false
+ View: 229
+ Script: <"
+ bonus bMdef,1;
+ bonus bUnbreakableHelm,0;
+ /*TODO: sc_start EFST_UNKNOWN_NAME 9999 1*/
+ ">
},
{
Id: 18737
@@ -123010,14 +123700,18 @@ item_db: (
{
Id: 18755
AegisName: "Feather_Beret_"
- Name: "Feather Beret_"
+ Name: "Feather Beret"
Type: 5
Buy: 30000
+ Weight: 600
+ Def: 1
Slots: 1
+ Job: 0xFFFFFFFE
Loc: 256
View: 224
Script: <"
bonus bMdef,1;
+ bonus bUnbreakableHelm,0;
bonus2 bAddRaceTolerance,RC_DemiPlayer,10;
bonus2 bAddRaceTolerance,RC_Player,10;
">
@@ -126958,7 +127652,6 @@ item_db: (
AegisName: "C_Feather_Beret"
Name: "Costume Feather Beret"
Type: 5
- Buy: 0
Loc: 1024
Refine: false
View: 224
@@ -132910,6 +133603,83 @@ item_db: (
">
},
{
+ Id: 20702
+ AegisName: "TE_Woe_Muffler"
+ Name: "TE Woe Muffler"
+ Type: 5
+ Def: 5
+ Loc: 4
+ EquipLv: 40
+ Refine: false
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus bMdef,5;
+ bonus bUnbreakableGarment,1;
+ bonus2 bAddRace,RC_Player,5;
+ bonus2 bMagicAddRace,RC_Player,5;
+ bonus2 bResEff,Eff_Freeze,25;
+ ">
+},
+{
+ Id: 20703
+ AegisName: "TE_Woe_Manteau"
+ Name: "TE Woe Manteau"
+ Type: 5
+ Def: 10
+ Job: 0x000444A2
+ Loc: 4
+ Refine: false
+ EquipLv: 40
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus bUnbreakableGarment,1;
+ bonus2 bMagicAddRace,RC_Player,10;
+ bonus2 bResEff,Eff_Freeze,25;
+ ">
+},
+{
+ Id: 20704
+ AegisName: "TE_Woe_Magic_Manteau"
+ Name: "TE Woe Magic Manteau"
+ Type: 5
+ Def: 5
+ Job: 0x00818315
+ Loc: 4
+ Refine: false
+ EquipLv: 40
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus bMdef,5;
+ bonus bUnbreakableGarment,1;
+ bonus2 bMagicAddRace,RC_Player,10;
+ bonus2 bResEff,Eff_Freeze,25;
+ ">
+},
+{
Id: 20706
AegisName: "Amistr_Bag"
Name: "Amistr Bag"
@@ -132951,6 +133721,26 @@ item_db: (
">
},
{
+ Id: 20709
+ AegisName: "Mana_Manteau"
+ Name: "Mana Manteau"
+ Type: 5
+ Loc: 4
+ EquipLv: [1, 100]
+ Refine: false
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <" bonus2 bExpAddRace,RC_All,10; ">
+},
+{
Id: 20710
AegisName: "Modified_Angel's_Cardigan"
Name: "Modified Angel's Cardigan"
@@ -133519,8 +134309,8 @@ item_db: (
},
{
Id: 21006
- AegisName: "TE_WoE_Two-Handed_Sword"
- Name: "TE WoE Two-Handed Sword"
+ AegisName: "TE_Woe_Two_Hand_Sword"
+ Name: "TE WoE Two Hand Sword"
Type: 4
Atk: 150
Range: 1
@@ -133540,7 +134330,7 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddEff,Eff_Bleeding,300;
+ bonus2 bAddEff,Eff_Bleeding,1000;
bonus2 bAddRace,RC_DemiPlayer,40;
">
},
@@ -134043,6 +134833,26 @@ item_db: (
">
},
{
+ Id: 22012
+ AegisName: "Mana_Boots"
+ Name: "Mana Boots"
+ Type: 5
+ Loc: 64
+ EquipLv: [1, 100]
+ Refine: false
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <" bonus2 bExpAddRace,RC_All,10; ">
+},
+{
Id: 22014
AegisName: "Enhanced_Variant_Shoes"
Name: "Enhanced Variant Shoes"
diff --git a/db/re/item_group.conf b/db/re/item_group.conf
index ed86966b6..ddc5b28e2 100644
--- a/db/re/item_group.conf
+++ b/db/re/item_group.conf
@@ -4804,3 +4804,26 @@ Pumpkin_Candy_Holder: (
"C_There_Is_Something",
"Witch_Shoes"
)
+Siege_Kit_Box: (
+ ("Old_Blue_Box", 30),
+ "Old_Card_Album",
+ ("Old_Violet_Box", 30),
+ "Union_Of_Tribe",
+ "Bloody_Dead_Branch",
+ ("Sg_Violet_Potion_Box", 28),
+ ("Sg_White_Potion_Box", 28),
+ ("Sg_Blue_Potion_Box", 28),
+ ("Snow_Flip", 7),
+ ("Peony_Mommy", 7),
+ ("Slapping_Herb", 7),
+ ("Yggdrasil_Dust", 7),
+ "Frost_Giant_Blood",
+ "Golem_Stone",
+ ("Elf_Tear_Stun", 4),
+ ("Elf_Tear_Stone_Curse", 4),
+ ("Elf_Tear_Freezing", 4),
+ ("Elf_Tear_Sleep", 4),
+ ("Elf_Tear_Curse", 4),
+ ("Elf_Tear_Silence", 4),
+ ("Elf_Tear_Blind", 4)
+)
diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf
index 553602a33..df223d139 100644
--- a/db/re/map_zone_db.conf
+++ b/db/re/map_zone_db.conf
@@ -115,6 +115,8 @@ zones: (
Woe_Violet_Potion: true
Woe_White_Potion: true
Woe_Blue_Potion: true
+ TE_White_Potion: true
+ TE_White_Slim_Potion: true
Siege_Plate: true
Siege_Suits: true
Siege_Robe: true
@@ -323,6 +325,8 @@ zones: (
Woe_Violet_Potion: true
Woe_White_Potion: true
Woe_Blue_Potion: true
+ TE_White_Potion: true
+ TE_White_Slim_Potion: true
Siege_Plate: true
Siege_Suits: true
Siege_Robe: true
@@ -419,6 +423,15 @@ zones: (
}
},
{
+ name: "WoE TE"
+ inherit: ( "GvG" ) /* will import all gvg has */
+
+ disabled_items: {
+ TE_White_Potion: false
+ TE_White_Slim_Potion: false
+ }
+},
+{
name: "Sealed Shrine"
disabled_skills: {
@@ -488,6 +501,8 @@ zones: (
Woe_Violet_Potion: true
Woe_White_Potion: true
Woe_Blue_Potion: true
+ TE_White_Potion: true
+ TE_White_Slim_Potion: true
Siege_Plate: true
Siege_Suits: true
Siege_Robe: true
diff --git a/db/re/skill_require_db.txt b/db/re/skill_require_db.txt
index ed9f94b47..11b345e68 100644
--- a/db/re/skill_require_db.txt
+++ b/db/re/skill_require_db.txt
@@ -114,7 +114,7 @@
77,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PR_TURNUNDEAD#ƒ^?ƒ“ƒAƒ“ƒfƒbƒh#
78,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PR_LEXAETERNA#ƒŒƒbƒNƒXƒG?ƒeƒ‹ƒi#
79,0,0,40:42:44:46:48:50:52:54:56:58,0,0,0,99,0,0,none,0,717,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PR_MAGNUS#ƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€#
-80,0,0,75,0,0,0,99,0,0,none,0,717,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#ƒtƒ@ƒCƒA?ƒsƒ‰?#
+80,0,0,75,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#ƒtƒ@ƒCƒA?ƒsƒ‰?#
81,0,0,35:37:39:41:43:45:47:49:51:53,0,0,0,99,0,0,sight,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_SIGHTRASHER#ƒTƒCƒgƒ‰ƒbƒVƒƒ?#
83,0,0,20:24:30:34:40:44:50:54:60:64,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_METEOR#ƒƒeƒIƒXƒg?ƒ€#
84,0,0,20:23:26:29:32:35:38:41:44:47,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_JUPITEL#ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_?#
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 1f6c40996..ef4816889 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -1201,11 +1201,14 @@ contain three hexadecimal numbers representing colors as if they were HTML
colors - ^FF0000 is bright red, ^00FF00 is bright green, ^0000FF is bright
blue, ^000000 is black. ^FF00FF is a pure magenta, but it's also a color
that is considered transparent whenever the client is drawing windows on
-screen, so printing text in that color will have kind of a weird effect.
-Once you've set a text's color to something, you have to set it back to
-black unless you want all the rest of the text be in that color:
+screen, so printing text in that color will have kind of a weird effect.
+You may also use C_ constants accompany with "F_MesColor" function for the
+color effect, see the full list of the available ones in 'db/const.txt'
+under 'C_'. Once you've set a text's color to something, you have to set
+it back to black unless you want all the rest of the text be in that color:
mes "This is ^FF0000 red ^000000 and this is ^00FF00 green, ^000000 so.";
+ mes callfunc("F_MesColor", C_BLUE) +"This message is now in BLUE";
Notice that the text coloring is handled purely by the client. If you use
non-English characters, the color codes might get screwed if they stick to
@@ -4088,18 +4091,20 @@ Note: rid2name may not produce correct character names since rid means
---------------------------------------
+*message <account ID>,"<message>";
*message "<character name>","<message>";
That command will send a message to the chat window of the character
-specified by name. The text will also appear above the head of that
-character. It will not be seen by anyone else.
+specified by account ID or name. The text will also appear above the head
+of that character. It will not be seen by anyone else.
---------------------------------------
-*dispbottom "<message>";
+*dispbottom "<message>"{,<color>};
-This command will send the given message into the invoking character's
-chat window.
+This command will send the given message into the invoking character's
+chat window. The color format is in RGB (0xRRGGBB), and default to green
+if <color> field is left out.
---------------------------------------
@@ -6591,7 +6596,7 @@ client and appears always green.
This command will broadcast a message to all or most players, similar to
@kami/@kamib GM commands.
- announce "This will be shown to everyone at all in yellow.",0;
+ announce "This will be shown to everyone at all in yellow.", bc_all;
The region the broadcast is heard in (target), source of the broadcast and
the color the message will come up as is determined by the flags.
@@ -6628,13 +6633,17 @@ special flag is ignored. Optional parameters may not work well (or at all)
depending on a game client used.
The color parameter is a single number which can be in hexadecimal
-notation.
+notation. C_ constant can also be used for color effects, see the full list
+of the available ones in 'db/const.txt' under 'C_'.
For example:
- announce "This will be shown to everyone at all in green.",bc_all,0x00FF00;
+ announce "This announcement will be shown to everyone in green.",bc_all,0x00FF00;
Will display a global announce in green. The color format is in RGB
(0xRRGGBB).
+Another example:
+ announce "This announcement will shown to everyone in purple.",bc_all,C_PURPLE;
+
In official scripts only two font-weights (types) are used:
- normal (FW_NORMAL = 400, default),
- bold (FW_BOLD = 700).
@@ -8000,17 +8009,19 @@ Breaks a string up into substrings based on the specified delimiter.
Substrings will be stored within the specified string array. Only the 1st
char of the delimiter parameter will be used. If an empty string is passed
as a delimiter, the string will be placed in the array in its original
-form, without any changes.
+form, without any changes. Return the number of elements written to
+<dest_array>.
Example:
- explode(.@my_array$, "Explode:Test:1965:red:PIE", ":");
+ .@num_elements = explode(.@my_array$, "Explode:Test:1965:red:PIE", ":");
//.@my_array$ contents will be...
//.@my_array$[0]: "Explode"
//.@my_array$[1]: "Test"
//.@my_array$[2]: "1965"
//.@my_array$[3]: "red"
//.@my_array$[4]: "PIE"
+ //.@num_elements: 5
---------------------------------------
diff --git a/npc/mapflag/zone.txt b/npc/mapflag/zone.txt
index a405934a2..1b3ddc76f 100644
--- a/npc/mapflag/zone.txt
+++ b/npc/mapflag/zone.txt
@@ -131,3 +131,19 @@ umbala mapflag zone Towns
veins mapflag zone Towns
xmas mapflag zone Towns
yuno mapflag zone Towns
+
+// WoE:TE
+te_prt_gld mapflag zone WoE TE
+te_prtcas01 mapflag zone WoE TE
+te_prtcas02 mapflag zone WoE TE
+te_prtcas03 mapflag zone WoE TE
+te_prtcas04 mapflag zone WoE TE
+te_prtcas05 mapflag zone WoE TE
+te_alde_gld mapflag zone WoE TE
+te_aldecas1 mapflag zone WoE TE
+te_aldecas2 mapflag zone WoE TE
+te_aldecas3 mapflag zone WoE TE
+te_aldecas4 mapflag zone WoE TE
+te_aldecas5 mapflag zone WoE TE
+teg_dun01 mapflag zone WoE TE
+teg_dun02 mapflag zone WoE TE
diff --git a/npc/merchants/alchemist.txt b/npc/merchants/alchemist.txt
index ee5663232..16ccccd65 100644
--- a/npc/merchants/alchemist.txt
+++ b/npc/merchants/alchemist.txt
@@ -36,7 +36,7 @@
//================= Description ===========================================
//= Merchants for Alchemist Materials and Manuals.
//================= Current Version =======================================
-//= 1.8
+//= 1.9
//=========================================================================
alde_alche,24,188,3 script Guild Dealer 2_M_ALCHE,{
@@ -53,18 +53,18 @@ alde_alche,24,188,3 script Guild Dealer 2_M_ALCHE,{
mes "Alchemist Union.";
mes "How can I assist you today?";
next;
- switch(select("Purchase materials.:Purchase a production manual.:Quit.")) {
+ switch (select("Purchase materials.:Purchase a production manual.:Quit.")) {
case 1:
mes "[Gever Al Sharp]";
mes "What would you like?";
next;
- if (select("Medicine Bowl - 8 Zeny:Cancel.") == 1) {
+ if (select("Medicine Bowl - " + (RENEWAL ? "250z" : "8 Zeny") +":Cancel.") == 1) {
mes "[Gever Al Sharp]";
mes "How many do you want?";
mes "Enter '0' if you want to quit.";
next;
while(1) {
- input .@input,0,2001;
+ input .@input, 0, 2001;
if (.@input == 0) {
mes "[Gever Al Sharp]";
mes "The deal was cancelled.";
@@ -81,7 +81,11 @@ alde_alche,24,188,3 script Guild Dealer 2_M_ALCHE,{
break;
}
}
- .@sell = .@input * 8;
+ if (RENEWAL) {
+ .@sell = .@input * 250;
+ } else {
+ .@sell = .@input * 8;
+ }
.@item_weight = .@input * 10;
if (Zeny < .@sell) {
mes "[Gever Al Sharp]";
@@ -118,30 +122,30 @@ alde_alche,24,188,3 script Guild Dealer 2_M_ALCHE,{
mes "What do you need?";
mes "Manuals are generally 100,000 zeny. But there are a couple of special manuals that will cost more.";
next;
- switch(select("Potion Creation Guide:Alcohol Creation Guide:Bottle Grenade Creation Guide:Acid Bottle Creation Guide:Plant Bottle Creation Guide:Marine Sphere Bottle Creation Guide:Glistening Coat Creation Guide:Condensed Potion Creation Guide:Cancel Deal.")) {
+ switch (select("Potion Creation Guide:Alcohol Creation Guide:Bottle Grenade Creation Guide:Acid Bottle Creation Guide:Plant Bottle Creation Guide:Marine Sphere Bottle Creation Guide:Glistening Coat Creation Guide:Condensed Potion Creation Guide:Cancel Deal.")) {
case 1:
- callsub S_SellManual,7144,100000; //Normal_Potion_Book
+ callsub S_SellManual, Normal_Potion_Book, 100000;
break;
case 2:
- callsub S_SellManual,7127,100000; //Alcol_Create_Book
+ callsub S_SellManual, Alcol_Create_Book, 100000;
break;
case 3:
- callsub S_SellManual,7128,100000; //FireBottle_Create_Book
+ callsub S_SellManual, FireBottle_Create_Book, 100000;
break;
case 4:
- callsub S_SellManual,7129,100000; //Acid_Create_Book
+ callsub S_SellManual, Acid_Create_Book, 100000;
break;
case 5:
- callsub S_SellManual,7130,100000; //Plant_Create_Book
+ callsub S_SellManual, Plant_Create_Book, 100000;
break;
case 6:
- callsub S_SellManual,7131,100000; //Mine_Create_Book
+ callsub S_SellManual, Mine_Create_Book, 100000;
break;
case 7:
- callsub S_SellManual,7132,100000; //Coating_Create_Book
+ callsub S_SellManual, Coating_Create_Book, 100000;
break;
case 8:
- callsub S_SellManual,7133,240000; //Slim_Potion_Create_Book
+ callsub S_SellManual, Slim_Potion_Create_Book, 240000;
break;
case 9:
mes "[Gever Al Sharp]";
@@ -168,8 +172,8 @@ S_SellManual:
close;
}
mes "[Gever Al Sharp]";
- mes ""+getitemname(getarg(0))+"?";
- mes "That'll be "+getarg(1)+" zeny.";
+ mes ""+ getitemname(getarg(0)) +"?";
+ mes "That'll be "+ getarg(1) +" zeny.";
next;
if (select("Purchase.:Quit.") == 1) {
Zeny -= getarg(1);
diff --git a/npc/merchants/shops.txt b/npc/merchants/shops.txt
index 381399589..d93baa57c 100644
--- a/npc/merchants/shops.txt
+++ b/npc/merchants/shops.txt
@@ -46,7 +46,7 @@
//================= Description ===========================================
//= Town shop NPCs.
//================= Current Version =======================================
-//= 3.5
+//= 3.5.1
//=========================================================================
//== Alberta ===============================================
@@ -208,13 +208,15 @@ OnInit:
sellitem Life_Force_Pot;
sellitem Yggdrasilberry_Dew;
sellitem Seed_Of_Life;
- sellitem Melange_Pot;
- sellitem Cooking_Skewer;
- sellitem Black_Charcoal;
- sellitem Large_Cookpot;
- sellitem Fine_Noodle;
- sellitem Cool_Gravy;
- sellitem Bottle_To_Throw;
+ if (RENEWAL) {
+ sellitem Melange_Pot;
+ sellitem Cooking_Skewer;
+ sellitem Black_Charcoal;
+ sellitem Large_Cookpot;
+ sellitem Fine_Noodle;
+ sellitem Cool_Gravy;
+ sellitem Bottle_To_Throw;
+ }
}
//== Amatsu ================================================
diff --git a/npc/other/Global_Functions.txt b/npc/other/Global_Functions.txt
index 9fb4949fa..8f7899555 100644
--- a/npc/other/Global_Functions.txt
+++ b/npc/other/Global_Functions.txt
@@ -353,3 +353,11 @@ function script F_ShuffleNumbers {
}
return .@count;
}
+
+//== Function F_MesColor ===================================
+// Function to colorize npc dialog without having to memorize the color code
+// Examples:
+// mes callfunc("F_MesColor", C_BLUE) +"This message is now in BLUE";
+function script F_MesColor {
+ return sprintf("^%06X", min(getarg(0), 0xFFFFFF));
+}
diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql
index 641ecfafd..65562d6be 100644
--- a/sql-files/item_db_re.sql
+++ b/sql-files/item_db_re.sql
@@ -700,7 +700,7 @@ REPLACE INTO `item_db` VALUES ('1295','Blood_Tears_','Blood Tears ','4','20','10
REPLACE INTO `item_db` VALUES ('1296','Metal_Katar','Metal Katar','4','20','10','0','75','0','0','1','1','4096','63','2','34','3','0',NULL,'1','16','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,(getrefine()*5); bonus bCritAtkRate,getrefine(); .@val = min(BaseLevel/10, 12); if (.@val > 2) { bonus bBaseAtk,((.@val-2)*5); }','','');
REPLACE INTO `item_db` VALUES ('1297','Inverse_Scale_','Inverse Scale','4','20','10','1500','140','0','0','1','2','4096','58','2','34','4','55',NULL,'1','16','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Holy; bonus3 bAutoSpell,NPC_DRAGONFEAR,1,30;','','');
REPLACE INTO `item_db` VALUES ('1298','Shiver_Katar','Shiver Katar','4','60000','30000','2700','110','0','0','1','2','4096','56','2','34','4','105',NULL,'1','16','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,getrefine();','','');
-REPLACE INTO `item_db` VALUES ('1299','TE_WoE_Katar','TE WoE Katar','4','20','10','0','120','0','0','1','0','4096','63','2','34','3','40',NULL,'0','16','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Bleeding,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1299','TE_WoE_Katar','TE WoE Katar','4','0','0','0','120','0','0','1','0','4096','63','2','34','3','40',NULL,'0','16','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Bleeding,1000;','','');
REPLACE INTO `item_db` VALUES ('1301','Axe','Axe','4','500','250','800','38','0','0','1','3','283811','63','2','2','1','3',NULL,'1','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1302','Axe_','Axe','4','500','250','800','38','0','0','1','4','283811','63','2','2','1','3',NULL,'1','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1303','Axe__','Axe','4','500','250','800','38','0','0','1','0','283811','63','2','2','1','3',NULL,'1','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -719,7 +719,7 @@ REPLACE INTO `item_db` VALUES ('1315','F_Right_Epsilon_C','Right Epsilon','4','1
REPLACE INTO `item_db` VALUES ('1316','Adventure_Axe','Adventure Axe','4','0','0','0','100','0','0','1','0','263200','63','2','2','1','0',NULL,'0','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1317','Academy_Axe','Academy Axe','4','0','0','1600','130','0','0','1','1','263200','63','2','2','1','0',NULL,'1','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1318','Dofle_Axe','Deflation Axe','4','50000','25000','1800','180','0','0','1','2','414946','63','2','2','4','105',NULL,'1','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0;','','');
-REPLACE INTO `item_db` VALUES ('1319','TE_WoE_Axe','TE WoE Axe','4','20','10','0','100','0','0','1','0','283811','63','2','2','3','40',NULL,'0','6','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1319','TE_WoE_Axe','TE WoE Axe','4','20','10','0','100','0','0','1','0','414947','63','2','2','3','40',NULL,'0','6','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,1000;','','');
REPLACE INTO `item_db` VALUES ('1323','Ru_Gold_Axe','Ru Gold Axe','4','20','10','1800','180','0','0','1','2','262144','56','2','2','3','120',NULL,'1','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,8; bonus bInt,8;','','');
REPLACE INTO `item_db` VALUES ('1351','Battle_Axe','Battle Axe','4','5400','2700','1500','80','0','0','1','3','279714','63','2','34','1','3',NULL,'1','7','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1352','Battle_Axe_','Battle Axe','4','5400','2700','1500','80','0','0','1','4','279714','63','2','34','1','3',NULL,'1','7','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -769,7 +769,7 @@ REPLACE INTO `item_db` VALUES ('1395','Velum_Buster','Vellum Buster','4','20','1
REPLACE INTO `item_db` VALUES ('1396','Velum_Guillotine','Vellum Guillotine','4','20','10','5500','300','0','0','1','0','279714','63','2','34','4','95',NULL,'1','7','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus2 bAddRace,RC_Player,40; bonus2 bIgnoreDefRate,RC_Player,30; if(getrefine()>=6) { bonus2 bSkillAtk,NC_AXEBOOMERANG,80; bonus2 bSkillAtk,NC_POWERSWING,80; } if(getrefine()>=9) { bonus2 bAddRace,RC_Player,60; }','','');
REPLACE INTO `item_db` VALUES ('1397','Bradium_Stonehammer_','Bradium Stone Hammer','4','20','10','2700','210','0','0','1','2','1024','58','2','34','4','75',NULL,'1','7','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0;','','');
REPLACE INTO `item_db` VALUES ('1398','Metal_Two_Handed_Axe','Metal Two-Handed Axe','4','20','10','0','105','0','0','1','1','279714','63','2','34','3','0',NULL,'1','7','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bBaseAtk,(getrefine()*7); .@val = min(BaseLevel/10, 12); if (.@val > 2) { bonus bBaseAtk,((.@val-2)*5); }','','');
-REPLACE INTO `item_db` VALUES ('1399','TE_WoE_Two_Handed_Axe','TE WoE Two-Handed Axe','4','20','10','0','150','0','0','1','0','279714','63','2','34','3','40',NULL,'0','7','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Stun,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1399','TE_WoE_Two_Handed_Axe','TE WoE Two-Handed Axe','4','20','10','0','150','0','0','1','0','279714','63','2','34','3','40',NULL,'0','7','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Stun,1000;','','');
REPLACE INTO `item_db` VALUES ('1400','Spear_of_Vicious_Mind','Spear of Vicious Mind','4','20','10','1400','140','0','0','3','1','16514','63','2','2','4','160',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2);','','');
REPLACE INTO `item_db` VALUES ('1401','Javelin','Javelin','4','150','75','700','28','0','0','3','3','16514','63','2','2','1','4',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1402','Javelin_','Javelin','4','150','75','700','28','0','0','3','4','16514','63','2','2','1','4',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -807,7 +807,7 @@ REPLACE INTO `item_db` VALUES ('1433','Imperial_Spear','Imperial Spear','4','20'
REPLACE INTO `item_db` VALUES ('1434','P_Sphere1','Eden Group Spear I','4','0','0','0','165','0','0','3','0','16514','63','2','2','3','60',NULL,'0','4','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1435','Cannon_Spear','Cannon Spear','4','56000','28000','1600','180','0','0','3','1','16384','56','2','2','4','100',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,-100; bonus2 bSkillAtk,LG_CANNONSPEAR,10; bonus bBaseAtk,(getrefine()/3);','','');
REPLACE INTO `item_db` VALUES ('1436','Velum_Spear','Vellum Spear','4','20','10','850','150','0','0','3','0','16514','63','2','2','4','95',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,60; if(getrefine()>=6) { bonus2 bSkillAtk,RK_HUNDREDSPEAR,80; bonus2 bSkillAtk,LG_PINPOINTATTACK,80; } if(getrefine()>=9) { bonus2 bAddRace,RC_Player,30; }','','');
-REPLACE INTO `item_db` VALUES ('1437','TE_WoE_Pike','TE WoE Pike','4','20','10','0','100','0','0','3','0','16514','63','2','2','3','40',NULL,'0','4','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Curse,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1437','TE_WoE_Pike','TE WoE Pike','4','20','10','0','100','0','0','3','0','16514','63','2','2','3','40',NULL,'0','4','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Curse,1000;','','');
REPLACE INTO `item_db` VALUES ('1438','Thanatos_Spear','Thanatos Spear','4','20','10','3000','150','100','0','3','1','16514','56','2','2','4','120',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('1441','Ru_Blue_Spear','Ru Blue Spear','4','20','10','1200','200','0','0','3','1','16384','63','2','2','3','100',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,5; bonus bAgi,5;','','');
REPLACE INTO `item_db` VALUES ('1443','Crimson_Spear','Crimson Spear','4','20','10','900','90','0','0','3','2','16514','63','2','2','3','70',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2); if(BaseLevel>70) { bonus bAtk,(((BaseLevel-70)/10)*5); }','','');
@@ -856,7 +856,7 @@ REPLACE INTO `item_db` VALUES ('1491','Upg_Lance','Upgrade Spear','4','20','10',
REPLACE INTO `item_db` VALUES ('1492','Velum_Glaive','Vellum Glaive','4','20','10','4500','250','0','0','3','0','16514','63','2','34','4','95',NULL,'1','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,80; if(getrefine()>=6) { bonus2 bSkillAtk,LK_SPIRALPIERCE,100; bonus2 bSkillAtk,KN_SPEARBOOMERANG,50; } if(getrefine()>=9) { autobonus2 \"{ bonus bShortWeaponDamageReturn,20; bonus bMagicDamageReturn,20; }\",100,2000,BF_WEAPON|BF_MAGIC,\"{ specialeffect2 EF_REFLECTSHIELD; }\"; }','','');
REPLACE INTO `item_db` VALUES ('1493','Metal_Lance','Metal Lance','4','20','10','0','100','0','0','3','1','16514','63','2','34','3','0',NULL,'1','5','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,(getrefine()*6); .@val = min(BaseLevel/10, 12); if (.@val > 2) { bonus bBaseAtk,((.@val-2)*5); }','','');
REPLACE INTO `item_db` VALUES ('1494','Undine_Spear','Spear Of Odin','4','50000','25000','3800','190','0','0','3','3','16514','63','2','34','4','105',NULL,'1','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Water;','','');
-REPLACE INTO `item_db` VALUES ('1495','TE_WoE_Lance','TE WoE Lance','4','20','10','0','150','0','0','3','0','16514','63','2','34','3','40',NULL,'0','5','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1495','TE_WoE_Lance','TE WoE Lance','4','0','0','0','150','0','0','3','0','16514','63','2','34','3','40',NULL,'0','5','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Blind,1000;','','');
REPLACE INTO `item_db` VALUES ('1496','Thanatos_Long_Spear','Thanatos Long Spear','4','20','10','3750','250','50','0','3','1','16514','56','2','34','4','120',NULL,'1','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('1498','Crimson_Lance','Crimson Lance','4','20','10','1750','175','0','0','3','2','16514','63','2','34','3','70',NULL,'1','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2); if(BaseLevel>70) { bonus bAtk,(((BaseLevel-70)/10)*5); }','','');
REPLACE INTO `item_db` VALUES ('1501','Club','Club','4','120','60','700','23','0','0','1','3','312755','63','2','2','1','2',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -888,7 +888,7 @@ REPLACE INTO `item_db` VALUES ('1526','Slash','Slash','4','20','10','1000','145'
REPLACE INTO `item_db` VALUES ('1527','Quadrille','Quadrille','4','20','10','900','165','0','0','1','0','33040','63','2','2','4','40',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiPlayer,10; bonus2 bAddEle,Ele_Earth,10;','','');
REPLACE INTO `item_db` VALUES ('1528','Grand_Cross','Grand Cross','4','20','10','1500','140','0','0','1','0','33040','63','2','2','4','40',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Holy; skill PR_TURNUNDEAD,3; bonus3 bAutoSpell,PR_TURNUNDEAD,3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;','','');
REPLACE INTO `item_db` VALUES ('1529','Iron_Driver','Iron Driver','4','20','10','3000','155','0','0','2','0','33024','63','2','2','3','78',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('1530','Mjolnir','Mjolnir','4','20','10','6000','350','0','0','1','0','279714','63','2','2','4','95',NULL,'0','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Wind; bonus bDex,50; bonus bStr,20; bonus bAspdRate,10; bonus3 bAutoSpell,MG_THUNDERSTORM,10,100; autobonus \"{ bonus bSplashRange,1; }\",50,10000;','','');
+REPLACE INTO `item_db` VALUES ('1530','Mjolnir','Mjolnir','4','20','10','6000','350','0','0','1','0','279714','63','2','2','4','95',NULL,'0','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,50; bonus bStr,20; bonus bAspdRate,10; bonus3 bAutoSpell,MG_THUNDERSTORM,10,100; autobonus \"{ bonus bSplashRange,1; }\",50,10000,BF_WEAPON,\"{ specialeffect2 EF_ENHANCE; }\"; bonus bUnbreakableWeapon,0;','','');
REPLACE INTO `item_db` VALUES ('1531','Spanner','Wrench','4','20','10','2500','115','0','0','1','0','33040','63','2','2','3','55',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stun,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100;','','');
REPLACE INTO `item_db` VALUES ('1532','Stunner_','Stunner','4','60000','30000','2000','140','0','0','1','2','33040','63','2','2','3','27',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Stun,1000;','','');
REPLACE INTO `item_db` VALUES ('1533','Warrior_Balmung','Warrior\'s Balmung','4','20','10','1000','170','0','0','1','0','4294967295','63','2','2','4','48',NULL,'1','8','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,5;','','');
@@ -949,7 +949,7 @@ REPLACE INTO `item_db` VALUES ('1587','Velum_Encyclopedia','Vellum Encyclopedia'
REPLACE INTO `item_db` VALUES ('1588','Metal_Book','Metal Book','4','20','10','0','45','10','0','1','1','4260096','63','2','2','3','0',NULL,'1','15','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bBaseAtk,(getrefine()*5); bonus bMatk,(getrefine()*2); .@val = min(BaseLevel/10, 12); if (.@val > 2) { bonus bBaseAtk,((.@val-2)*5); }','','');
REPLACE INTO `item_db` VALUES ('1589','Legacy_Of_Dragon_','Legacy of Dragon','4','20','10','700','130','0','0','1','2','4260096','63','2','2','4','70',NULL,'1','15','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,3; bonus bIgnoreDefRace,RC_Dragon; bonus2 bSPGainRace,RC_Dragon,10;','','');
REPLACE INTO `item_db` VALUES ('1590','Snake_Encyclopedia','Snake Encyclopedia','4','60000','30000','1500','10','110','0','1','2','4260096','63','2','2','4','105',NULL,'1','15','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bAtk,getrefine()*3; bonus bMatk,getrefine()*3;','','');
-REPLACE INTO `item_db` VALUES ('1591','TE_WoE_Book','TE WoE Book','4','20','10','0','120','0','0','1','0','4260096','63','2','2','3','40',NULL,'0','15','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bMagicAddRace,RC_Player,5; bonus bHealPower,5; bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1591','TE_WoE_Book','TE WoE Book','4','20','10','0','120','0','0','1','0','4260096','63','2','2','3','40',NULL,'0','15','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bMagicAddRace,RC_Player,5; bonus bHealPower,5; bonus2 bAddEff,Eff_Blind,1000;','','');
REPLACE INTO `item_db` VALUES ('1598','Snake_Encyclopedia_','Snake Encyclopedia','4','60000','30000','1500','10','110','0','1','3','4260096','63','2','2','4','105',NULL,'1','15','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bAtk,getrefine()*3; bonus bMatk,getrefine()*3;','','');
REPLACE INTO `item_db` VALUES ('1599','Angra_Manyu','Angra manyu','4','1','0','10','10000','10000','0','2','0','4294967295','63','2','2','1','0',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,50; bonus bBaseAtk,3300; bonus bMatkRate,200; bonus2 bHPDrainRate,1000,100; bonus2 bSPDrainRate,1000,20; bonus bHealPower,200; bonus2 bAddRace, RC_All, 100; skill WZ_STORMGUST,10; skill WZ_METEOR,10; skill WZ_VERMILION,10; skill GM_SANDMAN,1; bonus bVariableCastrate,-100; bonus bFixedCastrate,-100;','','');
REPLACE INTO `item_db` VALUES ('1600','Rod_of_Vicious_Mind','Rod of Vicious Mind','4','20','10','600','60','120','0','1','1','8487701','63','2','2','4','160',NULL,'1','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,5; bonus bMatk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,0;','','');
@@ -1019,7 +1019,7 @@ REPLACE INTO `item_db` VALUES ('1663','Staff_Of_Bordeaux_','Staff Of Bordeaux','
REPLACE INTO `item_db` VALUES ('1664','Thorn_Staff_of_Darkness','Thorn Staff of Darkness','4','20','10','700','60','160','0','1','0','99092','58','2','2','4','75',NULL,'1','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Dark; bonus bInt,3; bonus bDex,3; bonus bIgnoreMdefRate,getrefine(); bonus bDelayrate,-(getrefine()*3/2);','','');
REPLACE INTO `item_db` VALUES ('1665','Piercing_Staff_','Staff of Piercing','4','20','10','500','80','0','0','1','2','99092','58','2','2','3','70',NULL,'1','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,15; bonus bInt,4; bonus bIgnoreMdefRate,10+getrefine();','','');
REPLACE INTO `item_db` VALUES ('1666','Healing_Staff_','Staff Of Healing','4','20','10','0','10','125','0','1','2','33040','63','2','2','3','0',NULL,'0','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2);','','');
-REPLACE INTO `item_db` VALUES ('1667','TE_WoE_Staff','TE WoE Staff','4','20','10','0','50','100','0','1','0','8487700','63','2','2','3','40',NULL,'0','10','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bMagicAddRace,RC_Player,10; bonus bHealPower,5; bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1667','TE_WoE_Staff','TE WoE Staff','4','20','10','0','50','100','0','1','0','8487700','63','2','2','3','40',NULL,'0','10','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bMagicAddRace,RC_Player,10; bonus bHealPower,5; bonus2 bAddEff,Eff_Blind,1000;','','');
REPLACE INTO `item_db` VALUES ('1668','Sword_Stick','Sword Stick','4','20','10','500','120','150','0','1','2','8389120','63','2','2','4','80',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate,10;','','');
REPLACE INTO `item_db` VALUES ('1669','Thanatos_Staff','Thanatos Staff','4','20','10','1000','100','200','0','1','1','99092','56','2','2','4','120',NULL,'1','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000; bonus bHealPower,15;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('1670','RWC_Memory_Staff','RWC Memory Staff','4','20','10','500','25','30','0','1','1','8487700','63','2','2','3','0',NULL,'1','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bMatk,30*(getrefine()/3); if (getrefine()>=7) { .@val = 1; bonus4 bAutoSpell,HW_MAGICPOWER,1,10,0; } if (getrefine() >= 4) { bonus2 bMagicAddRace, RC_All, 5*(.@val+1); }','','');
@@ -1134,7 +1134,7 @@ REPLACE INTO `item_db` VALUES ('1830','Sura_Rampage','Sura\'s Rampage','4','20',
REPLACE INTO `item_db` VALUES ('1831','P_Knuckle1','Eden Group Knuckle I','4','0','0','0','120','0','0','1','0','33024','63','2','2','3','60',NULL,'0','12','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('1832','Velum_Claw','Vellum Claw','4','20','10','650','160','0','0','1','0','33024','63','2','2','4','95',NULL,'1','12','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,100; if(getrefine()>7) { bonus2 bAddRace,RC_Player,20; } if(getrefine()>9) { bonus2 bVariableCastrate,MO_EXTREMITYFIST,-100; bonus4 bAutoSpellOnSkill,MO_EXPLOSIONSPIRITS,CH_SOULCOLLECT,1,10000; bonus2 bHPLossRate,500,3000; }','','');
REPLACE INTO `item_db` VALUES ('1833','Claw_Of_Flash','Claw of Flash','4','60000','30000','400','140','0','0','1','2','33024','63','2','2','4','105',NULL,'1','12','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('1834','TE_WoE_Fist','TE WoE Fist','4','20','10','0','150','0','0','1','0','33024','63','2','2','3','40',NULL,'0','12','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1834','TE_WoE_Fist','TE WoE Fist','4','20','10','0','150','0','0','1','0','33024','63','2','2','3','40',NULL,'0','12','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,1000;','','');
REPLACE INTO `item_db` VALUES ('1835','Spartacus','Spartacus','4','20','10','600','100','0','0','1','2','33024','63','2','2','4','50',NULL,'1','12','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bAtkRate,getrefine(); if(getrefine()>9) bonus bNoSizeFix,0;','','');
REPLACE INTO `item_db` VALUES ('1836','Thanatos_Knuckles','Thanatos Knuckles','4','20','10','1600','60','100','0','1','1','32768','56','2','2','4','120',NULL,'1','12','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('1839','Crimson_Knuckle','Crimson Knuckle','4','20','10','1000','100','0','0','1','2','33024','63','2','2','3','70',NULL,'1','12','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2); if(BaseLevel>70) { bonus bAtk,(((BaseLevel-70)/10)*5); }','','');
@@ -1170,7 +1170,7 @@ REPLACE INTO `item_db` VALUES ('1928','Berserk_Guitar_I','Spirited Guitar','4','
REPLACE INTO `item_db` VALUES ('1929','Guitar_C','Guitar','4','0','0','0','177','0','0','1','0','524288','63','1','2','3','0',NULL,'0','13','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40;','','');
REPLACE INTO `item_db` VALUES ('1930','Green_Whistle','Green Whistle','4','20','10','800','170','50','0','1','1','524288','56','1','2','3','102',NULL,'1','13','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if(getrefine()>5) { bonus2 bSkillUseSP,MI_RUSH_WINDMILL,(getrefine()-5)*4; bonus2 bSkillUseSP,WM_LULLABY_DEEPSLEEP,(getrefine()-5)*4; } bonus2 bSkillVariableCast,MI_RUSH_WINDMILL,-2000; bonus2 bSkillVariableCast,WM_LULLABY_DEEPSLEEP,-2000;','','');
REPLACE INTO `item_db` VALUES ('1931','P_String_Inst1','Eden Group Guitar I','4','0','0','0','125','0','0','1','0','524288','63','1','2','3','60',NULL,'0','13','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('1932','TE_WoE_Guitar','TE WoE Guitar','4','20','10','0','100','0','0','1','0','524288','63','1','2','3','40',NULL,'0','13','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Poison,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1932','TE_WoE_Guitar','TE WoE Guitar','4','0','0','0','100','0','0','1','0','524288','63','1','2','3','40',NULL,'0','13','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Poison,1000;','','');
REPLACE INTO `item_db` VALUES ('1933','Thanatos_Violin','Thanatos Violin','4','20','10','2000','200','130','0','1','1','524288','56','1','2','4','120',NULL,'1','13','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('1934','Double_Bass','Double Bass','4','124000','62000','250','180','120','0','1','2','524288','56','1','2','3','130',NULL,'1','13','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillCooldown,WM_RANDOMIZESPELL,-2000;','','');
REPLACE INTO `item_db` VALUES ('1935','Ozs_New_Ukulele','Oz\'s New Ukulele','5','124000','62000','1000','160','0','0','1','2','524288','56','1','2','4','130',NULL,'1','13','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillUseSP,MI_RUSH_WINDMILL,-20;','','');
@@ -1216,7 +1216,7 @@ REPLACE INTO `item_db` VALUES ('1983','Rante_C','Rante Whip','4','0','0','0','17
REPLACE INTO `item_db` VALUES ('1984','Stem_Whip','Stem Whip','4','20','10','800','170','50','0','1','1','524288','56','0','2','3','102',NULL,'1','14','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if(getrefine()>5) { bonus2 bSkillUseSP,WA_SWING_DANCE,(getrefine()-5)*4; bonus2 bSkillUseSP,WM_LULLABY_DEEPSLEEP,(getrefine()-5)*4; } bonus2 bSkillVariableCast,WA_SWING_DANCE,-2000; bonus2 bSkillVariableCast,WM_LULLABY_DEEPSLEEP,-2000;','','');
REPLACE INTO `item_db` VALUES ('1985','Rosebine','Rosevine','4','20','10','1000','100','130','0','1','0','524288','56','0','2','4','110',NULL,'1','14','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2; bonus bAgi,-2; bonus3 bAutoSpell,WM_VOICEOFSIREN,1,20;','','');
REPLACE INTO `item_db` VALUES ('1986','P_Tail1','Eden Group Whip I','4','0','0','0','125','0','0','2','0','524288','63','0','2','3','60',NULL,'1','14','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('1987','TE_WoE_Rope','TE WoE Rope','4','20','10','0','100','0','0','2','0','524288','63','0','2','4','40',NULL,'0','14','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Blind,500; /* Custom IRO */','','');
+REPLACE INTO `item_db` VALUES ('1987','TE_WoE_Rope','TE WoE Rope','4','0','0','0','100','0','0','2','0','524288','63','0','2','4','40',NULL,'0','14','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Blind,1000;','','');
REPLACE INTO `item_db` VALUES ('1988','Thanatos_Whip','Thanatos Whip','4','20','10','2200','200','130','0','2','1','524288','56','0','2','4','120',NULL,'1','14','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('1989','Rhythmic_Gymnastics_Ribbon','Rhythmic Gymnastics Ribbon','5','124000','62000','300','150','120','0','2','2','524288','56','2','2','3','130',NULL,'1','13','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate,20;','','');
REPLACE INTO `item_db` VALUES ('1990','Bloody_Floral_Decoration_Microphone','Bloody Floral Decoration Microphone','5','124000','62000','1000','160','0','0','2','2','524288','56','2','2','4','130',NULL,'1','13','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillUseSP,CG_MOONLIT,-20;','','');
@@ -1244,9 +1244,9 @@ REPLACE INTO `item_db` VALUES ('2015','Upg_Staff','Upgrade Staff','4','20','10',
REPLACE INTO `item_db` VALUES ('2016','Velum_Arc_Wand','Vellum Arc Wand','4','20','10','800','110','220','0','1','0','8487700','63','2','34','4','95',NULL,'1','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus2 bMagicAddRace,RC_Player,25; bonus bIgnoreMdefRate,25; if(getrefine()>5) { bonus2 bMagicAddRace,RC_Player,15; } if(getrefine()>8) { bonus bVariableCastrate,-20; bonus bFixedCast,-200; }','','');
REPLACE INTO `item_db` VALUES ('2017','Divine_Cross_','Divine Cross','4','20','10','1500','120','210','0','1','1','33024','63','2','34','4','70',NULL,'1','23','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Holy; bonus bDex,4;','','');
REPLACE INTO `item_db` VALUES ('2018','Metal_Staff','Metal Staff','4','20','10','0','50','70','0','1','1','8487701','63','2','34','3','0',NULL,'1','23','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; if(BaseJob==Job_Wizard) bonus bMatk,15; else if(BaseJob==Job_Sage) bonus bMatk,10; bonus bMatk,(getrefine()*5); .@val = min(BaseLevel/10, 12); if (.@val > 2) { bonus bMatk,((.@val-2)*5); }','','');
-REPLACE INTO `item_db` VALUES ('2019','TE_WoE_Two_Handed_Staff','TE WoE Two-Handed Staff','4','20','10','0','50','130','0','1','0','8487701','63','2','34','3','40',NULL,'0','23','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bMagicAddRace,RC_Player,20; bonus bHealPower,5; bonus2 bAddEff,Eff_Stun,500; /* Custom IRO */','','');
-REPLACE INTO `item_db` VALUES ('2020','Jormungand','Jormungand','5','20','10','3000','200','280','0','0','0','8454656','63','2','34','4','90',NULL,'0','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,20; bonus bAtkEle,Ele_Poison; bonus3 bAddEff,Eff_Poison,500,ATF_SKILL; /* Custom IRO */ bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus bUnbreakableWeapon,1;','','');
-REPLACE INTO `item_db` VALUES ('2021','Ganbantein','Ganbantein','5','20','10','3000','200','320','0','0','0','512','56','2','34','4','90',NULL,'0','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,25; bonus bDex,25; bonus5 bAutoSpell,AB_SILENTIUM,1,500,BF_SKILL,1;/* Custom IRO */ bonus3 bAddEff,Eff_Poison,500,ATF_SKILL; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus bUnbreakableWeapon,0;','','');
+REPLACE INTO `item_db` VALUES ('2019','TE_Woe_Two_Hand_Staff','TE Woe Two Hand Staff','4','20','10','0','50','130','0','1','0','8487701','63','2','34','3','40',NULL,'0','23','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bMagicAddRace,RC_Player,20; bonus bHealPower,5; bonus2 bAddEff,Eff_Stun,1000;','','');
+REPLACE INTO `item_db` VALUES ('2020','Jormungand','Jormungand','5','20','10','3000','200','280','0','1','0','8454656','63','2','34','4','90',NULL,'0','23','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,20; bonus bAtkEle,Ele_Poison; bonus3 bAddEff,Eff_Poison,300,ATF_SKILL; bonus2 bAddEffWhenHit,Eff_Poison,100; bonus bUnbreakableWeapon,0;','','');
+REPLACE INTO `item_db` VALUES ('2021','Ganbantein','Ganbantein','5','20','10','2000','100','320','0','1','0','512','56','2','34','4','100',NULL,'0','23','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,25; bonus bDex,25; bonus5 bAutoSpell,AB_SILENTIUM,1,100,BF_MAGIC,1; bonus3 bAddEff,Eff_Poison,100,ATF_SKILL; bonus2 bAddEffWhenHit,Eff_Silence,10000; bonus bUnbreakableWeapon,0;','','');
REPLACE INTO `item_db` VALUES ('2022','Staff_Of_Geffen','Staff Of Geffen','5','20','10','1000','100','300','0','0','1','512','56','2','34','1','150',NULL,'1','10','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,20;','','');
REPLACE INTO `item_db` VALUES ('2023','Thanatos_Two-Handed_Staff','Thanatos Two-Handed Staff','4','20','10','1400','120','250','0','1','1','99092','56','2','34','4','120',NULL,'1','23','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000; bonus bHealPower,18;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('2024','Infinity_Staff','Infinity Staff','5','20','10','500','30','170','0','0','1','8454656','56','2','34','4','100',NULL,'1','23','0','0','0','0','467',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -1329,11 +1329,11 @@ REPLACE INTO `item_db` VALUES ('2174','Lumiere_Shield','Lumiere Shield','5','20'
REPLACE INTO `item_db` VALUES ('2175','Esprit_Shield','Spirit Shield','5','20','10','1300','0','0','50','0','1','4294967295','63','2','32','0','65',NULL,'1','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('2176','Dark_Book','Black Book','5','20','10','500','0','0','80','0','1','4294967295','63','2','32','0','65',NULL,'1','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5;','','');
REPLACE INTO `item_db` VALUES ('2177','Shield_Of_Death','Shield Of Death','5','20','10','2000','0','0','150','0','1','4294967295','63','2','32','0','90',NULL,'1','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Boss,2; bonus2 bSubRace,RC_NonBoss,-10;','','');
-REPLACE INTO `item_db` VALUES ('2178','TE_WoE_Buckler','TE WoE Buckler','5','20','10','0','0','0','15','0','0','4294967295','63','2','32','0','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,15; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_Player,15;','','');
-REPLACE INTO `item_db` VALUES ('2179','TE_WoE_Shield','TE WoE Shield','5','20','10','0','0','0','25','0','0','16514','63','2','32','0','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bMaxHP,200; bonus2 bSubRace,RC_Player,20;','','');
-REPLACE INTO `item_db` VALUES ('2180','TE_WoE_Magic_Guard','TE WoE Magic Guard','5','20','10','0','0','0','25','0','0','8487701','63','2','32','0','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,25; bonus bMaxSP,200; bonus2 bSubRace,RC_Player,10;','','');
-REPLACE INTO `item_db` VALUES ('2181','Hervor','Hervor','5','20','10','1500','0','0','100','0','0','4294967295','63','2','32','0','90',NULL,'0','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus2 bSubRace, RC_All, 30; bonus bUnbreakableShield,1;','','');
-REPLACE INTO `item_db` VALUES ('2182','Hervor_Alvtir','Hervor Alvtir','5','20','10','3000','0','0','150','0','0','4294967295','56','2','32','0','100',NULL,'0','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,20; bonus bMdef,10; bonus2 bAddRaceTolerance, RC_All, 30; bonus bUnbreakableShield,0; /* When you receive Melee Physical damage, chance of casting Protective Light for 60 seconds. */ /* Cancels Stun, Sleep, Curse, Stone Curse, Poison, Blind, Silence, Bleeding, Chaos, and Frozen. */ /* Protects the user against such effects for a set duration. */','','');
+REPLACE INTO `item_db` VALUES ('2178','TE_WoE_Buckler','TE WoE Buckler','5','0','0','0','0','0','15','0','0','4294967295','63','2','32','0','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,15; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_Player,15;','','');
+REPLACE INTO `item_db` VALUES ('2179','TE_WoE_Shield','TE WoE Shield','5','0','0','0','0','0','25','0','0','16514','63','2','32','0','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bMaxHP,200; bonus2 bSubRace,RC_Player,20;','','');
+REPLACE INTO `item_db` VALUES ('2180','TE_WoE_Magic_Guard','TE WoE Magic Guard','5','0','0','0','0','0','5','0','0','8487701','63','2','32','0','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,25; bonus bMaxSP,200; bonus2 bSubRace,RC_Player,10;','','');
+REPLACE INTO `item_db` VALUES ('2181','Hervor','Hervor','5','20','10','1500','0','0','100','0','0','4294967295','63','2','32','0','90',NULL,'0','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield,1;','','');
+REPLACE INTO `item_db` VALUES ('2182','Hervor_Alvitr','Hervor Alvitr','5','20','10','3000','0','0','150','0','0','4294967295','56','2','32','0','100',NULL,'0','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,20; bonus bMdef,10; bonus2 bAddRaceTolerance,RC_All,30; /* TODO: bonus3 bAutoSpellWhenHit,\"ALL_RAY_OF_PROTECTION\",1,50; */ bonus bUnbreakableShield,1;','','');
REPLACE INTO `item_db` VALUES ('2183','Adv_Angel\'s_Safeguard','Advanced Angelic Guard','5','10000','5000','400','0','0','30','0','1','1','47','2','32','0','99',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRaceTolerance,RC_Demon,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Poison,5; bonus2 bSubEle,Ele_Ghost,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5; bonus2 bSubEle,Ele_Undead,5;','','');
REPLACE INTO `item_db` VALUES ('2185','Magic_Reflector','Magic Reflector','5','20','10','1000','0','0','50','0','1','4294967295','63','2','32','0','99',NULL,'0','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,10; bonus bMagicDamageReturn,3+((getrefine()>=9)?3:0);','','');
REPLACE INTO `item_db` VALUES ('2186','Revised_Encyclopedia','Revised Encyclopedia','5','20','10','1000','0','0','50','0','1','4260096','63','2','32','0','99',NULL,'1','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,5; bonus bInt,3; bonus bDex,2; bonus bCritical,3; if (getrefine()>6) bonus bCritical,2; if (getrefine()>8) bonus bMatk,5;','','');
@@ -1550,7 +1550,7 @@ REPLACE INTO `item_db` VALUES ('2406','Boots_','Boots','5','18000','9000','600',
REPLACE INTO `item_db` VALUES ('2407','Chrystal_Pumps','Crystal Pumps','5','20','10','100','0','0','5','0','0','2147483646','63','0','64','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,10; bonus bLuk,5;','','');
REPLACE INTO `item_db` VALUES ('2408','Cuffs','Shackles','5','5000','2500','3000','0','0','18','0','0','4294967295','63','2','64','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('2409','Spiky_Heel','High Heels','5','8500','4250','600','0','0','10','0','0','2147483646','63','2','64','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5;','','');
-REPLACE INTO `item_db` VALUES ('2410','Sleipnir','Sleipnir','5','20','10','3500','0','0','40','0','0','4294967295','63','2','64','0','94',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableShoes,0; bonus bMdef,10; bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bSPrecovRate,25; bonus bSpeedRate,25; bonus bInt,25;','','');
+REPLACE INTO `item_db` VALUES ('2410','Sleipnir','Sleipnir','5','20','10','3500','0','0','40','0','0','4294967295','63','2','64','0','94',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableShoes,0; bonus bMdef,10; bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bSPrecovRate,15; bonus bSpeedRate,25; bonus bInt,25;','','');
REPLACE INTO `item_db` VALUES ('2411','Grave','Greaves','5','48000','24000','750','0','0','27','0','0','16512','63','2','64','0','65',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('2412','Grave_','Greaves','5','54000','27000','750','0','0','27','0','1','16512','63','2','64','0','65',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('2413','Safty_Boots','Safety Boots','5','34000','17000','350','0','0','22','0','0','16514','63','2','64','0','30',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -1635,9 +1635,9 @@ REPLACE INTO `item_db` VALUES ('2492','Bayani_Bangungot_Boots','Bangungot Boots(
REPLACE INTO `item_db` VALUES ('2493','Goibne\'s_Combat_Boots_','Goibne\'s Greaves','5','30000','15000','700','0','0','13','0','1','2147483646','63','2','64','0','54',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5;','','');
REPLACE INTO `item_db` VALUES ('2494','Chrystal_Pumps_','Crystal Pumps','5','20','10','100','0','0','5','0','1','2147483646','63','0','64','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,10; bonus bLuk,5;','','');
REPLACE INTO `item_db` VALUES ('2495','Egir_Shoes','Aegir Shoes','5','200000','100000','300','0','0','13','0','1','4294967295','63','2','64','0','110',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) bonus bMaxHP, BaseLevel * 5; else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) bonus bMaxSP, JobLevel * 2;','','');
-REPLACE INTO `item_db` VALUES ('2496','TE_WoE_Shoes','TE WoE Shoes','5','20','10','0','0','0','5','0','0','4294967295','63','2','64','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,150; bonus bMaxSP,150; bonus2 bAddRace,RC_Player,5; bonus2 bMagicAddRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,2500;','','');
-REPLACE INTO `item_db` VALUES ('2497','TE_WoE_Boots','TE WoE Boots','5','20','10','0','0','0','10','0','0','16514','63','2','64','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,200; bonus bMaxSP,100; bonus2 bAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,2500;','','');
-REPLACE INTO `item_db` VALUES ('2498','TE_WoE_Magic_Sandals','TE WoE Magic Sandals','5','20','10','0','0','0','5','0','0','8487701','63','2','64','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bMaxHP,100; bonus bMaxSP,200; bonus2 bMagicAddRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,2500;','','');
+REPLACE INTO `item_db` VALUES ('2496','TE_WoE_Shoes','TE WoE Shoes','5','0','0','0','0','0','5','0','0','4294967295','63','2','64','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bMaxHP,150; bonus bMaxSP,150; bonus2 bAddRace,RC_Player,5; bonus2 bMagicAddRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,2500;','','');
+REPLACE INTO `item_db` VALUES ('2497','TE_WoE_Boots','TE WoE Boots','5','0','0','0','0','0','10','0','0','279714','63','2','64','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,200; bonus bMaxSP,100; bonus2 bAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,2500;','','');
+REPLACE INTO `item_db` VALUES ('2498','TE_WoE_Magic_Sandal','TE WoE Magic Sandal','5','0','0','0','0','0','5','0','0','8487701','63','2','64','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bMaxHP,100; bonus bMaxSP,200; bonus2 bMagicAddRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,2500;','','');
REPLACE INTO `item_db` VALUES ('2499','Temporal_Boots','Temporal Boots','5','20','10','600','0','0','20','0','0','4294967295','63','2','64','0','10',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,300+((getrefine()/3)*100); bonus bMaxSP,30+((getrefine()/3)*10);','','');
REPLACE INTO `item_db` VALUES ('2501','Hood','Hood','5','1000','500','200','0','0','4','0','0','4294967295','63','2','4','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('2502','Hood_','Hood','5','1000','500','200','0','0','4','0','1','4294967295','63','2','4','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -1763,8 +1763,8 @@ REPLACE INTO `item_db` VALUES ('2625','Brooch_','Brooch','5','30000','15000','20
REPLACE INTO `item_db` VALUES ('2626','Rosary_','Rosary','5','15000','7500','200','0','0','0','0','1','2147483646','63','2','136','0','90',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,3; bonus bLuk,1;','','');
REPLACE INTO `item_db` VALUES ('2627','Belt','Belt','5','20000','10000','1200','0','0','0','0','1','4294967295','63','2','136','0','25',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('2628','Novice_Armlet','Novice Armlet','5','400','200','200','0','0','0','0','1','1','47','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('2629','Magingiorde','Magingiorde','5','20','10','8000','0','0','2','0','0','4294967295','63','2','136','0','94',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,40+BaseLevel/5; bonus bMdef,7; if(readparam(bStr)>=120) { bonus2 bAddRace,RC_Boss,10; }','','');
-REPLACE INTO `item_db` VALUES ('2630','Brysinggamen','Brysinggamen','5','20','10','1500','0','0','1','0','0','4294967295','63','2','136','0','94',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6; bonus bStr,6; bonus bAgi,6; bonus bVit,6; bonus bInt,10; bonus bLuk,10; bonus bMdef,5; bonus bHealPower,6;','','');
+REPLACE INTO `item_db` VALUES ('2629','Magingiorde','Magingiorde','5','20','10','8000','0','0','2','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,40+BaseLevel/5; bonus bMdef,7; if(readparam(bStr)>=120) { bonus2 bAddRace,RC_Boss,10; }','','');
+REPLACE INTO `item_db` VALUES ('2630','Brysinggamen','Brysinggamen','5','20','10','1500','0','0','1','0','0','4294967295','63','2','136','0','94',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6; bonus bStr,6; bonus bAgi,6; bonus bVit,6; bonus bInt,10; bonus bLuk,10; bonus bMdef,5;','','');
REPLACE INTO `item_db` VALUES ('2631','First_Age_Ring','Celebration Ring','5','1','0','10','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('2632','Korean_Trinket','Korean Trinket','5','125000','62500','100','0','0','1','0','0','2147483646','63','2','136','0','65',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1; bonus bDex,1; bonus bLuk,1;','','');
REPLACE INTO `item_db` VALUES ('2633','Jade_Ring','Jade Ring','5','204000','102000','100','0','0','0','0','0','2147483646','63','2','136','0','80',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2; bonus bInt,1;','','');
@@ -2067,10 +2067,14 @@ REPLACE INTO `item_db` VALUES ('2936','Recovery_Ring','Rings of Recovery','5','2
REPLACE INTO `item_db` VALUES ('2940','Ninja_Manual','Ninja Tutorial','5','0','0','100','0','0','0','0','0','1','47','2','136','0','1','12','0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,100; skill NJ_UTSUSEMI,1; skill NJ_KOUENKA,1; skill NJ_SYURIKEN,1;','','');
REPLACE INTO `item_db` VALUES ('2941','Gunslinger_Manual','Gunslinger Tutorial','5','0','0','100','0','0','0','0','0','1','47','2','136','0','1','12','0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,100; skill GS_GLITTERING,1; skill GS_ADJUSTMENT,1; skill GS_MADNESSCANCEL,1; skill GS_INCREASING,1;','','');
REPLACE INTO `item_db` VALUES ('2942','Taekwon_Manual','Taekwon Tutorial','5','0','0','100','0','0','0','0','0','1','47','2','136','0','1','12','0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,100; skill TK_SEVENWIND,4; skill TK_JUMPKICK,5;','','');
-REPLACE INTO `item_db` VALUES ('2944','TE_Ring_of_Protection','TE Ring of Protection','5','20','10','0','0','0','0','0','0','4294967295','63','2','136','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,100; bonus2 bAddRaceTolerance,RC_Player,5;','','');
-REPLACE INTO `item_db` VALUES ('2945','TE_Rage_Ring','TE Rage Ring','5','20','10','0','0','0','0','0','0','4294967295','63','2','136','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,5; bonus2 bMagicAddRace,RC_Player,5;','','');
-REPLACE INTO `item_db` VALUES ('2946','TE_Defiance_Ring','TE Defiance Ring','5','20','10','0','0','0','0','0','0','4294967295','63','2','136','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus2 bAddRaceTolerance,RC_Player,5;','','');
+REPLACE INTO `item_db` VALUES ('2944','TE_Ring_of_Protection','TE Ring of Protection','5','0','0','0','0','0','0','0','0','4294967295','63','2','136','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,100; bonus2 bAddRaceTolerance,RC_Player,5;','','');
+REPLACE INTO `item_db` VALUES ('2945','TE_Ring_Of_Rage','TE Rage Of Ring','5','0','0','0','0','0','0','0','0','4294967295','63','2','136','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,5; bonus2 bMagicAddRace,RC_Player,5;','','');
+REPLACE INTO `item_db` VALUES ('2946','TE_Ring_Of_Defiance','TE Ring Of Defiance','5','0','0','0','0','0','0','0','0','4294967295','63','2','136','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus2 bAddRaceTolerance,RC_Player,5;','','');
REPLACE INTO `item_db` VALUES ('2950','Rune_Ring','Rune Ring','5','0','0','0','0','0','0','0','0','4294967295','63','2','136','0','1','100','0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','bonus2 bExpAddRace, RC_All, 10;','','');
+REPLACE INTO `item_db` VALUES ('2951','Kvasir_Ring_Blue','Kvasir Ring Blue','5','20000','10000','100','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,30; skill ECL_SNOWFLIP,1;','','');
+REPLACE INTO `item_db` VALUES ('2952','Kvasir_Ring_Red','Kvasir Ring Red','5','20000','10000','100','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,30; skill \"ECL_PEONYMAMY\",1;','','');
+REPLACE INTO `item_db` VALUES ('2953','Kvasir_Ring_Green','Kvasir Ring Green','5','20000','10000','100','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,100; skill \"ECL_SADAGUI\",1;','','');
+REPLACE INTO `item_db` VALUES ('2954','Kvasir_Ring_Brown','Kvasir Ring Brown','5','20000','10000','100','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,100; skill \"ECL_SEQUOIADUST\",1;','','');
REPLACE INTO `item_db` VALUES ('2959','Fidelity_Necklace','Fidelity Necklace','5','20','10','300','0','0','0','0','1','4294967295','63','2','136','0','50',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2; bonus2 bSubRace,RC_Brute,3;','','');
REPLACE INTO `item_db` VALUES ('2960','Badge_Of_Manny','Badge Of Manny','5','20','10','200','0','0','0','0','1','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,1;','','');
REPLACE INTO `item_db` VALUES ('2963','Physical_Enhancer_Ring','Physical Enhancer Ring','5','20','10','100','0','0','0','0','1','4294967295','63','2','136','0','90',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,5;','','');
@@ -4389,10 +4393,24 @@ REPLACE INTO `item_db` VALUES ('6583','3rd_Test_Pass','3rd Test Pass','3','0','0
REPLACE INTO `item_db` VALUES ('6584','Guarantee_Weapon_12Up','Safe to 12 Weapon Certificate','3','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6585','Guarantee_Armor_12Up','Safe to 12 Armor Certificate','3','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6586','Captured_Book','Captured Book','3','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6592','Small_Wooden_Chest','Small Wooden Chest','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6593','Criatura_Hair_Coupon','Criatura Hair Coupon','3','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6594','Magic_Bronze_Bullion','Magic Bronze Bullion','3','20','10','1000','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6595','Hammer_Of_Velund','Hammer Of Velund','3','20','10','500','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6596','Anvil_Of_Velund','Anvil Of Velund','3','20','10','2000','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6597','Bracelet_Of_Velund','Bracelet Of Velund','3','20','10','500','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6598','Rib_Of_Jormungand','Rib Of Jormungand','3','20','10','10000','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6599','Spirit_Of_Hugin','Spirit Of Hugin','3','20','10','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6600','Spirit_Of_Munin','Spirit Of Munin','3','20','10','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6601','Chisel_Of_Giant','Chisel Of Giant','3','20','10','1000','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6602','Secret_Of_Rune','Secret Of Rune','3','20','10','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6603','Skin_Of_Hraesvelg','Skin Of Hraesvelg','3','20','10','500','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6604','Essence_Of_Rune','Essence Of Rune','3','20','10','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6605','Muspellium','Muspellium','3','20','10','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6606','P_Cart_C','P Cart C','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6607','Temporal_Crystal','Temporal Crystal','3','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6608','Coagulated_Spell','Coagulated Spell','3','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('6615','Siege_Guild_Coin','Siege Guild Coin','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6616','Lmtd_Manny_Card','Lmtd Manny Card','3','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6617','Lmtd_Sid_Card','Lmtd Sid Card','3','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('6618','Lmtd_Diego_Card','Lmtd Diego Card','3','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -4476,7 +4494,7 @@ REPLACE INTO `item_db` VALUES ('7052','Old_Magazine','Old Papers','3','100','50'
REPLACE INTO `item_db` VALUES ('7053','Cyfar','Cyfar','3','772','386','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('7054','Brigan','Brigan','3','746','373','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('7055','Animal_Pooopoo','Animal Poop','3','100','50','50','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('7056','Payroll_Of_Kafra','Payment Statement for Kafra Employee','3','0','0','50','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('7056','Payroll_Of_Kafra','Payroll Of Kafra','3','1','0','50','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('7057','Gallar_Horn','Gjallar','3','0','0','500','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('7058','Gullraifnir','Gleipnir','3','0','0','500','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('7059','Cargo_Free_Ticket','Free Ticket for Kafra Storage','3','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -5524,6 +5542,7 @@ REPLACE INTO `item_db` VALUES ('11055','Basic_Adventure','Basic Adventure','3','
REPLACE INTO `item_db` VALUES ('11056','Spiritualism_Guide','Spiritualism Guide','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('11057','Feb_Sweets','February Sweets','3','20','10','50','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('11058','Novice_Combi_Book','Beginner Item Book','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('11059','WoE_TE_Rental_List','WoE TE Rental List','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('11060','Energy_Xtal_Combi_Book','Energy Crystal Book','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('11500','Light_Yellow_Pot','Light Yellow Potion','0','550','275','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','itemheal rand(175,235),0;','','');
REPLACE INTO `item_db` VALUES ('11501','Light_White_Pot','Light White Potion','0','1200','600','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','itemheal rand(325,405),0;','','');
@@ -5580,6 +5599,8 @@ REPLACE INTO `item_db` VALUES ('11551','Savory_Herb_Salad','Aromatic Herb Season
REPLACE INTO `item_db` VALUES ('11552','Apple_Carrot_Salad','Apple Carrot Salad','0','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','itemheal rand(20,30),0;','','');
REPLACE INTO `item_db` VALUES ('11553','Casual_Stew','Anything Casserole','0','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','itemheal rand(20,30),0;','','');
REPLACE INTO `item_db` VALUES ('11554','Golden_Roasted_Apple','92 Golden Apple','0','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','itemheal rand(20,30),0;','','');
+REPLACE INTO `item_db` VALUES ('11557','TE_White_Potion','TE White Potion','0','200','100','300','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(325,405),0;','','');
+REPLACE INTO `item_db` VALUES ('11558','TE_White_Slim_Potion','TE White Slim Potion','0','275','137','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(325,405),0;','','');
REPLACE INTO `item_db` VALUES ('11592','Trance_Candy_R','Red Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65),0; montransform \"Bloody Murderer\",600000,SC_MTF_MHP,1000;','','');
REPLACE INTO `item_db` VALUES ('11593','Trance_Candy_B','Blue Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65),0; montransform \"Bathory\",600000,SC_MTF_MSP,100;','','');
REPLACE INTO `item_db` VALUES ('11594','Trance_Candy_Y','Yellow Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65),0; montransform \"Jakk\",600000,SC_MTF_PUMPKIN,2000;','','');
@@ -6410,10 +6431,21 @@ REPLACE INTO `item_db` VALUES ('12850','Heaven_Scroll','Heaven Scroll','11','20'
REPLACE INTO `item_db` VALUES ('12851','Vocation_Scroll','Vocation Scroll','11','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('12852','Wisdom_Scroll','Wisdom Scroll','11','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('12853','Patron_Scroll','Patron Scroll','11','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('12873','TE_Potion_Box','TE Potion Box','2','20','10','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','411',NULL,'0',NULL,'0',NULL,'0','getitem TE_White_Slim_Potion,10;','','');
+REPLACE INTO `item_db` VALUES ('12874','Frost_Giant_Blood','Frost Giant Blood','2','20','10','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_POTION_CON; autobonus \"{ heal -3000,0; bonus2 bAddRace,RC_Player,100; bonus2 bMagicAddRace,RC_Player,100; }\",10,0,0,SI_GVG_GIANT;','','');
+REPLACE INTO `item_db` VALUES ('12875','Golem_Stone','Golem Stone','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_POTION_CON; autobonus \"{ heal 0,-300; bonus2 bSubRace,RC_Player,15; }\",10,0,0,SI_GVG_GOLEM;','','');
+REPLACE INTO `item_db` VALUES ('12876','Elf_Tear_Stun','Elf Tear Stun','2','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ heal -3000,0; bonus2 bResEff,Eff_Stun,10000; }\",10,0,0,SI_GVG_STUN;','','');
+REPLACE INTO `item_db` VALUES ('12877','Elf_Tear_Stone_Curse','Elf Tear Stone Curse','2','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ heal -3000,0; bonus2 bResEff,Eff_Stone,10000; }\",10,0,0,SI_GVG_STONE;','','');
+REPLACE INTO `item_db` VALUES ('12878','Elf_Tear_Freezing','Elf Tear Freezing','2','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ heal -3000,0; bonus2 bResEff,Eff_Freeze,10000; }\",10,0,0,SI_GVG_FREEZ;','','');
+REPLACE INTO `item_db` VALUES ('12879','Elf_Tear_Sleep','Elf Tear Sleep','2','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ heal -3000,0; bonus2 bResEff,Eff_Sleep,10000; }\",10,0,0,SI_GVG_SLEEP;','','');
+REPLACE INTO `item_db` VALUES ('12880','Elf_Tear_Curse','Elf Tear Curse','2','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ heal -3000,0; bonus2 bResEff,Eff_Curse,10000; }\",10,0,0,SI_GVG_CURSE;','','');
+REPLACE INTO `item_db` VALUES ('12881','Elf_Tear_Silence','Elf Tear Silence','2','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ heal -3000,0; bonus2 bResEff,Eff_Silence,10000; }\",10,0,0,SI_GVG_SILENCE;','','');
+REPLACE INTO `item_db` VALUES ('12882','Elf_Tear_Blind','Elf Tear Blind','2','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ heal -3000,0; bonus2 bResEff,Eff_Blind,10000; }\",10,0,0,SI_GVG_BLIND;','','');
REPLACE INTO `item_db` VALUES ('12884','C_Center_Potion','Infinite Concentration Potion','11','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','sc_start SC_ATTHASTE_POTION1,1800000,4; specialeffect2 EF_POTION_CON; /* NOTE: No special effect when used. */','','');
REPLACE INTO `item_db` VALUES ('12885','C_Awakening_Potion','Infinite Awakening Potion','11','0','0','0','0','0','0','0','0','2146959087','63','2','0','0','40',NULL,'0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','sc_start SC_ATTHASTE_POTION2,1800000,6; specialeffect2 EF_POTION_; /* NOTE: No special effect when used. */','','');
REPLACE INTO `item_db` VALUES ('12886','C_Berserk_Potion','Infinite Berserk Potion','11','0','0','0','0','0','0','0','0','31868582','63','2','0','0','85',NULL,'0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','sc_start SC_ATTHASTE_POTION3,1800000,9; specialeffect2 EF_POTION_BERSERK; /* NOTE: No special effect when used. */','','');
REPLACE INTO `item_db` VALUES ('12887','C_Wing_Of_Fly','Infinite Fly Wing','11','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','warp strcharinfo(3),0,0; /* NOTE: Temporary script until we get the correct information. */','','');
+REPLACE INTO `item_db` VALUES ('12888','Siege_Kit_Box','Siege Kit Box','2','20','10','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','getrandgroupitem 12888,1; getrandgroupitem 12888,1; getrandgroupitem 12888,1;','','');
REPLACE INTO `item_db` VALUES ('12900','Battle_Manual_Box','Battle Manual Box','18','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','getitem 12208,10;','','');
REPLACE INTO `item_db` VALUES ('12901','Insurance_Package','Insurance Package','18','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','getitem 12209,10;','','');
REPLACE INTO `item_db` VALUES ('12902','Bubble_Gum_Box','Bubble Gum Box','18','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','getitem 12210,10;','','');
@@ -6595,6 +6627,7 @@ REPLACE INTO `item_db` VALUES ('13077','Kagekiri','Kagekiri','4','40000','20000'
REPLACE INTO `item_db` VALUES ('13078','Mikatsuki','Mikatsuki','4','40000','20000','600','50','120','0','1','1','570425344','1','2','2','4','100',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUseSPrate,-5; bonus bVariableCastrate,-5;','','');
REPLACE INTO `item_db` VALUES ('13079','Metal_Dagger','Metal Dagger','4','20','10','0','55','0','0','1','1','33689664','1','2','2','3','0',NULL,'1','1','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,(getrefine()*5); bonus bMatk,(getrefine()*2); .@val = min(BaseLevel/10, 12); if (.@val > 2) { bonus bBaseAtk,((.@val-2)*5); }','','');
REPLACE INTO `item_db` VALUES ('13081','Octo_kitchen_Knife','Discount knife Octopus','4','200000','100000','700','140','0','0','0','3','579821294','1','2','2','4','105',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('13083','TE_Woe_Knife','T Woe Knife','4','0','0','0','100','100','0','1','0','1050640111','1','2','2','3','40',NULL,'0','1','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Silence,1000;','','');
REPLACE INTO `item_db` VALUES ('13092','RWC_Memory_Knife','RWC Memory Knife','4','1000','500','650','50','0','0','1','1','41943157','1','2','2','3','0',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,20*(getrefine()/3); bonus bMatk,20*(getrefine()/3); if(getrefine()>=9) { .@val = 1; bonus4 bAutoSpell,BS_WEAPONPERFECT,1,20,0; } if (getrefine() >= 6) { .@rate = 5*(.@val+1); bonus2 bAddRace, RC_All, .@rate; bonus2 bMagicAddRace, RC_All, .@rate; }','','');
REPLACE INTO `item_db` VALUES ('13093','Thanatos_Dagger','Thanatos Dagger','4','20','10','800','100','130','0','1','1','941290','56','2','2','4','120',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('13094','Evil_Slayer_Stabber_Dagger','Evil Slayer Stabber Dagger','4','20','10','900','120','0','0','1','1','41943157','56','2','2','3','100',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; if(getrefine()>=9) { bonus bAtkRate,5; } if(getrefine()>=12) { bonus bAtkRate,7; }','','');
@@ -6615,6 +6648,7 @@ REPLACE INTO `item_db` VALUES ('13113','P_Revolver2','Eden Revolver II','4','0',
REPLACE INTO `item_db` VALUES ('13114','P_Revolver3','Eden Group Revolver III','4','0','0','0','76','0','0','7','0','16777216','1','2','34','3','60',NULL,'0','17','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bHit,-5;','','');
REPLACE INTO `item_db` VALUES ('13115','Upg_Revolver','Upgrade Revolver','4','20','10','500','35','0','0','7','1','16777216','1','2','34','3','0',NULL,'1','17','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,(getrefine()*5); bonus bLongAtkRate,(getrefine()*2); if(BaseLevel>70) { bonus bBaseAtk,(((BaseLevel-70)/10)*5); }','','');
REPLACE INTO `item_db` VALUES ('13116','Novice_Revolver','Beginner Revolver','4','0','0','500','20','0','0','7','0','16777216','1','2','34','1','0',NULL,'0','17','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,-5;','','');
+REPLACE INTO `item_db` VALUES ('13117','TE_Woe_Pistol','TE Woe Pistol','4','0','0','0','60','0','0','7','0','1090519040','63','2','34','3','40',NULL,'0','17','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Curse,1000;','','');
REPLACE INTO `item_db` VALUES ('13120','Heaven\'s_Feather_and_Hell\'s_Fire','Heaven\'s_Feather_&_Hell\'s_Fire','5','1250000','625000','800','150','0','0','9','1','1090519040','63','2','34','3','99',NULL,'1','17','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillAtk,GS_DESPERADO,20; bonus2 bSkillAtk,RL_FALLEN_ANGEL,20;','','');
REPLACE INTO `item_db` VALUES ('13122','Altea_and_Ares','Altea & Ares','5','1450000','725000','1000','200','0','0','9','0','1073741824','63','2','34','3','140',NULL,'1','17','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30;','','');
REPLACE INTO `item_db` VALUES ('13124','Altea_and_Ares_','Altea & Ares','5','1450000','725000','1000','200','0','0','9','1','1073741824','63','2','34','3','140',NULL,'1','17','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30;','','');
@@ -6654,6 +6688,10 @@ REPLACE INTO `item_db` VALUES ('13180','Novice_Rifle','Starter Branch','4','0','
REPLACE INTO `item_db` VALUES ('13181','Novice_Shotgun','Beginner Shotgun','4','0','0','1000','80','0','0','9','0','16777216','1','2','34','1','0',NULL,'0','20','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('13182','Novice_Gatling','Beginner GatlingGun','4','0','0','1500','40','0','0','9','0','16777216','1','2','34','1','0',NULL,'0','19','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('13183','Novice_Grenade_Launcher','Beginner Grenade Launcher','4','0','0','1500','40','0','0','9','0','16777216','1','2','34','1','0',NULL,'0','21','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('13184','TE_Woe_Rifle','TE Woe Rifle','4','0','0','0','80','0','0','9','0','1090519040','63','2','34','3','40',NULL,'0','18','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Silence,1000;','','');
+REPLACE INTO `item_db` VALUES ('13185','TE_Woe_Gatling','TE Woe Gatling','4','0','0','0','100','0','0','9','0','1090519040','63','2','34','3','40',NULL,'0','19','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Stun,1000;','','');
+REPLACE INTO `item_db` VALUES ('13186','TE_Woe_Shotgun','TE Woe Shotgun','4','0','0','0','100','0','0','9','0','1090519040','63','2','34','3','40',NULL,'0','20','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Poison,1000;','','');
+REPLACE INTO `item_db` VALUES ('13187','TE_Woe_Grenade','TE Woe Grenade','4','0','0','0','100','0','0','9','0','1090519040','63','2','34','3','40',NULL,'0','21','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Blind,1000;','','');
REPLACE INTO `item_db` VALUES ('13189','Color_Scope','Color Scope','5','1350000','675000','1200','240','0','0','9','2','1073741824','63','2','34','3','105',NULL,'1','18','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,30; bonus bCriticalRate,30;','','');
REPLACE INTO `item_db` VALUES ('13190','RAG203','RAG203','5','1800000','900000','1300','260','0','0','9','1','1073741824','63','2','34','3','140',NULL,'1','18','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,10; bonus bCriticalRate,15; bonus4 bAutoSpell,AL_DECAGI,1,500,0;','','');
REPLACE INTO `item_db` VALUES ('13192','Death_Fire','Death Fire','5','1250000','625000','2000','400','0','0','9','1','1073741824','63','2','34','3','108',NULL,'1','20','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,5; bonus bHit,-50; bonus bDelayrate,-10;','','');
@@ -6741,6 +6779,7 @@ REPLACE INTO `item_db` VALUES ('13313','Huuma_Swirling_Petal','Huuma Swirling Pe
REPLACE INTO `item_db` VALUES ('13314','Huuma_Fluttering_Snow','Huuma Fluttering Snow','4','100000','50000','1500','200','50','0','1','0','570425344','1','2','34','4','110',NULL,'1','22','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,50; bonus bAtkEle,Ele_Water; bonus3 bAutoSpell,NJ_HYOUSYOURAKU,max(getskilllv(NJ_HYOUSYOURAKU),1),30;','','');
REPLACE INTO `item_db` VALUES ('13315','Huuma_Thunderstorm','Huuma Thunderstorm','4','100000','50000','1500','200','50','0','1','0','570425344','1','2','34','4','110',NULL,'1','22','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,50; bonus bAtkEle,Ele_Wind; bonus3 bAutoSpell,NJ_RAIGEKISAI,max(getskilllv(NJ_RAIGEKISAI),1),30;','','');
REPLACE INTO `item_db` VALUES ('13316','Upg_Huuma_Shuriken','Upg Huuma Shuriken','4','20','10','1500','55','0','0','1','1','570425344','1','2','34','3','0',NULL,'1','22','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,10*getrefine(); bonus bMatk,5*getrefine(); bonus bLongAtkRate,getrefine(); if(BaseLevel>=70) { bonus bBaseAtk,5*((BaseLevel-60)/10); }','','');
+REPLACE INTO `item_db` VALUES ('13317','TE_Woe_Huuma','TE Woe Huuma','4','0','0','0','80','100','0','1','0','570425344','1','2','34','3','40',NULL,'0','22','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Bleeding,1000;','','');
REPLACE INTO `item_db` VALUES ('13327','Crimson_Huuma_Shuriken','Crimson Huuma Shuriken','4','20','10','1000','100','0','0','1','2','570425344','63','2','34','3','70',NULL,'1','22','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2; if(BaseLevel>70) { bonus bAtk,(((BaseLevel-70)/10)*5); }','','');
REPLACE INTO `item_db` VALUES ('13328','Huuma_Shuriken_of_Vicious_Mind','Huuma Shuriken of Vicious Mind','4','20','10','1500','150','50','0','1','1','570425344','63','2','34','4','160',NULL,'1','22','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2; bonus bUnbreakableWeapon,0;','','');
REPLACE INTO `item_db` VALUES ('13400','Cutlas_','Cutlus','4','20','10','900','150','0','0','1','1','414946','63','2','2','4','40',NULL,'1','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','skill SM_BASH,5; bonus bStr,2; bonus bDef,1;','','');
@@ -6779,6 +6818,7 @@ REPLACE INTO `item_db` VALUES ('13432','Adventure_Sword','Adventure Sword','4','
REPLACE INTO `item_db` VALUES ('13433','Academy_Sword','Academy Sword','4','0','0','1200','120','0','0','1','1','16514','63','2','2','1','0',NULL,'1','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('13434','P_Saber3','Eden Group Saber III','4','0','0','0','185','0','0','1','0','414946','63','2','2','3','60',NULL,'0','2','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('13438','Magical_Blade','Magical Blade','4','60000','30000','2000','165','110','0','1','2','414947','63','2','2','4','105',NULL,'1','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('13439','TE_Woe_Sword','TE Woe Sword','4','0','0','0','120','100','0','1','0','414947','63','2','2','3','40',NULL,'0','2','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Poison,1000;','','');
REPLACE INTO `item_db` VALUES ('13442','Old_Parasol','Old Parasol','4','20','10','500','120','80','0','0','3','414946','63','2','2','3','80',NULL,'1','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,getrefine(); skill MG_SOULSTRIKE,10;','','');
REPLACE INTO `item_db` VALUES ('13444','Pala','Pala','4','20','10','700','190','0','0','0','1','414946','63','2','2','3','0',NULL,'1','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate,8;','','');
REPLACE INTO `item_db` VALUES ('13454','Crimson_Saber','Crimson Saber','4','20','10','850','85','0','0','1','2','414947','63','2','2','3','70',NULL,'1','2','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2); if(BaseLevel>70) { bonus bAtk,(((BaseLevel-70)/10)*5); }','','');
@@ -7811,6 +7851,10 @@ REPLACE INTO `item_db` VALUES ('15058','Rider_Suit','Rider Suit','5','20','10','
REPLACE INTO `item_db` VALUES ('15059','2011Love_Daddy','2011Love Daddy','5','20','10','100','0','0','80','0','1','4294967295','63','2','16','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('15060','Sky_Blue_Smock','Sky-Blue Smock','5','20','10','300','0','0','1','0','1','4294967295','63','2','16','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('15061','Egir_Armor','Aegir Armor','5','200000','100000','2600','0','0','55','0','1','4294967295','63','2','16','0','110',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats, 1; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) bonus2 bResEff, Eff_Silence, 5000; else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) bonus2 bResEff, Eff_Stun, 5000; bonus bUnbreakableArmor, 0;','','');
+REPLACE INTO `item_db` VALUES ('15062','TE_Woe_Coat','TE Woe Coat','5','0','0','0','0','0','15','0','0','4294967295','63','2','16','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,15; bonus bMaxHP,250; bonus bMaxSP,250; bonus2 bSubRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25; bonus bUnbreakableArmor,0;','','');
+REPLACE INTO `item_db` VALUES ('15063','TE_Woe_Chain_Mail','TE Woe Chain Mail','5','0','0','0','0','0','25','0','0','279714','63','2','16','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bMaxHP,450; bonus bMaxSP,50; bonus2 bSubRace,RC_Player,15; bonus2 bResEff,Eff_Freeze,25; bonus bUnbreakableArmor,0;','','');
+REPLACE INTO `item_db` VALUES ('15064','TE_Woe_Mage_Coat','TE Woe Mage Coat','5','0','0','0','0','0','5','0','0','8487701','63','2','16','0','40',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,25; bonus bMaxHP,200; bonus bMaxSP,200; bonus2 bSubRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,25; bonus bUnbreakableArmor,0;','','');
+REPLACE INTO `item_db` VALUES ('15067','Rune_Suit','Rune Suit','5','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','1','100','0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','bonus2 bExpAddRace,RC_All,10;','','');
REPLACE INTO `item_db` VALUES ('15068','Adv_Angel\'s_Protection','Advanced Angelic Protection','5','10000','5000','600','0','0','40','0','1','1','47','2','16','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,30;','','');
REPLACE INTO `item_db` VALUES ('15073','Anti-Magic_Suit','Anti-Magic Suit','5','20','10','1500','0','0','50','0','1','4294967295','63','2','16','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,5; bonus bMdef,10; if (getrefine()>6) { bonus bMdef,5; } if (getrefine()>8) { bonus bMaxHPrate,2; }','','');
REPLACE INTO `item_db` VALUES ('15074','Geffen_Magic_Robe','Geffen Magic Robe','5','20','10','1000','0','0','40','0','1','4294967295','63','2','16','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUseSPrate,-10; bonus bVariableCastrate,15; bonus bNoCastCancel,0; if (getrefine()>6) { bonus bUseSPrate,-5; } if (getrefine()>8) { bonus bVariableCastrate,-5; }','','');
@@ -7847,6 +7891,7 @@ REPLACE INTO `item_db` VALUES ('16021','Velum_Flail','Vellum Flail','4','20','10
REPLACE INTO `item_db` VALUES ('16022','Nemesis_','Nemesis','4','20','10','900','120','0','0','1','2','33040','63','2','2','4','60',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Holy;','','');
REPLACE INTO `item_db` VALUES ('16023','Metal_Mace','Metal Mace','4','20','10','0','80','0','0','1','1','312755','63','2','2','3','0',NULL,'1','8','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bBaseAtk,(getrefine()*5); .@val = min(BaseLevel/10, 12); if (.@val > 2) { bonus bBaseAtk,((.@val-2)*5); }','','');
REPLACE INTO `item_db` VALUES ('16024','Quadrille_','Quadrille','4','20','10','900','165','0','0','1','2','16','63','2','2','4','40',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiPlayer,10; bonus2 bAddEle,Ele_Earth,10;','','');
+REPLACE INTO `item_db` VALUES ('16025','TE_Woe_Mace','TE Woe Mace','4','0','0','0','120','0','0','1','0','16','63','2','2','3','40',NULL,'0','8','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,1000; bonus bHealPower,5;','','');
REPLACE INTO `item_db` VALUES ('16026','RWC_Memory_Mace','RWC Memory Mace','4','20','10','800','100','0','0','1','1','312754','63','2','2','3','0',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0;','','');
REPLACE INTO `item_db` VALUES ('16027','Evil_Slayer_Destroyer_Hammer','Evil Slayer Destroyer Hammer','4','20','10','1350','120','0','0','1','1','312754','56','2','2','3','100',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; if(getrefine()>=9) { bonus bAtkRate,5; } if(getrefine()>=12) { bonus bAtkRate,7; }','','');
REPLACE INTO `item_db` VALUES ('16028','Thanatos_Hammer','Thanatos Hammer','4','20','10','3000','180','120','0','1','1','312754','56','2','2','4','120',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
@@ -8228,6 +8273,7 @@ REPLACE INTO `item_db` VALUES ('18114','Velum_CrossBow','Vellum CrossBow','4','2
REPLACE INTO `item_db` VALUES ('18115','Orc_Archer_Bow_','Orc Archer\'s Bow','4','20','10','1600','120','0','0','5','1','657416','63','2','34','3','65',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('18116','Metal_Bow','Metal Bow','4','20','10','0','50','0','0','5','1','526344','63','2','34','3','0',NULL,'1','11','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','if(BaseJob==Job_Hunter && Upper!=2) bonus bBaseAtk,10; bonus bBaseAtk,(getrefine()*3); bonus bLongAtkRate,getrefine(); .@val = max(BaseLevel/10, 12); if (.@val > 2) { bonus bBaseAtk,((.@val-2)*5); }','','');
REPLACE INTO `item_db` VALUES ('18117','Royal_Bow','Royal Bow','4','200000','100000','1500','80','0','0','5','1','657416','63','2','34','4','105',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('18118','TE_Woe_Bow','TE Woe Bow','4','200000','100000','1500','120','0','0','5','0','657416','63','2','34','3','40',NULL,'0','11','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Curse,1000;','','');
REPLACE INTO `item_db` VALUES ('18119','Thanatos_Bow','Thanatos Bow','4','20','10','1300','180','110','0','5','1','657416','56','2','34','4','120',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
REPLACE INTO `item_db` VALUES ('18120','Evil_Slayer_Piercer_Bow','Evil Slayer Piercer Bow','4','20','10','1350','115','0','0','5','1','657416','56','2','34','3','100',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; if(getrefine()>=9) { bonus bAtkRate,5; } if(getrefine()>=12) { bonus bAtkRate,7; }','','');
REPLACE INTO `item_db` VALUES ('18121','Bow_of_Vicious_Mind','Bow of Vicious Mind','4','20','10','1700','170','0','0','5','1','657416','63','2','34','4','160',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2);','','');
@@ -8468,9 +8514,10 @@ REPLACE INTO `item_db` VALUES ('18728','Egir_Helm','Aegir Helm','5','200000','10
REPLACE INTO `item_db` VALUES ('18729','MVP_Basketball','MVP Basketball Hat','5','20','10','150','0','0','6','0','1','4294967295','63','2','256','0','0',NULL,'1','871','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubRace,RC_DemiPlayer,10; bonus2 bAddItemHealRate,522,30; bonus bVariableCastrate,-3; if(getrefine()>=12) { bonus bVariableCastrate,-1; } if(getrefine()>=14) { bonus bVariableCastrate,-1; }','','');
REPLACE INTO `item_db` VALUES ('18730','Criatura_Academy_Hat','Criatura Hat','5','100','50','200','0','0','2','0','1','4294967295','63','2','256','0','0',NULL,'1','872','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,5; bonus bMaxHP,15;','','');
REPLACE INTO `item_db` VALUES ('18731','Valkyrie_Headgear','Valkyrie Helm','5','1000','500','0','0','0','0','0','0','4294967295','63','2','256','0','0',NULL,'1','225','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('18732','TE_WoE_Cap','TE WoE Cap','5','0','0','0','0','0','5','0','0','4294967295','63','2','256','0','0',NULL,'0','14','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('18733','TE_WoE_Bone_Helm','TE WoE Bone Helm','5','0','0','0','0','0','10','0','0','279714','63','2','256','0','0',NULL,'0','103','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('18734','TE_WoE_Magic_Eyes','TE WoE Magic Eyes','5','0','0','0','0','0','5','0','0','8462849','63','2','256','0','0',NULL,'0','209','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','','','');
+REPLACE INTO `item_db` VALUES ('18732','TE_WoE_Cap','TE WoE Cap','5','0','0','0','0','0','5','0','0','4294967295','63','2','256','0','40',NULL,'0','14','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bBaseAtk,10; bonus2 bAddRace,RC_Player,20; bonus2 bResEff,Eff_Freeze,25; bonus bUnbreakableHelm,0;','','');
+REPLACE INTO `item_db` VALUES ('18733','TE_WoE_Bone_Helm','TE WoE Bone Helm','5','0','0','0','0','0','10','0','0','279714','63','2','256','0','40',NULL,'0','40','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,10; bonus2 bAddRace,RC_Player,20; bonus2 bResEff,Eff_Freeze,25; bonus bUnbreakableHelm,0;','','');
+REPLACE INTO `item_db` VALUES ('18734','TE_WoE_Magic_Eyes','TE WoE Magic Eyes','5','0','0','0','0','0','5','0','0','8462849','63','2','256','0','40',NULL,'0','209','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bMatk,10; bonus2 bMagicAddRace,RC_Player,20; bonus2 bResEff,Eff_Freeze,25; bonus bUnbreakableHelm,0;','','');
+REPLACE INTO `item_db` VALUES ('18736','Censor_Bar_','Censor Bar','5','20','10','100','0','0','0','0','0','4294967295','63','2','512','0','0',NULL,'0','229','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,1; bonus bUnbreakableHelm,0; /*TODO: sc_start EFST_UNKNOWN_NAME 9999 1*/','','');
REPLACE INTO `item_db` VALUES ('18737','Fortier_Mask','Fortier Masque','5','20','10','200','0','0','0','0','0','4294967295','63','2','512','0','10',NULL,'0','876','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0;','','');
REPLACE INTO `item_db` VALUES ('18739','Carnation_Hairband','Carnation Hairband','5','20','10','100','0','0','0','0','0','4294967295','63','2','256','0','0',NULL,'1','878','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1;','','');
REPLACE INTO `item_db` VALUES ('18740','Hair_Of_The_Strong','RMSC2012 Special Costume','5','20','10','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','879','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -8487,7 +8534,7 @@ REPLACE INTO `item_db` VALUES ('18750','Poker_Card_In_Mouth','Poker Card In Mout
REPLACE INTO `item_db` VALUES ('18752','Cursed_Book','Cursed Book','5','0','0','0','0','0','0','0','1','4294967295','63','2','256','0','0',NULL,'1','890','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('18753','Tw_Rice_Ball','Rice Dumpling Hat','5','20','10','100','0','0','6','0','0','4294967295','63','2','256','0','0',NULL,'0','892','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0; bonus bLuk,1;','','');
REPLACE INTO `item_db` VALUES ('18754','Blood_Sucker','Blood Sucker','5','20','10','300','0','0','0','0','0','4294967295','63','2','1','0','40',NULL,'0','893','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0;','','');
-REPLACE INTO `item_db` VALUES ('18755','Feather_Beret_','Feather Beret_','5','30000','15000','0','0','0','0','0','1','4294967295','63','2','256','0','0',NULL,'1','224','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,1; bonus2 bAddRaceTolerance,RC_DemiPlayer,10; bonus2 bAddRaceTolerance,RC_Player,10;','','');
+REPLACE INTO `item_db` VALUES ('18755','Feather_Beret_','Feather Beret','5','30000','15000','600','0','0','1','0','1','2147483646','63','2','256','0','0',NULL,'1','224','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,1; bonus bUnbreakableHelm,0; bonus2 bAddRaceTolerance,RC_DemiPlayer,10; bonus2 bAddRaceTolerance,RC_Player,10;','','');
REPLACE INTO `item_db` VALUES ('18756','Black_Shiba_Inu_Hat','Black Shiba Inu Hat','5','20','10','400','0','0','6','0','1','4294967295','63','2','256','0','50',NULL,'1','894','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('18757','Holy_Klobuk','Holy Klobuk','5','0','0','500','0','0','5','0','1','4294967295','63','2','768','0','0',NULL,'0','895','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus2 bAddRaceTolerance,RC_Demon,10; bonus bHealPower,3; bonus bUnbreakableHelm,0;','','');
REPLACE INTO `item_db` VALUES ('18758','Hat_Of_Scrat','Hat Of Scrat','5','20','10','200','0','0','3','0','1','4294967295','63','2','256','0','0',NULL,'1','896','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
@@ -9436,8 +9483,12 @@ REPLACE INTO `item_db` VALUES ('20333','C_Family_Hat','Costume Family Hat','5','
REPLACE INTO `item_db` VALUES ('20500','T_Archangel_Wing','T Archangel\'s Wings','5','0','0','100','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'0','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0;','','');
REPLACE INTO `item_db` VALUES ('20600','Fantastic_Aura','Fantastic Aura','5','0','0','0','0','0','0','0','0','4294967295','63','2','16384','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0;','','');
REPLACE INTO `item_db` VALUES ('20700','Egir_Manteau','Aegir Mantle','5','200000','100000','300','0','0','10','0','1','4294967295','63','2','4','0','110',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableGarment, 0; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) bonus bFlee2, 5 + (getequiprefinerycnt(EQI_GARMENT) * 2); else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) bonus bShortWeaponDamageReturn, 5 + (getequiprefinerycnt(EQI_GARMENT) * 2);','','');
+REPLACE INTO `item_db` VALUES ('20702','TE_Woe_Muffler','TE Woe Muffler','5','0','0','0','0','0','5','0','0','4294967295','63','2','4','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bUnbreakableGarment,1; bonus2 bAddRace,RC_Player,5; bonus2 bMagicAddRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,25;','','');
+REPLACE INTO `item_db` VALUES ('20703','TE_Woe_Manteau','TE Woe Manteau','5','0','0','0','0','0','10','0','0','279714','63','2','4','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableGarment,1; bonus2 bMagicAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25;','','');
+REPLACE INTO `item_db` VALUES ('20704','TE_Woe_Magic_Manteau','TE Woe Magic Manteau','5','0','0','0','0','0','5','0','0','8487701','63','2','4','0','40',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,5; bonus bUnbreakableGarment,1; bonus2 bMagicAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25;','','');
REPLACE INTO `item_db` VALUES ('20706','Amistr_Bag','Amistr Bag','5','0','0','500','0','0','18','0','0','4294967295','63','2','4','0','0',NULL,'1','4','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,1; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Poison,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5; bonus2 bSubEle,Ele_Ghost,5; bonus2 bSubEle,Ele_Undead,5;','','');
REPLACE INTO `item_db` VALUES ('20707','Kirin_Wing','Kirin Wing','5','20','10','0','0','0','18','0','0','4294967295','63','2','4','0','0',NULL,'1','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1; bonus bInt,1; bonus bVit,1; bonus bDex,1; bonus bAgi,1; bonus bLuk,1;','','');
+REPLACE INTO `item_db` VALUES ('20709','Mana_Manteau','Mana Manteau','5','0','0','0','0','0','0','0','0','4294967295','63','2','4','0','1','100','0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','bonus2 bExpAddRace,RC_All,10;','','');
REPLACE INTO `item_db` VALUES ('20710','Modified_Angel\'s_Cardigan','Modified Angel\'s Cardigan','5','20','10','400','0','0','6','0','1','1','47','2','4','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHPrecovRate,50;','','');
REPLACE INTO `item_db` VALUES ('20711','Manteau_Of_Diego','Manteau Of Diego','5','20','10','600','0','0','15','0','1','4294967295','63','2','4','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1; bonus bDex,1; bonus bMdef,3;','','');
REPLACE INTO `item_db` VALUES ('20717','Gigant_Snake_Skin','Gigant Snake Skin','5','20','10','400','0','0','38','0','0','4294967295','63','2','4','0','0',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,10;','','');
@@ -9472,7 +9523,7 @@ REPLACE INTO `item_db` VALUES ('21002','Velum_Katzbalger','Vellum Katzbalger','4
REPLACE INTO `item_db` VALUES ('21003','Muramasa_','Muramasa','4','20','10','1000','155','0','0','1','2','16514','63','2','34','4','48',NULL,'1','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,30; bonus bAspdRate,8; bonus2 bAddEff2,Eff_Curse,10;','','');
REPLACE INTO `item_db` VALUES ('21004','Alca_Bringer_','Alca Bringer','4','20','10','3400','280','0','0','2','2','128','56','2','34','3','100',NULL,'1','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd,(getrefine()/2);','','');
REPLACE INTO `item_db` VALUES ('21005','Metal_Two_Hand_Sword','Metal Two-Handed Sword','4','0','0','0','95','0','0','1','1','16514','63','2','34','3','0',NULL,'1','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,getrefine()*6; bonus bMatk,getrefine()*2; if(BaseLevel>20) { bonus bAtk,min(((BaseLevel-20)/10)*5,120); }','','');
-REPLACE INTO `item_db` VALUES ('21006','TE_WoE_Two-Handed_Sword','TE WoE Two-Handed Sword','4','0','0','0','150','0','0','1','0','16514','63','2','34','3','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Bleeding,300; bonus2 bAddRace,RC_DemiPlayer,40;','','');
+REPLACE INTO `item_db` VALUES ('21006','TE_Woe_Two_Hand_Sword','TE WoE Two Hand Sword','4','0','0','0','150','0','0','1','0','16514','63','2','34','3','40',NULL,'0','3','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Bleeding,1000; bonus2 bAddRace,RC_DemiPlayer,40;','','');
REPLACE INTO `item_db` VALUES ('21007','Heavy_Sword','Heavy Sword','4','20','10','2500','330','0','0','1','1','16512','63','2','34','1','150',NULL,'1','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,20;','','');
REPLACE INTO `item_db` VALUES ('21008','Small_Karasuma','Small Karasuma','4','20','10','1000','170','0','0','1','2','16514','63','2','34','4','50',NULL,'1','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritAtkRate,getrefine()*2; bonus3 bAutoSpell,NPC_CRITICALWOUND,1,50; /* Custom - JRO */','','');
REPLACE INTO `item_db` VALUES ('21009','Thanatos_Great_Sword','Thanatos Great Sword','4','20','10','1300','280','120','0','1','1','16514','56','2','34','4','120',NULL,'1','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;');
@@ -9497,6 +9548,7 @@ REPLACE INTO `item_db` VALUES ('22008','Temporal_DEX_Boots_','Temporal DEX Boots
REPLACE INTO `item_db` VALUES ('22009','Temporal_INT_Boots_','Temporal INT Boots','5','20','10','600','0','0','25','0','1','4294967295','56','2','64','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,300+((getrefine()/3)*100); bonus bMaxSP,30+((getrefine()/3)*10); bonus bMatk,(getrefine()/3)*10; if(readparam(bInt)>=120) { bonus bMatk,60; bonus bMdef,5; }','','');
REPLACE INTO `item_db` VALUES ('22010','Temporal_AGI_Boots_','Temporal AGI Boots','5','20','10','600','0','0','25','0','1','4294967295','56','2','64','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,300+((getrefine()/3)*100); bonus bMaxSP,30+((getrefine()/3)*10); bonus bAspdRate,(getrefine()/3)*3; if(readparam(bAgi)>=120) { bonus bAspd,1; }','','');
REPLACE INTO `item_db` VALUES ('22011','Temporal_LUK_Boots_','Temporal LUK Boots','5','20','10','600','0','0','20','0','1','4294967295','56','2','64','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,300+((getrefine()/3)*100); bonus bMaxSP,30+((getrefine()/3)*10); bonus bCritAtkRate,getrefine()/3; if(readparam(bLuk)>=120) { bonus bCritAtkRate,30; bonus bMdef,5; }','','');
+REPLACE INTO `item_db` VALUES ('22012','Mana_Boots','Mana Boots','5','0','0','0','0','0','0','0','0','4294967295','63','2','64','0','1','100','0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','bonus2 bExpAddRace,RC_All,10;','','');
REPLACE INTO `item_db` VALUES ('22014','Enhanced_Variant_Shoes','Enhanced Variant Shoes','5','20','10','500','0','0','13','0','1','2093997952','63','2','64','0','85',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,12; bonus bMaxSPrate,12; bonus bDef,getrefine(); bonus bMdef,getrefine();','','');
REPLACE INTO `item_db` VALUES ('22015','Impr_Angel\'s_Arrival','Advanced Angel\'s Reincarnation','5','10000','5000','300','0','0','8','0','1','1','63','2','64','0','99',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,500; bonus bMaxSP,100;','','');
REPLACE INTO `item_db` VALUES ('22016','Assassin_Shoes','Assassin Shoes','5','10','5','300','0','0','10','0','0','4294967295','63','2','64','0','30',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bExpAddRace,RC_DemiPlayer,5+getrefine();','','');
diff --git a/sql-files/upgrades/eAthena-logs-upgrade.sql b/sql-files/upgrades/eAthena-logs-upgrade.sql
new file mode 100644
index 000000000..09ed4d8d0
--- /dev/null
+++ b/sql-files/upgrades/eAthena-logs-upgrade.sql
@@ -0,0 +1,44 @@
+-- This file is part of Hercules.
+-- http://herc.ws - http://github.com/HerculesWS/Hercules
+--
+-- Copyright (C) 2013-2015 Hercules Dev Team
+--
+-- Hercules is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+--
+-- Upgrade file to be used when going from eAthena to Hercules
+-- Note: If you're not up to date with eAthena, go through their upgrade files first and run them before this file.
+-- Note: After runing this file run Hercules upgrade files.
+--
+
+-- Adds 'I' and 'X' to `type` in `picklog` table
+ALTER TABLE `picklog` MODIFY `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X') NOT NULL DEFAULT 'P';
+
+-- Adds 'D' and 'U' to `type` in `picklog` table
+ALTER TABLE `picklog` MODIFY `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U') NOT NULL DEFAULT 'P';
+
+-- Adds unique ID to `picklog` table
+ALTER TABLE `picklog` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0' AFTER `card3`;
+
+-- Change `nsiuid` to BIGINT(20)
+ALTER TABLE `picklog` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0';
+
+-- Adds 'I' to `type` in `zenylog`
+ALTER TABLE `zenylog` MODIFY `type` ENUM('M','T','V','S','N','A','E','B','I') NOT NULL DEFAULT 'S';
+
+-- Adds 'D' to `type` in `zenylog`
+ALTER TABLE `zenylog` MODIFY `type` ENUM('M','T','V','S','N','A','E','B','I','D') NOT NULL DEFAULT 'S';
+
+-- Add 'P' and 'C' types in `zenylog`
+ALTER TABLE `zenylog` MODIFY `type` ENUM('T','V','P','M','S','N','D','C','A','E','I','B') NOT NULL DEFAULT 'S';
diff --git a/sql-files/upgrades/eathena-upgrade.sql b/sql-files/upgrades/eAthena-main-upgrade.sql
index 83eda8c1f..64b22bfe9 100644
--- a/sql-files/upgrades/eathena-upgrade.sql
+++ b/sql-files/upgrades/eAthena-main-upgrade.sql
@@ -24,12 +24,6 @@
ALTER TABLE `global_reg_value` MODIFY `type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '3';
--- Adds 'I' and 'X' to `type` in `picklog` table
-ALTER TABLE `picklog` MODIFY `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X') NOT NULL DEFAULT 'P';
-
--- Adds 'D' and 'U' to `type` in `picklog` table
-ALTER TABLE `picklog` MODIFY `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U') NOT NULL DEFAULT 'P';
-
-- `ExpPer` column removed from `mob_db` and `mob_db2` tables
ALTER TABLE `mob_db` DROP COLUMN `ExpPer`;
ALTER TABLE `mob_db2` DROP COLUMN `ExpPer`;
@@ -37,9 +31,6 @@ ALTER TABLE `mob_db2` DROP COLUMN `ExpPer`;
-- Rename `level` column to `group_id` in `login` table
ALTER TABLE `login` CHANGE COLUMN `level` `group_id` TINYINT(3) NOT NULL DEFAULT '0';
--- Adds 'I' to `type` in `zenylog`
-ALTER TABLE `zenylog` MODIFY `type` ENUM('M','T','V','S','N','A','E','B','I') NOT NULL DEFAULT 'S';
-
ALTER TABLE `char` ADD COLUMN `elemental_id` INT(11) UNSIGNED NOT NULL DEFAULT '0';
CREATE TABLE IF NOT EXISTS `elemental` (
@@ -61,9 +52,6 @@ CREATE TABLE IF NOT EXISTS `elemental` (
PRIMARY KEY (`ele_id`)
) ENGINE=MyISAM;
--- Adds 'D' to `type` in `zenylog`
-ALTER TABLE `zenylog` MODIFY `type` ENUM('M','T','V','S','N','A','E','B','I','D') NOT NULL DEFAULT 'S';
-
ALTER TABLE `char` ADD CONSTRAINT `name_key` UNIQUE (`name`);
ALTER TABLE `inventory` ADD COLUMN `favorite` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `expire_time`;
@@ -74,14 +62,12 @@ ALTER TABLE `item_db_re` MODIFY COLUMN `atk:matk` VARCHAR(11) DEFAULT '';
ALTER TABLE `item_db_re` MODIFY COLUMN `defence` SMALLINT(5) UNSIGNED DEFAULT NULL;
-ALTER TABLE `homunculus` ADD `prev_class` MEDIUMINT( 9 ) NOT NULL AFTER `class`
+ALTER TABLE `homunculus` ADD `prev_class` MEDIUMINT( 9 ) NOT NULL AFTER `class`;
ALTER TABLE `item_db_re` MODIFY `defence` SMALLINT(5) DEFAULT NULL;
ALTER TABLE `item_db` MODIFY `defence` SMALLINT(5) DEFAULT NULL;
-ALTER TABLE `zenylog` MODIFY `type` ENUM('T','V','P','M','S','N','D','C','A','E','I','B') NOT NULL DEFAULT 'S';
-
ALTER TABLE `elemental` CHANGE COLUMN `str` `atk1` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT 0,
CHANGE COLUMN `agi` `atk2` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT 0,
CHANGE COLUMN `vit` `matk` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT 0,
@@ -92,8 +78,6 @@ ALTER TABLE `elemental` CHANGE COLUMN `str` `atk1` MEDIUMINT(6) UNSIGNED NOT NUL
ADD COLUMN `hit` SMALLINT(4) UNSIGNED NOT NULL DEFAULT 0 AFTER `flee`,
ADD COLUMN `life_time` INT(11) NOT NULL DEFAULT 0 AFTER `hit`;
-ALTER TABLE `picklog` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0' AFTER `card3`;
-
CREATE TABLE IF NOT EXISTS `interreg` (
`varname` VARCHAR(11) NOT NULL,
`value` VARCHAR(20) NOT NULL,
@@ -114,8 +98,6 @@ ALTER TABLE `mail` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0';
ALTER TABLE `storage` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0';
-ALTER TABLE `picklog` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0';
-
UPDATE `interreg` SET `varname` = 'unique_id' WHERE `interreg`.`varname` = 'nsiuid';
ALTER TABLE `auction` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0';
@@ -129,4 +111,3 @@ ALTER TABLE `inventory` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAUL
ALTER TABLE `mail` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0';
ALTER TABLE `storage` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0';
-
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 889deac49..b284323fd 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1531,7 +1531,7 @@ ACMD(help) {
}
// Display help contents
- clif->message(fd, tinfo->help);
+ clif->messageln(fd, tinfo->help);
return true;
}
@@ -10092,8 +10092,8 @@ void atcommand_config_read(const char* config_filename) {
if( commandinfo->help == NULL ) {
const char *str = libconfig->setting_get_string(command);
size_t len = strlen(str);
- commandinfo->help = aMalloc( len * sizeof(char) );
- safestrncpy(commandinfo->help, str, len);
+ commandinfo->help = aMalloc(len + 1);
+ safestrncpy(commandinfo->help, str, len + 1);
}
}
}
diff --git a/src/map/battle.c b/src/map/battle.c
index c28aef820..b19e13438 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -1188,9 +1188,9 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
else if( cardfix != 1000 )
damage = damage * cardfix / 1000;
#else
- if ( (cflag & 1) && cardfix_ != 100 )
- damage += damage * (cardfix - 100) / 100;
- else if ( cardfix != 100 )
+ if ((cflag & 1) && cardfix_ != 100)
+ damage += damage * (cardfix_ - 100) / 100;
+ else if (cardfix != 100)
damage += damage * (cardfix - 100) / 100;
#endif
}
diff --git a/src/map/clif.c b/src/map/clif.c
index 6fb7dd04e..63a36fa62 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -1043,7 +1043,7 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
p.font = (sd) ? sd->status.font : 0;
#endif
#if PACKETVER >= 20150000 //actual 20120221
- if( bl->type == BL_MOB ) {
+ if (bl->type == BL_MOB && battle_config.show_monster_hp_bar) {
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
p.isBoss = ( ((TBL_MOB*)bl)->spawn && ((TBL_MOB*)bl)->spawn->state.boss ) ? 1 : 0;
@@ -1174,7 +1174,7 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
p.font = (sd) ? sd->status.font : 0;
#endif
#if PACKETVER >= 20150000 //actual 20120221
- if( bl->type == BL_MOB ) {
+ if (bl->type == BL_MOB && battle_config.show_monster_hp_bar) {
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
p.isBoss = ( ((TBL_MOB*)bl)->spawn && ((TBL_MOB*)bl)->spawn->state.boss ) ? 1 : 0;
@@ -1256,7 +1256,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
p.font = (sd) ? sd->status.font : 0;
#endif
#if PACKETVER >= 20150000 //actual 20120221
- if( bl->type == BL_MOB ) {
+ if (bl->type == BL_MOB && battle_config.show_monster_hp_bar) {
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
p.isBoss = ( ((TBL_MOB*)bl)->spawn && ((TBL_MOB*)bl)->spawn->state.boss ) ? 1 : 0;
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index c804e4b4f..f508f5c1d 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -535,6 +535,8 @@ struct item_data {
#define itemdb_iscashfood(n) ((n) >= ITEMID_STR_DISH10_ && (n) <= ITEMID_VIT_DISH10_)
#define itemdb_is_GNbomb(n) ((n) >= ITEMID_APPLE_BOMB && (n) <= ITEMID_VERY_HARD_LUMP)
#define itemdb_is_GNthrowable(n) ((n) >= ITEMID_MYSTERIOUS_POWDER && (n) <= ITEMID_BLACK_THING_TO_THROW)
+#define itemdb_is_shadowequip(n) ((n) & (EQP_SHADOW_ARMOR|EQP_SHADOW_WEAPON|EQP_SHADOW_SHIELD|EQP_SHADOW_SHOES|EQP_SHADOW_ACC_R|EQP_SHADOW_ACC_L))
+#define itemdb_is_costumeequip(n) ((n) & (EQP_COSTUME_HEAD_TOP|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_LOW|EQP_COSTUME_GARMENT))
//Item trade restrictions [Skotlex]
#define itemdb_isdropable(item, gmlv) (itemdb->isrestricted((item), (gmlv), 0, itemdb->isdropable_sub))
diff --git a/src/map/npc.c b/src/map/npc.c
index 82365efba..9af6de518 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -313,8 +313,13 @@ int npc_rr_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
* This guy's been idle for longer than allowed, close him.
**/
clif->scriptclose(sd,sd->npc_id);
- clif->scriptclear(sd,sd->npc_id);
sd->npc_idle_timer = INVALID_TIMER;
+ /**
+ * We will end the script ourselves, client will request to end it again if it have dialog,
+ * however it will be ignored, workaround for client stuck if NPC have no dialog. [hemagx]
+ **/
+ sd->state.dialog = 0;
+ npc->scriptcont(sd, sd->npc_id, true);
} else //Create a new instance of ourselves to continue
sd->npc_idle_timer = timer->add(timer->gettick() + (SECURE_NPCTIMEOUT_INTERVAL*1000),npc->secure_timeout_timer,sd->bl.id,0);
#endif
diff --git a/src/map/pc.c b/src/map/pc.c
index 567348d20..43d320a80 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -928,6 +928,11 @@ int pc_isequip(struct map_session_data *sd,int n)
if(item == NULL)
return 0;
+#if PACKETVER <= 20100707
+ if (itemdb_is_shadowequip(item->equip) || itemdb_is_costumeequip(item->equip))
+ return 0;
+#endif
+
if(pc_has_permission(sd, PC_PERM_USE_ALL_EQUIPMENT))
return 1;
diff --git a/src/map/script.c b/src/map/script.c
index 00985c2a5..7a5292159 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -2644,6 +2644,36 @@ TBL_PC *script_rid2sd(struct script_state *st) {
return sd;
}
+TBL_PC *script_id2sd(struct script_state *st, int account_id) {
+ TBL_PC *sd;
+ if ((sd = map->id2sd(account_id)) == NULL) {
+ ShowWarning("script_id2sd: Player with account ID '%d' not found!\n", account_id);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ }
+ return sd;
+}
+
+TBL_PC *script_charid2sd(struct script_state *st, int char_id) {
+ TBL_PC *sd;
+ if ((sd = map->charid2sd(char_id)) == NULL) {
+ ShowWarning("script_charid2sd: Player with char ID '%d' not found!\n", char_id);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ }
+ return sd;
+}
+
+TBL_PC *script_nick2sd(struct script_state *st, const char *name) {
+ TBL_PC *sd;
+ if ((sd = map->nick2sd(name)) == NULL) {
+ ShowWarning("script_nick2sd: Player name '%s' not found!\n", name);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ }
+ return sd;
+}
+
char *get_val_npcscope_str(struct script_state* st, struct reg_db *n, struct script_data* data) {
if (n)
return (char*)i64db_get(n->vars, reference_getuid(data));
@@ -5928,8 +5958,8 @@ BUILDIN(warpchar) {
y=script_getnum(st,4);
a=script_getnum(st,5);
- sd = map->charid2sd(a);
- if( sd == NULL )
+ sd = script->charid2sd(st, a);
+ if (sd == NULL)
return true;
if(strcmp(str, "Random") == 0)
@@ -6975,8 +7005,8 @@ BUILDIN(checkweight2)
TBL_PC *sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
data_it = script_getdata(st, 2);
data_nb = script_getdata(st, 3);
@@ -7117,12 +7147,12 @@ BUILDIN(getitem) {
offset += 1;
}
- if( script_hasdata(st,4+offset) )
- sd=map->id2sd(script_getnum(st,4+offset)); // <Account ID>
+ if (script_hasdata(st,4+offset))
+ sd = script->id2sd(st, script_getnum(st,4+offset)); // <Account ID>
else
sd=script->rid2sd(st); // Attached player
- if( sd == NULL ) // no target
+ if (sd == NULL) // no target
return true;
//Check if it's stackable.
@@ -7163,12 +7193,12 @@ BUILDIN(getitem2)
offset += 1;
}
- if( script_hasdata(st,11+offset) )
- sd=map->id2sd(script_getnum(st,11+offset)); // <Account ID>
+ if (script_hasdata(st,11+offset))
+ sd = script->id2sd(st, script_getnum(st,11+offset)); // <Account ID>
else
sd=script->rid2sd(st); // Attached player
- if( sd == NULL ) // no target
+ if (sd == NULL) // no target
return true;
if( script_isstringtype(st, 2) ) {
@@ -7334,12 +7364,12 @@ BUILDIN(getnameditem) {
return true;
}
- if( script_isstringtype(st, 3) ) //Char Name
- tsd=map->nick2sd(script_getstr(st, 3));
+ if (script_isstringtype(st, 3)) //Char Name
+ tsd = script->nick2sd(st, script_getstr(st, 3));
else //Char Id was given
- tsd=map->charid2sd(script_getnum(st, 3));
+ tsd = script->charid2sd(st, script_getnum(st, 3));
- if( tsd == NULL ) {
+ if (tsd == NULL) {
//Failed
script_pushint(st,0);
return true;
@@ -7583,11 +7613,10 @@ BUILDIN(delitem) {
if (script_hasdata(st,4)) {
int account_id = script_getnum(st,4);
- sd = map->id2sd(account_id); // <account id>
+ sd = script->id2sd(st, account_id); // <account id>
if (sd == NULL) {
- ShowError("script:delitem: player not found (AID=%d).\n", account_id);
st->state = END;
- return false;
+ return true;
}
} else {
sd = script->rid2sd(st);// attached player
@@ -7640,11 +7669,10 @@ BUILDIN(delitem2) {
if (script_hasdata(st,11)) {
int account_id = script_getnum(st,11);
- sd = map->id2sd(account_id); // <account id>
+ sd = script->id2sd(st, account_id); // <account id>
if (sd == NULL) {
- ShowError("script:delitem2: player not found (AID=%d).\n", account_id);
st->state = END;
- return false;
+ return true;
}
} else {
sd = script->rid2sd(st);// attached player
@@ -7724,12 +7752,12 @@ BUILDIN(readparam) {
TBL_PC *sd;
type=script_getnum(st,2);
- if( script_hasdata(st,3) )
- sd=map->nick2sd(script_getstr(st,3));
+ if (script_hasdata(st,3))
+ sd = script->nick2sd(st, script_getstr(st,3));
else
sd=script->rid2sd(st);
- if(sd==NULL) {
+ if (sd == NULL) {
script_pushint(st,-1);
return true;
}
@@ -8936,8 +8964,8 @@ BUILDIN(guildskill) {
struct guild_skill gd_skill;
sd = script->rid2sd(st);
- if( sd == NULL )
- return false; // no player attached, report source
+ if (sd == NULL)
+ return true; // no player attached, report source
if( (gd = sd->guild) == NULL )
return true;
@@ -9035,7 +9063,7 @@ BUILDIN(getgroupid)
sd = script->rid2sd(st);
if (sd == NULL)
- return false; // no player attached, report source
+ return true; // no player attached, report source
script_pushint(st, pc_get_group_id(sd));
return true;
@@ -9414,8 +9442,8 @@ BUILDIN(savepoint) {
TBL_PC* sd;
sd = script->rid2sd(st);
- if( sd == NULL )
- return false;// no player attached, report source
+ if (sd == NULL)
+ return true; // no player attached, report source
str = script_getstr(st,2);
x = script_getnum(st,3);
@@ -9699,9 +9727,9 @@ BUILDIN(guildchangegm) {
guild_id = script_getnum(st,2);
name = script_getstr(st,3);
- sd=map->nick2sd(name);
+ sd = script->nick2sd(st, name);
- if (!sd)
+ if (sd == NULL)
script_pushint(st,0);
else
script_pushint(st,guild->gm_change(guild_id, sd));
@@ -10020,16 +10048,16 @@ BUILDIN(clone) {
m = map->mapname2mapid(mapname);
if (m < 0) return true;
- sd = map->charid2sd(char_id);
+ sd = script->charid2sd(st, char_id);
if (master_id) {
msd = map->charid2sd(master_id);
- if (msd)
+ if (msd != NULL)
master_id = msd->bl.id;
else
master_id = 0;
}
- if (sd) //Return ID of newly crafted clone.
+ if (sd != NULL) //Return ID of newly crafted clone.
script_pushint(st,mob->clone_spawn(sd, m, x, y, event, master_id, mode, flag, 1000*duration));
else //Failed to create clone.
script_pushint(st,0);
@@ -10266,16 +10294,14 @@ BUILDIN(getnpctimer) {
switch( type ) {
case 0: val = (int)npc->gettimerevent_tick(nd); break; // FIXME: change this to int64 when we'll support 64 bit script values
case 1:
- if( nd->u.scr.rid ) {
- sd = map->id2sd(nd->u.scr.rid);
- if( !sd ) {
- ShowError("buildin_getnpctimer: Attached player not found!\n");
+ if (nd->u.scr.rid) {
+ sd = script->id2sd(st, nd->u.scr.rid);
+ if (sd == NULL)
break;
- }
val = (sd->npc_timer_id != INVALID_TIMER);
- }
- else
+ } else {
val = (nd->u.scr.timerid != INVALID_TIMER);
+ }
break;
case 2: val = nd->u.scr.timeramount; break;
}
@@ -10321,16 +10347,14 @@ BUILDIN(attachnpctimer) {
return false;
}
- if( script_hasdata(st,2) )
- sd = map->nick2sd(script_getstr(st,2));
+ if (script_hasdata(st,2))
+ sd = script->nick2sd(st, script_getstr(st,2));
else
sd = script->rid2sd(st);
- if( !sd )
- {
+ if (sd == NULL) {
script_pushint(st,1);
- ShowWarning("attachnpctimer: Invalid player.\n");
- return false;
+ return true;
}
nd->u.scr.rid = sd->bl.id;
@@ -10438,8 +10462,8 @@ BUILDIN(itemeffect) {
struct item_data *item_data;
sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
nd = (TBL_NPC *)map->id2bl(sd->npc_id);
if( nd == NULL )
@@ -10639,9 +10663,9 @@ BUILDIN(getareausers)
idx = 3;
} else {
TBL_PC *sd = script->rid2sd(st);
- if (!sd) {
+ if (sd == NULL) {
script_pushint(st, -1);
- return false;
+ return true;
}
m = sd->bl.m;
}
@@ -11195,10 +11219,9 @@ BUILDIN(resetlvl)
*------------------------------------------*/
BUILDIN(resetstatus)
{
- TBL_PC *sd;
- sd=script->rid2sd(st);
- if( sd == NULL )
- return false;
+ TBL_PC *sd = script->rid2sd(st);
+ if (sd == NULL)
+ return true;
pc->resetstate(sd);
return true;
}
@@ -11206,11 +11229,11 @@ BUILDIN(resetstatus)
/*==========================================
* script command resetskill
*------------------------------------------*/
-BUILDIN(resetskill) {
- TBL_PC *sd;
- sd=script->rid2sd(st);
- if( sd == NULL )
- return false;
+BUILDIN(resetskill)
+{
+ TBL_PC *sd = script->rid2sd(st);
+ if (sd == NULL)
+ return true;
pc->resetskill(sd, PCRESETSKILL_RESYNC);
return true;
}
@@ -11218,11 +11241,11 @@ BUILDIN(resetskill) {
/*==========================================
* Counts total amount of skill points.
*------------------------------------------*/
-BUILDIN(skillpointcount) {
- TBL_PC *sd;
- sd=script->rid2sd(st);
- if( sd == NULL )
- return false;
+BUILDIN(skillpointcount)
+{
+ TBL_PC *sd = script->rid2sd(st);
+ if (sd == NULL)
+ return true;
script_pushint(st,sd->status.skill_point + pc->resetskill(sd, PCRESETSKILL_RECOUNT));
return true;
}
@@ -11234,12 +11257,12 @@ BUILDIN(changebase) {
TBL_PC *sd=NULL;
int vclass;
- if( script_hasdata(st,3) )
- sd=map->id2sd(script_getnum(st,3));
+ if (script_hasdata(st,3))
+ sd = script->id2sd(st, script_getnum(st,3));
else
sd=script->rid2sd(st);
- if(sd == NULL)
+ if (sd == NULL)
return true;
vclass = script_getnum(st,2);
@@ -11279,7 +11302,7 @@ BUILDIN(changesex)
{
TBL_PC *sd = prepareChangeSex(st);
if (sd == NULL)
- return false;
+ return true;
chrif->changesex(sd, true);
return true;
}
@@ -11291,7 +11314,7 @@ BUILDIN(changecharsex)
{
TBL_PC *sd = prepareChangeSex(st);
if (sd == NULL)
- return false;
+ return true;
chrif->changesex(sd, false);
return true;
}
@@ -12019,13 +12042,13 @@ BUILDIN(emotion) {
if( script_hasdata(st,3) )
player=script_getnum(st,3);
- if (player) {
+ if (player != 0) {
TBL_PC *sd = NULL;
- if( script_hasdata(st,4) )
- sd = map->nick2sd(script_getstr(st,4));
+ if (script_hasdata(st,4))
+ sd = script->nick2sd(st, script_getstr(st,4));
else
sd = script->rid2sd(st);
- if (sd)
+ if (sd != NULL)
clif->emotion(&sd->bl,type);
} else if( script_hasdata(st,4) ) {
TBL_NPC *nd = npc->name2id(script_getstr(st,4));
@@ -12250,10 +12273,10 @@ BUILDIN(getequipcardcnt)
int count;
num=script_getnum(st,2);
- sd=script->rid2sd(st);
+ sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (num > 0 && num <= ARRAYLENGTH(script->equip))
i=pc->checkequip(sd,script->equip[num-1]);
@@ -12285,11 +12308,11 @@ BUILDIN(successremovecards)
{
int i=-1,c,cardflag=0;
- TBL_PC* sd = script->rid2sd(st);
+ TBL_PC *sd = script->rid2sd(st);
int num = script_getnum(st,2);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (num > 0 && num <= ARRAYLENGTH(script->equip))
i=pc->checkequip(sd,script->equip[num-1]);
@@ -12356,12 +12379,12 @@ BUILDIN(failedremovecards)
{
int i=-1,c,cardflag=0;
- TBL_PC* sd = script->rid2sd(st);
+ TBL_PC *sd = script->rid2sd(st);
int num = script_getnum(st,2);
int typefail = script_getnum(st,3);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (num > 0 && num <= ARRAYLENGTH(script->equip))
i=pc->checkequip(sd,script->equip[num-1]);
@@ -12509,8 +12532,8 @@ BUILDIN(mobcount) {
if( strcmp(mapname, "this") == 0 ) {
struct map_session_data *sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
m = sd->bl.m;
} else if( (m = map->mapname2mapid(mapname)) < 0 ) {
@@ -12531,9 +12554,9 @@ BUILDIN(mobcount) {
BUILDIN(marriage) {
const char *partner=script_getstr(st,2);
TBL_PC *sd=script->rid2sd(st);
- TBL_PC *p_sd=map->nick2sd(partner);
+ TBL_PC *p_sd = script->nick2sd(st, partner);
- if(sd==NULL || p_sd==NULL || pc->marriage(sd,p_sd) < 0) {
+ if (sd == NULL || p_sd == NULL || pc->marriage(sd,p_sd) < 0) {
script_pushint(st,0);
return true;
}
@@ -12541,11 +12564,11 @@ BUILDIN(marriage) {
return true;
}
BUILDIN(wedding_effect) {
- TBL_PC *sd=script->rid2sd(st);
+ TBL_PC *sd = script->rid2sd(st);
struct block_list *bl;
- if( sd == NULL )
- return false; //bl=map->id2bl(st->oid);
+ if (sd == NULL)
+ return true; //bl=map->id2bl(st->oid);
bl=&sd->bl;
clif->wedding_effect(bl);
@@ -12575,28 +12598,31 @@ BUILDIN(ispartneron) {
return true;
}
-BUILDIN(getpartnerid) {
- TBL_PC *sd=script->rid2sd(st);
- if( sd == NULL )
- return false;
+BUILDIN(getpartnerid)
+{
+ TBL_PC *sd = script->rid2sd(st);
+ if (sd == NULL)
+ return true;
script_pushint(st,sd->status.partner_id);
return true;
}
-BUILDIN(getchildid) {
- TBL_PC *sd=script->rid2sd(st);
- if( sd == NULL )
- return false;
+BUILDIN(getchildid)
+{
+ TBL_PC *sd = script->rid2sd(st);
+ if (sd == NULL)
+ return true;
script_pushint(st,sd->status.child);
return true;
}
-BUILDIN(getmotherid) {
- TBL_PC *sd=script->rid2sd(st);
- if( sd == NULL )
- return false;
+BUILDIN(getmotherid)
+{
+ TBL_PC *sd = script->rid2sd(st);
+ if (sd == NULL)
+ return true;
script_pushint(st,sd->status.mother);
return true;
@@ -12605,7 +12631,7 @@ BUILDIN(getmotherid) {
BUILDIN(getfatherid) {
TBL_PC *sd=script->rid2sd(st);
if( sd == NULL )
- return false;
+ return true;
script_pushint(st,sd->status.father);
return true;
@@ -12619,8 +12645,8 @@ BUILDIN(warppartner)
TBL_PC *sd=script->rid2sd(st);
TBL_PC *p_sd=NULL;
- if ( sd==NULL || !pc->ismarried(sd)
- || (p_sd=map->charid2sd(sd->status.partner_id)) == NULL) {
+ if (sd == NULL || !pc->ismarried(sd)
+ || (p_sd = script->charid2sd(st, sd->status.partner_id)) == NULL) {
script_pushint(st,0);
return true;
}
@@ -12929,10 +12955,10 @@ BUILDIN(getequipcardid)
num=script_getnum(st,2);
slot=script_getnum(st,3);
- sd=script->rid2sd(st);
+ sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (num > 0 && num <= ARRAYLENGTH(script->equip))
i=pc->checkequip(sd,script->equip[num-1]);
@@ -13439,10 +13465,10 @@ BUILDIN(skilleffect) {
uint16 skill_id=( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) );
uint16 skill_lv=script_getnum(st,3);
- sd=script->rid2sd(st);
+ sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
/* ensure we're standing because the following packet causes the client to virtually set the char to stand,
* which leaves the server thinking it still is sitting. */
@@ -13511,12 +13537,12 @@ BUILDIN(specialeffect2) {
int type = script_getnum(st,2);
enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
- if( script_hasdata(st,4) )
- sd = map->nick2sd(script_getstr(st,4));
+ if (script_hasdata(st,4))
+ sd = script->nick2sd(st, script_getstr(st,4));
else
sd = script->rid2sd(st);
- if (sd)
+ if (sd != NULL)
clif->specialeffect(&sd->bl, type, target);
return true;
@@ -13560,8 +13586,8 @@ BUILDIN(atcommand) {
if (st->rid) {
sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
fd = sd->fd;
} else { //Use a dummy character.
sd = dummy_sd = pc->get_dummy_sd();
@@ -13584,16 +13610,28 @@ BUILDIN(atcommand) {
return ret;
}
-/*==========================================
- * Displays a message for the player only (like system messages like "you got an apple" )
- *------------------------------------------*/
+/**
+ * Displays a message for the player only (like system messages like "you got an apple")
+ *
+ * @code
+ * dispbottom "<message>"{,<color>};
+ * @endcode
+ */
BUILDIN(dispbottom)
{
- TBL_PC *sd=script->rid2sd(st);
- const char *message;
- message=script_getstr(st,2);
- if(sd)
- clif_disp_onlyself(sd,message,(int)strlen(message));
+ TBL_PC *sd = script->rid2sd(st);
+ const char *message = script_getstr(st,2);
+
+ if (sd == NULL)
+ return true;
+
+ if (script_hasdata(st,3)) {
+ int color = script_getnum(st,3);
+ clif->messagecolor_self(sd->fd, color, message);
+ } else {
+ clif_disp_onlyself(sd, message, (int)strlen(message));
+ }
+
return true;
}
@@ -13698,10 +13736,9 @@ BUILDIN(getmercinfo)
if (script_hasdata(st,3)) {
int char_id = script_getnum(st,3);
- if ((sd = map->charid2sd(char_id)) == NULL) {
- ShowError("buildin_getmercinfo: No such character (char_id=%d).\n", char_id);
+ if ((sd = script->charid2sd(st, char_id)) == NULL) {
script_pushnil(st);
- return false;
+ return true;
}
} else {
if ((sd = script->rid2sd(st)) == NULL)
@@ -13742,10 +13779,10 @@ BUILDIN(getmercinfo)
BUILDIN(checkequipedcard)
{
int n,i,c=0;
- TBL_PC *sd=script->rid2sd(st);
+ TBL_PC *sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
c = script_getnum(st,2);
@@ -13809,16 +13846,21 @@ BUILDIN(movenpc) {
/*==========================================
* message [MouseJstr]
*------------------------------------------*/
-BUILDIN(message) {
- const char *msg,*player;
- TBL_PC *pl_sd = NULL;
+BUILDIN(message)
+{
+ const char *message;
+ TBL_PC *sd = NULL;
- player = script_getstr(st,2);
- msg = script_getstr(st,3);
+ if (script_isstringtype(st,2))
+ sd = script->nick2sd(st, script_getstr(st,2));
+ else
+ sd = script->id2sd(st, script_getnum(st,2));
- if((pl_sd=map->nick2sd((char *) player)) == NULL)
+ if (sd == NULL)
return true;
- clif->message(pl_sd->fd, msg);
+
+ message = script_getstr(st,3);
+ clif->message(sd->fd, message);
return true;
}
@@ -14009,14 +14051,12 @@ BUILDIN(getnpcclass)
*------------------------------------------*/
BUILDIN(getlook)
{
- int type,val;
- TBL_PC *sd;
- sd=script->rid2sd(st);
- if( sd == NULL )
- return false;
+ int type,val = -1;
+ TBL_PC *sd = script->rid2sd(st);
+ if (sd == NULL)
+ return true;
type=script_getnum(st,2);
- val = -1;
switch(type) {
case LOOK_HAIR: val = sd->status.hair; break; //1
case LOOK_WEAPON: val = sd->status.weapon; break; //2
@@ -14039,12 +14079,11 @@ BUILDIN(getlook)
*------------------------------------------*/
BUILDIN(getsavepoint)
{
- TBL_PC* sd;
int type;
+ TBL_PC *sd = script->rid2sd(st);
- sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
type = script_getnum(st,2);
@@ -14283,11 +14322,10 @@ BUILDIN(getmapxy)
BUILDIN(logmes)
{
const char *str;
- TBL_PC* sd;
+ TBL_PC *sd = script->rid2sd(st);
- sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
str = script_getstr(st,2);
logs->npc(sd,str);
@@ -14344,13 +14382,12 @@ BUILDIN(isnight) {
*------------------------------------------------*/
BUILDIN(isequippedcnt)
{
- TBL_PC *sd;
int i, j, k, id = 1;
int ret = 0;
+ TBL_PC *sd = script->rid2sd(st);
- sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
for (i=0; id!=0; i++) {
script_fetch(st,i+2, id);
@@ -14394,17 +14431,15 @@ BUILDIN(isequippedcnt)
*------------------------------------------------*/
BUILDIN(isequipped)
{
- TBL_PC *sd;
int i, j, k, id = 1;
int index, flag;
int ret = -1;
//Original hash to reverse it when full check fails.
unsigned int setitem_hash = 0, setitem_hash2 = 0;
+ TBL_PC *sd = script->rid2sd(st);
- sd = script->rid2sd(st);
-
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
setitem_hash = sd->bonus.setitem_hash;
setitem_hash2 = sd->bonus.setitem_hash2;
@@ -14474,16 +14509,15 @@ BUILDIN(isequipped)
* Check how many given inserted cards in the CURRENT
* weapon - used for 2/15's cards patch [Lupus]
*------------------------------------------------*/
-BUILDIN(cardscnt) {
- TBL_PC *sd;
+BUILDIN(cardscnt)
+{
int i, k, id = 1;
int ret = 0;
int index;
+ TBL_PC *sd = script->rid2sd(st);
- sd = script->rid2sd(st);
-
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
for (i=0; id!=0; i++) {
script_fetch(st,i+2, id);
@@ -14517,12 +14551,12 @@ BUILDIN(cardscnt) {
* Returns the refined number of the current item, or an
* item with inventory index specified
*-------------------------------------------------------*/
-BUILDIN(getrefine) {
- TBL_PC *sd;
+BUILDIN(getrefine)
+{
+ TBL_PC *sd = script->rid2sd(st);
- sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
script_pushint(st,sd->status.inventory[status->current_equip_item_index].refine);
return true;
@@ -14612,11 +14646,9 @@ BUILDIN(equip2)
{
int i,nameid,ref,attr,c0,c1,c2,c3;
struct item_data *item_data;
- TBL_PC *sd;
-
- sd = script->rid2sd(st);
+ TBL_PC *sd = script->rid2sd(st);
- if ( sd == NULL ) {
+ if (sd == NULL) {
script_pushint(st,0);
return true;
}
@@ -14903,17 +14935,14 @@ BUILDIN(explode)
const char delimiter = script_getstr(st, 4)[0];
int32 id;
size_t len = strlen(str);
- int i = 0, j = 0;
+ int i = 0, j = 0, k = 0;
int start;
- char *temp;
- const char* name;
+ char *temp = NULL;
+ const char *name;
TBL_PC* sd = NULL;
- temp = (char*)aMalloc(len + 1);
-
- if( !data_isreference(data) )
- {
+ if (!data_isreference(data)) {
ShowError("script:explode: not a variable\n");
script->reportdata(data);
st->state = END;
@@ -14924,36 +14953,39 @@ BUILDIN(explode)
start = reference_getindex(data);
name = reference_getname(data);
- if( !is_string_variable(name) )
- {
+ if (!is_string_variable(name)) {
ShowError("script:explode: not string array\n");
script->reportdata(data);
st->state = END;
return false;// data type mismatch
}
- if( not_server_variable(*name) )
- {
+ if (not_server_variable(*name)) {
sd = script->rid2sd(st);
- if( sd == NULL )
+ if (sd == NULL)
return true;// no player attached
}
- while(str[i] != '\0') {
- if(str[i] == delimiter && start < SCRIPT_MAX_ARRAYSIZE-1) { //break at delimiter but ignore after reaching last array index
+ temp = aMalloc(len + 1);
+
+ for (i = 0; str[i] != '\0'; i++) {
+ if (str[i] == delimiter && (int64)start + k < (int64)(SCRIPT_MAX_ARRAYSIZE-1)) { // FIXME[Haru]: SCRIPT_MAX_ARRAYSIZE should really be unsigned (and INT32_MAX)
+ //break at delimiter but ignore after reaching last array index
temp[j] = '\0';
- script->set_reg(st, sd, reference_uid(id, start++), name, (void*)temp, reference_getref(data));
+ script->set_reg(st, sd, reference_uid(id, start + k), name, (void*)temp, reference_getref(data));
+ k++;
j = 0;
- ++i;
} else {
- temp[j++] = str[i++];
+ temp[j++] = str[i];
}
}
//set last string
temp[j] = '\0';
- script->set_reg(st, sd, reference_uid(id, start), name, (void*)temp, reference_getref(data));
+ script->set_reg(st, sd, reference_uid(id, start + k), name, (void*)temp, reference_getref(data));
aFree(temp);
+
+ script_pushint(st, k + 1);
return true;
}
@@ -15851,13 +15883,13 @@ BUILDIN(petstat)
BUILDIN(callshop)
{
- TBL_PC *sd = NULL;
struct npc_data *nd;
const char *shopname;
int flag = 0;
- sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ TBL_PC *sd = script->rid2sd(st);
+
+ if (sd == NULL)
+ return true;
shopname = script_getstr(st, 2);
if( script_hasdata(st,3) )
flag = script_getnum(st,3);
@@ -16211,12 +16243,12 @@ BUILDIN(checkvending) // check vending [Nab4]
{
TBL_PC *sd = NULL;
- if(script_hasdata(st,2))
- sd = map->nick2sd(script_getstr(st,2));
+ if (script_hasdata(st,2))
+ sd = script->nick2sd(st, script_getstr(st,2));
else
sd = script->rid2sd(st);
- if(sd)
+ if (sd != NULL)
script_pushint(st, sd->state.autotrade ? 2 : sd->state.vending);
else
script_pushint(st,0);
@@ -16228,12 +16260,12 @@ BUILDIN(checkvending) // check vending [Nab4]
BUILDIN(checkchatting) {
TBL_PC *sd = NULL;
- if(script_hasdata(st,2))
- sd = map->nick2sd(script_getstr(st,2));
+ if (script_hasdata(st,2))
+ sd = script->nick2sd(st, script_getstr(st,2));
else
sd = script->rid2sd(st);
- if(sd)
+ if (sd != NULL)
script_pushint(st,(sd->chatID != 0));
else
script_pushint(st,0);
@@ -16245,11 +16277,11 @@ BUILDIN(checkidle) {
TBL_PC *sd = NULL;
if (script_hasdata(st, 2))
- sd = map->nick2sd(script_getstr(st, 2));
+ sd = script->nick2sd(st, script_getstr(st, 2));
else
sd = script->rid2sd(st);
- if (sd)
+ if (sd != NULL)
script_pushint(st, DIFF_TICK32(sockt->last_tick, sd->idletime)); // TODO: change this to int64 when we'll support 64 bit script values
else
script_pushint(st, 0);
@@ -16350,12 +16382,12 @@ BUILDIN(pcblockmove) {
id = script_getnum(st,2);
flag = script_getnum(st,3);
- if(id)
- sd = map->id2sd(id);
+ if (id != 0)
+ sd = script->id2sd(st, id);
else
sd = script->rid2sd(st);
- if(sd)
+ if (sd != NULL)
sd->state.blockedmove = flag > 0;
return true;
@@ -16368,12 +16400,12 @@ BUILDIN(pcfollow) {
id = script_getnum(st,2);
targetid = script_getnum(st,3);
- if(id)
- sd = map->id2sd(id);
+ if (id != 0)
+ sd = script->id2sd(st, id);
else
sd = script->rid2sd(st);
- if(sd)
+ if (sd != NULL)
pc->follow(sd, targetid);
return true;
@@ -16386,12 +16418,12 @@ BUILDIN(pcstopfollow)
id = script_getnum(st,2);
- if(id)
- sd = map->id2sd(id);
+ if (id != 0)
+ sd = script->id2sd(st, id);
else
sd = script->rid2sd(st);
- if(sd)
+ if (sd != NULL)
pc->stop_following(sd);
return true;
@@ -16524,12 +16556,13 @@ BUILDIN(unitattack) {
return true;
}
- if( script_isstringtype(st, 3) ) {
- TBL_PC* sd = map->nick2sd(script_getstr(st, 3));
- if( sd != NULL )
+ if (script_isstringtype(st, 3)) {
+ TBL_PC* sd = script->nick2sd(st, script_getstr(st, 3));
+ if (sd != NULL)
target_bl = &sd->bl;
- } else
+ } else {
target_bl = map->id2bl(script_getnum(st, 3));
+ }
// request the attack
if( target_bl == NULL )
{
@@ -17194,13 +17227,14 @@ BUILDIN(questinfo)
return true;
}
-BUILDIN(setquest) {
- struct map_session_data *sd = script->rid2sd(st);
+BUILDIN(setquest)
+{
unsigned short i;
int quest_id;
+ struct map_session_data *sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
quest_id = script_getnum(st, 2);
@@ -17225,8 +17259,8 @@ BUILDIN(erasequest)
{
struct map_session_data *sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (script_hasdata(st, 3)) {
int quest_id;
@@ -17248,8 +17282,8 @@ BUILDIN(completequest)
{
struct map_session_data *sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (script_hasdata(st, 3)) {
int quest_id;
@@ -17267,23 +17301,24 @@ BUILDIN(completequest)
return true;
}
-BUILDIN(changequest) {
+BUILDIN(changequest)
+{
struct map_session_data *sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
quest->change(sd, script_getnum(st, 2),script_getnum(st, 3));
return true;
}
-BUILDIN(questactive) {
+BUILDIN(questactive)
+{
struct map_session_data *sd = script->rid2sd(st);
int qid, i;
if (sd == NULL) {
- ShowError("questactive: no player attached!");
- return false;
+ return true;
}
qid = script_getnum(st, 2);
@@ -17303,13 +17338,14 @@ BUILDIN(questactive) {
return true;
}
-BUILDIN(questprogress) {
+BUILDIN(questprogress)
+{
struct map_session_data *sd = script->rid2sd(st);
enum quest_check_type type = HAVEQUEST;
int quest_progress = 0;
if (sd == NULL)
- return false;
+ return true;
if (script_hasdata(st, 3))
type = (enum quest_check_type)script_getnum(st, 3);
@@ -18346,20 +18382,27 @@ BUILDIN(getcharip) {
struct map_session_data* sd = NULL;
/* check if a character name is specified */
- if( script_hasdata(st, 2) ) {
+ if (script_hasdata(st, 2)) {
if (script_isstringtype(st, 2)) {
sd = map->nick2sd(script_getstr(st, 2));
} else {
int id = script_getnum(st, 2);
sd = (map->id2sd(id) ? map->id2sd(id) : map->charid2sd(id));
}
- } else {
- sd = script->rid2sd(st);
+ } else if ((sd = script->rid2sd(st)) == NULL) {
+ script_pushconststr(st, "");
+ return true;
}
- /* check for sd and IP */
- if (!sd || !sockt->session[sd->fd]->client_addr)
- {
+ if (sd == NULL) {
+ ShowWarning("buildin_getcharip: Player not found!\n");
+ script_pushconststr(st, "");
+ script->reportfunc(st);
+ return false;
+ }
+
+ /* check for IP */
+ if (!sockt->session[sd->fd]->client_addr) {
script_pushconststr(st, "");
return true;
}
@@ -18410,13 +18453,13 @@ BUILDIN(freeloop) {
BUILDIN(sit) {
struct map_session_data *sd = NULL;
- if( script_hasdata(st, 2) )
- sd = map->nick2sd(script_getstr(st, 2));
+ if (script_hasdata(st, 2))
+ sd = script->nick2sd(st, script_getstr(st, 2));
else
sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (!pc_issit(sd))
{
@@ -18430,13 +18473,13 @@ BUILDIN(sit) {
BUILDIN(stand) {
struct map_session_data *sd = NULL;
- if( script_hasdata(st, 2) )
- sd = map->nick2sd(script_getstr(st, 2));
+ if (script_hasdata(st, 2))
+ sd = script->nick2sd(st, script_getstr(st, 2));
else
sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (pc_issit(sd))
{
@@ -18450,13 +18493,13 @@ BUILDIN(stand) {
BUILDIN(issit) {
struct map_session_data *sd = NULL;
- if( script_hasdata(st, 2) )
- sd = map->nick2sd(script_getstr(st, 2));
+ if (script_hasdata(st, 2))
+ sd = script->nick2sd(st, script_getstr(st, 2));
else
sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if (pc_issit(sd))
script_pushint(st, 1);
@@ -18566,10 +18609,10 @@ BUILDIN(useatcmd) {
cmd = script_getstr(st,2);
- if( st->rid ) {
+ if (st->rid) {
sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
fd = sd->fd;
} else {
// Use a dummy character.
@@ -18747,21 +18790,17 @@ BUILDIN(cleanmap)
/* Cast a skill on the attached player.
* npcskill <skill id>, <skill lvl>, <stat point>, <NPC level>;
* npcskill "<skill name>", <skill lvl>, <stat point>, <NPC level>; */
-BUILDIN(npcskill) {
- uint16 skill_id;
- unsigned short skill_level;
- unsigned int stat_point;
- unsigned int npc_level;
+BUILDIN(npcskill)
+{
struct npc_data *nd;
- struct map_session_data *sd;
-
- skill_id = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2);
- skill_level = script_getnum(st, 3);
- stat_point = script_getnum(st, 4);
- npc_level = script_getnum(st, 5);
+ uint16 skill_id = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2);
+ unsigned short skill_level = script_getnum(st, 3);
+ unsigned int stat_point = script_getnum(st, 4);
+ unsigned int npc_level = script_getnum(st, 5);
+ struct map_session_data *sd = script->rid2sd(st);
- if( !(sd = script->rid2sd(st)) )
- return false;
+ if (sd == NULL)
+ return true;
nd = (struct npc_data *)map->id2bl(sd->npc_id);
@@ -18847,12 +18886,12 @@ BUILDIN(montransform) {
if (script_hasdata(st, 8))
val4 = script_getnum(st, 8);
- if( tick != 0 ) {
- struct map_session_data *sd = map->id2sd(bl->id);
+ if (tick != 0) {
+ struct map_session_data *sd = script->id2sd(st, bl->id);
struct mob_db *monster = mob->db(mob_id);
char msg[CHAT_SIZE_MAX];
- if( !sd )
+ if (sd == NULL)
return true;
if( battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m) ) {
@@ -19412,12 +19451,12 @@ BUILDIN(bg_join_team) {
struct map_session_data *sd;
int team_id = script_getnum(st, 2);
- if( script_hasdata(st, 3) )
- sd = map->id2sd(script_getnum(st, 3));
+ if (script_hasdata(st, 3))
+ sd = script->id2sd(st, script_getnum(st, 3));
else
sd = script->rid2sd(st);
- if( !sd )
+ if (sd == NULL)
script_pushint(st, -1);
else
script_pushint(st,bg->team_join(team_id, sd)?0:1);
@@ -19437,10 +19476,10 @@ BUILDIN(bg_join_team) {
BUILDIN(countbound)
{
int i, type, j=0, k=0;
- TBL_PC *sd;
+ TBL_PC *sd = script->rid2sd(st);
- if( (sd = script->rid2sd(st)) == NULL )
- return false;
+ if (sd == NULL)
+ return true;
type = script_hasdata(st,2)?script_getnum(st,2):0;
@@ -19473,11 +19512,10 @@ BUILDIN(checkbound)
{
int i, nameid = script_getnum(st,2);
int bound_type = 0;
- TBL_PC *sd;
+ TBL_PC *sd = script->rid2sd(st);
- sd = script->rid2sd(st);
- if( sd == NULL )
- return false;
+ if (sd == NULL)
+ return true;
if( !(itemdb->exists(nameid)) ){
ShowError("script_checkbound: Invalid item ID = %d\n", nameid);
@@ -20337,7 +20375,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(atcommand,"s"), // [MouseJstr]
BUILDIN_DEF2(atcommand,"charcommand","s"), // [MouseJstr]
BUILDIN_DEF(movenpc,"sii?"), // [MouseJstr]
- BUILDIN_DEF(message,"ss"), // [MouseJstr]
+ BUILDIN_DEF(message,"vs"), // [MouseJstr]
BUILDIN_DEF(npctalk,"s?"), // [Valaris]
BUILDIN_DEF(mobcount,"ss"),
BUILDIN_DEF(getlook,"i"),
@@ -20370,7 +20408,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(deletepset,"i"), // Delete a pattern set [MouseJstr]
BUILDIN_DEF(pcre_match,"ss"),
#endif
- BUILDIN_DEF(dispbottom,"s"), //added from jA [Lupus]
+ BUILDIN_DEF(dispbottom,"s?"), //added from jA [Lupus]
BUILDIN_DEF(getusersname,""),
BUILDIN_DEF(recovery,""),
BUILDIN_DEF(getpetinfo,"i"),
@@ -20855,6 +20893,9 @@ void script_defaults(void) {
script->conv_num = conv_num;
script->conv_str = conv_str;
script->rid2sd = script_rid2sd;
+ script->id2sd = script_id2sd;
+ script->charid2sd = script_charid2sd;
+ script->nick2sd = script_nick2sd;
script->detach_rid = script_detach_rid;
script->push_val = push_val;
script->get_val = get_val;
diff --git a/src/map/script.h b/src/map/script.h
index c47956eeb..36b7edef3 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -647,6 +647,9 @@ struct script_interface {
int (*conv_num) (struct script_state *st,struct script_data *data);
const char* (*conv_str) (struct script_state *st,struct script_data *data);
TBL_PC *(*rid2sd) (struct script_state *st);
+ TBL_PC *(*id2sd) (struct script_state *st, int account_id);
+ TBL_PC *(*charid2sd) (struct script_state *st, int char_id);
+ TBL_PC *(*nick2sd) (struct script_state *st, const char *name);
void (*detach_rid) (struct script_state* st);
struct script_data* (*push_val)(struct script_stack* stack, enum c_op type, int64 val, struct reg_db *ref);
struct script_data *(*get_val) (struct script_state* st, struct script_data* data);
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index 59844e766..92b2d4bd5 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -4456,6 +4456,12 @@ struct {
struct HPMHookPoint *HP_script_conv_str_post;
struct HPMHookPoint *HP_script_rid2sd_pre;
struct HPMHookPoint *HP_script_rid2sd_post;
+ struct HPMHookPoint *HP_script_id2sd_pre;
+ struct HPMHookPoint *HP_script_id2sd_post;
+ struct HPMHookPoint *HP_script_charid2sd_pre;
+ struct HPMHookPoint *HP_script_charid2sd_post;
+ struct HPMHookPoint *HP_script_nick2sd_pre;
+ struct HPMHookPoint *HP_script_nick2sd_post;
struct HPMHookPoint *HP_script_detach_rid_pre;
struct HPMHookPoint *HP_script_detach_rid_post;
struct HPMHookPoint *HP_script_push_val_pre;
@@ -10275,6 +10281,12 @@ struct {
int HP_script_conv_str_post;
int HP_script_rid2sd_pre;
int HP_script_rid2sd_post;
+ int HP_script_id2sd_pre;
+ int HP_script_id2sd_post;
+ int HP_script_charid2sd_pre;
+ int HP_script_charid2sd_post;
+ int HP_script_nick2sd_pre;
+ int HP_script_nick2sd_post;
int HP_script_detach_rid_pre;
int HP_script_detach_rid_post;
int HP_script_push_val_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index bc78fe8b4..4a18d529d 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -2282,6 +2282,9 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->conv_num, HP_script_conv_num) },
{ HP_POP(script->conv_str, HP_script_conv_str) },
{ HP_POP(script->rid2sd, HP_script_rid2sd) },
+ { HP_POP(script->id2sd, HP_script_id2sd) },
+ { HP_POP(script->charid2sd, HP_script_charid2sd) },
+ { HP_POP(script->nick2sd, HP_script_nick2sd) },
{ HP_POP(script->detach_rid, HP_script_detach_rid) },
{ HP_POP(script->push_val, HP_script_push_val) },
{ HP_POP(script->get_val, HP_script_get_val) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 4c828dc56..8f6ec125b 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -59445,6 +59445,87 @@ TBL_PC* HP_script_rid2sd(struct script_state *st) {
}
return retVal___;
}
+TBL_PC* HP_script_id2sd(struct script_state *st, int account_id) {
+ int hIndex = 0;
+ TBL_PC* retVal___ = NULL;
+ if( HPMHooks.count.HP_script_id2sd_pre ) {
+ TBL_PC* (*preHookFunc) (struct script_state *st, int *account_id);
+ *HPMforce_return = false;
+ for(hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_pre; hIndex++ ) {
+ preHookFunc = HPMHooks.list.HP_script_id2sd_pre[hIndex].func;
+ retVal___ = preHookFunc(st, &account_id);
+ }
+ if( *HPMforce_return ) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.id2sd(st, account_id);
+ }
+ if( HPMHooks.count.HP_script_id2sd_post ) {
+ TBL_PC* (*postHookFunc) (TBL_PC* retVal___, struct script_state *st, int *account_id);
+ for(hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_post; hIndex++ ) {
+ postHookFunc = HPMHooks.list.HP_script_id2sd_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, st, &account_id);
+ }
+ }
+ return retVal___;
+}
+TBL_PC* HP_script_charid2sd(struct script_state *st, int char_id) {
+ int hIndex = 0;
+ TBL_PC* retVal___ = NULL;
+ if( HPMHooks.count.HP_script_charid2sd_pre ) {
+ TBL_PC* (*preHookFunc) (struct script_state *st, int *char_id);
+ *HPMforce_return = false;
+ for(hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_pre; hIndex++ ) {
+ preHookFunc = HPMHooks.list.HP_script_charid2sd_pre[hIndex].func;
+ retVal___ = preHookFunc(st, &char_id);
+ }
+ if( *HPMforce_return ) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.charid2sd(st, char_id);
+ }
+ if( HPMHooks.count.HP_script_charid2sd_post ) {
+ TBL_PC* (*postHookFunc) (TBL_PC* retVal___, struct script_state *st, int *char_id);
+ for(hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_post; hIndex++ ) {
+ postHookFunc = HPMHooks.list.HP_script_charid2sd_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, st, &char_id);
+ }
+ }
+ return retVal___;
+}
+TBL_PC* HP_script_nick2sd(struct script_state *st, const char *name) {
+ int hIndex = 0;
+ TBL_PC* retVal___ = NULL;
+ if( HPMHooks.count.HP_script_nick2sd_pre ) {
+ TBL_PC* (*preHookFunc) (struct script_state *st, const char *name);
+ *HPMforce_return = false;
+ for(hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_pre; hIndex++ ) {
+ preHookFunc = HPMHooks.list.HP_script_nick2sd_pre[hIndex].func;
+ retVal___ = preHookFunc(st, name);
+ }
+ if( *HPMforce_return ) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.nick2sd(st, name);
+ }
+ if( HPMHooks.count.HP_script_nick2sd_post ) {
+ TBL_PC* (*postHookFunc) (TBL_PC* retVal___, struct script_state *st, const char *name);
+ for(hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_post; hIndex++ ) {
+ postHookFunc = HPMHooks.list.HP_script_nick2sd_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, st, name);
+ }
+ }
+ return retVal___;
+}
void HP_script_detach_rid(struct script_state *st) {
int hIndex = 0;
if( HPMHooks.count.HP_script_detach_rid_pre ) {