- Removed the last argument from skillitem, the skill name passed to the client should always be of the type "AL_HEAL" anyway.
- Added skill ITEM_ENCHANTARMS, this is what weapon enchanting items should use. - Corrected itemskill calls in the item_db, also made the weapon enchanting items invoke the ITEM_ENCHANTARMS skill. Corrected Holy Egg not being type 11 (delay consume) - Updated item_db.sql with item_db information. - Added support for specifying different elements per skill level in the skill_db - Added bonus bNoKnockback - Corrected typo in bonus bSubRace2 (it was called bSPSubRace2 for some reason) - Corrected login sql server not resetting your account state to 0 when the banuntil duration expires. - Corrected use of UINT_MAX instead of INT_MAX in some jailing check. - Made the skillatk bonus it's own function, it can now be used to boost Heal/Sanctuary/Potion Pitcher and Slim Pitcher as well. - Cleaned up TK_WARMWIND to use the element acquired from the skill_db rather than hardcoded values. - Corrected Teleport's save map entry being sent without the .gat extension. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10031 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
9da9461dfe
commit
2907fa6467
@ -4,6 +4,18 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||
|
||||
2007/03/20
|
||||
* Removed the last argument from script command skillitem.
|
||||
* Added skill ITEM_ENCHANTARMS, this is what weapon enchanting items should
|
||||
use.
|
||||
* Added support for specifying different elements per skill level in the
|
||||
skill_db
|
||||
* Added bonus bNoKnockback.
|
||||
* Corrected login sql server not reseting your account state to 0 when the
|
||||
banuntil duration expires.
|
||||
* Made the skillatk bonus it's own function, it can now be used to boost
|
||||
Heal/Sanctuary/Potion Pitcher and Slim Pitcher as well.
|
||||
* Corrected Teleport's save map entry being sent without the .gat
|
||||
extension.
|
||||
* Corrected Warp Portal not sending the map names with the .gat extension.
|
||||
* Probably corrected Disarm's strip animation.
|
||||
2007/03/19
|
||||
|
@ -19,7 +19,13 @@
|
||||
-----
|
||||
|
||||
========================
|
||||
|
||||
03/20
|
||||
* Corrected itemskill calls in the item_db,
|
||||
* Made the weapon enchanting items invoke the ITEM_ENCHANTARMS skill
|
||||
* Corrected Holy Egg not being type 11 (delay consume)
|
||||
* Corrected typo in bonus bSubRace2 (it was called bSPSubRace2 for some
|
||||
reason) [Skotlex]
|
||||
* Updated new cards [Playtester]
|
||||
- they can all be used now, however some bonuses are still incomplete
|
||||
- also fixed Byeollungum, The Sign and Turtle General Card
|
||||
|
@ -348,8 +348,8 @@ bRandomAttackIncrease 1072
|
||||
bAllStats 1073
|
||||
bAgiVit 1074
|
||||
bAgiDexStr 1075
|
||||
bPerfectHide 1076
|
||||
|
||||
bPerfectHide 1076
|
||||
bNoKnockback 1077
|
||||
bClassChange 1078
|
||||
bHPDrainValue 1079
|
||||
bSPDrainValue 1080
|
||||
@ -392,7 +392,7 @@ bAddItemHealRate 2028
|
||||
bSPDrainValueRace 2029
|
||||
bExpAddRace 2030
|
||||
bSPGainRace 2031
|
||||
bSPSubRace2 2032
|
||||
bSubRace2 2032
|
||||
bAddEffWhenHitShort 2033
|
||||
bUnstripableWeapon 2034
|
||||
bUnstripableArmor 2035
|
||||
|
@ -88,7 +88,7 @@
|
||||
582,Orange,Orange,0,300,,20,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(10,20),rand(10,20); },{},{}
|
||||
583,Ketupat_,Ketupat,0,7000,,150,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(325,405),rand(40,60); sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; sc_end SC_Curse; sc_end SC_Hallucination; },{},{}
|
||||
584,Skewer_Soup,Skewer Soup,0,100,,60,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(40,70),0; },{},{}
|
||||
585,Brusti,Brusti,0,2,,40,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(15,20),0; itemskill 74,3,"Magnificat"; },{},{}
|
||||
585,Brusti,Brusti,0,2,,40,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(15,20),0; itemskill 74,3; },{},{}
|
||||
586,Mother's_Cake,Mother's Cake,0,20,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(325,405),0; },{},{}
|
||||
587,Thorny_Fruit,Red Thorn Fruit,0,880,,60,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(270,330),rand(20,30); },{},{}
|
||||
588,Spaghetti,Spaghetti,0,100,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(40,70),0; },{},{}
|
||||
@ -105,8 +105,8 @@
|
||||
607,Yggdrasilberry,Yggdrasil Berry,0,5000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 100,100; },{},{}
|
||||
608,Seed_Of_Yggdrasil,Yggdrasil Seed,0,5000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 50,50; },{},{}
|
||||
609,Amulet,Amulet,2,100,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||
610,Leaf_Of_Yggdrasil,Yggdrasil Leaf,11,4000,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 54,1,"Resurrection"; },{},{}
|
||||
611,Spectacles,Magnifier,11,40,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 40,1,"Identify"; },{},{}
|
||||
610,Leaf_Of_Yggdrasil,Yggdrasil Leaf,11,4000,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 54,1; },{},{}
|
||||
611,Spectacles,Magnifier,11,40,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 40,1; },{},{}
|
||||
// Smithing Items
|
||||
612,Portable_Furnace,Mini Furnace,2,150,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ produce 21; },{},{}
|
||||
613,Iron_Hammer,Iron Hammer,2,1000,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ produce 1; },{},{}
|
||||
@ -180,21 +180,21 @@
|
||||
684,Durian,Durian,0,15000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_ATKPOTION,60000,10; sc_start SC_MATKPOTION,60000,10; },{},{}
|
||||
685,RAMADAN,Ramadan,0,5000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||
// Scrolls
|
||||
686,Earth_Scroll_1_3,Level 3 Earth Spike,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 90,3,"Earth Spike Level 3"; },{},{}
|
||||
687,Earth_Scroll_1_5,Level 5 Earth Spike,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 90,5,"Earth Spike Level 5"; },{},{}
|
||||
688,Cold_Scroll_1_3,Level 3 Cold Bolt,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 14,3,"Cold Bolt Level 3"; },{},{}
|
||||
689,Cold_Scroll_1_5,Level 5 Cold Bolt,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 14,5,"Cold Bolt Level 5"; },{},{}
|
||||
690,Fire_Scroll_1_3,Level 3 Fire Bolt,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 19,3,"Fire Bolt Level 3"; },{},{}
|
||||
691,Fire_Scroll_1_5,Level 5 Fire Bolt,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 19,5,"Fire bolt Level 5"; },{},{}
|
||||
692,Wind_Scroll_1_3,Level 3 Lightening Bolt,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 20,3,"Lightning Bolt Level 3"; },{},{}
|
||||
693,Wind_Scroll_1_5,Level 5 Lightening Bolt,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 20,5,"Lightning Bolt Level 5"; },{},{}
|
||||
694,Ghost_Scroll_1_3,Level 3 Soul Strike,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 13,3,"Soul Strike Level 3"; },{},{}
|
||||
695,Ghost_Scroll_1_5,Level 5 Soul Strike,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 13,5,"Soul Strike Level 5"; },{},{}
|
||||
696,Fire_Scroll_2_1,Level 1 Fire Ball,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 17,1,"Fire Ball Level 1"; },{},{}
|
||||
697,Fire_Scroll_2_5,Level 5 Fire Ball,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 17,5,"Fire Ball Level 5"; },{},{}
|
||||
698,Fire_Scroll_3_1,Level 1 Fire Wall,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 18,1,"Fire Wall Level 1"; },{},{}
|
||||
699,Fire_Scroll_3_5,Level 5 Fire Wall,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 18,5,"Fire Wall Level 5"; },{},{}
|
||||
700,Cold_Scroll_2_1,Level 1 Frost Diver,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 15,1,"Frost Diver Level 1"; },{},{}
|
||||
686,Earth_Scroll_1_3,Level 3 Earth Spike,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 90,3; },{},{}
|
||||
687,Earth_Scroll_1_5,Level 5 Earth Spike,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 90,5; },{},{}
|
||||
688,Cold_Scroll_1_3,Level 3 Cold Bolt,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 14,3; },{},{}
|
||||
689,Cold_Scroll_1_5,Level 5 Cold Bolt,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 14,5; },{},{}
|
||||
690,Fire_Scroll_1_3,Level 3 Fire Bolt,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 19,3; },{},{}
|
||||
691,Fire_Scroll_1_5,Level 5 Fire Bolt,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 19,5; },{},{}
|
||||
692,Wind_Scroll_1_3,Level 3 Lightening Bolt,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 20,3; },{},{}
|
||||
693,Wind_Scroll_1_5,Level 5 Lightening Bolt,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 20,5; },{},{}
|
||||
694,Ghost_Scroll_1_3,Level 3 Soul Strike,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 13,3; },{},{}
|
||||
695,Ghost_Scroll_1_5,Level 5 Soul Strike,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 13,5; },{},{}
|
||||
696,Fire_Scroll_2_1,Level 1 Fire Ball,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 17,1; },{},{}
|
||||
697,Fire_Scroll_2_5,Level 5 Fire Ball,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 17,5; },{},{}
|
||||
698,Fire_Scroll_3_1,Level 1 Fire Wall,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 18,1; },{},{}
|
||||
699,Fire_Scroll_3_5,Level 5 Fire Wall,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 18,5; },{},{}
|
||||
700,Cold_Scroll_2_1,Level 1 Frost Diver,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 15,1; },{},{}
|
||||
// Etc Items
|
||||
//===================================================================
|
||||
701,Ora_Ora,Ora Ora,3,,27500,200,,,,,,,,,,,,,{},{},{}
|
||||
@ -2526,10 +2526,10 @@
|
||||
// More Usable Items
|
||||
//===================================================================
|
||||
// Scrolls
|
||||
12000,Cold_Scroll_2_5,Level 5 Frost Diver,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 15,5,"Frost Diver Level 5"; },{},{}
|
||||
12001,Holy_Scroll_1_3,Level 3 Heal,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 28,3,"Heal Level 3"; },{},{}
|
||||
12002,Holy_Scroll_1_5,Level 5 Heal,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 28,5,"Heal Level 5"; },{},{}
|
||||
12003,Holy_Scroll_2_1,Level 1 Teleport,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 26,1,"Teleport Level 1"; },{},{}
|
||||
12000,Cold_Scroll_2_5,Level 5 Frost Diver,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 15,5; },{},{}
|
||||
12001,Holy_Scroll_1_3,Level 3 Heal,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 28,3; },{},{}
|
||||
12002,Holy_Scroll_1_5,Level 5 Heal,11,2000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 28,5; },{},{}
|
||||
12003,Holy_Scroll_2_1,Level 1 Teleport,11,1000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 26,1; },{},{}
|
||||
// Arrow Quivers
|
||||
12004,Arrow_Container,Quiver,2,,1,250,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 1750,500; },{},{}
|
||||
12005,Iron_Arrow_Container,Iron Arrow Quiver,2,,1,250,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 1770,500; },{},{}
|
||||
@ -2547,8 +2547,8 @@
|
||||
12016,Speed_Up_Potion,Speed Potion,0,,1,100,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect 507; sc_start SC_SpeedUp1,5000,0; },{},{}
|
||||
12017,Slow_Down_Potion,Slow Potion,0,,1,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||
12018,Fire_Cracker,Firecracker,2,,1,20,,,,,0xFFFFFFFF,7,2,,,,,,{ misceffect(256); },{},{}
|
||||
12019,Holy_Egg,Holy Egg,2,,1,150,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 54,2,"Resurrection"; },{},{}
|
||||
12020,Water_Of_Darkness,Cursed_Water,0,,1,30,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SHADOWWEAPON, 1200000, 1; },{},{}
|
||||
12019,Holy_Egg,Holy Egg,11,,1,150,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 54,2; },{},{}
|
||||
12020,Water_Of_Darkness,Cursed_Water,11,,1,30,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 492,8; },{},{}
|
||||
12021,Pork_Belly,Pork,0,,0,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(70,99),0; },{},{}
|
||||
12022,Spareribs,Galbi,0,,0,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(70,99),0; },{},{}
|
||||
12023,Giftbox_China,Wrapped Box,2,1000,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_GiftBox),1; },{},{}
|
||||
@ -2558,10 +2558,10 @@
|
||||
// Effect Boxes
|
||||
12027,Giggling_Box,Giggling Box,2,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 9,0; if(rand(100)<30) sc_start SC_Curse,30000,0; },{},{}
|
||||
12028,Box_Of_Thunder,Box of Thunder,2,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SpeedUp0,30000,0; },{},{}
|
||||
12029,Gloomy_Box,Box of Gloom,11,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 45,1,"Improve Concentration"; },{},{}
|
||||
12029,Gloomy_Box,Box of Gloom,11,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 45,1; },{},{}
|
||||
12030,Box_Of_Grudge,Box of Resentment,2,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_ATKPOTION,60000,20; },{},{}
|
||||
12031,Sleepy_Box,Box of Drowsiness,2,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MATKPOTION,60000,20; },{},{}
|
||||
12032,Box_Of_Storm,Box of Storms,2,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_WATERWEAPON,180000,0; },{},{}
|
||||
12032,Box_Of_Storm,Box of Storms,11,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 492,2; },{},{}
|
||||
12033,Box_Of_Sunlight,Box of Sunlight,2,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_Intravision,20000,0; },{},{}
|
||||
12034,Painting_Box,Box of Panting,2,,500,200,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 0,9; if(rand(100)<30) sc_start SC_Silence,30000,0; },{},{}
|
||||
12035,Lotto_Box01,Lotto Box 01,2,,0,20,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem rand(7361,7370),1; },{},{}
|
||||
@ -2647,10 +2647,10 @@
|
||||
12112,Tropical_Sograt,Tropical Sograt,0,,500,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_Curse,10000,1; },{},{}
|
||||
12113,Vermilion_The_Beach,Vermilion on the Beach,0,,500,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_Stun,10000,1; },{},{}
|
||||
// Elemental Converters
|
||||
12114,Flame_Converter,Flame Elemental Converter,2,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_FIREWEAPON,180000,1; },{},{}
|
||||
12115,Frost_Converter,Frost Elemental Converter,2,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_WATERWEAPON,180000,1; },{},{}
|
||||
12116,Seismic_Converter,Seismic Elemental Converter,2,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EARTHWEAPON,180000,1; },{},{}
|
||||
12117,Lighting_Converter,Lightning Elemental Converter,2,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_WINDWEAPON,180000,1; },{},{}
|
||||
12114,Flame_Converter,Flame Elemental Converter,11,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 492,4; },{},{}
|
||||
12115,Frost_Converter,Frost Elemental Converter,11,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 492,2; },{},{}
|
||||
12116,Seismic_Converter,Seismic Elemental Converter,11,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 492,3; },{},{}
|
||||
12117,Lighting_Converter,Lightning Elemental Converter,11,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 492,5; },{},{}
|
||||
// Elemental Resistance Potions
|
||||
12118,Resist_Fire_Potion,Fire Resist Potion,2,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,Ele_Fire,20,Ele_Water,-15; },{},{}
|
||||
12119,Resist_Cold_Potion,Cold Resist Potion,2,,1,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,Ele_Water,20,Ele_Wind,-15; },{},{}
|
||||
|
@ -821,6 +821,8 @@
|
||||
490,1000,1000,0,0,0
|
||||
//==========================================
|
||||
|
||||
//-- ITEM_ENCHANTARMS
|
||||
492,0,0,0,180000:180000:180000:180000:180000:1200000:1200000:1200000:1200000:1200000,0
|
||||
|
||||
//===== Mixed Taekwon Skills ===============
|
||||
//-- TK_MISSION
|
||||
|
@ -530,7 +530,7 @@
|
||||
489,9,6,1,0,0x41,0,5,1,no,0,0,0,misc,0 //CG_TAROTCARD#Tarot Card of Fate#
|
||||
490,9,8,1,0,0x40,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,misc,0 //CR_ACIDDEMONSTRATION#Acid Demonstration#
|
||||
491,1,6,2,0,0x1,0,2,1,no,0,0,0,none,0 //CR_CULTIVATION#Cultivation#
|
||||
|
||||
492,0,6,4,0:1:2:3:4:5:6:7:8:9,0x1,0,10,1,no,0,0x2,0,none,0 //ITEM_ENCHANTARMS#Weapon Enchantment#
|
||||
493,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0 //TK_MISSION#Taekwon Mission#
|
||||
494,9,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0 //SL_HIGH#Spirit of Rebirth#
|
||||
495,0,6,4,0,0x1,0,1,1,no,0,0x8,0,weapon,0 //KN_ONEHAND#Onehand Quicken#
|
||||
|
@ -384,7 +384,7 @@
|
||||
489,0,0,40,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 //CG_TAROTCARD##
|
||||
490,0,0,30,0,0,0,99,0,0,none,0,7135,1,7136,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CR_ACIDDEMONSTRATION##
|
||||
491,0,0,10,0,0,0,99,0,0,none,0,921,1,905,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CR_CULTIVATION##
|
||||
|
||||
492,0,0,1,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 //ITEM_ENCHANTARMS##
|
||||
493,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 //TK_MISSION##
|
||||
494,0,0,460:360:260:160:60,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 //SL_HIGH##
|
||||
495,0,0,100,0,0,0,2,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //KN_ONEHAND##
|
||||
|
@ -119,7 +119,7 @@ REPLACE INTO `item_db` VALUES (581,'Mushroom','Edible Mushroom',0,40,NULL,20,NUL
|
||||
REPLACE INTO `item_db` VALUES (582,'Orange','Orange',0,300,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(10,20),rand(10,20); ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (583,'Ketupat_','Ketupat',0,7000,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(325,405),rand(40,60); sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; sc_end SC_Curse; sc_end SC_Hallucination; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (584,'Skewer_Soup','Skewer Soup',0,100,NULL,60,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(40,70),0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (585,'Brusti','Brusti',0,2,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(15,20),0; itemskill 74,3,"Magnificat"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (585,'Brusti','Brusti',0,2,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(15,20),0; itemskill 74,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (586,'Mother\'s_Cake','Mother\'s Cake',0,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(325,405),0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (587,'Thorny_Fruit','Red Thorn Fruit',0,880,NULL,60,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(270,330),rand(20,30); ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (588,'Spaghetti','Spaghetti',0,100,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(40,70),0; ',NULL,NULL);
|
||||
@ -136,8 +136,8 @@ REPLACE INTO `item_db` VALUES (606,'Aloebera','Aloevera',0,1500,NULL,100,NULL,NU
|
||||
REPLACE INTO `item_db` VALUES (607,'Yggdrasilberry','Yggdrasil Berry',0,5000,NULL,300,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' percentheal 100,100; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (608,'Seed_Of_Yggdrasil','Yggdrasil Seed',0,5000,NULL,300,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' percentheal 50,50; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (609,'Amulet','Amulet',2,100,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (610,'Leaf_Of_Yggdrasil','Yggdrasil Leaf',11,4000,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 54,1,"Resurrection"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (611,'Spectacles','Magnifier',11,40,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 40,1,"Identify"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (610,'Leaf_Of_Yggdrasil','Yggdrasil Leaf',11,4000,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 54,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (611,'Spectacles','Magnifier',11,40,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 40,1; ',NULL,NULL);
|
||||
# // Smithing Items
|
||||
REPLACE INTO `item_db` VALUES (612,'Portable_Furnace','Mini Furnace',2,150,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' produce 21; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (613,'Iron_Hammer','Iron Hammer',2,1000,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' produce 1; ',NULL,NULL);
|
||||
@ -211,21 +211,21 @@ REPLACE INTO `item_db` VALUES (683,'Exorcize_Herb','Herb of Incantation',0,NULL,
|
||||
REPLACE INTO `item_db` VALUES (684,'Durian','Durian',0,15000,NULL,300,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_ATKPOTION,60000,10; sc_start SC_MATKPOTION,60000,10; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (685,'RAMADAN','Ramadan',0,5000,NULL,300,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
# // Scrolls
|
||||
REPLACE INTO `item_db` VALUES (686,'Earth_Scroll_1_3','Level 3 Earth Spike',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 90,3,"Earth Spike Level 3"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (687,'Earth_Scroll_1_5','Level 5 Earth Spike',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 90,5,"Earth Spike Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (688,'Cold_Scroll_1_3','Level 3 Cold Bolt',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 14,3,"Cold Bolt Level 3"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (689,'Cold_Scroll_1_5','Level 5 Cold Bolt',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 14,5,"Cold Bolt Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (690,'Fire_Scroll_1_3','Level 3 Fire Bolt',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 19,3,"Fire Bolt Level 3"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (691,'Fire_Scroll_1_5','Level 5 Fire Bolt',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 19,5,"Fire bolt Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (692,'Wind_Scroll_1_3','Level 3 Lightening Bolt',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 20,3,"Lightning Bolt Level 3"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (693,'Wind_Scroll_1_5','Level 5 Lightening Bolt',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 20,5,"Lightning Bolt Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (694,'Ghost_Scroll_1_3','Level 3 Soul Strike',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 13,3,"Soul Strike Level 3"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (695,'Ghost_Scroll_1_5','Level 5 Soul Strike',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 13,5,"Soul Strike Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (696,'Fire_Scroll_2_1','Level 1 Fire Ball',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 17,1,"Fire Ball Level 1"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (697,'Fire_Scroll_2_5','Level 5 Fire Ball',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 17,5,"Fire Ball Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (698,'Fire_Scroll_3_1','Level 1 Fire Wall',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 18,1,"Fire Wall Level 1"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (699,'Fire_Scroll_3_5','Level 5 Fire Wall',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 18,5,"Fire Wall Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (700,'Cold_Scroll_2_1','Level 1 Frost Diver',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 15,1,"Frost Diver Level 1"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (686,'Earth_Scroll_1_3','Level 3 Earth Spike',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 90,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (687,'Earth_Scroll_1_5','Level 5 Earth Spike',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 90,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (688,'Cold_Scroll_1_3','Level 3 Cold Bolt',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 14,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (689,'Cold_Scroll_1_5','Level 5 Cold Bolt',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 14,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (690,'Fire_Scroll_1_3','Level 3 Fire Bolt',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 19,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (691,'Fire_Scroll_1_5','Level 5 Fire Bolt',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 19,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (692,'Wind_Scroll_1_3','Level 3 Lightening Bolt',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 20,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (693,'Wind_Scroll_1_5','Level 5 Lightening Bolt',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 20,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (694,'Ghost_Scroll_1_3','Level 3 Soul Strike',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 13,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (695,'Ghost_Scroll_1_5','Level 5 Soul Strike',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 13,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (696,'Fire_Scroll_2_1','Level 1 Fire Ball',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 17,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (697,'Fire_Scroll_2_5','Level 5 Fire Ball',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 17,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (698,'Fire_Scroll_3_1','Level 1 Fire Wall',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 18,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (699,'Fire_Scroll_3_5','Level 5 Fire Wall',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 18,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (700,'Cold_Scroll_2_1','Level 1 Frost Diver',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 15,1; ',NULL,NULL);
|
||||
# // Etc Items
|
||||
# //===================================================================
|
||||
REPLACE INTO `item_db` VALUES (701,'Ora_Ora','Ora Ora',3,NULL,27500,200,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
@ -2555,10 +2555,10 @@ REPLACE INTO `item_db` VALUES (11003,'Novel02','Novel02',3,8000,NULL,0,NULL,NULL
|
||||
# // More Usable Items
|
||||
# //===================================================================
|
||||
# // Scrolls
|
||||
REPLACE INTO `item_db` VALUES (12000,'Cold_Scroll_2_5','Level 5 Frost Diver',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 15,5,"Frost Diver Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12001,'Holy_Scroll_1_3','Level 3 Heal',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 28,3,"Heal Level 3"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12002,'Holy_Scroll_1_5','Level 5 Heal',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 28,5,"Heal Level 5"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12003,'Holy_Scroll_2_1','Level 1 Teleport',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 26,1,"Teleport Level 1"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12000,'Cold_Scroll_2_5','Level 5 Frost Diver',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 15,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12001,'Holy_Scroll_1_3','Level 3 Heal',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 28,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12002,'Holy_Scroll_1_5','Level 5 Heal',11,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 28,5; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12003,'Holy_Scroll_2_1','Level 1 Teleport',11,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 26,1; ',NULL,NULL);
|
||||
# // Arrow Quivers
|
||||
REPLACE INTO `item_db` VALUES (12004,'Arrow_Container','Quiver',2,NULL,1,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' getitem 1750,500; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12005,'Iron_Arrow_Container','Iron Arrow Quiver',2,NULL,1,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' getitem 1770,500; ',NULL,NULL);
|
||||
@ -2576,8 +2576,8 @@ REPLACE INTO `item_db` VALUES (12015,'Rusty_Arrow_Container','Rusty Arrow Quiver
|
||||
REPLACE INTO `item_db` VALUES (12016,'Speed_Up_Potion','Speed Potion',0,NULL,1,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' specialeffect 507; sc_start SC_SpeedUp1,5000,0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12017,'Slow_Down_Potion','Slow Potion',0,NULL,1,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12018,'Fire_Cracker','Firecracker',2,NULL,1,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' misceffect(256); ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12019,'Holy_Egg','Holy Egg',2,NULL,1,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 54,2,"Resurrection"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12020,'Water_Of_Darkness','Cursed_Water',0,NULL,1,30,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_SHADOWWEAPON, 1200000, 1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12019,'Holy_Egg','Holy Egg',11,NULL,1,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 54,2; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12020,'Water_Of_Darkness','Cursed_Water',11,NULL,1,30,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 492,8; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12021,'Pork_Belly','Pork',0,NULL,0,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(70,99),0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12022,'Spareribs','Galbi',0,NULL,0,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemheal rand(70,99),0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12023,'Giftbox_China','Wrapped Box',2,1000,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_GiftBox),1; ',NULL,NULL);
|
||||
@ -2587,10 +2587,10 @@ REPLACE INTO `item_db` VALUES (12026,'Egg_Girl','Dano Festival Egg',2,1000,NULL,
|
||||
# // Effect Boxes
|
||||
REPLACE INTO `item_db` VALUES (12027,'Giggling_Box','Giggling Box',2,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' percentheal 9,0; if(rand(100)<30) sc_start SC_Curse,30000,0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12028,'Box_Of_Thunder','Box of Thunder',2,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_SpeedUp0,30000,0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12029,'Gloomy_Box','Box of Gloom',11,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 45,1,"Improve Concentration"; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12029,'Gloomy_Box','Box of Gloom',11,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 45,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12030,'Box_Of_Grudge','Box of Resentment',2,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_ATKPOTION,60000,20; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12031,'Sleepy_Box','Box of Drowsiness',2,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_MATKPOTION,60000,20; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12032,'Box_Of_Storm','Box of Storms',2,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_WATERWEAPON,180000,0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12032,'Box_Of_Storm','Box of Storms',11,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 492,2; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12033,'Box_Of_Sunlight','Box of Sunlight',2,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_Intravision,20000,0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12034,'Painting_Box','Box of Panting',2,NULL,500,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' percentheal 0,9; if(rand(100)<30) sc_start SC_Silence,30000,0; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12035,'Lotto_Box01','Lotto Box 01',2,NULL,0,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' getitem rand(7361,7370),1; ',NULL,NULL);
|
||||
@ -2676,10 +2676,10 @@ REPLACE INTO `item_db` VALUES (12111,'Food_Package','Bundle of Food',2,NULL,5000
|
||||
REPLACE INTO `item_db` VALUES (12112,'Tropical_Sograt','Tropical Sograt',0,NULL,500,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_Curse,10000,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12113,'Vermilion_The_Beach','Vermilion on the Beach',0,NULL,500,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_Stun,10000,1; ',NULL,NULL);
|
||||
# // Elemental Converters
|
||||
REPLACE INTO `item_db` VALUES (12114,'Flame_Converter','Flame Elemental Converter',2,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_FIREWEAPON,180000,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12115,'Frost_Converter','Frost Elemental Converter',2,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_WATERWEAPON,180000,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12116,'Seismic_Converter','Seismic Elemental Converter',2,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_EARTHWEAPON,180000,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12117,'Lighting_Converter','Lightning Elemental Converter',2,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start SC_WINDWEAPON,180000,1; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12114,'Flame_Converter','Flame Elemental Converter',11,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 492,4; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12115,'Frost_Converter','Frost Elemental Converter',11,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 492,2; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12116,'Seismic_Converter','Seismic Elemental Converter',11,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 492,3; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12117,'Lighting_Converter','Lightning Elemental Converter',11,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' itemskill 492,5; ',NULL,NULL);
|
||||
# // Elemental Resistance Potions
|
||||
REPLACE INTO `item_db` VALUES (12118,'Resist_Fire_Potion','Fire Resist Potion',2,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start4 SC_ARMOR_ELEMENT,1200000,Ele_Fire,20,Ele_Water,-15; ',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (12119,'Resist_Cold_Potion','Cold Resist Potion',2,NULL,1,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,' sc_start4 SC_ARMOR_ELEMENT,1200000,Ele_Water,20,Ele_Wind,-15; ',NULL,NULL);
|
||||
|
@ -524,7 +524,7 @@ int mmo_auth(struct mmo_account* account, int fd)
|
||||
char t_uid[256], t_pass[256];
|
||||
char user_password[256];
|
||||
|
||||
int encpasswdok = 0;
|
||||
int encpasswdok = 0, state;
|
||||
|
||||
char md5str[64], md5bin[32];
|
||||
|
||||
@ -610,6 +610,7 @@ int mmo_auth(struct mmo_account* account, int fd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
state = atoi(sql_row[9]);
|
||||
//Client Version check
|
||||
if (login_config.check_client_version && account->version != 0) {
|
||||
if (account->version != login_config.client_version_to_connect) {
|
||||
@ -618,15 +619,11 @@ int mmo_auth(struct mmo_account* account, int fd)
|
||||
}
|
||||
}
|
||||
|
||||
if (atoi(sql_row[9]) == -3) {
|
||||
//id is banned
|
||||
switch (state) {
|
||||
case -3: //id is banned
|
||||
case -2: //dynamic ban
|
||||
mysql_free_result(sql_res);
|
||||
return -3;
|
||||
} else if (atoi(sql_row[9]) == -2) { //dynamic ban
|
||||
//id is banned
|
||||
mysql_free_result(sql_res);
|
||||
//add IP list.
|
||||
return -2;
|
||||
return state;
|
||||
}
|
||||
|
||||
if (login_config.use_md5_passwds) {
|
||||
@ -683,15 +680,17 @@ int mmo_auth(struct mmo_account* account, int fd)
|
||||
if (ban_until_time > time(NULL)) // always banned
|
||||
return 6; // 6 = Your are Prohibited to log in until %s
|
||||
|
||||
sprintf(tmpsql, "UPDATE `%s` SET `ban_until`='0' WHERE `%s`= %s '%s'", login_db, login_db_userid, login_config.case_sensitive ? "BINARY" : "", t_uid);
|
||||
sprintf(tmpsql, "UPDATE `%s` SET `ban_until`='0' %s WHERE `%s`= %s '%s'",
|
||||
login_db, state==7?",state='0'":"", login_db_userid,
|
||||
login_config.case_sensitive ? "BINARY" : "", t_uid);
|
||||
if (mysql_query(&mysql_handle, tmpsql)) {
|
||||
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
||||
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmpsql);
|
||||
}
|
||||
}
|
||||
|
||||
if (atoi(sql_row[9])) {
|
||||
switch(atoi(sql_row[9])) { // packet 0x006a value + 1
|
||||
if (state) {
|
||||
switch(state) { // packet 0x006a value + 1
|
||||
case 1: // 0 = Unregistered ID
|
||||
case 2: // 1 = Incorrect Password
|
||||
case 3: // 2 = This ID is expired
|
||||
|
@ -6355,7 +6355,7 @@ int atcommand_jailfor(const int fd, struct map_session_data* sd, const char* com
|
||||
|
||||
//Added by Coltaro
|
||||
if (pl_sd->sc.count && pl_sd->sc.data[SC_JAILED].timer != -1 &&
|
||||
pl_sd->sc.data[SC_JAILED].val1 != UINT_MAX)
|
||||
pl_sd->sc.data[SC_JAILED].val1 != INT_MAX)
|
||||
{ //Update the player's jail time
|
||||
jailtime += pl_sd->sc.data[SC_JAILED].val1;
|
||||
if (jailtime <= 0) {
|
||||
|
@ -833,6 +833,20 @@ static int battle_blewcount_bonus(struct map_session_data *sd, int skill_num)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int battle_skillatk_bonus(struct map_session_data *sd, int skill_num)
|
||||
{
|
||||
int i;
|
||||
if (!sd->skillatk[0].id)
|
||||
return 0;
|
||||
for (i = 0; i < MAX_PC_BONUS && sd->skillatk[i].id &&
|
||||
sd->skillatk[i].id != skill_num; i++);
|
||||
|
||||
if (i < MAX_PC_BONUS && sd->skillatk[i].id)
|
||||
return sd->skillatk[i].val;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list *target,int skill_num,int skill_lv,int mflag);
|
||||
struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *target,int skill_num,int skill_lv,int mflag);
|
||||
|
||||
@ -975,7 +989,7 @@ static struct Damage battle_calc_weapon_attack(
|
||||
}
|
||||
|
||||
t_class = status_get_class(target);
|
||||
s_ele = s_ele_ = skill_get_pl(skill_num);
|
||||
s_ele = s_ele_ = skill_get_pl(skill_num, skill_lv);
|
||||
if (!skill_num || s_ele == -1) { //Take weapon's element
|
||||
s_ele = sstatus->rhw.ele;
|
||||
s_ele_ = sstatus->lhw?sstatus->lhw->ele:0;
|
||||
@ -1627,14 +1641,8 @@ static struct Damage battle_calc_weapon_attack(
|
||||
|
||||
if(sd)
|
||||
{
|
||||
if (skill_num && sd->skillatk[0].id)
|
||||
{ //Additional skill damage.
|
||||
for (i = 0; i < MAX_PC_BONUS && sd->skillatk[i].id &&
|
||||
sd->skillatk[i].id != skill_num; i++);
|
||||
|
||||
if (i < MAX_PC_BONUS && sd->skillatk[i].id == skill_num)
|
||||
ATK_ADDRATE(sd->skillatk[i].val);
|
||||
}
|
||||
if (skill_num && (i = battle_skillatk_bonus(sd, skill_num)))
|
||||
ATK_ADDRATE(i);
|
||||
|
||||
if(skill_num != PA_SACRIFICE && skill_num != MO_INVESTIGATE &&
|
||||
skill_num != CR_GRANDCROSS && skill_num != NPC_GRANDDARKNESS &&
|
||||
@ -2145,7 +2153,7 @@ struct Damage battle_calc_magic_attack(
|
||||
BL_CAST(BL_PC, target, tsd);
|
||||
|
||||
//Initialize variables that will be used afterwards
|
||||
s_ele = skill_get_pl(skill_num);
|
||||
s_ele = skill_get_pl(skill_num, skill_lv);
|
||||
|
||||
if (s_ele == -1) // pl=-1 : the skill takes the weapon's element
|
||||
s_ele = sstatus->rhw.ele;
|
||||
@ -2324,12 +2332,8 @@ struct Damage battle_calc_magic_attack(
|
||||
|
||||
if(sd) {
|
||||
//Damage bonuses
|
||||
if (sd->skillatk[0].id)
|
||||
{
|
||||
for (i = 0; i < MAX_PC_BONUS && sd->skillatk[i].id && sd->skillatk[i].id != skill_num; i++);
|
||||
if (i < MAX_PC_BONUS && sd->skillatk[i].id == skill_num)
|
||||
ad.damage += ad.damage*sd->skillatk[i].val/100;
|
||||
}
|
||||
if ((i = battle_skillatk_bonus(sd, skill_num)))
|
||||
ad.damage += ad.damage*i/100;
|
||||
|
||||
//Ignore Defense?
|
||||
if (!flag.imdef && (
|
||||
@ -2468,7 +2472,7 @@ struct Damage battle_calc_misc_attack(
|
||||
md.blewcount += battle_blewcount_bonus(sd, skill_num);
|
||||
}
|
||||
|
||||
s_ele = skill_get_pl(skill_num);
|
||||
s_ele = skill_get_pl(skill_num, skill_lv);
|
||||
if (s_ele < 0) //Attack that takes weapon's element for misc attacks? Make it neutral [Skotlex]
|
||||
s_ele = ELE_NEUTRAL;
|
||||
|
||||
@ -2625,12 +2629,9 @@ struct Damage battle_calc_misc_attack(
|
||||
if (cardfix != 10000)
|
||||
md.damage=md.damage*cardfix/10000;
|
||||
}
|
||||
if (sd && skill_num > 0 && sd->skillatk[0].id != 0)
|
||||
{
|
||||
for (i = 0; i < MAX_PC_BONUS && sd->skillatk[i].id != 0 && sd->skillatk[i].id != skill_num; i++);
|
||||
if (i < MAX_PC_BONUS && sd->skillatk[i].id == skill_num)
|
||||
md.damage += md.damage*sd->skillatk[i].val/100;
|
||||
}
|
||||
|
||||
if (sd && (i = battle_skillatk_bonus(sd, skill_num)))
|
||||
md.damage += md.damage*i/100;
|
||||
|
||||
if(md.damage < 0)
|
||||
md.damage = 0;
|
||||
|
@ -29,6 +29,8 @@ int battle_calc_return_damage(struct block_list *bl, int *damage, int flag);
|
||||
|
||||
void battle_drain(struct map_session_data *sd, struct block_list *tbl, int rdamage, int ldamage, int race, int boss);
|
||||
|
||||
int battle_skillatk_bonus(struct map_session_data *sd, int skill_num);
|
||||
|
||||
int battle_attr_fix(struct block_list *src, struct block_list *target, int damage,int atk_elem,int def_type, int def_lv);
|
||||
|
||||
// ダメージ最終計算
|
||||
|
@ -4221,7 +4221,7 @@ int clif_skillup(struct map_session_data *sd,int skill_num)
|
||||
int clif_skillcasting(struct block_list* bl,
|
||||
int src_id,int dst_id,int dst_x,int dst_y,int skill_num,int casttime)
|
||||
{
|
||||
int pl = skill_get_pl(skill_num);
|
||||
int pl = skill_get_pl(skill_num, 1); //TODO: Need Skill level here :/
|
||||
unsigned char buf[32];
|
||||
WBUFW(buf,0) = 0x13e;
|
||||
WBUFL(buf,2) = src_id;
|
||||
@ -5365,7 +5365,7 @@ int clif_item_refine_list(struct map_session_data *sd)
|
||||
* アイテムによる一時的なスキル効果
|
||||
*------------------------------------------
|
||||
*/
|
||||
int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv,const char *name)
|
||||
int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv)
|
||||
{
|
||||
int fd;
|
||||
|
||||
@ -5380,7 +5380,7 @@ int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv,const ch
|
||||
WFIFOW(fd, 8)=skilllv;
|
||||
WFIFOW(fd,10)=skill_get_sp(skillid,skilllv);
|
||||
WFIFOW(fd,12)=skill_get_range2(&sd->bl, skillid,skilllv);
|
||||
strncpy((char*)WFIFOP(fd,14),name,NAME_LENGTH);
|
||||
strncpy((char*)WFIFOP(fd,14),skill_get_name(skillid),NAME_LENGTH);
|
||||
WFIFOB(fd,38)=0;
|
||||
WFIFOSET(fd,packet_len(0x147));
|
||||
return 0;
|
||||
|
@ -233,7 +233,7 @@ int clif_item_repair_list (struct map_session_data *sd, struct map_session_data
|
||||
int clif_item_repaireffect(struct map_session_data *sd, int nameid, int flag);
|
||||
int clif_item_refine_list(struct map_session_data *sd);
|
||||
|
||||
int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv,const char *name);
|
||||
int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv);
|
||||
|
||||
int clif_mvp_effect(struct map_session_data *sd);
|
||||
int clif_mvp_item(struct map_session_data *sd,int nameid);
|
||||
|
@ -616,8 +616,9 @@ struct map_session_data {
|
||||
unsigned no_castcancel2 : 1;
|
||||
unsigned no_sizefix : 1;
|
||||
unsigned no_gemstone : 1;
|
||||
unsigned intravision : 1; // Maya Purple Card effect allowing to see Hiding/Cloaking people [DracoRPG]
|
||||
unsigned intravision : 1; // Maya Purple Card effect [DracoRPG]
|
||||
unsigned perfect_hiding : 1; // [Valaris]
|
||||
unsigned no_knockback : 1;
|
||||
} special_state;
|
||||
int login_id1, login_id2;
|
||||
unsigned short class_; //This is the internal job ID used by the map server to simplify comparisons/queries/etc. [Skotlex]
|
||||
@ -1195,7 +1196,7 @@ enum _sp {
|
||||
SP_SHORT_WEAPON_DAMAGE_RETURN,SP_LONG_WEAPON_DAMAGE_RETURN,SP_WEAPON_COMA_ELE,SP_WEAPON_COMA_RACE, // 1063-1066
|
||||
SP_ADDEFF2,SP_BREAK_WEAPON_RATE,SP_BREAK_ARMOR_RATE,SP_ADD_STEAL_RATE, // 1067-1070
|
||||
SP_MAGIC_DAMAGE_RETURN,SP_RANDOM_ATTACK_INCREASE,SP_ALL_STATS,SP_AGI_VIT,SP_AGI_DEX_STR,SP_PERFECT_HIDE, // 1071-1076
|
||||
SP_FREE,SP_CLASSCHANGE, // 1077-1078
|
||||
SP_NO_KNOCKBACK,SP_CLASSCHANGE, // 1077-1078
|
||||
SP_HP_DRAIN_VALUE,SP_SP_DRAIN_VALUE, // 1079-1080
|
||||
SP_WEAPON_ATK,SP_WEAPON_ATK_RATE, // 1081-1082
|
||||
SP_DELAYRATE,SP_HP_DRAIN_RATE_RACE,SP_SP_DRAIN_RATE_RACE, // 1083-1085
|
||||
@ -1214,7 +1215,6 @@ enum _sp {
|
||||
SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE //2041
|
||||
//Before adding another, note that these are free:
|
||||
//1024 (SP_FREE2, previous matk)
|
||||
//1077 (SP_FREE, previously disguise)
|
||||
};
|
||||
|
||||
enum _look {
|
||||
|
@ -1721,6 +1721,10 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
||||
clif_status_load(&sd->bl, SI_INTRAVISION, 1);
|
||||
}
|
||||
break;
|
||||
case SP_NO_KNOCKBACK:
|
||||
if(sd->state.lr_flag != 2)
|
||||
sd->special_state.no_knockback = 1;
|
||||
break;
|
||||
case SP_SPLASH_RANGE:
|
||||
if(sd->state.lr_flag != 2 && sd->splash_range < val)
|
||||
sd->splash_range = val;
|
||||
|
@ -3962,7 +3962,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(gettimestr,"si"),
|
||||
BUILDIN_DEF(openstorage,""),
|
||||
BUILDIN_DEF(guildopenstorage,"*"),
|
||||
BUILDIN_DEF(itemskill,"iis"),
|
||||
BUILDIN_DEF(itemskill,"ii"),
|
||||
BUILDIN_DEF(produce,"i"),
|
||||
BUILDIN_DEF(monster,"siisii*"),
|
||||
BUILDIN_DEF(areamonster,"siiiisii*"),
|
||||
@ -7098,12 +7098,10 @@ BUILDIN_FUNC(guildopenstorage)
|
||||
BUILDIN_FUNC(itemskill)
|
||||
{
|
||||
int id,lv;
|
||||
const char *str;
|
||||
struct map_session_data *sd=script_rid2sd(st);
|
||||
|
||||
id=conv_num(st,script_getdata(st,2));
|
||||
lv=conv_num(st,script_getdata(st,3));
|
||||
str=conv_str(st,script_getdata(st,4));
|
||||
|
||||
// 詠唱中にスキルアイテムは使用できない
|
||||
if(sd->ud.skilltimer != -1)
|
||||
@ -7111,7 +7109,7 @@ BUILDIN_FUNC(itemskill)
|
||||
|
||||
sd->skillitem=id;
|
||||
sd->skillitemlv=lv;
|
||||
clif_item_skill(sd,id,lv,str);
|
||||
clif_item_skill(sd,id,lv);
|
||||
return 0;
|
||||
}
|
||||
/*==========================================
|
||||
|
@ -248,6 +248,7 @@ const struct skill_name_db skill_names[] = {
|
||||
{ HW_MAGICPOWER, "HW_MAGICPOWER", "Mystical_Amplification" } ,
|
||||
{ HW_NAPALMVULCAN, "HW_NAPALMVULCAN", "Napalm_Vulcan" } ,
|
||||
{ HW_SOULDRAIN, "HW_SOULDRAIN", "Soul_Drain" } ,
|
||||
{ ITEM_ENCHANTARMS, "ITEM_ENCHANTARMS", "Weapon Enchantment" },
|
||||
{ ITM_TOMAHAWK, "ITM_TOMAHAWK", "Tomahawk_Throwing" } ,
|
||||
{ KN_AUTOCOUNTER, "KN_AUTOCOUNTER", "Counter_Attack" } ,
|
||||
{ KN_BOWLINGBASH, "KN_BOWLINGBASH", "Bowling_Bash" } ,
|
||||
@ -652,7 +653,7 @@ struct skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB];
|
||||
// Skill DB
|
||||
int skill_get_hit( int id ){ skill_get (skill_db[id].hit, id, 1); }
|
||||
int skill_get_inf( int id ){ skill_get (skill_db[id].inf, id, 1); }
|
||||
int skill_get_pl( int id ){ skill_get (skill_db[id].pl, id, 1); }
|
||||
int skill_get_pl( int id , int lv ){ skill_get (skill_db[id].pl[lv-1], id, lv); }
|
||||
int skill_get_nk( int id ){ skill_get (skill_db[id].nk, id, 1); }
|
||||
int skill_get_max( int id ){ skill_get (skill_db[id].max, id, 1); }
|
||||
int skill_get_range( int id , int lv ){ skill_get(skill_db[id].range[lv-1], id, lv); }
|
||||
@ -800,11 +801,18 @@ int skill_calc_heal (struct block_list *bl, int skill_lv)
|
||||
return battle_config.max_heal;
|
||||
|
||||
heal = ( status_get_lv(bl)+status_get_int(bl) )/8 *(4+ skill_lv*8);
|
||||
if(bl->type == BL_PC && (skill = pc_checkskill((TBL_PC*)bl, HP_MEDITATIO)) > 0)
|
||||
heal += heal * skill * 2 / 100;
|
||||
if(bl->type == BL_PC)
|
||||
{
|
||||
if ((skill = pc_checkskill((TBL_PC*)bl, HP_MEDITATIO)) > 0)
|
||||
heal += heal * skill * 2 / 100;
|
||||
if ((skill = battle_skillatk_bonus((TBL_PC*)bl, AL_HEAL)) > 0)
|
||||
heal += heal * skill / 100;
|
||||
}
|
||||
|
||||
if(bl->type == BL_HOM && (skill = merc_hom_checkskill(((TBL_HOM*)bl), HLIF_BRAIN)) > 0)
|
||||
heal += heal * skill * 2 / 100;
|
||||
|
||||
|
||||
return heal;
|
||||
}
|
||||
|
||||
@ -1761,6 +1769,10 @@ int skill_blown (struct block_list *src, struct block_list *target, int count)
|
||||
if(src != target && is_boss(target)) //Bosses can't be knocked-back
|
||||
return 0;
|
||||
break;
|
||||
case BL_PC:
|
||||
if(src != target && ((TBL_PC*)target)->special_state.no_knockback)
|
||||
return 0;
|
||||
break;
|
||||
case BL_SKILL:
|
||||
su=(struct skill_unit *)target;
|
||||
break;
|
||||
@ -1877,7 +1889,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
|
||||
struct pet_data *pd = (TBL_PET*)src;
|
||||
if (pd->a_skill && pd->a_skill->div_ && pd->a_skill->id == skillid)
|
||||
{
|
||||
int element = skill_get_pl(skillid);
|
||||
int element = skill_get_pl(skillid, skilllv);
|
||||
if (skillid == -1)
|
||||
element = sstatus->rhw.ele;
|
||||
if (element != ELE_NEUTRAL || !(battle_config.attack_attr_none&BL_PET))
|
||||
@ -3489,7 +3501,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
sd->skillitem = abra_skillid;
|
||||
sd->skillitemlv = abra_skilllv;
|
||||
sd->state.abra_flag = 1;
|
||||
clif_item_skill (sd, abra_skillid, abra_skilllv, "Abracadabra");
|
||||
clif_item_skill (sd, abra_skillid, abra_skilllv);
|
||||
} else
|
||||
{ // [Skotlex]
|
||||
struct unit_data *ud = unit_bl2ud(src);
|
||||
@ -3682,27 +3694,33 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
|
||||
break;
|
||||
|
||||
case ITEM_ENCHANTARMS:
|
||||
clif_skill_nodamage(src,bl,skillid,skilllv,
|
||||
sc_start2(bl,type,100,skilllv,
|
||||
skill_get_pl(skillid,skilllv), skill_get_time(skillid,skilllv)));
|
||||
break;
|
||||
|
||||
case TK_SEVENWIND:
|
||||
switch(skilllv){
|
||||
case 1:
|
||||
switch(skill_get_pl(skillid,skilllv)){
|
||||
case ELE_EARTH:
|
||||
type=SC_EARTHWEAPON;
|
||||
break;
|
||||
case 2:
|
||||
case ELE_WIND:
|
||||
type=SC_WINDWEAPON;
|
||||
break;
|
||||
case 3:
|
||||
case ELE_WATER:
|
||||
type=SC_WATERWEAPON;
|
||||
break;
|
||||
case 4:
|
||||
case ELE_FIRE:
|
||||
type=SC_FIREWEAPON;
|
||||
break;
|
||||
case 5:
|
||||
case ELE_GHOST:
|
||||
type=SC_GHOSTWEAPON;
|
||||
break;
|
||||
case 6:
|
||||
case ELE_DARK:
|
||||
type=SC_SHADOWWEAPON;
|
||||
break;
|
||||
case 7:
|
||||
case ELE_HOLY:
|
||||
type=SC_ASPERSIO;
|
||||
break;
|
||||
}
|
||||
@ -4417,8 +4435,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
pc_randomwarp(sd,3);
|
||||
} else {
|
||||
if (sd->skillitem != AL_TELEPORT)
|
||||
clif_skill_warppoint(sd,skillid,skilllv,"Random",
|
||||
mapindex_id2name(sd->status.save_point.map),"","");
|
||||
{
|
||||
char save_map[MAP_NAME_LENGTH];
|
||||
snprintf(save_map, MAP_NAME_LENGTH, "%s.gat", mapindex_id2name(sd->status.save_point.map));
|
||||
clif_skill_warppoint(sd,skillid,skilllv,"Random",save_map,"","");
|
||||
}
|
||||
else //Autocasted Teleport level 2??
|
||||
pc_setpos(sd,sd->status.save_point.map,
|
||||
sd->status.save_point.x,sd->status.save_point.y,3);
|
||||
@ -4548,6 +4569,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
sp = sp * (100 + pc_checkskill(dstsd,MG_SRECOVERY)*10) / 100;
|
||||
}
|
||||
}
|
||||
if ((i = battle_skillatk_bonus(sd, skillid)) > 0)
|
||||
{
|
||||
hp += hp * i / 100;
|
||||
sp += sp * i / 100;
|
||||
}
|
||||
}
|
||||
else {
|
||||
hp = (1 + rand()%400) * (100 + skilllv*10) / 100;
|
||||
@ -4795,7 +4821,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
case NPC_CHANGETELEKINESIS:
|
||||
case NPC_CHANGEUNDEAD:
|
||||
clif_skill_nodamage(src,bl,skillid,skilllv,
|
||||
sc_start4(bl, type, 100, skilllv, skillid, skill_get_pl(skillid), 0,
|
||||
sc_start4(bl, type, 100, skilllv, skillid, skill_get_pl(skillid,skilllv), 0,
|
||||
skill_get_time(skillid, skilllv)));
|
||||
break;
|
||||
|
||||
@ -6140,7 +6166,8 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s
|
||||
//Apply skill bonuses
|
||||
i = pc_checkskill(sd,CR_SLIMPITCHER)*10
|
||||
+ pc_checkskill(sd,AM_POTIONPITCHER)*10
|
||||
+ pc_checkskill(sd,AM_LEARNINGPOTION)*5;
|
||||
+ pc_checkskill(sd,AM_LEARNINGPOTION)*5
|
||||
+ battle_skillatk_bonus(sd, skillid);
|
||||
|
||||
potion_hp = potion_hp * (100+i)/100;
|
||||
potion_sp = potion_sp * (100+i)/100;
|
||||
@ -6554,6 +6581,8 @@ struct skill_unit_group *skill_unitsetting (struct block_list *src, int skillid,
|
||||
case PR_SANCTUARY:
|
||||
val1=(skilllv+3)*2;
|
||||
val2=(skilllv>6)?777:skilllv*100;
|
||||
if (sd && (i = battle_skillatk_bonus(sd, skillid)) > 0)
|
||||
val2 += val2 * i / 100;
|
||||
break;
|
||||
|
||||
case WZ_FIREPILLAR:
|
||||
@ -11220,7 +11249,7 @@ int skill_readdb (void)
|
||||
skill_split_atoi(split[1],skill_db[i].range);
|
||||
skill_db[i].hit=atoi(split[2]);
|
||||
skill_db[i].inf=atoi(split[3]);
|
||||
skill_db[i].pl=atoi(split[4]);
|
||||
skill_split_atoi(split[4],skill_db[i].pl);
|
||||
skill_db[i].nk=(int)strtol(split[5], NULL, 0);
|
||||
skill_split_atoi(split[6],skill_db[i].splash);
|
||||
skill_db[i].max=atoi(split[7]);
|
||||
|
@ -62,7 +62,7 @@
|
||||
struct skill_db {
|
||||
char *name;
|
||||
char *desc;
|
||||
int range[MAX_SKILL_LEVEL],hit,inf,pl,nk,splash[MAX_SKILL_LEVEL],max;
|
||||
int range[MAX_SKILL_LEVEL],hit,inf,pl[MAX_SKILL_LEVEL],nk,splash[MAX_SKILL_LEVEL],max;
|
||||
int num[MAX_SKILL_LEVEL];
|
||||
int cast[MAX_SKILL_LEVEL],walkdelay[MAX_SKILL_LEVEL],delay[MAX_SKILL_LEVEL];
|
||||
int upkeep_time[MAX_SKILL_LEVEL],upkeep_time2[MAX_SKILL_LEVEL];
|
||||
@ -155,7 +155,7 @@ int skill_get_casttype(int id); //[Skotlex]
|
||||
int skill_get_type( int id );
|
||||
int skill_get_hit( int id );
|
||||
int skill_get_inf( int id );
|
||||
int skill_get_pl( int id );
|
||||
int skill_get_pl( int id , int lv );
|
||||
int skill_get_nk( int id );
|
||||
int skill_get_max( int id );
|
||||
int skill_get_range( int id , int lv );
|
||||
@ -801,8 +801,8 @@ enum _skill {
|
||||
CG_TAROTCARD,
|
||||
CR_ACIDDEMONSTRATION,
|
||||
CR_CULTIVATION,
|
||||
//492,missing?
|
||||
TK_MISSION = 493,
|
||||
ITEM_ENCHANTARMS,
|
||||
TK_MISSION,
|
||||
SL_HIGH,
|
||||
KN_ONEHAND,
|
||||
AM_TWILIGHT1,
|
||||
|
@ -351,6 +351,7 @@ void initChangeTables(void) {
|
||||
set_sc(WS_OVERTHRUSTMAX, SC_MAXOVERTHRUST, SI_MAXOVERTHRUST, SCB_NONE);
|
||||
set_sc(CG_LONGINGFREEDOM, SC_LONGING, SI_BLANK, SCB_SPEED|SCB_ASPD);
|
||||
add_sc(CG_HERMODE, SC_HERMODE);
|
||||
set_sc(ITEM_ENCHANTARMS, SC_ENCHANTARMS, SI_BLANK, SCB_ATK_ELE);
|
||||
set_sc(SL_HIGH, SC_SPIRIT, SI_SPIRIT, SCB_PC);
|
||||
set_sc(KN_ONEHAND, SC_ONEHAND, SI_ONEHAND, SCB_ASPD);
|
||||
set_sc(GS_FLING, SC_FLING, SI_BLANK, SCB_DEF|SCB_DEF2);
|
||||
@ -1091,7 +1092,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
|
||||
hide_flag = flag?OPTION_HIDE:(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK);
|
||||
|
||||
//You cannot hide from ground skills.
|
||||
if(skill_get_pl(skill_num) == ELE_EARTH)
|
||||
if(skill_get_pl(skill_num,1) == ELE_EARTH) //TODO: Need Skill Lv here :/
|
||||
hide_flag &= ~OPTION_HIDE;
|
||||
|
||||
switch (target->type)
|
||||
@ -3903,6 +3904,8 @@ unsigned char status_calc_attack_element(struct block_list *bl, struct status_ch
|
||||
{
|
||||
if(!sc || !sc->count)
|
||||
return element;
|
||||
if( sc->data[SC_ENCHANTARMS].timer!=-1)
|
||||
return sc->data[SC_ENCHANTARMS].val2;
|
||||
if( sc->data[SC_WATERWEAPON].timer!=-1)
|
||||
return ELE_WATER;
|
||||
if( sc->data[SC_EARTHWEAPON].timer!=-1)
|
||||
@ -5744,6 +5747,13 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
|
||||
val3 = BF_LONG; //Range
|
||||
val4 = BF_WEAPON|BF_MISC; //Type
|
||||
break;
|
||||
case SC_ENCHANTARMS:
|
||||
//Make sure the received element is valid.
|
||||
if (val2 >= ELE_MAX)
|
||||
val2 = val2%ELE_MAX;
|
||||
else if (val2 < 0)
|
||||
val2 = rand()%ELE_MAX;
|
||||
break;
|
||||
case SC_ARMOR_ELEMENT:
|
||||
//Place here SCs that have no SCB_* data, no skill associated, no ICON
|
||||
//associated, and yet are not wrong/unknown. [Skotlex]
|
||||
|
@ -236,7 +236,6 @@ enum {
|
||||
SC_SKA, // [marquis007]
|
||||
SC_TKREST, // [marquis007]
|
||||
SC_MIRACLE, //SG 'hidden' skill [Komurka]
|
||||
//Ninja/GS states
|
||||
SC_MADNESSCANCEL,
|
||||
SC_ADJUSTMENT,
|
||||
SC_INCREASING, //230
|
||||
@ -259,6 +258,7 @@ enum {
|
||||
SC_INCAGIRATE,
|
||||
SC_INCDEXRATE,
|
||||
SC_JAILED,
|
||||
SC_ENCHANTARMS,
|
||||
SC_MAX, //Automatically updated max, used in for's and at startup to check we are within bounds. [Skotlex]
|
||||
};
|
||||
int SkillStatusChangeTable(int skill);
|
||||
|
Loading…
x
Reference in New Issue
Block a user