Merged with master
This commit is contained in:
commit
35cd68873b
@ -52,6 +52,12 @@ packet_ver_flag: 0x7FFFFFFF
|
||||
// 0x00000008: 2013-07-10 Ragexe (version 43)
|
||||
// 0x00000010: 2013-07-17 Ragexe (version 44)
|
||||
// 0x00000020: 2013-08-07 Ragexe (version 45)
|
||||
// 0x00000040: 2013-12-23 Ragexe (version 46)
|
||||
// 0x00000080: ????
|
||||
// 0x00000100: ????
|
||||
// 0x00000200: ????
|
||||
// 0x00000400: 2014-10-16 Ragexe (version 50)
|
||||
// 0x00000800: 2014-10-22 Ragexe (version 51)
|
||||
// default value: 0x7FFFFFFF (all clients/versions [41;72])
|
||||
packet_ver_flag2: 0x7FFFFFFF
|
||||
|
||||
|
@ -57,3 +57,8 @@ feature.autotrade_sit: 1
|
||||
|
||||
// Delay in miliseconds to open vending/buyingsotre after player logged in.
|
||||
feature.autotrade_open_delay: 5000
|
||||
|
||||
// Roulette (Note 1)
|
||||
// Requires: 2014-10-22bRagexe or later
|
||||
// Off by default while test version is out; enable at your own risk.
|
||||
feature.roulette: off
|
||||
|
@ -145,6 +145,7 @@ mapreg_table: mapreg
|
||||
vending_db: vendings
|
||||
vending_items_db: vending_items
|
||||
market_table: market
|
||||
db_roulette_table: db_roulette
|
||||
|
||||
// Use SQL item_db, mob_db and mob_skill_db for the map server? (yes/no)
|
||||
use_sql_db: no
|
||||
|
@ -8,31 +8,32 @@
|
||||
//--------------------------------------------------------------
|
||||
|
||||
// Enable Logs? (Note 3)
|
||||
// 0x00000 - Don't log at all
|
||||
// 0x00001 - (T) Log trades
|
||||
// 0x00002 - (V) Log vending transactions
|
||||
// 0x00004 - (P) Log items drop/picked by players
|
||||
// 0x00008 - (L) Log items drop/looted by monsters
|
||||
// 0x00010 - (S) Log NPC transactions (buy/sell)
|
||||
// 0x00020 - (N) Log Script transactions (items deleted/acquired through quests)
|
||||
// 0x00040 - (D) Log items stolen from mobs (Steal/Gank)
|
||||
// 0x00080 - (C) Log player-used items (consumables/pet&hom&merc food/items used for skills&attacks)
|
||||
// 0x00100 - (O) Log produced/ingredient items
|
||||
// 0x00200 - (U) Log MVP prize items
|
||||
// 0x00400 - (A) Log player created/deleted items (through @/# commands)
|
||||
// 0x00800 - (R) Log items placed/retrieved from storage.
|
||||
// 0x01000 - (G) Log items placed/retrieved from guild storage.
|
||||
// 0x02000 - (E) Log mail system transactions.
|
||||
// 0x04000 - (I) Log auction system transactions.
|
||||
// 0x08000 - (B) Log buying store transactions
|
||||
// 0x10000 - (X) Log all other transactions (rentals expiring/inserting cards/items removed by item_check/
|
||||
// 0x000000 - Don't log at all
|
||||
// 0x000001 - (T) Log trades
|
||||
// 0x000002 - (V) Log vending transactions
|
||||
// 0x000004 - (P) Log items drop/picked by players
|
||||
// 0x000008 - (L) Log items drop/looted by monsters
|
||||
// 0x000010 - (S) Log NPC transactions (buy/sell)
|
||||
// 0x000020 - (N) Log Script transactions (items deleted/acquired through quests)
|
||||
// 0x000040 - (D) Log items stolen from mobs (Steal/Gank)
|
||||
// 0x000080 - (C) Log player-used items (consumables/pet&hom&merc food/items used for skills&attacks)
|
||||
// 0x000100 - (O) Log produced/ingredient items
|
||||
// 0x000200 - (U) Log MVP prize items
|
||||
// 0x000400 - (A) Log player created/deleted items (through @/# commands)
|
||||
// 0x000800 - (R) Log items placed/retrieved from storage.
|
||||
// 0x001000 - (G) Log items placed/retrieved from guild storage.
|
||||
// 0x002000 - (E) Log mail system transactions.
|
||||
// 0x004000 - (I) Log auction system transactions.
|
||||
// 0x008000 - (B) Log buying store transactions
|
||||
// 0x010000 - (X) Log all other transactions (rentals expiring/inserting cards/items removed by item_check/
|
||||
// rings deleted by divorce/pet egg (un)hatching/pet armor (un)equipping/Weapon Refine skill/Remove Trap skill)
|
||||
// 0x20000 - ($) Log cash transactions
|
||||
// 0x40000 - (K) Log account bank transactions
|
||||
// 0x80000 - (F) Removed bound items when guild/party is broken
|
||||
// 0x020000 - ($) Log cash transactions
|
||||
// 0x040000 - (K) Log account bank transactions
|
||||
// 0x080000 - (F) Removed bound items when guild/party is broken
|
||||
// 0x100000 - (Y) Roulette Lottery
|
||||
// Example: Log trades+vending+script items+created items: 1+2+32+1024 = 1059
|
||||
// Please note that moving items from inventory to cart and back is not logged by design.
|
||||
enable_logs: 0xFFFFF
|
||||
enable_logs: 0xFFFFFF
|
||||
|
||||
// Use MySQL Logs? [SQL Version Only] (Note 1)
|
||||
sql_logs: yes
|
||||
|
@ -1593,5 +1593,8 @@
|
||||
1495: You can't withdraw that much money
|
||||
1496: Banking is disabled
|
||||
|
||||
// Roulette
|
||||
1497: Roulette is disabled
|
||||
|
||||
//Custom translations
|
||||
//import: conf/msg_conf/import/map_msg_eng_conf.txt
|
||||
|
21
db/const.txt
21
db/const.txt
@ -432,6 +432,9 @@ CharMoves 124 1
|
||||
CharRename 125 1
|
||||
Font 126 1
|
||||
BankVault 127 1
|
||||
RouletteBronze 128 1
|
||||
RouletteSilver 129 1
|
||||
RouletteGold 130 1
|
||||
|
||||
bMaxHP 6
|
||||
bMaxSP 8
|
||||
@ -595,8 +598,8 @@ bMagicSPGainValue 2043
|
||||
bMagicHPGainValue 2044
|
||||
bAddMonsterIdDropItem 2045
|
||||
bMatk 2046
|
||||
bSPGainRaceAttack 2047
|
||||
bHPGainRaceAttack 2048
|
||||
bComaClass 2047
|
||||
bComaRace 2048
|
||||
bSkillUseSPrate 2049
|
||||
bSkillCooldown 2050
|
||||
|
||||
@ -628,16 +631,9 @@ bAddMaxWeight 2072
|
||||
bAddItemGroupHealRate 2073
|
||||
bHPVanishRaceRate 2074
|
||||
bSPVanishRaceRate 2075
|
||||
bHPGainRaceAttackRate 2076
|
||||
bSPGainRaceAttackRate 2077
|
||||
bAbsorbDmgMaxHP 2078
|
||||
|
||||
bHPGainAttack 2079
|
||||
bSPGainAttack 2080
|
||||
bHPGainAttackRate 2081
|
||||
bSPGainAttackRate 2082
|
||||
bSubSkill 2083
|
||||
bSubDefEle 2084
|
||||
bAbsorbDmgMaxHP 2076
|
||||
bSubSkill 2077
|
||||
bSubDefEle 2078
|
||||
|
||||
EQI_HEAD_TOP 1
|
||||
EQI_ARMOR 2
|
||||
@ -1174,6 +1170,7 @@ IG_Lucky_Silvervine_Fruit_Box_III110 421
|
||||
IG_Old_Ore_Box 422
|
||||
|
||||
SC_ALL -1
|
||||
SC_NONE -1
|
||||
SC_STONE 0
|
||||
SC_FREEZE 1
|
||||
SC_STUN 2
|
||||
|
106
db/packet_db.txt
106
db/packet_db.txt
@ -2318,5 +2318,109 @@ packet_keys: 0x631C511C,0x111C111C,0x111C111C // [Shakto]
|
||||
0x09D8,2,npcmarketclosed,0
|
||||
0x09DF,7
|
||||
|
||||
//2014-10-16Ragexe
|
||||
packet_ver: 50
|
||||
packet_keys: 0x2DFF467C,0x444B37EE,0x2C1B634F // [YomRawr]
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
0x0437,5,walktoxy,2
|
||||
0x035F,6,ticksend,2
|
||||
0x0967,5,changedir,2:4
|
||||
0x07E4,6,takeitem,2
|
||||
0x0362,6,dropitem,2:4
|
||||
0x07EC,8,movetokafra,2:4
|
||||
0x022D,8,movefromkafra,2:4
|
||||
0x0438,10,useskilltopos,2:4:6:8
|
||||
0x0366,90,useskilltoposinfo,2:4:6:8:10
|
||||
0x096A,6,getcharnamerequest,2
|
||||
0x0368,6,solvecharname,2
|
||||
0x0838,12,searchstoreinfolistitemclick,2:6:10
|
||||
0x0835,2,searchstoreinfonextpage,0
|
||||
0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15
|
||||
0x0811,-1,reqtradebuyingstore,2:4:8:12
|
||||
0x0360,6,reqclickbuyingstore,2
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0365,18,bookingregreq,2:4
|
||||
// 0x0363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0281,-1,itemlistwindowselected,2:4:8
|
||||
0x086E,19,wanttoconnection,2:6:10:14:18
|
||||
0x0802,26,partyinvite,2
|
||||
// 0x0922,4 // CZ_GANGSI_RANK
|
||||
0x094B,26,friendslistadd,2
|
||||
0x0364,5,hommenu,2:4
|
||||
0x0936,36,storagepassword,0
|
||||
0x09DF,7
|
||||
0x0a00,269
|
||||
// Roulette System [Yommy]
|
||||
0x0A19,2,rouletteopen,0 // HEADER_CZ_REQ_OPEN_ROULETTE
|
||||
0x0A1A,23 // HEADER_ZC_ACK_OPEN_ROULETTE
|
||||
0x0A1B,2,rouletteinfo,0 // HEADER_CZ_REQ_ROULETTE_INFO
|
||||
0x0A1C,-1 // HEADER_ZC_ACK_ROULETTE_INFO
|
||||
0x0A1D,2,rouletteclose,0 // HEADER_CZ_REQ_CLOSE_ROULETTE
|
||||
0x0A1E,3 // HEADER_ZC_ACK_CLOSE_ROULETTE
|
||||
0x0A1F,2,roulettegenerate,0 // HEADER_CZ_REQ_GENERATE_ROULETTE
|
||||
0x0A20,21 // HEADER_ZC_ACK_GENERATE_ROULETTE
|
||||
0x0A21,3,rouletterecvitem,2 // HEADER_CZ_RECV_ROULETTE_ITEM
|
||||
0x0A22,5 // HEADER_ZC_RECV_ROULETTE_ITEM
|
||||
|
||||
//2014-10-22bRagexe
|
||||
packet_ver: 51
|
||||
packet_keys: 0x290551EA,0x2B952C75,0x2D67669B // [YomRawr]
|
||||
0x006d,149
|
||||
0x023b,10,useskilltopos,2:4:6:8
|
||||
0x0281,-1,itemlistwindowselected,2:4:8:12
|
||||
0x035f,6,ticksend,2
|
||||
0x0360,6,reqclickbuyingstore,2
|
||||
0x0366,90,useskilltoposinfo,2:4:6:8:10
|
||||
0x0368,6,solvecharname,2
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x0437,5,walktoxy,2
|
||||
0x0438,36,storagepassword,2:4:20
|
||||
0x0811,-1,reqtradebuyingstore,2:4:8:12
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15
|
||||
0x0835,12,searchstoreinfolistitemclick,2:6:10
|
||||
0x083c,10,useskilltoid,2:4:6
|
||||
0x0878,8,movetokafra,2:4
|
||||
0x087d,6,dropitem,2:4
|
||||
0x0896,26,partyinvite2,2
|
||||
0x0899,5,hommenu,2:4
|
||||
0x08aa,8,movefromkafra,2:4
|
||||
//0x08ab,4 // CZ_GANGSI_RANK
|
||||
0x08ad,5,changedir,2:4
|
||||
0x08e3,149
|
||||
0x091a,26,friendslistadd,2
|
||||
//0x092b,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x093b,19,wanttoconnection,2:6:10:14:18
|
||||
0x0940,2,searchstoreinfonextpage,0
|
||||
0x094e,6,takeitem,2
|
||||
0x0955,18,bookingregreq,2:4:6
|
||||
0x096a,6,getcharnamerequest,2
|
||||
0x09e7,3
|
||||
0x09e8,11
|
||||
0x09ea,11
|
||||
0x09eb,-1
|
||||
0x09ed,3
|
||||
0x09ee,11
|
||||
0x09f1,11
|
||||
0x09f2,12
|
||||
0x09f3,11
|
||||
0x09f9,143
|
||||
0x0a03,2
|
||||
0x0a04,6
|
||||
0x0a05,49
|
||||
0x0a06,6
|
||||
0x0a07,9
|
||||
0x0a08,26
|
||||
0x0a09,45
|
||||
0x0a0a,47
|
||||
0x0a0b,47
|
||||
0x0a0c,56
|
||||
0x0a0d,-1
|
||||
0x0a13,26
|
||||
0x0a24,66
|
||||
|
||||
//Add new packets here
|
||||
//packet_ver: 47
|
||||
//packet_ver: 52
|
||||
|
@ -136,12 +136,12 @@
|
||||
4127:4166,{ bonus2 bAddEffWhenHit,Eff_Curse,600; }
|
||||
4153:4247:4273,{ bonus3 bAddMonsterDropItem,544,RC_Fish,3000; bonus2 bAddEle,Ele_Water,30; }
|
||||
4168:4169,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bCastrate,-10; }
|
||||
4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPGainAttack,1; if(BaseClass==Job_Thief) bonus bNoGemStone,0; }
|
||||
4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bWeaponComaRace,RC_Brute,100; } }
|
||||
4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone,0; }
|
||||
4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; } }
|
||||
4178:4234:4252:4297:4381,{ bonus bDex,5; bonus2 bSkillAtk,"CG_ARROWVULCAN",5; bonus2 bSkillAtk,"DC_THROWARROW",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; if(BaseJob==Job_Bard||BaseJob==Job_Dancer) bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",2,50; }
|
||||
4185:4217:4280:4293:4312,{ bonus bVit,10; bonus bCastrate,-10; bonus bUseSPRate,-10; if(BaseClass==Job_Acolyte) { bonus2 bExpAddRace,RC_Undead,5; bonus2 bExpAddRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,30; bonus2 bSubRace,RC_Demon,30; } }
|
||||
4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel,0; } }
|
||||
4186:4206:4233:4281:4321,{ bonus bLuk,10; bonus bSPGainAttack,2; bonus2 bSkillAtk,42,20; if(BaseClass==Job_Merchant) { bonus2 bAddMonsterDropItem,617,5; bonus bMagicDamageReturn,20; } }
|
||||
4186:4206:4233:4281:4321,{ bonus bLuk,10; bonus bSPDrainValue,2; bonus2 bSkillAtk,42,20; if(BaseClass==Job_Merchant) { bonus2 bAddMonsterDropItem,617,5; bonus bMagicDamageReturn,20; } }
|
||||
4191:4208:4258:4309:4325:4327,{ bonus bMaxHP,500; bonus bDef,5; bonus bMdef,5; bonus2 bSkillAtk,14,10; bonus2 bSkillAtk,19,10; bonus2 bSkillAtk,20,10; if(BaseClass==Job_Mage) { bonus bMatkRate,3; bonus bCastrate,-15; } }
|
||||
4193:4294,{ bonus bMaxHP,300; bonus bMaxSP,60; }
|
||||
4208:4258:4325:4327:4382,{ bonus bInt,3; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",10; bonus2 bSkillAtk,"MG_THUNDERSTORM",10; if(BaseJob==Job_Sage) { bonus bMagicDamageReturn,20; bonus2 bAddMonsterDropItem,716,100; bonus2 bAddMonsterDropItem,715,100; bonus bCastrate,-20; } }
|
||||
|
@ -482,7 +482,7 @@
|
||||
1129,Flamberge,Flamberge,5,60000,,1500,150,,1,0,0x00004080,7,2,2,3,27,1,2,{},{},{}
|
||||
1130,Nagan,Nagan,5,20,,500,120,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
|
||||
1131,Ice_Falchon,Ice Falchion,5,20,,600,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100; },{},{}
|
||||
1132,Edge,Edge,5,20,,700,115,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaClass,Class_Normal,10; },{},{}
|
||||
1132,Edge,Edge,5,20,,700,115,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddEff,Eff_Curse,30; bonus2 bComaClass,Class_Normal,10; },{},{}
|
||||
1133,Fire_Brand,Fireblend,5,20,,500,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100; },{},{}
|
||||
1134,Scissores_Sword,Caesar's Sword,5,20,,700,140,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddRace,RC_Plant,25; bonus bIgnoreDefRace,RC_Plant; },{},{}
|
||||
1135,Cutlas,Cutlus,5,20,,900,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||
@ -660,11 +660,11 @@
|
||||
1362,Two_Handed_Axe__,Two-Handed Axe,5,55000,,2500,185,,1,0,0x000444A2,7,2,34,3,30,1,7,{},{},{}
|
||||
1363,Brood_Axe,Bloody Axe,5,20,,4000,170,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bStr,10; bonus bSpeedRate,25; },{},{}
|
||||
1364,Great_Axe,Great Axe,5,20,,1800,187,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,1500; },{},{}
|
||||
1365,Sabbath,Sabbath,5,20,,2300,120,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Dark; bonus2 bWeaponComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50; },{},{}
|
||||
1365,Sabbath,Sabbath,5,20,,2300,120,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Dark; bonus2 bComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50; },{},{}
|
||||
1366,Right_Epsilon,Light Epsilon,5,20,,2300,180,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; },{},{}
|
||||
1367,Slaughter,Slaughter,5,20,,2500,120,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bWeaponComaRace,RC_Brute,40; },{},{}
|
||||
1367,Slaughter,Slaughter,5,20,,2500,120,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bComaRace,RC_Brute,40; },{},{}
|
||||
1368,Tomahawk,Tomahawk,5,20,,2500,165,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Wind; skill "ITM_TOMAHAWK",1; },{},{}
|
||||
1369,Guillotine,Guillotine,5,20,,3000,215,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bWeaponComaRace,RC_Player,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRaceAttack,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20; },{},{}
|
||||
1369,Guillotine,Guillotine,5,20,,3000,215,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus2 bComaRace,RC_DemiHuman,30; bonus2 bComaRace,RC_Player,30; bonus2 bSPDrainValueRace,RC_DemiHuman,2; bonus2 bSPDrainValueRace,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20; },{},{}
|
||||
1370,Doom_Slayer,Doom Slayer,5,20,,6000,10,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; } },{},{}
|
||||
1371,Doom_Slayer_,Doom Slayer,5,20,,6000,10,,1,1,0x000444A2,7,2,34,4,80,1,7,{ bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; } },{},{}
|
||||
1372,Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,7,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; bonus bStr,10; bonus bSpeedRate,25; },{},{}
|
||||
@ -786,7 +786,7 @@
|
||||
1523,Spike,Spike,5,20,,700,85,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{}
|
||||
1524,Golden_Mace,Golden Mace,5,20,,800,110,,1,1,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{}
|
||||
1525,Long_Mace,Long Mace,5,20,,800,135,,3,0,0x00008110,7,2,2,4,40,1,8,{ bonus bLongAtkDef,10; },{},{}
|
||||
1526,Slash,Slash,5,20,,1000,145,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,15; bonus2 bWeaponComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5; },{},{}
|
||||
1526,Slash,Slash,5,20,,1000,145,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5; },{},{}
|
||||
1527,Quadrille,Quadrille,5,20,,900,165,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10; },{},{}
|
||||
1528,Grand_Cross,Grand Cross,5,20,,1500,140,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3; },{},{}
|
||||
1529,Iron_Driver,Iron Driver,5,20,,3000,155,,2,0,0x00008100,7,2,2,3,78,1,8,{},{},{}
|
||||
@ -825,7 +825,7 @@
|
||||
1562,Bible_Of_Battlefield,Battlefield Textbook,5,20,,700,110,,1,1,0x00410100,7,2,2,4,80,0,15,{ bonus bInt,3; bonus3 bAutoSpell,"AL_BLESSING",3+(getskilllv("AL_BLESSING")>3)*(getskilllv("AL_BLESSING")-3),20; },{},{}
|
||||
1563,Diary_Of_Great_Sage_C,Sage's Diary,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{ bonus bMatkRate,20; bonus bAspdRate,5; },{},{}
|
||||
1564,Encyclopedia,Encyclopedia,5,20,,2000,110,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); },{},{}
|
||||
1565,Death_Note,Ledger of Death,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1565,Death_Note,Ledger of Death,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1566,Diary_Of_Great_Basil,Diary Of Great Basil,5,20,,0,120,,1,0,0x00410100,7,2,2,1,0,0,15,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||
1567,Hardback_C,Refined Hardcover Book,5,1,,0,168,,1,0,0x00410100,7,2,2,4,0,0,15,{ bonus bStr,5; bonus bDex,2; bonus bMatkRate,20; },{},{}
|
||||
1568,Book_Of_Billows_,Book of Billows,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Water; },{},{}
|
||||
@ -839,7 +839,7 @@
|
||||
1576,Krieger_Book1,Glorious Tablet,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{}
|
||||
1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; } },{},{}
|
||||
1578,Book_Of_Prayer,Book Of Prayer,5,20,,0,140,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10; },{},{}
|
||||
1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1580,Encyclopedia_C,Giant Encyclopedia,5,0,,0,145,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40; },{},{}
|
||||
1581,F_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
|
||||
1582,E_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
|
||||
@ -1417,7 +1417,7 @@
|
||||
2551,Rider_Insignia_M,Crest of the Rider,4,20,,500,,4,,1,0xFFFFFFFE,2,2,4,,55,1,0,{ bonus bAgi,2; },{},{}
|
||||
2552,Mithril_Magic_Cape_M,Mithril Magic Manteau,4,20,,400,,3,,1,0x00098B1C,2,2,4,,70,1,0,{ bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",6,200,BF_MAGIC,0; },{},{}
|
||||
2553,Dragon_Manteau,Dragon Manteau,4,20,,1000,,5,,1,0xFFFFFFFE,2,2,4,,0,1,0,{ bonus bAgi,1; bonus bMdef,5; },{},{}
|
||||
2554,Piece_Of_Angent_Skin,Nydhorgg's Shadow Garb,4,20,,400,,5,,1,0xFFFFFFFE,2,2,4,,90,1,0,{ bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPGainAttackRate,100,1; bonus bMdef,3; },{},{}
|
||||
2554,Piece_Of_Angent_Skin,Nydhorgg's Shadow Garb,4,20,,400,,5,,1,0xFFFFFFFE,2,2,4,,90,1,0,{ bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPDrainRate,10,1; bonus bMdef,3; },{},{}
|
||||
// Accessories
|
||||
//===================================================================
|
||||
2601,Ring,Ring,4,30000,,100,,0,,0,0xFFFFFFFE,7,2,136,,20,0,0,{ bonus bStr,2; },{},{}
|
||||
@ -1797,7 +1797,7 @@
|
||||
4169,Dark_Illusion_Card,Dark Illusion Card,6,20,,10,,,,,,,,769,,,,,{ bonus bMaxHPrate,-10; bonus bMaxSPrate,-10; bonus bCastrate,-10; },{},{}
|
||||
4170,Dark_Frame_Card,Dark Frame Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Stone,600; },{},{}
|
||||
4171,Dark_Priest_Card,Dark Priest Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPVanishRate,50,10; if(BaseJob==Job_Sage) bonus bSPDrainValue,1; },{},{}
|
||||
4172,The_Paper_Card,The Paper Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,20; bonus bSPGainAttack,-1; },{},{}
|
||||
4172,The_Paper_Card,The Paper Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,20; bonus bSPDrainValue,-1; },{},{}
|
||||
4173,Demon_Pungus_Card,Demon Pungus Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Sleep,600; },{},{}
|
||||
4174,Deviling_Card,Deviling Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,50; bonus2 bSubEle,Ele_Water,-50; bonus2 bSubEle,Ele_Earth,-50; bonus2 bSubEle,Ele_Fire,-50; bonus2 bSubEle,Ele_Wind,-50; bonus2 bSubEle,Ele_Poison,-50; bonus2 bSubEle,Ele_Holy,-50; bonus2 bSubEle,Ele_Dark,-50; bonus2 bSubEle,Ele_Ghost,-50; bonus2 bSubEle,Ele_Undead,-50; },{},{}
|
||||
4175,Poison_Toad_Card,Poisonous Toad Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"TF_POISON",1,20; bonus2 bAddSkillBlow,52,5; },{},{}
|
||||
@ -1901,12 +1901,12 @@
|
||||
4273,Shellfish_Card,Shell Fish Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1073,30; },{},{}
|
||||
4274,Zombie_Master_Card,Zombie Master Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Undead,5; },{},{ heal 0,-5; }
|
||||
4275,Zombie_Prisoner_Card,Zombie Prisoner Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Undead,-20; bonus2 bExpAddRace,RC_Undead,10; },{},{}
|
||||
4276,Lord_Of_Death_Card,Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bWeaponComaClass,Class_Normal,1; },{},{}
|
||||
4276,Lord_Of_Death_Card,Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bComaClass,Class_Normal,1; },{},{}
|
||||
4277,Zherlthsh_Card,Zealotus Card,6,20,,10,,,,,,,,32,,,,,{ bonus bLuk,2; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{}
|
||||
4278,Gibbet_Card,Gibbet Card,6,20,,10,,,,,,,,769,,,,,{ if(getrefine()<6) bonus bMdef,5; },{},{}
|
||||
4279,Deleter_Card,Earth Deleter Card,6,20,,10,,,,,,,,16,,,,,{ bonus bSPrecovRate,-100; bonus bSPGainValue,10; },{},{ heal 0,-100; }
|
||||
4280,Geographer_Card,Geographer Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30; },{},{}
|
||||
4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPGainAttack,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0; },{},{}
|
||||
4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0; },{},{}
|
||||
4282,Tengu_Card,Tengu Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItemGroup,IG_Recovery,600; },{},{}
|
||||
4283,Greatest_General_Card,Greatest General Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte); },{},{}
|
||||
4284,Chepet_Card,Chepet Card,6,20,,10,,,,,,,,2,,,,,{ bonus4 bAutoSpell,"AL_HEAL",5,50,1; },{},{}
|
||||
@ -5472,7 +5472,7 @@
|
||||
13400,Cutlas_,Cutlus,5,20,,900,150,,1,1,0x000654E2,7,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||
13401,Excalibur_C,Excalibur,5,1,,0,199,,1,0,0x000654E2,7,2,2,4,1,0,2,{ bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy; },{},{}
|
||||
13402,Cutlas_C,Cutlus,5,2,,0,185,,1,0,0x000654E2,7,2,2,4,0,0,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||
13403,Solar_Sword_C,Solar Sword,5,2,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus bHPGainAttackRate,1; bonus2 bSPLossRate,15,10000; },{},{}
|
||||
13403,Solar_Sword_C,Solar Sword,5,2,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus bHPDrainRate,1; bonus2 bSPLossRate,15,10000; },{},{}
|
||||
13404,Platinum_Shotel,Platinum Shotel,5,20,,1500,130,,1,1,0x000654E2,7,2,2,4,55,1,2,{ bonus bCritical,50; },{},{}
|
||||
13405,Curved_Sword,Curved Sword,5,20,,800,125,,1,2,0x000654E2,7,2,2,4,55,1,2,{ bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300; },{},{}
|
||||
13406,Edger,Edger,5,20,,0,120,,1,0,0x000654E2,7,2,2,1,0,0,2,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||
|
@ -41,6 +41,7 @@
|
||||
// 0x08000 - skill that ignore bg reduction
|
||||
// 0x10000 - skill that ignore gvg reduction
|
||||
// 0x20000 - makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options)
|
||||
// 0x40000 - skill that can hit trap-type skill (inf2 has 0x00080)
|
||||
// 13 maxcount: max amount of skill instances to place on the ground when
|
||||
// player_land_skill_limit/monster_land_skill_limit is enabled. For skills
|
||||
// that attack using a path, this is the path length to be used.
|
||||
@ -76,7 +77,7 @@
|
||||
4,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, SM_RECOVERY,Increase HP Recovery
|
||||
5,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0, SM_BASH,Bash
|
||||
6,9,6,1,0,1,0,10,1,no,0,0,0,none,0,0x0, SM_PROVOKE,Provoke
|
||||
7,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0, SM_MAGNUM,Magnum Break
|
||||
7,0,6,4,3,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x0, SM_MAGNUM,Magnum Break
|
||||
8,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, SM_ENDURE,Endure
|
||||
|
||||
//****
|
||||
@ -128,7 +129,7 @@
|
||||
44,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, AC_VULTURE,Vulture's Eye
|
||||
45,0,6,4,0,0x3,3,10,1,no,0,0,0,weapon,0,0x0, AC_CONCENTRATION,Improve Concentration
|
||||
46,-9,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x80, AC_DOUBLE,Double Strafe
|
||||
47,-9,6,2,-1,0x2,2,10,1,no,0,0x0,0,weapon,2,0x81, AC_SHOWER,Arrow Shower
|
||||
47,-9,6,2,-1,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x81, AC_SHOWER,Arrow Shower
|
||||
|
||||
//****
|
||||
// Thief
|
||||
@ -175,7 +176,7 @@
|
||||
//****
|
||||
// Wizard
|
||||
80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,-3:-4:-5:-6:-7:-8:-9:-10:-11:-12:-12,yes,0,0x2080,5,magic,0,0x0, WZ_FIREPILLAR,Fire Pillar
|
||||
81,0,6,4,3,0,7,10,1,yes,0,0x2000,0,magic,5,0x20, WZ_SIGHTRASHER,Sightrasher
|
||||
81,0,6,4,3,0x2,7,10,1,yes,0,0x42000,0,magic,5,0x20, WZ_SIGHTRASHER,Sightrasher
|
||||
83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0x2000,0,magic,0,0x20, WZ_METEOR,Meteor Storm
|
||||
84,9,8,1,4,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0x2000,0,magic,2:3:3:4:4:5:5:6:6:7,0x20, WZ_JUPITEL,Jupitel Thunder
|
||||
85,9,8,2,4,0,0,10,-10,yes,0,0x2000,0,magic,0,0x20, WZ_VERMILION,Lord of Vermilion
|
||||
@ -217,13 +218,13 @@
|
||||
115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x3000, HT_SKIDTRAP,Skid Trap
|
||||
116,3,6,2,2,0x42,0,5,1,no,0,0x80,0,misc,0,0x3800, HT_LANDMINE,Land Mine
|
||||
117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x3000, HT_ANKLESNARE,Ankle Snare
|
||||
118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_SHOCKWAVE,Shockwave Trap
|
||||
118,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_SHOCKWAVE,Shockwave Trap
|
||||
119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x3000, HT_SANDMAN,Sandman
|
||||
120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_FLASHER,Flasher
|
||||
121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x3800, HT_FREEZINGTRAP,Freezing Trap
|
||||
122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800, HT_BLASTMINE,Blast Mine
|
||||
123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x3800, HT_CLAYMORETRAP,Claymore Trap
|
||||
124,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0, HT_REMOVETRAP,Remove Trap
|
||||
124,2,6,32,0,0x1,0,1,1,no,0,0x40000,0,misc,0,0x0, HT_REMOVETRAP,Remove Trap
|
||||
125,3,6,2,0,0x1,0,1,1,no,0,0x80,0,misc,0,0x2000, HT_TALKIEBOX,Talkie Box
|
||||
126,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, HT_BEASTBANE,Beast Bane
|
||||
127,0,0,0,0,0,0,1,0,no,0,0,0,misc,0,0x0, HT_FALCON,Falconry Mastery
|
||||
@ -369,7 +370,7 @@
|
||||
249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, CR_AUTOGUARD,Guard
|
||||
250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0, CR_SHIELDCHARGE,Smite
|
||||
251,3:5:7:9:11,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x20000, CR_SHIELDBOOMERANG,Shield Boomerang
|
||||
252,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0,0x0, CR_REFLECTSHIELD,Shield Reflect
|
||||
252,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, CR_REFLECTSHIELD,Shield Reflect
|
||||
253,-2,8,1,6,0,0,10,-2,no,0,0,0,weapon,0,0x0, CR_HOLYCROSS,Holy Cross
|
||||
254,5,6,4,6,0x48,0,10,1,no,33,0x100,0,magic,0,0x0, CR_GRANDCROSS,Grand Cross
|
||||
255,7:8:9:10:11,6,16,0,0x1,0,5,1,yes,0,0x600,0,none,0,0x0, CR_DEVOTION,Sacrifice
|
||||
@ -561,7 +562,7 @@
|
||||
//****
|
||||
// Stalker
|
||||
389,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x60, ST_CHASEWALK,Stealth
|
||||
390,0,0,4,0,0,0,5,1,yes,0,0,0,weapon,0,0x0, ST_REJECTSWORD,Counter Instinct
|
||||
390,0,0,4,0,0x1,0,5,1,yes,0,0,0,weapon,0,0x0, ST_REJECTSWORD,Counter Instinct
|
||||
//391,0,0,4,0,1,0,1,1,yes,0,0,0,magic,0,0x0, ST_STEALBACKPACK,Steal Backpack
|
||||
|
||||
//****
|
||||
@ -629,9 +630,9 @@
|
||||
//****
|
||||
// Star Gladiator
|
||||
427,0,6,4,0,0x1,0,3,1,yes,0,0,0,magic,0,0x0, SG_FEEL,Feeling the Sun Moon and Stars
|
||||
428,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x1, SG_SUN_WARM,Warmth of the Sun
|
||||
429,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x1, SG_MOON_WARM,Warmth of the Moon
|
||||
430,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x1, SG_STAR_WARM,Warmth of the Stars
|
||||
428,1,6,4,-1,0x3,1,3,1,yes,0,0,0,weapon,2,0x1, SG_SUN_WARM,Warmth of the Sun
|
||||
429,1,6,4,-1,0x3,1,3,1,yes,0,0,0,weapon,2,0x1, SG_MOON_WARM,Warmth of the Moon
|
||||
430,1,6,4,-1,0x3,1,3,1,yes,0,0,0,weapon,2,0x1, SG_STAR_WARM,Warmth of the Stars
|
||||
431,0,0,4,0,0x1,0,4,1,yes,0,0,0,magic,0,0x0, SG_SUN_COMFORT,Comfort of the Sun
|
||||
432,0,0,4,0,0x1,0,4,1,yes,0,0,0,magic,0,0x0, SG_MOON_COMFORT,Comfort of the Moon
|
||||
433,0,0,4,0,0x1,0,4,1,yes,0,0,0,magic,0,0x0, SG_STAR_COMFORT,Comfort of the Stars
|
||||
@ -689,7 +690,7 @@
|
||||
|
||||
//****
|
||||
// Other 2nd Skills
|
||||
473,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, SM_SELFPROVOKE,Provoke Self
|
||||
473,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, SM_SELFPROVOKE,Provoke Self
|
||||
474,0,0,4,0,0x1,0,10,1,no,0,0x2,0,none,0,0x0, NPC_EMOTION_ON,Emotion ON
|
||||
475,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, ST_PRESERVE,Preserve
|
||||
476,1,6,1,0,0x1,0,5,1,yes,0,0,0,weapon,0,0x20, ST_FULLSTRIP,Divest All
|
||||
@ -719,7 +720,7 @@
|
||||
|
||||
//****
|
||||
// Gunslinger
|
||||
500,0,6,4,0,0x40,0,5,1,no,0,0,0,misc,0,0x0, GS_GLITTERING,Flip the Coin
|
||||
500,0,6,4,0,0x41,0,5,1,no,0,0,0,misc,0,0x0, GS_GLITTERING,Flip the Coin
|
||||
501,9,6,1,-1,0x50,0,1,1,no,0,0,0,misc,0,0x0, GS_FLING,Fling
|
||||
502,-9,8,1,-1,0,0,1,3,no,0,0,0,weapon,0,0x0, GS_TRIPLEACTION,Triple Action
|
||||
503,-9,6,1,-1,0x8,0,1,1,no,0,0,0,weapon,0,0x0, GS_BULLSEYE,Bulls Eye
|
||||
@ -870,7 +871,7 @@
|
||||
1003,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x0, AS_SONICACCEL,Sonic Acceleration
|
||||
1004,9,8,1,0,0x8,0,1,1,no,0,0x1,0,weapon,0,0x0, AS_VENOMKNIFE,Throw Venom Knife
|
||||
1005,1,6,1,0,0x1,0,1,1,no,0,0x1,0,weapon,0,0x0, RG_CLOSECONFINE,Close Confine
|
||||
1006,0,6,4,3,0,1,1,1,yes,0,0x1,0,magic,3,0x20, WZ_SIGHTBLASTER,Sight Blaster
|
||||
1006,0,6,4,3,0,1,1,1,yes,0,0x40001,0,magic,3,0x20, WZ_SIGHTBLASTER,Sight Blaster
|
||||
1007,0,6,4,0,0x1,0,1,0,no,0,0x1,0,none,0,0x0, SA_CREATECON,Create Elemental Converter
|
||||
1008,9,6,1,1,0x1,0,1,1,yes,0,0x1,0,magic,0,0x0, SA_ELEMENTWATER,Elemental Change Water
|
||||
1009,-9,6,1,0,0,0,1,1,no,0,0x1,0,weapon,3,0x0, HT_PHANTASMIC,Phantasmic Arrow
|
||||
@ -894,7 +895,7 @@
|
||||
2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3,0x0, RK_WINDCUTTER,Wind Cutter
|
||||
2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0, RK_IGNITIONBREAK,Ignition Break
|
||||
2007,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, RK_DRAGONTRAINING,Dragon Training
|
||||
2008,9,6,2,3,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2008,9,6,2,3,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0x40000,0,weapon,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,0x0, RK_DRAGONHOWLING,Dragon Howling
|
||||
2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RK_RUNEMASTERY,Rune Mastery
|
||||
2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, RK_MILLENNIUMSHIELD,Millenium Shield
|
||||
@ -903,7 +904,7 @@
|
||||
2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_GIANTGROWTH,Giant Growth
|
||||
2015,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_STONEHARDSKIN,Stone Hard Skin
|
||||
2016,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_VITALITYACTIVATION,Vitality Activation
|
||||
2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,0x0, RK_STORMBLAST,Storm Blast
|
||||
2017,0,6,4,-1,0x2,3,1,1,no,0,0x40000,0,weapon,7,0x0, RK_STORMBLAST,Storm Blast
|
||||
2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0, RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
|
||||
2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_ABUNDANCE,Abundance
|
||||
2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RK_PHANTOMTHRUST,Phantom Thrust
|
||||
@ -995,7 +996,7 @@
|
||||
2234,0,6,4,0,0,0,5,1,yes,0,0,0,none,0,0x0, RA_FEARBREEZE,Fear Breeze
|
||||
2235,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_RANGERMAIN,Ranger Main
|
||||
2236,9,8,1,-1,0,0,10,1,yes,0,0,0,weapon,0,0x80, RA_AIMEDBOLT,Aimed Bolt
|
||||
2237,9,6,2,0,0x3,3,1,1,no,0,0,0,none,0,0x2000, RA_DETONATOR,Detonator
|
||||
2237,9,6,2,0,0x3,3,1,1,no,0,0x40000,0,none,0,0x2000, RA_DETONATOR,Detonator
|
||||
2238,3,6,2,0,0x3,2,5,1,no,0,0x80,3,misc,0,0x2000, RA_ELECTRICSHOCKER,Electric Shocker
|
||||
2239,3,6,2,0,0x42,3,5,1,no,0,0x80,3,misc,0,0x2800, RA_CLUSTERBOMB,Cluster Bomb
|
||||
2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, RA_WUGMASTERY,Warg Mastery
|
||||
@ -1004,7 +1005,7 @@
|
||||
2243,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x2000, RA_WUGSTRIKE,Warg Strike
|
||||
2244,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x80, RA_WUGBITE,Warg Bite
|
||||
2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_TOOTHOFWUG,Tooth of Warg
|
||||
2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen
|
||||
2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0x40000,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen
|
||||
2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x42, RA_CAMOUFLAGE,Camouflage
|
||||
2248,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, RA_RESEARCHTRAP,Research Trap
|
||||
2249,3,6,2,3,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_MAGENTATRAP,Magenta Trap
|
||||
@ -1021,14 +1022,14 @@
|
||||
2257,3,6,1,-1,0,0,3,1,no,0,0,0,weapon,0,0x0, NC_PILEBUNKER,Pile Bunker
|
||||
2258,13,6,1,-1,0x2,1,3,1,no,0,0,0,weapon,0,0x0, NC_VULCANARM,Vulcan Arm
|
||||
2259,7,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0, NC_FLAMELAUNCHER,Flame Launcher
|
||||
2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0,0,weapon,0,0x0, NC_COLDSLOWER,Cold Slower
|
||||
2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0x40000,0,weapon,0,0x0, NC_COLDSLOWER,Cold Slower
|
||||
2261,9:11:13,6,2,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0, NC_ARMSCANNON,Arm Cannon
|
||||
2262,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0, NC_ACCELERATION,Acceleration
|
||||
2263,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, NC_HOVERING,Hovering
|
||||
2264,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0, NC_F_SIDESLIDE,Front-Side Slide
|
||||
2265,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0, NC_B_SIDESLIDE,Back-Side Slide
|
||||
2266,0,0,0,0,0,0,4,0,no,0,0,0,none,0,0x0, NC_MAINFRAME,Mainframe Restructure
|
||||
2267,0,6,4,0,0xCA,2:3:4,3,1,no,0,0,0,weapon,5,0x0, NC_SELFDESTRUCTION,Self Destruction
|
||||
2267,0,6,4,0,0xCA,2:3:4,3,1,no,0,0x40000,0,weapon,5,0x0, NC_SELFDESTRUCTION,Self Destruction
|
||||
2268,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0, NC_SHAPESHIFT,Shape Shift
|
||||
2269,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, NC_EMERGENCYCOOL,Emergency Cool
|
||||
2270,0,6,4,0,0x3,7,1,1,yes,0,0,0,none,0,0x0, NC_INFRAREDSCAN,Infrared Scan
|
||||
@ -1102,7 +1103,7 @@
|
||||
2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0, SR_FALLENEMPIRE,Fallen Empire
|
||||
2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0, SR_TIGERCANNON,Tiger Cannon
|
||||
2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, SR_HELLGATE,Hell Gate
|
||||
2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0, SR_RAMPAGEBLASTER,Rampage Blaster
|
||||
2332,0,6,4,-1,0x2,3,5,1,no,0,0x40000,0,weapon,0,0x0, SR_RAMPAGEBLASTER,Rampage Blaster
|
||||
2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_CRESCENTELBOW,Crescent Elbow
|
||||
2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0, SR_CURSEDCIRCLE,Cursed Circle
|
||||
2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_LIGHTNINGWALK,Lightning Walk
|
||||
@ -1203,7 +1204,7 @@
|
||||
2481,11,6,1,-1,0x2,1:2:3:4:5,5,1,yes,0,0,0,weapon,0,0x0, GN_SPORE_EXPLOSION,Spore Explosion //CHECK Data says its element is set to neutral. Need to confirm.
|
||||
2482,11,6,2,0,0x8,0,5,1,yes,0,0,1,weapon,2,0x0, GN_WALLOFTHORN,Wall of Thorns
|
||||
2483,11,6,2,0,0x3,4,10,1,yes,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED,Crazy Weed
|
||||
2484,0,6,2,2,0x2,2,10,1,no,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED_ATK,Crazy Weed Attack
|
||||
2484,0,6,2,2,0x2,2,10,1,no,0,0x40000,0,weapon,0,0x1, GN_CRAZYWEED_ATK,Crazy Weed Attack
|
||||
2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire
|
||||
2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion
|
||||
2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
|
||||
@ -1310,7 +1311,7 @@
|
||||
5001,1,8,1,-1,0,0,5,3,no,0,0,0,weapon,0,0x0, GC_DARKCROW,Dark Claw
|
||||
5002,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RA_UNLIMIT,Unlimited
|
||||
5003,7,6,1,-1,0x2,4:5:6:7:-1,5,1,no,0,0,0,weapon,0,0x0, GN_ILLUSIONDOPING,Illusion Doping
|
||||
5004,9,6,2,1,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
|
||||
5004,9,6,2,1,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0x40000,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
|
||||
5005,0,6,4,0,0x3,3,1,1,no,0,0,0,none,0,0x0, RK_LUXANIMA,Lux Anima
|
||||
5006,1,6,2,3,0,0,5,1,no,0,0,3,misc,0,0x0, NC_MAGMA_ERUPTION,Magma Eruption
|
||||
5007,0,6,4,0,0x3,5:6:7:8:9,5,1,no,0,0,0,none,0,0x0, WM_FRIGG_SONG,Frigg's Song
|
||||
@ -1374,18 +1375,18 @@
|
||||
//****
|
||||
// Mercenary Skill Place holders
|
||||
8201,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0, MS_BASH,Bash
|
||||
8202,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0, MS_MAGNUM,Magnum_Break
|
||||
8202,0,6,4,3,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x0, MS_MAGNUM,Magnum_Break
|
||||
8203,-2,6,1,-1,0x2,1,10,1,no,0,0,0,weapon,1,0x0, MS_BOWLINGBASH,Bowling_Bash
|
||||
8204,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, MS_PARRYING,Parry
|
||||
8205,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0,0x0, MS_REFLECTSHIELD,Shield_Reflect
|
||||
8206,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, MS_BERSERK,Frenzy
|
||||
8207,-9,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x80, MA_DOUBLE,Double_Strafe
|
||||
8208,-9,6,2,-1,0x2,2,10,1,no,0,0x0,0,weapon,2,0x81, MA_SHOWER,Arrow_Shower
|
||||
8208,-9,6,2,-1,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x81, MA_SHOWER,Arrow_Shower
|
||||
8209,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x0, MA_SKIDTRAP,Skid_Trap
|
||||
8210,3,6,2,2,0x40,0,5,1,no,0,0x80,0,misc,0,0x0, MA_LANDMINE,Land_Mine
|
||||
8211,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x0, MA_SANDMAN,Sandman
|
||||
8212,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x0, MA_FREEZINGTRAP,Freezing_Trap
|
||||
8213,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0, MA_REMOVETRAP,Remove_Trap
|
||||
8213,2,6,32,0,0x1,0,1,1,no,0,0x40000,0,misc,0,0x0, MA_REMOVETRAP,Remove_Trap
|
||||
8214,-9,6,1,-1,0x2,0,1,1,no,0,0x1,0,weapon,6,0x80, MA_CHARGEARROW,Arrow_Repel
|
||||
8215,9,8,1,-1,0,2,5,1,yes,0,0,13,weapon,0,0x0, MA_SHARPSHOOTING,Focused_Arrow_Strike
|
||||
8216,-2,8,1,-1,0,0,10,3,no,0,0,0,weapon,0,0x0, ML_PIERCE,Pierce
|
||||
|
@ -269,12 +269,12 @@
|
||||
4168:4169,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bVariableCastrate,-10; }
|
||||
4169:4488,{ if(getequiprefinerycnt(EQI_SHOES) >= 15) { bonus bMaxHPrate,15; bonus bMaxSPrate,15; } else { bonus bMaxHPrate,10; bonus bMaxSPrate,10; } }
|
||||
4169:4488,{ if(getequiprefinerycnt(EQI_SHOES) >= 15) { bonus bMaxHPrate,15; bonus bMaxSPrate,15; } else { bonus bMaxHPrate,10; bonus bMaxSPrate,10; } }
|
||||
4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPGainAttack,1; if(BaseClass==Job_Thief) bonus bNoGemStone,0; }
|
||||
4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bWeaponComaRace,RC_Brute,100; } }
|
||||
4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone,0; }
|
||||
4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; } }
|
||||
4178:4234:4252:4297:4381,{ bonus bDex,5; bonus2 bSkillAtk,"CG_ARROWVULCAN",5; bonus2 bSkillAtk,"DC_THROWARROW",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; if(BaseJob==Job_Bard||BaseJob==Job_Dancer) bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",2,50; }
|
||||
4185:4217:4280:4293:4312,{ bonus bVit,10; bonus bVariableCastrate,-10; bonus bUseSPRate,-10; if(BaseClass==Job_Acolyte) { bonus2 bExpAddRace,RC_Undead,5; bonus2 bExpAddRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,30; bonus2 bSubRace,RC_Demon,30; } }
|
||||
4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel,0; } }
|
||||
4186:4206:4233:4281:4321,{ bonus bLuk,10; bonus bSPGainAttack,2; bonus2 bSkillAtk,42,20; if(BaseClass==Job_Merchant) { bonus2 bAddMonsterDropItem,617,5; bonus bMagicDamageReturn,20; } }
|
||||
4186:4206:4233:4281:4321,{ bonus bLuk,10; bonus bSPDrainValue,2; bonus2 bSkillAtk,42,20; if(BaseClass==Job_Merchant) { bonus2 bAddMonsterDropItem,617,5; bonus bMagicDamageReturn,20; } }
|
||||
4191:4208:4258:4309:4325:4327,{ bonus bMaxHP,500; bonus bDef,5; bonus bMdef,5; bonus2 bSkillAtk,14,10; bonus2 bSkillAtk,19,10; bonus2 bSkillAtk,20,10; if(BaseClass==Job_Mage) { bonus bMatkRate,3; bonus bVariableCastrate,-15; } }
|
||||
4193:4294,{ bonus bMaxHP,300; bonus bMaxSP,60; }
|
||||
4208:4258:4325:4327:4382,{ bonus bInt,3; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",10; bonus2 bSkillAtk,"MG_THUNDERSTORM",10; if(BaseJob==Job_Sage) { bonus bMagicDamageReturn,20; bonus2 bAddMonsterDropItem,716,100; bonus2 bAddMonsterDropItem,715,100; bonus bVariableCastrate,-20; } }
|
||||
@ -352,6 +352,7 @@
|
||||
19021:2160,{ bonus2 bSubSize,Size_Large,5+(getequiprefinerycnt(EQI_HAND_L)*2); }
|
||||
19021:1387,{ bonus2 bSkillAtk,"WS_CARTTERMINATION",15+(getequiprefinerycnt(EQI_HAND_R))*5; }
|
||||
19021:1490,{ bonus2 bSkillAtk,"LK_SPIRALPIERCE",getequiprefinerycnt(EQI_HAND_R)*5; .@lv = getskilllv("LK_SPIRALPIERCE"); bonus4 bAutoSpellOnSkill,"LK_JOINTBEAT","LK_SPIRALPIERCE",(.@lv ? .@lv : 1),50+(getskilllv("LK_JOINTBEAT")*10); /* Confirm: Success rate */ }
|
||||
19024:5170,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r >= 7) bonus bAspdRate,5; if (.@r >= 9) bonus bMaxHPRate,5; }
|
||||
19026:15138,{ bonus2 bSubRace,RC_Fish,(10+getequiprefinerycnt(EQI_ARMOR)); bonus bUnbreakableArmor,1; }
|
||||
19026:20756,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSPGainRace,RC_Fish,10; bonus3 bAddMonsterDropItem,551,RC_Fish,(5+.@r); bonus2 bAddItemHealRate,551,5; bonus bHPrecovRate,(5+.@r); }
|
||||
19026:20756:22059:15138,{ bonus bMaxHP,1000; bonus bMaxSP,100; bonus2 bExpAddRace,RC_Fish,20; bonus2 bMagicAddRace,RC_Fish,50; bonus2 bSubEle,Ele_Water,50; }
|
||||
@ -397,8 +398,8 @@
|
||||
24072:24075,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
||||
24073:24076,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
||||
24074:24077,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
||||
24078:24079:24080,{ bonus2 bSPGainAttackRate,10,1+(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)/10); }
|
||||
24081:24082:24083,{ bonus2 bHPGainAttackRate,40,2+(getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)/5); }
|
||||
24078:24079:24080,{ bonus2 bSPDrainRate,10,1+(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)/10); }
|
||||
24081:24082:24083,{ bonus2 bHPDrainRate,40,2+(getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)/5); }
|
||||
24084:24085:24086:24087:24088:24089,{ bonus bAllStats,1; .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r >= 45) { bonus bNoGemStone,1; } bonus bUseSPrate,100-.@r; }
|
||||
24090:24091:24092,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Stone,100; }
|
||||
24090:24093:24094,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Sleep,100; }
|
||||
@ -459,5 +460,7 @@
|
||||
24234:24235,{ bonus bBaseAtk,5; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=15) { bonus2 bAddSize,Size_Large,2; bonus2 bMagicAddSize,Size_Large,2; } }
|
||||
24236:24237,{ bonus bBaseAtk,5; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=15) { bonus2 bAddSize,Size_Medium,2; bonus2 bMagicAddSize,Size_Medium,2; } }
|
||||
24238:24239,{ bonus bBaseAtk,5; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=15) { bonus2 bAddSize,Size_Small,2; bonus2 bMagicAddSize,Size_Small,2; } }
|
||||
28315:28317,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
|
||||
28316:28318,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
|
||||
28326:28327,{ bonus bInt,8; bonus bStr,8; }
|
||||
28602:2677,{ bonus2 bVariableCastrate,"PR_MAGNUS",-25; bonus bHealPower,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus bIgnoreMDefRace,RC_All; }",getequiprefinerycnt(EQI_HAND_R)*20,2000,BF_SHORT|BF_NORMAL; /* Confirm: Success rate and duration */ }
|
||||
|
@ -165,11 +165,11 @@
|
||||
668,Handsei,Red Envelope,2,0,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ set Zeny,Zeny+rand(1000,10000); },{},{}
|
||||
669,Rice_Cake_Soup,Tempting Rice-Cake Soup,0,500,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal -100,-100; },{},{}
|
||||
670,Gold_Coin_Moneybag,Bag of Gold Coins,3,100000,,400,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
671,Gold_Coin,Gold Coin,3,10000,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ /*goldpoint++; (For Roulette game)*/ },{},{}
|
||||
671,Gold_Coin,Gold Coin,2,10000,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ RouletteGold++; },{},{}
|
||||
672,Copper_Coin_Moneybag,Bag of Bronze Coins,3,1000,,400,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
673,Copper_Coin,Bronze Coin,3,100,,40,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
673,Copper_Coin,Bronze Coin,2,100,,40,,,,,0xFFFFFFFF,63,2,,,,,,{ RouletteBronze++; },{},{}
|
||||
674,Mithril_Coin,Mithril Coin,3,5000,,40,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
675,Silver_Coin,Silver Coin,3,5000,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ /*silverpoint++; (For Roulette game)*/ },{},{}
|
||||
675,Silver_Coin,Silver Coin,2,5000,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ RouletteSilver++; },{},{}
|
||||
676,Silver_Coin_Moneybag,Bag of Silver Coins,3,50000,,400,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
677,White_Gold_Coin,Platinum Coin,3,2000,,40,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
678,Poison_Bottle,Poison Bottle,2,5000,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ if(Class == Job_Assassin_Cross || Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T) { sc_start SC_DPOISON,60000,0; sc_start SC_ASPDPOTION3,60000,9; } else percentheal -100,-100; },{},{}
|
||||
@ -483,7 +483,7 @@
|
||||
1129,Flamberge,Flamberge,5,60000,,1500,150,,1,0,0x00004080,63,2,2,3,27,1,2,{},{},{}
|
||||
1130,Nagan,Nagan,5,20,,500,120,,1,0,0x000654E2,63,2,2,4,40,1,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
|
||||
1131,Ice_Falchon,Ice Falchion,5,20,,600,100,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100; },{},{}
|
||||
1132,Edge,Edge,5,20,,700,115,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaClass,Class_Normal,10; },{},{}
|
||||
1132,Edge,Edge,5,20,,700,115,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus2 bAddEff,Eff_Curse,30; bonus2 bComaClass,Class_Normal,10; },{},{}
|
||||
1133,Fire_Brand,Fireblend,5,20,,500,100,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100; },{},{}
|
||||
1134,Scissores_Sword,Caesar's Sword,5,20,,700,140,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus2 bAddRace,RC_Plant,25; bonus bIgnoreDefRace,RC_Plant; },{},{}
|
||||
1135,Cutlas,Cutlus,5,20,,900,150,,1,0,0x000654E2,63,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||
@ -687,11 +687,11 @@
|
||||
1362,Two_Handed_Axe__,Two-Handed Axe,5,55000,,2500,185,,1,0,0x000444A2,63,2,34,3,30,1,7,{},{},{}
|
||||
1363,Brood_Axe,Bloody Axe,5,20,,4000,170,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus bStr,10; bonus bSpeedRate,25; },{},{}
|
||||
1364,Great_Axe,Great Axe,5,20,,1800,187,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,1500; },{},{}
|
||||
1365,Sabbath,Sabbath,5,20,,2300,120,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Dark; bonus2 bWeaponComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50; },{},{}
|
||||
1365,Sabbath,Sabbath,5,20,,2300,120,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Dark; bonus2 bComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50; },{},{}
|
||||
1366,Right_Epsilon,Light Epsilon,5,20,,2300,180,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; },{},{}
|
||||
1367,Slaughter,Slaughter,5,20,,2500,120,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bWeaponComaRace,RC_Brute,40; },{},{}
|
||||
1367,Slaughter,Slaughter,5,20,,2500,120,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bComaRace,RC_Brute,40; },{},{}
|
||||
1368,Tomahawk,Tomahawk,5,20,,2500,165,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Wind; skill "ITM_TOMAHAWK",1; },{},{}
|
||||
1369,Guillotine,Guillotine,5,20,,3000,215,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bWeaponComaRace,RC_Player,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRaceAttack,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20; },{},{}
|
||||
1369,Guillotine,Guillotine,5,20,,3000,215,,1,0,0x000444A2,63,2,34,4,44,1,7,{ bonus2 bComaRace,RC_DemiHuman,30; bonus2 bComaRace,RC_Player,30; bonus2 bSPDrainValueRace,RC_DemiHuman,2; bonus2 bSPDrainValueRace,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20; },{},{}
|
||||
1370,Doom_Slayer,Doom Slayer,5,20,,6000,10,,1,0,0x000444A2,63,2,34,4,80,1,7,{ bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; } },{},{}
|
||||
1371,Doom_Slayer_,Doom Slayer,5,20,,6000,10,,1,1,0x000444A2,63,2,34,4,80,1,7,{ bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; } },{},{}
|
||||
1372,Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,63,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; bonus bStr,10; bonus bSpeedRate,25; /*Gold PC Room: bonus bBaseAtk,10; bonus bMatk,10; */},{},{}
|
||||
@ -836,7 +836,7 @@
|
||||
1523,Spike,Spike,5,20,,700,85,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{}
|
||||
1524,Golden_Mace,Golden Mace,5,20,,800,110,,1,1,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{}
|
||||
1525,Long_Mace,Long Mace,5,20,,800,135,,3,0,0x00008110,63,2,2,4,40,1,8,{ bonus bLongAtkDef,10; },{},{}
|
||||
1526,Slash,Slash,5,20,,1000,145,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,15; bonus2 bWeaponComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5; },{},{}
|
||||
1526,Slash,Slash,5,20,,1000,145,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5; },{},{}
|
||||
1527,Quadrille,Quadrille,5,20,,900,165,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10; },{},{}
|
||||
1528,Grand_Cross,Grand Cross,5,20,,1500,140,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3; },{},{}
|
||||
1529,Iron_Driver,Iron Driver,5,20,,3000,155,,2,0,0x00008100,63,2,2,3,78,1,8,{},{},{}
|
||||
@ -876,7 +876,7 @@
|
||||
1562,Bible_Of_Battlefield,Battlefield Textbook,5,20,,700,110,,1,1,0x00410100,63,2,2,4,80,0,15,{ bonus bInt,3; bonus3 bAutoSpell,"AL_BLESSING",3+(getskilllv("AL_BLESSING")>3)*(getskilllv("AL_BLESSING")-3),20; },{},{}
|
||||
1563,Diary_Of_Great_Sage_C,Sage's Diary,5,1,,0,135,,1,0,0x00410100,63,2,2,3,1,0,15,{ bonus bMatk,140; bonus bAspdRate,5; /*Gold PC Room: bonus bBaseAtk,10; bonus bMatk,10;*/ },{},{}
|
||||
1564,Encyclopedia,Encyclopedia,5,20,,2000,110:100,,1,2,0x00410100,63,2,2,3,70,1,15,{ bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); },{},{}
|
||||
1565,Death_Note,Ledger of Death,5,20,,1000,137:100,,1,2,0x00410100,63,2,2,4,85,1,15,{ bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1565,Death_Note,Ledger of Death,5,20,,1000,137:100,,1,2,0x00410100,63,2,2,4,85,1,15,{ bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1566,Diary_Of_Great_Basil,Diary Of Great Basil,5,20,,0,120:125,,1,0,0x00410100,63,2,2,1,0,0,15,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||
1567,Hardback_C,Refined Hardcover Book,5,1,,0,168:100,,1,0,0x00410100,63,2,2,4,0,0,15,{ bonus bStr,5; bonus bDex,2; bonus bMatkRate,20; },{},{}
|
||||
1568,Book_Of_Billows_,Book of Billows,5,35000,,750,90,,1,3,0x00410100,63,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Water; },{},{}
|
||||
@ -890,7 +890,7 @@
|
||||
1576,Krieger_Book1,Glorious Tablet,5,20,,0,90:115,,1,0,0x00410100,63,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(((.@r>14)?14:.@r)-4,2); bonus2 bAddRace,RC_Player,pow(((.@r>14)?14:.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{}
|
||||
1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90:115,,1,0,0x00410100,63,2,2,4,80,1,15,{ bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; .@r = getrefine(); if(.@r>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(.@r>8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; } },{},{}
|
||||
1578,Book_Of_Prayer,Book Of Prayer,5,20,,0,140,,1,0,0x00410100,63,2,2,3,0,0,15,{ bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10; },{},{}
|
||||
1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,63,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,63,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||
1580,Encyclopedia_C,Giant Encyclopedia,5,0,,0,145:100,,1,0,0x00410100,63,2,2,3,0,0,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40; },{},{}
|
||||
1581,F_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,63,2,2,3,1,0,15,{},{},{}
|
||||
1582,E_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,63,2,2,3,1,0,15,{},{},{}
|
||||
@ -1640,7 +1640,7 @@
|
||||
2551,Rider_Insignia_M,Crest of the Rider,4,20,,500,,4,,1,0xFFFFFFFE,18,2,4,,55,1,0,{ bonus bAgi,2; },{},{}
|
||||
2552,Mithril_Magic_Cape_M,Mithril Magic Manteau,4,20,,400,,3,,1,0x00098B1C,18,2,4,,70,1,0,{ bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",6,200,BF_MAGIC,0; },{},{}
|
||||
2553,Dragon_Manteau,Dragon Manteau,4,20,,1000,,14,,1,0xFFFFFFFE,18,2,4,,0,1,0,{ bonus bAgi,1; bonus bMdef,5; },{},{}
|
||||
2554,Piece_Of_Angent_Skin,Nydhorgg's Shadow Garb,4,20,,400,,25,,1,0xFFFFFFFE,18,2,4,,90,1,0,{ bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPGainAttackRate,100,1; bonus bMdef,3; },{},{}
|
||||
2554,Piece_Of_Angent_Skin,Nydhorgg's Shadow Garb,4,20,,400,,25,,1,0xFFFFFFFE,18,2,4,,90,1,0,{ bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPDrainRate,10,1; bonus bMdef,3; },{},{}
|
||||
2555,Freyja_SScarf7,Freyja Soul Scarf,4,20,,400,,4,,0,0xFFFFFFFF,63,2,4,,20,0,0,{ bonus bFlee,15; bonus2 bSubEle,Ele_Neutral,15; },{},{}
|
||||
2556,Freyja_SScarf30,Freyja Soul Scarf,4,20,,400,,4,,0,0xFFFFFFFF,63,2,4,,20,0,0,{ bonus bFlee,15; bonus2 bSubEle,Ele_Neutral,15; },{},{}
|
||||
2557,Freyja_SScarf60,Freyja Soul Scarf,4,20,,400,,4,,0,0xFFFFFFFF,63,2,4,,20,0,0,{ bonus bFlee,15; bonus2 bSubEle,Ele_Neutral,15; },{},{}
|
||||
@ -2225,7 +2225,7 @@
|
||||
4169,Dark_Illusion_Card,Dark Illusion Card,6,20,,10,,,,,,,,769,,,,,{ bonus bMaxHPrate,-10; bonus bMaxSPrate,-10; bonus bVariableCastrate,-10; },{},{}
|
||||
4170,Dark_Frame_Card,Dark Frame Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Stone,600; },{},{}
|
||||
4171,Dark_Priest_Card,Dark Priest Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPVanishRate,50,10; if(BaseJob==Job_Sage) bonus bSPDrainValue,1; },{},{}
|
||||
4172,The_Paper_Card,The Paper Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,20; bonus bSPGainAttack,-1; },{},{}
|
||||
4172,The_Paper_Card,The Paper Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,20; bonus bSPDrainValue,-1; },{},{}
|
||||
4173,Demon_Pungus_Card,Demon Pungus Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Sleep,600; },{},{}
|
||||
4174,Deviling_Card,Deviling Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,50; bonus2 bSubEle,Ele_Water,-50; bonus2 bSubEle,Ele_Earth,-50; bonus2 bSubEle,Ele_Fire,-50; bonus2 bSubEle,Ele_Wind,-50; bonus2 bSubEle,Ele_Poison,-50; bonus2 bSubEle,Ele_Holy,-50; bonus2 bSubEle,Ele_Dark,-50; bonus2 bSubEle,Ele_Ghost,-50; bonus2 bSubEle,Ele_Undead,-50; },{},{}
|
||||
4175,Poison_Toad_Card,Poisonous Toad Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"TF_POISON",1,20; bonus2 bAddSkillBlow,52,5; },{},{}
|
||||
@ -2329,12 +2329,12 @@
|
||||
4273,Shellfish_Card,Shell Fish Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1073,30; },{},{}
|
||||
4274,Zombie_Master_Card,Zombie Master Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Undead,5; },{},{ heal 0,-5; }
|
||||
4275,Zombie_Prisoner_Card,Zombie Prisoner Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Undead,-20; bonus2 bExpAddRace,RC_Undead,10; },{},{}
|
||||
4276,Lord_Of_Death_Card,Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bWeaponComaClass,Class_Normal,1; },{},{}
|
||||
4276,Lord_Of_Death_Card,Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bComaClass,Class_Normal,1; },{},{}
|
||||
4277,Zherlthsh_Card,Zealotus Card,6,20,,10,,,,,,,,32,,,,,{ bonus bLuk,2; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{}
|
||||
4278,Gibbet_Card,Gibbet Card,6,20,,10,,,,,,,,769,,,,,{ if(getrefine()<6) bonus bMdef,5; },{},{}
|
||||
4279,Deleter_Card,Earth Deleter Card,6,20,,10,,,,,,,,16,,,,,{ bonus bSPrecovRate,-100; bonus bSPGainValue,10; },{},{ heal 0,-100; }
|
||||
4280,Geographer_Card,Geographer Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30; },{},{}
|
||||
4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPGainAttack,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0; },{},{}
|
||||
4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0; },{},{}
|
||||
4282,Tengu_Card,Tengu Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItemGroup,IG_Recovery,600; },{},{}
|
||||
4283,Greatest_General_Card,Greatest General Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte); },{},{}
|
||||
4284,Chepet_Card,Chepet Card,6,20,,10,,,,,,,,2,,,,,{ bonus4 bAutoSpell,"AL_HEAL",5,50,1; },{},{}
|
||||
@ -2592,7 +2592,7 @@
|
||||
4537,Sealed_Phreeoni_Card,Sealed Phreeoni Card,6,20,,10,,,,,,,,2,,,,,{ bonus bHit,((getrefine()>14)?75:50); },{},{}
|
||||
4538,Sealed_Bacsojin_Card,Sealed White Lady Card,6,20,,10,,,,,,,,769,,,,,{ if (getrefine()>14) { bonus bHealPower,25; bonus bUseSPrate,20; } else { bonus bHealPower,15; bonus bUseSPrate,30; } },{},{}
|
||||
4539,Sealed_F_Bishop_Card,Sealed Fallen Bishop Hibram Card,6,20,,10,,,,,,,,64,,,,,{ .@r = getrefine(); bonus bMatkRate,((.@r>14)?8:5); bonus bMaxSPrate,-50; set .@rate,((.@r>14)?33:25); bonus2 bMagicAddRace,RC_Angel,.@rate; bonus2 bMagicAddRace,RC_DemiHuman,.@rate; bonus2 bMagicAddRace,RC_Player,.@rate; },{},{}
|
||||
4540,SLD_Lord_Of_Death_Card,Sealed Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ set .@rate, ((getrefine()>14)?350:250); bonus3 bAddEff,Eff_Stun,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Curse,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Silence,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Poison,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,.@rate,ATF_SHORT; bonus2 bWeaponComaClass,Class_Normal,1; },{},{}
|
||||
4540,SLD_Lord_Of_Death_Card,Sealed Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ set .@rate, ((getrefine()>14)?350:250); bonus3 bAddEff,Eff_Stun,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Curse,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Silence,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Poison,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,.@rate,ATF_SHORT; bonus2 bComaClass,Class_Normal,1; },{},{}
|
||||
4541,SLD_B_Katrinn_Card,Sealed High Wizard Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bIgnoreMdefClassRate,Class_Normal,100; .@r = getrefine(); if (.@r>14) { bonus bVariableCastrate,120; bonus bSPrecovRate,-120; } else { bonus bVariableCastrate,150; bonus bSPrecovRate,-150; } },{},{ heal 0,((.@r>14)?-2000:-3000); }
|
||||
4542,SLD_Detale_Card,Sealed Detale Card,6,20,,10,,,,,,,,16,,,,,{},{},{}
|
||||
4543,SLD_Garm_Card,Sealed Hatii Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Freeze,((getrefine()>14)?4000:2500); },{},{}
|
||||
@ -3411,7 +3411,7 @@
|
||||
5494,Spinx_Helm_I,Sphinx Hat,4,0,,0,,5,,0,0x00004082,63,2,257,,0,0,137,{ bonus bStr,5; },{},{}
|
||||
5495,Power_Of_Thor,Power Of Thor,4,20,,100,,6,,1,0xFFFFFFFF,63,2,256,,0,1,493,{ bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5; },{},{}
|
||||
5496,Dice_Hat,Dice Hat,4,20,,300,,3,,0,0xFFFFFFFF,63,2,256,,50,0,494,{ bonus bLuk,4; },{},{}
|
||||
5497,King_Tiger_Doll_Hat,King Tiger Doll Hat,4,20,,400,,6,,1,0xFFFFFFFE,63,2,256,,1,1,495,{ bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; bonus2 bMagicAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }"; },{},{}
|
||||
5497,King_Tiger_Doll_Hat,King Tiger Doll Hat,4,20,,400,,6,,1,0xFFFFFFFE,63,2,256,,1,1,495,{ bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; bonus2 bMagicAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Eddga Power !\"; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Eddga Power !\"; }"; },{},{}
|
||||
5498,Wondering_Wolf_Helm,Wandering Wolf Helm,4,20,,600,,5,,1,0xFFFFFFFE,63,2,768,,1,0,490,{ bonus bAgi,5; bonus bFlee,10; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Brute,10; if(getrefine()>=7){ bonus2 bAddEff,Eff_Bleeding,10; } if(getrefine()>=9){ bonus3 bAutoSpellWhenHit,"MC_LOUD",1,1; } },{},{}
|
||||
5499,Pizza_Hat,Pizza Hat,4,20,,600,,0,,0,0xFFFFFFFF,63,2,256,,0,0,487,{ skill "SM_PROVOKE",1; },{},{}
|
||||
5500,Icecream_Hat,Icecream Hat,4,0,,300,,6,,0,0xFFFFFFFF,63,2,256,,30,1,488,{ bonus bMdef,3; skill "MG_FROSTDIVER",3; },{},{}
|
||||
@ -5276,6 +5276,7 @@
|
||||
//
|
||||
7674,Mysterious_Ingredient,Mysterious Ingredient,3,20,,0,,,,,,,,,,,,,{},{},{}
|
||||
7675,Mysterious_Doll,Mysterious Doll,3,0,,0,,,,,,,,,,,,,{},{},{}
|
||||
7676,Transmission_Coupon,Transmission Coupon,3,0,,0,,,,,,,,,,,,,{},{},{}
|
||||
7679,Oneclick_Weapon_7UP,One Click Weapon 7UP,3,0,,0,,,,,,,,,,,,,{},{},{}
|
||||
7680,Oneclick_Weapon_9UP,One Click Weapon 9UP,3,0,,0,,,,,,,,,,,,,{},{},{}
|
||||
7681,Oneclick_Armor_7UP,One Click Armor 7UP,3,0,,0,,,,,,,,,,,,,{},{},{}
|
||||
@ -6397,7 +6398,7 @@
|
||||
12536,NY_Rice_Cake_Soup,NY Rice Cake Soup,2,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12537,Solo_Gift_Basket,Solo Gift Basket,2,1000,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Solo_Gift_Basket);*/ getitem 597,5; getitem 596,3; getitem 561,3; getitem 573,4; getitem 559,10; getitem 560,10; },{},{}
|
||||
12538,Couple_Event_Basket,Couple Event Basket,2,2000,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Couple_Event_Basket);*/ getitem 14546,10; getitem 14547,10; getitem 14548,10; getitem 14549,10; getitem 14550,10; },{},{}
|
||||
12539,Splendid_Box,Splendid Box,2,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12539,Splendid_Box,Splendid Box,2,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Splendid_Box); },{},{}
|
||||
12540,GM_Warp_Box,GM Warp Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_GM_Warp_Box); },{},{}
|
||||
12541,Fortune_Cookie1,Fortune Cookie1,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Fortune_Cookie1,1); },{},{}
|
||||
12542,Fortune_Cookie2,Fortune Cookie2,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Fortune_Cookie2); },{},{}
|
||||
@ -6514,13 +6515,13 @@
|
||||
12655,Brain_Powder,Brain Powder,2,2000,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12656,Magical_Powder,Magical Powder,2,3000,,200,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12657,Madness_Powder,Madness Powder,2,4000,,300,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12658,Trans_Scroll_Devi,Transformation Scroll(Deviruchi),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1109,1200000,SC_MTF_ASPD,10,5; },{},{}
|
||||
12659,Trans_Scroll_Ray_Arch,Transformation Scroll(Raydric),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1276,1200000,SC_MTF_RANGEATK,25; },{},{}
|
||||
12660,Trans_Scroll_Mavka,Transformation Scroll(Mavka),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1884,1200000,SC_MTF_RANGEATK,25; },{},{}
|
||||
12661,Trans_Scroll_Marduk,Transformation Scroll(Marduk),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1140,1200000,SC_MTF_MATK,25; },{},{}
|
||||
12662,Trans_Scroll_Banshee,Transformation Scroll(Banshee),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1867,1200000,SC_MTF_MATK,25; },{},{}
|
||||
12663,Trans_Scroll_Poring,Transformation Scroll(Poring),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1002,1200000,SC_MTF_CRIDAMAGE,25; },{},{}
|
||||
12664,Trans_Scroll_Golem,Transformation Scroll(Golem),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1040,1200000,SC_MTF_MLEATKED,5,20,2; },{},{}
|
||||
12658,Trans_Scroll_Devi,Transformation Scroll(Deviruchi),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1109,1200000,SC_MTF_ASPD,10,5; showscript "Traaaansformation-!! Deviruchi form!!"; },{},{}
|
||||
12659,Trans_Scroll_Ray_Arch,Transformation Scroll(Raydric),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1276,1200000,SC_MTF_RANGEATK,25; showscript "Traaaansformation-!! Raydric form!!"; },{},{}
|
||||
12660,Trans_Scroll_Mavka,Transformation Scroll(Mavka),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1884,1200000,SC_MTF_RANGEATK,25; showscript "Traaaansformation-!! Mavka form!!"; },{},{}
|
||||
12661,Trans_Scroll_Marduk,Transformation Scroll(Marduk),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1140,1200000,SC_MTF_MATK,25; showscript "Traaaansformation-!! Marduk form!!"; },{},{}
|
||||
12662,Trans_Scroll_Banshee,Transformation Scroll(Banshee),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1867,1200000,SC_MTF_MATK,25; showscript "Traaaansformation-!! Banshee form!!"; },{},{}
|
||||
12663,Trans_Scroll_Poring,Transformation Scroll(Poring),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1002,1200000,SC_MTF_CRIDAMAGE,25; showscript "Traaaansformation-!! Poring form!!"; },{},{}
|
||||
12664,Trans_Scroll_Golem,Transformation Scroll(Golem),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1040,1200000,SC_MTF_MLEATKED,5,20,2; showscript "Traaaansformation-!! Golem form!!"; },{},{}
|
||||
12665,Grovel_Buff,Grovel Buff,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12666,Thai_Perfume_MATK,Thai Perfume MATK,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bMatk,24; }",600,0,0,SI_SKF_MATK; },{},{}
|
||||
12667,Thai_Perfume_ATK,Thai Perfume ATK,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bBaseAtk,24; }",600,0,0,SI_SKF_ATK; },{},{}
|
||||
@ -6653,12 +6654,12 @@
|
||||
12788,No100_Firecracker,No100 Firecracker,2,2,,20,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12789,Juicy_Fruit,Juicy Fruit,2,2,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12790,Change_Name_Card,Character Name Change Coupon,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ set CharRename, CharRename + 1; },{},{}
|
||||
12791,Combat_Pill,Combat Pill,2,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,SI_GM_BATTLE; },{},{}
|
||||
12791,Combat_Pill,Combat Pill,2,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,SI_GM_BATTLE; /* showscript */ },{},{}
|
||||
12792,P_Combat_Pill,P Combat Pill,2,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; }",60,0,0,SI_GM_BATTLE2; },{},{}
|
||||
12793,Combat_Pill_Box10,Combat Pill Box10,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12791,10; },{},{}
|
||||
12794,P_Combat_Pill_Box10,P Combat Pill Box10,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12792,10; },{},{}
|
||||
12795,2011_RWC_Scroll_Kr,2011 RWC Scroll Kr,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12796,Red_Booster,Red Booster,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "AC_CONCENTRATION",(getskilllv(45)<3?3:getskilllv(45)); },{},{}
|
||||
12796,Red_Booster,Red Booster,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "AC_CONCENTRATION",(getskilllv(45)<3?3:getskilllv(45)); specialeffect2 EF_POTION_BERSERK; showscript "Oh My GOODNESS!!! I FEEL AWESOMELY STRONG!!! WOWOW"; },{},{}
|
||||
12797,Wish_Maiden_Scroll,Wish Maiden Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ mercenary_create 2344,1800000; },{},{}
|
||||
12798,Zealotus_Scroll,Zealotus Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ mercenary_create 2345,1800000; },{},{}
|
||||
12799,PCBang_Coupon_Box5,PCBang Coupon Box5,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
@ -7098,7 +7099,7 @@
|
||||
13400,Cutlas_,Cutlus,5,20,,900,150,,1,1,0x000654E2,63,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||
13401,Excalibur_C,Excalibur,5,1,,0,199,,1,0,0x000654E2,63,2,2,4,1,0,2,{ bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy; },{},{}
|
||||
13402,Cutlas_C,Cutlus,5,2,,0,185,,1,0,0x000654E2,63,2,2,4,0,0,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||
13403,Solar_Sword_C,Solar Sword,5,2,,0,120,,1,0,0x000654E2,63,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus2 bSPLossRate,15,10; bonus bHPGainAttackRate,1; },{},{}
|
||||
13403,Solar_Sword_C,Solar Sword,5,2,,0,120,,1,0,0x000654E2,63,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus2 bSPLossRate,15,10; bonus2 bHPDrainRate,1000,1; },{},{}
|
||||
13404,Platinum_Shotel,Platinum Shotel,5,20,,1500,130,,1,1,0x000654E2,63,2,2,4,55,1,2,{ bonus bCritical,50; },{},{}
|
||||
13405,Curved_Sword,Curved Sword,5,20,,800,125,,1,2,0x000654E2,63,2,2,4,55,1,2,{ bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300; },{},{}
|
||||
13406,Edger,Edger,5,20,,0,120,,1,0,0x000654E2,63,2,2,1,0,0,2,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||
@ -8302,7 +8303,7 @@
|
||||
15123,Whikebain_Suit,Whikebain Suit,4,0,,900,,56,,1,0x00001000,56,2,16,,105,1,,{ .@r = getrefine(); if (.@r > 7) { bonus bCritAtkRate,6; } else if (.@r > 5) { bonus bCritAtkRate,4; } bonus3 bAutoSpell,"DC_WINKCHARM",1,10; /* Confirm: Success rate */ },{},{}
|
||||
15138,Aegir_Armor,Aegir Armor,4,10,,1600,,25,,0,0xFFFFFFFF,63,2,16,,40,1,,{ bonus bMaxHP,500; bonus bMaxSP,50; },{},{}
|
||||
15141,Ancient_Armor_Of_The_Goddess,Ancient Armor Of The Goddess,4,10,,2000,,55,,0,0xFFFFFFFF,63,2,16,,100,1,,{},{},{}
|
||||
15145,Evil_Dragon_Armor,Evil Dragon Armor,4,0,,4000,,60,,1,0xFFFFFFFF,63,2,16,,,1,,{ .@r = getrefine(); if (.@r >= 10 ) { bonus2 bHPGainAttackRate,100,3; bonus2 bSPGainAttackRate,100,5; } else if (.@r >= 9 ) { bonus2 bHPGainAttackRate,100,4; bonus2 bSPGainAttackRate,100,3; } else if (.@r >= 8 ) { bonus2 bHPGainAttackRate,100,6; bonus2 bSPGainAttackRate,100,2; } /* Confirm: Success rate and it says no effect if with Rideword, Vanargandr Helm, or Piece Of Angent Skin */ },{},{}
|
||||
15145,Evil_Dragon_Armor,Evil Dragon Armor,4,0,,4000,,60,,1,0xFFFFFFFF,63,2,16,,,1,,{ .@r = getrefine(); if (.@r >= 10 ) { bonus2 bHPDrainRate,100,3; bonus2 bSPDrainRate,100,5; } else if (.@r >= 9 ) { bonus2 bHPDrainRate,100,4; bonus2 bSPDrainRate,100,3; } else if (.@r >= 8 ) { bonus2 bHPDrainRate,100,6; bonus2 bSPDrainRate,100,2; } /* Confirm: Success rate and it says no effect if with Rideword, Vanargandr Helm, or Piece Of Angent Skin */ },{},{}
|
||||
// More Maces
|
||||
16000,Erde,Erde,5,20,,500,130,,1,2,0x0004C5B2,18,2,2,3,50,1,8,{ bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus bMaxSP,50; bonus bHealPower,10; },{},{}
|
||||
16001,Red_Square_Bag,Red Square Bag,5,20,,500,130,,1,2,0x0004C5B2,18,2,2,3,50,1,8,{ bonus bMaxHP,200; bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus2 bAddMonsterDropItem,501,50; bonus2 bAddMonsterDropItem,502,20; bonus2 bAddMonsterDropItem,503,20; bonus2 bAddMonsterDropItem,504,20; bonus2 bAddMonsterDropItem,505,10; if(readparam(bStr)>=95) bonus2 bAddEff,Eff_Stun,500; },{},{}
|
||||
@ -8998,6 +8999,7 @@
|
||||
17572,Erzulie_Lucky_Egg,Erzulie Lucky Egg,18,0,,10,,,,0,,,,,,,,,{/*TODO*/},{},{}
|
||||
17584,Venus_Lucky_Egg,Venus Lucky Egg,18,0,,10,,,,0,,,,,,,,,{/*TODO*/},{},{}
|
||||
17588,Amora_Lucky_Egg,Amora Lucky Egg,18,0,,10,,,,0,,,,,,,,,{/*TODO*/},{},{}
|
||||
17598,Sograt_Lucky_Scroll,Sograt Lucky Scroll,18,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem callfunc("F_Rand",20099,19024,2899,19910),1; /* and others. */ },{},{}
|
||||
// Mechanic/Genetic Cannonballs
|
||||
18000,Cannon_Ball,Cannon Ball,10,100,,10,100,,,,0x00040400,56,2,32768,,99,,8,{},{},{}
|
||||
18001,Holy_Cannon_Ball,Holy Cannon Ball,10,200,,10,120,,,,0x00040400,56,2,32768,,99,,8,{ bonus bAtkEle,Ele_Holy; },{},{}
|
||||
@ -9126,15 +9128,15 @@
|
||||
18590,Gemma_Hairband,Gemma Hairband,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,10,1,564,{ bonus bMdef,3; },{},{}
|
||||
18591,Mini_Glasses_,Mini Glasses,4,20,,100,,2,,1,0xFFFFFFFE,63,2,512,,0,0,47,{},{},{}
|
||||
18592,Nestea_Hat,Nestea Hat,4,20,,200,,5,,1,0xFFFFFFFF,63,2,256,,0,1,756,{ bonus bMdef,5; },{},{}
|
||||
18593,Fancy_Mini_Crown,Fancy Mini Crown,4,20,,100,,2,,1,0xFFFFFFFF,63,2,256,,30,1,707,{ bonus bInt,1; bonus bMdef,5; },{},{}
|
||||
18593,Fancy_Mini_Crown,Fancy Mini Crown,4,20,,100,,2,,1,0xFFFFFFFF,63,2,256,,30,1,707,{ bonus bInt,1; bonus bMdef,5; bonus bVariableCast,-3000; bonus bMatkRate,3; bonus bHealPower,4; bonus bSkillUseSP,-3; .@r = getrefine(); if (.@r > 6) bonus bMatkRate,3; else if (.@r > 4) bonus bMatkRate,1; },{},{}
|
||||
18594,Magni_Cap_,Magni Cap,4,30000,,1000,,9,,1,0xFFFFFFFE,63,2,256,,0,1,250,{ bonus bStr,2; },{},{}
|
||||
18595,Horn_Of_Ancient,Horn of Ancient,4,40,,200,,8,,1,0xFFFFFFFF,63,2,256,,50,1,757,{ autobonus "{ bonus bBaseAtk,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
|
||||
18595,Horn_Of_Ancient,Horn of Ancient,4,40,,200,,8,,1,0xFFFFFFFF,63,2,256,,50,1,757,{ bonus2 bSubClass,Class_Boss,10; bonus2 bAddClass,Class_Boss,10; .@r = getrefine(); if (.@r > 6) { autobonus "{ bonus bBaseAtk,100; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; } if (.@r > 8) { bonus2 bSubClass,Class_Boss,10; bonus2 bAddClass,Class_Boss,10; } },{},{}
|
||||
18596,Sprout_Hat,Sprout Hat,4,20,,200,,4,,0,0xFFFFFFFF,63,2,256,,70,1,758,{ skill "WZ_HEAVENDRIVE",3; },{},{}
|
||||
18597,Mercury_Riser,Mercury Riser,4,40,,200,,10,,1,0xFFFFFFFF,63,2,256,,0,,759,{ bonus bAspdRate,3; bonus bCritical,3; .@r = getrefine(); if(.@r >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(.@r >= 9) { bonus bAspdRate,2; bonus bCritical,2; }},{},{}
|
||||
18597,Mercury_Riser,Mercury Riser,4,40,,200,,10,,1,0xFFFFFFFF,63,2,256,,0,,759,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bAddRace,RC_DemiHuman,10; bonus bAspdRate,3; bonus bDelayrate,-3; .@r = getrefine(); if(.@r >= 7) { bonus bAspdRate,2; bonus bDelayrate,-2; } if(.@r >= 9) { bonus bAspdRate,2; bonus bDelayrate,-2; }},{},{}
|
||||
18598,Mini_Tree_J,Mini Tree J,4,20,,50,,0,,1,0xFFFFFFFF,63,2,256,,0,0,727,{ bonus bMdef,20; },{},{}
|
||||
18599,Black_Devil_Mask,Black Devil Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,0,0,760,{ bonus bAllStats,2; },{},{}
|
||||
18600,Cat_Ear_Beret,Cat Ear Beret,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,761,{ bonus bAtkRate,5; .@r = getrefine(); if(.@r > 5 && .@r <= 12) { bonus2 bAddRace,RC_DemiHuman,(.@r - 5); bonus2 bSubRace,RC_DemiHuman,(.@r - 5); bonus2 bAddRace,RC_Player,(.@r - 5); bonus2 bSubRace,RC_Player,(.@r - 5); } if(.@r > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; } },{},{}
|
||||
18601,Red_Bread_Hat,Red Bread Hat,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,0,1,762,{ bonus bMdef,5; },{},{}
|
||||
18600,Cat_Ear_Beret,Cat Ear Beret,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,761,{ bonus bAtkRate,5; .@r = getrefine(); if(.@r < 5) .@r = 5; bonus2 bSubRace,RC_DemiHuman,(.@r - 5); bonus2 bAddRace,RC_DemiHuman,(.@r - 5); },{},{}
|
||||
18601,Red_Bread_Hat,Red Bread Hat,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,0,1,762,{ bonus bMdef,5; .@r = getrefine(); if (.@r < 5) .@r = 5; bonus2 bSubRace,RC_DemiHuman,(.@r - 5); bonus2 bMagicAddRace,RC_DemiHuman,(.@r - 5); },{},{}
|
||||
18602,Watermelon_Bite,Watermelon Bite,4,20,,100,,4,,0,0xFFFFFFFF,63,2,1,,30,0,763,{ bonus bMdef,4; bonus2 bAddEle,Ele_Fire,4; },{},{}
|
||||
18603,Black_Devil_Mask_,Black Devil Mask,4,20,,100,,0,,1,0xFFFFFFFF,63,2,512,,0,0,760,{ bonus bAllStats,1; },{},{}
|
||||
18604,Falcon_Mask,Falcon Mask,4,10,,30,,0,,1,0xFFFFFFFF,63,2,513,,50,0,782,{},{},{}
|
||||
@ -9163,14 +9165,14 @@
|
||||
18627,Dried_Leaf,Dried Leaf,4,20,,50,,0,,0,0xFFFFFFFF,63,2,1,,10,0,711,{ bonus bUnbreakableHelm,0; },{},{}
|
||||
18628,Tare_Brownie,Tare Brownie,4,20,,500,,5,,1,0xFFFFFFFF,63,2,256,,50,0,781,{},{},{}
|
||||
18629,B_Desert_Wolf_Hat,B Desert Wolf Hat,4,10,,300,,0,,1,0xFFFFFFFF,63,2,256,,1,1,783,{},{},{}
|
||||
18630,Dep_Alice_Hat,Drooping Alicel,4,20,,500,,6,,0,0xFFFFFFFE,63,2,256,,70,1,784,{},{},{}
|
||||
18631,Ribbon_Chef_Hat,Ribbon Chef Hat,4,20,,300,,5,,0,0xFFFFFFFF,63,2,256,,70,1,785,{ bonus bDex,3; bonus bLuk,1; },{},{}
|
||||
18630,Dep_Alice_Hat,Drooping Alicel,4,20,,500,,6,,0,0xFFFFFFFE,63,2,256,,70,1,784,{ bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; if (getrefine() > 10) { autobonus "{ bonus bAspdRate,100; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{}
|
||||
18631,Ribbon_Chef_Hat,Ribbon Chef Hat,4,20,,300,,5,,0,0xFFFFFFFF,63,2,256,,70,1,785,{ bonus bDex,3; bonus bLuk,1; if (getrefine() > 6) { bonus2 bAddMonsterDropItem,12125,500; bonus2 bAddMonsterDropItem,12126,500; bonus2 bAddMonsterDropItem,12127,400; bonus2 bAddMonsterDropItem,12128,300; bonus2 bAddMonsterDropItem,12129,200; } },{},{}
|
||||
18632,Yellow_Poring_Hairpin,Yellow Poring Hairpin,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,1,1,786,{},{},{}
|
||||
18633,Pink_Poring_Hairpin,Pink Poring Hairpin,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,1,1,787,{},{},{}
|
||||
18634,Green_Poring_Hairpin,Green Poring Hairpin,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,1,1,788,{},{},{}
|
||||
18635,Blue_Poring_Hairpin,Blue Poring Hairpin,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,1,1,789,{},{},{}
|
||||
18636,Bridal_Ribbon,Bridal Ribbon,4,20,,200,,6,,0,0xFFFFFFFF,63,2,256,,30,1,790,{ bonus bDex,1; },{},{}
|
||||
18637,Ancient_Admiral_Helm,Ancient Admiral Helm,4,20,,700,,4,,1,0xFFFFFFFF,63,2,768,,0,1,660,{ bonus bStr,2; bonus bVit,1; },{},{}
|
||||
18636,Bridal_Ribbon,Bridal Ribbon,4,20,,200,,6,,0,0xFFFFFFFF,63,2,256,,30,1,790,{ bonus bDex,1; bonus3 bAutoSpellWhenHit,"DC_WINKCHARM",1,10; },{},{}
|
||||
18637,Ancient_Admiral_Helm,Ancient Admiral Helm,4,20,,700,,4,,1,0xFFFFFFFF,63,2,768,,0,1,660,{ bonus bStr,2; bonus bVit,1; if (getrefine() > 7) bonus bSpeedRate,25; },{},{}
|
||||
18638,Citron_Hat,Citron Hat,4,20,,400,,3,,0,0xFFFFFFFE,63,2,256,,1,1,791,{ bonus bLuk,3; bonus2 bSubRace,RC_Plant,10; },{},{}
|
||||
18639,Naval_Officer_Hat,Naval Officer Hat,4,20,,200,,2,,0,0xFFFFFFFE,63,2,256,,1,1,792,{ bonus bLuk,3; bonus2 bAddEle,Ele_Water,5; },{},{}
|
||||
18640,Starfish_Headband,Starfish Headband,4,20,,200,,2,,0,0xFFFFFFFE,63,2,256,,1,1,793,{},{},{}
|
||||
@ -9183,15 +9185,15 @@
|
||||
18647,Star_Eyepatch,Star Eyepatch,4,20,,100,,0,,0,0xFFFFFFFF,63,2,256,,1,0,800,{ bonus2 bResEff,Eff_Stun,1500; },{},{}
|
||||
18648,Tongue_Charm,Tongue Charm,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,1,0,801,{ bonus2 bSubRace,RC_Demon,3; },{},{}
|
||||
18649,Lude_Mask,Lude Mask,4,10,,100,,1,,0,0xFFFFFFFF,63,2,513,,0,1,802,{},{},{}
|
||||
18650,RWC_Shouting_Mouth,RWC Shouting Mouth,4,20,,50,,0,,0,0xFFFFFFFF,63,2,1,,1,0,194,{},{},{}
|
||||
18650,RWC_Shouting_Mouth,RWC Shouting Mouth,4,20,,50,,0,,0,0xFFFFFFFF,63,2,1,,1,0,194,{ bonus3 bAutoSpellWhenHit,"SM_ENDURE",1,10; bonus3 bAutoSpellWhenHit,"MO_CALLSPIRITS",5,10; bonus3 bAutoSpellWhenHit,"MO_EXPLOSIONSPIRITS",5,10; bonus3 bAutoSpell,"BS_MAXIMIZE",5,10; bonus3 bAutoSpell,"MC_LOUD",1,10; bonus3 bAutoSpell,"AC_CONCENTRATION",5,10; bonus3 bAutoSpell,"PR_GLORIA",3,10; autobonus "{ bonus bStr,3; bonus bAgi,3; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; showscript \"RWC 2011 Fighting!!\"; }"; autobonus "{ bonus bInt,3; bonus bLuk,3; }",5,5000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; showscript \"RWC 2011 Fighting!!\"; }"; },{},{}
|
||||
18651,Ignis_Cap,Ignis Cap,4,20,,800,,8,,1,0xFFFFFFFF,63,2,256,,40,1,803,{},{},{}
|
||||
18652,Vanargandr_Helm,Vanargandr Helm,4,20,,1500,,10,,1,0xFFFFFFFF,63,2,256,,80,1,804,{ bonus bMdef,5; .@r = getrefine(); if (.@r >= 9 ) { bonus2 bHPGainAttackRate,100,8; bonus2 bSPGainAttackRate,100,4; } else if (.@r >= 8 ) { bonus2 bHPGainAttackRate,100,5; bonus2 bSPGainAttackRate,100,2; } else if (.@r >= 7 ) { bonus2 bHPGainAttackRate,100,5; bonus2 bSPGainAttackRate,100,2; } else if (.@r >= 5 ) { bonus2 bHPGainAttackRate,100,3; bonus2 bSPGainAttackRate,100,1; } else { bonus2 bHPGainAttackRate,100,1; bonus2 bSPGainAttackRate,100,1; } /* Confirm: Success rate? */ },{},{}
|
||||
18652,Vanargandr_Helm,Vanargandr Helm,4,20,,1500,,10,,1,0xFFFFFFFF,63,2,256,,80,1,804,{ bonus bMdef,5; .@r = getrefine(); if (.@r >= 9 ) { bonus2 bHPDrainRate,60,8; bonus2 bSPDrainRate,20,4; } else if (.@r >= 8 ) { bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,2; } else if (.@r >= 7 ) { bonus2 bHPDrainRate,30,5; bonus2 bSPDrainRate,10,2; } else if (.@r >= 5 ) { bonus2 bHPDrainRate,10,3; bonus2 bSPDrainRate,10,1; } else { bonus2 bHPDrainRate,10,1; bonus2 bSPDrainRate,10,1; } },{},{}
|
||||
18653,Deviruchi_Headphone,Deviruchi Headphone,4,20,,200,,8,,1,0xFFFFFFFF,63,2,256,,30,1,805,{ bonus bAgi,2; },{},{}
|
||||
18655,Goedo_Monocle,Goedo Monocle,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,50,0,23,{},{},{}
|
||||
18656,Witch's_Pumpkin_Hat,Witch's Pumpkin Hat,4,20,,300,,10,,0,0xFFFFFFFF,63,2,256,,20,1,717,{ bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15; },{},{}
|
||||
18656,Wit_Pumpkin_Hat,Witch's Pumpkin Hat,4,20,,300,,10,,0,0xFFFFFFFF,63,2,256,,20,1,717,{ bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15; bonus2 bMagicAddRace,RC_Demon,15; },{},{}
|
||||
18657,Pegasus_Wing_Ears,Pegasus Wing Ears,4,20,,500,,1,,0,0xFFFFFFFF,63,2,512,,80,0,568,{ bonus bUnbreakableHelm,0; if (BaseLevel >= 150) bonus bAspdRate,3; else if (BaseLevel >= 100) bonus bAspdRate,2; else if (BaseLevel >= 50) bonus bAspdRate,1; },{},{}
|
||||
18658,Holy_Santa_Beard,Holy Santa Beard,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,1,0,25,{},{},{}
|
||||
18659,Boitata_Hat,Boitata Hat,4,20,,0,,5,,1,0xFFFFFFFF,63,2,768,,0,1,808,{},{},{}
|
||||
18659,Boitata_Hat,Boitata Hat,4,20,,0,,5,,1,0xFFFFFFFF,63,2,768,,0,1,808,{ autobonus "{ bonus bAtkEle,Ele_Fire; }",10,180000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; bonus3 bAutospell,"AS_SONICBLOW",5,10; },{},{}
|
||||
18660,Indi_Feather_Band,Indian Feather Headband,4,20,,400,,3,,1,0xFFFFFFFE,63,2,256,,0,1,809,{ bonus bAgi,2; },{},{}
|
||||
18661,Trident_Helm,Trident Helm,4,20,,400,,3,,1,0xFFFFFFFE,63,2,256,,20,1,810,{ bonus bStr,2; },{},{}
|
||||
18662,Antler_Fedora,Antler Fedora,4,20,,400,,3,,0,0xFFFFFFFE,63,2,256,,1,1,811,{ bonus bInt,3; },{},{}
|
||||
@ -9203,7 +9205,7 @@
|
||||
18668,Droopy_Turtle_Hat,Droopy Turtle Hat,4,20,,300,,1,,1,0xFFFFFFFE,63,2,256,,1,1,694,{ skill "AL_DECAGI",3; },{},{}
|
||||
18669,Cowhide_Hat,Cowhide Hat,4,20,,200,,3,,1,0xFFFFFFFE,63,2,256,,1,1,819,{ bonus bDex,2; bonus bMaxHPrate,1; },{},{}
|
||||
18670,Hankie_In_Mouth,Hankie In Mouth,4,20,,100,,1,,0,0xFFFFFFFF,63,2,1,,12,0,818,{ bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; },{},{}
|
||||
18671,Rudolf_Hairband,Rudolf Hairband,4,20,,200,,5,,0,0xFFFFFFFF,63,2,256,,30,1,836,{ bonus3 bAutoSpell,"AL_INCAGI",10,50; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,50; bonus2 bAddItemHealRate,515,2000; },{},{}
|
||||
18671,Rudolf_Hairband,Rudolf Hairband,4,20,,200,,5,,0,0xFFFFFFFF,63,2,256,,30,1,836,{ bonus3 bAutoSpell,"AL_INCAGI",10,50; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,50; bonus2 bAddItemHealRate,515,2000; autobonus "{ bonus bLuk,20; }",10,50000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }"; autobonus2 "{ bonus bStr,20; }",10,50000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }"; },{},{}
|
||||
18672,Tare_Pope,Tare Pope,4,20,,300,,0,,0,0xFFFFFFFF,63,2,256,,1,0,817,{ bonus bUnbreakableHelm,0; },{},{}
|
||||
18673,Tare_Pope_,Tare Pope,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,1,0,817,{ bonus bUnbreakableHelm,0; bonus bSPrecovRate,2; },{},{}
|
||||
18674,Planewing_Hat,Planewing Hat,4,20,,200,,3,,1,0xFFFFFFFE,63,2,256,,1,1,820,{ bonus bAgi,3; },{},{}
|
||||
@ -9306,7 +9308,7 @@
|
||||
18806,Black_Rabbit_Hat,Black Rabbit Hat,4,20,,300,,2,,1,0xFFFFFFFF,63,2,256,,0,1,923,{ bonus bDex,2; bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10; },{},{}
|
||||
18807,Yellow_Yuzu_Hat,Yellow Yuzu Hat,4,20,,400,,3,,1,0xFFFFFFFE,63,2,256,,0,1,924,{ bonus bVit,2; bonus bLuk,3; bonus2 bSubRace,RC_Plant,10; },{},{}
|
||||
18808,Wing_Form_Spectacle,Wing Form Spectacle,4,20,,100,,1,,0,0xFFFFFFFF,63,2,256,,0,1,925,{ bonus bAgi,1; },{},{}
|
||||
18810,Hell_Pumpkin_Hat,Hell Pumpkin Hat,4,20,,500,,12,,0,0xFFFFFFFF,63,2,256,,0,1,717,{ bonus bMdef,12; bonus2 bSubRace,6,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bSubRace,RC_Undead,-5; },{},{}
|
||||
18810,Hell_Pumpkin_Hat,Hell Pumpkin Hat,4,20,,500,,12,,0,0xFFFFFFFF,63,2,256,,0,1,717,{ bonus bMdef,12; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
|
||||
18813,New_Wave_Sunglasses,New Wave Sunglasses,4,10,,100,,,,0,0xFFFFFFFF,63,2,512,,30,,856,{ bonus bDelayrate,-10; },{},{}
|
||||
18814,Angel_School_Cap,Angel School Cap,4,20,,100,,4,,1,0xFFFFFFFE,63,2,256,,0,1,927,{ bonus bInt,2; bonus bVit,1; },{},{}
|
||||
18815,Devil_School_Cap,Devil School Cap,4,20,,100,,4,,1,0xFFFFFFFE,63,2,256,,0,1,928,{ bonus bStr,2; bonus bVit,1; },{},{}
|
||||
@ -9332,9 +9334,9 @@
|
||||
18848,Fresh_Roses,Fresh Roses,4,10,,200,0:20,0,,1,0xFFFFFFFF,63,2,256,,1,1,963,{ bonus bMagicHPGainValue,100; bonus bMagicSPGainValue,100; },{},{}
|
||||
18849,Celine_Ribbon,Celine Ribbon,4,10,,200,,,,1,0xFFFFFFFF,63,2,256,,1,1,967,{ bonus bDex,3; bonus bMatk,40+getrefine(); bonus bMagicHPGainValue,200; bonus2 bHPLossRate,50,5000; },{},{}
|
||||
18850,Polar_Bear_Cap,Polar Bear Cap,4,20,,300,,7,,0,0xFFFFFFFF,63,2,256,,1,0,966,{ bonus bUnbreakableHelm,0; bonus bDex,1; bonus bAgi,1; bonus bMdef,3; bonus bHPrecovRate,5; bonus bSPrecovRate,3; bonus2 bAddMonsterDropItem,12354,100; },{},{}
|
||||
18851,C_Polar_Bear_Cap,Costume Polar Bear Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,966,{},{},{}
|
||||
18851,C_Polar_Bear_Cap,Costume Polar Bear Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,966,{ /*Is this correct item?*/ },{},{}
|
||||
18855,Aviator_Hat,Aviator Hat,4,10,,100,,10,,0,0xFFFFFFFF,63,2,256,,1,1,972,{ bonus bAgi,3; bonus bInt,3; autobonus "{ bonus bAtkEle,Ele_Wind; }",500,180,BF_NORMAL; },{},{}
|
||||
18856,W_King_Tiger_Doll_Hat,W King Tiger Doll Hat,4,10,,0,,10,,0,0xFFFFFFFF,63,2,256,,1,1,973,{ bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }"; },{},{}
|
||||
18856,W_King_Tiger_Doll_Hat,W King Tiger Doll Hat,4,10,,0,,10,,0,0xFFFFFFFF,63,2,256,,1,1,973,{ bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Traaaansformation-!! Eddga form!!\"; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Traaaansformation-!! Eddga form!!\"; }"; },{},{}
|
||||
18857,Curupira_Hat,Curupira Hat,4,10,,100,,20,,0,0xFFFFFFFF,63,2,256,,1,1,974,{ bonus bDex,3; bonus2 bAddEffWhenHit,Eff_Confusion,500; },{},{}
|
||||
18859,Angeling_Bubble,Angeling Bubble,4,10,,50,,5,,0,0xFFFFFFFF,63,2,1,,1,,975,{ bonus bDex,1; bonus bMatkRate,2; bonus bMaxHP,100; },{},{}
|
||||
18861,Zaha_Doll_J_Hat,Zaha Doll J Hat,4,10,,100,,,,0,0xFFFFFFFF,63,2,256,,50,1,461,{ bonus bHealPower,15; bonus bUseSPrate,15; },{},{}
|
||||
@ -9402,6 +9404,7 @@
|
||||
19019,Elemental_Crown,Elemental Crown,4,0,,500,,10,,1,0xFFFFFFFF,63,2,256,,,1,1219,{ .@r = getrefine(); bonus bDex,(3 + (.@r/2)+ (readparam(bDex) > 130 ? .@r : 0)); bonus bLongAtkRate,4; },{},{}
|
||||
19020,Survive_Circlet,Survive Circlet,4,0,,500,,10,,1,0xFFFFFFFF,63,2,256,,,1,1220,{ .@r = getrefine(); bonus bInt,(3 + (.@r/2)+ (BaseLevel > 130 ? .@r : 0)); bonus bMatkRate,4; },{},{}
|
||||
19021,Gigant_Helm,Gigant Helm,4,0,,500,,10,,1,0xFFFFFFFF,63,2,256,,,1,1221,{ bonus bStr,3+((BaseLevel > 130) ? getrefine() : 0); bonus bAtkRate,4; },{},{}
|
||||
19024,Protect_Feathers,Protect Feathers,4,0,,500,,,,0,0xFFFFFFFF,63,2,512,1,70,1,1232,{ bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; bonus bAspdRate,-5; .@vit = readparam(bVit); if (.@vit >= 108) { bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; bonus bAspdRate,-5; } if (.@vit >= 120) { bonus bMaxHPRate,3; bonus bMdef,3; } },{},{}
|
||||
19026,Aegir_Helm,Aegir Helm,4,10,,800,,10,,0,0xFFFFFFFF,63,2,256,,40,1,870,{ bonus bVit,3; },{},{}
|
||||
19030,Pretty_Rabbit_Hood,Pretty Rabbit Hood,4,10,,100,,20,,0,0xFFFFFFFF,63,2,1,,1,1,1085,{ bonus bMaxHP,(15*BaseLevel); },{},{}
|
||||
19031,Fallen_Angel_Blessing,Fallen Angel Blessing,4,0,,200,,1,,0,0xFFFFFFFF,63,2,512,,,1,1250,{ bonus2 bAddRace,RC_Angel,5; bonus2 bSubRace,RC_Angel,5; },{},{}
|
||||
@ -9445,12 +9448,12 @@
|
||||
19530,C_Wild_Rose,Costume Wild Rose,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,541,{ bonus bUnbreakableHelm,0; bonus bBaseAtk,2; bonus bMatk,2; },{},{}
|
||||
19531,C_Cube_Mask,Costume Cube Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,0,0,472,{ bonus bUnbreakableHelm,0; bonus bFlee,1; },{},{}
|
||||
19532,C_Red_Bunny_Band,Red Bunny Band,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,640,{ bonus bUnbreakableHelm,0; bonus bDex,1; },{},{}
|
||||
19533,C_Spore_Hat,Costume Spore Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,114,{ bonus bUnbreakableHelm,0; bonus bVit,1; bonus2 bExpAddClass,Class_All,1; },{},{}
|
||||
19534,C_Tha_Despero_Mask,Costume Thanatos Despero Mask,4,20,,0,,0,,0,0xFFFFFFFF,63,2,513,,1,0,693,{ bonus bAtkRate,1; bonus bMatkRate,1; bonus bHealPower,1; },{},{}
|
||||
19535,C_Sinsuncho_Hat,Costume Sinsuncho Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,730,{ bonus bUnbreakableHelm,0; bonus bStr,1; bonus2 bExpAddClass,Class_All,1; },{},{}
|
||||
19533,C_Spore_Hat,Costume Spore Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,114,{ bonus bUnbreakableHelm,0; bonus bVit,1; bonus2 bExpAddRace,RC_All,1; },{},{}
|
||||
19534,C_Tha_Despero_Mask,Costume Thanatos Despero Mask,4,20,,0,,0,,0,0xFFFFFFFF,63,2,513,,1,0,693,{ bonus2 bAddClass,Class_All,1; bonus bMatkRate,1; bonus bHealPower,1; },{},{}
|
||||
19535,C_Sinsuncho_Hat,Costume Sinsuncho Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,730,{ bonus bUnbreakableHelm,0; bonus bStr,1; bonus2 bExpAddRace,RC_All,1; },{},{}
|
||||
19536,C_Rose_Corsage,Costume Rose Corsage,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,533,{ bonus bUnbreakableHelm,0; bonus bInt,1; },{},{}
|
||||
19537,C_Gryphon_Hat,Costume Gryphon Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,591,{ bonus bUnbreakableHelm,0; },{},{}
|
||||
19538,Full_Moon,Full Moon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,780,{ autobonus "{ bonus bMatk,50; bonus bBaseAtk,50; }",10,5000; },{},{}
|
||||
19538,Full_Moon,Full Moon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,780,{ autobonus "{ bonus bBaseAtk,50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }"; autobonus "{ bonus bMatk,50; }",5,5000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; /* showscript */ }"; },{},{}
|
||||
19539,C_Reginleif_Hairband,Costume Hairband Of Reginleif,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,468,{ bonus bAllStats,1; },{},{}
|
||||
19540,C_Rabbit_Earplug,Costume Rabbit Earplugs,4,20,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,515,{ bonus bAgi,1; bonus bFlee,2; },{},{}
|
||||
19541,C_Romantic_White_Flower,Costume Romantic White Flower,4,20,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,259,{ bonus bUnbreakableHelm,0; },{},{}
|
||||
@ -9720,7 +9723,8 @@
|
||||
20095,C_Red_Ribbon,Costume Red Ribbon,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,440,{},{},{}
|
||||
20096,C_Blue_Ribbon,Costume Blue Ribbon,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,441,{},{},{}
|
||||
20097,C_White_Ribbon,Costume White Ribbon,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,442,{},{},{}
|
||||
20110,C_Coiledup_Snake,Costume Coiledup Snake,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,,{/*TODO: View ID*/},{},{}
|
||||
20099,C_Flying_Ljosalfar,Flying Ljosalfar,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,1,1,1,1239,{},{},{}
|
||||
20110,C_Coiledup_Snake,Costume Coiledup Snake,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,1258,{},{},{}
|
||||
20118,C_Cake_Hat,Costume Cake Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,109,{},{},{}
|
||||
20119,C_Beanie,Costume Beanie,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,160,{},{},{}
|
||||
20120,C_Aerial,Costume Aerial,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,97,{},{},{}
|
||||
@ -9778,7 +9782,7 @@
|
||||
//
|
||||
20500,T_Archangel_Wing,Archangel Wing,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,1,{ bonus bUnbreakableHelm,0; },{},{}
|
||||
20600,Fantastic_Aura,Fantastic Aura,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,0,{ /*View ID*/ bonus bUnbreakableHelm,0; },{},{}
|
||||
20700,Egir_Manteau,Egir Manteau,4,200000,,300,,10,,1,0xFFFFFFFF,63,2,4,,110,1,0,{ bonus bUnbreakableHelm,0; },{},{}
|
||||
20700,Egir_Manteau,Egir Manteau,4,200000,,300,,10,,1,0xFFFFFFFF,63,2,4,,110,1,0,{ bonus bUnbreakableGarment,0; .@r = getrefine(); if (.@r > 10) .@r = 10; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) { bonus bFlee2,5+(.@r*2); } else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) { bonus bShortWeaponDamageReturn,5+(.@r*2); } },{},{}
|
||||
20706,Amistr_Bag,Amistr Bag,4,10,,500,,18,,0,0xFFFFFFFF,63,2,4,,1,,4,{ bonus bAllStats,1; bonus2 bSubEle,Ele_All,5; },{},{}
|
||||
20707,Kirin_Wing,Kirin Wing,4,20,,0,,18,,0,0xFFFFFFFF,63,2,4,,0,1,6,{ bonus bAllStats,1; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
|
||||
20710,Impr_Angel's_Warmth,Advanced Angelic Cardigan,4,10000,,400,,6,,1,0x00000001,63,2,4,,99,1,0,{ bonus bHPrecovRate,50; },{},{}
|
||||
@ -9786,7 +9790,7 @@
|
||||
20717,Gigant_Snake_Skin,Gigant Snake Skin,4,10,,400,,38,,0,0xFFFFFFFF,63,2,4,,1,1,0,{ bonus bMdef,10; },{},{}
|
||||
20718,Gigant_Snake_Skin,Gigant Snake Skin,4,10,,400,,38,,1,0xFFFFFFFF,63,2,4,,1,1,0,{ bonus bMdef,10; },{},{}
|
||||
20721,Black_As_Night_Cloak,Black As Night Cloak,4,10,,600,,45,,1,0xFFFFFFFF,63,2,4,,120,1,0,{ bonus2 bSubEle,Ele_Holy,5+(getrefine()/2); },{},{}
|
||||
20724,Love_Dad_Wings_2012,Love Dad Wings 2012,4,0,,100,,15,,1,0xFFFFFFFF,63,2,4,,1,1,5,{},{},{}
|
||||
20724,Love_Dad_Wings_2012,Love Dad Wings 2012,4,0,,100,,15,,1,0xFFFFFFFF,63,2,4,,1,1,5,{ .@r = getrefine(); bonus bAllStats,1; if ((readparam(bStr)>89)) { bonus bStr,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bAgi)>89)) { bonus bAgi,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bVit)>89)) { bonus bVit,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bInt)>89)) { bonus bInt,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bDex)>89)) { bonus bDex,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bLuk)>89)) { bonus bLuk,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } },{},{}
|
||||
20725,Ribbon_Piamat,Ribbon Piamat,4,10,,100,0:10,,,0,0xFFFFFFFF,63,2,4,,30,1,7,{ bonus bInt,1; bonus bDex,1; },{},{}
|
||||
20727,Brilliant_Golden_Wings,Brilliant Golden Wings,4,10,,0,,,,0,0xFFFFFFFF,63,2,8192,,1,1,5,{},{},{}
|
||||
20730,Loyalists_Hood,Loyalists Hood,4,10,,200,,30,,0,0xFFFFFFFF,63,2,8192,,80,,,{ bonus bStr,2; bonus bMaxHPrate,10; bonus bNoKnockback,1; bonus2 bSubEle,Ele_All,-20; },{},{}
|
||||
@ -9905,15 +9909,15 @@
|
||||
22628,Green_Package,Green Package,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 17162,1; getitem 14534,5; getitem 12323,20; getitem 12324,20; getitem 12325,10; getitem 14533,2; getitem 22629,1; },{},{}
|
||||
22629,Green_Package40,Green Package 40,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14289,1; getitem 12215,10; getitem 12216,10; getitem 14534,10; getitem 14533,5; getitem 12766,5; getitem 22630,1; },{},{}
|
||||
22630,Green_Package80,Green Package 80,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7621,5; getitem 12209,5; getitem 14527,10; getitem 14533,5; getitem 12766,5; getitem 22631,1; },{},{}
|
||||
22631,Green_Package99,Green Package 99,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12213,1; /*getitem Transmission_Coupon,1;*/ getitem 5883,1; },{},{}
|
||||
22631,Green_Package99,Green Package 99,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12213,1; getitem 7676,1; getitem 5883,1; },{},{}
|
||||
22640,17173_Green_Package,Green Package,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 17162,1; getitem 14534,5; getitem 12323,20; getitem 12324,20; getitem 12325,10; getitem 14533,2; getitem 22641,1; },{},{}
|
||||
22641,17173_Green_Package40,Green Package 40,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14289,1; getitem 12215,10; getitem 12216,10; getitem 14534,10; getitem 14533,5; getitem 12766,5; getitem 22642,1; },{},{}
|
||||
22642,17173_Green_Package80,Green Package 80,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7621,5; getitem 12209,5; getitem 14527,10; getitem 14533,5; getitem 12766,5; getitem 22643,1; },{},{}
|
||||
22643,17173_Green_Package99,Green Package 99,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12213,1; /*getitem Transmission_Coupon,1;*/ getitem 5883,1; },{},{}
|
||||
22643,17173_Green_Package99,Green Package 99,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12213,1; getitem 7676,1; getitem 5883,1; },{},{}
|
||||
22644,S_Green_Package,Green Package,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 17162,1; getitem 14534,5; getitem 12323,20; getitem 12324,20; getitem 12325,10; getitem 14533,2; getitem 22645,1; },{},{}
|
||||
22645,S_Green_Package40,Green Package 40,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14289,1; getitem 12215,10; getitem 12216,10; getitem 14534,10; getitem 14533,5; getitem 12766,5; getitem 22646,1; },{},{}
|
||||
22646,S_Green_Package80,Green Package 80,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7621,5; getitem 12209,5; getitem 14527,10; getitem 14533,5; getitem 12766,5; getitem 22647,1; },{},{}
|
||||
22647,S_Green_Package99,Green Package 99,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12213,1; /*getitem Transmission_Coupon,1;*/ getitem 5883,1; },{},{}
|
||||
22647,S_Green_Package99,Green Package 99,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12213,1; getitem 7676,1; getitem 5883,1; },{},{}
|
||||
22648,Angeling_Package,Angel Ring Package,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /* TODO */ },{},{}
|
||||
22649,Deviling_Package,Devil Ring Package,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /* TODO */ },{},{}
|
||||
22652,Briliant_Hat_Box,Brilliant Hat Box,2,10,,200,,,,,0xFFFFFFFF,63,2,,,,,,{ /* TODO */ },{},{}
|
||||
@ -10266,10 +10270,10 @@
|
||||
28203,Half_BF_Rifle1,Half BF Rifle1,5,0,,0,50,,9,0,0x41000000,63,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,8; bonus bCritical,8; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bVariableCastrate,"GS_TRACKING",-20; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,0; },{},{}
|
||||
28204,Half_BF_Shotgun1,Half BF Shotgun1,5,0,,0,100,,9,0,0x41000000,63,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
|
||||
//
|
||||
//28315,RCC2013_ARMLET
|
||||
//28316,RCC2013_ARMLET_
|
||||
//28317,RCC2013_RING
|
||||
//28318,RCC2013_RING_
|
||||
28315,RCC2013_ARMLET,RCC2013_ARMLET,4,200,,200,,,,0,0xFFFFFFFF,63,2,136,,1,0,,{ bonus2 bAddClass,Class_All,1; },{},{}
|
||||
28316,RCC2013_ARMLET_,RCC2013_ARMLET_,4,200,,200,,,,1,0xFFFFFFFF,63,2,136,,1,0,,{ bonus2 bAddClass,Class_All,1; },{},{}
|
||||
28317,RCC2013_RING,RCC2013_RING,4,200,,200,,,,0,0xFFFFFFFF,63,2,136,,1,0,,{ bonus2 bAddClass,Class_All,1; },{},{}
|
||||
28318,RCC2013_RING_,RCC2013_RING_,4,200,,200,,,,1,0xFFFFFFFF,63,2,136,,1,0,,{ bonus2 bAddClass,Class_All,1; },{},{}
|
||||
28310,Sarah's_Left_Earring,Sarah's Left Earring,4,10,,100,,,,0,0xFFFFFFFF,63,2,128,,145,1,,{ skill "AL_HEAL",1; },{},{}
|
||||
28311,Sarah's_Right_Earring,Sarah's Right Earring,4,10,,100,,,,0,0xFFFFFFFF,63,2,8,,145,1,,{ skill "AL_TELEPORT",1; },{},{}
|
||||
28326,Broken_Chips_01,Broken Chips 01,4,10,,100,,,,1,0xFFFFFFFF,63,2,136,,100,1,,{ bonus bStr,4; },{},{}
|
||||
|
@ -891,7 +891,7 @@ IG_Lucky_Scroll08,Bunny_Band_,3,0,0,0,0,1
|
||||
IG_Lucky_Scroll08,Drooping_Kitty_,5,0,0,0,0,1
|
||||
IG_Lucky_Scroll08,Tulip_Hairpin,65,0,0,0,0,1
|
||||
IG_Lucky_Scroll08,Insurance_Package,60,0,0,0,0,1
|
||||
IG_Lucky_Scroll08,Leaf_Of_Yggdrasil,110,05,0,0,0,1
|
||||
IG_Lucky_Scroll08,Leaf_Of_Yggdrasil,110,15,0,0,0,1
|
||||
|
||||
IG_Br_SwordPackage,Plate_Armor_,0,1,0,0,0,1
|
||||
IG_Br_SwordPackage,Shield_,0,1,0,0,0,1
|
||||
|
@ -78,8 +78,8 @@
|
||||
1148,MEDUSA,Medusa,12368,9050,10032,6108,80,60,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus bVit,1; bonus2 bResEff,Eff_Stone,500; }
|
||||
1179,WHISPER,Whisper,12363,9045,10027,6100,80,60,20,100,250,20,500,150,0,0,300,300,800,{},{ bonus bFlee,7; bonus bDef,-3; }
|
||||
1299,GOBLIN_LEADER,Goblin Leader,12364,9046,10028,6104,80,60,10,100,250,20,50,150,0,0,300,300,800,{},{ bonus2 bAddRace,RC_DemiHuman,3; }
|
||||
1370,SUCCUBUS,Succubus,12373,9055,10037,6113,80,60,10,100,250,20,200,150,0,0,300,300,800,{ bonus2 bHPGainAttackRate,10,5; },{ bonus2 bHPGainAttackRate,30,5; bonus bMaxHPrate,1; }
|
||||
1374,INCUBUS,Incubus,12370,9052,10034,6110,80,60,10,100,250,20,50,150,0,0,300,300,800,{ bonus bMaxSPRate,3; bonus2 bSPGainAttackRate,10,1; },{ bonus bMaxSPRate,5; bonus2 bSPGainAttackRate,30,1; }
|
||||
1370,SUCCUBUS,Succubus,12373,9055,10037,6113,80,60,10,100,250,20,200,150,0,0,300,300,800,{ bonus2 bHPDrainRate,10,5; },{ bonus2 bHPDrainRate,30,5; bonus bMaxHPrate,1; }
|
||||
1374,INCUBUS,Incubus,12370,9052,10034,6110,80,60,10,100,250,20,50,150,0,0,300,300,800,{ bonus bMaxSPRate,3; bonus2 bSPDrainRate,10,1; },{ bonus bMaxSPRate,5; bonus2 bSPDrainRate,30,1; }
|
||||
1379,NIGHTMARE_TERROR,Nightmare Terror,12372,9054,10036,6112,80,60,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus2 bResEff,Eff_Sleep,10000; }
|
||||
1401,SHINOBI,Shinobi,12362,9044,10026,6099,80,60,20,100,250,20,500,150,0,0,300,300,800,{},{ bonus bAgi,2; }
|
||||
1404,MIYABI_NINGYO,Miyabi Doll,12366,9048,10030,6106,80,60,15,100,250,20,200,150,0,0,300,300,800,{},{ bonus bInt,1; bonus bCastrate,-3; }
|
||||
|
@ -41,6 +41,7 @@
|
||||
// 0x08000 - skill that ignore bg reduction
|
||||
// 0x10000 - skill that ignore gvg reduction
|
||||
// 0x20000 - makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options)
|
||||
// 0x40000 - skill that can hit trap-type skill (inf2 has 0x00080)
|
||||
// 13 maxcount: max amount of skill instances to place on the ground when
|
||||
// player_land_skill_limit/monster_land_skill_limit is enabled. For skills
|
||||
// that attack using a path, this is the path length to be used.
|
||||
@ -76,7 +77,7 @@
|
||||
4,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, SM_RECOVERY,Increase HP Recovery
|
||||
5,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0, SM_BASH,Bash
|
||||
6,9,6,1,0,1,0,10,1,no,0,0,0,none,0,0x0, SM_PROVOKE,Provoke
|
||||
7,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0, SM_MAGNUM,Magnum Break
|
||||
7,0,6,4,3,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x0, SM_MAGNUM,Magnum Break
|
||||
8,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, SM_ENDURE,Endure
|
||||
|
||||
//****
|
||||
@ -128,7 +129,7 @@
|
||||
44,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, AC_VULTURE,Vulture's Eye
|
||||
45,0,6,4,0,0x3,3,10,1,no,0,0,0,weapon,0,0x0, AC_CONCENTRATION,Improve Concentration
|
||||
46,-9,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x80, AC_DOUBLE,Double Strafe
|
||||
47,-9,6,2,-1,0x2,2,10,1,no,0,0x0,0,weapon,2,0x81, AC_SHOWER,Arrow Shower
|
||||
47,-9,6,2,-1,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x81, AC_SHOWER,Arrow Shower
|
||||
|
||||
//****
|
||||
// Thief
|
||||
@ -146,11 +147,11 @@
|
||||
55,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, KN_SPEARMASTERY,Spear Mastery
|
||||
56,-2,8,1,-1,0,0,10,3,no,0,0,0,weapon,0,0x0, KN_PIERCE,Pierce
|
||||
57,-2,6,1,-1,0x1,0,10,1,no,0,0,0,weapon,3,0x20000, KN_BRANDISHSPEAR,Brandish Spear
|
||||
58,-4,6,1,-1,0x2,0,10,1,no,0,0,0,weapon,6,0x0, KN_SPEARSTAB,Spear Stab
|
||||
58,-4,6,1,-1,0x2,0,10,1,no,0,0x40000,0,weapon,6,0x0, KN_SPEARSTAB,Spear Stab
|
||||
59,3:5:7:9:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, KN_SPEARBOOMERANG,Spear Boomerang
|
||||
60,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, KN_TWOHANDQUICKEN,Twohand Quicken
|
||||
61,0,6,4,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, KN_AUTOCOUNTER,Counter Attack
|
||||
62,-2,6,1,-1,0x2,1,10,1,no,0,0,0,weapon,1,0x0, KN_BOWLINGBASH,Bowling Bash
|
||||
62,-2,6,1,-1,0x2,1,10,1,no,0,0x40000,0,weapon,1,0x0, KN_BOWLINGBASH,Bowling Bash
|
||||
63,0,0,0,0,0,0,1,0,no,0,0,0,weapon,0,0x0, KN_RIDING,Peco Peco Riding
|
||||
64,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, KN_CAVALIERMASTERY,Cavalier Mastery
|
||||
|
||||
@ -175,7 +176,7 @@
|
||||
//****
|
||||
// Wizard
|
||||
80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,-3:-4:-5:-6:-7:-8:-9:-10:-11:-12:-12,yes,0,0x2000,5,magic,0,0x0, WZ_FIREPILLAR,Fire Pillar
|
||||
81,0,6,4,3,0,7,10,1,yes,0,0x2000,0,magic,5,0x20, WZ_SIGHTRASHER,Sightrasher
|
||||
81,0,6,4,3,0x2,7,10,1,yes,0,0x42000,0,magic,5,0x20, WZ_SIGHTRASHER,Sightrasher
|
||||
83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0x2000,0,magic,0,0x20, WZ_METEOR,Meteor Storm
|
||||
84,9,8,1,4,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0x2000,0,magic,2:3:3:4:4:5:5:6:6:7,0x20, WZ_JUPITEL,Jupitel Thunder
|
||||
85,9,8,2,4,0,0,10,-10,yes,0,0x2000,0,magic,0,0x20, WZ_VERMILION,Lord of Vermilion
|
||||
@ -217,13 +218,13 @@
|
||||
115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x3000, HT_SKIDTRAP,Skid Trap
|
||||
116,3,6,2,2,0x42,0,5,1,no,0,0x80,0,misc,0,0x3800, HT_LANDMINE,Land Mine
|
||||
117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x3000, HT_ANKLESNARE,Ankle Snare
|
||||
118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_SHOCKWAVE,Shockwave Trap
|
||||
118,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_SHOCKWAVE,Shockwave Trap
|
||||
119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x3000, HT_SANDMAN,Sandman
|
||||
120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_FLASHER,Flasher
|
||||
121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x3800, HT_FREEZINGTRAP,Freezing Trap
|
||||
122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800, HT_BLASTMINE,Blast Mine
|
||||
123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x3800, HT_CLAYMORETRAP,Claymore Trap
|
||||
124,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0, HT_REMOVETRAP,Remove Trap
|
||||
123,3,6,2,3,0x42,2,5,1,no,0,0x40080,0,misc,0,0x3800, HT_CLAYMORETRAP,Claymore Trap
|
||||
124,2,6,32,0,0x1,0,1,1,no,0,0x40000,0,misc,0,0x0, HT_REMOVETRAP,Remove Trap
|
||||
125,3,6,2,0,0x1,0,1,1,no,0,0x80,0,misc,0,0x2000, HT_TALKIEBOX,Talkie Box
|
||||
126,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, HT_BEASTBANE,Beast Bane
|
||||
127,0,0,0,0,0,0,1,0,no,0,0,0,misc,0,0x0, HT_FALCON,Falconry Mastery
|
||||
@ -258,7 +259,7 @@
|
||||
150,0,6,4,0,0x1,0,1,1,no,0,0x1,0,weapon,5,0x40, TF_BACKSLIDING,Back Slide
|
||||
151,0,6,4,0,0x1,0,1,1,no,0,0x1,0,none,0,0x0, TF_PICKSTONE,Find Stone
|
||||
152,7,6,1,0,0x40,0,1,1,no,0,0x1,0,misc,0,0x0, TF_THROWSTONE,Stone Fling
|
||||
153,1,6,1,-1,0x2,1,1,1,no,0,0x1,0,weapon,2,0x0, MC_CARTREVOLUTION,Cart Revolution
|
||||
153,1,6,1,-1,0x2,1,1,1,no,0,0x40001,0,weapon,2,0x0, MC_CARTREVOLUTION,Cart Revolution
|
||||
154,0,6,4,0,0x1,0,1,1,no,0,0x1,0,none,0,0x0, MC_CHANGECART,Change Cart
|
||||
155,0,6,4,0,0x1,0,1,1,no,0,0x1,0,weapon,0,0x0, MC_LOUD,Crazy Uproar
|
||||
156,9,6,1,6,0,0,1,1,yes,0,0x1,0,magic,0,0x20, AL_HOLYLIGHT,Holy Light
|
||||
@ -325,7 +326,7 @@
|
||||
211,1,6,1,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, RG_STEALCOIN,Mug
|
||||
212,-1,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,0x4, RG_BACKSTAP,Back Stab
|
||||
213,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, RG_TUNNELDRIVE,Stalk
|
||||
214,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x4, RG_RAID,Sightless Mind
|
||||
214,0,6,4,-1,0x2,3,5,1,no,0,0x40000,0,weapon,0,0x4, RG_RAID,Sightless Mind
|
||||
215,1,6,1,0,0x1,0,5,1,no,0,0,0,weapon,0,0x20, RG_STRIPWEAPON,Divest Weapon
|
||||
216,1,6,1,0,0x1,0,5,1,no,0,0,0,weapon,0,0x20, RG_STRIPSHIELD,Divest Shield
|
||||
217,1,6,1,0,0x1,0,5,1,no,0,0,0,weapon,0,0x20, RG_STRIPARMOR,Divest Armor
|
||||
@ -369,8 +370,8 @@
|
||||
249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, CR_AUTOGUARD,Guard
|
||||
250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0, CR_SHIELDCHARGE,Smite
|
||||
251,3:5:7:9:11,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x20000, CR_SHIELDBOOMERANG,Shield Boomerang
|
||||
252,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0,0x0, CR_REFLECTSHIELD,Shield Reflect
|
||||
253,-2,8,1,6,0,0,10,-2,no,0,0,0,weapon,0,0x0, CR_HOLYCROSS,Holy Cross
|
||||
252,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, CR_REFLECTSHIELD,Shield Reflect
|
||||
253,-2,8,1,6,0,0,10,-2,no,0,0x40000,0,weapon,0,0x0, CR_HOLYCROSS,Holy Cross
|
||||
254,5,6,4,6,0x48,0,10,1,no,33,0x100,0,magic,0,0x0, CR_GRANDCROSS,Grand Cross
|
||||
255,7:8:9:10:11,6,16,0,0x1,0,5,1,yes,0,0x600,0,none,0,0x0, CR_DEVOTION,Sacrifice
|
||||
256,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,none,0,0x0, CR_PROVIDENCE,Resistant Souls
|
||||
@ -383,15 +384,15 @@
|
||||
260,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, MO_SPIRITSRECOVERY,Spiritual Cadence
|
||||
261,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, MO_CALLSPIRITS,Summon Spirit Sphere
|
||||
262,9,6,16,0,0x1,0,1,1,yes,0,0,0,weapon,0,0x0, MO_ABSORBSPIRITS,Absorb Spirit Sphere
|
||||
263,-1,8,0,-1,0,0,10,-3,no,0,0,0,weapon,0,0x0, MO_TRIPLEATTACK,Raging Trifecta Blow
|
||||
263,-1,8,0,-1,0,0,10,-3,no,0,0x40000,0,weapon,0,0x0, MO_TRIPLEATTACK,Raging Trifecta Blow
|
||||
264,18,6,2,0,0x1,0,1,1,no,0,0,0,none,0,0x0, MO_BODYRELOCATION,Snap
|
||||
265,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, MO_DODGE,Dodge
|
||||
266,2,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0x0, MO_INVESTIGATE,Occult Impaction
|
||||
267,9,8,1,-1,0,0,5,1:2:3:4:5,no,0,0,0,weapon,0,0x0, MO_FINGEROFFENSIVE,Throw Spirit Sphere
|
||||
266,2,6,1,-1,0x40,0,5,1,no,0,0x40000,0,weapon,0,0x0, MO_INVESTIGATE,Occult Impaction
|
||||
267,9,8,1,-1,0,0,5,1:2:3:4:5,no,0,0x40000,0,weapon,0,0x0, MO_FINGEROFFENSIVE,Throw Spirit Sphere
|
||||
268,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0, MO_STEELBODY,Mental Strength
|
||||
269,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0, MO_BLADESTOP,Root
|
||||
270,0,6,4,0,0x1,0,5,0,no,0,0,0,weapon,0,0x0, MO_EXPLOSIONSPIRITS,Fury
|
||||
271,-2,6,1,0,0x60,0,5,1,yes,0,0,0,weapon,0,0x0, MO_EXTREMITYFIST,Asura Strike
|
||||
271,-2,6,1,0,0x60,0,5,1,yes,0,0x40000,0,weapon,0,0x0, MO_EXTREMITYFIST,Asura Strike
|
||||
272,-2,8,4,-1,0,0,5,-4,no,0,0x200,0,weapon,0,0x0, MO_CHAINCOMBO,Raging Quadruple Blow
|
||||
273,-2,6,4,-1,0x2,2,5,1,no,0,0x200,0,weapon,0,0x0, MO_COMBOFINISH,Raging Thrust
|
||||
|
||||
@ -561,7 +562,7 @@
|
||||
//****
|
||||
// Stalker
|
||||
389,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x60, ST_CHASEWALK,Stealth
|
||||
390,0,0,4,0,0,0,5,1,yes,0,0,0,weapon,0,0x0, ST_REJECTSWORD,Counter Instinct
|
||||
390,0,0,4,0,0x1,0,5,1,yes,0,0,0,weapon,0,0x0, ST_REJECTSWORD,Counter Instinct
|
||||
//391,0,0,4,0,1,0,1,1,yes,0,0,0,magic,0,0x0, ST_STEALBACKPACK,Steal Backpack
|
||||
|
||||
//****
|
||||
@ -577,7 +578,7 @@
|
||||
|
||||
//****
|
||||
// Lord Knight
|
||||
397,5,8,1,-1,0,0,5,5,no,0,0,0,weapon,0,0x20000, LK_SPIRALPIERCE,Spiral Pierce
|
||||
397,5,8,1,-1,0,0,5,5,no,0,0x40000,0,weapon,0,0x20000, LK_SPIRALPIERCE,Spiral Pierce
|
||||
398,4,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, LK_HEADCRUSH,Traumatic Blow
|
||||
399,4,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0, LK_JOINTBEAT,Vital Strike
|
||||
|
||||
@ -598,7 +599,7 @@
|
||||
|
||||
//****
|
||||
// Assassin Cross
|
||||
406,0,6,4,-1,0xA,2,10,1,no,0,0,0,weapon,0,0x0, ASC_METEORASSAULT,Meteor Assault
|
||||
406,0,6,4,-1,0xA,2,10,1,no,0,0x40000,0,weapon,0,0x0, ASC_METEORASSAULT,Meteor Assault
|
||||
407,0,6,4,0,0x1,0,1,0,no,0,0,0,none,0,0x0, ASC_CDP,Create Deadly Poison
|
||||
|
||||
//****
|
||||
@ -629,9 +630,9 @@
|
||||
//****
|
||||
// Star Gladiator
|
||||
427,0,6,4,0,0x1,0,3,1,yes,0,0,0,magic,0,0x0, SG_FEEL,Feeling the Sun Moon and Stars
|
||||
428,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x1, SG_SUN_WARM,Warmth of the Sun
|
||||
429,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x1, SG_MOON_WARM,Warmth of the Moon
|
||||
430,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x1, SG_STAR_WARM,Warmth of the Stars
|
||||
428,1,6,4,-1,0x3,1,3,1,yes,0,0,0,weapon,2,0x1, SG_SUN_WARM,Warmth of the Sun
|
||||
429,1,6,4,-1,0x3,1,3,1,yes,0,0,0,weapon,2,0x1, SG_MOON_WARM,Warmth of the Moon
|
||||
430,1,6,4,-1,0x3,1,3,1,yes,0,0,0,weapon,2,0x1, SG_STAR_WARM,Warmth of the Stars
|
||||
431,0,0,4,0,0x1,0,4,1,yes,0,0,0,magic,0,0x0, SG_SUN_COMFORT,Comfort of the Sun
|
||||
432,0,0,4,0,0x1,0,4,1,yes,0,0,0,magic,0,0x0, SG_MOON_COMFORT,Comfort of the Moon
|
||||
433,0,0,4,0,0x1,0,4,1,yes,0,0,0,magic,0,0x0, SG_STAR_COMFORT,Comfort of the Stars
|
||||
@ -689,7 +690,7 @@
|
||||
|
||||
//****
|
||||
// Other 2nd Skills
|
||||
473,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, SM_SELFPROVOKE,Provoke Self
|
||||
473,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, SM_SELFPROVOKE,Provoke Self
|
||||
474,0,0,4,0,0x1,0,10,1,no,0,0x2,0,none,0,0x0, NPC_EMOTION_ON,Emotion ON
|
||||
475,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, ST_PRESERVE,Preserve
|
||||
476,1,6,1,0,0x1,0,5,1,yes,0,0,0,weapon,0,0x20, ST_FULLSTRIP,Divest All
|
||||
@ -719,14 +720,14 @@
|
||||
|
||||
//****
|
||||
// Gunslinger
|
||||
500,0,6,4,0,0x40,0,5,1,no,0,0,0,misc,0,0x0, GS_GLITTERING,Flip the Coin
|
||||
500,0,6,4,0,0x41,0,5,1,no,0,0,0,misc,0,0x0, GS_GLITTERING,Flip the Coin
|
||||
501,9,6,1,-1,0x50,0,1,1,no,0,0,0,misc,0,0x0, GS_FLING,Fling
|
||||
502,-9,8,1,-1,0,0,1,3,no,0,0,0,weapon,0,0x0, GS_TRIPLEACTION,Triple Action
|
||||
503,-9,6,1,-1,0x8,0,1,1,no,0,0,0,weapon,0,0x0, GS_BULLSEYE,Bulls Eye
|
||||
504,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_MADNESSCANCEL,Madness Canceller
|
||||
505,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_ADJUSTMENT,AdJustment
|
||||
506,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_INCREASING,Increasing Accuracy
|
||||
507,-9,6,1,8,0,0,1,1,no,0,0,0,weapon,0,0x0, GS_MAGICALBULLET,Magical Bullet
|
||||
507,-9,6,1,8,0x20,0,1,1,no,0,0,0,misc,0,0x0, GS_MAGICALBULLET,Magical Bullet
|
||||
508,-9,6,1,-1,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_CRACKER,Cracker
|
||||
509,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, GS_SINGLEACTION,Single Action
|
||||
510,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, GS_SNAKEEYE,Snake Eye
|
||||
@ -870,7 +871,7 @@
|
||||
1003,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x0, AS_SONICACCEL,Sonic Acceleration
|
||||
1004,9,8,1,0,0x8,0,1,1,no,0,0x1,0,weapon,0,0x0, AS_VENOMKNIFE,Throw Venom Knife
|
||||
1005,1,6,1,0,0x1,0,1,1,no,0,0x1,0,weapon,0,0x0, RG_CLOSECONFINE,Close Confine
|
||||
1006,0,6,4,3,0,1,1,1,yes,0,0x1,0,magic,3,0x20, WZ_SIGHTBLASTER,Sight Blaster
|
||||
1006,0,6,4,3,0,1,1,1,yes,0,0x40001,0,magic,3,0x20, WZ_SIGHTBLASTER,Sight Blaster
|
||||
1007,0,6,4,0,0x1,0,1,0,no,0,0x1,0,none,0,0x0, SA_CREATECON,Create Elemental Converter
|
||||
1008,9,6,1,1,0x1,0,1,1,yes,0,0x1,0,magic,0,0x0, SA_ELEMENTWATER,Elemental Change Water
|
||||
1009,-9,6,1,0,0,0,1,1,no,0,0x1,0,weapon,3,0x0, HT_PHANTASMIC,Phantasmic Arrow
|
||||
@ -894,7 +895,7 @@
|
||||
2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3,0x0, RK_WINDCUTTER,Wind Cutter
|
||||
2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0, RK_IGNITIONBREAK,Ignition Break
|
||||
2007,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, RK_DRAGONTRAINING,Dragon Training
|
||||
2008,9,6,2,3,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2008,9,6,2,3,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0x40000,0,weapon,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,0x0, RK_DRAGONHOWLING,Dragon Howling
|
||||
2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RK_RUNEMASTERY,Rune Mastery
|
||||
2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, RK_MILLENNIUMSHIELD,Millenium Shield
|
||||
@ -903,7 +904,7 @@
|
||||
2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_GIANTGROWTH,Giant Growth
|
||||
2015,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_STONEHARDSKIN,Stone Hard Skin
|
||||
2016,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_VITALITYACTIVATION,Vitality Activation
|
||||
2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,0x0, RK_STORMBLAST,Storm Blast
|
||||
2017,0,6,4,-1,0x2,3,1,1,no,0,0x40000,0,weapon,7,0x0, RK_STORMBLAST,Storm Blast
|
||||
2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0, RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
|
||||
2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_ABUNDANCE,Abundance
|
||||
2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RK_PHANTOMTHRUST,Phantom Thrust
|
||||
@ -995,7 +996,7 @@
|
||||
2234,0,6,4,0,0,0,5,1,yes,0,0,0,none,0,0x0, RA_FEARBREEZE,Fear Breeze
|
||||
2235,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_RANGERMAIN,Ranger Main
|
||||
2236,9,8,1,-1,0,0,10,1,yes,0,0,0,weapon,0,0x80, RA_AIMEDBOLT,Aimed Bolt
|
||||
2237,9,6,2,0,0x3,3,1,1,no,0,0,0,none,0,0x2000, RA_DETONATOR,Detonator
|
||||
2237,9,6,2,0,0x3,3,1,1,no,0,0x40000,0,none,0,0x2000, RA_DETONATOR,Detonator
|
||||
2238,3,6,2,0,0x3,2,5,1,no,0,0x80,3,misc,0,0x2000, RA_ELECTRICSHOCKER,Electric Shocker
|
||||
2239,3,6,2,0,0x42,3,5,1,no,0,0x80,3,misc,0,0x2800, RA_CLUSTERBOMB,Cluster Bomb
|
||||
2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, RA_WUGMASTERY,Warg Mastery
|
||||
@ -1004,15 +1005,15 @@
|
||||
2243,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x2000, RA_WUGSTRIKE,Warg Strike
|
||||
2244,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x80, RA_WUGBITE,Warg Bite
|
||||
2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_TOOTHOFWUG,Tooth of Warg
|
||||
2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen
|
||||
2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0x40000,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen
|
||||
2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x42, RA_CAMOUFLAGE,Camouflage
|
||||
2248,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, RA_RESEARCHTRAP,Research Trap
|
||||
2249,3,6,2,3,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_MAGENTATRAP,Magenta Trap
|
||||
2250,3,6,2,1,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_COBALTTRAP,Cobalt Trap
|
||||
2251,3,6,2,2,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_MAIZETRAP,Maize Trap
|
||||
2252,3,6,2,4,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_VERDURETRAP,Verdure Trap
|
||||
2253,3,6,2,3,0x42,2,5,1,no,0,0x80,2,misc,0,0x2800, RA_FIRINGTRAP,Firing Trap
|
||||
2254,3,6,2,1,0x42,2,5,1,no,0,0x80,2,misc,0,0x2800, RA_ICEBOUNDTRAP,Icebound Trap
|
||||
2253,3,6,2,3,0x42,2,5,1,no,0,0x40080,2,misc,0,0x2800, RA_FIRINGTRAP,Firing Trap
|
||||
2254,3,6,2,1,0x42,2,5,1,no,0,0x40080,2,misc,0,0x2800, RA_ICEBOUNDTRAP,Icebound Trap
|
||||
|
||||
//****
|
||||
// NC Mechanic
|
||||
@ -1021,14 +1022,14 @@
|
||||
2257,3,6,1,-1,0,0,3,1,no,0,0,0,weapon,0,0x0, NC_PILEBUNKER,Pile Bunker
|
||||
2258,13,6,1,-1,0x2,1,3,1,no,0,0,0,weapon,0,0x0, NC_VULCANARM,Vulcan Arm
|
||||
2259,7,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0, NC_FLAMELAUNCHER,Flame Launcher
|
||||
2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0,0,weapon,0,0x0, NC_COLDSLOWER,Cold Slower
|
||||
2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0x40000,0,weapon,0,0x0, NC_COLDSLOWER,Cold Slower
|
||||
2261,9:11:13,6,2,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0, NC_ARMSCANNON,Arm Cannon
|
||||
2262,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0, NC_ACCELERATION,Acceleration
|
||||
2263,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, NC_HOVERING,Hovering
|
||||
2264,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0, NC_F_SIDESLIDE,Front-Side Slide
|
||||
2265,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0, NC_B_SIDESLIDE,Back-Side Slide
|
||||
2266,0,0,0,0,0,0,4,0,no,0,0,0,none,0,0x0, NC_MAINFRAME,Mainframe Restructure
|
||||
2267,0,6,4,0,0xCA,2:3:4,3,1,no,0,0,0,weapon,5,0x0, NC_SELFDESTRUCTION,Self Destruction
|
||||
2267,0,6,4,0,0xCA,2:3:4,3,1,no,0,0x40000,0,weapon,5,0x0, NC_SELFDESTRUCTION,Self Destruction
|
||||
2268,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0, NC_SHAPESHIFT,Shape Shift
|
||||
2269,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, NC_EMERGENCYCOOL,Emergency Cool
|
||||
2270,0,6,4,0,0x3,7,1,1,yes,0,0,0,none,0,0x0, NC_INFRAREDSCAN,Infrared Scan
|
||||
@ -1102,7 +1103,7 @@
|
||||
2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0, SR_FALLENEMPIRE,Fallen Empire
|
||||
2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0, SR_TIGERCANNON,Tiger Cannon
|
||||
2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, SR_HELLGATE,Hell Gate
|
||||
2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0, SR_RAMPAGEBLASTER,Rampage Blaster
|
||||
2332,0,6,4,-1,0x2,3,5,1,no,0,0x40000,0,weapon,0,0x0, SR_RAMPAGEBLASTER,Rampage Blaster
|
||||
2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_CRESCENTELBOW,Crescent Elbow
|
||||
2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0, SR_CURSEDCIRCLE,Cursed Circle
|
||||
2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_LIGHTNINGWALK,Lightning Walk
|
||||
@ -1203,7 +1204,7 @@
|
||||
2481,11,6,1,-1,0x2,1:2:3:4:5,5,1,yes,0,0,0,weapon,0,0x0, GN_SPORE_EXPLOSION,Spore Explosion //CHECK Data says its element is set to neutral. Need to confirm.
|
||||
2482,11,6,2,0,0x8,0,5,1,yes,0,0,1,weapon,2,0x0, GN_WALLOFTHORN,Wall of Thorns
|
||||
2483,11,6,2,0,0x3,4,10,1,yes,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED,Crazy Weed
|
||||
2484,0,6,2,2,0x2,2,10,1,no,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED_ATK,Crazy Weed Attack
|
||||
2484,0,6,2,2,0x2,2,10,1,no,0,0x40000,0,weapon,0,0x1, GN_CRAZYWEED_ATK,Crazy Weed Attack
|
||||
2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire
|
||||
2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion
|
||||
2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
|
||||
@ -1313,7 +1314,7 @@
|
||||
5001,1,8,1,-1,0,0,5,3,no,0,0,0,weapon,0,0x0, GC_DARKCROW,Dark Claw
|
||||
5002,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RA_UNLIMIT,Unlimited
|
||||
5003,7,6,1,-1,0x2,4:5:6:7:-1,5,1,no,0,0,0,weapon,0,0x0, GN_ILLUSIONDOPING,Illusion Doping
|
||||
5004,9,6,2,1,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
|
||||
5004,9,6,2,1,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0x40000,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
|
||||
5005,0,6,4,0,0x3,3,1,1,no,0,0,0,none,0,0x0, RK_LUXANIMA,Lux Anima
|
||||
5006,1,6,2,3,0x2,3,5,1,no,0,0,3,misc,0,0x0, NC_MAGMA_ERUPTION,Magma Eruption
|
||||
5007,0,6,4,0,0x3,5:6:7:8:9,5,1,no,0,0,0,none,0,0x0, WM_FRIGG_SONG,Frigg's Song
|
||||
@ -1324,10 +1325,10 @@
|
||||
5012,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, WL_TELEKINESIS_INTENSE,Intense Telekinesis
|
||||
5013,0,6,4,0,0x3,0,5,1,no,0,0,0,none,0,0x0, LG_KINGS_GRACE,King's Grace
|
||||
5014,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, ALL_FULL_THROTTLE,Full Throttle
|
||||
5015,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_FLASHCOMBO_ATK_STEP1,Flash Combo Attack Step 1
|
||||
5016,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_FLASHCOMBO_ATK_STEP2,Flash Combo Attack Step 2
|
||||
5017,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_FLASHCOMBO_ATK_STEP3,Flash Combo Attack Step 3
|
||||
5018,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_FLASHCOMBO_ATK_STEP4,Flash Combo Attack Step 4
|
||||
5015,-2,8,1,-1,0,0,10,-2,no,0,0,0,weapon,0,0x0, SR_FLASHCOMBO_ATK_STEP1,Flash Combo Attack Step 1
|
||||
5016,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0, SR_FLASHCOMBO_ATK_STEP2,Flash Combo Attack Step 2
|
||||
5017,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0, SR_FLASHCOMBO_ATK_STEP3,Flash Combo Attack Step 3
|
||||
5018,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0, SR_FLASHCOMBO_ATK_STEP4,Flash Combo Attack Step 4
|
||||
|
||||
//****
|
||||
// Homunculus S
|
||||
@ -1377,23 +1378,23 @@
|
||||
//****
|
||||
// Mercenary Skill Place holders
|
||||
8201,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0, MS_BASH,Bash
|
||||
8202,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0, MS_MAGNUM,Magnum_Break
|
||||
8202,0,6,4,3,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x0, MS_MAGNUM,Magnum_Break
|
||||
8203,-2,6,1,-1,0x2,1,10,1,no,0,0,0,weapon,1,0x0, MS_BOWLINGBASH,Bowling_Bash
|
||||
8204,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, MS_PARRYING,Parry
|
||||
8205,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0,0x0, MS_REFLECTSHIELD,Shield_Reflect
|
||||
8206,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, MS_BERSERK,Frenzy
|
||||
8207,-9,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x80, MA_DOUBLE,Double_Strafe
|
||||
8208,-9,6,2,-1,0x2,2,10,1,no,0,0x0,0,weapon,2,0x81, MA_SHOWER,Arrow_Shower
|
||||
8208,-9,6,2,-1,0x2,2,10,1,no,0,0x40000,0,weapon,2,0x81, MA_SHOWER,Arrow_Shower
|
||||
8209,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x0, MA_SKIDTRAP,Skid_Trap
|
||||
8210,3,6,2,2,0x40,0,5,1,no,0,0x80,0,misc,0,0x0, MA_LANDMINE,Land_Mine
|
||||
8211,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x0, MA_SANDMAN,Sandman
|
||||
8212,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x0, MA_FREEZINGTRAP,Freezing_Trap
|
||||
8213,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0, MA_REMOVETRAP,Remove_Trap
|
||||
8213,2,6,32,0,0x1,0,1,1,no,0,0x40000,0,misc,0,0x0, MA_REMOVETRAP,Remove_Trap
|
||||
8214,-9,6,1,-1,0x2,0,1,1,no,0,0x1,0,weapon,6,0x80, MA_CHARGEARROW,Arrow_Repel
|
||||
8215,9,8,1,-1,0,2,5,1,yes,0,0,13,weapon,0,0x0, MA_SHARPSHOOTING,Focused_Arrow_Strike
|
||||
8216,-2,8,1,-1,0,0,10,3,no,0,0,0,weapon,0,0x0, ML_PIERCE,Pierce
|
||||
8217,-2,6,1,-1,0x1,0,10,1,no,0,0,0,weapon,3,0x0, ML_BRANDISH,Brandish_Spear
|
||||
8218,5,8,1,-1,0x20,0,5,5,no,0,0,0,weapon,0,0x0, ML_SPIRALPIERCE,Spiral_Pierce
|
||||
8218,5,8,1,-1,0x20,0,5,5,no,0,0x40000,0,weapon,0,0x0, ML_SPIRALPIERCE,Spiral_Pierce
|
||||
8219,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0, ML_DEFENDER,Defending_Aura
|
||||
8220,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, ML_AUTOGUARD,Guard
|
||||
8221,7:8:9:10:11,6,16,0,0x1,0,5,1,yes,0,0x600,0,none,0,0x0, ML_DEVOTION,Sacrifice
|
||||
|
@ -759,7 +759,7 @@
|
||||
2327,0,0,8:9:10:11:12,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,0,0 //SR_SKYNETBLOW
|
||||
2328,0,0,36:40:44:48:52,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_EARTHSHAKER
|
||||
2329,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_FALLENEMPIRE
|
||||
2330,0,0,1:2:3:4:5:6:7:8:9:10,0,0,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_TIGERCANNON
|
||||
2330,0,0,1:2:3:4:5:6:7:8:9:10,-12:-14:-16:-18:-20:-22:-24:-26:-28:-30,-6:-7:-8:-9:-10:-11:-12:-13:-14:-15,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_TIGERCANNON
|
||||
2331,0,0,1,0,-11:-12:-13:-14:-15:-16:-17:-18:-19:-20,0,99,0,0,none,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_HELLGATE
|
||||
2332,0,0,150,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,0,0 //SR_RAMPAGEBLASTER
|
||||
2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CRESCENTELBOW
|
||||
@ -971,10 +971,10 @@
|
||||
5012,0,0,100:150:200:250:300,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,0,0 //WL_TELEKINESIS_INTENSE
|
||||
5013,0,0,200:180:160:140:120,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,0,0 //LG_KINGS_GRACE
|
||||
5014,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,0,0 //ALL_FULL_THROTTLE
|
||||
5015,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,0,0 //SR_FLASHCOMBO_ATK_STEP1 //All 4 steps are using temp req SP values for now.
|
||||
5016,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,0,0 //SR_FLASHCOMBO_ATK_STEP2
|
||||
5017,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,0,0 //SR_FLASHCOMBO_ATK_STEP3
|
||||
5018,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,0,0 //SR_FLASHCOMBO_ATK_STEP4
|
||||
5015,0,0,0,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,0,0 //SR_FLASHCOMBO_ATK_STEP1 //All 4 steps are using temp req SP values for now.
|
||||
5016,0,0,0,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,0,0 //SR_FLASHCOMBO_ATK_STEP2
|
||||
5017,0,0,0,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,0,0 //SR_FLASHCOMBO_ATK_STEP3
|
||||
5018,0,0,0,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,0,0 //SR_FLASHCOMBO_ATK_STEP4
|
||||
|
||||
8001,0,0,13:16:19:22:25,0,0,0,99,0,0,none,0,0,545,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
8002,0,0,20:25:30:35: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,0,0 //HLIF_AVOID
|
||||
|
@ -288,6 +288,9 @@ bonus4 bAddEffOnSkill,sk,eff,n,y; Adds a n/100% chance to cause status eff when
|
||||
ATF_SELF = trigger effect on self
|
||||
ATF_TARGET = trigger effect on target
|
||||
|
||||
bonus2 bComaClass,c,n; Adds a n/100% chance to cause Coma when attacking a target of class c (regardless the type of attack)
|
||||
bonus2 bComaRace,r,n; Adds a n/100% chance to cause Coma when attacking a target of race r (regardless the type of attack)
|
||||
|
||||
bonus2 bWeaponComaEle,e,n; Adds a n/100% chance to cause Coma when attacking a target of element e with a normal attack
|
||||
bonus2 bWeaponComaClass,c,n; Adds a n/100% chance to cause Coma when attacking a target of class c with a normal attack
|
||||
bonus2 bWeaponComaRace,r,n; Adds a n/100% chance to cause Coma when attacking a target of race r with a normal attack
|
||||
@ -332,8 +335,8 @@ bonus bSPDrainValue,n; Heals +n SP with a normal attack
|
||||
bonus2 bSPDrainValueRace,r,n; Heals +n SP when attacking a monster of race r with normal attack
|
||||
bonus2 bSpDrainValueClass,c,n; Heals +n SP when attacking a monster of class c with normal attack
|
||||
|
||||
bonus2 bHPDrainRate,x,n; Adds a x/10% chance to drain n% HP when attacking
|
||||
bonus2 bSPDrainRate,x,n; Adds a x/10% chance to drain n% SP when attacking
|
||||
bonus2 bHPDrainRate,x,n; Adds a x/10% chance to drain n% HP from inflicted damage when attacking
|
||||
bonus2 bSPDrainRate,x,n; Adds a x/10% chance to drain n% SP from inflicted damage when attacking
|
||||
|
||||
HP/SP vanish
|
||||
------------
|
||||
@ -345,19 +348,6 @@ bonus3 bSPVanishRaceRate,r,x,n; Add a x/100% chance of decreasing enemy's SP am
|
||||
|
||||
HP/SP gain
|
||||
------------
|
||||
bonus bHPGainAttack,n; Heals +n HP with a normal attack
|
||||
bonus bSPGainAttack,n; Heals +n SP with a normal attack
|
||||
|
||||
bonus bHPGainAttackRate,n; Heals +n% HP of inflicted damage on every hit when attacking an enemy
|
||||
bonus bSPGainAttackRate,n; Heals +n% SP of inflicted damage on every hit when attacking an enemy
|
||||
bonus2 bHPGainAttackRate,x,n; Has chance x/10% to heals +n% HP of inflicted damage on every hit when attacking an enemy
|
||||
bonus2 bSPGainAttackRate,x,n; Has chance x/10% to heals +n% SP of inflicted damage on every hit when attacking an enemy
|
||||
|
||||
bonus2 bHPGainRaceAttack,r,n; Heals +n HP on every hit when attacking an enemy of race r
|
||||
bonus2 bSPGainRaceAttack,r,n; Heals +n SP on every hit when attacking an enemy of race r
|
||||
bonus2 bHPGainRaceAttackRate,r,n; Heals +n% HP of inflicted damage on every hit when attacking an enemy of race r
|
||||
bonus2 bSPGainRaceAttackRate,r,n; Heals +n% SP of inflicted damage on every hit when attacking an enemy of race r
|
||||
|
||||
bonus bHPGainValue,n; Heals +n HP when killing an enemy with a physical attack
|
||||
bonus bSPGainValue,n; Heals +n SP when killing an enemy with a physical attack
|
||||
bonus2 bSPGainRace,r,n; Heals +n SP when killing an enemy of race r with a physical attack
|
||||
|
@ -2632,7 +2632,7 @@ Currently the max packet size is 0xFFFF (see 'WFIFOSET()' in 'src/common/socket.
|
||||
- cmd : packet identification (0x2b0e)
|
||||
- aid
|
||||
- name
|
||||
- operation_type
|
||||
- operation_type: 1:block account, 2:ban account, 3:unblock account, 4:unban account, 5:changesex, 6:VIP, 7:changecharsex
|
||||
- timediff
|
||||
- val1
|
||||
- val2
|
||||
|
@ -3784,6 +3784,13 @@ by default green
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*showscript "<message>"{,<GID>};
|
||||
|
||||
Makes attached player or GID says a message like shouting a skill name, the message
|
||||
will be seen to everyone around but not in chat window.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*warp "<map name>",<x>,<y>;
|
||||
|
||||
This command will take the invoking character to the specified map, and if
|
||||
@ -4131,6 +4138,20 @@ they will also have their skills reset upon 'changesex'.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*changecharsex({<char_id>});
|
||||
|
||||
This command will change the gender of the attached character. If it
|
||||
was male, it will become female, if it was female, it will become male. The
|
||||
change will be written to the character server, the player will receive the
|
||||
message: "Need disconnection to perform change-sex request..." and the player
|
||||
will be immediately kicked to the login screen. When they log back in, they will
|
||||
be the opposite sex.
|
||||
|
||||
If the character being changed is a Dancer/Gypsy or Bard/Clown class type,
|
||||
the character will also have their skills reset upon 'changecharsex'.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*getexp <base xp>,<job xp>{,<char_id>};
|
||||
|
||||
This command will give the invoking character a specified number of base and job
|
||||
|
@ -751,8 +751,9 @@ SC_SPIRIT ()
|
||||
val1:
|
||||
|
||||
SC_COMA ()
|
||||
desc:
|
||||
val1:
|
||||
desc: Vanish HP to 1 and SP to 0
|
||||
val1: (meaningless)
|
||||
val2: If 1 means do not remove SP
|
||||
|
||||
SC_INTRAVISION ()
|
||||
desc:
|
||||
|
@ -10699,16 +10699,16 @@ function script F_Cat_Hard_Biscuit { //11536
|
||||
heal -100,0;
|
||||
break;
|
||||
case 2:
|
||||
unittalk getcharid(3),"Huuph...! Yucky..! Wa, Water...!!";
|
||||
showscript "Huuph...! Yucky..! Wa, Water...!!";
|
||||
sc_start SC_Stun,3000,0,5000,0;
|
||||
break;
|
||||
case 3:
|
||||
unittalk getcharid(3),"Yeeyuck...!! This is rotten!!";
|
||||
showscript "Yeeyuck...!! This is rotten!!";
|
||||
sc_start SC_POISON,50000,0;
|
||||
break;
|
||||
case 4:
|
||||
specialeffect2 EF_HIT4;
|
||||
unittalk getcharid(3),"Arrrrrgggg...!! Bu, Bu, Bugggggg!!!!!";
|
||||
showscript "Arrrrrgggg...!! Bu, Bu, Bugggggg!!!!!";
|
||||
getitem 11537,1; //Rice_Weevil_Bug
|
||||
break;
|
||||
}
|
||||
@ -10719,32 +10719,32 @@ function script F_Rice_Weevil_Bug { //11537
|
||||
switch (rand(1,6)) {
|
||||
case 1:
|
||||
specialeffect2 EF_POISONHIT;
|
||||
unittalk getcharid(3),"Errrgg!!! This is so... bitter....!!";
|
||||
showscript "Errrgg!!! This is so... bitter....!!";
|
||||
heal 0,-50;
|
||||
break;
|
||||
case 2:
|
||||
specialeffect2 EF_HEAL;
|
||||
unittalk getcharid(3),"....well, at least this is good for my health.";
|
||||
showscript "....well, at least this is good for my health.";
|
||||
percentheal 15,0;
|
||||
break;
|
||||
case 3:
|
||||
specialeffect2 EF_POISONHIT;
|
||||
unittalk getcharid(3),"Phewphew!! Argh.... Is this poisoned or what?!";
|
||||
showscript "Phewphew!! Argh.... Is this poisoned or what?!";
|
||||
heal 0,-100;
|
||||
break;
|
||||
case 4:
|
||||
specialeffect2 EF_POISONHIT;
|
||||
unittalk getcharid(3),"Whasdfhwkljhrtklwert....!!";
|
||||
showscript "Whasdfhwkljhrtklwert....!!";
|
||||
heal 0,-200;
|
||||
break;
|
||||
case 5:
|
||||
specialeffect2 EF_HEAL;
|
||||
unittalk getcharid(3),"It's ok, no one saw me yet...";
|
||||
showscript "It's ok, no one saw me yet...";
|
||||
percentheal 10,0;
|
||||
break;
|
||||
case 6:
|
||||
specialeffect2 EF_HEAL;
|
||||
unittalk getcharid(3),"I really need something to eat... ?? Sorry, little buggy.";
|
||||
showscript "I really need something to eat... ?? Sorry, little buggy.";
|
||||
percentheal 5,0;
|
||||
break;
|
||||
}
|
||||
|
@ -513,7 +513,7 @@ REPLACE INTO `item_db` VALUES (1128,'Hae_Dong_Gum_','Haedonggum',5,50000,NULL,90
|
||||
REPLACE INTO `item_db` VALUES (1129,'Flamberge','Flamberge',5,60000,NULL,1500,150,NULL,1,0,0x00004080,7,2,2,3,27,1,2,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1130,'Nagan','Nagan',5,20,NULL,500,120,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1131,'Ice_Falchon','Ice Falchion',5,20,NULL,600,100,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1132,'Edge','Edge',5,20,NULL,700,115,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaClass,Class_Normal,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1132,'Edge','Edge',5,20,NULL,700,115,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus2 bAddEff,Eff_Curse,30; bonus2 bComaClass,Class_Normal,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1133,'Fire_Brand','Fireblend',5,20,NULL,500,100,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1134,'Scissores_Sword','Caesar\'s Sword',5,20,NULL,700,140,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus2 bAddRace,RC_Plant,25; bonus bIgnoreDefRace,RC_Plant;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1135,'Cutlas','Cutlus',5,20,NULL,900,150,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL);
|
||||
@ -691,11 +691,11 @@ REPLACE INTO `item_db` VALUES (1361,'Two_Handed_Axe_','Two-Handed Axe',5,55000,N
|
||||
REPLACE INTO `item_db` VALUES (1362,'Two_Handed_Axe__','Two-Handed Axe',5,55000,NULL,2500,185,NULL,1,0,0x000444A2,7,2,34,3,30,1,7,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1363,'Brood_Axe','Bloody Axe',5,20,NULL,4000,170,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bStr,10; bonus bSpeedRate,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1364,'Great_Axe','Great Axe',5,20,NULL,1800,187,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,1500;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1365,'Sabbath','Sabbath',5,20,NULL,2300,120,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Dark; bonus2 bWeaponComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1365,'Sabbath','Sabbath',5,20,NULL,2300,120,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Dark; bonus2 bComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1366,'Right_Epsilon','Light Epsilon',5,20,NULL,2300,180,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1367,'Slaughter','Slaughter',5,20,NULL,2500,120,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bWeaponComaRace,RC_Brute,40;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1367,'Slaughter','Slaughter',5,20,NULL,2500,120,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bComaRace,RC_Brute,40;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1368,'Tomahawk','Tomahawk',5,20,NULL,2500,165,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Wind; skill "ITM_TOMAHAWK",1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1369,'Guillotine','Guillotine',5,20,NULL,3000,215,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bWeaponComaRace,RC_Player,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRaceAttack,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1369,'Guillotine','Guillotine',5,20,NULL,3000,215,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus2 bComaRace,RC_DemiHuman,30; bonus2 bComaRace,RC_Player,30; bonus2 bSPDrainValueRace,RC_DemiHuman,2; bonus2 bSPDrainValueRace,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1370,'Doom_Slayer','Doom Slayer',5,20,NULL,6000,10,NULL,1,0,0x000444A2,7,2,34,4,80,1,7,'bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1371,'Doom_Slayer_','Doom Slayer',5,20,NULL,6000,10,NULL,1,1,0x000444A2,7,2,34,4,80,1,7,'bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1372,'Right_Epsilon_C','Light Epsilon',5,1,NULL,0,229,NULL,1,0,0x000444A2,7,2,34,4,1,0,7,'bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; bonus bStr,10; bonus bSpeedRate,25;',NULL,NULL);
|
||||
@ -817,7 +817,7 @@ REPLACE INTO `item_db` VALUES (1522,'Stunner','Stunner',5,60000,NULL,2000,140,NU
|
||||
REPLACE INTO `item_db` VALUES (1523,'Spike','Spike',5,20,NULL,700,85,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1524,'Golden_Mace','Golden Mace',5,20,NULL,800,110,NULL,1,1,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1525,'Long_Mace','Long Mace',5,20,NULL,800,135,NULL,3,0,0x00008110,7,2,2,4,40,1,8,'bonus bLongAtkDef,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1526,'Slash','Slash',5,20,NULL,1000,145,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,15; bonus2 bWeaponComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1526,'Slash','Slash',5,20,NULL,1000,145,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1527,'Quadrille','Quadrille',5,20,NULL,900,165,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1528,'Grand_Cross','Grand Cross',5,20,NULL,1500,140,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1529,'Iron_Driver','Iron Driver',5,20,NULL,3000,155,NULL,2,0,0x00008100,7,2,2,3,78,1,8,NULL,NULL,NULL);
|
||||
@ -856,7 +856,7 @@ REPLACE INTO `item_db` VALUES (1561,'Hardback','Hardcover Book',5,20,NULL,1500,1
|
||||
REPLACE INTO `item_db` VALUES (1562,'Bible_Of_Battlefield','Battlefield Textbook',5,20,NULL,700,110,NULL,1,1,0x00410100,7,2,2,4,80,0,15,'bonus bInt,3; bonus3 bAutoSpell,"AL_BLESSING",3+(getskilllv("AL_BLESSING")>3)*(getskilllv("AL_BLESSING")-3),20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1563,'Diary_Of_Great_Sage_C','Sage\'s Diary',5,1,NULL,0,135,NULL,1,2,0x00410100,7,2,2,3,1,0,15,'bonus bMatkRate,20; bonus bAspdRate,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1564,'Encyclopedia','Encyclopedia',5,20,NULL,2000,110,NULL,1,2,0x00410100,7,2,2,3,70,1,15,'bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10);',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1565,'Death_Note','Ledger of Death',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1565,'Death_Note','Ledger of Death',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1566,'Diary_Of_Great_Basil','Diary Of Great Basil',5,20,NULL,0,120,NULL,1,0,0x00410100,7,2,2,1,0,0,15,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1567,'Hardback_C','Refined Hardcover Book',5,1,NULL,0,168,NULL,1,0,0x00410100,7,2,2,4,0,0,15,'bonus bStr,5; bonus bDex,2; bonus bMatkRate,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1568,'Book_Of_Billows_','Book of Billows',5,35000,NULL,750,90,NULL,1,3,0x00410100,7,2,2,3,27,1,15,'bonus bAtkEle,Ele_Water;',NULL,NULL);
|
||||
@ -870,7 +870,7 @@ REPLACE INTO `item_db` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book',5
|
||||
REPLACE INTO `item_db` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1578,'Book_Of_Prayer','Book Of Prayer',5,20,NULL,0,140,NULL,1,0,0x00410100,7,2,2,3,0,0,15,'bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1580,'Encyclopedia_C','Giant Encyclopedia',5,0,NULL,0,145,NULL,1,0,0x00410100,7,2,2,3,0,0,15,'bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1581,'F_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,135,NULL,1,2,0x00410100,7,2,2,3,1,0,15,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1582,'E_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,135,NULL,1,2,0x00410100,7,2,2,3,1,0,15,NULL,NULL,NULL);
|
||||
@ -1448,7 +1448,7 @@ REPLACE INTO `item_db` VALUES (2550,'Fisher\'s_Muffler','Fisher\'s Muffler',4,20
|
||||
REPLACE INTO `item_db` VALUES (2551,'Rider_Insignia_M','Crest of the Rider',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,2,2,4,NULL,55,1,0,'bonus bAgi,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2552,'Mithril_Magic_Cape_M','Mithril Magic Manteau',4,20,NULL,400,NULL,3,NULL,1,0x00098B1C,2,2,4,NULL,70,1,0,'bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",6,200,BF_MAGIC,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2553,'Dragon_Manteau','Dragon Manteau',4,20,NULL,1000,NULL,5,NULL,1,0xFFFFFFFE,2,2,4,NULL,0,1,0,'bonus bAgi,1; bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2554,'Piece_Of_Angent_Skin','Nydhorgg\'s Shadow Garb',4,20,NULL,400,NULL,5,NULL,1,0xFFFFFFFE,2,2,4,NULL,90,1,0,'bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPGainAttackRate,100,1; bonus bMdef,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2554,'Piece_Of_Angent_Skin','Nydhorgg\'s Shadow Garb',4,20,NULL,400,NULL,5,NULL,1,0xFFFFFFFE,2,2,4,NULL,90,1,0,'bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPDrainRate,10,1; bonus bMdef,3;',NULL,NULL);
|
||||
# Accessories
|
||||
#===================================================================
|
||||
REPLACE INTO `item_db` VALUES (2601,'Ring','Ring',4,30000,NULL,100,NULL,0,NULL,0,0xFFFFFFFE,7,2,136,NULL,20,0,0,'bonus bStr,2;',NULL,NULL);
|
||||
@ -1828,7 +1828,7 @@ REPLACE INTO `item_db` VALUES (4168,'Dark_Lord_Card','Dark Lord Card',6,20,NULL,
|
||||
REPLACE INTO `item_db` VALUES (4169,'Dark_Illusion_Card','Dark Illusion Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bMaxHPrate,-10; bonus bMaxSPrate,-10; bonus bCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4170,'Dark_Frame_Card','Dark Frame Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Stone,600;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4171,'Dark_Priest_Card','Dark Priest Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPVanishRate,50,10; if(BaseJob==Job_Sage) bonus bSPDrainValue,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4172,'The_Paper_Card','The Paper Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,20; bonus bSPGainAttack,-1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4172,'The_Paper_Card','The Paper Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,20; bonus bSPDrainValue,-1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4173,'Demon_Pungus_Card','Demon Pungus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Sleep,600;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4174,'Deviling_Card','Deviling Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,50; bonus2 bSubEle,Ele_Water,-50; bonus2 bSubEle,Ele_Earth,-50; bonus2 bSubEle,Ele_Fire,-50; bonus2 bSubEle,Ele_Wind,-50; bonus2 bSubEle,Ele_Poison,-50; bonus2 bSubEle,Ele_Holy,-50; bonus2 bSubEle,Ele_Dark,-50; bonus2 bSubEle,Ele_Ghost,-50; bonus2 bSubEle,Ele_Undead,-50;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4175,'Poison_Toad_Card','Poisonous Toad Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"TF_POISON",1,20; bonus2 bAddSkillBlow,52,5;',NULL,NULL);
|
||||
@ -1932,12 +1932,12 @@ REPLACE INTO `item_db` VALUES (4272,'Dancing_Dragon_Card','Zhu Po Long Card',6,2
|
||||
REPLACE INTO `item_db` VALUES (4273,'Shellfish_Card','Shell Fish Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1073,30;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4274,'Zombie_Master_Card','Zombie Master Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_Undead,5;',NULL,'heal 0,-5;');
|
||||
REPLACE INTO `item_db` VALUES (4275,'Zombie_Prisoner_Card','Zombie Prisoner Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Undead,-20; bonus2 bExpAddRace,RC_Undead,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4276,'Lord_Of_Death_Card','Lord of The Dead Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bWeaponComaClass,Class_Normal,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4276,'Lord_Of_Death_Card','Lord of The Dead Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bComaClass,Class_Normal,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4277,'Zherlthsh_Card','Zealotus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bLuk,2; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; bonus2 bSkillAtk,"DC_THROWARROW",10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4278,'Gibbet_Card','Gibbet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'if(getrefine()<6) bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4279,'Deleter_Card','Earth Deleter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,-100; bonus bSPGainValue,10;',NULL,'heal 0,-100;');
|
||||
REPLACE INTO `item_db` VALUES (4280,'Geographer_Card','Geographer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPGainAttack,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4282,'Tengu_Card','Tengu Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItemGroup,IG_Recovery,600;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4283,'Greatest_General_Card','Greatest General Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte);',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4284,'Chepet_Card','Chepet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus4 bAutoSpell,"AL_HEAL",5,50,1;',NULL,NULL);
|
||||
@ -5503,7 +5503,7 @@ REPLACE INTO `item_db` VALUES (13309,'Huuma_Giant_Wheel_C','Huuma Giant Wheel Sh
|
||||
REPLACE INTO `item_db` VALUES (13400,'Cutlas_','Cutlus',5,20,NULL,900,150,NULL,1,1,0x000654E2,7,2,2,4,40,1,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (13401,'Excalibur_C','Excalibur',5,1,NULL,0,199,NULL,1,0,0x000654E2,7,2,2,4,1,0,2,'bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (13402,'Cutlas_C','Cutlus',5,2,NULL,0,185,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (13403,'Solar_Sword_C','Solar Sword',5,2,NULL,0,120,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'bonus bAtkEle,Ele_Fire; bonus bHPGainAttackRate,1; bonus2 bSPLossRate,15,10000;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (13403,'Solar_Sword_C','Solar Sword',5,2,NULL,0,120,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'bonus bAtkEle,Ele_Fire; bonus bHPDrainRate,1; bonus2 bSPLossRate,15,10000;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (13404,'Platinum_Shotel','Platinum Shotel',5,20,NULL,1500,130,NULL,1,1,0x000654E2,7,2,2,4,55,1,2,'bonus bCritical,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (13405,'Curved_Sword','Curved Sword',5,20,NULL,800,125,NULL,1,2,0x000654E2,7,2,2,4,55,1,2,'bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (13406,'Edger','Edger',5,20,NULL,0,120,NULL,1,0,0x000654E2,7,2,2,1,0,0,2,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
|
||||
|
@ -196,11 +196,11 @@ REPLACE INTO `item_db_re` VALUES (667,'Gift_Box_4','Gift Box',2,1000,NULL,200,NU
|
||||
REPLACE INTO `item_db_re` VALUES (668,'Handsei','Red Envelope',2,0,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'set Zeny,Zeny+rand(1000,10000);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (669,'Rice_Cake_Soup','Tempting Rice-Cake Soup',0,500,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal -100,-100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (670,'Gold_Coin_Moneybag','Bag of Gold Coins',3,100000,NULL,400,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (671,'Gold_Coin','Gold Coin',3,10000,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*goldpoint++; (For Roulette game)*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (671,'Gold_Coin','Gold Coin',2,10000,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'RouletteGold++;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (672,'Copper_Coin_Moneybag','Bag of Bronze Coins',3,1000,NULL,400,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (673,'Copper_Coin','Bronze Coin',3,100,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (673,'Copper_Coin','Bronze Coin',2,100,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'RouletteBronze++;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (674,'Mithril_Coin','Mithril Coin',3,5000,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (675,'Silver_Coin','Silver Coin',3,5000,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*silverpoint++; (For Roulette game)*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (675,'Silver_Coin','Silver Coin',2,5000,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'RouletteSilver++;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (676,'Silver_Coin_Moneybag','Bag of Silver Coins',3,50000,NULL,400,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (677,'White_Gold_Coin','Platinum Coin',3,2000,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (678,'Poison_Bottle','Poison Bottle',2,5000,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'if(Class == Job_Assassin_Cross || Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T) { sc_start SC_DPOISON,60000,0; sc_start SC_ASPDPOTION3,60000,9; } else percentheal -100,-100;',NULL,NULL);
|
||||
@ -514,7 +514,7 @@ REPLACE INTO `item_db_re` VALUES (1128,'Hae_Dong_Gum_','Haedonggum',5,50000,NULL
|
||||
REPLACE INTO `item_db_re` VALUES (1129,'Flamberge','Flamberge',5,60000,NULL,1500,'150',NULL,1,0,0x00004080,63,2,2,3,'27',1,2,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1130,'Nagan','Nagan',5,20,NULL,500,'120',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1131,'Ice_Falchon','Ice Falchion',5,20,NULL,600,'100',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1132,'Edge','Edge',5,20,NULL,700,'115',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaClass,Class_Normal,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1132,'Edge','Edge',5,20,NULL,700,'115',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus2 bAddEff,Eff_Curse,30; bonus2 bComaClass,Class_Normal,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1133,'Fire_Brand','Fireblend',5,20,NULL,500,'100',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1134,'Scissores_Sword','Caesar\'s Sword',5,20,NULL,700,'140',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus2 bAddRace,RC_Plant,25; bonus bIgnoreDefRace,RC_Plant;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1135,'Cutlas','Cutlus',5,20,NULL,900,'150',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL);
|
||||
@ -718,11 +718,11 @@ REPLACE INTO `item_db_re` VALUES (1361,'Two_Handed_Axe_','Two-Handed Axe',5,5500
|
||||
REPLACE INTO `item_db_re` VALUES (1362,'Two_Handed_Axe__','Two-Handed Axe',5,55000,NULL,2500,'185',NULL,1,0,0x000444A2,63,2,34,3,'30',1,7,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1363,'Brood_Axe','Bloody Axe',5,20,NULL,4000,'170',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus bStr,10; bonus bSpeedRate,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1364,'Great_Axe','Great Axe',5,20,NULL,1800,'187',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,1500;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1365,'Sabbath','Sabbath',5,20,NULL,2300,'120',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus bAtkEle,Ele_Dark; bonus2 bWeaponComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1365,'Sabbath','Sabbath',5,20,NULL,2300,'120',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus bAtkEle,Ele_Dark; bonus2 bComaRace,RC_Demon,50; bonus2 bCriticalAddRace,RC_Undead,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1366,'Right_Epsilon','Light Epsilon',5,20,NULL,2300,'180',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1367,'Slaughter','Slaughter',5,20,NULL,2500,'120',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bWeaponComaRace,RC_Brute,40;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1367,'Slaughter','Slaughter',5,20,NULL,2500,'120',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bComaRace,RC_Brute,40;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1368,'Tomahawk','Tomahawk',5,20,NULL,2500,'165',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus bAtkEle,Ele_Wind; skill "ITM_TOMAHAWK",1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1369,'Guillotine','Guillotine',5,20,NULL,3000,'215',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bWeaponComaRace,RC_Player,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRaceAttack,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1369,'Guillotine','Guillotine',5,20,NULL,3000,'215',NULL,1,0,0x000444A2,63,2,34,4,'44',1,7,'bonus2 bComaRace,RC_DemiHuman,30; bonus2 bComaRace,RC_Player,30; bonus2 bSPDrainValueRace,RC_DemiHuman,2; bonus2 bSPDrainValueRace,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1370,'Doom_Slayer','Doom Slayer',5,20,NULL,6000,'10',NULL,1,0,0x000444A2,63,2,34,4,'80',1,7,'bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1371,'Doom_Slayer_','Doom Slayer',5,20,NULL,6000,'10',NULL,1,1,0x000444A2,63,2,34,4,'80',1,7,'bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1372,'Right_Epsilon_C','Light Epsilon',5,1,NULL,0,'229',NULL,1,0,0x000444A2,63,2,34,4,'1',0,7,'bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; bonus bStr,10; bonus bSpeedRate,25; /*Gold PC Room: bonus bBaseAtk,10; bonus bMatk,10; */',NULL,NULL);
|
||||
@ -867,7 +867,7 @@ REPLACE INTO `item_db_re` VALUES (1522,'Stunner','Stunner',5,60000,NULL,2000,'14
|
||||
REPLACE INTO `item_db_re` VALUES (1523,'Spike','Spike',5,20,NULL,700,'85',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1524,'Golden_Mace','Golden Mace',5,20,NULL,800,'110',NULL,1,1,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1525,'Long_Mace','Long Mace',5,20,NULL,800,'135',NULL,3,0,0x00008110,63,2,2,4,'40',1,8,'bonus bLongAtkDef,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1526,'Slash','Slash',5,20,NULL,1000,'145',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,15; bonus2 bWeaponComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1526,'Slash','Slash',5,20,NULL,1000,'145',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1527,'Quadrille','Quadrille',5,20,NULL,900,'165',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1528,'Grand_Cross','Grand Cross',5,20,NULL,1500,'140',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1529,'Iron_Driver','Iron Driver',5,20,NULL,3000,'155',NULL,2,0,0x00008100,63,2,2,3,'78',1,8,NULL,NULL,NULL);
|
||||
@ -907,7 +907,7 @@ REPLACE INTO `item_db_re` VALUES (1561,'Hardback','Hardcover Book',5,20,NULL,150
|
||||
REPLACE INTO `item_db_re` VALUES (1562,'Bible_Of_Battlefield','Battlefield Textbook',5,20,NULL,700,'110',NULL,1,1,0x00410100,63,2,2,4,'80',0,15,'bonus bInt,3; bonus3 bAutoSpell,"AL_BLESSING",3+(getskilllv("AL_BLESSING")>3)*(getskilllv("AL_BLESSING")-3),20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1563,'Diary_Of_Great_Sage_C','Sage\'s Diary',5,1,NULL,0,'135',NULL,1,0,0x00410100,63,2,2,3,'1',0,15,'bonus bMatk,140; bonus bAspdRate,5; /*Gold PC Room: bonus bBaseAtk,10; bonus bMatk,10;*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1564,'Encyclopedia','Encyclopedia',5,20,NULL,2000,'110:100',NULL,1,2,0x00410100,63,2,2,3,'70',1,15,'bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1565,'Death_Note','Ledger of Death',5,20,NULL,1000,'137:100',NULL,1,2,0x00410100,63,2,2,4,'85',1,15,'bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1565,'Death_Note','Ledger of Death',5,20,NULL,1000,'137:100',NULL,1,2,0x00410100,63,2,2,4,'85',1,15,'bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1566,'Diary_Of_Great_Basil','Diary Of Great Basil',5,20,NULL,0,'120:125',NULL,1,0,0x00410100,63,2,2,1,'0',0,15,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1567,'Hardback_C','Refined Hardcover Book',5,1,NULL,0,'168:100',NULL,1,0,0x00410100,63,2,2,4,'0',0,15,'bonus bStr,5; bonus bDex,2; bonus bMatkRate,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1568,'Book_Of_Billows_','Book of Billows',5,35000,NULL,750,'90',NULL,1,3,0x00410100,63,2,2,3,'27',1,15,'bonus bAtkEle,Ele_Water;',NULL,NULL);
|
||||
@ -921,7 +921,7 @@ REPLACE INTO `item_db_re` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book
|
||||
REPLACE INTO `item_db_re` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,'90:115',NULL,1,0,0x00410100,63,2,2,4,'80',1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(((.@r>14)?14:.@r)-4,2); bonus2 bAddRace,RC_Player,pow(((.@r>14)?14:.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,'90:115',NULL,1,0,0x00410100,63,2,2,4,'80',1,15,'bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; .@r = getrefine(); if(.@r>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(.@r>8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1578,'Book_Of_Prayer','Book Of Prayer',5,20,NULL,0,'140',NULL,1,0,0x00410100,63,2,2,3,'0',0,15,'bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,'137',NULL,1,2,0x00410100,63,2,2,4,'85',1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,'137',NULL,1,2,0x00410100,63,2,2,4,'85',1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1580,'Encyclopedia_C','Giant Encyclopedia',5,0,NULL,0,'145:100',NULL,1,0,0x00410100,63,2,2,3,'0',0,15,'bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1581,'F_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,'135',NULL,1,2,0x00410100,63,2,2,3,'1',0,15,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (1582,'E_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,'135',NULL,1,2,0x00410100,63,2,2,3,'1',0,15,NULL,NULL,NULL);
|
||||
@ -1671,7 +1671,7 @@ REPLACE INTO `item_db_re` VALUES (2550,'Fisher\'s_Muffler','Fisher\'s Muffler',4
|
||||
REPLACE INTO `item_db_re` VALUES (2551,'Rider_Insignia_M','Crest of the Rider',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,18,2,4,NULL,'55',1,0,'bonus bAgi,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2552,'Mithril_Magic_Cape_M','Mithril Magic Manteau',4,20,NULL,400,NULL,3,NULL,1,0x00098B1C,18,2,4,NULL,'70',1,0,'bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",6,200,BF_MAGIC,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2553,'Dragon_Manteau','Dragon Manteau',4,20,NULL,1000,NULL,14,NULL,1,0xFFFFFFFE,18,2,4,NULL,'0',1,0,'bonus bAgi,1; bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2554,'Piece_Of_Angent_Skin','Nydhorgg\'s Shadow Garb',4,20,NULL,400,NULL,25,NULL,1,0xFFFFFFFE,18,2,4,NULL,'90',1,0,'bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPGainAttackRate,100,1; bonus bMdef,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2554,'Piece_Of_Angent_Skin','Nydhorgg\'s Shadow Garb',4,20,NULL,400,NULL,25,NULL,1,0xFFFFFFFE,18,2,4,NULL,'90',1,0,'bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPDrainRate,10,1; bonus bMdef,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2555,'Freyja_SScarf7','Freyja Soul Scarf',4,20,NULL,400,NULL,4,NULL,0,0xFFFFFFFF,63,2,4,NULL,'20',0,0,'bonus bFlee,15; bonus2 bSubEle,Ele_Neutral,15;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2556,'Freyja_SScarf30','Freyja Soul Scarf',4,20,NULL,400,NULL,4,NULL,0,0xFFFFFFFF,63,2,4,NULL,'20',0,0,'bonus bFlee,15; bonus2 bSubEle,Ele_Neutral,15;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2557,'Freyja_SScarf60','Freyja Soul Scarf',4,20,NULL,400,NULL,4,NULL,0,0xFFFFFFFF,63,2,4,NULL,'20',0,0,'bonus bFlee,15; bonus2 bSubEle,Ele_Neutral,15;',NULL,NULL);
|
||||
@ -2256,7 +2256,7 @@ REPLACE INTO `item_db_re` VALUES (4168,'Dark_Lord_Card','Dark Lord Card',6,20,NU
|
||||
REPLACE INTO `item_db_re` VALUES (4169,'Dark_Illusion_Card','Dark Illusion Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bMaxHPrate,-10; bonus bMaxSPrate,-10; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4170,'Dark_Frame_Card','Dark Frame Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Stone,600;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4171,'Dark_Priest_Card','Dark Priest Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPVanishRate,50,10; if(BaseJob==Job_Sage) bonus bSPDrainValue,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4172,'The_Paper_Card','The Paper Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,20; bonus bSPGainAttack,-1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4172,'The_Paper_Card','The Paper Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,20; bonus bSPDrainValue,-1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4173,'Demon_Pungus_Card','Demon Pungus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Sleep,600;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4174,'Deviling_Card','Deviling Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,50; bonus2 bSubEle,Ele_Water,-50; bonus2 bSubEle,Ele_Earth,-50; bonus2 bSubEle,Ele_Fire,-50; bonus2 bSubEle,Ele_Wind,-50; bonus2 bSubEle,Ele_Poison,-50; bonus2 bSubEle,Ele_Holy,-50; bonus2 bSubEle,Ele_Dark,-50; bonus2 bSubEle,Ele_Ghost,-50; bonus2 bSubEle,Ele_Undead,-50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4175,'Poison_Toad_Card','Poisonous Toad Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"TF_POISON",1,20; bonus2 bAddSkillBlow,52,5;',NULL,NULL);
|
||||
@ -2360,12 +2360,12 @@ REPLACE INTO `item_db_re` VALUES (4272,'Dancing_Dragon_Card','Zhu Po Long Card',
|
||||
REPLACE INTO `item_db_re` VALUES (4273,'Shellfish_Card','Shell Fish Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1073,30;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4274,'Zombie_Master_Card','Zombie Master Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_Undead,5;',NULL,'heal 0,-5;');
|
||||
REPLACE INTO `item_db_re` VALUES (4275,'Zombie_Prisoner_Card','Zombie Prisoner Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Undead,-20; bonus2 bExpAddRace,RC_Undead,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4276,'Lord_Of_Death_Card','Lord of The Dead Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bWeaponComaClass,Class_Normal,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4276,'Lord_Of_Death_Card','Lord of The Dead Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bComaClass,Class_Normal,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4277,'Zherlthsh_Card','Zealotus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bLuk,2; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; bonus2 bSkillAtk,"DC_THROWARROW",10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4278,'Gibbet_Card','Gibbet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'if(getrefine()<6) bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4279,'Deleter_Card','Earth Deleter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,-100; bonus bSPGainValue,10;',NULL,'heal 0,-100;');
|
||||
REPLACE INTO `item_db_re` VALUES (4280,'Geographer_Card','Geographer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPGainAttack,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4282,'Tengu_Card','Tengu Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItemGroup,IG_Recovery,600;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4283,'Greatest_General_Card','Greatest General Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4284,'Chepet_Card','Chepet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus4 bAutoSpell,"AL_HEAL",5,50,1;',NULL,NULL);
|
||||
@ -2623,7 +2623,7 @@ REPLACE INTO `item_db_re` VALUES (4536,'Sealed_Atroce_Card','Sealed Atroce Card'
|
||||
REPLACE INTO `item_db_re` VALUES (4537,'Sealed_Phreeoni_Card','Sealed Phreeoni Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bHit,((getrefine()>14)?75:50);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4538,'Sealed_Bacsojin_Card','Sealed White Lady Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'if (getrefine()>14) { bonus bHealPower,25; bonus bUseSPrate,20; } else { bonus bHealPower,15; bonus bUseSPrate,30; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4539,'Sealed_F_Bishop_Card','Sealed Fallen Bishop Hibram Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'.@r = getrefine(); bonus bMatkRate,((.@r>14)?8:5); bonus bMaxSPrate,-50; set .@rate,((.@r>14)?33:25); bonus2 bMagicAddRace,RC_Angel,.@rate; bonus2 bMagicAddRace,RC_DemiHuman,.@rate; bonus2 bMagicAddRace,RC_Player,.@rate;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4540,'SLD_Lord_Of_Death_Card','Sealed Lord of The Dead Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'set .@rate, ((getrefine()>14)?350:250); bonus3 bAddEff,Eff_Stun,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Curse,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Silence,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Poison,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,.@rate,ATF_SHORT; bonus2 bWeaponComaClass,Class_Normal,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4540,'SLD_Lord_Of_Death_Card','Sealed Lord of The Dead Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'set .@rate, ((getrefine()>14)?350:250); bonus3 bAddEff,Eff_Stun,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Curse,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Silence,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Poison,.@rate,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,.@rate,ATF_SHORT; bonus2 bComaClass,Class_Normal,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4541,'SLD_B_Katrinn_Card','Sealed High Wizard Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bIgnoreMdefClassRate,Class_Normal,100; .@r = getrefine(); if (.@r>14) { bonus bVariableCastrate,120; bonus bSPrecovRate,-120; } else { bonus bVariableCastrate,150; bonus bSPrecovRate,-150; }',NULL,'heal 0,((.@r>14)?-2000:-3000);');
|
||||
REPLACE INTO `item_db_re` VALUES (4542,'SLD_Detale_Card','Sealed Detale Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4543,'SLD_Garm_Card','Sealed Hatii Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Freeze,((getrefine()>14)?4000:2500);',NULL,NULL);
|
||||
@ -3442,7 +3442,7 @@ REPLACE INTO `item_db_re` VALUES (5493,'Ulle_Cap_I','Ulle\'s Cap',4,0,NULL,0,NUL
|
||||
REPLACE INTO `item_db_re` VALUES (5494,'Spinx_Helm_I','Sphinx Hat',4,0,NULL,0,NULL,5,NULL,0,0x00004082,63,2,257,NULL,'0',0,137,'bonus bStr,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5495,'Power_Of_Thor','Power Of Thor',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,493,'bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5496,'Dice_Hat','Dice Hat',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'50',0,494,'bonus bLuk,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5497,'King_Tiger_Doll_Hat','King Tiger Doll Hat',4,20,NULL,400,NULL,6,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,495,'bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; bonus2 bMagicAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5497,'King_Tiger_Doll_Hat','King Tiger Doll Hat',4,20,NULL,400,NULL,6,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,495,'bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; bonus2 bMagicAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \\\"Eddga Power !\\\"; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \\\"Eddga Power !\\\"; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5498,'Wondering_Wolf_Helm','Wandering Wolf Helm',4,20,NULL,600,NULL,5,NULL,1,0xFFFFFFFE,63,2,768,NULL,'1',0,490,'bonus bAgi,5; bonus bFlee,10; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Brute,10; if(getrefine()>=7){ bonus2 bAddEff,Eff_Bleeding,10; } if(getrefine()>=9){ bonus3 bAutoSpellWhenHit,"MC_LOUD",1,1; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5499,'Pizza_Hat','Pizza Hat',4,20,NULL,600,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,487,'skill "SM_PROVOKE",1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5500,'Icecream_Hat','Icecream Hat',4,0,NULL,300,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,488,'bonus bMdef,3; skill "MG_FROSTDIVER",3;',NULL,NULL);
|
||||
@ -5307,6 +5307,7 @@ REPLACE INTO `item_db_re` VALUES (7672,'Relief_Food','Relief Food',3,20,NULL,0,N
|
||||
#
|
||||
REPLACE INTO `item_db_re` VALUES (7674,'Mysterious_Ingredient','Mysterious Ingredient',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (7675,'Mysterious_Doll','Mysterious Doll',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (7676,'Transmission_Coupon','Transmission Coupon',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (7679,'Oneclick_Weapon_7UP','One Click Weapon 7UP',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (7680,'Oneclick_Weapon_9UP','One Click Weapon 9UP',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (7681,'Oneclick_Armor_7UP','One Click Armor 7UP',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
@ -6428,7 +6429,7 @@ REPLACE INTO `item_db_re` VALUES (12535,'Iggdrasilberry_Box','Iggdrasilberry Box
|
||||
REPLACE INTO `item_db_re` VALUES (12536,'NY_Rice_Cake_Soup','NY Rice Cake Soup',2,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12537,'Solo_Gift_Basket','Solo Gift Basket',2,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Solo_Gift_Basket);*/ getitem 597,5; getitem 596,3; getitem 561,3; getitem 573,4; getitem 559,10; getitem 560,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12538,'Couple_Event_Basket','Couple Event Basket',2,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Couple_Event_Basket);*/ getitem 14546,10; getitem 14547,10; getitem 14548,10; getitem 14549,10; getitem 14550,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12539,'Splendid_Box','Splendid Box',2,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12539,'Splendid_Box','Splendid Box',2,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Splendid_Box);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12540,'GM_Warp_Box','GM Warp Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_GM_Warp_Box);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12541,'Fortune_Cookie1','Fortune Cookie1',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Fortune_Cookie1,1);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12542,'Fortune_Cookie2','Fortune Cookie2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Fortune_Cookie2);',NULL,NULL);
|
||||
@ -6545,13 +6546,13 @@ REPLACE INTO `item_db_re` VALUES (12654,'Lucky_Egg_C9','Lucky Egg C9',2,20,NULL,
|
||||
REPLACE INTO `item_db_re` VALUES (12655,'Brain_Powder','Brain Powder',2,2000,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12656,'Magical_Powder','Magical Powder',2,3000,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12657,'Madness_Powder','Madness Powder',2,4000,NULL,300,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12658,'Trans_Scroll_Devi','Transformation Scroll(Deviruchi)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1109,1200000,SC_MTF_ASPD,10,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12659,'Trans_Scroll_Ray_Arch','Transformation Scroll(Raydric)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1276,1200000,SC_MTF_RANGEATK,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12660,'Trans_Scroll_Mavka','Transformation Scroll(Mavka)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1884,1200000,SC_MTF_RANGEATK,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12661,'Trans_Scroll_Marduk','Transformation Scroll(Marduk)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1140,1200000,SC_MTF_MATK,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12662,'Trans_Scroll_Banshee','Transformation Scroll(Banshee)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1867,1200000,SC_MTF_MATK,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12663,'Trans_Scroll_Poring','Transformation Scroll(Poring)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1002,1200000,SC_MTF_CRIDAMAGE,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12664,'Trans_Scroll_Golem','Transformation Scroll(Golem)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1040,1200000,SC_MTF_MLEATKED,5,20,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12658,'Trans_Scroll_Devi','Transformation Scroll(Deviruchi)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1109,1200000,SC_MTF_ASPD,10,5; showscript "Traaaansformation-!! Deviruchi form!!";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12659,'Trans_Scroll_Ray_Arch','Transformation Scroll(Raydric)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1276,1200000,SC_MTF_RANGEATK,25; showscript "Traaaansformation-!! Raydric form!!";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12660,'Trans_Scroll_Mavka','Transformation Scroll(Mavka)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1884,1200000,SC_MTF_RANGEATK,25; showscript "Traaaansformation-!! Mavka form!!";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12661,'Trans_Scroll_Marduk','Transformation Scroll(Marduk)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1140,1200000,SC_MTF_MATK,25; showscript "Traaaansformation-!! Marduk form!!";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12662,'Trans_Scroll_Banshee','Transformation Scroll(Banshee)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1867,1200000,SC_MTF_MATK,25; showscript "Traaaansformation-!! Banshee form!!";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12663,'Trans_Scroll_Poring','Transformation Scroll(Poring)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1002,1200000,SC_MTF_CRIDAMAGE,25; showscript "Traaaansformation-!! Poring form!!";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12664,'Trans_Scroll_Golem','Transformation Scroll(Golem)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1040,1200000,SC_MTF_MLEATKED,5,20,2; showscript "Traaaansformation-!! Golem form!!";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12665,'Grovel_Buff','Grovel Buff',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12666,'Thai_Perfume_MATK','Thai Perfume MATK',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bMatk,24; }",600,0,0,SI_SKF_MATK;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12667,'Thai_Perfume_ATK','Thai Perfume ATK',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bBaseAtk,24; }",600,0,0,SI_SKF_ATK;',NULL,NULL);
|
||||
@ -6684,12 +6685,12 @@ REPLACE INTO `item_db_re` VALUES (12787,'Diabolic_Scroll','Diabolic Scroll',2,20
|
||||
REPLACE INTO `item_db_re` VALUES (12788,'No100_Firecracker','No100 Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12789,'Juicy_Fruit','Juicy Fruit',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12790,'Change_Name_Card','Character Name Change Coupon',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'set CharRename, CharRename + 1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12791,'Combat_Pill','Combat Pill',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,SI_GM_BATTLE;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12791,'Combat_Pill','Combat Pill',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,SI_GM_BATTLE; /* showscript */',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12792,'P_Combat_Pill','P Combat Pill',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; }",60,0,0,SI_GM_BATTLE2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12793,'Combat_Pill_Box10','Combat Pill Box10',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12791,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12794,'P_Combat_Pill_Box10','P Combat Pill Box10',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12792,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12795,'2011_RWC_Scroll_Kr','2011 RWC Scroll Kr',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12796,'Red_Booster','Red Booster',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "AC_CONCENTRATION",(getskilllv(45)<3?3:getskilllv(45));',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12796,'Red_Booster','Red Booster',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "AC_CONCENTRATION",(getskilllv(45)<3?3:getskilllv(45)); specialeffect2 EF_POTION_BERSERK; showscript "Oh My GOODNESS!!! I FEEL AWESOMELY STRONG!!! WOWOW";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12797,'Wish_Maiden_Scroll','Wish Maiden Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'mercenary_create 2344,1800000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12798,'Zealotus_Scroll','Zealotus Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'mercenary_create 2345,1800000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (12799,'PCBang_Coupon_Box5','PCBang Coupon Box5',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
@ -7129,7 +7130,7 @@ REPLACE INTO `item_db_re` VALUES (13323,'Infinity_Shuriken','Infinity Shuriken',
|
||||
REPLACE INTO `item_db_re` VALUES (13400,'Cutlas_','Cutlus',5,20,NULL,900,'150',NULL,1,1,0x000654E2,63,2,2,4,'40',1,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13401,'Excalibur_C','Excalibur',5,1,NULL,0,'199',NULL,1,0,0x000654E2,63,2,2,4,'1',0,2,'bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13402,'Cutlas_C','Cutlus',5,2,NULL,0,'185',NULL,1,0,0x000654E2,63,2,2,4,'0',0,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13403,'Solar_Sword_C','Solar Sword',5,2,NULL,0,'120',NULL,1,0,0x000654E2,63,2,2,4,'0',0,2,'bonus bAtkEle,Ele_Fire; bonus2 bSPLossRate,15,10; bonus bHPGainAttackRate,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13403,'Solar_Sword_C','Solar Sword',5,2,NULL,0,'120',NULL,1,0,0x000654E2,63,2,2,4,'0',0,2,'bonus bAtkEle,Ele_Fire; bonus2 bSPLossRate,15,10; bonus2 bHPDrainRate,1000,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13404,'Platinum_Shotel','Platinum Shotel',5,20,NULL,1500,'130',NULL,1,1,0x000654E2,63,2,2,4,'55',1,2,'bonus bCritical,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13405,'Curved_Sword','Curved Sword',5,20,NULL,800,'125',NULL,1,2,0x000654E2,63,2,2,4,'55',1,2,'bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13406,'Edger','Edger',5,20,NULL,0,'120',NULL,1,0,0x000654E2,63,2,2,1,'0',0,2,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
|
||||
@ -8333,7 +8334,7 @@ REPLACE INTO `item_db_re` VALUES (15121,'Sarah_Combat_Robe','Sarah Combat Robe',
|
||||
REPLACE INTO `item_db_re` VALUES (15123,'Whikebain_Suit','Whikebain Suit',4,0,NULL,900,NULL,56,NULL,1,0x00001000,56,2,16,NULL,'105',1,NULL,'.@r = getrefine(); if (.@r > 7) { bonus bCritAtkRate,6; } else if (.@r > 5) { bonus bCritAtkRate,4; } bonus3 bAutoSpell,"DC_WINKCHARM",1,10; /* Confirm: Success rate */',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (15138,'Aegir_Armor','Aegir Armor',4,10,NULL,1600,NULL,25,NULL,0,0xFFFFFFFF,63,2,16,NULL,'40',1,NULL,'bonus bMaxHP,500; bonus bMaxSP,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (15141,'Ancient_Armor_Of_The_Goddess','Ancient Armor Of The Goddess',4,10,NULL,2000,NULL,55,NULL,0,0xFFFFFFFF,63,2,16,NULL,'100',1,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (15145,'Evil_Dragon_Armor','Evil Dragon Armor',4,0,NULL,4000,NULL,60,NULL,1,0xFFFFFFFF,63,2,16,NULL,NULL,1,NULL,'.@r = getrefine(); if (.@r >= 10 ) { bonus2 bHPGainAttackRate,100,3; bonus2 bSPGainAttackRate,100,5; } else if (.@r >= 9 ) { bonus2 bHPGainAttackRate,100,4; bonus2 bSPGainAttackRate,100,3; } else if (.@r >= 8 ) { bonus2 bHPGainAttackRate,100,6; bonus2 bSPGainAttackRate,100,2; } /* Confirm: Success rate and it says no effect if with Rideword, Vanargandr Helm, or Piece Of Angent Skin */',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (15145,'Evil_Dragon_Armor','Evil Dragon Armor',4,0,NULL,4000,NULL,60,NULL,1,0xFFFFFFFF,63,2,16,NULL,NULL,1,NULL,'.@r = getrefine(); if (.@r >= 10 ) { bonus2 bHPDrainRate,100,3; bonus2 bSPDrainRate,100,5; } else if (.@r >= 9 ) { bonus2 bHPDrainRate,100,4; bonus2 bSPDrainRate,100,3; } else if (.@r >= 8 ) { bonus2 bHPDrainRate,100,6; bonus2 bSPDrainRate,100,2; } /* Confirm: Success rate and it says no effect if with Rideword, Vanargandr Helm, or Piece Of Angent Skin */',NULL,NULL);
|
||||
# More Maces
|
||||
REPLACE INTO `item_db_re` VALUES (16000,'Erde','Erde',5,20,NULL,500,'130',NULL,1,2,0x0004C5B2,18,2,2,3,'50',1,8,'bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus bMaxSP,50; bonus bHealPower,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (16001,'Red_Square_Bag','Red Square Bag',5,20,NULL,500,'130',NULL,1,2,0x0004C5B2,18,2,2,3,'50',1,8,'bonus bMaxHP,200; bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus2 bAddMonsterDropItem,501,50; bonus2 bAddMonsterDropItem,502,20; bonus2 bAddMonsterDropItem,503,20; bonus2 bAddMonsterDropItem,504,20; bonus2 bAddMonsterDropItem,505,10; if(readparam(bStr)>=95) bonus2 bAddEff,Eff_Stun,500;',NULL,NULL);
|
||||
@ -9029,6 +9030,7 @@ REPLACE INTO `item_db_re` VALUES (17552,'Garnet Lucky Egg','Garnet Lucky Egg',18
|
||||
REPLACE INTO `item_db_re` VALUES (17572,'Erzulie_Lucky_Egg','Erzulie Lucky Egg',18,0,NULL,10,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*TODO*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (17584,'Venus_Lucky_Egg','Venus Lucky Egg',18,0,NULL,10,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*TODO*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (17588,'Amora_Lucky_Egg','Amora Lucky Egg',18,0,NULL,10,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*TODO*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (17598,'Sograt_Lucky_Scroll','Sograt Lucky Scroll',18,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",20099,19024,2899,19910),1; /* and others. */',NULL,NULL);
|
||||
# Mechanic/Genetic Cannonballs
|
||||
REPLACE INTO `item_db_re` VALUES (18000,'Cannon_Ball','Cannon Ball',10,100,NULL,10,'100',NULL,NULL,NULL,0x00040400,56,2,32768,NULL,'99',NULL,8,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18001,'Holy_Cannon_Ball','Holy Cannon Ball',10,200,NULL,10,'120',NULL,NULL,NULL,0x00040400,56,2,32768,NULL,'99',NULL,8,'bonus bAtkEle,Ele_Holy;',NULL,NULL);
|
||||
@ -9157,15 +9159,15 @@ REPLACE INTO `item_db_re` VALUES (18589,'Strawberry_Hat','Strawberry Hat',4,20,N
|
||||
REPLACE INTO `item_db_re` VALUES (18590,'Gemma_Hairband','Gemma Hairband',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,564,'bonus bMdef,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18591,'Mini_Glasses_','Mini Glasses',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFE,63,2,512,NULL,'0',0,47,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18592,'Nestea_Hat','Nestea Hat',4,20,NULL,200,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,756,'bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18593,'Fancy_Mini_Crown','Fancy Mini Crown',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,707,'bonus bInt,1; bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18593,'Fancy_Mini_Crown','Fancy Mini Crown',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,707,'bonus bInt,1; bonus bMdef,5; bonus bVariableCast,-3000; bonus bMatkRate,3; bonus bHealPower,4; bonus bSkillUseSP,-3; .@r = getrefine(); if (.@r > 6) bonus bMatkRate,3; else if (.@r > 4) bonus bMatkRate,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18594,'Magni_Cap_','Magni Cap',4,30000,NULL,1000,NULL,9,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,250,'bonus bStr,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18595,'Horn_Of_Ancient','Horn of Ancient',4,40,NULL,200,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,757,'autobonus "{ bonus bBaseAtk,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18595,'Horn_Of_Ancient','Horn of Ancient',4,40,NULL,200,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,757,'bonus2 bSubClass,Class_Boss,10; bonus2 bAddClass,Class_Boss,10; .@r = getrefine(); if (.@r > 6) { autobonus "{ bonus bBaseAtk,100; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; } if (.@r > 8) { bonus2 bSubClass,Class_Boss,10; bonus2 bAddClass,Class_Boss,10; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18596,'Sprout_Hat','Sprout Hat',4,20,NULL,200,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'70',1,758,'skill "WZ_HEAVENDRIVE",3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18597,'Mercury_Riser','Mercury Riser',4,40,NULL,200,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',NULL,759,'bonus bAspdRate,3; bonus bCritical,3; .@r = getrefine(); if(.@r >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(.@r >= 9) { bonus bAspdRate,2; bonus bCritical,2; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18597,'Mercury_Riser','Mercury Riser',4,40,NULL,200,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',NULL,759,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bAddRace,RC_DemiHuman,10; bonus bAspdRate,3; bonus bDelayrate,-3; .@r = getrefine(); if(.@r >= 7) { bonus bAspdRate,2; bonus bDelayrate,-2; } if(.@r >= 9) { bonus bAspdRate,2; bonus bDelayrate,-2; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18598,'Mini_Tree_J','Mini Tree J',4,20,NULL,50,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',0,727,'bonus bMdef,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18599,'Black_Devil_Mask','Black Devil Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,760,'bonus bAllStats,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18600,'Cat_Ear_Beret','Cat Ear Beret',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,761,'bonus bAtkRate,5; .@r = getrefine(); if(.@r > 5 && .@r <= 12) { bonus2 bAddRace,RC_DemiHuman,(.@r - 5); bonus2 bSubRace,RC_DemiHuman,(.@r - 5); bonus2 bAddRace,RC_Player,(.@r - 5); bonus2 bSubRace,RC_Player,(.@r - 5); } if(.@r > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18601,'Red_Bread_Hat','Red Bread Hat',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,762,'bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18600,'Cat_Ear_Beret','Cat Ear Beret',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,761,'bonus bAtkRate,5; .@r = getrefine(); if(.@r < 5) .@r = 5; bonus2 bSubRace,RC_DemiHuman,(.@r - 5); bonus2 bAddRace,RC_DemiHuman,(.@r - 5);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18601,'Red_Bread_Hat','Red Bread Hat',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,762,'bonus bMdef,5; .@r = getrefine(); if (.@r < 5) .@r = 5; bonus2 bSubRace,RC_DemiHuman,(.@r - 5); bonus2 bMagicAddRace,RC_DemiHuman,(.@r - 5);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18602,'Watermelon_Bite','Watermelon Bite',4,20,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,63,2,1,NULL,'30',0,763,'bonus bMdef,4; bonus2 bAddEle,Ele_Fire,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18603,'Black_Devil_Mask_','Black Devil Mask',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,512,NULL,'0',0,760,'bonus bAllStats,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18604,'Falcon_Mask','Falcon Mask',4,10,NULL,30,NULL,0,NULL,1,0xFFFFFFFF,63,2,513,NULL,'50',0,782,NULL,NULL,NULL);
|
||||
@ -9194,14 +9196,14 @@ REPLACE INTO `item_db_re` VALUES (18626,'Gelato_Hat','Gelato Hat',4,20,NULL,200,
|
||||
REPLACE INTO `item_db_re` VALUES (18627,'Dried_Leaf','Dried Leaf',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'10',0,711,'bonus bUnbreakableHelm,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18628,'Tare_Brownie','Tare Brownie',4,20,NULL,500,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',0,781,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18629,'B_Desert_Wolf_Hat','B Desert Wolf Hat',4,10,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,783,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18630,'Dep_Alice_Hat','Drooping Alicel',4,20,NULL,500,NULL,6,NULL,0,0xFFFFFFFE,63,2,256,NULL,'70',1,784,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18631,'Ribbon_Chef_Hat','Ribbon Chef Hat',4,20,NULL,300,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'70',1,785,'bonus bDex,3; bonus bLuk,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18630,'Dep_Alice_Hat','Drooping Alicel',4,20,NULL,500,NULL,6,NULL,0,0xFFFFFFFE,63,2,256,NULL,'70',1,784,'bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; if (getrefine() > 10) { autobonus "{ bonus bAspdRate,100; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18631,'Ribbon_Chef_Hat','Ribbon Chef Hat',4,20,NULL,300,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'70',1,785,'bonus bDex,3; bonus bLuk,1; if (getrefine() > 6) { bonus2 bAddMonsterDropItem,12125,500; bonus2 bAddMonsterDropItem,12126,500; bonus2 bAddMonsterDropItem,12127,400; bonus2 bAddMonsterDropItem,12128,300; bonus2 bAddMonsterDropItem,12129,200; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18632,'Yellow_Poring_Hairpin','Yellow Poring Hairpin',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,786,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18633,'Pink_Poring_Hairpin','Pink Poring Hairpin',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,787,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18634,'Green_Poring_Hairpin','Green Poring Hairpin',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,788,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18635,'Blue_Poring_Hairpin','Blue Poring Hairpin',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,789,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18636,'Bridal_Ribbon','Bridal Ribbon',4,20,NULL,200,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,790,'bonus bDex,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18637,'Ancient_Admiral_Helm','Ancient Admiral Helm',4,20,NULL,700,NULL,4,NULL,1,0xFFFFFFFF,63,2,768,NULL,'0',1,660,'bonus bStr,2; bonus bVit,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18636,'Bridal_Ribbon','Bridal Ribbon',4,20,NULL,200,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,790,'bonus bDex,1; bonus3 bAutoSpellWhenHit,"DC_WINKCHARM",1,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18637,'Ancient_Admiral_Helm','Ancient Admiral Helm',4,20,NULL,700,NULL,4,NULL,1,0xFFFFFFFF,63,2,768,NULL,'0',1,660,'bonus bStr,2; bonus bVit,1; if (getrefine() > 7) bonus bSpeedRate,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18638,'Citron_Hat','Citron Hat',4,20,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,63,2,256,NULL,'1',1,791,'bonus bLuk,3; bonus2 bSubRace,RC_Plant,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18639,'Naval_Officer_Hat','Naval Officer Hat',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFE,63,2,256,NULL,'1',1,792,'bonus bLuk,3; bonus2 bAddEle,Ele_Water,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18640,'Starfish_Headband','Starfish Headband',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFE,63,2,256,NULL,'1',1,793,NULL,NULL,NULL);
|
||||
@ -9214,15 +9216,15 @@ REPLACE INTO `item_db_re` VALUES (18646,'Cow_Hat','Cow Hat',4,20,NULL,300,NULL,4
|
||||
REPLACE INTO `item_db_re` VALUES (18647,'Star_Eyepatch','Star Eyepatch',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,800,'bonus2 bResEff,Eff_Stun,1500;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18648,'Tongue_Charm','Tongue Charm',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,801,'bonus2 bSubRace,RC_Demon,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18649,'Lude_Mask','Lude Mask',4,10,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,513,NULL,'0',1,802,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18650,'RWC_Shouting_Mouth','RWC Shouting Mouth',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,194,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18650,'RWC_Shouting_Mouth','RWC Shouting Mouth',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,194,'bonus3 bAutoSpellWhenHit,"SM_ENDURE",1,10; bonus3 bAutoSpellWhenHit,"MO_CALLSPIRITS",5,10; bonus3 bAutoSpellWhenHit,"MO_EXPLOSIONSPIRITS",5,10; bonus3 bAutoSpell,"BS_MAXIMIZE",5,10; bonus3 bAutoSpell,"MC_LOUD",1,10; bonus3 bAutoSpell,"AC_CONCENTRATION",5,10; bonus3 bAutoSpell,"PR_GLORIA",3,10; autobonus "{ bonus bStr,3; bonus bAgi,3; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; showscript \\\"RWC 2011 Fighting!!\\\"; }"; autobonus "{ bonus bInt,3; bonus bLuk,3; }",5,5000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; showscript \\\"RWC 2011 Fighting!!\\\"; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18651,'Ignis_Cap','Ignis Cap',4,20,NULL,800,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',1,803,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18652,'Vanargandr_Helm','Vanargandr Helm',4,20,NULL,1500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'80',1,804,'bonus bMdef,5; .@r = getrefine(); if (.@r >= 9 ) { bonus2 bHPGainAttackRate,100,8; bonus2 bSPGainAttackRate,100,4; } else if (.@r >= 8 ) { bonus2 bHPGainAttackRate,100,5; bonus2 bSPGainAttackRate,100,2; } else if (.@r >= 7 ) { bonus2 bHPGainAttackRate,100,5; bonus2 bSPGainAttackRate,100,2; } else if (.@r >= 5 ) { bonus2 bHPGainAttackRate,100,3; bonus2 bSPGainAttackRate,100,1; } else { bonus2 bHPGainAttackRate,100,1; bonus2 bSPGainAttackRate,100,1; } /* Confirm: Success rate? */',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18652,'Vanargandr_Helm','Vanargandr Helm',4,20,NULL,1500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'80',1,804,'bonus bMdef,5; .@r = getrefine(); if (.@r >= 9 ) { bonus2 bHPDrainRate,60,8; bonus2 bSPDrainRate,20,4; } else if (.@r >= 8 ) { bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,2; } else if (.@r >= 7 ) { bonus2 bHPDrainRate,30,5; bonus2 bSPDrainRate,10,2; } else if (.@r >= 5 ) { bonus2 bHPDrainRate,10,3; bonus2 bSPDrainRate,10,1; } else { bonus2 bHPDrainRate,10,1; bonus2 bSPDrainRate,10,1; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18653,'Deviruchi_Headphone','Deviruchi Headphone',4,20,NULL,200,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,805,'bonus bAgi,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18655,'Goedo_Monocle','Goedo Monocle',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,23,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18656,'Witch\'s_Pumpkin_Hat','Witch\'s Pumpkin Hat',4,20,NULL,300,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'20',1,717,'bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18656,'Wit_Pumpkin_Hat','Witch\'s Pumpkin Hat',4,20,NULL,300,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'20',1,717,'bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15; bonus2 bMagicAddRace,RC_Demon,15;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18657,'Pegasus_Wing_Ears','Pegasus Wing Ears',4,20,NULL,500,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'80',0,568,'bonus bUnbreakableHelm,0; if (BaseLevel >= 150) bonus bAspdRate,3; else if (BaseLevel >= 100) bonus bAspdRate,2; else if (BaseLevel >= 50) bonus bAspdRate,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18658,'Holy_Santa_Beard','Holy Santa Beard',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,25,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18659,'Boitata_Hat','Boitata Hat',4,20,NULL,0,NULL,5,NULL,1,0xFFFFFFFF,63,2,768,NULL,'0',1,808,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18659,'Boitata_Hat','Boitata Hat',4,20,NULL,0,NULL,5,NULL,1,0xFFFFFFFF,63,2,768,NULL,'0',1,808,'autobonus "{ bonus bAtkEle,Ele_Fire; }",10,180000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; bonus3 bAutospell,"AS_SONICBLOW",5,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18660,'Indi_Feather_Band','Indian Feather Headband',4,20,NULL,400,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,809,'bonus bAgi,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18661,'Trident_Helm','Trident Helm',4,20,NULL,400,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'20',1,810,'bonus bStr,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18662,'Antler_Fedora','Antler Fedora',4,20,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,63,2,256,NULL,'1',1,811,'bonus bInt,3;',NULL,NULL);
|
||||
@ -9234,7 +9236,7 @@ REPLACE INTO `item_db_re` VALUES (18667,'Cat_Lace_Hairband','Cat Lace Hairband',
|
||||
REPLACE INTO `item_db_re` VALUES (18668,'Droopy_Turtle_Hat','Droopy Turtle Hat',4,20,NULL,300,NULL,1,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,694,'skill "AL_DECAGI",3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18669,'Cowhide_Hat','Cowhide Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,819,'bonus bDex,2; bonus bMaxHPrate,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18670,'Hankie_In_Mouth','Hankie In Mouth',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'12',0,818,'bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18671,'Rudolf_Hairband','Rudolf Hairband',4,20,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,836,'bonus3 bAutoSpell,"AL_INCAGI",10,50; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,50; bonus2 bAddItemHealRate,515,2000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18671,'Rudolf_Hairband','Rudolf Hairband',4,20,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,836,'bonus3 bAutoSpell,"AL_INCAGI",10,50; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,50; bonus2 bAddItemHealRate,515,2000; autobonus "{ bonus bLuk,20; }",10,50000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }"; autobonus2 "{ bonus bStr,20; }",10,50000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18672,'Tare_Pope','Tare Pope',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,817,'bonus bUnbreakableHelm,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18673,'Tare_Pope_','Tare Pope',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,817,'bonus bUnbreakableHelm,0; bonus bSPrecovRate,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18674,'Planewing_Hat','Planewing Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,820,'bonus bAgi,3;',NULL,NULL);
|
||||
@ -9337,7 +9339,7 @@ REPLACE INTO `item_db_re` VALUES (18805,'Eclipse_Hat','Eclipse Hat',4,20,NULL,30
|
||||
REPLACE INTO `item_db_re` VALUES (18806,'Black_Rabbit_Hat','Black Rabbit Hat',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,923,'bonus bDex,2; bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18807,'Yellow_Yuzu_Hat','Yellow Yuzu Hat',4,20,NULL,400,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,924,'bonus bVit,2; bonus bLuk,3; bonus2 bSubRace,RC_Plant,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18808,'Wing_Form_Spectacle','Wing Form Spectacle',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,925,'bonus bAgi,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18810,'Hell_Pumpkin_Hat','Hell Pumpkin Hat',4,20,NULL,500,NULL,12,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,717,'bonus bMdef,12; bonus2 bSubRace,6,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bSubRace,RC_Undead,-5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18810,'Hell_Pumpkin_Hat','Hell Pumpkin Hat',4,20,NULL,500,NULL,12,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,717,'bonus bMdef,12; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18813,'New_Wave_Sunglasses','New Wave Sunglasses',4,10,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'30',NULL,856,'bonus bDelayrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18814,'Angel_School_Cap','Angel School Cap',4,20,NULL,100,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,927,'bonus bInt,2; bonus bVit,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18815,'Devil_School_Cap','Devil School Cap',4,20,NULL,100,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,928,'bonus bStr,2; bonus bVit,1;',NULL,NULL);
|
||||
@ -9363,9 +9365,9 @@ REPLACE INTO `item_db_re` VALUES (18845,'Banshee_Master_Kiss','Banshee Master Ki
|
||||
REPLACE INTO `item_db_re` VALUES (18848,'Fresh_Roses','Fresh Roses',4,10,NULL,200,'0:20',0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,963,'bonus bMagicHPGainValue,100; bonus bMagicSPGainValue,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18849,'Celine_Ribbon','Celine Ribbon',4,10,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,967,'bonus bDex,3; bonus bMatk,40+getrefine(); bonus bMagicHPGainValue,200; bonus2 bHPLossRate,50,5000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18850,'Polar_Bear_Cap','Polar Bear Cap',4,20,NULL,300,NULL,7,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,966,'bonus bUnbreakableHelm,0; bonus bDex,1; bonus bAgi,1; bonus bMdef,3; bonus bHPrecovRate,5; bonus bSPrecovRate,3; bonus2 bAddMonsterDropItem,12354,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18851,'C_Polar_Bear_Cap','Costume Polar Bear Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,966,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18851,'C_Polar_Bear_Cap','Costume Polar Bear Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,966,'/*Is this correct item?*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18855,'Aviator_Hat','Aviator Hat',4,10,NULL,100,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,972,'bonus bAgi,3; bonus bInt,3; autobonus "{ bonus bAtkEle,Ele_Wind; }",500,180,BF_NORMAL;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18856,'W_King_Tiger_Doll_Hat','W King Tiger Doll Hat',4,10,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,973,'bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18856,'W_King_Tiger_Doll_Hat','W King Tiger Doll Hat',4,10,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,973,'bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",3*.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \\\"Traaaansformation-!! Eddga form!!\\\"; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*.@r; }",.@r,3000,BF_NORMAL,"{ transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \\\"Traaaansformation-!! Eddga form!!\\\"; }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18857,'Curupira_Hat','Curupira Hat',4,10,NULL,100,NULL,20,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,974,'bonus bDex,3; bonus2 bAddEffWhenHit,Eff_Confusion,500;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18859,'Angeling_Bubble','Angeling Bubble',4,10,NULL,50,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',NULL,975,'bonus bDex,1; bonus bMatkRate,2; bonus bMaxHP,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18861,'Zaha_Doll_J_Hat','Zaha Doll J Hat',4,10,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,256,NULL,'50',1,461,'bonus bHealPower,15; bonus bUseSPrate,15;',NULL,NULL);
|
||||
@ -9433,6 +9435,7 @@ REPLACE INTO `item_db_re` VALUES (18997,'Reckless_Chip','Reckless Chip',4,10,NUL
|
||||
REPLACE INTO `item_db_re` VALUES (19019,'Elemental_Crown','Elemental Crown',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,1219,'.@r = getrefine(); bonus bDex,(3 + (.@r/2)+ (readparam(bDex) > 130 ? .@r : 0)); bonus bLongAtkRate,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19020,'Survive_Circlet','Survive Circlet',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,1220,'.@r = getrefine(); bonus bInt,(3 + (.@r/2)+ (BaseLevel > 130 ? .@r : 0)); bonus bMatkRate,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19021,'Gigant_Helm','Gigant Helm',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,1221,'bonus bStr,3+((BaseLevel > 130) ? getrefine() : 0); bonus bAtkRate,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19024,'Protect_Feathers','Protect Feathers',4,0,NULL,500,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,1,'70',1,1232,'bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; bonus bAspdRate,-5; .@vit = readparam(bVit); if (.@vit >= 108) { bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; bonus bAspdRate,-5; } if (.@vit >= 120) { bonus bMaxHPRate,3; bonus bMdef,3; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19026,'Aegir_Helm','Aegir Helm',4,10,NULL,800,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'40',1,870,'bonus bVit,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19030,'Pretty_Rabbit_Hood','Pretty Rabbit Hood',4,10,NULL,100,NULL,20,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',1,1085,'bonus bMaxHP,(15*BaseLevel);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19031,'Fallen_Angel_Blessing','Fallen Angel Blessing',4,0,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,NULL,1,1250,'bonus2 bAddRace,RC_Angel,5; bonus2 bSubRace,RC_Angel,5;',NULL,NULL);
|
||||
@ -9476,12 +9479,12 @@ REPLACE INTO `item_db_re` VALUES (19529,'C_Angelic_Chain','Costume Angel Wing',4
|
||||
REPLACE INTO `item_db_re` VALUES (19530,'C_Wild_Rose','Costume Wild Rose',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,541,'bonus bUnbreakableHelm,0; bonus bBaseAtk,2; bonus bMatk,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19531,'C_Cube_Mask','Costume Cube Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'0',0,472,'bonus bUnbreakableHelm,0; bonus bFlee,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19532,'C_Red_Bunny_Band','Red Bunny Band',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,640,'bonus bUnbreakableHelm,0; bonus bDex,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19533,'C_Spore_Hat','Costume Spore Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,114,'bonus bUnbreakableHelm,0; bonus bVit,1; bonus2 bExpAddClass,Class_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19534,'C_Tha_Despero_Mask','Costume Thanatos Despero Mask',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,513,NULL,'1',0,693,'bonus bAtkRate,1; bonus bMatkRate,1; bonus bHealPower,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19535,'C_Sinsuncho_Hat','Costume Sinsuncho Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,730,'bonus bUnbreakableHelm,0; bonus bStr,1; bonus2 bExpAddClass,Class_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19533,'C_Spore_Hat','Costume Spore Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,114,'bonus bUnbreakableHelm,0; bonus bVit,1; bonus2 bExpAddRace,RC_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19534,'C_Tha_Despero_Mask','Costume Thanatos Despero Mask',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,513,NULL,'1',0,693,'bonus2 bAddClass,Class_All,1; bonus bMatkRate,1; bonus bHealPower,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19535,'C_Sinsuncho_Hat','Costume Sinsuncho Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,730,'bonus bUnbreakableHelm,0; bonus bStr,1; bonus2 bExpAddRace,RC_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19536,'C_Rose_Corsage','Costume Rose Corsage',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,533,'bonus bUnbreakableHelm,0; bonus bInt,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19537,'C_Gryphon_Hat','Costume Gryphon Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,591,'bonus bUnbreakableHelm,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19538,'Full_Moon','Full Moon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,780,'autobonus "{ bonus bMatk,50; bonus bBaseAtk,50; }",10,5000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19538,'Full_Moon','Full Moon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,780,'autobonus "{ bonus bBaseAtk,50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }"; autobonus "{ bonus bMatk,50; }",5,5000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; /* showscript */ }";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19539,'C_Reginleif_Hairband','Costume Hairband Of Reginleif',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,468,'bonus bAllStats,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19540,'C_Rabbit_Earplug','Costume Rabbit Earplugs',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,515,'bonus bAgi,1; bonus bFlee,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (19541,'C_Romantic_White_Flower','Costume Romantic White Flower',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,259,'bonus bUnbreakableHelm,0;',NULL,NULL);
|
||||
@ -9751,7 +9754,8 @@ REPLACE INTO `item_db_re` VALUES (20094,'C_Green_Ribbon','Costume Green Ribbon',
|
||||
REPLACE INTO `item_db_re` VALUES (20095,'C_Red_Ribbon','Costume Red Ribbon',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,440,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20096,'C_Blue_Ribbon','Costume Blue Ribbon',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,441,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20097,'C_White_Ribbon','Costume White Ribbon',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,442,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20110,'C_Coiledup_Snake','Costume Coiledup Snake',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,NULL,'/*TODO: View ID*/',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20099,'C_Flying_Ljosalfar','Flying Ljosalfar',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,1,'1',1,1239,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20110,'C_Coiledup_Snake','Costume Coiledup Snake',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,1258,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20118,'C_Cake_Hat','Costume Cake Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,109,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20119,'C_Beanie','Costume Beanie',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,160,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20120,'C_Aerial','Costume Aerial',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,97,NULL,NULL,NULL);
|
||||
@ -9809,7 +9813,7 @@ REPLACE INTO `item_db_re` VALUES (20233,'C_Golden_Angel','Costume Golden Angel',
|
||||
#
|
||||
REPLACE INTO `item_db_re` VALUES (20500,'T_Archangel_Wing','Archangel Wing',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,1,'bonus bUnbreakableHelm,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20600,'Fantastic_Aura','Fantastic Aura',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,0,'/*View ID*/ bonus bUnbreakableHelm,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20700,'Egir_Manteau','Egir Manteau',4,200000,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,4,NULL,'110',1,0,'bonus bUnbreakableHelm,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20700,'Egir_Manteau','Egir Manteau',4,200000,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,4,NULL,'110',1,0,'bonus bUnbreakableGarment,0; .@r = getrefine(); if (.@r > 10) .@r = 10; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) { bonus bFlee2,5+(.@r*2); } else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) { bonus bShortWeaponDamageReturn,5+(.@r*2); }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20706,'Amistr_Bag','Amistr Bag',4,10,NULL,500,NULL,18,NULL,0,0xFFFFFFFF,63,2,4,NULL,'1',NULL,4,'bonus bAllStats,1; bonus2 bSubEle,Ele_All,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20707,'Kirin_Wing','Kirin Wing',4,20,NULL,0,NULL,18,NULL,0,0xFFFFFFFF,63,2,4,NULL,'0',1,6,'bonus bAllStats,1; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20710,'Impr_Angel\'s_Warmth','Advanced Angelic Cardigan',4,10000,NULL,400,NULL,6,NULL,1,0x00000001,63,2,4,NULL,'99',1,0,'bonus bHPrecovRate,50;',NULL,NULL);
|
||||
@ -9817,7 +9821,7 @@ REPLACE INTO `item_db_re` VALUES (20711,'Manteau_Of_Diego','Manteau Of Diego',4,
|
||||
REPLACE INTO `item_db_re` VALUES (20717,'Gigant_Snake_Skin','Gigant Snake Skin',4,10,NULL,400,NULL,38,NULL,0,0xFFFFFFFF,63,2,4,NULL,'1',1,0,'bonus bMdef,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20718,'Gigant_Snake_Skin','Gigant Snake Skin',4,10,NULL,400,NULL,38,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,0,'bonus bMdef,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20721,'Black_As_Night_Cloak','Black As Night Cloak',4,10,NULL,600,NULL,45,NULL,1,0xFFFFFFFF,63,2,4,NULL,'120',1,0,'bonus2 bSubEle,Ele_Holy,5+(getrefine()/2);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20724,'Love_Dad_Wings_2012','Love Dad Wings 2012',4,0,NULL,100,NULL,15,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,5,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20724,'Love_Dad_Wings_2012','Love Dad Wings 2012',4,0,NULL,100,NULL,15,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,5,'.@r = getrefine(); bonus bAllStats,1; if ((readparam(bStr)>89)) { bonus bStr,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bAgi)>89)) { bonus bAgi,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bVit)>89)) { bonus bVit,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bInt)>89)) { bonus bInt,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bDex)>89)) { bonus bDex,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bLuk)>89)) { bonus bLuk,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20725,'Ribbon_Piamat','Ribbon Piamat',4,10,NULL,100,'0:10',NULL,NULL,0,0xFFFFFFFF,63,2,4,NULL,'30',1,7,'bonus bInt,1; bonus bDex,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20727,'Brilliant_Golden_Wings','Brilliant Golden Wings',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',1,5,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (20730,'Loyalists_Hood','Loyalists Hood',4,10,NULL,200,NULL,30,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'80',NULL,NULL,'bonus bStr,2; bonus bMaxHPrate,10; bonus bNoKnockback,1; bonus2 bSubEle,Ele_All,-20;',NULL,NULL);
|
||||
@ -9936,15 +9940,15 @@ REPLACE INTO `item_db_re` VALUES (22625,'Oktoberfest_Bag','Oktoberfest Bag',2,0,
|
||||
REPLACE INTO `item_db_re` VALUES (22628,'Green_Package','Green Package',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 17162,1; getitem 14534,5; getitem 12323,20; getitem 12324,20; getitem 12325,10; getitem 14533,2; getitem 22629,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22629,'Green_Package40','Green Package 40',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14289,1; getitem 12215,10; getitem 12216,10; getitem 14534,10; getitem 14533,5; getitem 12766,5; getitem 22630,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22630,'Green_Package80','Green Package 80',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7621,5; getitem 12209,5; getitem 14527,10; getitem 14533,5; getitem 12766,5; getitem 22631,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22631,'Green_Package99','Green Package 99',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12213,1; /*getitem Transmission_Coupon,1;*/ getitem 5883,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22631,'Green_Package99','Green Package 99',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12213,1; getitem 7676,1; getitem 5883,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22640,'17173_Green_Package','Green Package',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 17162,1; getitem 14534,5; getitem 12323,20; getitem 12324,20; getitem 12325,10; getitem 14533,2; getitem 22641,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22641,'17173_Green_Package40','Green Package 40',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14289,1; getitem 12215,10; getitem 12216,10; getitem 14534,10; getitem 14533,5; getitem 12766,5; getitem 22642,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22642,'17173_Green_Package80','Green Package 80',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7621,5; getitem 12209,5; getitem 14527,10; getitem 14533,5; getitem 12766,5; getitem 22643,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22643,'17173_Green_Package99','Green Package 99',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12213,1; /*getitem Transmission_Coupon,1;*/ getitem 5883,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22643,'17173_Green_Package99','Green Package 99',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12213,1; getitem 7676,1; getitem 5883,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22644,'S_Green_Package','Green Package',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 17162,1; getitem 14534,5; getitem 12323,20; getitem 12324,20; getitem 12325,10; getitem 14533,2; getitem 22645,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22645,'S_Green_Package40','Green Package 40',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14289,1; getitem 12215,10; getitem 12216,10; getitem 14534,10; getitem 14533,5; getitem 12766,5; getitem 22646,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22646,'S_Green_Package80','Green Package 80',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7621,5; getitem 12209,5; getitem 14527,10; getitem 14533,5; getitem 12766,5; getitem 22647,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22647,'S_Green_Package99','Green Package 99',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12213,1; /*getitem Transmission_Coupon,1;*/ getitem 5883,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22647,'S_Green_Package99','Green Package 99',18,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12213,1; getitem 7676,1; getitem 5883,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22648,'Angeling_Package','Angel Ring Package',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22649,'Deviling_Package','Devil Ring Package',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (22652,'Briliant_Hat_Box','Brilliant Hat Box',2,10,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
|
||||
@ -10297,10 +10301,10 @@ REPLACE INTO `item_db_re` VALUES (28202,'Southern_Cross_','Southern Cross',5,280
|
||||
REPLACE INTO `item_db_re` VALUES (28203,'Half_BF_Rifle1','Half BF Rifle1',5,0,NULL,0,'50',NULL,9,0,0x41000000,63,2,34,3,'80',1,18,'bonus bDex,2; bonus bHit,8; bonus bCritical,8; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bVariableCastrate,"GS_TRACKING",-20; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (28204,'Half_BF_Shotgun1','Half BF Shotgun1',5,0,NULL,0,'100',NULL,9,0,0x41000000,63,2,34,3,'80',1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
|
||||
#
|
||||
#28315,RCC2013_ARMLET
|
||||
#28316,RCC2013_ARMLET_
|
||||
#28317,RCC2013_RING
|
||||
#28318,RCC2013_RING_
|
||||
REPLACE INTO `item_db_re` VALUES (28315,'RCC2013_ARMLET','RCC2013_ARMLET',4,200,NULL,200,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',0,NULL,'bonus2 bAddClass,Class_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (28316,'RCC2013_ARMLET_','RCC2013_ARMLET_',4,200,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,136,NULL,'1',0,NULL,'bonus2 bAddClass,Class_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (28317,'RCC2013_RING','RCC2013_RING',4,200,NULL,200,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',0,NULL,'bonus2 bAddClass,Class_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (28318,'RCC2013_RING_','RCC2013_RING_',4,200,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,136,NULL,'1',0,NULL,'bonus2 bAddClass,Class_All,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (28310,'Sarah\'s_Left_Earring','Sarah\'s Left Earring',4,10,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,128,NULL,'145',1,NULL,'skill "AL_HEAL",1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (28311,'Sarah\'s_Right_Earring','Sarah\'s Right Earring',4,10,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,8,NULL,'145',1,NULL,'skill "AL_TELEPORT",1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (28326,'Broken_Chips_01','Broken Chips 01',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,136,NULL,'100',1,NULL,'bonus bStr,4;',NULL,NULL);
|
||||
|
@ -150,6 +150,7 @@ CREATE TABLE IF NOT EXISTS `char` (
|
||||
`unban_time` int(11) unsigned NOT NULL default '0',
|
||||
`font` tinyint(3) unsigned NOT NULL default '0',
|
||||
`uniqueitem_counter` int(11) unsigned NOT NULL default '0',
|
||||
`sex` ENUM('M','F','U') NOT NULL default 'U',
|
||||
PRIMARY KEY (`char_id`),
|
||||
UNIQUE KEY `name_key` (`name`),
|
||||
KEY `account_id` (`account_id`),
|
||||
@ -699,6 +700,72 @@ CREATE TABLE IF NOT EXISTS `ragsrvinfo` (
|
||||
`drop` int(11) unsigned NOT NULL default '0'
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
--
|
||||
-- Table structure for `db_roulette`
|
||||
--
|
||||
CREATE TABLE `db_roulette` (
|
||||
`index` int(11) NOT NULL default '0',
|
||||
`level` smallint(5) unsigned NOT NULL,
|
||||
`item_id` smallint(5) unsigned NOT NULL,
|
||||
`amount` smallint(5) unsigned NOT NULL DEFAULT '1',
|
||||
`flag` smallint(5) unsigned NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`index`)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of db_roulette
|
||||
-- ----------------------------
|
||||
-- Info: http://ro.gnjoy.com/news/update/View.asp?seq=157&curpage=1
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 0, 1, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 1, 1, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 2, 1, 678, 1, 0 ); -- Poison_Bottle
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 3, 1, 604, 1, 0 ); -- Branch_Of_Dead_Tree
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 4, 1, 522, 1, 0 ); -- Fruit_Of_Mastela
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 5, 1, 671, 1, 0 ); -- Old_Ore_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 6, 1, 12523, 1, 0 ); -- E_Inc_Agi_10_Scroll
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 7, 1, 985, 1, 0 ); -- Elunium
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 8, 1, 984, 1, 0 ); -- Oridecon
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 9, 2, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 10, 2, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 11, 2, 603, 1, 0 ); -- Old_Blue_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 12, 2, 608, 1, 0 ); -- Seed_Of_Yggdrasil
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 13, 2, 607, 1, 0 ); -- Yggdrasilberry
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 14, 2, 12522, 1, 0 ); -- E_Blessing_10_Scroll
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 15, 2, 6223, 1, 0 ); -- Carnium
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 16, 2, 6224, 1, 0 ); -- Bradium
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 17, 3, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 18, 3, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 19, 3, 12108, 1, 0 ); -- Bundle_Of_Magic_Scroll
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 20, 3, 617, 1, 0 ); -- Old_Violet_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 21, 3, 12514, 1, 0 ); -- E_Abrasive
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 22, 3, 7444, 1, 0 ); -- Treasure_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 23, 3, 969, 1, 0 ); -- Gold
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 24, 4, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 25, 4, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 26, 4, 616, 1, 0 ); -- Old_Card_Album
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 27, 4, 12516, 1, 0 ); -- E_Small_Life_Potion
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 28, 4, 22777, 1, 0 ); -- Gift_Buff_Set
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 29, 4, 6231, 1, 0 ); -- Guarantee_Weapon_6Up
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 30, 5, 671, 1, 1 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 31, 5, 12246, 1, 0 ); -- Magic_Card_Album
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 32, 5, 12263, 1, 0 ); -- Comp_Battle_Manual
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 33, 5, 671, 1, 0 ); -- Potion_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 34, 5, 6235, 1, 0 ); -- Guarantee_Armor_6Up
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 35, 6, 671, 1, 1 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 36, 6, 12766, 1, 0 ); -- Reward_Job_BM25
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 37, 6, 6234, 1, 0 ); -- Guarantee_Armor_7Up
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 38, 6, 6233, 1, 0 ); -- Guarantee_Armor_8Up
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 39, 7, 671, 1, 1 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 40, 7, 6233, 1, 0 ); -- Guarantee_Armor_8Up
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 41, 7, 6233, 1, 0 ); -- Guarantee_Armor_8Up // KRO lists this twice
|
||||
|
||||
--
|
||||
-- Table structure for table `skill`
|
||||
--
|
||||
|
67
sql-files/upgrades/upgrade_20150619.sql
Normal file
67
sql-files/upgrades/upgrade_20150619.sql
Normal file
@ -0,0 +1,67 @@
|
||||
ALTER TABLE `char` ADD COLUMN `sex` ENUM('M','F','U') NOT NULL default 'U';
|
||||
|
||||
--
|
||||
-- Table structure for `db_roulette`
|
||||
--
|
||||
CREATE TABLE `db_roulette` (
|
||||
`index` int(11) NOT NULL default '0',
|
||||
`level` smallint(5) unsigned NOT NULL,
|
||||
`item_id` smallint(5) unsigned NOT NULL,
|
||||
`amount` smallint(5) unsigned NOT NULL DEFAULT '1',
|
||||
`flag` smallint(5) unsigned NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`index`)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of db_roulette
|
||||
-- ----------------------------
|
||||
-- Info: http://ro.gnjoy.com/news/update/View.asp?seq=157&curpage=1
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 0, 1, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 1, 1, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 2, 1, 678, 1, 0 ); -- Poison_Bottle
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 3, 1, 604, 1, 0 ); -- Branch_Of_Dead_Tree
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 4, 1, 522, 1, 0 ); -- Fruit_Of_Mastela
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 5, 1, 671, 1, 0 ); -- Old_Ore_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 6, 1, 12523, 1, 0 ); -- E_Inc_Agi_10_Scroll
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 7, 1, 985, 1, 0 ); -- Elunium
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 8, 1, 984, 1, 0 ); -- Oridecon
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 9, 2, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 10, 2, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 11, 2, 603, 1, 0 ); -- Old_Blue_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 12, 2, 608, 1, 0 ); -- Seed_Of_Yggdrasil
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 13, 2, 607, 1, 0 ); -- Yggdrasilberry
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 14, 2, 12522, 1, 0 ); -- E_Blessing_10_Scroll
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 15, 2, 6223, 1, 0 ); -- Carnium
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 16, 2, 6224, 1, 0 ); -- Bradium
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 17, 3, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 18, 3, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 19, 3, 12108, 1, 0 ); -- Bundle_Of_Magic_Scroll
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 20, 3, 617, 1, 0 ); -- Old_Violet_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 21, 3, 12514, 1, 0 ); -- E_Abrasive
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 22, 3, 7444, 1, 0 ); -- Treasure_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 23, 3, 969, 1, 0 ); -- Gold
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 24, 4, 675, 1, 1 ); -- Silver_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 25, 4, 671, 1, 0 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 26, 4, 616, 1, 0 ); -- Old_Card_Album
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 27, 4, 12516, 1, 0 ); -- E_Small_Life_Potion
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 28, 4, 22777, 1, 0 ); -- Gift_Buff_Set
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 29, 4, 6231, 1, 0 ); -- Guarantee_Weapon_6Up
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 30, 5, 671, 1, 1 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 31, 5, 12246, 1, 0 ); -- Magic_Card_Album
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 32, 5, 12263, 1, 0 ); -- Comp_Battle_Manual
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 33, 5, 671, 1, 0 ); -- Potion_Box
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 34, 5, 6235, 1, 0 ); -- Guarantee_Armor_6Up
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 35, 6, 671, 1, 1 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 36, 6, 12766, 1, 0 ); -- Reward_Job_BM25
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 37, 6, 6234, 1, 0 ); -- Guarantee_Armor_7Up
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 38, 6, 6233, 1, 0 ); -- Guarantee_Armor_8Up
|
||||
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 39, 7, 671, 1, 1 ); -- Gold_Coin
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 40, 7, 6233, 1, 0 ); -- Guarantee_Armor_8Up
|
||||
INSERT INTO `db_roulette`(`index`, `level`, `item_id`, `amount`, `flag` ) VALUES ( 41, 7, 6233, 1, 0 ); -- Guarantee_Armor_8Up // KRO lists this twice
|
1
sql-files/upgrades/upgrade_20150619_log.sql
Normal file
1
sql-files/upgrades/upgrade_20150619_log.sql
Normal file
@ -0,0 +1 @@
|
||||
ALTER TABLE `picklog` MODIFY `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','$','F','Y') NOT NULL default 'P';
|
@ -837,6 +837,54 @@ int char_inventory_to_sql(const struct item items[], int max, int id) {
|
||||
return errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the correct gender ID for the given character and enum value.
|
||||
*
|
||||
* If the per-character sex is defined but not supported by the current packetver, the database entries are corrected.
|
||||
*
|
||||
* @param sd Character data, if available.
|
||||
* @param p Character status.
|
||||
* @param sex Character sex (database enum)
|
||||
*
|
||||
* @retval SEX_MALE if the per-character sex is male
|
||||
* @retval SEX_FEMALE if the per-character sex is female
|
||||
* @retval 99 if the per-character sex is not defined or the current PACKETVER doesn't support it.
|
||||
*/
|
||||
int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charstatus *p, char sex)
|
||||
{
|
||||
#if PACKETVER >= 20141016
|
||||
(void)sd; (void)p; // Unused
|
||||
switch (sex) {
|
||||
case 'M':
|
||||
return SEX_MALE;
|
||||
case 'F':
|
||||
return SEX_FEMALE;
|
||||
case 'U':
|
||||
default:
|
||||
return 99;
|
||||
}
|
||||
#else
|
||||
if (sex == 'M' || sex == 'F') {
|
||||
if (!sd) {
|
||||
// sd is not available, there isn't much we can do. Just return and print a warning.
|
||||
ShowWarning("Character '%s' (CID: %d, AID: %d) has sex '%c', but PACKETVER does not support per-character sex. Defaulting to 'U'.\n",
|
||||
p->name, p->char_id, p->account_id, sex);
|
||||
return 99;
|
||||
}
|
||||
if ((sex == 'M' && sd->sex == SEX_FEMALE)
|
||||
|| (sex == 'F' && sd->sex == SEX_MALE)) {
|
||||
ShowWarning("Changing sex of character '%s' (CID: %d, AID: %d) to 'U' due to incompatible PACKETVER.\n", p->name, p->char_id, p->account_id);
|
||||
chlogif_parse_ackchangecharsex(p->char_id, sd->sex);
|
||||
} else {
|
||||
ShowInfo("Resetting sex of character '%s' (CID: %d, AID: %d) to 'U' due to incompatible PACKETVER.\n", p->name, p->char_id, p->account_id);
|
||||
}
|
||||
if (SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `sex` = 'U' WHERE `char_id` = '%d'", schema_config.char_db, p->char_id)) {
|
||||
Sql_ShowDebug(sql_handle);
|
||||
}
|
||||
}
|
||||
return 99;
|
||||
#endif
|
||||
}
|
||||
|
||||
int char_mmo_char_tobuf(uint8* buf, struct mmo_charstatus* p);
|
||||
|
||||
@ -847,16 +895,16 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) {
|
||||
struct mmo_charstatus p;
|
||||
int j = 0, i;
|
||||
char last_map[MAP_NAME_LENGTH_EXT];
|
||||
char sex[2];
|
||||
|
||||
stmt = SqlStmt_Malloc(sql_handle);
|
||||
if( stmt == NULL )
|
||||
{
|
||||
if( stmt == NULL ) {
|
||||
SqlStmt_ShowDebug(stmt);
|
||||
return 0;
|
||||
}
|
||||
memset(&p, 0, sizeof(p));
|
||||
|
||||
for( i = 0; i < MAX_CHARS; i++ ){
|
||||
for( i = 0; i < MAX_CHARS; i++ ) {
|
||||
sd->found_char[i] = -1;
|
||||
sd->unban_time[i] = 0;
|
||||
}
|
||||
@ -867,7 +915,7 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) {
|
||||
"`str`,`agi`,`vit`,`int`,`dex`,`luk`,`max_hp`,`hp`,`max_sp`,`sp`,"
|
||||
"`status_point`,`skill_point`,`option`,`karma`,`manner`,`hair`,`hair_color`,"
|
||||
"`clothes_color`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`rename`,`delete_date`,"
|
||||
"`robe`,`moves`,`unban_time`,`font`,`uniqueitem_counter`"
|
||||
"`robe`,`moves`,`unban_time`,`font`,`uniqueitem_counter`,`sex`"
|
||||
" FROM `%s` WHERE `account_id`='%d' AND `char_num` < '%d'", schema_config.char_db, sd->account_id, MAX_CHARS)
|
||||
|| SQL_ERROR == SqlStmt_Execute(stmt)
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &p.char_id, 0, NULL, NULL)
|
||||
@ -910,6 +958,7 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) {
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 37, SQLDT_LONG, &p.unban_time, 0, NULL, NULL)
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 38, SQLDT_UCHAR, &p.font, 0, NULL, NULL)
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 39, SQLDT_UINT, &p.uniqueitem_counter, 0, NULL, NULL)
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 40, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL)
|
||||
)
|
||||
{
|
||||
SqlStmt_ShowDebug(stmt);
|
||||
@ -922,6 +971,7 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) {
|
||||
p.last_point.map = mapindex_name2id(last_map);
|
||||
sd->found_char[p.slot] = p.char_id;
|
||||
sd->unban_time[p.slot] = p.unban_time;
|
||||
p.sex = char_mmo_gender(sd, &p, sex[0]);
|
||||
j += char_mmo_char_tobuf(WBUFP(buf, j), &p);
|
||||
|
||||
// Addon System
|
||||
@ -954,6 +1004,7 @@ int char_mmo_char_fromsql(uint32 char_id, struct mmo_charstatus* p, bool load_ev
|
||||
int hotkey_num;
|
||||
#endif
|
||||
StringBuf msg_buf;
|
||||
char sex[2];
|
||||
|
||||
memset(p, 0, sizeof(struct mmo_charstatus));
|
||||
|
||||
@ -973,7 +1024,7 @@ int char_mmo_char_fromsql(uint32 char_id, struct mmo_charstatus* p, bool load_ev
|
||||
"`status_point`,`skill_point`,`option`,`karma`,`manner`,`party_id`,`guild_id`,`pet_id`,`homun_id`,`elemental_id`,`hair`,"
|
||||
"`hair_color`,`clothes_color`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`last_x`,`last_y`,"
|
||||
"`save_map`,`save_x`,`save_y`,`partner_id`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,`robe`, `moves`,"
|
||||
"`unban_time`,`font`,`uniqueitem_counter`"
|
||||
"`unban_time`,`font`,`uniqueitem_counter`,`sex`"
|
||||
" FROM `%s` WHERE `char_id`=? LIMIT 1", schema_config.char_db)
|
||||
|| SQL_ERROR == SqlStmt_BindParam(stmt, 0, SQLDT_INT, &char_id, 0)
|
||||
|| SQL_ERROR == SqlStmt_Execute(stmt)
|
||||
@ -1033,6 +1084,7 @@ int char_mmo_char_fromsql(uint32 char_id, struct mmo_charstatus* p, bool load_ev
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 53, SQLDT_LONG, &p->unban_time, 0, NULL, NULL)
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 54, SQLDT_UCHAR, &p->font, 0, NULL, NULL)
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 55, SQLDT_UINT, &p->uniqueitem_counter, 0, NULL, NULL)
|
||||
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 56, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL)
|
||||
)
|
||||
{
|
||||
SqlStmt_ShowDebug(stmt);
|
||||
@ -1045,6 +1097,7 @@ int char_mmo_char_fromsql(uint32 char_id, struct mmo_charstatus* p, bool load_ev
|
||||
SqlStmt_Free(stmt);
|
||||
return 0;
|
||||
}
|
||||
p->sex = char_mmo_gender(NULL, p, sex[0]);
|
||||
p->last_point.map = mapindex_name2id(last_map);
|
||||
p->save_point.map = mapindex_name2id(save_map);
|
||||
|
||||
@ -1671,7 +1724,13 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p)
|
||||
WBUFW(buf,48) = min(p->max_sp, INT16_MAX);
|
||||
WBUFW(buf,50) = DEFAULT_WALK_SPEED; // p->speed;
|
||||
WBUFW(buf,52) = p->class_;
|
||||
#if PACKETVER >= 20141022
|
||||
WBUFL(buf,54) = p->hair;
|
||||
offset+=2;
|
||||
buf = WBUFP(buffer,offset);
|
||||
#else
|
||||
WBUFW(buf,54) = p->hair;
|
||||
#endif
|
||||
|
||||
//When the weapon is sent and your option is riding, the client crashes on login!?
|
||||
WBUFW(buf,56) = p->option&(0x20|0x80000|0x100000|0x200000|0x400000|0x800000|0x1000000|0x2000000|0x4000000|0x8000000) ? 0 : p->weapon;
|
||||
@ -1725,6 +1784,10 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p)
|
||||
WBUFL(buf,136) = ( p->rename > 0 ) ? 1 : 0; // (0 = disabled, otherwise displays "Add-Ons" sidebar)
|
||||
offset += 4;
|
||||
#endif
|
||||
#if PACKETVER >= 20141016
|
||||
WBUFB(buf,140) = p->sex;// sex - (0 = female, 1 = male, 99 = logindefined)
|
||||
offset += 1;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return 106+offset;
|
||||
@ -2154,6 +2217,9 @@ bool char_checkdb(void){
|
||||
"`shield`,`head_top`,`head_mid`,`head_bottom`,`robe`,`last_map`,`last_x`,`last_y`,`save_map`,"
|
||||
"`save_x`,`save_y`,`partner_id`,`online`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,"
|
||||
"`moves`,`unban_time`,`font`"
|
||||
#if PACKETVER >= 20141016
|
||||
",`sex`"
|
||||
#endif
|
||||
" FROM `%s` LIMIT 1;", schema_config.char_db) ){
|
||||
Sql_ShowDebug(sql_handle);
|
||||
return false;
|
||||
@ -2916,7 +2982,7 @@ int do_init(int argc, char **argv)
|
||||
add_timer_func_list(char_online_data_cleanup, "online_data_cleanup");
|
||||
add_timer_interval(gettick() + 1000, char_online_data_cleanup, 0, 0, 600 * 1000);
|
||||
|
||||
//chek db tables
|
||||
//check db tables
|
||||
if(charserv_config.char_check_db && char_checkdb() == 0){
|
||||
ShowFatalError("char : A tables is missing in sql-server, please fix it, see (sql-files main.sql for structure) \n");
|
||||
exit(EXIT_FAILURE);
|
||||
|
@ -222,7 +222,7 @@ extern struct fame_list chemist_fame_list[MAX_FAME_LIST];
|
||||
extern struct fame_list taekwon_fame_list[MAX_FAME_LIST];
|
||||
|
||||
#define DEFAULT_AUTOSAVE_INTERVAL 300*1000
|
||||
#define MAX_CHAR_BUF 144 //Max size (for WFIFOHEAD calls)
|
||||
#define MAX_CHAR_BUF 150 //Max size (for WFIFOHEAD calls)
|
||||
|
||||
int char_search_mapserver(unsigned short map, uint32 ip, uint16 port);
|
||||
int char_lan_subnetcheck(uint32 ip);
|
||||
@ -236,6 +236,7 @@ void char_set_all_offline(int id);
|
||||
void char_disconnect_player(uint32 account_id);
|
||||
int char_chardb_waiting_disconnect(int tid, unsigned int tick, int id, intptr_t data);
|
||||
|
||||
int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charstatus *p, char sex);
|
||||
int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p);
|
||||
int char_mmo_char_tosql(uint32 char_id, struct mmo_charstatus* p);
|
||||
int char_mmo_char_fromsql(uint32 char_id, struct mmo_charstatus* p, bool load_everything);
|
||||
|
@ -711,7 +711,8 @@ int chclif_parse_charselect(int fd, struct char_session_data* sd,uint32 ipl){
|
||||
|
||||
//Have to switch over to the DB instance otherwise data won't propagate [Kevin]
|
||||
cd = (struct mmo_charstatus *)idb_get(char_db_, char_id);
|
||||
cd->sex = sd->sex;
|
||||
if (cd->sex == 99)
|
||||
cd->sex = sd->sex;
|
||||
|
||||
if (charserv_config.log_char) {
|
||||
char esc_name[NAME_LENGTH*2+1];
|
||||
|
@ -390,76 +390,79 @@ int chlogif_parse_keepalive(int fd, struct char_session_data* sd){
|
||||
return 1;
|
||||
}
|
||||
|
||||
int chlogif_parse_ackchangesex(int fd, struct char_session_data* sd){
|
||||
/**
|
||||
* Performs the necessary operations when changing a character's sex, such as
|
||||
* correcting the job class and unequipping items, and propagating the
|
||||
* information to the guild data.
|
||||
*
|
||||
* @param sex The new sex (SEX_MALE or SEX_FEMALE).
|
||||
* @param acc The character's account ID.
|
||||
* @param char_id The character ID.
|
||||
* @param class_ The character's current job class.
|
||||
* @param guild_id The character's guild ID.
|
||||
*/
|
||||
void chlogif_parse_change_sex_sub(int sex, int acc, int char_id, int class_, int guild_id)
|
||||
{
|
||||
// job modification
|
||||
if (class_ == JOB_BARD || class_ == JOB_DANCER)
|
||||
class_ = (sex == SEX_MALE ? JOB_BARD : JOB_DANCER);
|
||||
else if (class_ == JOB_CLOWN || class_ == JOB_GYPSY)
|
||||
class_ = (sex == SEX_MALE ? JOB_CLOWN : JOB_GYPSY);
|
||||
else if (class_ == JOB_BABY_BARD || class_ == JOB_BABY_DANCER)
|
||||
class_ = (sex == SEX_MALE ? JOB_BABY_BARD : JOB_BABY_DANCER);
|
||||
else if (class_ == JOB_MINSTREL || class_ == JOB_WANDERER)
|
||||
class_ = (sex == SEX_MALE ? JOB_MINSTREL : JOB_WANDERER);
|
||||
else if (class_ == JOB_MINSTREL_T || class_ == JOB_WANDERER_T)
|
||||
class_ = (sex == SEX_MALE ? JOB_MINSTREL_T : JOB_WANDERER_T);
|
||||
else if (class_ == JOB_BABY_MINSTREL || class_ == JOB_BABY_WANDERER)
|
||||
class_ = (sex == SEX_MALE ? JOB_BABY_MINSTREL : JOB_BABY_WANDERER);
|
||||
else if (class_ == JOB_KAGEROU || class_ == JOB_OBORO)
|
||||
class_ = (sex == SEX_MALE ? JOB_KAGEROU : JOB_OBORO);
|
||||
|
||||
if (SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `equip` = '0' WHERE `char_id` = '%d'", schema_config.inventory_db, char_id))
|
||||
Sql_ShowDebug(sql_handle);
|
||||
|
||||
if (SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `class` = '%d', `weapon` = '0', `shield` = '0', `head_top` = '0', `head_mid` = '0', `head_bottom` = '0' WHERE `char_id` = '%d'", schema_config.char_db, class_, char_id))
|
||||
Sql_ShowDebug(sql_handle);
|
||||
if (guild_id) // If there is a guild, update the guild_member data [Skotlex]
|
||||
inter_guild_sex_changed(guild_id, acc, char_id, sex);
|
||||
}
|
||||
|
||||
int chlogif_parse_ackchangesex(int fd, struct char_session_data* sd)
|
||||
{
|
||||
if (RFIFOREST(fd) < 7)
|
||||
return 0;
|
||||
{
|
||||
unsigned char buf[7];
|
||||
|
||||
int acc = RFIFOL(fd,2);
|
||||
int sex = RFIFOB(fd,6);
|
||||
RFIFOSKIP(fd,7);
|
||||
|
||||
if( acc > 0 )
|
||||
{// TODO: Is this even possible?
|
||||
uint32 char_id[MAX_CHARS];
|
||||
int class_[MAX_CHARS];
|
||||
int guild_id[MAX_CHARS];
|
||||
unsigned char num, i;
|
||||
char* data;
|
||||
DBMap* auth_db = char_get_authdb();
|
||||
|
||||
if (acc > 0) { // TODO: Is this even possible?
|
||||
unsigned char i;
|
||||
int char_id = 0, class_ = 0, guild_id = 0;
|
||||
DBMap* auth_db = char_get_authdb();
|
||||
struct auth_node* node = (struct auth_node*)idb_get(auth_db, acc);
|
||||
if( node != NULL )
|
||||
SqlStmt *stmt;
|
||||
|
||||
if (node != NULL)
|
||||
node->sex = sex;
|
||||
|
||||
// get characters
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `char_id`,`class`,`guild_id` FROM `%s` WHERE `account_id` = '%d'", schema_config.char_db, acc) )
|
||||
Sql_ShowDebug(sql_handle);
|
||||
for( i = 0; i < MAX_CHARS && SQL_SUCCESS == Sql_NextRow(sql_handle); ++i )
|
||||
{
|
||||
Sql_GetData(sql_handle, 0, &data, NULL); char_id[i] = atoi(data);
|
||||
Sql_GetData(sql_handle, 1, &data, NULL); class_[i] = atoi(data);
|
||||
Sql_GetData(sql_handle, 2, &data, NULL); guild_id[i] = atoi(data);
|
||||
stmt = SqlStmt_Malloc(sql_handle);
|
||||
if (SQL_ERROR == SqlStmt_Prepare(stmt, "SELECT `char_id`, `class`, `guild_id` FROM `%s` WHERE `account_id` = '%d'", schema_config.char_db, acc) || SqlStmt_Execute(stmt)) {
|
||||
SqlStmt_ShowDebug(stmt);
|
||||
SqlStmt_Free(stmt);
|
||||
}
|
||||
num = i;
|
||||
for( i = 0; i < num; ++i )
|
||||
{
|
||||
if( class_[i] == JOB_BARD || class_[i] == JOB_DANCER ||
|
||||
class_[i] == JOB_CLOWN || class_[i] == JOB_GYPSY ||
|
||||
class_[i] == JOB_BABY_BARD || class_[i] == JOB_BABY_DANCER ||
|
||||
class_[i] == JOB_MINSTREL || class_[i] == JOB_WANDERER ||
|
||||
class_[i] == JOB_MINSTREL_T || class_[i] == JOB_WANDERER_T ||
|
||||
class_[i] == JOB_BABY_MINSTREL || class_[i] == JOB_BABY_WANDERER ||
|
||||
class_[i] == JOB_KAGEROU || class_[i] == JOB_OBORO )
|
||||
{
|
||||
// job modification
|
||||
if( class_[i] == JOB_BARD || class_[i] == JOB_DANCER )
|
||||
class_[i] = (sex ? JOB_BARD : JOB_DANCER);
|
||||
else if( class_[i] == JOB_CLOWN || class_[i] == JOB_GYPSY )
|
||||
class_[i] = (sex ? JOB_CLOWN : JOB_GYPSY);
|
||||
else if( class_[i] == JOB_BABY_BARD || class_[i] == JOB_BABY_DANCER )
|
||||
class_[i] = (sex ? JOB_BABY_BARD : JOB_BABY_DANCER);
|
||||
else if( class_[i] == JOB_MINSTREL || class_[i] == JOB_WANDERER )
|
||||
class_[i] = (sex ? JOB_MINSTREL : JOB_WANDERER);
|
||||
else if( class_[i] == JOB_MINSTREL_T || class_[i] == JOB_WANDERER_T )
|
||||
class_[i] = (sex ? JOB_MINSTREL_T : JOB_WANDERER_T);
|
||||
else if( class_[i] == JOB_BABY_MINSTREL || class_[i] == JOB_BABY_WANDERER )
|
||||
class_[i] = (sex ? JOB_BABY_MINSTREL : JOB_BABY_WANDERER);
|
||||
else if( class_[i] == JOB_KAGEROU || class_[i] == JOB_OBORO )
|
||||
class_[i] = (sex ? JOB_KAGEROU : JOB_OBORO);
|
||||
}
|
||||
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `class`='%d', `weapon`='0', `shield`='0', `head_top`='0', `head_mid`='0', `head_bottom`='0' WHERE `char_id`='%d'", schema_config.char_db, class_[i], char_id[i]) )
|
||||
Sql_ShowDebug(sql_handle);
|
||||
SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &char_id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 1, SQLDT_SHORT, &class_, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 2, SQLDT_INT, &guild_id, 0, NULL, NULL);
|
||||
|
||||
if( guild_id[i] )// If there is a guild, update the guild_member data [Skotlex]
|
||||
inter_guild_sex_changed(guild_id[i], acc, char_id[i], sex);
|
||||
for (i = 0; i < MAX_CHARS && SQL_SUCCESS == SqlStmt_NextRow(stmt); ++i) {
|
||||
chlogif_parse_change_sex_sub(sex, acc, char_id, class_, guild_id);
|
||||
}
|
||||
Sql_FreeResult(sql_handle);
|
||||
|
||||
// disconnect player if online on char-server
|
||||
char_disconnect_player(acc);
|
||||
SqlStmt_Free(stmt);
|
||||
}
|
||||
|
||||
// notify all mapservers about this change
|
||||
@ -471,6 +474,54 @@ int chlogif_parse_ackchangesex(int fd, struct char_session_data* sd){
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes a character's sex.
|
||||
* The information is updated on database, and the character is kicked if it
|
||||
* currently is online.
|
||||
*
|
||||
* @param char_id The character's ID.
|
||||
* @param sex The new sex.
|
||||
* @retval 0 in case of success.
|
||||
* @retval 1 in case of failure.
|
||||
*/
|
||||
int chlogif_parse_ackchangecharsex(int char_id, int sex)
|
||||
{
|
||||
int class_ = 0, guild_id = 0, account_id = 0;
|
||||
unsigned char buf[7];
|
||||
char *data;
|
||||
|
||||
// get character data
|
||||
if (SQL_ERROR == Sql_Query(sql_handle, "SELECT `account_id`,`class`,`guild_id` FROM `%s` WHERE `char_id` = '%d'", schema_config.char_db, char_id)) {
|
||||
Sql_ShowDebug(sql_handle);
|
||||
return 1;
|
||||
}
|
||||
if (Sql_NumRows(sql_handle) != 1 || SQL_ERROR == Sql_NextRow(sql_handle)) {
|
||||
Sql_FreeResult(sql_handle);
|
||||
return 1;
|
||||
}
|
||||
|
||||
Sql_GetData(sql_handle, 0, &data, NULL); account_id = atoi(data);
|
||||
Sql_GetData(sql_handle, 1, &data, NULL); class_ = atoi(data);
|
||||
Sql_GetData(sql_handle, 2, &data, NULL); guild_id = atoi(data);
|
||||
Sql_FreeResult(sql_handle);
|
||||
|
||||
if (SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `sex` = '%c' WHERE `char_id` = '%d'", schema_config.char_db, sex == SEX_MALE ? 'M' : 'F', char_id)) {
|
||||
Sql_ShowDebug(sql_handle);
|
||||
return 1;
|
||||
}
|
||||
chlogif_parse_change_sex_sub(sex, account_id, char_id, class_, guild_id);
|
||||
|
||||
// disconnect player if online on char-server
|
||||
char_disconnect_player(account_id);
|
||||
|
||||
// notify all mapservers about this change
|
||||
WBUFW(buf,0) = 0x2b0d;
|
||||
WBUFL(buf,2) = account_id;
|
||||
WBUFB(buf,6) = sex;
|
||||
chmapif_sendall(buf, 7);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int chlogif_parse_ackacc2req(int fd, struct char_session_data* sd){
|
||||
if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2))
|
||||
return 0;
|
||||
|
@ -32,7 +32,9 @@ int chlogif_parse_ackconnect(int fd, struct char_session_data* sd);
|
||||
int chlogif_parse_ackaccreq(int fd, struct char_session_data* sd);
|
||||
int chlogif_parse_reqaccdata(int fd, struct char_session_data* sd);
|
||||
int chlogif_parse_keepalive(int fd, struct char_session_data* sd);
|
||||
void chlogif_parse_change_sex_sub(int sex, int acc, int char_id, int class_, int guild_id);
|
||||
int chlogif_parse_ackchangesex(int fd, struct char_session_data* sd);
|
||||
int chlogif_parse_ackchangecharsex(int char_id, int sex);
|
||||
int chlogif_parse_ackacc2req(int fd, struct char_session_data* sd);
|
||||
int chlogif_parse_accbannotification(int fd, struct char_session_data* sd);
|
||||
int chlogif_parse_askkick(int fd, struct char_session_data* sd);
|
||||
|
@ -717,7 +717,7 @@ int chmapif_parse_reqnewemail(int fd){
|
||||
|
||||
/**
|
||||
* Forward a change of status for account to login-serv
|
||||
* @param fd: wich fd to parse from
|
||||
* @param fd: which fd to parse from
|
||||
* @return : 0 not enough data received, 1 success
|
||||
*/
|
||||
int chmapif_parse_fwlog_changestatus(int fd){
|
||||
@ -730,14 +730,19 @@ int chmapif_parse_fwlog_changestatus(int fd){
|
||||
|
||||
int aid = RFIFOL(fd,2); // account_id of who ask (-1 if server itself made this request)
|
||||
const char* name = (char*)RFIFOP(fd,6); // name of the target character
|
||||
int operation = RFIFOW(fd,30); // type of operation: 1-block, 2-ban, 3-unblock, 4-unban, 5-changesex, 6-vip
|
||||
int32 timediff = RFIFOL(fd,32);
|
||||
int val1 = RFIFOL(fd,36);
|
||||
//int val2 = RFIFOL(fd,40); // Since BankVault is moved out, this value is unused for now
|
||||
int operation = RFIFOW(fd,30); // type of operation: 1-block, 2-ban, 3-unblock, 4-unban, 5-changesex, 6-vip, 7-changecharsex
|
||||
int32 timediff = 0;
|
||||
int val1 = 0, sex = SEX_MALE;
|
||||
|
||||
if (operation == 2) {
|
||||
timediff = RFIFOL(fd, 32);
|
||||
val1 = RFIFOL(fd, 36);
|
||||
} else if (operation == 7)
|
||||
sex = RFIFOB(fd, 32);
|
||||
RFIFOSKIP(fd,44);
|
||||
|
||||
Sql_EscapeStringLen(sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `account_id` FROM `%s` WHERE `name` = '%s'", schema_config.char_db, esc_name) )
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `account_id`, `char_id` FROM `%s` WHERE `name` = '%s'", schema_config.char_db, esc_name) )
|
||||
Sql_ShowDebug(sql_handle);
|
||||
else if( Sql_NumRows(sql_handle) == 0 ) {
|
||||
result = 1; // 1-player not found
|
||||
@ -746,10 +751,12 @@ int chmapif_parse_fwlog_changestatus(int fd){
|
||||
Sql_ShowDebug(sql_handle);
|
||||
result = 1;
|
||||
} else {
|
||||
int t_aid; //targit account id
|
||||
int t_aid; // target account id
|
||||
int t_cid; // target char id
|
||||
char* data;
|
||||
|
||||
Sql_GetData(sql_handle, 0, &data, NULL); t_aid = atoi(data);
|
||||
Sql_GetData(sql_handle, 1, &data, NULL); t_cid = atoi(data);
|
||||
Sql_FreeResult(sql_handle);
|
||||
|
||||
if(!chlogif_isconnected())
|
||||
@ -794,16 +801,20 @@ int chmapif_parse_fwlog_changestatus(int fd){
|
||||
WFIFOL(login_fd,2) = t_aid;
|
||||
WFIFOSET(login_fd,6);
|
||||
break;
|
||||
case 6:
|
||||
case 6: // vip
|
||||
answer = (val1&4); // vip_req val1=type, &1 login send return, &2 update timestamp, &4 map send answer
|
||||
chlogif_reqvipdata(t_aid, val1, timediff, fd);
|
||||
break;
|
||||
case 7: // changecharsex
|
||||
answer = false;
|
||||
chlogif_parse_ackchangecharsex(t_cid, sex);
|
||||
break;
|
||||
} //end switch operation
|
||||
} //login is connected
|
||||
}
|
||||
|
||||
// send answer if a player asks, not if the server asks
|
||||
if( aid != -1 && answer) { // Don't send answer for changesex
|
||||
if( aid != -1 && answer) { // Don't send answer for changesex/changecharsex
|
||||
WFIFOHEAD(fd,34);
|
||||
WFIFOW(fd, 0) = 0x2b0f;
|
||||
WFIFOL(fd, 2) = aid;
|
||||
@ -817,7 +828,7 @@ int chmapif_parse_fwlog_changestatus(int fd){
|
||||
}
|
||||
|
||||
/**
|
||||
* Transmit the acknolegement of divorce of partner_id1 and partner_id2
|
||||
* Transmit the acknowledgement of divorce of partner_id1 and partner_id2
|
||||
* Update the list associated and transmit the new ranking
|
||||
* @param partner_id1: char id1 divorced
|
||||
* @param partner_id2: char id2 divorced
|
||||
@ -1022,7 +1033,8 @@ int chmapif_parse_reqauth(int fd, int id){
|
||||
}
|
||||
if( runflag == CHARSERVER_ST_RUNNING && autotrade && cd ){
|
||||
uint16 mmo_charstatus_len = sizeof(struct mmo_charstatus) + 25;
|
||||
cd->sex = sex;
|
||||
if (cd->sex == 99)
|
||||
cd->sex = sex;
|
||||
|
||||
WFIFOHEAD(fd,mmo_charstatus_len);
|
||||
WFIFOW(fd,0) = 0x2afd;
|
||||
@ -1042,12 +1054,16 @@ int chmapif_parse_reqauth(int fd, int id){
|
||||
node != NULL &&
|
||||
node->account_id == account_id &&
|
||||
node->char_id == char_id &&
|
||||
node->login_id1 == login_id1 &&
|
||||
node->sex == sex /*&&
|
||||
node->ip == ip*/ )
|
||||
node->login_id1 == login_id1
|
||||
//&& node->ip == ip
|
||||
#if PACKETVER < 20141016
|
||||
&& node->sex == sex
|
||||
#endif
|
||||
)
|
||||
{// auth ok
|
||||
uint16 mmo_charstatus_len = sizeof(struct mmo_charstatus) + 25;
|
||||
cd->sex = sex;
|
||||
if (cd->sex == 99)
|
||||
cd->sex = sex;
|
||||
|
||||
WFIFOHEAD(fd,mmo_charstatus_len);
|
||||
WFIFOW(fd,0) = 0x2afd;
|
||||
|
@ -378,7 +378,11 @@ uint32 date2version(int date) {
|
||||
else if(date < 20130717) return 43;
|
||||
else if(date < 20130807) return 44;
|
||||
else if(date < 20131223) return 45;
|
||||
else if(date >= 20131223) return 46;
|
||||
else if(date < 20140212) return 46;
|
||||
//else if(date < 20140613) return 47;
|
||||
//else if(date < 20141016) return 48;
|
||||
else if(date < 20141022) return 50;
|
||||
else if(date >= 20141022) return 51;
|
||||
|
||||
else return 30; //default
|
||||
}
|
||||
|
@ -6770,17 +6770,43 @@ ACMD_FUNC(uptime)
|
||||
|
||||
/*==========================================
|
||||
* @changesex <sex>
|
||||
* => Changes one's sex. Argument sex can be 0 or 1, m or f, male or female.
|
||||
* => Changes one's account sex. Argument sex can be 0 or 1, m or f, male or female.
|
||||
*------------------------------------------*/
|
||||
ACMD_FUNC(changesex)
|
||||
{
|
||||
int i;
|
||||
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
pc_resetskill(sd,4);
|
||||
// to avoid any problem with equipment and invalid sex, equipment is unequiped.
|
||||
for( i=0; i<EQI_MAX; i++ )
|
||||
if( sd->equip_index[i] >= 0 ) pc_unequipitem(sd, sd->equip_index[i], 3);
|
||||
chrif_changesex(sd);
|
||||
for (i = 0; i < EQI_MAX; i++) {
|
||||
if (sd->equip_index[i] >= 0)
|
||||
pc_unequipitem(sd, sd->equip_index[i], 3);
|
||||
}
|
||||
|
||||
chrif_changesex(sd, true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* @changecharsex <sex>
|
||||
* => Changes one's character sex. Argument sex can be 0 or 1, m or f, male or female.
|
||||
*------------------------------------------*/
|
||||
ACMD_FUNC(changecharsex)
|
||||
{
|
||||
int i;
|
||||
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
pc_resetskill(sd,4);
|
||||
// to avoid any problem with equipment and invalid sex, equipment is unequiped.
|
||||
for (i = 0; i < EQI_MAX; i++) {
|
||||
if (sd->equip_index[i] >= 0)
|
||||
pc_unequipitem(sd, sd->equip_index[i], 3);
|
||||
}
|
||||
|
||||
chrif_changesex(sd, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -8370,7 +8396,7 @@ ACMD_FUNC(auction)
|
||||
nullpo_ret(sd);
|
||||
|
||||
if (!battle_config.feature_auction) {
|
||||
clif_colormes(sd, color_table[COLOR_RED], msg_txt(sd, 517));
|
||||
clif_colormes(sd->fd, color_table[COLOR_RED], msg_txt(sd, 517));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -9886,6 +9912,7 @@ void atcommand_basecommands(void) {
|
||||
ACMD_DEF(clearweather),
|
||||
ACMD_DEF(uptime),
|
||||
ACMD_DEF(changesex),
|
||||
ACMD_DEF(changecharsex),
|
||||
ACMD_DEF(mute),
|
||||
ACMD_DEF(refresh),
|
||||
ACMD_DEF(refreshall),
|
||||
|
2008
src/map/battle.c
2008
src/map/battle.c
File diff suppressed because it is too large
Load Diff
@ -57,7 +57,7 @@ enum e_battle_check_target {
|
||||
/// Damage structure
|
||||
struct Damage {
|
||||
#ifdef RENEWAL
|
||||
int statusAtk, statusAtk2, weaponAtk, weaponAtk2, equipAtk, equipAtk2, masteryAtk, masteryAtk2;
|
||||
int64 statusAtk, statusAtk2, weaponAtk, weaponAtk2, equipAtk, equipAtk2, masteryAtk, masteryAtk2;
|
||||
#endif
|
||||
int64 damage, /// Right hand damage
|
||||
damage2; /// Left hand damage
|
||||
@ -81,10 +81,11 @@ struct block_list;
|
||||
// Damage Calculation
|
||||
|
||||
struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,uint16 skill_id,uint16 skill_lv,int flag);
|
||||
struct Damage battle_calc_attack_plant(struct Damage wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv);
|
||||
|
||||
int64 battle_calc_return_damage(struct block_list *bl, struct block_list *src, int64 *, int flag, uint16 skill_id, bool status_reflect);
|
||||
|
||||
void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss);
|
||||
void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int class_, bool infdef);
|
||||
|
||||
int battle_attr_ratio(int atk_elem,int def_type, int def_lv);
|
||||
int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 damage,int atk_elem,int def_type, int def_lv);
|
||||
@ -589,6 +590,7 @@ extern struct Battle_Config
|
||||
int homunculus_evo_intimacy_need;
|
||||
int homunculus_evo_intimacy_reset;
|
||||
int monster_loot_search_type;
|
||||
int feature_roulette;
|
||||
} battle_config;
|
||||
|
||||
void do_init_battle(void);
|
||||
|
@ -339,7 +339,7 @@ int channel_send(struct Channel *channel, struct map_session_data *sd, const cha
|
||||
return -1;
|
||||
|
||||
if(!pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) && channel->msg_delay != 0 && DIFF_TICK(sd->channel_tick + ( channel->msg_delay * 1000 ), gettick()) > 0) {
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1455)); //You're talking too fast!
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1455)); //You're talking too fast!
|
||||
return -2;
|
||||
}
|
||||
else {
|
||||
@ -483,7 +483,7 @@ int channel_display_list(struct map_session_data *sd, char *options){
|
||||
for( k = 0; k < channel_config.colors_count; k++ ) {
|
||||
if (channel_config.colors[k]) {
|
||||
sprintf(msg, msg_txt(sd,1445),channel_config.colors_name[k]);// - '%s'
|
||||
clif_colormes(sd,channel_config.colors[k],msg);
|
||||
clif_colormes(sd->fd,channel_config.colors[k],msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ static const int packet_len_table[0x3d] = { // U - used, F - free
|
||||
//2b0a: Outgoing, chrif_skillcooldown_request -> requesting the list of skillcooldown for char
|
||||
//2b0b: Incoming, chrif_skillcooldown_load -> received the list of cooldown for char
|
||||
//2b0c: Outgoing, chrif_changeemail -> 'change mail address ...'
|
||||
//2b0d: Incoming, chrif_changedsex -> 'Change sex of acc XY'
|
||||
//2b0d: Incoming, chrif_changedsex -> 'Change sex of acc XY' (or char)
|
||||
//2b0e: Outgoing, chrif_req_login_operation -> 'Do some operations (change sex, ban / unban etc)'
|
||||
//2b0f: Incoming, chrif_ack_login_req -> 'answer of the 2b0e'
|
||||
//2b10: Outgoing, chrif_updatefamelist -> 'Update the fame ranking lists and send them'
|
||||
@ -867,17 +867,19 @@ int chrif_req_login_operation(int aid, const char* character_name, unsigned shor
|
||||
|
||||
/**
|
||||
* S 2b0e <accid>.l <name>.24B <operation_type>.w <timediff>L <val1>L <val2>L
|
||||
* Send an account modification (changesex) request to the login server (via char server).
|
||||
* Send a sex change (for account or character) request to the login server (via char server).
|
||||
* @sd : Player requesting operation
|
||||
*/
|
||||
int chrif_changesex(struct map_session_data *sd) {
|
||||
int chrif_changesex(struct map_session_data *sd, bool change_account) {
|
||||
chrif_check(-1);
|
||||
|
||||
WFIFOHEAD(char_fd,44);
|
||||
WFIFOW(char_fd,0) = 0x2b0e;
|
||||
WFIFOL(char_fd,2) = sd->status.account_id;
|
||||
safestrncpy((char*)WFIFOP(char_fd,6), sd->status.name, NAME_LENGTH);
|
||||
WFIFOW(char_fd,30) = CHRIF_OP_LOGIN_CHANGESEX;
|
||||
WFIFOW(char_fd,30) = (change_account ? CHRIF_OP_LOGIN_CHANGESEX : CHRIF_OP_LOGIN_CHANGECHARSEX);
|
||||
if (!change_account)
|
||||
WFIFOB(char_fd,32) = sd->status.sex == SEX_MALE ? SEX_FEMALE : SEX_MALE;
|
||||
WFIFOSET(char_fd,44);
|
||||
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,408)); //"Need disconnection to perform change-sex request..."
|
||||
@ -920,6 +922,9 @@ static void chrif_ack_login_req(int aid, const char* player_name, uint16 type, u
|
||||
case CHRIF_OP_LOGIN_UNBLOCK:
|
||||
case CHRIF_OP_LOGIN_UNBAN:
|
||||
case CHRIF_OP_LOGIN_CHANGESEX:
|
||||
case CHRIF_OP_LOGIN_CHANGECHARSEX:
|
||||
if (type == CHRIF_OP_LOGIN_CHANGECHARSEX)
|
||||
type--; // So we don't have to create a new msgstring.
|
||||
snprintf(action,25,"%s",msg_txt(sd,427+type)); //block|ban|unblock|unban|change the sex of
|
||||
break;
|
||||
case CHRIF_OP_LOGIN_VIP:
|
||||
@ -932,7 +937,7 @@ static void chrif_ack_login_req(int aid, const char* player_name, uint16 type, u
|
||||
break;
|
||||
}
|
||||
|
||||
switch( answer ) {
|
||||
switch (answer) {
|
||||
case 0: sprintf(output, msg_txt(sd,424), action, NAME_LENGTH, player_name); break; //Login-serv has been asked to %s '%.*s'.
|
||||
case 1: sprintf(output, msg_txt(sd,425), NAME_LENGTH, player_name); break;
|
||||
case 2: sprintf(output, msg_txt(sd,426), action, NAME_LENGTH, player_name); break;
|
||||
|
@ -27,6 +27,7 @@ enum chrif_req_op {
|
||||
CHRIF_OP_LOGIN_UNBAN,
|
||||
CHRIF_OP_LOGIN_CHANGESEX,
|
||||
CHRIF_OP_LOGIN_VIP,
|
||||
CHRIF_OP_LOGIN_CHANGECHARSEX,
|
||||
|
||||
// Char-server operation
|
||||
CHRIF_OP_BAN,
|
||||
@ -73,7 +74,7 @@ int chrif_char_offline_nsd(uint32 account_id, uint32 char_id);
|
||||
int chrif_char_reset_offline(void);
|
||||
int send_users_tochar(void);
|
||||
int chrif_char_online(struct map_session_data *sd);
|
||||
int chrif_changesex(struct map_session_data *sd);
|
||||
int chrif_changesex(struct map_session_data *sd, bool change_account);
|
||||
int chrif_chardisconnect(struct map_session_data *sd);
|
||||
int chrif_divorce(int partner_id1, int partner_id2);
|
||||
|
||||
|
410
src/map/clif.c
410
src/map/clif.c
@ -70,6 +70,7 @@ static struct s_packet_keys *packet_keys[MAX_PACKET_VER + 1];
|
||||
static unsigned int clif_cryptKey[3]; // Used keys
|
||||
#endif
|
||||
static unsigned short clif_parse_cmd(int fd, struct map_session_data *sd);
|
||||
static bool clif_session_isValid(struct map_session_data *sd);
|
||||
|
||||
/** Converts item type to display it on client if necessary.
|
||||
* @param nameid: Item ID
|
||||
@ -284,6 +285,12 @@ static inline unsigned char clif_bl_type(struct block_list *bl) {
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool clif_session_isValid(struct map_session_data *sd) {
|
||||
if (sd != NULL && sd->packet_ver <= MAX_PACKET_VER && session_isActive(sd->fd))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* sub process of clif_send
|
||||
* Called from a map_foreachinarea (grabs all players in specific area and subjects them to this function)
|
||||
@ -655,6 +662,9 @@ void clif_authok(struct map_session_data *sd)
|
||||
WFIFOB(fd,10) = 5; // ignored
|
||||
#if PACKETVER >= 20080102
|
||||
WFIFOW(fd,11) = sd->status.font;
|
||||
#endif
|
||||
#if PACKETVER >= 20141016
|
||||
WFIFOB(fd,13) = sd->status.sex;
|
||||
#endif
|
||||
WFIFOSET(fd,packet_len(cmd));
|
||||
}
|
||||
@ -1250,13 +1260,13 @@ static void clif_spiritball_single(int fd, struct map_session_data *sd)
|
||||
/*==========================================
|
||||
* Kagerou/Oboro amulet spirit
|
||||
*------------------------------------------*/
|
||||
static void clif_talisman_single(int fd, struct map_session_data *sd, short type)
|
||||
static void clif_spiritcharm_single(int fd, struct map_session_data *sd)
|
||||
{
|
||||
WFIFOHEAD(fd, packet_len(0x08cf));
|
||||
WFIFOW(fd,0)=0x08cf;
|
||||
WFIFOL(fd,2)=sd->bl.id;
|
||||
WFIFOW(fd,6)=type;
|
||||
WFIFOW(fd,8)=sd->talisman[type];
|
||||
WFIFOW(fd,6)=sd->spiritcharm_type;
|
||||
WFIFOW(fd,8)=sd->spiritcharm;
|
||||
WFIFOSET(fd, packet_len(0x08cf));
|
||||
}
|
||||
|
||||
@ -1354,10 +1364,8 @@ int clif_spawn(struct block_list *bl)
|
||||
clif_specialeffect(bl,421,AREA);
|
||||
if( sd->bg_id && map[sd->bl.m].flag.battleground )
|
||||
clif_sendbgemblem_area(sd);
|
||||
for(i = 1; i < 5; i++){
|
||||
if( sd->talisman[i] > 0 )
|
||||
clif_talisman(sd, i);
|
||||
}
|
||||
if (sd->spiritcharm_type != CHARM_TYPE_NONE && sd->spiritcharm > 0)
|
||||
clif_spiritcharm(sd);
|
||||
for (i = 0; i < sd->sc_display_count; i++) {
|
||||
if (sc && (sc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_INVISIBLE|OPTION_CHASEWALK)))
|
||||
clif_status_change2(&sd->bl,sd->bl.id,AREA,SI_BLANK,0,0,0);
|
||||
@ -1403,7 +1411,7 @@ void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
|
||||
int htype;
|
||||
|
||||
nullpo_retv(hd);
|
||||
if (!sd)
|
||||
if (!clif_session_isValid(sd))
|
||||
return;
|
||||
|
||||
status = &hd->battle_status;
|
||||
@ -1503,6 +1511,9 @@ int clif_homskillinfoblock(struct map_session_data *sd)
|
||||
struct homun_data *hd;
|
||||
int fd = sd->fd;
|
||||
int i, len=4;
|
||||
|
||||
nullpo_ret(sd);
|
||||
|
||||
WFIFOHEAD(fd, 4+37*MAX_HOMUNSKILL);
|
||||
|
||||
hd = sd->hd;
|
||||
@ -4310,10 +4321,8 @@ static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_d
|
||||
|
||||
if(dstsd->spiritball > 0)
|
||||
clif_spiritball_single(sd->fd, dstsd);
|
||||
for(i = 1; i < 5; i++){
|
||||
if( dstsd->talisman[i] > 0 )
|
||||
clif_talisman_single(sd->fd, dstsd, i);
|
||||
}
|
||||
if (dstsd->spiritcharm_type != CHARM_TYPE_NONE && dstsd->spiritcharm > 0)
|
||||
clif_spiritcharm_single(sd->fd, dstsd);
|
||||
for( i = 0; i < dstsd->sc_display_count; i++ ) {
|
||||
if (dstsd->sc.option&(OPTION_HIDE|OPTION_CLOAK|OPTION_INVISIBLE|OPTION_CHASEWALK))
|
||||
clif_status_change2(&sd->bl, dstsd->bl.id, SELF, SI_BLANK, 0, 0, 0);
|
||||
@ -5748,6 +5757,24 @@ void clif_displaymessage(const int fd, const char* mes)
|
||||
if (fd == 0)
|
||||
;
|
||||
else {
|
||||
#if PACKETVER == 20141022
|
||||
/** for some reason game client crashes depending on message pattern (only for this packet) **/
|
||||
/** so we redirect to ZC_NPC_CHAT **/
|
||||
//clif_colormes(fd, color_table[COLOR_DEFAULT], mes);
|
||||
unsigned long color = (color_table[COLOR_DEFAULT] & 0x0000FF) << 16 | (color_table[COLOR_DEFAULT] & 0x00FF00) | (color_table[COLOR_DEFAULT] & 0xFF0000) >> 16; // RGB to BGR
|
||||
|
||||
int len = strnlen(mes, 255);
|
||||
|
||||
if (len > 0) {
|
||||
WFIFOHEAD(fd, 13 + len);
|
||||
WFIFOW(fd, 0) = 0x2C1;
|
||||
WFIFOW(fd, 2) = 13 + len;
|
||||
WFIFOL(fd, 4) = 0;
|
||||
WFIFOL(fd, 8) = color;
|
||||
safestrncpy((char*)WFIFOP(fd, 12), mes, len + 1);
|
||||
WFIFOSET(fd, WFIFOW(fd, 2));
|
||||
}
|
||||
#else
|
||||
char *message, *line;
|
||||
|
||||
message = aStrdup(mes);
|
||||
@ -5766,6 +5793,7 @@ void clif_displaymessage(const int fd, const char* mes)
|
||||
line = strtok(NULL, "\n");
|
||||
}
|
||||
aFree(message);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -6459,7 +6487,7 @@ void clif_parse_BankOpen(int fd, struct map_session_data* sd) {
|
||||
//also mark something in case char ain't available for saving, should we check now ?
|
||||
nullpo_retv(sd);
|
||||
if( !battle_config.feature_banking ) {
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
return;
|
||||
}
|
||||
else {
|
||||
@ -6499,7 +6527,7 @@ void clif_parse_BankClose(int fd, struct map_session_data* sd) {
|
||||
|
||||
nullpo_retv(sd);
|
||||
if( !battle_config.feature_banking ) {
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
//still allow to go trough to not stuck player if we have disable it while they was in
|
||||
}
|
||||
if(sd->status.account_id == aid){
|
||||
@ -6541,7 +6569,7 @@ void clif_parse_BankCheck(int fd, struct map_session_data* sd) {
|
||||
nullpo_retv(sd);
|
||||
|
||||
if( !battle_config.feature_banking ) {
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
return;
|
||||
}
|
||||
else {
|
||||
@ -6585,7 +6613,7 @@ void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK r
|
||||
void clif_parse_BankDeposit(int fd, struct map_session_data* sd) {
|
||||
nullpo_retv(sd);
|
||||
if( !battle_config.feature_banking ) {
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
return;
|
||||
}
|
||||
else {
|
||||
@ -6633,7 +6661,7 @@ void clif_bank_withdraw(struct map_session_data *sd,enum e_BANKING_WITHDRAW_ACK
|
||||
void clif_parse_BankWithdraw(int fd, struct map_session_data* sd) {
|
||||
nullpo_retv(sd);
|
||||
if( !battle_config.feature_banking ) {
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1496)); //Banking is disabled
|
||||
return;
|
||||
}
|
||||
else {
|
||||
@ -6830,6 +6858,14 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven
|
||||
clif_addcards(WFIFOP(fd,22+i*22), &sd->status.cart[index]);
|
||||
}
|
||||
WFIFOSET(fd,WFIFOW(fd,2));
|
||||
|
||||
#if PACKETVER >= 20141022
|
||||
// Should go elsewhere perhaps? It has to be bundled with this however.
|
||||
WFIFOHEAD(fd, 3);
|
||||
WFIFOW(fd, 0) = 0xa28;
|
||||
WFIFOB(fd, 2) = 0; // 1 is failure. Our current responses to failure are working so not yet implemented.
|
||||
WFIFOSET(fd, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -8781,16 +8817,16 @@ void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, sen
|
||||
}
|
||||
// Modification of clif_messagecolor to send colored messages to players to chat log only (doesn't display overhead)
|
||||
/// 02c1 <packet len>.W <id>.L <color>.L <message>.?B
|
||||
int clif_colormes(struct map_session_data * sd, unsigned long color, const char* msg) {
|
||||
int clif_colormes(int fd, unsigned long color, const char* msg) {
|
||||
unsigned short msg_len = strlen(msg) + 1;
|
||||
|
||||
WFIFOHEAD(sd->fd,msg_len + 12);
|
||||
WFIFOW(sd->fd,0) = 0x2C1;
|
||||
WFIFOW(sd->fd,2) = msg_len + 12;
|
||||
WFIFOL(sd->fd,4) = 0;
|
||||
WFIFOL(sd->fd,8) = color; //either color_table or channel_table
|
||||
safestrncpy((char*)WFIFOP(sd->fd,12), msg, msg_len);
|
||||
WFIFOSET(sd->fd, msg_len + 12);
|
||||
WFIFOHEAD(fd,msg_len + 12);
|
||||
WFIFOW(fd,0) = 0x2C1;
|
||||
WFIFOW(fd,2) = msg_len + 12;
|
||||
WFIFOL(fd,4) = 0;
|
||||
WFIFOL(fd,8) = color; //either color_table or channel_table
|
||||
safestrncpy((char*)WFIFOP(fd,12), msg, msg_len);
|
||||
WFIFOSET(fd, msg_len + 12);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -8870,7 +8906,6 @@ void clif_refresh_storagewindow(struct map_session_data *sd) {
|
||||
// refresh the client's screen, getting rid of any effects
|
||||
void clif_refresh(struct map_session_data *sd)
|
||||
{
|
||||
int i;
|
||||
nullpo_retv(sd);
|
||||
|
||||
clif_changemap(sd,sd->bl.m,sd->bl.x,sd->bl.y);
|
||||
@ -8889,10 +8924,8 @@ void clif_refresh(struct map_session_data *sd)
|
||||
clif_updatestatus(sd,SP_LUK);
|
||||
if (sd->spiritball)
|
||||
clif_spiritball_single(sd->fd, sd);
|
||||
for(i = 1; i < 5; i++){
|
||||
if( sd->talisman[i] > 0 )
|
||||
clif_talisman_single(sd->fd, sd, i);
|
||||
}
|
||||
if (sd->spiritcharm_type != CHARM_TYPE_NONE && sd->spiritcharm > 0)
|
||||
clif_spiritcharm_single(sd->fd, sd);
|
||||
if (sd->vd.cloth_color)
|
||||
clif_refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
|
||||
if(hom_is_active(sd->hd))
|
||||
@ -10114,18 +10147,22 @@ void clif_hotkeys_send(struct map_session_data *sd) {
|
||||
#ifdef HOTKEY_SAVING
|
||||
const int fd = sd->fd;
|
||||
int i;
|
||||
int offset = 2;
|
||||
#if PACKETVER < 20090603
|
||||
const int cmd = 0x2b9;
|
||||
#else
|
||||
#elif PACKETVER < 20141022
|
||||
const int cmd = 0x7d9;
|
||||
#else
|
||||
const int cmd = 0xa00;
|
||||
offset = 3;
|
||||
#endif
|
||||
if (!fd) return;
|
||||
WFIFOHEAD(fd, 2+MAX_HOTKEYS*7);
|
||||
WFIFOHEAD(fd, offset + MAX_HOTKEYS * 7);
|
||||
WFIFOW(fd, 0) = cmd;
|
||||
for(i = 0; i < MAX_HOTKEYS; i++) {
|
||||
WFIFOB(fd, 2 + 0 + i * 7) = sd->status.hotkeys[i].type; // type: 0: item, 1: skill
|
||||
WFIFOL(fd, 2 + 1 + i * 7) = sd->status.hotkeys[i].id; // item or skill ID
|
||||
WFIFOW(fd, 2 + 5 + i * 7) = sd->status.hotkeys[i].lv; // skill level
|
||||
WFIFOB(fd, offset + 0 + i * 7) = sd->status.hotkeys[i].type; // type: 0: item, 1: skill
|
||||
WFIFOL(fd, offset + 1 + i * 7) = sd->status.hotkeys[i].id; // item or skill ID
|
||||
WFIFOW(fd, offset + 5 + i * 7) = sd->status.hotkeys[i].lv; // item qty or skill level
|
||||
}
|
||||
WFIFOSET(fd, packet_len(cmd));
|
||||
#endif
|
||||
@ -11504,7 +11541,8 @@ static void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct
|
||||
return;
|
||||
if( DIFF_TICK(tick, md->ud.canact_tick) < 0 )
|
||||
{
|
||||
clif_skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
|
||||
if (md->master)
|
||||
clif_skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -12871,18 +12909,18 @@ void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd){
|
||||
return;
|
||||
|
||||
if(!(battle_config.emblem_woe_change) && (agit_flag || agit2_flag) ){
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,385)); //"You not allowed to change emblem during woe"
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,385)); //"You not allowed to change emblem during woe"
|
||||
return;
|
||||
}
|
||||
emb_val = clif_validate_emblem(emblem, emblem_len);
|
||||
if(emb_val ==-1 ){
|
||||
ShowWarning("clif_parse_GuildChangeEmblem: Rejected malformed guild emblem (size=%lu, accound_id=%d, char_id=%d, guild_id=%d).\n", emblem_len, sd->status.account_id, sd->status.char_id, sd->status.guild_id);
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,386)); //"The chosen emblem was detected invalid\n"
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,386)); //"The chosen emblem was detected invalid\n"
|
||||
return;
|
||||
} else if(emb_val == -2){
|
||||
char output[128];
|
||||
safesnprintf(output,sizeof(output),msg_txt(sd,387),battle_config.emblem_transparency_limit);
|
||||
clif_colormes(sd,color_table[COLOR_RED],output); //"The chosen emblem was detected invalid as it contain too much transparency (limit=%d)\n"
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],output); //"The chosen emblem was detected invalid as it contain too much transparency (limit=%d)\n"
|
||||
return;
|
||||
}
|
||||
|
||||
@ -15737,7 +15775,7 @@ void clif_mercenary_updatestatus(struct map_session_data *sd, int type)
|
||||
struct mercenary_data *md;
|
||||
struct status_data *status;
|
||||
int fd;
|
||||
if( sd == NULL || (md = sd->md) == NULL )
|
||||
if( !clif_session_isValid(sd) || (md = sd->md) == NULL )
|
||||
return;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -15807,7 +15845,7 @@ void clif_mercenary_info(struct map_session_data *sd)
|
||||
struct status_data *status;
|
||||
int atk;
|
||||
|
||||
if( sd == NULL || (md = sd->md) == NULL )
|
||||
if( !clif_session_isValid(sd) || (md = sd->md) == NULL )
|
||||
return;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -16335,7 +16373,7 @@ void clif_elemental_updatestatus(struct map_session_data *sd, int type) {
|
||||
struct status_data *status;
|
||||
int fd;
|
||||
|
||||
if( sd == NULL || (ed = sd->ed) == NULL )
|
||||
if( !clif_session_isValid(sd) || (ed = sd->ed) == NULL )
|
||||
return;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -16365,7 +16403,7 @@ void clif_elemental_info(struct map_session_data *sd) {
|
||||
struct elemental_data *ed;
|
||||
struct status_data *status;
|
||||
|
||||
if( sd == NULL || (ed = sd->ed) == NULL )
|
||||
if( !clif_session_isValid(sd) || (ed = sd->ed) == NULL )
|
||||
return;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -17166,7 +17204,7 @@ void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) {
|
||||
/*==========================================
|
||||
* Kagerou/Oboro amulet spirit
|
||||
*------------------------------------------*/
|
||||
void clif_talisman(struct map_session_data *sd,short type)
|
||||
void clif_spiritcharm(struct map_session_data *sd)
|
||||
{
|
||||
unsigned char buf[10];
|
||||
|
||||
@ -17174,8 +17212,8 @@ void clif_talisman(struct map_session_data *sd,short type)
|
||||
|
||||
WBUFW(buf,0)=0x08cf;
|
||||
WBUFL(buf,2)=sd->bl.id;
|
||||
WBUFW(buf,6)=type;
|
||||
WBUFW(buf,8)=sd->talisman[type];
|
||||
WBUFW(buf,6)=sd->spiritcharm_type;
|
||||
WBUFW(buf,8)=sd->spiritcharm;
|
||||
clif_send(buf,packet_len(0x08cf),&sd->bl,AREA);
|
||||
}
|
||||
/// Move Item from or to Personal Tab (CZ_WHATSOEVER) [FE]
|
||||
@ -17729,6 +17767,264 @@ void DumpUnknown(int fd,TBL_PC *sd,int cmd,int packet_len)
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Roulette System
|
||||
/// Author: Yommy
|
||||
|
||||
/**
|
||||
* Opens Roulette window
|
||||
* @param fd
|
||||
* @param sd
|
||||
*/
|
||||
void clif_parse_RouletteOpen(int fd, struct map_session_data* sd)
|
||||
{
|
||||
nullpo_retv(sd);
|
||||
|
||||
if (!battle_config.feature_roulette) {
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1497)); //Roulette is disabled
|
||||
return;
|
||||
}
|
||||
|
||||
WFIFOHEAD(fd,packet_len(0xa1a));
|
||||
WFIFOW(fd,0) = 0xa1a;
|
||||
WFIFOB(fd,2) = 0; // result
|
||||
WFIFOL(fd,3) = 0; // serial
|
||||
WFIFOB(fd,7) = (sd->roulette.claimPrize) ? sd->roulette.stage - 1 : 0;
|
||||
WFIFOB(fd,8) = (sd->roulette.claimPrize) ? sd->roulette.prizeIdx : -1;
|
||||
WFIFOW(fd,9) = -1; //! TODO: Display bonus item
|
||||
WFIFOL(fd,11) = sd->roulette_point.gold;
|
||||
WFIFOL(fd,15) = sd->roulette_point.silver;
|
||||
WFIFOL(fd,19) = sd->roulette_point.bronze;
|
||||
WFIFOSET(fd,packet_len(0xa1a));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates information to be displayed
|
||||
* @param fd
|
||||
* @param sd
|
||||
*/
|
||||
void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
|
||||
{
|
||||
unsigned short i, j, count = 0;
|
||||
int len = 8 + (42 * 8);
|
||||
|
||||
nullpo_retv(sd);
|
||||
|
||||
if (!battle_config.feature_roulette) {
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1497)); //Roulette is disabled
|
||||
return;
|
||||
}
|
||||
|
||||
WFIFOHEAD(fd,len);
|
||||
WFIFOW(fd,0) = 0xa1c;
|
||||
WFIFOW(fd,2) = len;
|
||||
WFIFOL(fd,4) = 1; // serial
|
||||
|
||||
for(i = 0; i < MAX_ROULETTE_LEVEL; i++) {
|
||||
for(j = 0; j < MAX_ROULETTE_COLUMNS - i; j++) {
|
||||
WFIFOW(fd,8 * count + 8) = i;
|
||||
WFIFOW(fd,8 * count + 10) = j;
|
||||
WFIFOW(fd,8 * count + 12) = rd.nameid[i][j];
|
||||
WFIFOW(fd,8 * count + 14) = rd.qty[i][j];
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
WFIFOSET(fd,len);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes Roulette window
|
||||
* @param fd
|
||||
* @param sd
|
||||
*/
|
||||
void clif_parse_RouletteClose(int fd, struct map_session_data* sd)
|
||||
{
|
||||
nullpo_retv(sd);
|
||||
|
||||
if (!battle_config.feature_roulette) {
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1497)); //Roulette is disabled
|
||||
return;
|
||||
}
|
||||
|
||||
/** What do we need this for? (other than state tracking), game client closes the window without our response. **/
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
**/
|
||||
static void clif_roulette_recvitem_ack(struct map_session_data *sd, enum RECV_ROULETTE_ITEM_REQ type) {
|
||||
#if PACKETVER >= 20141016
|
||||
uint16 cmd = 0xa22;
|
||||
unsigned char buf[5];
|
||||
|
||||
nullpo_retv(sd);
|
||||
|
||||
if (packet_db[sd->packet_ver][cmd].len == 0)
|
||||
return;
|
||||
|
||||
WBUFW(buf,0) = cmd;
|
||||
WBUFB(buf,2) = type;
|
||||
WBUFW(buf,3) = 0; //! TODO: Additional item
|
||||
clif_send(buf, sizeof(buf), &sd->bl, SELF);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Claim roulette reward
|
||||
* @param sd Player
|
||||
* @return 0:Success
|
||||
**/
|
||||
static uint8 clif_roulette_getitem(struct map_session_data *sd) {
|
||||
struct item it;
|
||||
uint8 res = 1;
|
||||
|
||||
nullpo_retr(1, sd);
|
||||
|
||||
if (sd->roulette.prizeIdx < 0)
|
||||
return RECV_ITEM_FAILED;
|
||||
|
||||
memset(&it, 0, sizeof(it));
|
||||
|
||||
it.nameid = rd.nameid[sd->roulette.prizeStage][sd->roulette.prizeIdx];
|
||||
it.identify = 1;
|
||||
|
||||
if ((res = pc_additem(sd, &it, rd.qty[sd->roulette.prizeStage][sd->roulette.prizeIdx], LOG_TYPE_ROULETTE)) == 0) {
|
||||
; // onSuccess
|
||||
}
|
||||
|
||||
sd->roulette.claimPrize = false;
|
||||
sd->roulette.prizeStage = 0;
|
||||
sd->roulette.prizeIdx = -1;
|
||||
sd->roulette.stage = 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the stage and attempt to give a prize
|
||||
* @param fd
|
||||
* @param sd
|
||||
*/
|
||||
void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd)
|
||||
{
|
||||
enum GENERATE_ROULETTE_ACK result = GENERATE_ROULETTE_SUCCESS;
|
||||
short stage = sd->roulette.stage;
|
||||
|
||||
nullpo_retv(sd);
|
||||
|
||||
if (!battle_config.feature_roulette) {
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1497)); //Roulette is disabled
|
||||
return;
|
||||
}
|
||||
|
||||
if (sd->roulette.stage >= MAX_ROULETTE_LEVEL)
|
||||
stage = sd->roulette.stage = 0;
|
||||
|
||||
if (!stage) {
|
||||
if (sd->roulette_point.bronze <= 0 && sd->roulette_point.silver < 10 && sd->roulette_point.gold < 10)
|
||||
result = GENERATE_ROULETTE_NO_ENOUGH_POINT;
|
||||
}
|
||||
|
||||
if (result == GENERATE_ROULETTE_SUCCESS) {
|
||||
if (!stage) {
|
||||
if (sd->roulette_point.bronze > 0) {
|
||||
sd->roulette_point.bronze -= 1;
|
||||
pc_setreg2(sd, ROULETTE_BRONZE_VAR, sd->roulette_point.bronze);
|
||||
} else if (sd->roulette_point.silver > 9) {
|
||||
sd->roulette_point.silver -= 10;
|
||||
stage = sd->roulette.stage = 2;
|
||||
pc_setreg2(sd, ROULETTE_SILVER_VAR, sd->roulette_point.silver);
|
||||
} else if (sd->roulette_point.gold > 9) {
|
||||
sd->roulette_point.gold -= 10;
|
||||
stage = sd->roulette.stage = 4;
|
||||
pc_setreg2(sd, ROULETTE_GOLD_VAR, sd->roulette_point.gold);
|
||||
}
|
||||
}
|
||||
|
||||
sd->roulette.prizeStage = stage;
|
||||
sd->roulette.prizeIdx = rnd()%rd.items[stage];
|
||||
|
||||
if (rd.flag[stage][sd->roulette.prizeIdx]&1) {
|
||||
clif_roulette_generate_ack(sd,GENERATE_ROULETTE_LOSING,stage,sd->roulette.prizeIdx,0);
|
||||
clif_roulette_getitem(sd);
|
||||
clif_roulette_recvitem_ack(sd, RECV_ITEM_SUCCESS);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
sd->roulette.claimPrize = true;
|
||||
sd->roulette.stage++;
|
||||
}
|
||||
}
|
||||
|
||||
clif_roulette_generate_ack(sd,result,stage,(sd->roulette.prizeIdx == -1 ? 0 : sd->roulette.prizeIdx),0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to cash in prize
|
||||
* @param fd
|
||||
* @param sd
|
||||
*/
|
||||
void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd)
|
||||
{
|
||||
enum RECV_ROULETTE_ITEM_REQ type = RECV_ITEM_FAILED;
|
||||
nullpo_retv(sd);
|
||||
|
||||
if (!battle_config.feature_roulette) {
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1497)); //Roulette is disabled
|
||||
return;
|
||||
}
|
||||
|
||||
if (sd->roulette.claimPrize && sd->roulette.prizeIdx != -1) {
|
||||
switch (clif_roulette_getitem(sd)) {
|
||||
case 0:
|
||||
type = RECV_ITEM_SUCCESS;
|
||||
break;
|
||||
case 1:
|
||||
case 4:
|
||||
case 5:
|
||||
type = RECV_ITEM_OVERCOUNT;
|
||||
break;
|
||||
case 2:
|
||||
type = RECV_ITEM_OVERWEIGHT;
|
||||
break;
|
||||
case 7:
|
||||
default:
|
||||
type = RECV_ITEM_FAILED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
clif_roulette_recvitem_ack(sd,type);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Roulette window with current stats
|
||||
* @param sd
|
||||
* @param result
|
||||
* @param stage
|
||||
* @param prizeIdx
|
||||
* @param bonusItemID
|
||||
*/
|
||||
void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID)
|
||||
{
|
||||
int fd = sd->fd;
|
||||
|
||||
nullpo_retv(sd);
|
||||
|
||||
WFIFOHEAD(fd,packet_len(0xa20));
|
||||
WFIFOW(fd,0) = 0xa20;
|
||||
WFIFOB(fd,2) = result;
|
||||
WFIFOW(fd,3) = stage;
|
||||
WFIFOW(fd,5) = prizeIdx;
|
||||
WFIFOW(fd,7) = bonusItemID;
|
||||
WFIFOL(fd,9) = sd->roulette_point.gold;
|
||||
WFIFOL(fd,13) = sd->roulette_point.silver;
|
||||
WFIFOL(fd,17) = sd->roulette_point.bronze;
|
||||
WFIFOSET(fd,packet_len(0xa20));
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* Main client packet processing function
|
||||
*------------------------------------------*/
|
||||
@ -18120,8 +18416,17 @@ void packetdb_readdb(bool reload)
|
||||
//#0x09C0
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0,102, 0,
|
||||
0, 0, 0, 0, 2, 0, -1, -1, 2, 0, 0, 0, 0, 0, 0, 7,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 3, 11, 0, 11, -1, 0, 3, 11, 0,
|
||||
0, 11, 12, 11, 0, 0, 0, 0, 0,143, 0, 0, 0, 0, 0, 0,
|
||||
//#0x0a00
|
||||
#if PACKETVER >= 20141022
|
||||
269, 0, 0, 2, 6, 49, 6, 9, 26, 45, 47, 47, 56, -1, 0, 0,
|
||||
#else
|
||||
269, 0, 0, 2, 6, 48, 6, 9, 26, 45, 47, 47, 56, -1, 0, 0,
|
||||
#endif
|
||||
0, 0, 0, 26, 0, 0, 0, 0, 0, 2, 23, 2, -1, 2, 3, 2,
|
||||
21, 3, 5, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
struct {
|
||||
void (*func)(int, struct map_session_data *);
|
||||
@ -18344,9 +18649,15 @@ void packetdb_readdb(bool reload)
|
||||
{ clif_parse_client_version, "clientversion"},
|
||||
{ clif_parse_blocking_playcancel, "booking_playcancel"},
|
||||
{ clif_parse_ranklist, "ranklist"},
|
||||
/* Market NPC */
|
||||
// Market NPC
|
||||
{ clif_parse_NPCMarketClosed, "npcmarketclosed" },
|
||||
{ clif_parse_NPCMarketPurchase, "npcmarketpurchase" },
|
||||
// Roulette
|
||||
{ clif_parse_RouletteOpen, "rouletteopen" },
|
||||
{ clif_parse_RouletteInfo, "rouletteinfo" },
|
||||
{ clif_parse_RouletteClose, "rouletteclose" },
|
||||
{ clif_parse_RouletteGenerate, "roulettegenerate" },
|
||||
{ clif_parse_RouletteRecvItem, "rouletterecvitem" },
|
||||
{NULL,NULL}
|
||||
};
|
||||
struct {
|
||||
@ -18591,6 +18902,7 @@ void packetdb_readdb(bool reload)
|
||||
*------------------------------------------*/
|
||||
void do_init_clif(void) {
|
||||
const char* colors[COLOR_MAX] = {
|
||||
"0x00FF00",
|
||||
"0xFF0000",
|
||||
"0xFFFFFF",
|
||||
"0xFFFF00",
|
||||
|
@ -33,9 +33,9 @@ struct party_booking_ad_info;
|
||||
#include <stdarg.h>
|
||||
|
||||
enum { // packet DB
|
||||
MIN_PACKET_DB = 0x0064,
|
||||
MAX_PACKET_DB = 0xf00,
|
||||
MAX_PACKET_VER = 46,
|
||||
MIN_PACKET_DB = 0x064,
|
||||
MAX_PACKET_DB = 0xAFF,
|
||||
MAX_PACKET_VER = 51,
|
||||
MAX_PACKET_POS = 20,
|
||||
};
|
||||
|
||||
@ -73,13 +73,42 @@ enum e_BANKING_DEPOSIT_ACK {
|
||||
BDA_NO_MONEY = 0x2,
|
||||
BDA_OVERFLOW = 0x3,
|
||||
};
|
||||
|
||||
|
||||
enum e_BANKING_WITHDRAW_ACK {
|
||||
BWA_SUCCESS = 0x0,
|
||||
BWA_NO_MONEY = 0x1,
|
||||
BWA_UNKNOWN_ERROR = 0x2,
|
||||
};
|
||||
|
||||
enum RECV_ROULETTE_ITEM_REQ {
|
||||
RECV_ITEM_SUCCESS = 0x0,
|
||||
RECV_ITEM_FAILED = 0x1,
|
||||
RECV_ITEM_OVERCOUNT = 0x2,
|
||||
RECV_ITEM_OVERWEIGHT = 0x3,
|
||||
};
|
||||
|
||||
enum RECV_ROULETTE_ITEM_ACK {
|
||||
RECV_ITEM_NORMAL = 0x0,
|
||||
RECV_ITEM_LOSING = 0x1,
|
||||
};
|
||||
|
||||
enum GENERATE_ROULETTE_ACK {
|
||||
GENERATE_ROULETTE_SUCCESS = 0x0,
|
||||
GENERATE_ROULETTE_FAILED = 0x1,
|
||||
GENERATE_ROULETTE_NO_ENOUGH_POINT = 0x2,
|
||||
GENERATE_ROULETTE_LOSING = 0x3,
|
||||
};
|
||||
|
||||
enum OPEN_ROULETTE_ACK {
|
||||
OPEN_ROULETTE_SUCCESS = 0x0,
|
||||
OPEN_ROULETTE_FAILED = 0x1,
|
||||
};
|
||||
|
||||
enum CLOSE_ROULETTE_ACK {
|
||||
CLOSE_ROULETTE_SUCCESS = 0x0,
|
||||
CLOSE_ROULETTE_FAILED = 0x1,
|
||||
};
|
||||
|
||||
// packet_db[SERVER] is reserved for server use
|
||||
#define SERVER 0
|
||||
#define packet_len(cmd) packet_db[SERVER][cmd].len
|
||||
@ -861,6 +890,14 @@ void clif_cashshop_open( struct map_session_data* sd );
|
||||
|
||||
void clif_display_pinfo(struct map_session_data *sd, int type);
|
||||
|
||||
/// Roulette
|
||||
void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID);
|
||||
void clif_parse_RouletteOpen(int fd, struct map_session_data *sd);
|
||||
void clif_parse_RouletteInfo(int fd, struct map_session_data *sd);
|
||||
void clif_parse_RouletteClose(int fd, struct map_session_data *sd);
|
||||
void clif_parse_RouletteGenerate(int fd, struct map_session_data *sd);
|
||||
void clif_parse_RouletteRecvItem(int fd, struct map_session_data *sd);
|
||||
|
||||
/**
|
||||
* 3CeAM
|
||||
**/
|
||||
@ -883,7 +920,7 @@ int clif_skill_itemlistwindow( struct map_session_data *sd, uint16 skill_id, uin
|
||||
void clif_elemental_info(struct map_session_data *sd);
|
||||
void clif_elemental_updatestatus(struct map_session_data *sd, int type);
|
||||
|
||||
void clif_talisman(struct map_session_data *sd, short type);
|
||||
void clif_spiritcharm(struct map_session_data *sd);
|
||||
|
||||
void clif_snap( struct block_list *bl, short x, short y );
|
||||
void clif_monster_hp_bar( struct mob_data* md, int fd );
|
||||
@ -892,13 +929,14 @@ void clif_monster_hp_bar( struct mob_data* md, int fd );
|
||||
* Color Table
|
||||
**/
|
||||
enum clif_colors {
|
||||
COLOR_DEFAULT,
|
||||
COLOR_RED,
|
||||
COLOR_WHITE,
|
||||
COLOR_YELLOW,
|
||||
COLOR_MAX
|
||||
};
|
||||
unsigned long color_table[COLOR_MAX];
|
||||
int clif_colormes(struct map_session_data * sd, unsigned long color, const char* msg);
|
||||
int clif_colormes(int fd, unsigned long color, const char* msg);
|
||||
|
||||
void clif_channel_msg(struct Channel *channel, struct map_session_data *sd, char *msg, short color);
|
||||
|
||||
|
@ -526,6 +526,8 @@ int elemental_change_mode(struct elemental_data *ed, int mode) {
|
||||
}
|
||||
|
||||
void elemental_heal(struct elemental_data *ed, int hp, int sp) {
|
||||
if (ed->master == NULL)
|
||||
return;
|
||||
if( hp )
|
||||
clif_elemental_updatestatus(ed->master, SP_HP);
|
||||
if( sp )
|
||||
|
@ -184,7 +184,8 @@ void hom_delspiritball(TBL_HOM *hd, int count, int type) {
|
||||
* @param hd
|
||||
*/
|
||||
void hom_damage(struct homun_data *hd) {
|
||||
clif_hominfo(hd->master,hd,0);
|
||||
if (hd->master)
|
||||
clif_hominfo(hd->master,hd,0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -513,7 +514,7 @@ int hom_levelup(struct homun_data *hd)
|
||||
|
||||
APPLY_HOMUN_LEVEL_STATWEIGHT();
|
||||
|
||||
if ( battle_config.homunculus_show_growth ) {
|
||||
if ( hd->master && battle_config.homunculus_show_growth ) {
|
||||
char output[256] ;
|
||||
sprintf(output,
|
||||
"Growth: hp:%d sp:%d str(%.2f) agi(%.2f) vit(%.2f) int(%.2f) dex(%.2f) luk(%.2f) ",
|
||||
@ -683,7 +684,7 @@ void hom_gainexp(struct homun_data *hd,int exp)
|
||||
|
||||
hd->homunculus.exp += exp;
|
||||
|
||||
if (hd->homunculus.exp < hd->exp_next) {
|
||||
if (hd->master && hd->homunculus.exp < hd->exp_next) {
|
||||
clif_hominfo(hd->master,hd,0);
|
||||
return;
|
||||
}
|
||||
@ -745,7 +746,8 @@ int hom_decrease_intimacy(struct homun_data * hd, unsigned int value)
|
||||
* @param hd
|
||||
*/
|
||||
void hom_heal(struct homun_data *hd) {
|
||||
clif_hominfo(hd->master,hd,0);
|
||||
if (hd->master)
|
||||
clif_hominfo(hd->master,hd,0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
122
src/map/itemdb.c
122
src/map/itemdb.c
@ -929,6 +929,7 @@ static int itemdb_combo_split_atoi (char *str, int *val) {
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* <combo{:combo{:combo:{..}}}>,<{ script }>
|
||||
**/
|
||||
@ -1056,7 +1057,119 @@ static void itemdb_read_combos(const char* basedir, bool silent) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process Roulette items
|
||||
*/
|
||||
bool itemdb_parse_roulette_db(void)
|
||||
{
|
||||
int i, j;
|
||||
uint32 count = 0;
|
||||
|
||||
// retrieve all rows from the item database
|
||||
if (SQL_ERROR == Sql_Query(mmysql_handle, "SELECT * FROM `%s`", db_roulette_table)) {
|
||||
Sql_ShowDebug(mmysql_handle);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_ROULETTE_LEVEL; i++)
|
||||
rd.items[i] = 0;
|
||||
|
||||
for (i = 0; i < MAX_ROULETTE_LEVEL; i++) {
|
||||
int k, limit = MAX_ROULETTE_COLUMNS - i;
|
||||
|
||||
for (k = 0; k < limit && SQL_SUCCESS == Sql_NextRow(mmysql_handle); k++) {
|
||||
char* data;
|
||||
unsigned short item_id, amount;
|
||||
int level, flag;
|
||||
|
||||
Sql_GetData(mmysql_handle, 1, &data, NULL); level = atoi(data);
|
||||
Sql_GetData(mmysql_handle, 2, &data, NULL); item_id = atoi(data);
|
||||
Sql_GetData(mmysql_handle, 3, &data, NULL); amount = atoi(data);
|
||||
Sql_GetData(mmysql_handle, 4, &data, NULL); flag = atoi(data);
|
||||
|
||||
if (!itemdb_exists(item_id)) {
|
||||
ShowWarning("itemdb_parse_roulette_db: Unknown item ID '%hu' in level '%d'\n", item_id, level);
|
||||
continue;
|
||||
}
|
||||
if (amount < 1) {
|
||||
ShowWarning("itemdb_parse_roulette_db: Unsupported amount '%hu' for item ID '%hu' in level '%d'\n", amount, item_id, level);
|
||||
continue;
|
||||
}
|
||||
if (flag < 0 || flag > 1) {
|
||||
ShowWarning("itemdb_parse_roulette_db: Unsupported flag '%d' for item ID '%hu' in level '%d'\n", flag, item_id, level);
|
||||
continue;
|
||||
}
|
||||
|
||||
j = rd.items[i];
|
||||
RECREATE(rd.nameid[i], unsigned short, ++rd.items[i]);
|
||||
RECREATE(rd.qty[i], unsigned short, rd.items[i]);
|
||||
RECREATE(rd.flag[i], int, rd.items[i]);
|
||||
|
||||
rd.nameid[i][j] = item_id;
|
||||
rd.qty[i][j] = amount;
|
||||
rd.flag[i][j] = flag;
|
||||
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
// free the query result
|
||||
Sql_FreeResult(mmysql_handle);
|
||||
|
||||
for (i = 0; i < MAX_ROULETTE_LEVEL; i++) {
|
||||
int limit = MAX_ROULETTE_COLUMNS - i;
|
||||
|
||||
if (rd.items[i] == limit)
|
||||
continue;
|
||||
|
||||
if (rd.items[i] > limit) {
|
||||
ShowWarning("itemdb_parse_roulette_db: level %d has %d items, only %d supported, capping...\n", i + 1, rd.items[i], limit);
|
||||
rd.items[i] = limit;
|
||||
continue;
|
||||
}
|
||||
|
||||
/** this scenario = rd.items[i] < limit **/
|
||||
ShowWarning("itemdb_parse_roulette_db: Level %d has %d items, %d are required. Filling with Apples...\n", i + 1, rd.items[i], limit);
|
||||
|
||||
rd.items[i] = limit;
|
||||
RECREATE(rd.nameid[i], unsigned short, rd.items[i]);
|
||||
RECREATE(rd.qty[i], unsigned short, rd.items[i]);
|
||||
RECREATE(rd.flag[i], int, rd.items[i]);
|
||||
|
||||
for (j = 0; j < MAX_ROULETTE_COLUMNS - i; j++) {
|
||||
if (rd.qty[i][j])
|
||||
continue;
|
||||
|
||||
rd.nameid[i][j] = ITEMID_APPLE;
|
||||
rd.qty[i][j] = 1;
|
||||
rd.flag[i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, db_roulette_table);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Free Roulette items
|
||||
*/
|
||||
static void itemdb_roulette_free(void) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAX_ROULETTE_LEVEL; i++) {
|
||||
if (rd.nameid[i])
|
||||
aFree(rd.nameid[i]);
|
||||
if (rd.qty[i])
|
||||
aFree(rd.qty[i]);
|
||||
if (rd.flag[i])
|
||||
aFree(rd.flag[i]);
|
||||
rd.nameid[i] = NULL;
|
||||
rd.qty[i] = NULL;
|
||||
rd.flag[i] = NULL;
|
||||
rd.items[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*======================================
|
||||
* Applies gender restrictions according to settings. [Skotlex]
|
||||
@ -1074,6 +1187,7 @@ static char itemdb_gendercheck(struct item_data *id)
|
||||
|
||||
return (battle_config.ignore_items_gender) ? 2 : id->sex;
|
||||
}
|
||||
|
||||
/**
|
||||
* [RRInd]
|
||||
* For backwards compatibility, in Renewal mode, MATK from weapons comes from the atk slot
|
||||
@ -1574,11 +1688,15 @@ void itemdb_reload(void) {
|
||||
itemdb_group->clear(itemdb_group, itemdb_group_free);
|
||||
itemdb->clear(itemdb, itemdb_final_sub);
|
||||
db_clear(itemdb_combo);
|
||||
itemdb_roulette_free();
|
||||
|
||||
// read new data
|
||||
itemdb_read();
|
||||
cashshop_reloaddb();
|
||||
|
||||
if (!itemdb_parse_roulette_db())
|
||||
battle_config.feature_roulette = 0;
|
||||
|
||||
//Epoque's awesome @reloaditemdb fix - thanks! [Ind]
|
||||
//- Fixes the need of a @reloadmobdb after a @reloaditemdb to re-link monster drop data
|
||||
for( i = 0; i < MAX_MOB_DB; i++ ) {
|
||||
@ -1638,6 +1756,7 @@ void do_final_itemdb(void) {
|
||||
itemdb_group->destroy(itemdb_group, itemdb_group_free);
|
||||
itemdb->destroy(itemdb, itemdb_final_sub);
|
||||
destroy_item_data(dummy_item);
|
||||
itemdb_roulette_free();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1649,4 +1768,7 @@ void do_init_itemdb(void) {
|
||||
itemdb_group = uidb_alloc(DB_OPT_BASE);
|
||||
itemdb_create_dummy();
|
||||
itemdb_read();
|
||||
|
||||
if (!itemdb_parse_roulette_db())
|
||||
battle_config.feature_roulette = 0;
|
||||
}
|
||||
|
@ -25,6 +25,9 @@
|
||||
|
||||
#define MAX_ITEMGROUP_RANDGROUP 4 ///Max group for random item (increase this when needed). TODO: Remove this limit and use dynamic size if needed
|
||||
|
||||
#define MAX_ROULETTE_LEVEL 7 /** client-defined value **/
|
||||
#define MAX_ROULETTE_COLUMNS 9 /** client-defined value **/
|
||||
|
||||
#define CARD0_FORGE 0x00FF
|
||||
#define CARD0_CREATE 0x00FE
|
||||
#define CARD0_PET 0x0100
|
||||
@ -39,6 +42,7 @@ enum item_itemid
|
||||
ITEMID_YELLOW_POTION = 503,
|
||||
ITEMID_WHITE_POTION = 504,
|
||||
ITEMID_BLUE_POTION = 505,
|
||||
ITEMID_APPLE = 512,
|
||||
ITEMID_HOLY_WATER = 523,
|
||||
ITEMID_PUMPKIN = 535,
|
||||
ITEMID_RED_SLIM_POTION = 545,
|
||||
@ -371,6 +375,14 @@ struct s_item_group_db
|
||||
struct s_item_group_random random[MAX_ITEMGROUP_RANDGROUP]; //! TODO: Move this fixed array to dynamic size if needed.
|
||||
};
|
||||
|
||||
/// Struct of Roulette db
|
||||
struct s_roulette_db {
|
||||
unsigned short *nameid[MAX_ROULETTE_LEVEL], /// Item ID
|
||||
*qty[MAX_ROULETTE_LEVEL]; /// Amount of Item ID
|
||||
int *flag[MAX_ROULETTE_LEVEL]; /// Whether the item is for loss or win
|
||||
int items[MAX_ROULETTE_LEVEL]; /// Number of items in the list for each
|
||||
} rd;
|
||||
|
||||
///Main item data struct
|
||||
struct item_data
|
||||
{
|
||||
@ -513,6 +525,8 @@ struct s_item_group_db *itemdb_group_exists(unsigned short group_id);
|
||||
char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd);
|
||||
uint16 itemdb_get_randgroupitem_count(uint16 group_id, uint8 sub_group, unsigned short nameid);
|
||||
|
||||
bool itemdb_parse_roulette_db(void);
|
||||
|
||||
void itemdb_reload(void);
|
||||
|
||||
void do_final_itemdb(void);
|
||||
|
@ -56,7 +56,7 @@ static char log_picktype2char(e_log_pick_type type)
|
||||
{
|
||||
case LOG_TYPE_TRADE: return 'T'; // (T)rade
|
||||
case LOG_TYPE_VENDING: return 'V'; // (V)ending
|
||||
case LOG_TYPE_PICKDROP_PLAYER: return 'P'; // (P)player
|
||||
case LOG_TYPE_PICKDROP_PLAYER: return 'P'; // (P)layer
|
||||
case LOG_TYPE_PICKDROP_MONSTER: return 'M'; // (M)onster
|
||||
case LOG_TYPE_NPC: return 'S'; // NPC (S)hop
|
||||
case LOG_TYPE_SCRIPT: return 'N'; // (N)PC Script
|
||||
@ -75,6 +75,7 @@ static char log_picktype2char(e_log_pick_type type)
|
||||
case LOG_TYPE_OTHER: return 'X'; // Other
|
||||
case LOG_TYPE_CASH: return '$'; // Cash
|
||||
case LOG_TYPE_BOUND_REMOVAL: return 'F'; // Removed bound items when guild/party is broken
|
||||
case LOG_TYPE_ROULETTE: return 'Y'; // Roulette Lotter(Y)
|
||||
}
|
||||
|
||||
// should not get here, fallback
|
||||
|
@ -24,30 +24,31 @@ typedef enum e_log_chat_type
|
||||
typedef enum e_log_pick_type
|
||||
{
|
||||
LOG_TYPE_NONE = 0,
|
||||
LOG_TYPE_TRADE = 0x00001,
|
||||
LOG_TYPE_VENDING = 0x00002,
|
||||
LOG_TYPE_PICKDROP_PLAYER = 0x00004,
|
||||
LOG_TYPE_PICKDROP_MONSTER = 0x00008,
|
||||
LOG_TYPE_NPC = 0x00010,
|
||||
LOG_TYPE_SCRIPT = 0x00020,
|
||||
LOG_TYPE_STEAL = 0x00040,
|
||||
LOG_TYPE_CONSUME = 0x00080,
|
||||
LOG_TYPE_PRODUCE = 0x00100,
|
||||
LOG_TYPE_MVP = 0x00200,
|
||||
LOG_TYPE_COMMAND = 0x00400,
|
||||
LOG_TYPE_STORAGE = 0x00800,
|
||||
LOG_TYPE_GSTORAGE = 0x01000,
|
||||
LOG_TYPE_MAIL = 0x02000,
|
||||
LOG_TYPE_AUCTION = 0x04000,
|
||||
LOG_TYPE_BUYING_STORE = 0x08000,
|
||||
LOG_TYPE_OTHER = 0x10000,
|
||||
LOG_TYPE_CASH = 0x20000,
|
||||
LOG_TYPE_BANK = 0x40000,
|
||||
LOG_TYPE_BOUND_REMOVAL = 0x80000,
|
||||
LOG_TYPE_TRADE = 0x000001,
|
||||
LOG_TYPE_VENDING = 0x000002,
|
||||
LOG_TYPE_PICKDROP_PLAYER = 0x000004,
|
||||
LOG_TYPE_PICKDROP_MONSTER = 0x000008,
|
||||
LOG_TYPE_NPC = 0x000010,
|
||||
LOG_TYPE_SCRIPT = 0x000020,
|
||||
LOG_TYPE_STEAL = 0x000040,
|
||||
LOG_TYPE_CONSUME = 0x000080,
|
||||
LOG_TYPE_PRODUCE = 0x000100,
|
||||
LOG_TYPE_MVP = 0x000200,
|
||||
LOG_TYPE_COMMAND = 0x000400,
|
||||
LOG_TYPE_STORAGE = 0x000800,
|
||||
LOG_TYPE_GSTORAGE = 0x001000,
|
||||
LOG_TYPE_MAIL = 0x002000,
|
||||
LOG_TYPE_AUCTION = 0x004000,
|
||||
LOG_TYPE_BUYING_STORE = 0x008000,
|
||||
LOG_TYPE_OTHER = 0x010000,
|
||||
LOG_TYPE_CASH = 0x020000,
|
||||
LOG_TYPE_BANK = 0x040000,
|
||||
LOG_TYPE_BOUND_REMOVAL = 0x080000,
|
||||
LOG_TYPE_ROULETTE = 0x100000,
|
||||
// combinations
|
||||
LOG_TYPE_LOOT = LOG_TYPE_PICKDROP_MONSTER|LOG_TYPE_CONSUME,
|
||||
// all
|
||||
LOG_TYPE_ALL = 0xFFFFF,
|
||||
LOG_TYPE_ALL = 0xFFFFFF,
|
||||
} e_log_pick_type;
|
||||
|
||||
typedef enum e_log_cash_type
|
||||
|
@ -70,6 +70,7 @@ char mob_skill_db2_db[32] = "mob_skill_db2";
|
||||
char vendings_db[32] = "vendings";
|
||||
char vending_items_db[32] = "vending_items";
|
||||
char market_table[32] = "market";
|
||||
char db_roulette_table[32] = "db_roulette";
|
||||
|
||||
// log database
|
||||
char log_db_ip[32] = "127.0.0.1";
|
||||
@ -3759,7 +3760,9 @@ int inter_config_read(char *cfgName)
|
||||
else if( strcmpi( w1, "vending_db" ) == 0 )
|
||||
strcpy( vendings_db, w2 );
|
||||
else if( strcmpi( w1, "vending_items_db" ) == 0 )
|
||||
strcpy( vending_items_db, w2 );
|
||||
strcpy(vending_items_db, w2);
|
||||
else if( strcmpi(w1, "db_roulette_table") == 0)
|
||||
strcpy(db_roulette_table, w2);
|
||||
else if (strcmpi(w1, "market_table") == 0)
|
||||
strcpy(market_table, w2);
|
||||
else
|
||||
|
@ -370,6 +370,18 @@ enum e_element {
|
||||
|
||||
#define MAX_ELE_LEVEL 4 /// Maximum Element level
|
||||
|
||||
/**
|
||||
* Types of spirit charms
|
||||
* NOTE: Code assumes that this matches the first entries in enum elements
|
||||
*/
|
||||
enum spirit_charm_types {
|
||||
CHARM_TYPE_NONE = 0,
|
||||
CHARM_TYPE_WATER,
|
||||
CHARM_TYPE_LAND,
|
||||
CHARM_TYPE_FIRE,
|
||||
CHARM_TYPE_WIND
|
||||
};
|
||||
|
||||
enum mob_ai {
|
||||
AI_NONE = 0,
|
||||
AI_ATTACK,
|
||||
@ -447,6 +459,9 @@ enum _sp {
|
||||
SP_CHARRENAME=125,
|
||||
SP_CHARFONT=126,
|
||||
SP_BANK_VAULT = 127,
|
||||
SP_ROULETTE_BRONZE = 128,
|
||||
SP_ROULETTE_SILVER = 129,
|
||||
SP_ROULETTE_GOLD = 130,
|
||||
|
||||
// Mercenaries
|
||||
SP_MERCFLEE=165, SP_MERCKILLS=189, SP_MERCFAITH=190,
|
||||
@ -491,7 +506,7 @@ enum _sp {
|
||||
SP_UNSTRIPABLE_WEAPON,SP_UNSTRIPABLE_ARMOR,SP_UNSTRIPABLE_HELM,SP_UNSTRIPABLE_SHIELD, // 2034-2037
|
||||
SP_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040
|
||||
SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE, SP_MAGIC_SP_GAIN_VALUE, SP_MAGIC_HP_GAIN_VALUE, SP_ADD_MONSTER_ID_DROP_ITEM, //2041-2045
|
||||
SP_EMATK, SP_SP_GAIN_RACE_ATTACK, SP_HP_GAIN_RACE_ATTACK, SP_SKILL_USE_SP_RATE, //2046-2049
|
||||
SP_EMATK, SP_COMA_CLASS, SP_COMA_RACE, SP_SKILL_USE_SP_RATE, //2046-2049
|
||||
SP_SKILL_COOLDOWN,SP_SKILL_FIXEDCAST, SP_SKILL_VARIABLECAST, SP_FIXCASTRATE, SP_VARCASTRATE, //2050-2054
|
||||
SP_SKILL_USE_SP,SP_MAGIC_ATK_ELE, SP_ADD_FIXEDCAST, SP_ADD_VARIABLECAST, //2055-2058
|
||||
SP_SET_DEF_RACE,SP_SET_MDEF_RACE,SP_HP_VANISH_RATE, //2059-2061
|
||||
@ -499,9 +514,7 @@ enum _sp {
|
||||
SP_IGNORE_DEF_CLASS, SP_DEF_RATIO_ATK_CLASS, SP_ADDCLASS, SP_SUBCLASS, SP_MAGIC_ADDCLASS, //2062-2066
|
||||
SP_WEAPON_COMA_CLASS, SP_IGNORE_MDEF_CLASS_RATE, SP_EXP_ADDCLASS, SP_ADD_CLASS_DROP_ITEM, //2067-2070
|
||||
SP_ADD_CLASS_DROP_ITEMGROUP, SP_ADDMAXWEIGHT, SP_ADD_ITEMGROUP_HEAL_RATE, // 2071-2073
|
||||
SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_HP_GAIN_RACE_ATTACK_RATE, SP_SP_GAIN_RACE_ATTACK_RATE, // 2074-2077
|
||||
SP_ABSORB_DMG_MAXHP, SP_HP_GAIN_ATTACK, SP_SP_GAIN_ATTACK, SP_HP_GAIN_ATTACK_RATE, SP_SP_GAIN_ATTACK_RATE, SP_SUB_SKILL, // 2078-2083
|
||||
SP_SUBDEF_ELE, // 2084
|
||||
SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_ABSORB_DMG_MAXHP, SP_SUB_SKILL, SP_SUBDEF_ELE, // 2074-2078
|
||||
};
|
||||
|
||||
enum _look {
|
||||
@ -996,6 +1009,7 @@ extern char mob_skill_db2_db[32];
|
||||
extern char vendings_db[32];
|
||||
extern char vending_items_db[32];
|
||||
extern char market_table[32];
|
||||
extern char db_roulette_table[32];
|
||||
|
||||
void do_shutdown(void);
|
||||
|
||||
|
@ -408,6 +408,8 @@ bool mercenary_recv_data(struct s_mercenary *merc, bool flag)
|
||||
* @param sp SP amount
|
||||
**/
|
||||
void mercenary_heal(struct mercenary_data *md, int hp, int sp) {
|
||||
if (md->master == NULL)
|
||||
return;
|
||||
if( hp )
|
||||
clif_mercenary_updatestatus(md->master, SP_HP);
|
||||
if( sp )
|
||||
|
@ -1253,7 +1253,7 @@ int npc_click(struct map_session_data* sd, struct npc_data* nd)
|
||||
}
|
||||
|
||||
if (i == nd->u.shop.count) {
|
||||
clif_colormes(sd, color_table[COLOR_RED], msg_txt(sd, 534));
|
||||
clif_colormes(sd->fd, color_table[COLOR_RED], msg_txt(sd, 534));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1670,7 +1670,7 @@ uint8 npc_buylist(struct map_session_data* sd, uint16 n, struct s_npc_buy_list *
|
||||
struct item_data *id = itemdb_exists(nd->u.shop.itemshop_nameid);
|
||||
|
||||
sprintf(output,msg_txt(sd,712),id->jname,id->nameid); // You do not have enough %s %d.
|
||||
clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],output);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
@ -1678,7 +1678,7 @@ uint8 npc_buylist(struct map_session_data* sd, uint16 n, struct s_npc_buy_list *
|
||||
count = pc_readreg2(sd, nd->u.shop.pointshop_str);
|
||||
if (z > (double)count) {
|
||||
sprintf(output,msg_txt(sd,713),nd->u.shop.pointshop_str); // You do not have enough '%s'.
|
||||
clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],output);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
|
@ -53,6 +53,9 @@ struct npc_data {
|
||||
|
||||
struct status_data status;
|
||||
unsigned int level,stat_point;
|
||||
struct s_npc_params {
|
||||
unsigned short str, agi, vit, int_, dex, luk;
|
||||
} params;
|
||||
|
||||
void* chatdb; // pointer to a npc_parse struct (see npc_chat.c)
|
||||
char* path;/* path dir */
|
||||
|
234
src/map/pc.c
234
src/map/pc.c
@ -1353,6 +1353,13 @@ void pc_reg_received(struct map_session_data *sd)
|
||||
if (battle_config.feature_banking)
|
||||
sd->bank_vault = pc_readreg2(sd, BANK_VAULT_VAR);
|
||||
|
||||
if (battle_config.feature_roulette) {
|
||||
sd->roulette_point.bronze = pc_readreg2(sd, ROULETTE_BRONZE_VAR);
|
||||
sd->roulette_point.silver = pc_readreg2(sd, ROULETTE_SILVER_VAR);
|
||||
sd->roulette_point.gold = pc_readreg2(sd, ROULETTE_GOLD_VAR);
|
||||
}
|
||||
sd->roulette.prizeIdx = -1;
|
||||
|
||||
//SG map and mob read [Komurka]
|
||||
for(i=0;i<MAX_PC_FEELHATE;i++) { //for now - someone need to make reading from txt/sql
|
||||
uint16 j;
|
||||
@ -2989,18 +2996,6 @@ void pc_bonus(struct map_session_data *sd,int type,int val)
|
||||
case SP_ABSORB_DMG_MAXHP: // bonus bAbsorbDmgMaxHP,n;
|
||||
sd->bonus.absorb_dmg_maxhp = max(sd->bonus.absorb_dmg_maxhp, val);
|
||||
break;
|
||||
case SP_HP_GAIN_ATTACK: // bonus bHPGainAttack,n;
|
||||
sd->bonus.hp_gain_attack += val;
|
||||
break;
|
||||
case SP_SP_GAIN_ATTACK: // bonus bSPGainAttack,n;
|
||||
sd->bonus.sp_gain_attack += val;
|
||||
break;
|
||||
case SP_HP_GAIN_ATTACK_RATE: // bonus bHPGainAttackRate,n;
|
||||
sd->bonus.hp_gain_attack_rate += val;
|
||||
break;
|
||||
case SP_SP_GAIN_ATTACK_RATE: // bonus bSPGainAttackRate,n;
|
||||
sd->bonus.sp_gain_attack_rate += val;
|
||||
break;
|
||||
default:
|
||||
ShowWarning("pc_bonus: unknown type %d %d !\n",type,val);
|
||||
break;
|
||||
@ -3483,16 +3478,6 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
||||
if(sd->state.lr_flag != 2)
|
||||
sd->ignore_def_by_race[type2] += val;
|
||||
break;
|
||||
case SP_SP_GAIN_RACE_ATTACK: // bonus2 bSPGainRaceAttack,r,n;
|
||||
PC_BONUS_CHK_RACE(type2,SP_SP_GAIN_RACE_ATTACK);
|
||||
if(sd->state.lr_flag != 2)
|
||||
sd->sp_gain_race_attack[type2] = cap_value(sd->sp_gain_race_attack[type2] + val, 0, INT16_MAX);
|
||||
break;
|
||||
case SP_HP_GAIN_RACE_ATTACK: // bonus2 bHPGainRaceAttack,r,n;
|
||||
PC_BONUS_CHK_RACE(type2,SP_HP_GAIN_RACE_ATTACK);
|
||||
if(sd->state.lr_flag != 2)
|
||||
sd->hp_gain_race_attack[type2] = cap_value(sd->hp_gain_race_attack[type2] + val, 0, INT16_MAX);
|
||||
break;
|
||||
case SP_SKILL_USE_SP_RATE: // bonus2 bSkillUseSPrate,sk,n;
|
||||
if(sd->state.lr_flag == 2)
|
||||
break;
|
||||
@ -3630,22 +3615,6 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
||||
sd->skillusesp[i].val = val;
|
||||
}
|
||||
break;
|
||||
case SP_HP_GAIN_RACE_ATTACK_RATE: // bonus2 bHPGainRaceAttackRate,r,n;
|
||||
PC_BONUS_CHK_RACE(type2,SP_HP_GAIN_RACE_ATTACK_RATE);
|
||||
sd->hp_gain_race_attack_rate[type2] += val;
|
||||
break;
|
||||
case SP_SP_GAIN_RACE_ATTACK_RATE: // bonus2 bSPGainRaceAttackRate,r,n;
|
||||
PC_BONUS_CHK_RACE(type2,SP_SP_GAIN_RACE_ATTACK_RATE);
|
||||
sd->sp_gain_race_attack_rate[type2] += val;
|
||||
break;
|
||||
case SP_HP_GAIN_ATTACK_RATE: // bonus2 bHPGainAttackRate,x,n;
|
||||
sd->hp_gain_attack.rate += type2;
|
||||
sd->hp_gain_attack.per += val;
|
||||
break;
|
||||
case SP_SP_GAIN_ATTACK_RATE: // bonus2 bSPGainAttackRate,x,n;
|
||||
sd->sp_gain_attack.rate += type2;
|
||||
sd->sp_gain_attack.per += val;
|
||||
break;
|
||||
case SP_SUB_SKILL: // bonus2 bSubSkill,sk,n;
|
||||
ARR_FIND(0, ARRAYLENGTH(sd->subskill), i, sd->subskill[i].id == type2 || sd->subskill[i].id == 0);
|
||||
if (i == ARRAYLENGTH(sd->subskill)) {
|
||||
@ -3663,6 +3632,16 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
||||
PC_BONUS_CHK_ELEMENT(type2,SP_SUBDEF_ELE);
|
||||
sd->subdefele[type2] += val;
|
||||
break;
|
||||
case SP_COMA_CLASS: // bonus2 bComaClass,c,n;
|
||||
PC_BONUS_CHK_CLASS(type2,SP_COMA_CLASS);
|
||||
sd->coma_class[type2] += val;
|
||||
sd->special_state.bonus_coma = 1;
|
||||
break;
|
||||
case SP_COMA_RACE: // bonus2 bComaRace,r,n;
|
||||
PC_BONUS_CHK_RACE(type2,SP_COMA_RACE);
|
||||
sd->coma_race[type2] += val;
|
||||
sd->special_state.bonus_coma = 1;
|
||||
break;
|
||||
default:
|
||||
ShowWarning("pc_bonus2: unknown type %d %d %d!\n",type,type2,val);
|
||||
break;
|
||||
@ -4603,7 +4582,7 @@ bool pc_isUseitem(struct map_session_data *sd,int n)
|
||||
}
|
||||
|
||||
if (sd->state.storage_flag && item->type != IT_CASH) {
|
||||
clif_colormes(sd, color_table[COLOR_RED], msg_txt(sd,388));
|
||||
clif_colormes(sd->fd, color_table[COLOR_RED], msg_txt(sd,388));
|
||||
return false; // You cannot use this item while storage is open.
|
||||
}
|
||||
|
||||
@ -4700,7 +4679,7 @@ bool pc_isUseitem(struct map_session_data *sd,int n)
|
||||
return false;
|
||||
}
|
||||
if( !pc_inventoryblank(sd) ) {
|
||||
clif_colormes(sd, color_table[COLOR_RED], msg_txt(sd, 732)); //Item cannot be open when inventory is full
|
||||
clif_colormes(sd->fd, color_table[COLOR_RED], msg_txt(sd, 732)); //Item cannot be open when inventory is full
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -4815,7 +4794,7 @@ int pc_useitem(struct map_session_data *sd,int n)
|
||||
else
|
||||
sprintf(e_msg,msg_txt(sd,380), // Item Failed. [%s] is cooling down. Wait %d seconds.
|
||||
itemdb_jname(sd->item_delay[i].nameid), e_tick+1);
|
||||
clif_colormes(sd,color_table[COLOR_YELLOW],e_msg);
|
||||
clif_colormes(sd->fd,color_table[COLOR_YELLOW],e_msg);
|
||||
return 0; // Delay has not expired yet
|
||||
}
|
||||
} else {// not yet used item (all slots are initially empty)
|
||||
@ -7206,7 +7185,7 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h
|
||||
clif_progressbar_abort(sd);
|
||||
|
||||
if( sd->status.pet_id > 0 && sd->pd && battle_config.pet_damage_support )
|
||||
pet_target_check(sd,src,1);
|
||||
pet_target_check(sd->pd,src,1);
|
||||
|
||||
if( sd->status.ele_id > 0 )
|
||||
elemental_set_target(sd,src);
|
||||
@ -7354,8 +7333,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
|
||||
if ( sd->spiritball !=0 )
|
||||
pc_delspiritball(sd,sd->spiritball,0);
|
||||
|
||||
for(i = 1; i < 5; i++)
|
||||
pc_del_talisman(sd, sd->talisman[i], i);
|
||||
if (sd->spiritcharm_type != CHARM_TYPE_NONE && sd->spiritcharm > 0)
|
||||
pc_delspiritcharm(sd,sd->spiritcharm,sd->spiritcharm_type);
|
||||
|
||||
if (src)
|
||||
switch (src->type) {
|
||||
@ -7639,7 +7618,10 @@ int pc_readparam(struct map_session_data* sd,int type)
|
||||
case SP_CHARMOVE: val = sd->status.character_moves; break;
|
||||
case SP_CHARRENAME: val = sd->status.rename; break;
|
||||
case SP_CHARFONT: val = sd->status.font; break;
|
||||
case SP_BANK_VAULT: val = sd->bank_vault; break;
|
||||
case SP_BANK_VAULT: val = sd->bank_vault; break;
|
||||
case SP_ROULETTE_BRONZE: val = sd->roulette_point.bronze; break;
|
||||
case SP_ROULETTE_SILVER: val = sd->roulette_point.silver; break;
|
||||
case SP_ROULETTE_GOLD: val = sd->roulette_point.gold; break;
|
||||
case SP_CRITICAL: val = sd->battle_status.cri/10; break;
|
||||
case SP_ASPD: val = (2000-sd->battle_status.amotion)/10; break;
|
||||
case SP_BASE_ATK: val = sd->battle_status.batk; break;
|
||||
@ -7898,6 +7880,18 @@ bool pc_setparam(struct map_session_data *sd,int type,int val)
|
||||
sd->bank_vault = cap_value(val, 0, MAX_BANK_ZENY);
|
||||
pc_setreg2(sd, BANK_VAULT_VAR, sd->bank_vault);
|
||||
return true;
|
||||
case SP_ROULETTE_BRONZE:
|
||||
sd->roulette_point.bronze = val;
|
||||
pc_setreg2(sd, ROULETTE_BRONZE_VAR, sd->roulette_point.bronze);
|
||||
return true;
|
||||
case SP_ROULETTE_SILVER:
|
||||
sd->roulette_point.silver = val;
|
||||
pc_setreg2(sd, ROULETTE_SILVER_VAR, sd->roulette_point.silver);
|
||||
return true;
|
||||
case SP_ROULETTE_GOLD:
|
||||
sd->roulette_point.gold = val;
|
||||
pc_setreg2(sd, ROULETTE_GOLD_VAR, sd->roulette_point.gold);
|
||||
return true;
|
||||
default:
|
||||
ShowError("pc_setparam: Attempted to set unknown parameter '%d'.\n", type);
|
||||
return false;
|
||||
@ -10150,102 +10144,138 @@ bool pc_should_log_commands(struct map_session_data *sd)
|
||||
return pc_group_should_log_commands(pc_get_group_id(sd));
|
||||
}
|
||||
|
||||
static int pc_talisman_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
/**
|
||||
* Spirit Charm expiration timer.
|
||||
* @see TimerFunc
|
||||
*/
|
||||
static int pc_spiritcharm_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
int i, type;
|
||||
int i;
|
||||
|
||||
if( (sd=(struct map_session_data *)map_id2sd(id)) == NULL || sd->bl.type!=BL_PC )
|
||||
if ((sd = (struct map_session_data *)map_id2sd(id)) == NULL || sd->bl.type != BL_PC)
|
||||
return 1;
|
||||
|
||||
ARR_FIND(1, 5, type, sd->talisman[type] > 0);
|
||||
|
||||
if( sd->talisman[type] <= 0 )
|
||||
{
|
||||
ShowError("pc_talisman_timer: %d talisman's available. (aid=%d cid=%d tid=%d)\n", sd->talisman[type], sd->status.account_id, sd->status.char_id, tid);
|
||||
sd->talisman[type] = 0;
|
||||
if (sd->spiritcharm <= 0) {
|
||||
ShowError("pc_spiritcharm_timer: %d spiritcharm's available. (aid=%d cid=%d tid=%d)\n", sd->spiritcharm, sd->status.account_id, sd->status.char_id, tid);
|
||||
sd->spiritcharm = 0;
|
||||
sd->spiritcharm_type = CHARM_TYPE_NONE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARR_FIND(0, sd->talisman[type], i, sd->talisman_timer[type][i] == tid);
|
||||
if( i == sd->talisman[type] )
|
||||
{
|
||||
ShowError("pc_talisman_timer: timer not found (aid=%d cid=%d tid=%d)\n", sd->status.account_id, sd->status.char_id, tid);
|
||||
ARR_FIND(0, sd->spiritcharm, i, sd->spiritcharm_timer[i] == tid);
|
||||
|
||||
if (i == sd->spiritcharm) {
|
||||
ShowError("pc_spiritcharm_timer: timer not found (aid=%d cid=%d tid=%d)\n", sd->status.account_id, sd->status.char_id, tid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sd->talisman[type]--;
|
||||
if( i != sd->talisman[type] )
|
||||
memmove(sd->talisman_timer[type]+i, sd->talisman_timer[type]+i+1, (sd->talisman[type]-i)*sizeof(int));
|
||||
sd->talisman_timer[type][sd->talisman[type]] = INVALID_TIMER;
|
||||
sd->spiritcharm--;
|
||||
|
||||
clif_talisman(sd, type);
|
||||
if (i != sd->spiritcharm)
|
||||
memmove(sd->spiritcharm_timer + i, sd->spiritcharm_timer + i + 1, (sd->spiritcharm - i) * sizeof(int));
|
||||
|
||||
sd->spiritcharm_timer[sd->spiritcharm] = INVALID_TIMER;
|
||||
|
||||
if (sd->spiritcharm <= 0)
|
||||
sd->spiritcharm_type = CHARM_TYPE_NONE;
|
||||
|
||||
clif_spiritcharm(sd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void pc_add_talisman(struct map_session_data *sd,int interval,int max,int type)
|
||||
/**
|
||||
* Adds a spirit charm.
|
||||
* @param sd: Target character
|
||||
* @param interval: Duration
|
||||
* @param max: Maximum amount of charms to add
|
||||
* @param type: Charm type (@see spirit_charm_types)
|
||||
*/
|
||||
void pc_addspiritcharm(struct map_session_data *sd, int interval, int max, int type)
|
||||
{
|
||||
int tid, i;
|
||||
|
||||
nullpo_retv(sd);
|
||||
|
||||
if(max > 10)
|
||||
max = 10;
|
||||
if(sd->talisman[type] < 0)
|
||||
sd->talisman[type] = 0;
|
||||
if (sd->spiritcharm_type != CHARM_TYPE_NONE && type != sd->spiritcharm_type)
|
||||
pc_delspiritcharm(sd, sd->spiritcharm, sd->spiritcharm_type);
|
||||
|
||||
if( sd->talisman[type] && sd->talisman[type] >= max )
|
||||
{
|
||||
if(sd->talisman_timer[type][0] != INVALID_TIMER)
|
||||
delete_timer(sd->talisman_timer[type][0],pc_talisman_timer);
|
||||
sd->talisman[type]--;
|
||||
if( sd->talisman[type] != 0 )
|
||||
memmove(sd->talisman_timer[type]+0, sd->talisman_timer[type]+1, (sd->talisman[type])*sizeof(int));
|
||||
sd->talisman_timer[type][sd->talisman[type]] = INVALID_TIMER;
|
||||
if (max > MAX_SPIRITCHARM)
|
||||
max = MAX_SPIRITCHARM;
|
||||
|
||||
if (sd->spiritcharm < 0)
|
||||
sd->spiritcharm = 0;
|
||||
|
||||
if (sd->spiritcharm && sd->spiritcharm >= max) {
|
||||
if (sd->spiritcharm_timer[0] != INVALID_TIMER)
|
||||
delete_timer(sd->spiritcharm_timer[0], pc_spiritcharm_timer);
|
||||
sd->spiritcharm--;
|
||||
if (sd->spiritcharm != 0)
|
||||
memmove(sd->spiritcharm_timer + 0, sd->spiritcharm_timer + 1, (sd->spiritcharm) * sizeof(int));
|
||||
sd->spiritcharm_timer[sd->spiritcharm] = INVALID_TIMER;
|
||||
}
|
||||
|
||||
tid = add_timer(gettick()+interval, pc_talisman_timer, sd->bl.id, 0);
|
||||
ARR_FIND(0, sd->talisman[type], i, sd->talisman_timer[type][i] == INVALID_TIMER || DIFF_TICK(get_timer(tid)->tick, get_timer(sd->talisman_timer[type][i])->tick) < 0);
|
||||
if( i != sd->talisman[type] )
|
||||
memmove(sd->talisman_timer[type]+i+1, sd->talisman_timer[type]+i, (sd->talisman[type]-i)*sizeof(int));
|
||||
sd->talisman_timer[type][i] = tid;
|
||||
sd->talisman[type]++;
|
||||
tid = add_timer(gettick() + interval, pc_spiritcharm_timer, sd->bl.id, 0);
|
||||
ARR_FIND(0, sd->spiritcharm, i, sd->spiritcharm_timer[i] == INVALID_TIMER || DIFF_TICK(get_timer(tid)->tick, get_timer(sd->spiritcharm_timer[i])->tick) < 0);
|
||||
|
||||
clif_talisman(sd, type);
|
||||
if (i != sd->spiritcharm)
|
||||
memmove(sd->spiritcharm_timer + i + 1, sd->spiritcharm_timer + i, (sd->spiritcharm - i) * sizeof(int));
|
||||
|
||||
sd->spiritcharm_timer[i] = tid;
|
||||
sd->spiritcharm++;
|
||||
sd->spiritcharm_type = type;
|
||||
|
||||
clif_spiritcharm(sd);
|
||||
}
|
||||
|
||||
void pc_del_talisman(struct map_session_data *sd,int count,int type)
|
||||
/**
|
||||
* Removes one or more spirit charms.
|
||||
* @param sd: The target character
|
||||
* @param count: Amount of charms to remove
|
||||
* @param type: Type of charm to remove
|
||||
*/
|
||||
void pc_delspiritcharm(struct map_session_data *sd, int count, int type)
|
||||
{
|
||||
int i;
|
||||
|
||||
nullpo_retv(sd);
|
||||
|
||||
if( sd->talisman[type] <= 0 ) {
|
||||
sd->talisman[type] = 0;
|
||||
if (sd->spiritcharm_type != type)
|
||||
return;
|
||||
|
||||
if (sd->spiritcharm <= 0) {
|
||||
sd->spiritcharm = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if( count <= 0 )
|
||||
if (count <= 0)
|
||||
return;
|
||||
if( count > sd->talisman[type] )
|
||||
count = sd->talisman[type];
|
||||
sd->talisman[type] -= count;
|
||||
if( count > 10 )
|
||||
count = 10;
|
||||
|
||||
for(i = 0; i < count; i++) {
|
||||
if(sd->talisman_timer[type][i] != INVALID_TIMER) {
|
||||
delete_timer(sd->talisman_timer[type][i],pc_talisman_timer);
|
||||
sd->talisman_timer[type][i] = INVALID_TIMER;
|
||||
if (count > sd->spiritcharm)
|
||||
count = sd->spiritcharm;
|
||||
|
||||
sd->spiritcharm -= count;
|
||||
|
||||
if (count > MAX_SPIRITCHARM)
|
||||
count = MAX_SPIRITCHARM;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (sd->spiritcharm_timer[i] != INVALID_TIMER) {
|
||||
delete_timer(sd->spiritcharm_timer[i], pc_spiritcharm_timer);
|
||||
sd->spiritcharm_timer[i] = INVALID_TIMER;
|
||||
}
|
||||
}
|
||||
for(i = count; i < 10; i++) {
|
||||
sd->talisman_timer[type][i-count] = sd->talisman_timer[type][i];
|
||||
sd->talisman_timer[type][i] = INVALID_TIMER;
|
||||
|
||||
for (i = count; i < MAX_SPIRITCHARM; i++) {
|
||||
sd->spiritcharm_timer[i - count] = sd->spiritcharm_timer[i];
|
||||
sd->spiritcharm_timer[i] = INVALID_TIMER;
|
||||
}
|
||||
|
||||
clif_talisman(sd, type);
|
||||
if (sd->spiritcharm <= 0)
|
||||
sd->spiritcharm_type = CHARM_TYPE_NONE;
|
||||
|
||||
clif_spiritcharm(sd);
|
||||
}
|
||||
|
||||
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
|
||||
@ -11119,7 +11149,7 @@ enum e_BANKING_WITHDRAW_ACK pc_bank_withdraw(struct map_session_data *sd, int mo
|
||||
return BWA_NO_MONEY;
|
||||
} else if ( limit_check > MAX_ZENY ) {
|
||||
/* no official response for this scenario exists. */
|
||||
clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1495)); //You can't withdraw that much money
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],msg_txt(sd,1495)); //You can't withdraw that much money
|
||||
return BWA_UNKNOWN_ERROR;
|
||||
}
|
||||
|
||||
@ -11574,7 +11604,7 @@ void do_init_pc(void) {
|
||||
add_timer_func_list(pc_spiritball_timer, "pc_spiritball_timer");
|
||||
add_timer_func_list(pc_follow_timer, "pc_follow_timer");
|
||||
add_timer_func_list(pc_endautobonus, "pc_endautobonus");
|
||||
add_timer_func_list(pc_talisman_timer, "pc_talisman_timer");
|
||||
add_timer_func_list(pc_spiritcharm_timer, "pc_spiritcharm_timer");
|
||||
add_timer_func_list(pc_global_expiration_timer, "pc_global_expiration_timer");
|
||||
add_timer_func_list(pc_expiration_timer, "pc_expiration_timer");
|
||||
add_timer_func_list(pc_autotrade_timer, "pc_autotrade_timer");
|
||||
|
40
src/map/pc.h
40
src/map/pc.h
@ -28,8 +28,12 @@
|
||||
#define DAMAGELOG_SIZE_PC 100 /// Damage log
|
||||
#define MAX_SPIRITBALL 15 /// Max spirit balls
|
||||
#define MAX_DEVOTION 5 /// Max Devotion slots
|
||||
#define MAX_SPIRITCHARM 10 /// Max spirit charms
|
||||
|
||||
#define BANK_VAULT_VAR "#BANKVAULT"
|
||||
#define ROULETTE_BRONZE_VAR "RouletteBronze"
|
||||
#define ROULETTE_SILVER_VAR "RouletteSilver"
|
||||
#define ROULETTE_GOLD_VAR "RouletteGold"
|
||||
|
||||
//Update this max as necessary. 55 is the value needed for Super Baby currently
|
||||
//Raised to 84 since Expanded Super Novice needs it.
|
||||
@ -327,9 +331,11 @@ struct map_session_data {
|
||||
int subrace2[RC2_MAX];
|
||||
int subsize[SZ_MAX];
|
||||
short reseff[SC_COMMON_MAX-SC_COMMON_MIN+1]; //TODO: Make this for all SC?
|
||||
int weapon_coma_ele[ELE_MAX];
|
||||
int weapon_coma_race[RC_MAX];
|
||||
int weapon_coma_class[CLASS_MAX];
|
||||
short coma_class[CLASS_MAX];
|
||||
short coma_race[RC_MAX];
|
||||
short weapon_coma_ele[ELE_MAX];
|
||||
short weapon_coma_race[RC_MAX];
|
||||
short weapon_coma_class[CLASS_MAX];
|
||||
int weapon_atk[16];
|
||||
int weapon_atk_rate[16];
|
||||
int arrow_addele[ELE_MAX];
|
||||
@ -348,10 +354,6 @@ struct map_session_data {
|
||||
int ignore_mdef_by_class[CLASS_MAX];
|
||||
int ignore_def_by_race[RC_MAX];
|
||||
short sp_gain_race[RC_MAX];
|
||||
short sp_gain_race_attack[RC_MAX];
|
||||
short hp_gain_race_attack[RC_MAX];
|
||||
short hp_gain_race_attack_rate[RC_MAX];
|
||||
short sp_gain_race_attack_rate[RC_MAX];
|
||||
// zeroed arrays end here.
|
||||
|
||||
// zeroed structures start here
|
||||
@ -389,7 +391,7 @@ struct map_session_data {
|
||||
struct s_bonus_vanish_gain {
|
||||
short rate, ///< Success rate 0 - 1000 (100%)
|
||||
per; ///< % HP/SP vanished/gained
|
||||
} hp_vanish_race[RC_MAX], sp_vanish_race[RC_MAX], hp_gain_attack, sp_gain_attack;
|
||||
} hp_vanish_race[RC_MAX], sp_vanish_race[RC_MAX];
|
||||
// zeroed structures end here
|
||||
|
||||
// manually zeroed structures start here.
|
||||
@ -437,8 +439,6 @@ struct map_session_data {
|
||||
int ematk; // matk bonus from equipment
|
||||
int eatk; // atk bonus from equipment
|
||||
uint8 absorb_dmg_maxhp; // [Cydh]
|
||||
short hp_gain_attack, sp_gain_attack;
|
||||
short hp_gain_attack_rate, sp_gain_attack_rate;
|
||||
} bonus;
|
||||
// zeroed vars end here.
|
||||
|
||||
@ -454,8 +454,9 @@ struct map_session_data {
|
||||
|
||||
int8 spiritball, spiritball_old;
|
||||
int spirit_timer[MAX_SPIRITBALL];
|
||||
short talisman[ELE_POISON+1]; // There are actually 5 talisman Fire, Ice, Wind, Earth & Poison maybe because its color violet.
|
||||
int talisman_timer[ELE_POISON+1][10];
|
||||
short spiritcharm; //No. of spirit
|
||||
int spiritcharm_type; //Spirit type
|
||||
int spiritcharm_timer[MAX_SPIRITCHARM];
|
||||
|
||||
unsigned char potion_success_counter; //Potion successes in row counter
|
||||
unsigned char mission_count; //Stores the bounty kill count for TK_MISSION
|
||||
@ -643,6 +644,17 @@ struct map_session_data {
|
||||
#ifdef PACKET_OBFUSCATION
|
||||
unsigned int cryptKey; ///< Packet obfuscation key to be used for the next received packet
|
||||
#endif
|
||||
|
||||
struct {
|
||||
int bronze, silver, gold; ///< Roulette Coin
|
||||
} roulette_point;
|
||||
|
||||
struct {
|
||||
short stage;
|
||||
int8 prizeIdx;
|
||||
short prizeStage;
|
||||
bool claimPrize;
|
||||
} roulette;
|
||||
};
|
||||
|
||||
struct eri *pc_sc_display_ers; /// Player's SC display table
|
||||
@ -1153,8 +1165,8 @@ void pc_itemcd_do(struct map_session_data *sd, bool load);
|
||||
|
||||
int pc_load_combo(struct map_session_data *sd);
|
||||
|
||||
void pc_add_talisman(struct map_session_data *sd,int interval,int max,int type);
|
||||
void pc_del_talisman(struct map_session_data *sd,int count,int type);
|
||||
void pc_addspiritcharm(struct map_session_data *sd, int interval, int max, int type);
|
||||
void pc_delspiritcharm(struct map_session_data *sd, int count, int type);
|
||||
|
||||
void pc_baselevelchanged(struct map_session_data *sd);
|
||||
|
||||
|
@ -64,7 +64,7 @@ void pet_set_intimate(struct pet_data *pd, int value)
|
||||
|
||||
pd->pet.intimate = value;
|
||||
|
||||
if( (intimate >= battle_config.pet_equip_min_friendly && pd->pet.intimate < battle_config.pet_equip_min_friendly) || (intimate < battle_config.pet_equip_min_friendly && pd->pet.intimate >= battle_config.pet_equip_min_friendly) )
|
||||
if( sd && (intimate >= battle_config.pet_equip_min_friendly && pd->pet.intimate < battle_config.pet_equip_min_friendly) || (intimate < battle_config.pet_equip_min_friendly && pd->pet.intimate >= battle_config.pet_equip_min_friendly) )
|
||||
status_calc_pc(sd,SCO_NONE);
|
||||
}
|
||||
|
||||
@ -156,12 +156,11 @@ int pet_attackskill(struct pet_data *pd, int target_id)
|
||||
* @param type : pet's attack rate type
|
||||
* @return 0
|
||||
*/
|
||||
int pet_target_check(struct map_session_data *sd,struct block_list *bl,int type)
|
||||
int pet_target_check(struct pet_data *pd,struct block_list *bl,int type)
|
||||
{
|
||||
struct pet_data *pd;
|
||||
int rate;
|
||||
|
||||
pd = sd->pd;
|
||||
nullpo_ret(pd);
|
||||
|
||||
Assert((pd->master == 0) || (pd->master->pd == pd));
|
||||
|
||||
|
@ -108,7 +108,7 @@ struct pet_data {
|
||||
int pet_create_egg(struct map_session_data *sd, unsigned short item_id);
|
||||
int pet_hungry_val(struct pet_data *pd);
|
||||
void pet_set_intimate(struct pet_data *pd, int value);
|
||||
int pet_target_check(struct map_session_data *sd,struct block_list *bl,int type);
|
||||
int pet_target_check(struct pet_data *pd,struct block_list *bl,int type);
|
||||
int pet_unlocktarget(struct pet_data *pd);
|
||||
int pet_sc_check(struct map_session_data *sd, int type); //Skotlex
|
||||
int search_petDB_index(int key,int type);
|
||||
|
164
src/map/script.c
164
src/map/script.c
@ -11191,9 +11191,9 @@ BUILDIN_FUNC(changebase)
|
||||
}
|
||||
|
||||
/**
|
||||
* Change sec and unequip all item and request for a changesex to char-serv
|
||||
* Change account sex and unequip all item and request for a changesex to char-serv
|
||||
* changesex({<char_id>});
|
||||
**/
|
||||
*/
|
||||
BUILDIN_FUNC(changesex)
|
||||
{
|
||||
int i;
|
||||
@ -11204,12 +11204,42 @@ BUILDIN_FUNC(changesex)
|
||||
|
||||
pc_resetskill(sd,4);
|
||||
// to avoid any problem with equipment and invalid sex, equipment is unequiped.
|
||||
for( i=0; i<EQI_MAX; i++ )
|
||||
if( sd->equip_index[i] >= 0 ) pc_unequipitem(sd, sd->equip_index[i], 3);
|
||||
chrif_changesex(sd);
|
||||
for(i = 0; i < EQI_MAX; i++) {
|
||||
if (sd->equip_index[i] >= 0)
|
||||
pc_unequipitem(sd, sd->equip_index[i], 3);
|
||||
}
|
||||
|
||||
chrif_changesex(sd, true);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change character's sex and unequip all item and request for a changesex to char-serv
|
||||
* changecharsex({<char_id>});
|
||||
*/
|
||||
BUILDIN_FUNC(changecharsex)
|
||||
{
|
||||
#if PACKETVER >= 20141016
|
||||
int i;
|
||||
TBL_PC *sd = NULL;
|
||||
|
||||
if (!script_charid2sd(2,sd))
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
|
||||
pc_resetskill(sd,4);
|
||||
// to avoid any problem with equipment and invalid sex, equipment is unequiped.
|
||||
for (i = 0; i < EQI_MAX; i++) {
|
||||
if (sd->equip_index[i] >= 0)
|
||||
pc_unequipitem(sd, sd->equip_index[i], 3);
|
||||
}
|
||||
|
||||
chrif_changesex(sd, false);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
#else
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* Works like 'announce' but outputs in the common chat window
|
||||
*------------------------------------------*/
|
||||
@ -16024,7 +16054,7 @@ BUILDIN_FUNC(callshop)
|
||||
}
|
||||
|
||||
if (i == nd->u.shop.count) {
|
||||
clif_colormes(sd, color_table[COLOR_RED], msg_txt(sd, 534));
|
||||
clif_colormes(sd->fd, color_table[COLOR_RED], msg_txt(sd, 534));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -16666,10 +16696,10 @@ BUILDIN_FUNC(getunitdata)
|
||||
TBL_PET* pd = NULL;
|
||||
TBL_ELEM* ed = NULL;
|
||||
TBL_NPC* nd = NULL;
|
||||
int64 num;
|
||||
char* name;
|
||||
struct script_data *data = script_getdata(st, 3);
|
||||
|
||||
if (!data_isreference(script_getdata(st, 3))) {
|
||||
if (!data_isreference(data)) {
|
||||
ShowWarning("buildin_getunitdata: Error in argument! Please give a variable to store values in.\n");
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
@ -16690,10 +16720,9 @@ BUILDIN_FUNC(getunitdata)
|
||||
case BL_NPC: nd = map_id2nd(bl->id); break;
|
||||
}
|
||||
|
||||
num = st->stack->stack_data[st->start+3].u.num;
|
||||
name = (char *)(str_buf+str_data[num&0x00ffffff].str);
|
||||
name = reference_getname(data);
|
||||
|
||||
#define getunitdata_sub(idx__,var__) setd_sub(st,sd,name,(idx__),(void *)__64BPRTSIZE((int)(var__)),script_getref(st,3))
|
||||
#define getunitdata_sub(idx__,var__) setd_sub(st,sd,name,(idx__),(void *)__64BPRTSIZE((int)(var__)),data->ref)
|
||||
|
||||
switch(bl->type) {
|
||||
case BL_MOB:
|
||||
@ -16904,7 +16933,16 @@ BUILDIN_FUNC(setunitdata)
|
||||
case BL_PET: pd = map_id2pd(bl->id); break;
|
||||
case BL_MER: mc = map_id2mc(bl->id); break;
|
||||
case BL_ELEM: ed = map_id2ed(bl->id); break;
|
||||
case BL_NPC: nd = map_id2nd(bl->id); break;
|
||||
case BL_NPC:
|
||||
nd = map_id2nd(bl->id);
|
||||
if (!nd->status.hp)
|
||||
status_calc_npc(nd, SCO_FIRST);
|
||||
else
|
||||
status_calc_npc(nd, SCO_NONE);
|
||||
break;
|
||||
default:
|
||||
ShowError("buildin_setunitdata: Invalid object!");
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
type = script_getnum(st, 3);
|
||||
@ -17095,7 +17133,7 @@ BUILDIN_FUNC(setunitdata)
|
||||
break;
|
||||
|
||||
case BL_NPC:
|
||||
if (!md) {
|
||||
if (!nd) {
|
||||
ShowWarning("buildin_setunitdata: Error in finding object BL_NPC!\n");
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
@ -17108,12 +17146,12 @@ BUILDIN_FUNC(setunitdata)
|
||||
case 5: if (!unit_walktoxy(bl, (short)value, nd->bl.y, 2)) unit_movepos(bl, (short)value, nd->bl.x, 0, 0); break;
|
||||
case 6: if (!unit_walktoxy(bl, nd->bl.x, (short)value, 2)) unit_movepos(bl, nd->bl.x, (short)value, 0, 0); break;
|
||||
case 7: unit_setdir(bl, (uint8)value); break;
|
||||
case 8: nd->status.str = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 9: nd->status.agi = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 10: nd->status.vit = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 11: nd->status.int_ = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 12: nd->status.dex = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 13: nd->status.luk = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 8: nd->params.str = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 9: nd->params.agi = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 10: nd->params.vit = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 11: nd->params.int_ = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 12: nd->params.dex = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
case 13: nd->params.luk = (unsigned short)value; status_calc_bl(bl, SCB_ALL); break;
|
||||
default:
|
||||
ShowError("buildin_setunitdata: Unknown data identifier %d for BL_NPC.\n", type);
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
@ -17475,9 +17513,9 @@ BUILDIN_FUNC(unitskilluseid)
|
||||
if (bl != NULL) {
|
||||
if (bl->type == BL_NPC) {
|
||||
if (!((TBL_NPC*)bl)->status.hp)
|
||||
status_calc_npc(((TBL_NPC*)bl), true);
|
||||
status_calc_npc(((TBL_NPC*)bl), SCO_FIRST);
|
||||
else
|
||||
status_calc_npc(((TBL_NPC*)bl), false);
|
||||
status_calc_npc(((TBL_NPC*)bl), SCO_NONE);
|
||||
}
|
||||
unit_skilluse_id2(bl, target_id, skill_id, skill_lv, (casttime * 1000) + skill_castfix(bl, skill_id, skill_lv), skill_get_castcancel(skill_id));
|
||||
}
|
||||
@ -17739,7 +17777,7 @@ BUILDIN_FUNC(openauction)
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
|
||||
if( !battle_config.feature_auction ) {
|
||||
clif_colormes(sd, color_table[COLOR_RED], msg_txt(sd, 517));
|
||||
clif_colormes(sd->fd, color_table[COLOR_RED], msg_txt(sd, 517));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -17995,21 +18033,23 @@ BUILDIN_FUNC(questinfo)
|
||||
int quest_id, icon;
|
||||
struct questinfo qi;
|
||||
|
||||
if( nd == NULL || nd->bl.m == -1 )
|
||||
return true;
|
||||
if( nd == NULL || nd->bl.m == -1 ) {
|
||||
ShowError("buildin_questinfo: No NPC attached.\n");
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
quest_id = script_getnum(st, 2);
|
||||
icon = script_getnum(st, 3);
|
||||
|
||||
#if PACKETVER >= 20120410
|
||||
if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
|
||||
icon = 9999; // Default to nothing if icon id is invalid.
|
||||
#else
|
||||
if(icon < 0 || icon > 7)
|
||||
icon = 0;
|
||||
else
|
||||
icon = icon + 1;
|
||||
#endif
|
||||
#if PACKETVER >= 20120410
|
||||
if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
|
||||
icon = 9999; // Default to nothing if icon id is invalid.
|
||||
#else
|
||||
if(icon < 0 || icon > 7)
|
||||
icon = 0;
|
||||
else
|
||||
icon = icon + 1;
|
||||
#endif
|
||||
|
||||
qi.quest_id = quest_id;
|
||||
qi.icon = (unsigned char)icon;
|
||||
@ -18040,7 +18080,7 @@ BUILDIN_FUNC(questinfo)
|
||||
|
||||
map_add_questinfo(nd->bl.m,&qi);
|
||||
|
||||
return true;
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -18176,15 +18216,15 @@ BUILDIN_FUNC(showevent)
|
||||
}
|
||||
}
|
||||
|
||||
#if PACKETVER >= 20120410
|
||||
if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
|
||||
icon = 9999; // Default to nothing if icon id is invalid.
|
||||
#else
|
||||
if(icon < 0 || icon > 7)
|
||||
icon = 0;
|
||||
else
|
||||
icon = icon + 1;
|
||||
#endif
|
||||
#if PACKETVER >= 20120410
|
||||
if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
|
||||
icon = 9999; // Default to nothing if icon id is invalid.
|
||||
#else
|
||||
if(icon < 0 || icon > 7)
|
||||
icon = 0;
|
||||
else
|
||||
icon = icon + 1;
|
||||
#endif
|
||||
|
||||
clif_quest_show_event(sd, &nd->bl, icon, color);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
@ -20000,9 +20040,6 @@ BUILDIN_FUNC(montransform) {
|
||||
val4 = script_getnum(st, 8);
|
||||
|
||||
if (tick != 0) {
|
||||
char msg[CHAT_SIZE_MAX];
|
||||
struct mob_db *monster = mob_db(mob_id);
|
||||
|
||||
if (battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m)) {
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,731)); // Transforming into monster is not allowed in Guild Wars.
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
@ -20013,11 +20050,9 @@ BUILDIN_FUNC(montransform) {
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
sprintf(msg, msg_txt(sd,728), monster->name); // Traaaansformation-!! %s form!!
|
||||
clif_showscript(&sd->bl, msg);
|
||||
status_change_end(&sd->bl, SC_MONSTER_TRANSFORM, INVALID_TIMER); // Clear previous
|
||||
sc_start2(NULL, &sd->bl, SC_MONSTER_TRANSFORM, 100, mob_id, type, tick);
|
||||
if (script_hasdata(st, 4))
|
||||
if (type != SC_NONE)
|
||||
sc_start4(NULL, &sd->bl, type, 100, val1, val2, val3, val4, tick);
|
||||
}
|
||||
|
||||
@ -20435,6 +20470,35 @@ BUILDIN_FUNC(getvar) {
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display script message
|
||||
* showscript "<message>"{,<GID>};
|
||||
**/
|
||||
BUILDIN_FUNC(showscript) {
|
||||
struct block_list *bl = NULL;
|
||||
const char *msg = script_getstr(st,2);
|
||||
int id = 0;
|
||||
|
||||
if (script_hasdata(st,3)) {
|
||||
id = script_getnum(st,3);
|
||||
bl = map_id2bl(id);
|
||||
}
|
||||
else {
|
||||
bl = st->rid ? map_id2bl(st->rid) : map_id2bl(st->oid);
|
||||
}
|
||||
|
||||
if (!bl) {
|
||||
ShowError("buildin_showscript: Script not attached. (id=%, rid=%d, oid=%d)\n", id, st->rid, st->oid);
|
||||
script_pushint(st,0);
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
clif_showscript(bl, msg);
|
||||
|
||||
script_pushint(st,1);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
#include "../custom/script.inc"
|
||||
|
||||
// declarations that were supposed to be exported from npc_chat.c
|
||||
@ -20659,6 +20723,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(skillpointcount,"?"),
|
||||
BUILDIN_DEF(changebase,"i?"),
|
||||
BUILDIN_DEF(changesex,"?"),
|
||||
BUILDIN_DEF(changecharsex,"?"),
|
||||
BUILDIN_DEF(waitingroom,"si?????"),
|
||||
BUILDIN_DEF(delwaitingroom,"?"),
|
||||
BUILDIN_DEF2(waitingroomkickall,"kickwaitingroomall","?"),
|
||||
@ -20989,6 +21054,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(npcshopupdate,"sii?"),
|
||||
BUILDIN_DEF(getattachedrid,""),
|
||||
BUILDIN_DEF(getvar,"vi"),
|
||||
BUILDIN_DEF(showscript,"s?"),
|
||||
|
||||
#include "../custom/script_def.inc"
|
||||
|
||||
|
229
src/map/skill.c
229
src/map/skill.c
@ -851,7 +851,6 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
|
||||
struct mob_data *md, *dstmd;
|
||||
struct status_data *sstatus, *tstatus;
|
||||
struct status_change *sc, *tsc;
|
||||
|
||||
enum sc_type status;
|
||||
int skill;
|
||||
int rate;
|
||||
@ -1103,7 +1102,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
|
||||
break;
|
||||
|
||||
case HT_SHOCKWAVE:
|
||||
status_percent_damage(src, bl, 0, 15*skill_lv+5, false);
|
||||
status_percent_damage(src, bl, 0, -(15*skill_lv+5), false);
|
||||
break;
|
||||
|
||||
case HT_SANDMAN:
|
||||
@ -1465,10 +1464,12 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
|
||||
skill_castend_damage_id(src,bl,LG_PINPOINTATTACK,rnd_value(1, pc_checkskill(sd,LG_PINPOINTATTACK)),tick,0);
|
||||
break;
|
||||
case SR_DRAGONCOMBO:
|
||||
sc_start(src,bl, SC_STUN, 1 + skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||
case SR_FLASHCOMBO_ATK_STEP1:
|
||||
sc_start(src,bl, SC_STUN, 1 + skill_lv, skill_lv, skill_get_time(SR_DRAGONCOMBO, skill_lv));
|
||||
break;
|
||||
case SR_FALLENEMPIRE:
|
||||
sc_start(src,bl, SC_STOP, 100, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||
case SR_FLASHCOMBO_ATK_STEP2:
|
||||
sc_start(src,bl, SC_STOP, 100, skill_lv, skill_get_time(SR_FALLENEMPIRE, skill_lv));
|
||||
break;
|
||||
case SR_WINDMILL:
|
||||
if( dstsd )
|
||||
@ -1745,16 +1746,25 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
|
||||
src = sd?&sd->bl:src;
|
||||
}
|
||||
|
||||
if( attack_type&BF_WEAPON )
|
||||
{ // Coma, Breaking Equipment
|
||||
if( sd && sd->special_state.bonus_coma )
|
||||
{
|
||||
rate = sd->weapon_coma_ele[tstatus->def_ele] + sd->weapon_coma_ele[ELE_ALL];
|
||||
// Coma
|
||||
if (sd && sd->special_state.bonus_coma && (!md || !mob_is_gvg(md) || !mob_is_battleground(md))) {
|
||||
rate = 0;
|
||||
//! TODO: Filter the skills that shouldn't inflict coma bonus, to avoid some non-damage skills inflict coma. [Cydh]
|
||||
if (!skill_id || !(skill_get_nk(skill_id)&NK_NO_DAMAGE)) {
|
||||
rate += sd->coma_class[tstatus->class_] + sd->coma_class[CLASS_ALL];
|
||||
rate += sd->coma_race[tstatus->race] + sd->coma_race[RC_ALL];
|
||||
}
|
||||
if (attack_type&BF_WEAPON) {
|
||||
rate += sd->weapon_coma_ele[tstatus->def_ele] + sd->weapon_coma_ele[ELE_ALL];
|
||||
rate += sd->weapon_coma_race[tstatus->race] + sd->weapon_coma_race[RC_ALL];
|
||||
rate += sd->weapon_coma_class[tstatus->class_] + sd->weapon_coma_class[CLASS_ALL];
|
||||
if (rate)
|
||||
status_change_start(src,bl, SC_COMA, rate, 0, 0, src->id, 0, 0, SCSTART_NONE);
|
||||
}
|
||||
if (rate > 0)
|
||||
status_change_start(src,bl, SC_COMA, rate, 0, 0, src->id, 0, 0, SCSTART_NONE);
|
||||
}
|
||||
|
||||
if( attack_type&BF_WEAPON )
|
||||
{ // Breaking Equipment
|
||||
if( sd && battle_config.equip_self_break_rate )
|
||||
{ // Self weapon breaking
|
||||
rate = battle_config.equip_natural_break_rate;
|
||||
@ -2413,6 +2423,7 @@ int skill_strip_equip(struct block_list *src,struct block_list *bl, unsigned sho
|
||||
* [2] counts how many targets have been processed. counter is added in skill_area_sub if the foreach function flag is: flag&(SD_SPLASH|SD_PREAMBLE)
|
||||
*/
|
||||
static int skill_area_temp[8];
|
||||
static int64 skill_area_temp_i64[1];
|
||||
|
||||
/**
|
||||
Used to knock back players, monsters, traps, etc
|
||||
@ -2883,8 +2894,10 @@ void skill_attack_blow(struct block_list *src, struct block_list *dsrc, struct b
|
||||
* flag&1
|
||||
* flag&2 - Disable re-triggered by double casting
|
||||
* flag&4 - Skip to blow target (because already knocked back before skill_attack somewhere)
|
||||
* flag&8 - Force assume the target is not as is_infinite_defense() on in battle_calc_attack() first.
|
||||
* Once it's done, store the damage to skill_area_temp_i64[0] then re-calcuate for real against 'plant'.
|
||||
*
|
||||
* flag&0xFFF is passed to the underlying battle_calc_attack for processing
|
||||
* flag&0xFFF is passed to the underlying battle_calc_attack for processing.
|
||||
* (usually holds number of targets, or just 1 for simple splash attacks)
|
||||
*
|
||||
* flag&0xF000 - Values from enum e_skill_display
|
||||
@ -3051,6 +3064,14 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
||||
skill_id == MER_INCAGI || skill_id == MER_BLESSING) && tsd->sc.data[SC_CHANGEUNDEAD] )
|
||||
damage = 1;
|
||||
|
||||
if (flag&8) {
|
||||
skill_area_temp_i64[0] = damage;
|
||||
if (is_infinite_defense(bl, dmg.flag)) {
|
||||
dmg = battle_calc_attack_plant(dmg, src, bl, skill_id, skill_lv);
|
||||
damage = dmg.damage + dmg.damage2;
|
||||
}
|
||||
}
|
||||
|
||||
if( damage && tsc && tsc->data[SC_GENSOU] && dmg.flag&BF_MAGIC ){
|
||||
struct block_list *nbl;
|
||||
nbl = battle_getenemyarea(bl,bl->x,bl->y,2,BL_CHAR,bl->id);
|
||||
@ -3317,9 +3338,9 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
||||
(dmg.flag&BF_MISC && (skill_id == RA_CLUSTERBOMB || skill_id == RA_FIRINGTRAP || skill_id == RA_ICEBOUNDTRAP)) ) )
|
||||
{
|
||||
if (battle_config.left_cardfix_to_right)
|
||||
battle_drain(sd, bl, dmg.damage, dmg.damage, tstatus->race, tstatus->class_);
|
||||
battle_drain(sd, bl, dmg.damage, dmg.damage, tstatus->race, tstatus->class_, is_infinite_defense(bl,dmg.flag));
|
||||
else
|
||||
battle_drain(sd, bl, dmg.damage, dmg.damage2, tstatus->race, tstatus->class_);
|
||||
battle_drain(sd, bl, dmg.damage, dmg.damage2, tstatus->race, tstatus->class_, is_infinite_defense(bl,dmg.flag));
|
||||
}
|
||||
|
||||
if( damage > 0 ) { // Post-damage effects
|
||||
@ -3752,10 +3773,10 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
|
||||
case WL_TETRAVORTEX_WIND:
|
||||
case WL_TETRAVORTEX_GROUND:
|
||||
// For SR_FLASHCOMBO
|
||||
case SR_DRAGONCOMBO:
|
||||
case SR_FALLENEMPIRE:
|
||||
case SR_TIGERCANNON:
|
||||
case SR_SKYNETBLOW:
|
||||
case SR_FLASHCOMBO_ATK_STEP1:
|
||||
case SR_FLASHCOMBO_ATK_STEP2:
|
||||
case SR_FLASHCOMBO_ATK_STEP3:
|
||||
case SR_FLASHCOMBO_ATK_STEP4:
|
||||
break; // Exceptions
|
||||
default:
|
||||
continue; // Caster is Dead
|
||||
@ -3905,14 +3926,15 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
|
||||
break;
|
||||
}
|
||||
// For SR_FLASHCOMBO
|
||||
case SR_DRAGONCOMBO:
|
||||
case SR_FALLENEMPIRE:
|
||||
case SR_TIGERCANNON:
|
||||
case SR_SKYNETBLOW:
|
||||
case SR_FLASHCOMBO_ATK_STEP1:
|
||||
case SR_FLASHCOMBO_ATK_STEP2:
|
||||
case SR_FLASHCOMBO_ATK_STEP3:
|
||||
case SR_FLASHCOMBO_ATK_STEP4:
|
||||
if( src->type == BL_PC ) {
|
||||
const int use_skill_lv[] = { SR_DRAGONCOMBO, SR_FALLENEMPIRE, SR_TIGERCANNON, SR_SKYNETBLOW };
|
||||
if( distance_xy(src->x, src->y, target->x, target->y) >= 3 )
|
||||
break;
|
||||
skill_castend_damage_id(src, target, skl->skill_id, pc_checkskill(((TBL_PC *)src), skl->skill_id), tick, 0);
|
||||
skill_castend_damage_id(src, target, skl->skill_id, pc_checkskill(((TBL_PC *)src), use_skill_lv[skl->skill_id-SR_FLASHCOMBO_ATK_STEP1]), tick, 0);
|
||||
}
|
||||
break;
|
||||
case SC_ESCAPE:
|
||||
@ -4033,10 +4055,10 @@ int skill_cleartimerskill (struct block_list *src)
|
||||
case WL_TETRAVORTEX_WIND:
|
||||
case WL_TETRAVORTEX_GROUND:
|
||||
// For SR_FLASHCOMBO
|
||||
case SR_DRAGONCOMBO:
|
||||
case SR_FALLENEMPIRE:
|
||||
case SR_TIGERCANNON:
|
||||
case SR_SKYNETBLOW:
|
||||
case SR_FLASHCOMBO_ATK_STEP1:
|
||||
case SR_FLASHCOMBO_ATK_STEP2:
|
||||
case SR_FLASHCOMBO_ATK_STEP3:
|
||||
case SR_FLASHCOMBO_ATK_STEP4:
|
||||
continue;
|
||||
}
|
||||
delete_timer(ud->skilltimerskill[i]->timer, skill_timerskill);
|
||||
@ -4123,8 +4145,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
|
||||
map_freeblock_lock();
|
||||
|
||||
switch(skill_id)
|
||||
{
|
||||
switch(skill_id) {
|
||||
case MER_CRASH:
|
||||
case SM_BASH:
|
||||
case MS_BASH:
|
||||
@ -4194,7 +4215,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
case TK_COUNTER:
|
||||
case GS_CHAINACTION:
|
||||
case GS_TRIPLEACTION:
|
||||
#ifndef RENEWAL
|
||||
case GS_MAGICALBULLET:
|
||||
#endif
|
||||
case GS_TRACKING:
|
||||
case GS_PIERCINGSHOT:
|
||||
case GS_RAPIDSHOWER:
|
||||
@ -4229,6 +4252,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
case LG_OVERBRAND:
|
||||
case LG_OVERBRAND_BRANDISH:
|
||||
case SR_FALLENEMPIRE:
|
||||
case SR_FLASHCOMBO_ATK_STEP2:
|
||||
case SR_CRESCENTELBOW_AUTOSPELL:
|
||||
case SR_GATEOFHELL:
|
||||
case SR_GENTLETOUCH_QUIET:
|
||||
@ -4459,6 +4483,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
case LG_EARTHDRIVE:
|
||||
case SR_RAMPAGEBLASTER:
|
||||
case SR_SKYNETBLOW:
|
||||
case SR_FLASHCOMBO_ATK_STEP4:
|
||||
case SR_WINDMILL:
|
||||
case SR_RIDEINLIGHTNING:
|
||||
case WM_SOUND_OF_DESTRUCTION:
|
||||
@ -4788,6 +4813,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
case TF_THROWSTONE:
|
||||
#ifdef RENEWAL
|
||||
case ASC_BREAKER:
|
||||
case GS_MAGICALBULLET:
|
||||
#endif
|
||||
case NPC_SMOKING:
|
||||
case GS_FLING:
|
||||
@ -5239,6 +5265,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
break;
|
||||
|
||||
case SR_DRAGONCOMBO:
|
||||
case SR_FLASHCOMBO_ATK_STEP1:
|
||||
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
|
||||
break;
|
||||
|
||||
@ -5290,17 +5317,30 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
break;
|
||||
|
||||
case SR_TIGERCANNON:
|
||||
if ( flag&1 ) {
|
||||
skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
|
||||
status_zap(bl, 0, status_get_max_sp(bl) * 10 / 100);
|
||||
} else if ( sd ) {
|
||||
int hpcost = 10 + 2 * skill_lv, spcost = 5 + 1 * skill_lv;
|
||||
if (!status_charge(src, status_get_max_hp(src) * hpcost / 100, status_get_max_sp(src) * spcost / 100)) {
|
||||
if (sd)
|
||||
clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
|
||||
break;
|
||||
case SR_FLASHCOMBO_ATK_STEP3:
|
||||
if (flag&1) {
|
||||
if (skill_area_temp[3] == skill_id && skill_area_temp_i64[0]) { // Safe check
|
||||
if (skill_area_temp[1] != bl->id) {
|
||||
int64 dmg = skill_area_temp_i64[0];
|
||||
bool infdef = is_infinite_defense(bl, skill_get_type(skill_id));
|
||||
if (infdef)
|
||||
dmg = 1;
|
||||
status_damage(src, bl, dmg, 0, 0, 0);
|
||||
status_zap(bl, 0, status_get_max_sp(bl) * 10 / 100);
|
||||
clif_skill_damage(src, bl, tick, status_get_amotion(bl), 0, dmg, 1, skill_id, skill_lv, 6);
|
||||
}
|
||||
}
|
||||
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_damage_id);
|
||||
else { // Somehow, we failed
|
||||
skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
|
||||
status_zap(bl, 0, status_get_max_sp(bl) * 10 / 100);
|
||||
}
|
||||
}
|
||||
else if (sd) {
|
||||
skill_area_temp[1] = bl->id;
|
||||
skill_area_temp[3] = skill_id;
|
||||
skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag|8); // Only do attack calculation once
|
||||
status_zap(bl, 0, status_get_max_sp(bl) * 10 / 100);
|
||||
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -6491,8 +6531,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
i = 0;
|
||||
if (dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m) || (sd && sd->duel_group && sd->duel_group == dstsd->duel_group)) &&
|
||||
((dstsd->class_&MAPID_BASEMASK) != MAPID_GUNSLINGER || (dstsd->class_&MAPID_UPPERMASK) != MAPID_REBELLION)) { // split the if for readability, and included gunslingers in the check so that their coins cannot be removed [Reddozen]
|
||||
i = dstsd->spiritball * 7;
|
||||
pc_delspiritball(dstsd,dstsd->spiritball,0);
|
||||
if (dstsd->spiritball > 0) {
|
||||
i = dstsd->spiritball * 7;
|
||||
pc_delspiritball(dstsd,dstsd->spiritball,0);
|
||||
}
|
||||
if (dstsd->spiritcharm_type != CHARM_TYPE_NONE && dstsd->spiritcharm > 0) {
|
||||
i += dstsd->spiritcharm * 7;
|
||||
pc_delspiritcharm(dstsd,dstsd->spiritcharm,dstsd->spiritcharm_type);
|
||||
}
|
||||
} else if (dstmd && !(tstatus->mode&MD_BOSS) && rnd() % 100 < 20) { // check if target is a monster and not a Boss, for the 20% chance to absorb 2 SP per monster's level [Reddozen]
|
||||
i = 2 * dstmd->level;
|
||||
mob_target(dstmd,src,0);
|
||||
@ -6543,6 +6589,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
case NC_AXETORNADO:
|
||||
case GC_COUNTERSLASH:
|
||||
case SR_SKYNETBLOW:
|
||||
case SR_FLASHCOMBO_ATK_STEP4:
|
||||
case SR_RAMPAGEBLASTER:
|
||||
case SR_HOWLINGOFLION:
|
||||
case KO_HAPPOKUNAI:
|
||||
@ -6589,7 +6636,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||
map_foreachinrange(skill_area_sub,src,
|
||||
skill_get_splash(skill_id, skill_lv),BL_CHAR|BL_SKILL,
|
||||
src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1,
|
||||
src,skill_id,skill_lv,tick, flag|BCT_ENEMY|SD_ANIMATION|1,
|
||||
skill_castend_damage_id);
|
||||
break;
|
||||
|
||||
@ -7045,7 +7092,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
|
||||
case AL_HOLYWATER:
|
||||
if(sd) {
|
||||
if (skill_produce_mix(sd, skill_id, 523, 0, 0, 0, 1))
|
||||
if (skill_produce_mix(sd, skill_id, ITEMID_HOLY_WATER, 0, 0, 0, 1))
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||
else
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||
@ -9445,14 +9492,20 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
break;
|
||||
|
||||
case SR_ASSIMILATEPOWER:
|
||||
if( flag&1 ) {
|
||||
if (flag&1) {
|
||||
i = 0;
|
||||
if( dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER )
|
||||
{
|
||||
i = dstsd->spiritball; //1%sp per spiritball.
|
||||
pc_delspiritball(dstsd, dstsd->spiritball, 0);
|
||||
if (dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) {
|
||||
if (dstsd->spiritball > 0) {
|
||||
i = dstsd->spiritball;
|
||||
pc_delspiritball(dstsd,dstsd->spiritball,0);
|
||||
}
|
||||
if (dstsd->spiritcharm_type != CHARM_TYPE_NONE && dstsd->spiritcharm > 0) {
|
||||
i += dstsd->spiritcharm;
|
||||
pc_delspiritcharm(dstsd,dstsd->spiritcharm,dstsd->spiritcharm_type);
|
||||
}
|
||||
}
|
||||
if( i ) status_percent_heal(src, 0, i);
|
||||
if (i)
|
||||
status_percent_heal(src, 0, i);
|
||||
clif_skill_nodamage(src, bl, skill_id, skill_lv, i ? 1:0);
|
||||
} else {
|
||||
clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
|
||||
@ -9499,14 +9552,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
|
||||
break;
|
||||
case SR_FLASHCOMBO: {
|
||||
const int combo[] = { SR_DRAGONCOMBO, SR_FALLENEMPIRE, SR_TIGERCANNON, SR_SKYNETBLOW };
|
||||
const int combo[] = { SR_FLASHCOMBO_ATK_STEP1, SR_FLASHCOMBO_ATK_STEP2, SR_FLASHCOMBO_ATK_STEP3, SR_FLASHCOMBO_ATK_STEP4 };
|
||||
const int delay[] = { 0, 250, 500, 2000 };
|
||||
|
||||
if (sd)
|
||||
sd->ud.attackabletime = sd->canuseitem_tick = sd->ud.canact_tick;
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,
|
||||
sc_start2(src,bl,type,100,skill_lv,bl->id,skill_get_time(skill_id,skill_lv)));
|
||||
for (i = 0; i < ARRAYLENGTH(combo); i++)
|
||||
skill_addtimerskill(src,tick + 500 * i,bl->id,0,0,combo[i],skill_lv,BF_WEAPON,flag|SD_LEVEL);
|
||||
skill_addtimerskill(src,tick + delay[i],bl->id,0,0,combo[i],skill_lv,BF_WEAPON,flag|SD_LEVEL);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -10037,13 +10091,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
case KO_HYOUHU_HUBUKI:
|
||||
case KO_KAZEHU_SEIRAN:
|
||||
case KO_DOHU_KOUKAI:
|
||||
if(sd) {
|
||||
int i_tal, ttype = skill_get_ele(skill_id, skill_lv);
|
||||
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
||||
ARR_FIND(1, 6, i_tal, sd->talisman[i_tal] > 0 && ttype != i_tal);
|
||||
if( i_tal < 6 )
|
||||
pc_del_talisman(sd, sd->talisman[i_tal], i_tal); // Replace talisman
|
||||
pc_add_talisman(sd, skill_get_time(skill_id, skill_lv), 10, ttype);
|
||||
if (sd) {
|
||||
int type = skill_get_ele(skill_id,skill_lv);
|
||||
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||
pc_addspiritcharm(sd,skill_get_time(skill_id,skill_lv),MAX_SPIRITCHARM,type);
|
||||
}
|
||||
break;
|
||||
case KO_ZANZOU:
|
||||
@ -10219,7 +10271,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
if(hd->master && hd->sc.data[SC_STYLE_CHANGE]) {
|
||||
char output[128];
|
||||
safesnprintf(output,sizeof(output),msg_txt(sd,378),(sce->val1==MH_MD_FIGHTING?"fighthing":"grappling"));
|
||||
clif_colormes(hd->master,color_table[COLOR_RED],output);
|
||||
clif_colormes(hd->master->fd, color_table[COLOR_RED], output);
|
||||
}
|
||||
}
|
||||
else sc_start(&hd->bl,&hd->bl, SC_STYLE_CHANGE, 100, MH_MD_FIGHTING, -1);
|
||||
@ -11446,7 +11498,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
||||
|
||||
case SO_ARRULLO:
|
||||
i = skill_get_splash(skill_id,skill_lv);
|
||||
map_foreachinarea(skill_area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src),
|
||||
map_foreachinarea(skill_area_sub,src->m,x-i,y-i,x+i,y+i,BL_CHAR,
|
||||
src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id);
|
||||
break;
|
||||
|
||||
@ -12322,15 +12374,12 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_
|
||||
limit = ((sd ? pc_checkskill(sd,GN_DEMONIC_FIRE) : 1) + 1) * limit;
|
||||
break;
|
||||
case KO_ZENKAI:
|
||||
if( sd ){
|
||||
ARR_FIND(1, 6, i, sd->talisman[i] > 0);
|
||||
if( i < 5 ){
|
||||
val1 = sd->talisman[i]; // no. of aura
|
||||
val2 = i; // aura type
|
||||
limit += val1 * 1000;
|
||||
subunt = i - 1;
|
||||
pc_del_talisman(sd, sd->talisman[i], i);
|
||||
}
|
||||
if (sd && sd->spiritcharm_type != CHARM_TYPE_NONE && sd->spiritcharm > 0) {
|
||||
val1 = sd->spiritcharm;
|
||||
val2 = sd->spiritcharm_type;
|
||||
limit = 6000 * val1;
|
||||
subunt = sd->spiritcharm_type - 1;
|
||||
pc_delspiritcharm(sd,sd->spiritcharm,sd->spiritcharm_type);
|
||||
}
|
||||
break;
|
||||
case HW_GRAVITATION:
|
||||
@ -14702,7 +14751,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
MOBID_EMPERIUM, MOBID_GUARDIAN_STONE1, MOBID_GUARDIAN_STONE2)) {
|
||||
char output[128];
|
||||
sprintf(output,"%s",msg_txt(sd,382)); // You're too close to a stone or emperium to use this skill.
|
||||
clif_colormes(sd,color_table[COLOR_RED], output);
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED], output);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -14779,20 +14828,15 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
case KO_HYOUHU_HUBUKI:
|
||||
case KO_KAZEHU_SEIRAN:
|
||||
case KO_DOHU_KOUKAI:
|
||||
{
|
||||
int ttype = skill_get_ele(skill_id, skill_lv);
|
||||
ARR_FIND(1, 5, i, sd->talisman[i] > 0 && i != ttype);
|
||||
if( sd->talisman[ttype] >= 10 ) {
|
||||
clif_skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0);
|
||||
return false;
|
||||
}
|
||||
if (sd->spiritcharm_type == skill_get_ele(skill_id,skill_lv) && sd->spiritcharm >= MAX_SPIRITCHARM) {
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON,0);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case KO_KAIHOU:
|
||||
case KO_ZENKAI:
|
||||
ARR_FIND(1, 6, i, sd->talisman[i] > 0);
|
||||
if( i > 4 ) {
|
||||
clif_skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0);
|
||||
if (sd->spiritcharm_type == CHARM_TYPE_NONE || sd->spiritcharm <= 0) {
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON_NONE,0);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
@ -14914,7 +14958,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
char output[CHAT_SIZE_MAX];
|
||||
//Official use msgstringtable.txt for each skill failure
|
||||
sprintf(output,msg_txt(sd,722),itemdb_jname(reqeqit));
|
||||
clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
clif_colormes(sd->fd, color_table[COLOR_RED], output);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -15095,7 +15139,7 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
|
||||
skill_get_desc(skill_id),
|
||||
require.ammo_qty,
|
||||
itemdb_jname(sd->status.inventory[i].nameid));
|
||||
clif_colormes(sd,color_table[COLOR_RED],e_msg);
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],e_msg);
|
||||
return false;
|
||||
}
|
||||
if (!(require.ammo&1<<sd->inventory_data[i]->look)) { //Ammo type check. Send the "wrong weapon type" message
|
||||
@ -15126,7 +15170,7 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
|
||||
//Official is using msgstringtable.txt for each requirement failure
|
||||
//clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||
sprintf(output, msg_txt(sd,720), itemdb_jname(require.itemid[i])); // %s is required.
|
||||
clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
clif_colormes(sd->fd,color_table[COLOR_RED],output);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -15810,6 +15854,8 @@ int skill_delayfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)
|
||||
case CH_CHAINCRUSH:
|
||||
case SR_DRAGONCOMBO:
|
||||
case SR_FALLENEMPIRE:
|
||||
case SR_FLASHCOMBO_ATK_STEP1:
|
||||
case SR_FLASHCOMBO_ATK_STEP2:
|
||||
//If delay not specified, it will be 1000 - 4*agi - 2*dex
|
||||
if (time == 0)
|
||||
time = 1000;
|
||||
@ -18605,17 +18651,22 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (skill_id == GN_CHANGEMATERIAL && tmp_item.amount) { //Success
|
||||
int j, k = 0;
|
||||
int j, k = 0, l;
|
||||
bool isStackable = itemdb_isstackable(tmp_item.nameid);
|
||||
|
||||
for (i = 0; i < MAX_SKILL_CHANGEMATERIAL_DB; i++) {
|
||||
if (skill_changematerial_db[i].nameid == nameid){
|
||||
for (j = 0; j < MAX_SKILL_CHANGEMATERIAL_SET; j++){
|
||||
if (rnd()%1000 < skill_changematerial_db[i].qty_rate[j]){
|
||||
tmp_item.amount = qty * skill_changematerial_db[i].qty[j];
|
||||
if ((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) {
|
||||
clif_additem(sd,0,0,flag);
|
||||
map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0);
|
||||
uint16 total_qty = qty * skill_changematerial_db[i].qty[j];
|
||||
tmp_item.amount = (isStackable ? total_qty : 1);
|
||||
for (l = 0; l < total_qty; l += tmp_item.amount) {
|
||||
if ((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) {
|
||||
clif_additem(sd,0,0,flag);
|
||||
map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0);
|
||||
}
|
||||
}
|
||||
k++;
|
||||
}
|
||||
@ -18804,7 +18855,7 @@ int skill_poisoningweapon(struct map_session_data *sd, unsigned short nameid)
|
||||
type, chance, 0, skill_get_time(GC_POISONINGWEAPON, sd->menuskill_val));
|
||||
|
||||
sprintf(output, msg_txt(sd,721), msg);
|
||||
clif_colormes(sd,color_table[COLOR_WHITE],output);
|
||||
clif_colormes(sd->fd,color_table[COLOR_WHITE],output);
|
||||
|
||||
/*#if PACKETVER >= 20110208 //! TODO: Check the correct PACKVETVER
|
||||
clif_msg(sd,msg);
|
||||
|
@ -72,6 +72,7 @@ enum e_skill_inf2 {
|
||||
INF2_NO_BG_DMG = 0x08000, // Skill that ignore bg reduction
|
||||
INF2_NO_GVG_DMG = 0x10000, // Skill that ignore gvg reduction
|
||||
INF2_NO_NEARNPC = 0x20000, // disable to cast skill if near with NPC [Cydh]
|
||||
INF2_HIT_TRAP = 0x40000, // can hit trap-type skill (INF2_TRAP) [Cydh]
|
||||
};
|
||||
|
||||
/// Skill info type 3
|
||||
@ -172,8 +173,8 @@ struct s_skill_db {
|
||||
int16 cast_def_rate; ///< Def rate during cast a skill
|
||||
uint16 skill_type; ///< Skill type
|
||||
int blewcount[MAX_SKILL_LEVEL]; ///< Blew count
|
||||
uint32 inf2; ///<
|
||||
uint32 inf3; ///<
|
||||
uint32 inf2; ///< Skill flags @see enum e_skill_inf2
|
||||
uint32 inf3; ///< Skill flags @see enum e_skill_inf3
|
||||
int maxcount[MAX_SKILL_LEVEL]; ///< Max number skill can be casted in same map
|
||||
|
||||
// skill_castnodex_db.txt
|
||||
@ -1719,10 +1720,10 @@ enum e_skill {
|
||||
WL_TELEKINESIS_INTENSE,
|
||||
LG_KINGS_GRACE,
|
||||
ALL_FULL_THROTTLE,
|
||||
SR_FLASHCOMBO_ATK_STEP1,
|
||||
SR_FLASHCOMBO_ATK_STEP2,
|
||||
SR_FLASHCOMBO_ATK_STEP3,
|
||||
SR_FLASHCOMBO_ATK_STEP4,
|
||||
SR_FLASHCOMBO_ATK_STEP1, // SR_DRAGONCOMBO
|
||||
SR_FLASHCOMBO_ATK_STEP2, // SR_FALLENEMPIRE
|
||||
SR_FLASHCOMBO_ATK_STEP3, // SR_TIGERCANNON
|
||||
SR_FLASHCOMBO_ATK_STEP4, // SR_SKYNETBLOW
|
||||
|
||||
HLIF_HEAL = 8001,
|
||||
HLIF_AVOID,
|
||||
|
@ -709,7 +709,8 @@ void initChangeTables(void)
|
||||
set_sc( SR_GENTLETOUCH_ENERGYGAIN , SC_GT_ENERGYGAIN , SI_GENTLETOUCH_ENERGYGAIN , SCB_NONE );
|
||||
set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_WATK|SCB_MDEF|SCB_ASPD );
|
||||
set_sc( SR_GENTLETOUCH_REVITALIZE , SC_GT_REVITALIZE , SI_GENTLETOUCH_REVITALIZE , SCB_MAXHP|SCB_REGEN );
|
||||
set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SI_FLASHCOMBO , SCB_WATK );
|
||||
set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SI_FLASHCOMBO , SCB_NONE );
|
||||
add_sc( SR_FLASHCOMBO_ATK_STEP1 , SC_STUN );
|
||||
|
||||
/* Wanderer / Minstrel */
|
||||
set_sc( WA_SWING_DANCE , SC_SWINGDANCE , SI_SWINGDANCE , SCB_SPEED|SCB_ASPD );
|
||||
@ -1286,13 +1287,16 @@ static inline void status_cpy(struct status_data* a, const struct status_data* b
|
||||
int status_set_hp(struct block_list *bl, unsigned int hp, int flag)
|
||||
{
|
||||
struct status_data *status;
|
||||
if (hp < 1) return 0;
|
||||
if (hp < 1)
|
||||
return 0;
|
||||
status = status_get_status_data(bl);
|
||||
if (status == &dummy_status)
|
||||
return 0;
|
||||
|
||||
if (hp > status->max_hp) hp = status->max_hp;
|
||||
if (hp == status->hp) return 0;
|
||||
if (hp > status->max_hp)
|
||||
hp = status->max_hp;
|
||||
if (hp == status->hp)
|
||||
return 0;
|
||||
if (hp > status->hp)
|
||||
return status_heal(bl, hp - status->hp, 0, 1|flag);
|
||||
return status_zap(bl, status->hp - hp, 0);
|
||||
@ -1309,15 +1313,17 @@ int status_set_hp(struct block_list *bl, unsigned int hp, int flag)
|
||||
int status_set_maxhp(struct block_list *bl, unsigned int maxhp, int flag)
|
||||
{
|
||||
struct status_data *status;
|
||||
if (maxhp < 1) return 0;
|
||||
if (maxhp < 1)
|
||||
return 0;
|
||||
status = status_get_status_data(bl);
|
||||
if (status == &dummy_status)
|
||||
return 0;
|
||||
|
||||
if (maxhp == status->max_hp) return 0;
|
||||
if (maxhp > status->max_hp) {
|
||||
if (maxhp == status->max_hp)
|
||||
return 0;
|
||||
if (maxhp > status->max_hp)
|
||||
status_heal(bl, maxhp - status->max_hp, 0, 1|flag);
|
||||
} else
|
||||
else
|
||||
status_zap(bl, status->max_hp - maxhp, 0);
|
||||
|
||||
status->max_hp = maxhp;
|
||||
@ -1340,8 +1346,10 @@ int status_set_sp(struct block_list *bl, unsigned int sp, int flag)
|
||||
if (status == &dummy_status)
|
||||
return 0;
|
||||
|
||||
if (sp > status->max_sp) sp = status->max_sp;
|
||||
if (sp == status->sp) return 0;
|
||||
if (sp > status->max_sp)
|
||||
sp = status->max_sp;
|
||||
if (sp == status->sp)
|
||||
return 0;
|
||||
if (sp > status->sp)
|
||||
return status_heal(bl, 0, sp - status->sp, 1|flag);
|
||||
return status_zap(bl, 0, status->sp - sp);
|
||||
@ -1358,15 +1366,17 @@ int status_set_sp(struct block_list *bl, unsigned int sp, int flag)
|
||||
int status_set_maxsp(struct block_list *bl, unsigned int maxsp, int flag)
|
||||
{
|
||||
struct status_data *status;
|
||||
if (maxsp < 1) return 0;
|
||||
if (maxsp < 1)
|
||||
return 0;
|
||||
status = status_get_status_data(bl);
|
||||
if (status == &dummy_status)
|
||||
return 0;
|
||||
|
||||
if (maxsp == status->max_sp) return 0;
|
||||
if (maxsp > status->max_sp) {
|
||||
if (maxsp == status->max_sp)
|
||||
return 0;
|
||||
if (maxsp > status->max_sp)
|
||||
status_heal(bl, maxsp - status->max_sp, 0, 1|flag);
|
||||
} else
|
||||
else
|
||||
status_zap(bl, status->max_sp - maxsp, 0);
|
||||
|
||||
status->max_sp = maxsp;
|
||||
@ -2986,6 +2996,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
|
||||
+ sizeof(sd->subrace2)
|
||||
+ sizeof(sd->subsize)
|
||||
+ sizeof(sd->reseff)
|
||||
+ sizeof(sd->coma_class)
|
||||
+ sizeof(sd->coma_race)
|
||||
+ sizeof(sd->weapon_coma_ele)
|
||||
+ sizeof(sd->weapon_coma_race)
|
||||
+ sizeof(sd->weapon_coma_class)
|
||||
@ -3007,10 +3019,6 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
|
||||
+ sizeof(sd->ignore_mdef_by_class)
|
||||
+ sizeof(sd->ignore_def_by_race)
|
||||
+ sizeof(sd->sp_gain_race)
|
||||
+ sizeof(sd->sp_gain_race_attack)
|
||||
+ sizeof(sd->hp_gain_race_attack)
|
||||
+ sizeof(sd->hp_gain_race_attack_rate)
|
||||
+ sizeof(sd->sp_gain_race_attack_rate)
|
||||
);
|
||||
|
||||
memset (&sd->right_weapon.overrefine, 0, sizeof(sd->right_weapon) - sizeof(sd->right_weapon.atkmods));
|
||||
@ -3082,8 +3090,6 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
|
||||
+ sizeof(sd->mdef_set_race)
|
||||
+ sizeof(sd->hp_vanish_race)
|
||||
+ sizeof(sd->sp_vanish_race)
|
||||
+ sizeof(sd->hp_gain_attack)
|
||||
+ sizeof(sd->sp_gain_attack)
|
||||
);
|
||||
|
||||
memset (&sd->bonus, 0, sizeof(sd->bonus));
|
||||
@ -3958,12 +3964,12 @@ int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt)
|
||||
status->speed = nd->speed;
|
||||
}
|
||||
|
||||
status->str = nd->stat_point;
|
||||
status->agi = nd->stat_point;
|
||||
status->vit = nd->stat_point;
|
||||
status->int_= nd->stat_point;
|
||||
status->dex = nd->stat_point;
|
||||
status->luk = nd->stat_point;
|
||||
status->str = nd->stat_point + nd->params.str;
|
||||
status->agi = nd->stat_point + nd->params.agi;
|
||||
status->vit = nd->stat_point + nd->params.vit;
|
||||
status->int_= nd->stat_point + nd->params.int_;
|
||||
status->dex = nd->stat_point + nd->params.dex;
|
||||
status->luk = nd->stat_point + nd->params.luk;
|
||||
|
||||
status_calc_misc(&nd->bl, status, nd->level);
|
||||
status_cpy(&nd->status, status);
|
||||
@ -4858,6 +4864,9 @@ void status_calc_bl_(struct block_list* bl, enum scb_flag flag, enum e_status_ca
|
||||
} else if( bl->type == BL_MER ) {
|
||||
TBL_MER* md = BL_CAST(BL_MER, bl);
|
||||
|
||||
if (!md->master)
|
||||
return;
|
||||
|
||||
if( b_status.rhw.atk != status->rhw.atk || b_status.rhw.atk2 != status->rhw.atk2 )
|
||||
clif_mercenary_updatestatus(md->master, SP_ATK1);
|
||||
if( b_status.matk_max != status->matk_max )
|
||||
@ -4885,6 +4894,9 @@ void status_calc_bl_(struct block_list* bl, enum scb_flag flag, enum e_status_ca
|
||||
} else if( bl->type == BL_ELEM ) {
|
||||
TBL_ELEM* ed = BL_CAST(BL_ELEM, bl);
|
||||
|
||||
if (!ed->master)
|
||||
return;
|
||||
|
||||
if( b_status.max_hp != status->max_hp )
|
||||
clif_elemental_updatestatus(ed->master, SP_MAXHP);
|
||||
if( b_status.max_sp != status->max_sp )
|
||||
@ -5456,8 +5468,6 @@ static unsigned short status_calc_watk(struct block_list *bl, struct status_chan
|
||||
watk += sc->data[SC_PYROCLASTIC]->val2;
|
||||
if(sc->data[SC_ANGRIFFS_MODUS])
|
||||
watk += watk * sc->data[SC_ANGRIFFS_MODUS]->val2/100;
|
||||
if( sc->data[SC_FLASHCOMBO] )
|
||||
watk += sc->data[SC_FLASHCOMBO]->val2;
|
||||
if(sc->data[SC_ODINS_POWER])
|
||||
watk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1;
|
||||
|
||||
@ -9614,7 +9624,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
break;
|
||||
case SC__ENERVATION:
|
||||
val2 = 20 + 10 * val1; // ATK Reduction
|
||||
if( sd ) pc_delspiritball(sd,sd->spiritball,0);
|
||||
if (sd) {
|
||||
pc_delspiritball(sd,sd->spiritball,0);
|
||||
pc_delspiritcharm(sd,sd->spiritcharm,sd->spiritcharm_type);
|
||||
}
|
||||
break;
|
||||
case SC__GROOMY:
|
||||
val2 = 20 + 10 * val1; // ASPD
|
||||
|
@ -1791,7 +1791,7 @@ enum scb_flag
|
||||
|
||||
enum e_status_calc_opt {
|
||||
SCO_NONE = 0x0,
|
||||
SCO_FIRST = 0x1, ///< Trigger the calculations that should take place only onspawn/once
|
||||
SCO_FIRST = 0x1, ///< Trigger the calculations that should take place only onspawn/once, process base status initialization code
|
||||
SCO_FORCE = 0x2, ///< Only relevant to BL_PC types, ensures call bypasses the queue caused by delayed damage
|
||||
};
|
||||
|
||||
|
@ -2585,7 +2585,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t
|
||||
ud->attacktarget_lv = battle_weapon_attack(src,target,tick,0);
|
||||
|
||||
if(sd && sd->status.pet_id > 0 && sd->pd && battle_config.pet_attack_support)
|
||||
pet_target_check(sd,target,0);
|
||||
pet_target_check(sd->pd,target,0);
|
||||
|
||||
map_freeblock_unlock();
|
||||
|
||||
@ -3046,7 +3046,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
|
||||
if( elemental_get_lifetime(ed) <= 0 && !(ed->master && !ed->master->state.active) ) {
|
||||
clif_clearunit_area(bl,clrtype);
|
||||
map_delblock(bl);
|
||||
unit_free(bl,0);
|
||||
unit_free(bl,CLR_OUTSIGHT);
|
||||
map_freeblock_unlock();
|
||||
|
||||
return 0;
|
||||
@ -3163,10 +3163,8 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
||||
guild_send_memberinfoshort(sd,0);
|
||||
pc_cleareventtimer(sd);
|
||||
pc_inventory_rental_clear(sd);
|
||||
pc_delspiritball(sd,sd->spiritball,1);
|
||||
|
||||
for(i = 1; i < 5; i++)
|
||||
pc_del_talisman(sd, sd->talisman[i], i);
|
||||
pc_delspiritball(sd, sd->spiritball, 1);
|
||||
pc_delspiritcharm(sd, sd->spiritcharm, sd->spiritcharm_type);
|
||||
|
||||
if( sd->st && sd->st->state != RUN ) {// free attached scripts that are waiting
|
||||
script_free_state(sd->st);
|
||||
@ -3263,6 +3261,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
||||
|
||||
if( sd )
|
||||
sd->pd = NULL;
|
||||
pd->master = NULL;
|
||||
break;
|
||||
}
|
||||
case BL_MOB: {
|
||||
@ -3341,6 +3340,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
||||
|
||||
if( sd )
|
||||
sd->hd = NULL;
|
||||
hd->master = NULL;
|
||||
break;
|
||||
}
|
||||
case BL_MER: {
|
||||
@ -3360,6 +3360,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
||||
sd->md = NULL;
|
||||
|
||||
mercenary_contract_stop(md);
|
||||
md->master = NULL;
|
||||
break;
|
||||
}
|
||||
case BL_ELEM: {
|
||||
@ -3379,6 +3380,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
||||
sd->ed = NULL;
|
||||
|
||||
elemental_summon_stop(ed);
|
||||
ed->master = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user