Corrected Chain Lightning behavior (#2683)

* Fixes #2674 and fixes #2678.
* Chain Lightning will no longer bounce across Ice Wall.
* Chain Lightning damage should slowly decrease based on the number of bounces remaining.
* Removed the splash effect which was causing the damage to iterate faster on the first two hits.
* Removed the skill unit defines.
Thanks to @Sweet520!
This commit is contained in:
Aleos 2017-12-15 10:09:23 -05:00 committed by GitHub
parent 91a8ed3747
commit 947875d27b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 11 additions and 13 deletions

View File

@ -954,7 +954,7 @@
2211,11,8,1,3,0x2,3,5,-7,yes,0,0,0,magic,3,0x400, WL_CRIMSONROCK,Crimson Rock
2212,11,6,1,3,0,0,5,1,yes,0,0,0,magic,0,0x400, WL_HELLINFERNO,Hell Inferno
2213,11,8,2,0,0x2,9,5,-20,yes,0,0,0,magic,2,0x400, WL_COMET,Comet
2214,11,6,1,0,0x2,3,5,1,yes,0,0,0,magic,0,0x400, WL_CHAINLIGHTNING,Chain Lightning //CHECK Is the splash being used for the target search?
2214,11,6,1,0,0x1,0,5,1,yes,0,0,0,magic,0,0x400, WL_CHAINLIGHTNING,Chain Lightning
2215,11,6,1,4,0,0,5,1,no,0,0,0,magic,0,0x0, WL_CHAINLIGHTNING_ATK,Chain Lightning Attack
2216,6,8,2,2,0,0,5,-6:-7:-8:-9:-10,yes,0,0,0,magic,0,0x10000, WL_EARTHSTRAIN,Earth Strain
2217,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0,0x400, WL_TETRAVORTEX,Tetra Vortex

View File

@ -114,7 +114,6 @@
2032,0xe1, , 2, 0,1000,enemy, 0x8018 //GC_POISONSMOKE
2213,0x86, , 0, 9,1000,enemy, 0x018 //WL_COMET
2214,0x86, , 0, 5, 100,enemy, 0x080 //WL_CHAINLIGHTNING
2216,0xcb, , -1, 2,2000,enemy, 0x018 //WL_EARTHSTRAIN
2238,0xd8, , 0, 1,1000,enemy, 0x9006 //RA_ELECTRICSHOCKER

View File

@ -954,7 +954,7 @@
2211,11,8,1,3,0x2,3,5,-7,yes,0,0,0,magic,3,0x400, WL_CRIMSONROCK,Crimson Rock
2212,11,6,1,3,0,0,5,1,yes,0,0,0,magic,0,0x400, WL_HELLINFERNO,Hell Inferno
2213,11,8,2,0,0x2,9,5,-20,yes,0,0,0,magic,2,0x400, WL_COMET,Comet
2214,11,6,1,0,0x2,3,5,1,yes,0,0,0,magic,0,0x400, WL_CHAINLIGHTNING,Chain Lightning //CHECK Is the splash being used for the target search?
2214,11,6,1,0,0x1,0,5,1,yes,0,0,0,magic,0,0x400, WL_CHAINLIGHTNING,Chain Lightning
2215,11,6,1,4,0,0,5,1,no,0,0,0,magic,0,0x0, WL_CHAINLIGHTNING_ATK,Chain Lightning Attack
2216,6,8,2,2,0,0,5,-6:-7:-8:-9:-10,yes,0,0,0,magic,0,0x10000, WL_EARTHSTRAIN,Earth Strain
2217,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0,0x400, WL_TETRAVORTEX,Tetra Vortex

View File

@ -115,7 +115,6 @@
2032,0xe1, , 2, 0,1000,enemy, 0x8018 //GC_POISONSMOKE
2213,0x86, , 0, 9,1000,enemy, 0x018 //WL_COMET
2214,0x86, , 0, 5, 100,enemy, 0x080 //WL_CHAINLIGHTNING
2216,0xcb, , -1, 2,2000,enemy, 0x018 //WL_EARTHSTRAIN
2238,0xd8, , 0, 1,1000,enemy, 0x8006 //RA_ELECTRICSHOCKER

View File

@ -6070,7 +6070,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
skillratio += 400 + 100 * skill_lv;
RE_LVL_DMOD(100);
if (mflag > 0)
skillratio += 100 * (9 - mflag);
skillratio += 100 * mflag;
break;
case WL_EARTHSTRAIN:
skillratio += 1900 + 100 * skill_lv;

View File

@ -4105,18 +4105,18 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
}
break;
case WL_CHAINLIGHTNING_ATK: {
skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); // Hit a Lightning on the current Target
skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,9 - skl->type); // Hit a Lightning on the current Target
skill_toggle_magicpower(src, skl->skill_id); // Only the first hit will be amplified
if( skl->type < (4 + skl->skill_lv - 1) && skl->x < 3 )
{ // Remaining Chains Hit
struct block_list *nbl = NULL; // Next Target of Chain
nbl = battle_getenemyarea(src, target->x, target->y, (skl->type>2)?2:3, // After 2 bounces, it will bounce to other targets in 7x7 range.
BL_CHAR|BL_SKILL, target->id); // Search for a new Target around current one...
splash_target(src), target->id); // Search for a new Target around current one...
if( nbl == NULL )
skl->x++;
else
skl->x = 0;
skill_addtimerskill(src, tick + 651, (nbl?nbl:target)->id, skl->x, 0, WL_CHAINLIGHTNING_ATK, skl->skill_lv, skl->type + 1, skl->flag);
skl->x = 0;
skill_addtimerskill(src, tick + 650, (nbl?nbl:target)->id, skl->x, 0, WL_CHAINLIGHTNING_ATK, skl->skill_lv, skl->type + 1, 0);
}
}
break;
@ -5445,10 +5445,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
sc_start(src, bl, status_skill2sc(skill_id), 100, skill_lv, skill_get_time(skill_id, skill_lv)); // Should be applied even on miss
break;
case WL_CHAINLIGHTNING:
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
skill_addtimerskill(src,tick + status_get_amotion(src),bl->id,0,0,WL_CHAINLIGHTNING_ATK,skill_lv,0,flag);
break;
case WL_DRAINLIFE:
{
int heal = (int)skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
@ -9460,6 +9456,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
}
break;
case WL_CHAINLIGHTNING:
skill_addtimerskill(src, tick + status_get_amotion(src), bl->id, 0, 0, WL_CHAINLIGHTNING_ATK, skill_lv, 0, 0);
break;
case WL_WHITEIMPRISON:
if( (src == bl || battle_check_target(src, bl, BCT_ENEMY)>0) && status_get_class_(bl) != CLASS_BOSS && !status_isimmune(bl) ) // Should not work with Bosses.
{