* Replaced INF2_NO_AUTOSHADOWSPELL with INF2_AUTOSHADOWSPELL following AEGIS standard, reverted c9cf222.
* Fixed bugreport:8596 http://rathena.org/board/tracker/issue-8596-compile-warnings-with-fresh-svn/ * Removed temporary array while parsing shop NPC, makes remove the limit 100 items each NPC * Added idRO cash trader according to Chinese New Year event Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
This commit is contained in:
parent
96a7e476f5
commit
b4bdaebeeb
@ -36,7 +36,7 @@
|
|||||||
// 0x00400- usable only on party-members (and enemies if skill is offensive)
|
// 0x00400- usable only on party-members (and enemies if skill is offensive)
|
||||||
// 0x00800- usable only on guild-mates (and enemies if skill is offensive)
|
// 0x00800- usable only on guild-mates (and enemies if skill is offensive)
|
||||||
// 0x01000- disable usage on enemies (for non-offensive skills).
|
// 0x01000- disable usage on enemies (for non-offensive skills).
|
||||||
// 0x02000- free
|
// 0x02000- available skill for SC_AUTOSHADOWSPELL
|
||||||
// 0x04000- chorus skill
|
// 0x04000- chorus skill
|
||||||
// 0x08000- spell that ignore bg reduction
|
// 0x08000- spell that ignore bg reduction
|
||||||
// 0x10000- spell that ignore gvg reduction
|
// 0x10000- spell that ignore gvg reduction
|
||||||
@ -80,17 +80,17 @@
|
|||||||
// Mage
|
// Mage
|
||||||
9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20, MG_SRECOVERY,Increase SP Recovery
|
9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20, MG_SRECOVERY,Increase SP Recovery
|
||||||
10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20, MG_SIGHT,Sight
|
10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20, MG_SIGHT,Sight
|
||||||
11,9,6,1,8,0x6,1,10,1,yes,0,0,0,magic,0,0x20, MG_NAPALMBEAT,Napalm Beat
|
11,9,6,1,8,0x6,1,10,1,yes,0,0x2000,0,magic,0,0x20, MG_NAPALMBEAT,Napalm Beat
|
||||||
12,9,8,2,8,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_SAFETYWALL,Safety Wall
|
12,9,8,2,8,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_SAFETYWALL,Safety Wall
|
||||||
13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0,0,magic,0,0x20, MG_SOULSTRIKE,Soul Strike
|
13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0x2000,0,magic,0,0x20, MG_SOULSTRIKE,Soul Strike
|
||||||
14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_COLDBOLT,Cold Bolt
|
14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_COLDBOLT,Cold Bolt
|
||||||
15,9,6,1,1,0,0,10,1,yes,0,0,0,magic,0,0x20, MG_FROSTDIVER,Frost Diver
|
15,9,6,1,1,0,0,10,1,yes,0,0x2000,0,magic,0,0x20, MG_FROSTDIVER,Frost Diver
|
||||||
16,2,6,1,2,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_STONECURSE,Stone Curse
|
16,2,6,1,2,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_STONECURSE,Stone Curse
|
||||||
17,9,6,1,3,0x2,2,10,1,yes,0,0,0,magic,0,0x20, MG_FIREBALL,Fire Ball
|
17,9,6,1,3,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x20, MG_FIREBALL,Fire Ball
|
||||||
18,9,6,2,3,0,0,10,1,yes,0,0,3,magic,2,0x20, MG_FIREWALL,Fire Wall
|
18,9,6,2,3,0,0,10,1,yes,0,0x2000,3,magic,2,0x20, MG_FIREWALL,Fire Wall
|
||||||
19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_FIREBOLT,Fire Bolt
|
19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_FIREBOLT,Fire Bolt
|
||||||
20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_LIGHTNINGBOLT,Lightning Bolt
|
20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_LIGHTNINGBOLT,Lightning Bolt
|
||||||
21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_THUNDERSTORM,Thunderstorm
|
21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_THUNDERSTORM,Thunderstorm
|
||||||
|
|
||||||
//****
|
//****
|
||||||
// Acolyte
|
// Acolyte
|
||||||
@ -100,7 +100,7 @@
|
|||||||
25,9,6,2,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_PNEUMA,Pneuma
|
25,9,6,2,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_PNEUMA,Pneuma
|
||||||
26,0,6,4,0,0x1,0,2,1,yes,0,0,0,magic,0,0x60, AL_TELEPORT,Teleport
|
26,0,6,4,0,0x1,0,2,1,yes,0,0,0,magic,0,0x60, AL_TELEPORT,Teleport
|
||||||
27,9,6,2,0,0x1,0,4,1,yes,0,0,3,magic,0,0x20, AL_WARP,Warp Portal
|
27,9,6,2,0,0x1,0,4,1,yes,0,0,3,magic,0,0x20, AL_WARP,Warp Portal
|
||||||
28,9,6,16,6,0x21,0,10,1,yes,0,0,0,magic,0,0x20, AL_HEAL,Heal
|
28,9,6,16,6,0x21,0,10,1,yes,0,0x2000,0,magic,0,0x20, AL_HEAL,Heal
|
||||||
29,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1020, AL_INCAGI,Increase AGI
|
29,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1020, AL_INCAGI,Increase AGI
|
||||||
30,9,6,1,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0, AL_DECAGI,Decrease AGI
|
30,9,6,1,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0, AL_DECAGI,Decrease AGI
|
||||||
31,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_HOLYWATER,Aqua Benedicta
|
31,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_HOLYWATER,Aqua Benedicta
|
||||||
@ -171,17 +171,17 @@
|
|||||||
|
|
||||||
//****
|
//****
|
||||||
// Wizard
|
// 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,0x80,5,magic,0,0x0, WZ_FIREPILLAR,Fire Pillar
|
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,3,10,1,yes,0,0,0,magic,5,0x20, WZ_SIGHTRASHER,Sightrasher
|
81,0,6,4,3,0,3,10,1,yes,0,0x2000,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,0,0,magic,0,0x20, WZ_METEOR,Meteor Storm
|
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,0,0,magic,2:3:3:4:4:5:5:6:6:7,0x20, WZ_JUPITEL,Jupitel Thunder
|
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,0,0,magic,0,0x20, WZ_VERMILION,Lord of Vermilion
|
85,9,8,2,4,0,0,10,-10,yes,0,0x2000,0,magic,0,0x20, WZ_VERMILION,Lord of Vermilion
|
||||||
86,9,8,1,1,0,0,5,1,yes,0,0,0,magic,0,0x0, WZ_WATERBALL,Water Ball
|
86,9,8,1,1,0,0,5,1,yes,0,0x2000,0,magic,0,0x0, WZ_WATERBALL,Water Ball
|
||||||
87,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x20, WZ_ICEWALL,Ice Wall
|
87,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x20, WZ_ICEWALL,Ice Wall
|
||||||
88,0,6,4,1,0x2,2,10,1,yes,0,0,0,magic,0,0x0, WZ_FROSTNOVA,Frost Nova
|
88,0,6,4,1,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x0, WZ_FROSTNOVA,Frost Nova
|
||||||
89,9,6,2,1,0,0,10,1,yes,0,0,0,magic,2,0x20, WZ_STORMGUST,Storm Gust
|
89,9,6,2,1,0,0,10,1,yes,0,0x2000,0,magic,2,0x20, WZ_STORMGUST,Storm Gust
|
||||||
90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20, WZ_EARTHSPIKE,Earth Spike
|
90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_EARTHSPIKE,Earth Spike
|
||||||
91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20, WZ_HEAVENDRIVE,Heaven's Drive
|
91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_HEAVENDRIVE,Heaven's Drive
|
||||||
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20, WZ_QUAGMIRE,Quagmire
|
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20, WZ_QUAGMIRE,Quagmire
|
||||||
93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0, WZ_ESTIMATION,Sense
|
93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0, WZ_ESTIMATION,Sense
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
// 0x00400- usable only on party-members (and enemies if skill is offensive)
|
// 0x00400- usable only on party-members (and enemies if skill is offensive)
|
||||||
// 0x00800- usable only on guild-mates (and enemies if skill is offensive)
|
// 0x00800- usable only on guild-mates (and enemies if skill is offensive)
|
||||||
// 0x01000- disable usage on enemies (for non-offensive skills).
|
// 0x01000- disable usage on enemies (for non-offensive skills).
|
||||||
// 0x02000- skill cannot be auto casted by Auto Shadow Spell
|
// 0x02000- available skill for SC_AUTOSHADOWSPELL
|
||||||
// 0x04000- chorus skill
|
// 0x04000- chorus skill
|
||||||
// 0x08000- spell that ignore bg reduction
|
// 0x08000- spell that ignore bg reduction
|
||||||
// 0x10000- spell that ignore gvg reduction
|
// 0x10000- spell that ignore gvg reduction
|
||||||
@ -80,27 +80,27 @@
|
|||||||
// Mage
|
// Mage
|
||||||
9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20, MG_SRECOVERY,Increase SP Recovery
|
9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20, MG_SRECOVERY,Increase SP Recovery
|
||||||
10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20, MG_SIGHT,Sight
|
10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20, MG_SIGHT,Sight
|
||||||
11,9,6,1,8,0x6,1,10,1,yes,0,0,0,magic,0,0x20, MG_NAPALMBEAT,Napalm Beat
|
11,9,6,1,8,0x6,1,10,1,yes,0,0x2000,0,magic,0,0x20, MG_NAPALMBEAT,Napalm Beat
|
||||||
12,9,8,2,8,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_SAFETYWALL,Safety Wall
|
12,9,8,2,8,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_SAFETYWALL,Safety Wall
|
||||||
13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0,0,magic,0,0x20, MG_SOULSTRIKE,Soul Strike
|
13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0x2000,0,magic,0,0x20, MG_SOULSTRIKE,Soul Strike
|
||||||
14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_COLDBOLT,Cold Bolt
|
14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_COLDBOLT,Cold Bolt
|
||||||
15,9,6,1,1,0,0,10,1,yes,0,0,0,magic,0,0x20, MG_FROSTDIVER,Frost Diver
|
15,9,6,1,1,0,0,10,1,yes,0,0x2000,0,magic,0,0x20, MG_FROSTDIVER,Frost Diver
|
||||||
16,2,6,1,2,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_STONECURSE,Stone Curse
|
16,2,6,1,2,0x1,0,10,1,yes,0,0,0,magic,0,0x20, MG_STONECURSE,Stone Curse
|
||||||
17,9,6,1,3,0x2,2,10,1,yes,0,0,0,magic,0,0x20, MG_FIREBALL,Fire Ball
|
17,9,6,1,3,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x20, MG_FIREBALL,Fire Ball
|
||||||
18,9,6,2,3,0,0,10,1,yes,0,0,3,magic,2,0x20, MG_FIREWALL,Fire Wall
|
18,9,6,2,3,0,0,10,1,yes,0,0x2000,3,magic,2,0x20, MG_FIREWALL,Fire Wall
|
||||||
19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_FIREBOLT,Fire Bolt
|
19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_FIREBOLT,Fire Bolt
|
||||||
20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_LIGHTNINGBOLT,Lightning Bolt
|
20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_LIGHTNINGBOLT,Lightning Bolt
|
||||||
21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20, MG_THUNDERSTORM,Thunderstorm
|
21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, MG_THUNDERSTORM,Thunderstorm
|
||||||
|
|
||||||
//****
|
//****
|
||||||
// Acolyte
|
// Acolyte
|
||||||
22,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, AL_DP,Divine Protection
|
22,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, AL_DP,Divine Protection
|
||||||
23,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, AL_DEMONBANE,Demon Bane
|
23,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, AL_DEMONBANE,Demon Bane
|
||||||
24,0,6,4,6,0x3,2,1,1,yes,0,0x2000,0,magic,0,0x20, AL_RUWACH,Ruwach
|
24,0,6,4,6,0x3,2,1,1,yes,0,0x0,0,magic,0,0x20, AL_RUWACH,Ruwach
|
||||||
25,9,6,2,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_PNEUMA,Pneuma
|
25,9,6,2,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_PNEUMA,Pneuma
|
||||||
26,0,6,4,0,0x1,0,2,1,yes,0,0,0,magic,0,0x60, AL_TELEPORT,Teleport
|
26,0,6,4,0,0x1,0,2,1,yes,0,0,0,magic,0,0x60, AL_TELEPORT,Teleport
|
||||||
27,9,6,2,0,0x1,0,4,1,yes,0,0,3,magic,0,0x20, AL_WARP,Warp Portal
|
27,9,6,2,0,0x1,0,4,1,yes,0,0,3,magic,0,0x20, AL_WARP,Warp Portal
|
||||||
28,9,6,16,6,0x21,0,10,1,yes,0,0,0,magic,0,0x20, AL_HEAL,Heal
|
28,9,6,16,6,0x21,0,10,1,yes,0,0x2000,0,magic,0,0x20, AL_HEAL,Heal
|
||||||
29,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x20, AL_INCAGI,Increase AGI
|
29,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x20, AL_INCAGI,Increase AGI
|
||||||
30,9,6,1,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0, AL_DECAGI,Decrease AGI
|
30,9,6,1,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0, AL_DECAGI,Decrease AGI
|
||||||
31,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_HOLYWATER,Aqua Benedicta
|
31,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20, AL_HOLYWATER,Aqua Benedicta
|
||||||
@ -165,23 +165,23 @@
|
|||||||
74,0,6,4,0,0x3,-1,5,1,yes,0,0,0,magic,0,0x20, PR_MAGNIFICAT,Magnificat
|
74,0,6,4,0,0x3,-1,5,1,yes,0,0,0,magic,0,0x20, PR_MAGNIFICAT,Magnificat
|
||||||
75,0,6,4,0,0x3,-1,5,1,yes,0,0,0,magic,0,0x0, PR_GLORIA,Gloria
|
75,0,6,4,0,0x3,-1,5,1,yes,0,0,0,magic,0,0x0, PR_GLORIA,Gloria
|
||||||
76,5,6,1,0,0x1,0,10,0,yes,0,0,0,magic,0,0x20, PR_LEXDIVINA,Lex Divina
|
76,5,6,1,0,0x1,0,10,0,yes,0,0,0,magic,0,0x20, PR_LEXDIVINA,Lex Divina
|
||||||
77,5,6,1,6,0x28,0,10,1,yes,0,0x2000,0,magic,0,0x20, PR_TURNUNDEAD,Turn Undead
|
77,5,6,1,6,0x28,0,10,1,yes,0,0x0,0,magic,0,0x20, PR_TURNUNDEAD,Turn Undead
|
||||||
78,9,6,1,0,0x1,0,1,0,yes,0,0,0,magic,0,0x20, PR_LEXAETERNA,Lex Aeterna
|
78,9,6,1,0,0x1,0,1,0,yes,0,0,0,magic,0,0x20, PR_LEXAETERNA,Lex Aeterna
|
||||||
79,9,8,2,6,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20, PR_MAGNUS,Magnus Exorcismus
|
79,9,8,2,6,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x0,0,magic,0,0x20, PR_MAGNUS,Magnus Exorcismus
|
||||||
|
|
||||||
//****
|
//****
|
||||||
// Wizard
|
// 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,0x80,5,magic,0,0x0, WZ_FIREPILLAR,Fire Pillar
|
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,3,10,1,yes,0,0,0,magic,5,0x20, WZ_SIGHTRASHER,Sightrasher
|
81,0,6,4,3,0,3,10,1,yes,0,0x2000,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,0,0,magic,0,0x20, WZ_METEOR,Meteor Storm
|
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,0,0,magic,2:3:3:4:4:5:5:6:6:7,0x20, WZ_JUPITEL,Jupitel Thunder
|
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,0,0,magic,0,0x20, WZ_VERMILION,Lord of Vermilion
|
85,9,8,2,4,0,0,10,-10,yes,0,0x2000,0,magic,0,0x20, WZ_VERMILION,Lord of Vermilion
|
||||||
86,9,8,1,1,0,0,5,1,yes,0,0,0,magic,0,0x0, WZ_WATERBALL,Water Ball
|
86,9,8,1,1,0,0,5,1,yes,0,0x2000,0,magic,0,0x0, WZ_WATERBALL,Water Ball
|
||||||
87,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x20, WZ_ICEWALL,Ice Wall
|
87,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x20, WZ_ICEWALL,Ice Wall
|
||||||
88,0,6,4,1,0x2,2,10,1,yes,0,0,0,magic,0,0x0, WZ_FROSTNOVA,Frost Nova
|
88,0,6,4,1,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x0, WZ_FROSTNOVA,Frost Nova
|
||||||
89,9,6,2,1,0,0,10,1,yes,0,0,0,magic,2,0x20, WZ_STORMGUST,Storm Gust
|
89,9,6,2,1,0,0,10,1,yes,0,0x2000,0,magic,2,0x20, WZ_STORMGUST,Storm Gust
|
||||||
90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20, WZ_EARTHSPIKE,Earth Spike
|
90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_EARTHSPIKE,Earth Spike
|
||||||
91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20, WZ_HEAVENDRIVE,Heaven's Drive
|
91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_HEAVENDRIVE,Heaven's Drive
|
||||||
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20, WZ_QUAGMIRE,Quagmire
|
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20, WZ_QUAGMIRE,Quagmire
|
||||||
93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0, WZ_ESTIMATION,Sense
|
93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0, WZ_ESTIMATION,Sense
|
||||||
|
|
||||||
@ -258,7 +258,7 @@
|
|||||||
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,0x1,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
|
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
|
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,0x2001,0,magic,0,0x20, AL_HOLYLIGHT,Holy Light
|
156,9,6,1,6,0,0,1,1,yes,0,0x1,0,magic,0,0x20, AL_HOLYLIGHT,Holy Light
|
||||||
157,0,6,4,0,0x1,0,1,1,yes,0,0x1,0,magic,0,0x20, MG_ENERGYCOAT,Energy Coat
|
157,0,6,4,0,0x1,0,1,1,yes,0,0x1,0,magic,0,0x20, MG_ENERGYCOAT,Energy Coat
|
||||||
|
|
||||||
//****
|
//****
|
||||||
@ -368,7 +368,7 @@
|
|||||||
251,3:5:7:9:11,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x0, CR_SHIELDBOOMERANG,Shield Boomerang
|
251,3:5:7:9:11,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x0, 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,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
|
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,0x2100,0,magic,0,0x0, CR_GRANDCROSS,Grand 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
|
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
|
256,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,none,0,0x0, CR_PROVIDENCE,Resistant Souls
|
||||||
257,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0, CR_DEFENDER,Defending Aura
|
257,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0, CR_DEFENDER,Defending Aura
|
||||||
|
@ -3,18 +3,18 @@
|
|||||||
//===== By: ==================================================
|
//===== By: ==================================================
|
||||||
//= Cydh
|
//= Cydh
|
||||||
//===== Current Version: =====================================
|
//===== Current Version: =====================================
|
||||||
//= 1.1
|
//= 1.2
|
||||||
//===== Compatible With: =====================================
|
//===== Compatible With: =====================================
|
||||||
//= rAthena Project
|
//= rAthena Project
|
||||||
//===== Description: =========================================
|
//===== Description: =========================================
|
||||||
//= Sell Cash shop items based on idRO's Cash shop.
|
//= Sell Cash shop items based on idRO's Cash shop
|
||||||
//===== Additional Comments: =================================
|
//===== Additional Comments: =================================
|
||||||
//= 1.0 Initial release. 2014-Jan-13 [Cydh]
|
//= 1.0 Initial release. 2014-Jan-13 [Cydh]
|
||||||
// - Put/enable all 'idRO misc items' from db/import/item_db.txt, or put from db/import-tmpl/item_db.txt
|
|
||||||
// - Change MAX_SHOPITEM (on npc.c) to 210 then recompile your server (some NPCs sell more than 100 items)
|
|
||||||
//= 1.1 2014-Jan-18 [Cydh]
|
//= 1.1 2014-Jan-18 [Cydh]
|
||||||
// - Fixed the item list
|
// - Fixed the item list
|
||||||
// - Added NPC placement for some maps
|
// - Added NPC placement for some maps
|
||||||
|
//= 1.2 2014-Feb-4 [Cydh]
|
||||||
|
// - Added Cash Trader with special offer for Chinese New Year
|
||||||
//============================================================
|
//============================================================
|
||||||
|
|
||||||
//============================================================
|
//============================================================
|
||||||
@ -349,3 +349,9 @@ rachel,100,135,3 duplicate(idRO_eq2) Equipment 2#ra 80
|
|||||||
rachel,100,131,3 duplicate(idRO_acc) Acc and Kartu#ra 721
|
rachel,100,131,3 duplicate(idRO_acc) Acc and Kartu#ra 721
|
||||||
rachel,100,133,3 duplicate(idRO_acc2) Acc and Kartu 2#ra 80
|
rachel,100,133,3 duplicate(idRO_acc2) Acc and Kartu 2#ra 80
|
||||||
rachel,95,131,3 duplicate(idRO_rental) Rental Shop#ra 874
|
rachel,95,131,3 duplicate(idRO_rental) Rental Shop#ra 874
|
||||||
|
|
||||||
|
//===========================================================
|
||||||
|
//Special Prices of Chinese New Year 2014
|
||||||
|
//===========================================================
|
||||||
|
- cashshop idROC2014::idRO_C2014 721,2936:6250,2177:6250,18574:6250,6225:7500,6226:5625,5381:7500,5210:10000,5294:6250,5463:6250,5335:6250,5256:6250,5495:6250,18630:6250,19518:6250,19519:6250,19520:6250,2573:6250,15058:6250,5490:6250,5498:6250,5253:6250,5502:6250,5526:6250,5529:6250,19509:6250,5359:7500,18729:6250,18666:6250,5284:6250,5471:6250,5467:6250,5363:6250,5546:6250,5334:6250,1472:5000,13420:6250,1392:5000,15008:6250,1731:3750,1825:2500,1261:1875,5545:6250,5550:6250,5549:6250,5515:6250,5514:6250,5470:6250,5505:6250,18695:6250,18694:6250
|
||||||
|
prontera,156,178,3 duplicate(idRO_C2014) Kafra Shop#C2014_prt 721
|
||||||
|
@ -16669,14 +16669,11 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
|
|||||||
|
|
||||||
WFIFOHEAD(fd, 2 * 6 + 4);
|
WFIFOHEAD(fd, 2 * 6 + 4);
|
||||||
WFIFOW(fd,0) = 0x442;
|
WFIFOW(fd,0) = 0x442;
|
||||||
//- Only list the skill that 'imitated' and Magic skill
|
|
||||||
//- Cannot autocasted 3rd and extended skills
|
//AEGIS listed the specified skills that available for SC_AUTOSHADOWSPELL
|
||||||
//- Some holy skills cannot be autocasted, marked as INF2_NO_AUTOSHADOWSPELL [Cydh]
|
|
||||||
//! NOTE: Maybe later can get rid of 'sd->status.skill[i].id < GS_GLITTERING' since there is INF2_NO_AUTOSHADOWSPELL
|
|
||||||
for( i = 0, c = 0; i < MAX_SKILL; i++ )
|
for( i = 0, c = 0; i < MAX_SKILL; i++ )
|
||||||
if( sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].id > 0 &&
|
if( sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].id > 0 &&
|
||||||
sd->status.skill[i].id < GS_GLITTERING && skill_get_type(sd->status.skill[i].id) == BF_MAGIC &&
|
(skill_get_inf2(sd->status.skill[i].id)&INF2_AUTOSHADOWSPELL))
|
||||||
!(skill_get_inf2(sd->status.skill[i].id)&INF2_NO_AUTOSHADOWSPELL))
|
|
||||||
{
|
{
|
||||||
WFIFOW(fd,8+c*2) = sd->status.skill[i].id;
|
WFIFOW(fd,8+c*2) = sd->status.skill[i].id;
|
||||||
c++;
|
c++;
|
||||||
|
@ -2318,11 +2318,8 @@ static const char* npc_parse_warp(char* w1, char* w2, char* w3, char* w4, const
|
|||||||
*/
|
*/
|
||||||
static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const char* start, const char* buffer, const char* filepath)
|
static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const char* start, const char* buffer, const char* filepath)
|
||||||
{
|
{
|
||||||
//TODO: could be rewritten to NOT need this temp array [ultramage]
|
|
||||||
#define MAX_SHOPITEM 100
|
|
||||||
struct npc_item_list items[MAX_SHOPITEM];
|
|
||||||
char *p, point_str[32];
|
char *p, point_str[32];
|
||||||
int x, y, dir, m, i, nameid = 0, is_discount = 0;
|
int x, y, dir, m, nameid = 0, is_discount = 0;
|
||||||
struct npc_data *nd;
|
struct npc_data *nd;
|
||||||
enum npc_subtype type;
|
enum npc_subtype type;
|
||||||
|
|
||||||
@ -2398,10 +2395,15 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
|
|||||||
is_discount = 1;
|
is_discount = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CREATE(nd, struct npc_data, 1);
|
||||||
|
|
||||||
for( i = 0; i < ARRAYLENGTH(items) && p; ++i ) {
|
nd->u.shop.count = 0;
|
||||||
|
while ( p ) {
|
||||||
int nameid, value;
|
int nameid, value;
|
||||||
struct item_data* id;
|
struct item_data* id;
|
||||||
|
if( p == NULL )
|
||||||
|
break;
|
||||||
if( sscanf(p, ",%d:%d", &nameid, &value) != 2 ) {
|
if( sscanf(p, ",%d:%d", &nameid, &value) != 2 ) {
|
||||||
ShowError("npc_parse_shop: Invalid item definition in file '%s', line '%d'. Ignoring the rest of the line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4);
|
ShowError("npc_parse_shop: Invalid item definition in file '%s', line '%d'. Ignoring the rest of the line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4);
|
||||||
break;
|
break;
|
||||||
@ -2430,22 +2432,27 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
|
|||||||
if( id->maxchance == 0 )
|
if( id->maxchance == 0 )
|
||||||
id->maxchance = -1; // -1 would show that the item's sold in NPC Shop
|
id->maxchance = -1; // -1 would show that the item's sold in NPC Shop
|
||||||
|
|
||||||
items[i].nameid = nameid;
|
if (nd->u.shop.count > 0)
|
||||||
items[i].value = value;
|
RECREATE(nd->u.shop.shop_item, struct npc_item_list,nd->u.shop.count+1);
|
||||||
|
else
|
||||||
|
CREATE(nd->u.shop.shop_item, struct npc_item_list,1);
|
||||||
|
|
||||||
|
nd->u.shop.shop_item[nd->u.shop.count].nameid = nameid;
|
||||||
|
nd->u.shop.shop_item[nd->u.shop.count].value = value;
|
||||||
|
nd->u.shop.count++;
|
||||||
p = strchr(p+1,',');
|
p = strchr(p+1,',');
|
||||||
}
|
}
|
||||||
if( i == 0 ) {
|
if( nd->u.shop.count == 0 ) {
|
||||||
ShowWarning("npc_parse_shop: Ignoring empty shop in file '%s', line '%d'.\n", filepath, strline(buffer,start-buffer));
|
ShowWarning("npc_parse_shop: Ignoring empty shop in file '%s', line '%d'.\n", filepath, strline(buffer,start-buffer));
|
||||||
|
aFree(nd);
|
||||||
return strchr(start,'\n');// continue
|
return strchr(start,'\n');// continue
|
||||||
}
|
}
|
||||||
|
|
||||||
CREATE(nd, struct npc_data, 1);
|
if (type != SHOP) {
|
||||||
CREATE(nd->u.shop.shop_item, struct npc_item_list, i);
|
if (type == ITEMSHOP) nd->u.shop.itemshop_nameid = nameid; // Item shop currency
|
||||||
memcpy(nd->u.shop.shop_item, items, sizeof(struct npc_item_list)*i);
|
else if (type == POINTSHOP) safestrncpy(nd->u.shop.pointshop_str,point_str,strlen(point_str)+1); // Point shop currency
|
||||||
nd->u.shop.count = i;
|
nd->u.shop.discount = is_discount;
|
||||||
nd->u.shop.itemshop_nameid = nameid; // Item shop currency
|
}
|
||||||
safestrncpy(nd->u.shop.pointshop_str,point_str,strlen(point_str)+1); // Point shop currency
|
|
||||||
nd->u.shop.discount = is_discount;
|
|
||||||
nd->bl.prev = nd->bl.next = NULL;
|
nd->bl.prev = nd->bl.next = NULL;
|
||||||
nd->bl.m = m;
|
nd->bl.m = m;
|
||||||
nd->bl.x = x;
|
nd->bl.x = x;
|
||||||
|
@ -56,8 +56,8 @@ struct npc_data {
|
|||||||
struct npc_label_list *label_list;
|
struct npc_label_list *label_list;
|
||||||
} scr;
|
} scr;
|
||||||
struct {
|
struct {
|
||||||
struct npc_item_list* shop_item;
|
struct npc_item_list *shop_item;
|
||||||
int count;
|
uint16 count;
|
||||||
int itemshop_nameid; // Item Shop cost item ID
|
int itemshop_nameid; // Item Shop cost item ID
|
||||||
char pointshop_str[32]; // Point Shop cost variable name
|
char pointshop_str[32]; // Point Shop cost variable name
|
||||||
bool discount;
|
bool discount;
|
||||||
|
@ -743,7 +743,7 @@ bool pc_isequipped(struct map_session_data *sd, int nameid)
|
|||||||
|
|
||||||
for( i = 0; i < EQI_MAX; i++ )
|
for( i = 0; i < EQI_MAX; i++ )
|
||||||
{
|
{
|
||||||
uint8 index = sd->equip_index[i], j;
|
int8 index = sd->equip_index[i], j;
|
||||||
if( index < 0 ) continue;
|
if( index < 0 ) continue;
|
||||||
|
|
||||||
if( i == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == index ) continue;
|
if( i == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == index ) continue;
|
||||||
|
@ -18898,8 +18898,10 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool skill_parse_row_castdb(char* split[], int columns, int current)
|
/** Reads skill cast db
|
||||||
{// skill_id,CastingTime,AfterCastActDelay,AfterCastWalkDelay,Duration1,Duration2,Cooldown{,Fixedcast}
|
* SkillID,CastingTime,AfterCastActDelay,AfterCastWalkDelay,Duration1,Duration2,Cooldown{,Fixedcast}
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_castdb(char* split[], int columns, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
uint16 idx = skill_get_index(skill_id);
|
uint16 idx = skill_get_index(skill_id);
|
||||||
if( !idx ) // invalid skill id
|
if( !idx ) // invalid skill id
|
||||||
@ -18917,8 +18919,10 @@ static bool skill_parse_row_castdb(char* split[], int columns, int current)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool skill_parse_row_castnodexdb(char* split[], int columns, int current)
|
/** Reads skill cast no dex db
|
||||||
{// Skill id,Cast,Delay (optional)
|
* SkillID,Cast,Delay (optional)
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_castnodexdb(char* split[], int columns, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
uint16 idx = skill_get_index(skill_id);
|
uint16 idx = skill_get_index(skill_id);
|
||||||
if( !idx ) // invalid skill id
|
if( !idx ) // invalid skill id
|
||||||
@ -18931,8 +18935,10 @@ static bool skill_parse_row_castnodexdb(char* split[], int columns, int current)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool skill_parse_row_nocastdb(char* split[], int columns, int current)
|
/** Reads skill no cast db
|
||||||
{// skill_id,Flag
|
* SkillID,Flag
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_nocastdb(char* split[], int columns, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
uint16 idx = skill_get_index(skill_id);
|
uint16 idx = skill_get_index(skill_id);
|
||||||
if( !idx ) // invalid skill id
|
if( !idx ) // invalid skill id
|
||||||
@ -18943,8 +18949,10 @@ static bool skill_parse_row_nocastdb(char* split[], int columns, int current)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool skill_parse_row_unitdb(char* split[], int columns, int current)
|
/** Reads skill unit db
|
||||||
{// ID,unit ID,unit ID 2,layout,range,interval,target,flag
|
* ID,unit ID,unit ID 2,layout,range,interval,target,flag
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_unitdb(char* split[], int columns, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
uint16 idx = skill_get_index(skill_id);
|
uint16 idx = skill_get_index(skill_id);
|
||||||
if( !idx ) // invalid skill id
|
if( !idx ) // invalid skill id
|
||||||
@ -18984,8 +18992,10 @@ static bool skill_parse_row_unitdb(char* split[], int columns, int current)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool skill_parse_row_producedb(char* split[], int columns, int current)
|
/** Reads Produce db
|
||||||
{// ProduceItemID,ItemLV,RequireSkill,Requireskill_lv,MaterialID1,MaterialAmount1,......
|
* ProduceItemID,ItemLV,RequireSkill,Requireskill_lv,MaterialID1,MaterialAmount1,......
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_producedb(char* split[], int columns, int current) {
|
||||||
int x,y;
|
int x,y;
|
||||||
|
|
||||||
int i = atoi(split[0]);
|
int i = atoi(split[0]);
|
||||||
@ -19005,8 +19015,10 @@ static bool skill_parse_row_producedb(char* split[], int columns, int current)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool skill_parse_row_createarrowdb(char* split[], int columns, int current)
|
/** Reads create arrow db
|
||||||
{// SourceID,MakeID1,MakeAmount1,...,MakeID5,MakeAmount5
|
* SourceID,MakeID1,MakeAmount1,...,MakeID5,MakeAmount5
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_createarrowdb(char* split[], int columns, int current) {
|
||||||
int x,y;
|
int x,y;
|
||||||
|
|
||||||
int i = atoi(split[0]);
|
int i = atoi(split[0]);
|
||||||
@ -19022,8 +19034,11 @@ static bool skill_parse_row_createarrowdb(char* split[], int columns, int curren
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
static bool skill_parse_row_spellbookdb(char* split[], int columns, int current)
|
|
||||||
{// skill_id,PreservePoints
|
/** Reads Spell book db
|
||||||
|
* SkillID,PreservePoints
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_spellbookdb(char* split[], int columns, int current) {
|
||||||
|
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
int points = atoi(split[1]);
|
int points = atoi(split[1]);
|
||||||
@ -19045,8 +19060,11 @@ static bool skill_parse_row_spellbookdb(char* split[], int columns, int current)
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static bool skill_parse_row_improvisedb(char* split[], int columns, int current)
|
|
||||||
{// SkillID,Rate
|
/** Reads improvise db
|
||||||
|
* SkillID,Rate
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_improvisedb(char* split[], int columns, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
short j = atoi(split[1]);
|
short j = atoi(split[1]);
|
||||||
|
|
||||||
@ -19070,8 +19088,11 @@ static bool skill_parse_row_improvisedb(char* split[], int columns, int current)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
static bool skill_parse_row_magicmushroomdb(char* split[], int column, int current)
|
|
||||||
{// SkillID
|
/** Reads Magic mushroom db
|
||||||
|
* SkillID
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_magicmushroomdb(char* split[], int column, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
|
|
||||||
if( !skill_get_index(skill_id) || !skill_get_max(skill_id) )
|
if( !skill_get_index(skill_id) || !skill_get_max(skill_id) )
|
||||||
@ -19090,6 +19111,10 @@ static bool skill_parse_row_magicmushroomdb(char* split[], int column, int curre
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Reads db of copyable skill
|
||||||
|
* SkillName,Option{,JobAllowed{,RequirementRemoved}}
|
||||||
|
* SkillID,Option{,JobAllowed{,RequirementRemoved}}
|
||||||
|
*/
|
||||||
static bool skill_parse_row_copyabledb(char* split[], int column, int current) {
|
static bool skill_parse_row_copyabledb(char* split[], int column, int current) {
|
||||||
int16 id;
|
int16 id;
|
||||||
uint8 option;
|
uint8 option;
|
||||||
@ -19117,24 +19142,33 @@ static bool skill_parse_row_copyabledb(char* split[], int column, int current) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reads additional range [Cydh]
|
/** Reads additional range for distance checking from NPC [Cydh]
|
||||||
|
* SkillName,AdditionalRange{,NPC Type}
|
||||||
|
* SkillID,AdditionalRange{,NPC Type}
|
||||||
|
*/
|
||||||
static bool skill_parse_row_nonearnpcrangedb(char* split[], int column, int current) {
|
static bool skill_parse_row_nonearnpcrangedb(char* split[], int column, int current) {
|
||||||
int idx;
|
int16 id;
|
||||||
uint16 skill_id = skill_name2id(split[0]);
|
|
||||||
|
|
||||||
if ((idx = skill_get_index(skill_id)) < 0) { // invalid skill id
|
trim(split[0]);
|
||||||
|
if(ISDIGIT(split[0][0]))
|
||||||
|
id = atoi(split[0]);
|
||||||
|
else
|
||||||
|
id = skill_name2id(split[0]);
|
||||||
|
|
||||||
|
if ((id = skill_get_index(id)) < 0) { // invalid skill id
|
||||||
ShowError("skill_parse_row_nonearnpcrangedb: Invalid skill '%s'\n",split[0]);
|
ShowError("skill_parse_row_nonearnpcrangedb: Invalid skill '%s'\n",split[0]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
skill_db[idx].unit_nonearnpc_range = max(atoi(split[1]),0);
|
skill_db[id].unit_nonearnpc_range = max(atoi(split[1]),0);
|
||||||
skill_db[idx].unit_nonearnpc_type = (atoi(split[2])) ? cap_value(atoi(split[2]),1,15) : 15;
|
skill_db[id].unit_nonearnpc_type = (atoi(split[2])) ? cap_value(atoi(split[2]),1,15) : 15;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Reads skill chance by Abracadabra/Hocus Pocus spell
|
||||||
static bool skill_parse_row_abradb(char* split[], int columns, int current)
|
* SkillID,DummyName,RatePerLvl
|
||||||
{// skill_id,DummyName,RatePerLvl
|
*/
|
||||||
|
static bool skill_parse_row_abradb(char* split[], int columns, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
if( !skill_get_index(skill_id) || !skill_get_max(skill_id) )
|
if( !skill_get_index(skill_id) || !skill_get_max(skill_id) )
|
||||||
{
|
{
|
||||||
@ -19154,8 +19188,10 @@ static bool skill_parse_row_abradb(char* split[], int columns, int current)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool skill_parse_row_changematerialdb(char* split[], int columns, int current)
|
/** Reads change material db
|
||||||
{// ProductID,BaseRate,MakeAmount1,MakeAmountRate1...,MakeAmount5,MakeAmountRate5
|
* ProductID,BaseRate,MakeAmount1,MakeAmountRate1...,MakeAmount5,MakeAmountRate5
|
||||||
|
*/
|
||||||
|
static bool skill_parse_row_changematerialdb(char* split[], int columns, int current) {
|
||||||
uint16 skill_id = atoi(split[0]);
|
uint16 skill_id = atoi(split[0]);
|
||||||
short j = atoi(split[1]);
|
short j = atoi(split[1]);
|
||||||
int x,y;
|
int x,y;
|
||||||
|
@ -65,7 +65,7 @@ enum e_skill_inf2 {
|
|||||||
INF2_PARTY_ONLY = 0x00400,
|
INF2_PARTY_ONLY = 0x00400,
|
||||||
INF2_GUILD_ONLY = 0x00800,
|
INF2_GUILD_ONLY = 0x00800,
|
||||||
INF2_NO_ENEMY = 0x01000,
|
INF2_NO_ENEMY = 0x01000,
|
||||||
INF2_NO_AUTOSHADOWSPELL = 0x02000, // Skill that cannot be auto casted by Auto Shadow Spell
|
INF2_AUTOSHADOWSPELL = 0x02000, // Skill that available for SC_AUTOSHADOWSPELL
|
||||||
INF2_CHORUS_SKILL = 0x04000, // Chorus skill
|
INF2_CHORUS_SKILL = 0x04000, // Chorus skill
|
||||||
INF2_NO_BG_DMG = 0x08000, // spell that ignore bg reduction
|
INF2_NO_BG_DMG = 0x08000, // spell that ignore bg reduction
|
||||||
INF2_NO_GVG_DMG = 0x10000, // spell that ignore gvg reduction
|
INF2_NO_GVG_DMG = 0x10000, // spell that ignore gvg reduction
|
||||||
|
Loading…
x
Reference in New Issue
Block a user