-Upd abracadabra_db thank to Playtester.

--Added new skills and change the rate behaviour.



git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17374 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
glighta 2013-06-19 05:16:24 +00:00
parent cc701c83bb
commit da56e53efd
4 changed files with 222 additions and 321 deletions

View File

@ -1,322 +1,224 @@
// Hocus-Pocus (Abrakadabra) Castable Skills Database
// Hocus-Pocus (Abracadabra) Castable Skills Database
//
// Structure of Database:
// SkillID,DummyName,RequiredHocusPocusLevel,Rate
// SkillID,DummyName,RatePerLvl
//
// 01. SkillID Skill ID to be casted by hocus pocus.
// 02. DummyName Name of the skill (informative, not used by server).
// 03. RequiredHocusPocusLevel Minimum skill level of hocus pocus for the current skill to be selected.
// 04. Rate Chance at which the skill is selected (1 = 0.01%, 10000 = 100%).
// 03. RatePerLvl Chance at which the skill is selected (1 = 0.01%, 10000 = 100%).
//
// NOTE: The skill is picked at random from the entire database and then tested for rate. If it
// does not succeed at that rate, an another skill is picked and tested. This continues
// until a skill succeeds.
// does not succeed at that rate, another skill is picked and tested. This continues
// until a skill succeeds. Abracadabra-specific skills have a different chance to occur
// depending on skill level used. All other skills have an equal chance and appear from
// level 1 onward.
//1,Basic Skill,1,0
5,Bash,500
6,Provoke,500
7,Magnum Break,500
8,Endure,500
//2,Sword Mastery,1,0
//3,Two-Handed Sword Mastery,1,0
//4,Increase HP Recovery,1,0
5,Bash,1,5000
6,Provoke,1,5000
7,Magnum Break,1,5000
8,Endure,1,5000
10,Sight,500
11,Napalm Beat,500
12,Safety Wall,500
13,Soul Strike,500
14,Cold Bolt,500
15,Frost Diver,500
16,Stone Curse,500
17,Fire Ball,500
18,Fire Wall,500
19,Fire Bolt,500
20,Lightning Bolt,500
21,Thunder Storm,500
//9,Increase SP Recovery,1,0
10,Sight,1,5000
11,Napalm Beat,1,5000
12,Safety Wall,4,5000
13,Soul Strike,2,5000
14,Cold Bolt,1,5000
15,Frost Diver,2,5000
16,Stone Curse,1,5000
17,Fire Ball,2,5000
18,Fire Wall,4,5000
19,Fire Bolt,1,5000
20,Lightning Bolt,1,5000
21,Thunder Storm,2,5000
24,Ruwach,500
25,Pneuma,500
26,Teleport,500
27,Warp Portal,500
28,Heal,500
29,Increase AGI,500
30,Decrease AGI,500
31,Aqua Benedicta,500
32,Signum Crucis,500
33,Angelus,500
34,Blessing,500
35,Cure,500
//22,Divine Protection,1,0
//23,Demon Bane,1,0
24,Ruwach,1,5000
25,Pneuma,6,5000
26,Teleport,2,5000
27,Warp Portal,4,5000
28,Heal,1,5000
29,Increase AGI,2,5000
30,Decrease AGI,4,5000
31,Aqua Benedicta,1,5000
32,Signum Crucis,1,5000
33,Angelus,1,5000
34,Blessing,2,5000
35,Cure,1,5000
40,Item Appraisal,500
41,Vending,500
42,Mammonite,500
//36,Enlarge Weight Limit,1,0
//37,Discount,1,0
//38,Overcharge,1,0
//39,Pushcart,1,0
40,Item Appraisal,1,5000
41,Vending,4,5000
42,Mammonite,1,5000
45,Improve Concentration,500
46,Double Strafe,500
47,Arrow Shower,500
//43,Owl's Eye,1,0
//44,Vulture's Eye,1,0
45,Improve Concentration,4,5000
46,Double Strafe,1,5000
47,Arrow Shower,2,5000
50,Steal,500
51,Hiding,500
52,Envenom,500
53,Detoxify,500
//48,Double Attack,1,0
//49,Improve Dodge,1,0
50,Steal,2,5000
51,Hiding,2,5000
52,Envenom,1,5000
53,Detoxify,1,5000
54,Resurrection,500
54,Resurrection,1,5000
56,Pierce,500
57,Brandish Spear,500
58,Spear Stab,500
59,Spear Boomerang,500
60,TwoHand Quicken,500
61,Counter Attack,500
62,Bowling Bash,500
//55,Spear Mastery,1,0
56,Pierce,2,4000
57,Brandish Spear,6,4000
58,Spear Stab,1,4000
59,Spear Boomerang,4,4000
60,TwoHand Quicken,1,4000
61,Counter Attack,2,4000
62,Bowling Bash,6,4000
//63,Peco Peco Riding,1,0
//64,Cavalier Mastery,1,0
66,Impositio Manus,500
67,Suffragium,500
68,Aspersio,500
69,B.S Sacramenti,500
70,Sanctuary,500
71,Slow poison,500
72,Status Recovery,500
73,Kyrie Eleison,500
74,Magnificat,500
75,Gloria,500
76,Lex Divina,500
77,Turn Undead,500
78,Lex Aeterna,500
79,Magnus Exorcismus,500
//65,Mace Mastery,1,0
66,Impositio Manus,1,4000
67,Suffragium,2,4000
68,Aspersio,2,4000
69,B.S Sacramenti,4,4000
70,Sanctuary,2,4000
71,Slow poison,1,4000
72,Status Recovery,1,4000
73,Kyrie Eleison,2,4000
74,Magnificat,2,4000
75,Gloria,4,4000
76,Lex Divina,2,4000
77,Turn Undead,2,4000
78,Lex Aeterna,4,4000
79,Magnus Exorcismus,6,4000
80,Fire Pillar,500
81,Sightrasher,500
//82,Fire Ivy,500
83,Meteor Storm,500
84,Jupitel Thunder,500
85,Lord of Vermilion,500
86,Water Ball,500
87,Ice Wall,500
88,Frost Nova,500
89,Storm Gust,500
90,Earth spike,500
91,Heaven's Drive,500
92,Quagmire,500
93,Sense,500
80,Fire Pillar,2,4000
81,Sightrasher,2,4000
//82,Fire Ivy,1,0
83,Meteor Storm,6,4000
84,Jupitel Thunder,2,4000
85,Lord of Vermilion,6,4000
86,Water Ball,4,4000
87,Ice Wall,2,4000
88,Frost Nova,1,4000
89,Storm Gust,6,4000
90,Earth spike,1,4000
91,Heaven's Drive,2,4000
92,Quagmire,4,4000
93,Sense,1,4000
//108,Weapon Repair,500
110,Hammer Fall,500
111,Adrenaline Rush,500
112,Weapon Perfection,500
113,Power-Thrust,500
114,Maximize Power,500
//94,Iron Tempering,1,0
//95,Steel Tempering,1,0
//96,Enchanted Stone Craft,1,0
//97,Oridecon Research,1,0
//98,Smith Dagger,1,0
//99,Smith Sword,1,0
//100,Smith Two-handed Sword,1,0
//101,Smith Axe,1,0
//102,Smith Mace,1,0
//103,Smith Knucklebrace,1,0
//104,Smith Spear,1,0
//105,Hilt Binding,1,0
//106,Ore Discovery,1,0
//107,Weaponry Research,1,0
108,Weapon Repair,1,0
//109,Skin Tempering,1,0
110,Hammer Fall,1,4000
111,Adrenaline Rush,2,4000
112,Weapon Perfection,4,4000
113,Power-Thrust,4,4000
114,Maximize Power,6,4000
115,Skid Trap,500
116,Land Mine,500
117,Ankle Snare,500
118,Shockwave Trap,500
119,Sandman,500
120,Flasher,500
121,Freezing Trap,500
122,Blast Mine,500
123,Claymore Trap,500
124,Remove Trap,500
125,Talkie box,500
129,Blitz Beat,500
130,Detect,500
131,Spring Trap,500
115,Skid Trap,1,4000
116,Land Mine,2,4000
117,Ankle Snare,2,4000
118,Shockwave Trap,4,4000
119,Sandman,4,4000
120,Flasher,4,4000
121,Freezing Trap,4,4000
122,Blast Mine,4,4000
123,Claymore Trap,6,4000
124,Remove Trap,1,4000
125,Talkie box,1,4000
//126,Beast Bane,1,0
//127,Falconry Mastery,1,0
//128,Steel Crow,1,0
129,Blitz Beat,4,4000
130,Detect,1,4000
131,Spring Trap,1,4000
//132,Righthand Mastery,1,0
//133,Lefthand Mastery,1,0
//134,Katar Mastery,1,0
135,Cloaking,2,4000
136,Sonic Blow,2,4000
137,Grimtooth,4,4000
138,Enchant Poison,2,4000
139,Poison React,2,4000
140,Venom Dust,4,4000
141,Venom Splasher,4,4000
//---JP2.0 Additional skill---
142,First Aid,1,5000
143,Act Dead,1,5000
//144,Moving HP-Recovery,1,0
//145,Fatal Blow,1,0
146,Auto Berserk,1,0
147,Arrow Crafting,1,5000
148,Arrow Repel,1,5000
149,Throw Sand,1,5000
150,Back sliding,1,5000
151,Find Stone,1,5000
152,Stone Fling,1,5000
153,Cart Revolution,1,5000
154,Change Cart,1,5000
155,Crazy Uproar,1,5000
156,Holy Light,1,5000
157,Energy Coat,1,5000
135,Cloaking,500
136,Sonic Blow,500
137,Grimtooth,500
138,Enchant Poison,500
139,Poison React,500
140,Venom Dust,500
141,Venom Splasher,500
//---EP4.0 Skill---
//210,Gank,1,0
211,Mug,1,4000
212,Back Stab,4,4000
//213,Stalk,1,0
214,Sightless Raid,2,4000
215,Divest Weapon,4,4000
216,Divest shield,4,4000
217,Divest armor,4,4000
218,Divest helm,4,4000
219,Snatch,4,4000
220,Scribble,1,4000
221,Piece,1,0
222,Remover,4,4000
//223,Slyness,1,0
//224,Haggle,1,0
//225,Intimidate,1,0
211,Mug,500
212,Back Stab,500
214,Sightless Raid,500
215,Divest Weapon,500
216,Divest Shield,500
217,Divest Armor,500
218,Divest Helm,500
219,Snatch,500
220,Scribble,500
//221,Piece,500
222,Remover,500
//226,Axe Mastery,1,0
//227,Potion Research,1,0
228,Prepare Potion,1,4000
229,Bomb,2,4000
230,Acid terror,2,4000
231,Aid Potion,2,4000
232,Summon Flora,4,4000
233,Summon Marine Sphere,4,4000
234,Alchemical Weapon,4,4000
235,Synthesized Shield,4,4000
236,Synthetic Armor,4,4000
237,Biochemical Helm,4,4000
249,Guard,500
250,Smite,500
251,Shield Boomerang,500
252,Shield Reflect,500
253,Holy Cross,500
254,Grand Cross,500
255,Sacrifice,500
256,Resistant Souls,500
257,Defending Aura,500
258,Spear Quicken,500
//238,Bioethics,1,0
//239,Biotechnology,1,0
//240,Life Creation,1,0
//241,Cultivation,1,0
//242,Flame control,1,0
//243,Call Homunculus,1,0
//244,Vaporize,1,0
//245,Drillmaster,1,0
//246,Heal Homunculus,1,0
//247,Resurrect Homunculus,1,0
261,Summon Spirit Sphere,500
262,Absorb Spirit Sphere,500
264,Snap,500
266,Occult Impact,500
267,Throw Spirit Sphere,500
268,Mental Strength,500
269,Root,500
270,Fury,500
271,Asura Strike,500
//272,Raging Quadruple Blow,500
//273,Raging Thrust,500
//248,Faith,1,0
249,Guard,1,4000
250,Smite,2,4000
251,Shield boomerang,2,4000
252,Shield Reflect,4,4000
253,Holy cross,2,4000
254,Grand cross,6,4000
255,Sacrifice,4,4000
256,Resistant Souls,2,4000
257,Defending Aura,4,4000
258,Spear Quicken,1,4000
//259,Iron fists,1,0
//260,Spiritual Cadence,1,0
261,Summon Spirit Sphere,1,4000
262,Absorb Spirit Sphere,1,4000
//263,Raging Trifecta Blow,1,0
264,Snap,4,4000
//265,Dodge,1,0
266,Occult Impact,2,4000
267,Throw Spirit Sphere,2,4000
268,Mental Strength,4,4000
269,Root,2,4000
270,Fury,2,4000
271,Asura Strike,6,4000
272,Raging Quadruple Blow,1,0
273,Raging Thrust,1,0
//274,Study,1,0
275,Cast Cancel,1,4000
276,Magic Rod,1,4000
277,Spell Break,2,4000
//278,Free Cast,1,0
279,Hindsight,2,4000
280,Endow Blaze,2,4000
281,Endow Tsunami,2,4000
282,Endow Tornado,2,4000
283,Endow Quake,2,4000
//284,Dragonology,1,0
285,Volcano,4,4000
286,Deluge,4,4000
287,Whirlwind,4,4000
288,Magnetic Earth,4,4000
289,Dispel,6,4000
290,Hocus-pocus,4,4000
275,Cast Cancel,500
276,Magic Rod,500
277,Spell Break,500
279,Hindsight,500
280,Endow Blaze,500
281,Endow Tsunami,500
282,Endow Tornado,500
283,Endow Quake,500
285,Volcano,500
286,Deluge,500
287,Whirlwind,500
288,Magnetic Earth,500
289,Dispel,500
// Abracadabra Derivation Skill
291,Monocell,4,2500
292,Class Change,8,2500
293,Summon Monster,6,3500
294,Grampus Morph,4,5000
295,Grim Reaper,8,2000
//296,Gold Digger,6,4000
297,Beastly Hypnosis,6,4000
298,Questioning,4,5000
299,Gravity,4,5000
//300,Leveling,10,500
301,Suicide,4,2000
302,Rejuvination,8,3000
303,Coma,4,4000
291,Monocell,250:500:750:1000:1250:1200:1750:2000:2250:2500
292,Class Change,0:0:0:0:10:10:20:20:30:30
293,Summon Monster,100:200:300:400:500:600:700:800:900:1000
294,Grampus Morph,0:0:0:0:0:0:0:10:50:100
295,Grim Reaper,50:100:150:200:250:300:350:400:450:500
//296,Gold Digger,50:100:150:200:250:300:350:400:450:500
//297,Beastly Hypnosis,50:100:150:200:250:300:350:400:450:500
298,Questioning,1000:800:600:400:200:0:0:0:0:0
299,Gravity,0:0:0:0:0:0:0:20:50:100
//300,Leveling,0:0:0:0:0:0:0:0:10:50
301,Suicide,0:0:0:0:0:0:0:10:50:100
302,Rejuvination,0:0:0:0:0:0:20:50:100:200
303,Coma,0:0:0:0:100:200:300:400:500:600
// Dancer / Bard commonness
304,Amp,1,0
305,Encore,1,0
306,Lullaby,1,0
307,Mental Sensing,1,0
308,Down Tempo,1,0
309,Battle Theme,1,0
310,Harmonic Lick,1,0
311,Classical Pluck,1,0
312,Power Chord,1,0
313,Acoustic Rhythm,1,0
//314,Ragnarok,1,0
//304,Amp,500
//305,Encore,500
//306,Lullaby,500
//307,Mental Sensing,500
//308,Down Tempo,500
//309,Battle Theme,500
//310,Harmonic Lick,500
//311,Classical Pluck,500
//312,Power Chord,500
//313,Acoustic Rhythm,500
//314,Ragnarok,500
// Bard skill
//315,Music Lessons,1,0
316,Melody Strike,1,4000
317,Unchained Serenade,1,0
318,Unbarring Octave,2,4000
319,Perfect Tablature,1,0
320,Impressive Riff,1,0
321,Magic Strings,1,0
322,Song of Lutie,1,0
316,Melody Strike,500
//317,Unchained Serenade,500
318,Unbarring Octave,500
//319,Perfect Tablature,500
//320,Impressive Riff,500
//321,Magic Strings,500
//322,Song of Lutie,500
// Dancer skill
//323,Dance Lessons,1,0
324,Slinging Arrow,1,4000
325,Hip Shaker,1,0
326,Dazzler,2,4000
327,Focus Ballet,1,0
328,Slow Grace,1,0
329,Lady Luck,1,0
330,Gypsy's Kiss,1,0
324,Slinging Arrow,500
//325,Hip Shaker,500
326,Dazzler,500
//327,Focus Ballet,500
//328,Slow Grace,500
//329,Lady Luck,500
//330,Gypsy's Kiss,500

View File

@ -46,6 +46,7 @@ extern char mapindex_cfgfile[80];
#define MAP_MALANGDO "malangdo"
#define MAP_MALAYA "malaya"
#define MAP_ECLAGE "eclage"
#define MAP_ECLAGE_IN "ecl_in01"
// When a map index search fails, return results from what map?
#define MAP_DEFAULT MAP_PRONTERA

View File

@ -5116,11 +5116,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
do {
i = rnd() % MAX_SKILL_ABRA_DB;
abra_skill_id = skill_abra_db[i].skill_id;
abra_skill_lv = min(skill_lv, skill_get_max(abra_skill_id));
} while (abra_skill_id == 0 ||
skill_abra_db[i].req_lv > skill_lv || //Required lv for it to appear
rnd()%10000 >= skill_abra_db[i].per
rnd()%10000 >= skill_abra_db[i].per[abra_skill_lv]
);
abra_skill_lv = min(skill_lv, skill_get_max(abra_skill_id));
clif_skill_nodamage (src, bl, skill_id, skill_lv, 1);
if( sd )
@ -8770,26 +8770,26 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case ECLAGE_RECALL:
if( sd )
{
short x, y; // Destiny position.
unsigned short mapindex;
short x=0, y=0; // Destiny position.
unsigned short mapindex=0;
if ( skill_id == RETURN_TO_ELDICASTES )
{
switch(skill_id){
default:
case RETURN_TO_ELDICASTES:
x = 198;
y = 187;
mapindex = mapindex_name2id(MAP_DICASTES);
}
else if ( skill_id == ALL_GUARDIAN_RECALL )
{
break;
case ALL_GUARDIAN_RECALL:
x = 44;
y = 151;
mapindex = mapindex_name2id(MAP_MORA);
}
else if ( skill_id == ECLAGE_RECALL )
{
break;
case ECLAGE_RECALL:
x = 47;
y = 31;
mapindex = mapindex_name2id("ecl_in01");
mapindex = mapindex_name2id(MAP_ECLAGE_IN);
break;
}
if(!mapindex)
@ -8806,33 +8806,31 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case ECL_PEONYMAMY:
case ECL_SADAGUI:
case ECL_SEQUOIADUST:
if ( skill_id == ECL_SNOWFLIP )
{
switch(skill_id){
case ECL_SNOWFLIP:
status_change_end(bl, SC_SLEEP, INVALID_TIMER);
status_change_end(bl, SC_BLEEDING, INVALID_TIMER);
status_change_end(bl, SC_BURNING, INVALID_TIMER);
status_change_end(bl, SC_DEEPSLEEP, INVALID_TIMER);
}
else if ( skill_id == ECL_PEONYMAMY )
{
break;
case ECL_PEONYMAMY:
status_change_end(bl, SC_FREEZE, INVALID_TIMER);
status_change_end(bl, SC_FREEZING, INVALID_TIMER);
status_change_end(bl, SC_CRYSTALIZE, INVALID_TIMER);
}
else if ( skill_id == ECL_SADAGUI )
{
break;
case ECL_SADAGUI:
status_change_end(bl, SC_STUN, INVALID_TIMER);
status_change_end(bl, SC_CONFUSION, INVALID_TIMER);
status_change_end(bl, SC_HALLUCINATION, INVALID_TIMER);
status_change_end(bl, SC_FEAR, INVALID_TIMER);
}
else if ( skill_id == ECL_SEQUOIADUST )
{
break;
case ECL_SEQUOIADUST:
status_change_end(bl, SC_STONE, INVALID_TIMER);
status_change_end(bl, SC_POISON, INVALID_TIMER);
status_change_end(bl, SC_CURSE, INVALID_TIMER);
status_change_end(bl, SC_BLIND, INVALID_TIMER);
status_change_end(bl, SC_ORCISH, INVALID_TIMER);
break;
}
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
break;
@ -12720,7 +12718,7 @@ int skill_isammotype (struct map_session_data *sd, int skill)
(sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) &&
skill != HT_PHANTASMIC &&
skill_get_type(skill) == BF_WEAPON &&
!(skill_get_nk(skill)&NK_NO_DAMAGE) &&
!(skill_get_nk(skill)&NK_NO_DAMAGE) &&
!skill_get_spiritball(skill,1) //Assume spirit spheres are used as ammo instead.
);
}
@ -18225,7 +18223,7 @@ static bool skill_parse_row_reproducedb(char* split[], int column, int current)
static bool skill_parse_row_abradb(char* split[], int columns, int current)
{// skill_id,DummyName,RequiredHocusPocusLevel,Rate
{// skill_id,DummyName,RatePerLvl
uint16 skill_id = atoi(split[0]);
if( !skill_get_index(skill_id) || !skill_get_max(skill_id) )
{
@ -18239,8 +18237,8 @@ static bool skill_parse_row_abradb(char* split[], int columns, int current)
}
skill_abra_db[current].skill_id = skill_id;
skill_abra_db[current].req_lv = atoi(split[2]);
skill_abra_db[current].per = atoi(split[3]);
safestrncpy(skill_abra_db[current].name, trim(split[1]), sizeof(skill_abra_db[current].name)); //store dummyname
skill_split_atoi(split[2],skill_abra_db[current].per);
return true;
}
@ -18321,7 +18319,7 @@ static void skill_readdb(void)
skill_init_unit_layout();
sv_readdb(db_path, "produce_db.txt" , ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill_parse_row_producedb);
sv_readdb(db_path, "create_arrow_db.txt" , ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill_parse_row_createarrowdb);
sv_readdb(db_path, "abra_db.txt" , ',', 4, 4, MAX_SKILL_ABRA_DB, skill_parse_row_abradb);
sv_readdb(db_path, "abra_db.txt" , ',', 3, 3, MAX_SKILL_ABRA_DB, skill_parse_row_abradb);
//Warlock
sv_readdb(db_path, "spellbook_db.txt" , ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill_parse_row_spellbookdb);
//Guillotine Cross

View File

@ -217,8 +217,8 @@ extern struct s_skill_arrow_db skill_arrow_db[MAX_SKILL_ARROW_DB];
struct s_skill_abra_db {
uint16 skill_id;
int req_lv;
int per;
char name[NAME_LENGTH];
int per[MAX_SKILL_LEVEL];
};
extern struct s_skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB];