Bug Fixes
* Updated Fire Expansion to official effects. (bugreport:8893) * Updated Illusion Doping area of effect and hit reduction. (bugreport:8560) * Cleaned up Full Throttle. -- Thanks to exneval.
This commit is contained in:
@@ -1611,9 +1611,9 @@
|
||||
//-- GN_FIRE_EXPANSION
|
||||
2486,2000,500,0,0,0,0
|
||||
//-- GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
2487,0,0,0,10000:12000:14000:16000:18000,0,0
|
||||
2487,0,0,0,4000,0,0
|
||||
//-- GN_FIRE_EXPANSION_TEAR_GAS
|
||||
2488,0,0,0,10000:12000:14000:16000:18000,0,0
|
||||
2488,0,0,0,5000,0,0
|
||||
//-- GN_HELLS_PLANT
|
||||
2490,3000:3500:4000:4500:5000,500,0,14000:21000:28000:35000:42000,0,0
|
||||
//-- GN_HELLS_PLANT_ATK
|
||||
|
||||
@@ -1200,7 +1200,7 @@
|
||||
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
|
||||
2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
|
||||
2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
|
||||
2489,11,8,1,-1,0x28,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
|
||||
2490,9,6,2,0,0x3,1,5,1,yes,0,0x80,2:3:4:5:6,none,0,0x0, GN_HELLS_PLANT,Hell's Plant
|
||||
2491,0,6,1,0,0x90,0,5,1,no,0,0,0,misc,0,0x0, GN_HELLS_PLANT_ATK,Hell's Plant Attack
|
||||
2492,0,6,4,0,0x3,5:6:6:7:7,5,1,yes,0,0,0,none,0,0x0, GN_MANDRAGORA,Howling of Mandragora
|
||||
@@ -1301,7 +1301,7 @@
|
||||
// EP 14.3 Part 2 3rd Job Skills
|
||||
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:8,5,1,no,0,0,0,weapon,0,0x0, GN_ILLUSIONDOPING,Illusion Doping
|
||||
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
|
||||
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
|
||||
|
||||
@@ -151,8 +151,8 @@
|
||||
2482,0xe6,0x7f, -1, 2, -1,all, 0x000 //GN_WALLOFTHORN
|
||||
2484,0x86, , 0, 1, 100,enemy, 0x080 //GN_CRAZYWEED_ATK
|
||||
2485,0xe7, , 0, 2,2000,enemy, 0x098 //GN_DEMONIC_FIRE
|
||||
2487,0xe8, , 0, 2, 500,enemy, 0x000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
2488,0xe9, , 0, 2, 500,enemy, 0x000 //GN_FIRE_EXPANSION_TEAR_GAS
|
||||
2487,0xe8, , 2, 0, -1,all, 0x2000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
2488,0xe9, , 2, 0, -1,all, 0x2000 //GN_FIRE_EXPANSION_TEAR_GAS
|
||||
2490,0xea, , 0, 1,1000,enemy, 0x002 //GN_HELLS_PLANT
|
||||
|
||||
2555,0x104, , 0, 1:2:2:3:3,500,enemy,0x6 //RL_B_TRAP
|
||||
|
||||
@@ -1602,9 +1602,9 @@
|
||||
//-- GN_FIRE_EXPANSION
|
||||
2486,2000,500,0,0,0,0,-1
|
||||
//-- GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
2487,0,0,0,10000:12000:14000:16000:18000,0,0,-1
|
||||
2487,0,0,0,4000,0,0,-1
|
||||
//-- GN_FIRE_EXPANSION_TEAR_GAS
|
||||
2488,0,0,0,10000:12000:14000:16000:18000,0,0,-1
|
||||
2488,0,0,0,5000,0,0,-1
|
||||
//-- GN_HELLS_PLANT
|
||||
2490,3000:3500:4000:4500:5000,500,0,14000:21000:28000:35000:42000,0,0,-1
|
||||
//-- GN_HELLS_PLANT_ATK
|
||||
|
||||
@@ -1200,7 +1200,7 @@
|
||||
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
|
||||
2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
|
||||
2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
|
||||
2489,11,8,1,-1,0x28,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
|
||||
2490,9,6,2,0,0x3,1,5,1,yes,0,0x80,2:3:4:5:6,none,0,0x0, GN_HELLS_PLANT,Hell's Plant
|
||||
2491,0,6,1,0,0x90,0,5,1,no,0,0,0,misc,0,0x0, GN_HELLS_PLANT_ATK,Hell's Plant Attack
|
||||
2492,0,6,4,0,0x3,5:6:6:7:7,5,1,yes,0,0,0,none,0,0x0, GN_MANDRAGORA,Howling of Mandragora
|
||||
@@ -1304,7 +1304,7 @@
|
||||
// EP 14.3 Part 2 3rd Job Skills
|
||||
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:8,5,1,no,0,0,0,weapon,0,0x0, GN_ILLUSIONDOPING,Illusion Doping
|
||||
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
|
||||
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
|
||||
|
||||
@@ -153,8 +153,8 @@
|
||||
2482,0xe6,0x7f, -1, 2, -1,all, 0x000 //GN_WALLOFTHORN
|
||||
2484,0x86, , 0, 1, 100,enemy, 0x080 //GN_CRAZYWEED_ATK
|
||||
2485,0xe7, , 0, 2,2000,enemy, 0x098 //GN_DEMONIC_FIRE
|
||||
2487,0xe8, , 0, 2, 500,enemy, 0x000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
2488,0xe9, , 0, 2, 500,enemy, 0x000 //GN_FIRE_EXPANSION_TEAR_GAS
|
||||
2487,0xe8, , 2, 0, -1,all, 0x2000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
2488,0xe9, , 2, 0, -1,all, 0x2000 //GN_FIRE_EXPANSION_TEAR_GAS
|
||||
2490,0xea, , 0, 1,1000,enemy, 0x002 //GN_HELLS_PLANT
|
||||
|
||||
2555,0x104, , 0, 1:2:2:3:3,500,enemy,0x6 //RL_B_TRAP
|
||||
|
||||
@@ -4794,8 +4794,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
||||
#ifdef RENEWAL
|
||||
case NJ_ISSEN:
|
||||
case ASC_BREAKER:
|
||||
#endif
|
||||
case CR_ACIDDEMONSTRATION:
|
||||
case GN_FIRE_EXPANSION_ACID:
|
||||
#endif
|
||||
case KO_HAPPOKUNAI:
|
||||
break;
|
||||
default:
|
||||
@@ -4814,6 +4815,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
||||
case MC_CARTREVOLUTION:
|
||||
case MO_INVESTIGATE:
|
||||
case CR_ACIDDEMONSTRATION:
|
||||
case GN_FIRE_EXPANSION_ACID:
|
||||
case KO_BAKURETSU:
|
||||
// Forced to neutral element
|
||||
wd.damage = battle_attr_fix(src, target, wd.damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
|
||||
@@ -4871,8 +4873,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
||||
#ifdef RENEWAL
|
||||
case NJ_ISSEN:
|
||||
case ASC_BREAKER:
|
||||
#endif
|
||||
case CR_ACIDDEMONSTRATION:
|
||||
case GN_FIRE_EXPANSION_ACID:
|
||||
#endif
|
||||
case KO_HAPPOKUNAI:
|
||||
return wd;
|
||||
default:
|
||||
@@ -5063,6 +5066,16 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
case AB_RENOVATIO:
|
||||
ad.damage = status_get_lv(src) * 10 + sstatus->int_;
|
||||
break;
|
||||
#ifndef RENEWAL
|
||||
case GN_FIRE_EXPANSION_ACID:
|
||||
if(tstatus->vit + sstatus->int_)
|
||||
ad.damage = (int64)(7 * tstatus->vit * sstatus->int_ * sstatus->int_ / (10 * (tstatus->vit + sstatus->int_)));
|
||||
else
|
||||
ad.damage = 0;
|
||||
if(tsd)
|
||||
ad.damage >>= 1;
|
||||
break;
|
||||
#endif
|
||||
default: {
|
||||
if (sstatus->matk_max > sstatus->matk_min) {
|
||||
MATK_ADD(sstatus->matk_min+rnd()%(sstatus->matk_max-sstatus->matk_min));
|
||||
@@ -5374,11 +5387,12 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
break;
|
||||
case GN_DEMONIC_FIRE:
|
||||
if( skill_lv > 20) // Fire expansion Lv.2
|
||||
skillratio += 110 + 20 * (skill_lv - 20) + status_get_int(src) * 10;
|
||||
else if( skill_lv > 10 ) // Fire expansion Lv.1
|
||||
skillratio += 110 + 20 * (skill_lv - 10) + status_get_int(src) + ((sd) ? sd->status.job_level : 50);
|
||||
else
|
||||
skillratio += 110 + 20 * skill_lv;
|
||||
skillratio += 10 + 20 * (skill_lv - 20) + status_get_int(src) * 10;
|
||||
else if( skill_lv > 10 ) { // Fire expansion Lv.1
|
||||
skillratio += 10 + 20 * (skill_lv - 10) + status_get_int(src) + ((sd) ? sd->status.job_level : 50);
|
||||
RE_LVL_DMOD(100);
|
||||
} else
|
||||
skillratio += 10 + 20 * skill_lv;
|
||||
break;
|
||||
case KO_KAIHOU:
|
||||
if(sd) {
|
||||
@@ -5604,9 +5618,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
switch(skill_id) { // These skills will do a GVG fix later
|
||||
#ifdef RENEWAL
|
||||
case ASC_BREAKER:
|
||||
#endif
|
||||
case CR_ACIDDEMONSTRATION:
|
||||
return ad;
|
||||
return ad; //These skills will do a GVG fix later
|
||||
#endif
|
||||
default:
|
||||
ad.damage=battle_calc_damage(src,target,&ad,ad.damage,skill_id,skill_lv);
|
||||
if( map_flag_gvg2(target->m) )
|
||||
@@ -5620,8 +5634,17 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
struct Damage wd = battle_calc_weapon_attack(src,target,skill_id,skill_lv,mflag);
|
||||
if(!flag.infdef && ad.damage > 1)
|
||||
ad.damage += wd.damage;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
#ifdef RENEWAL
|
||||
case GN_FIRE_EXPANSION_ACID: {
|
||||
struct Damage wd = battle_calc_weapon_attack(src, target, skill_id, skill_lv, 0);
|
||||
|
||||
ad.damage = (int64)(7 * ((wd.damage / skill_lv + ad.damage / skill_lv) * tstatus->vit / 100));
|
||||
damage_div_fix(ad.damage, ad.div_);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
//case HM_ERASER_CUTTER:
|
||||
}
|
||||
|
||||
|
||||
@@ -1539,8 +1539,8 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint
|
||||
sc_start(src,bl,SC_DARKCROW,100,skill_lv,skill_get_time(skill_id,skill_lv));
|
||||
break;
|
||||
case GN_ILLUSIONDOPING:
|
||||
if( sc_start(src,bl,SC_ILLUSIONDOPING,10 * skill_lv,skill_lv,skill_get_time(skill_id, skill_lv)) ) //Custom rate
|
||||
sc_start(src,bl,SC_HALLUCINATION,100,skill_lv,skill_get_time(skill_id, skill_lv));
|
||||
if( sc_start(src,bl,SC_ILLUSIONDOPING,100 - skill_lv * 10,skill_lv,skill_get_time(skill_id,skill_lv)) )
|
||||
sc_start(src,bl,SC_HALLUCINATION,100,skill_lv,skill_get_time(skill_id,skill_lv));
|
||||
break;
|
||||
|
||||
case RL_MASS_SPIRAL:
|
||||
@@ -5158,6 +5158,12 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
}
|
||||
break;
|
||||
|
||||
case GN_DEMONIC_FIRE:
|
||||
case GN_FIRE_EXPANSION_ACID:
|
||||
if (flag&1)
|
||||
skill_attack(BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag);
|
||||
break;
|
||||
|
||||
case KO_JYUMONJIKIRI: {
|
||||
short x, y;
|
||||
short dir = map_calc_dir(src,bl->x,bl->y);
|
||||
@@ -10818,8 +10824,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
||||
case GN_WALLOFTHORN:
|
||||
case GN_THORNS_TRAP:
|
||||
case GN_DEMONIC_FIRE:
|
||||
case GN_FIRE_EXPANSION_SMOKE_POWDER:
|
||||
case GN_FIRE_EXPANSION_TEAR_GAS:
|
||||
case GN_HELLS_PLANT:
|
||||
case SO_EARTHGRAVE:
|
||||
case SO_DIAMONDDUST:
|
||||
@@ -11289,29 +11293,38 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
||||
if( ud->skillunit[i]->skill_id == GN_DEMONIC_FIRE &&
|
||||
distance_xy(x, y, ud->skillunit[i]->unit->bl.x, ud->skillunit[i]->unit->bl.y) < 4 ) {
|
||||
switch( skill_lv ) {
|
||||
case 1:
|
||||
ud->skillunit[i]->unit->val2 = skill_lv;
|
||||
ud->skillunit[i]->unit->group->val2 = skill_lv;
|
||||
break;
|
||||
case 2:
|
||||
map_foreachinarea(skill_area_sub,src->m,
|
||||
ud->skillunit[i]->unit->bl.x - 2,ud->skillunit[i]->unit->bl.y - 2,
|
||||
ud->skillunit[i]->unit->bl.x + 2,ud->skillunit[i]->unit->bl.y + 2, BL_CHAR,
|
||||
src, GN_DEMONIC_FIRE, skill_lv + 20, tick, flag|BCT_ENEMY|SD_LEVEL|1, skill_castend_damage_id);
|
||||
skill_delunit(ud->skillunit[i]->unit);
|
||||
break;
|
||||
case 3:
|
||||
ud->skillunit[i]->unit_id = UNT_FIRE_EXPANSION_SMOKE_POWDER;
|
||||
clif_changetraplook(&ud->skillunit[i]->unit->bl, UNT_FIRE_EXPANSION_SMOKE_POWDER);
|
||||
skill_delunit(ud->skillunit[i]->unit);
|
||||
skill_unitsetting(src, GN_FIRE_EXPANSION_SMOKE_POWDER, 1, x, y, 0);
|
||||
flag |= 1;
|
||||
break;
|
||||
case 4:
|
||||
ud->skillunit[i]->unit_id = UNT_FIRE_EXPANSION_TEAR_GAS;
|
||||
clif_changetraplook(&ud->skillunit[i]->unit->bl, UNT_FIRE_EXPANSION_TEAR_GAS);
|
||||
skill_delunit(ud->skillunit[i]->unit);
|
||||
skill_unitsetting(src, GN_FIRE_EXPANSION_TEAR_GAS, 1, x, y, 0);
|
||||
flag |= 1;
|
||||
break;
|
||||
case 5: {
|
||||
int acid_lv = 5; // Cast at Acid Demonstration at level 5 unless the user has a higher level learned.
|
||||
if( sd && pc_checkskill(sd, CR_ACIDDEMONSTRATION) > 5 )
|
||||
acid_lv = pc_checkskill(sd, CR_ACIDDEMONSTRATION);
|
||||
map_foreachinarea(skill_area_sub, src->m,
|
||||
ud->skillunit[i]->unit->bl.x - 3, ud->skillunit[i]->unit->bl.y - 3,
|
||||
ud->skillunit[i]->unit->bl.x + 3, ud->skillunit[i]->unit->bl.y + 3, BL_CHAR,
|
||||
src, CR_ACIDDEMONSTRATION, acid_lv, tick, flag|BCT_ENEMY|1|SD_LEVEL, skill_castend_damage_id);
|
||||
ud->skillunit[i]->unit->bl.x - 2, ud->skillunit[i]->unit->bl.y - 2,
|
||||
ud->skillunit[i]->unit->bl.x + 2, ud->skillunit[i]->unit->bl.y + 2, BL_CHAR,
|
||||
src, CR_ACIDDEMONSTRATION, acid_lv, tick, flag|BCT_ENEMY|SD_LEVEL|1, skill_castend_damage_id);
|
||||
skill_delunit(ud->skillunit[i]->unit);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ud->skillunit[i]->unit->val2 = skill_lv;
|
||||
ud->skillunit[i]->unit->group->val2 = skill_lv;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11992,6 +12005,10 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill
|
||||
limit = 3000;
|
||||
val3 = (x<<16)|y;
|
||||
break;
|
||||
case GN_FIRE_EXPANSION_SMOKE_POWDER:
|
||||
case GN_FIRE_EXPANSION_TEAR_GAS:
|
||||
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);
|
||||
@@ -12373,6 +12390,17 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
|
||||
skill_attack(skill_get_type(sg->skill_id), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0);
|
||||
break;
|
||||
|
||||
case UNT_FIRE_EXPANSION_SMOKE_POWDER:
|
||||
if( !sce )
|
||||
sc_start(ss, bl, type, 100, sg->skill_lv, sg->limit);
|
||||
break;
|
||||
|
||||
case UNT_FIRE_EXPANSION_TEAR_GAS:
|
||||
if( !sce )
|
||||
if( sc_start4(ss, bl, type, 100, sg->skill_lv, 0, ss->id,0, sg->limit) )
|
||||
sc_start(ss, bl, SC_TEARGAS_SOB, 100, sg->skill_lv, sg->limit);
|
||||
break;
|
||||
|
||||
case UNT_VOLCANIC_ASH:
|
||||
if (!sce)
|
||||
sc_start(ss, bl, SC_ASH, 100, sg->skill_lv, skill_get_time(MH_VOLCANIC_ASH, sg->skill_lv));
|
||||
@@ -12944,30 +12972,16 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
}
|
||||
break;
|
||||
|
||||
case UNT_DEMONIC_FIRE: {
|
||||
TBL_PC* sd = BL_CAST(BL_PC, ss);
|
||||
switch( sg->val2 ) {
|
||||
case 1:
|
||||
case 2:
|
||||
default:
|
||||
sc_start(ss, bl, SC_BURNING, 4 + 4 * sg->skill_lv, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
skill_attack(skill_get_type(sg->skill_id), ss, &src->bl, bl, sg->skill_id, sg->skill_lv + 10 * sg->val2, tick, 0);
|
||||
break;
|
||||
case 3:
|
||||
skill_attack(skill_get_type(CR_ACIDDEMONSTRATION), ss, &src->bl, bl, CR_ACIDDEMONSTRATION, ((sd) ? pc_checkskill(sd, CR_ACIDDEMONSTRATION) : sg->skill_lv), tick, 0);
|
||||
break;
|
||||
}
|
||||
case UNT_DEMONIC_FIRE:
|
||||
switch( sg->val2 ) {
|
||||
case 1:
|
||||
default:
|
||||
sc_start(ss, bl, SC_BURNING, 4 + 4 * sg->skill_lv, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
skill_attack(skill_get_type(skill_id), ss, &src->bl, bl, sg->skill_id, sg->skill_lv + 10 * sg->val2, tick, 0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case UNT_FIRE_EXPANSION_SMOKE_POWDER:
|
||||
sc_start(ss, bl, status_skill2sc(GN_FIRE_EXPANSION_SMOKE_POWDER), 100, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
break;
|
||||
|
||||
case UNT_FIRE_EXPANSION_TEAR_GAS:
|
||||
sc_start(ss, bl, status_skill2sc(GN_FIRE_EXPANSION_TEAR_GAS), 100, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
break;
|
||||
|
||||
case UNT_HELLS_PLANT:
|
||||
if( battle_check_target(&src->bl,bl,BCT_ENEMY) > 0 )
|
||||
skill_attack(skill_get_type(GN_HELLS_PLANT_ATK), ss, &src->bl, bl, GN_HELLS_PLANT_ATK, sg->skill_lv, tick, 0);
|
||||
@@ -13258,6 +13272,8 @@ int skill_unit_onleft (uint16 skill_id, struct block_list *bl, unsigned int tick
|
||||
case SO_WIND_INSIGNIA:
|
||||
case SO_EARTH_INSIGNIA:
|
||||
case SC_BLOODYLUST:
|
||||
case GN_FIRE_EXPANSION_SMOKE_POWDER:
|
||||
case GN_FIRE_EXPANSION_TEAR_GAS:
|
||||
case SO_ELEMENTAL_SHIELD:
|
||||
if (sce)
|
||||
status_change_end(bl, type, INVALID_TIMER);
|
||||
|
||||
@@ -898,6 +898,7 @@ void initChangeTables(void)
|
||||
|
||||
StatusIconChangeTable[SC_CURSEDCIRCLE_ATKER] = SI_CURSEDCIRCLE_ATKER;
|
||||
|
||||
StatusIconChangeTable[SC_TEARGAS_SOB] = SI_BLANK;
|
||||
StatusIconChangeTable[SC_STOMACHACHE] = SI_STOMACHACHE;
|
||||
StatusIconChangeTable[SC_MYSTERIOUS_POWDER] = SI_MYSTERIOUS_POWDER;
|
||||
StatusIconChangeTable[SC_MELON_BOMB] = SI_MELON_BOMB;
|
||||
@@ -5400,7 +5401,7 @@ static signed short status_calc_hit(struct block_list *bl, struct status_change
|
||||
if (sc->data[SC_TEARGAS])
|
||||
hit -= hit * 50 / 100;
|
||||
if(sc->data[SC_ILLUSIONDOPING])
|
||||
hit -= hit * (5 + sc->data[SC_ILLUSIONDOPING]->val1) / 100; // Custom
|
||||
hit -= 50;
|
||||
if (sc->data[SC_MTF_ASPD])
|
||||
hit += 5;
|
||||
|
||||
@@ -7836,6 +7837,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
case SC__LAZINESS:
|
||||
case SC__UNLUCKY:
|
||||
case SC__WEAKNESS:
|
||||
case SC_TEARGAS:
|
||||
case SC_TEARGAS_SOB:
|
||||
case SC_PYREXIA:
|
||||
case SC_DEATHHURT:
|
||||
case SC_TOXIN:
|
||||
@@ -9521,10 +9524,9 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val2 = 20; //HP rate bonus
|
||||
break;
|
||||
case SC_TEARGAS:
|
||||
val3 = status_get_max_hp(bl) * 5 / 100; // Drain 5% HP
|
||||
val2 = status_get_max_hp(bl) * 5 / 100; // Drain 5% HP
|
||||
val4 = tick / 2000;
|
||||
tick_time = 2000;
|
||||
sc_start(src, bl, SC_TEARGAS_SOB, 100, 0, 1|2|8); // Sob Emoticon
|
||||
break;
|
||||
case SC_TEARGAS_SOB:
|
||||
val4 = tick / 3000;
|
||||
@@ -9643,6 +9645,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val2 = 7 - val1;
|
||||
tick_time = 1000;
|
||||
val4 = tick / tick_time;
|
||||
tick = -1;
|
||||
break;
|
||||
case SC_KINGS_GRACE:
|
||||
val2 = 3 + val1; //HP Recover rate
|
||||
@@ -10791,8 +10794,12 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
||||
case SC_INTRAVISION:
|
||||
calc_flag = SCB_ALL; // Required for overlapping
|
||||
break;
|
||||
case SC_FULL_THROTTLE:
|
||||
sc_start(bl, bl, SC_REBOUND, 100, sce->val1, skill_get_time2(ALL_FULL_THROTTLE, sce->val1));
|
||||
case SC_FULL_THROTTLE: {
|
||||
int sec = skill_get_time2(status_sc2skill(type), sce->val1);
|
||||
|
||||
clif_status_change(bl, SI_DECREASEAGI, 1, sec, 0, 0, 0);
|
||||
sc_start(bl, bl, SC_REBOUND, 100, sce->val1, sec);
|
||||
}
|
||||
break;
|
||||
case SC_ITEMSCRIPT: // Removes Buff Icons
|
||||
if (sd && sce->val2 != SI_BLANK)
|
||||
@@ -11826,9 +11833,19 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
return 0;
|
||||
|
||||
case SC_TEARGAS:
|
||||
if(!status_charge(bl, 0, sce->val3))
|
||||
break; // Not enough HP to continue.
|
||||
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
|
||||
if( --(sce->val4) >= 0 ) {
|
||||
struct block_list *src = map_id2bl(sce->val3);
|
||||
int damage = sce->val2;
|
||||
|
||||
map_freeblock_lock();
|
||||
clif_damage(bl, bl, tick, 0, 0, damage, 1, 9, 0);
|
||||
status_damage(src, bl, damage,0, 0, 1);
|
||||
if( sc->data[type] ) {
|
||||
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
|
||||
}
|
||||
map_freeblock_unlock();
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case SC_TEARGAS_SOB:
|
||||
if( --(sce->val4) >= 0 ) {
|
||||
@@ -11890,7 +11907,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
break;
|
||||
case SC_FULL_THROTTLE:
|
||||
if( --(sce->val4) > 0 ) {
|
||||
status_percent_damage(bl, bl, sce->val2, sce->val2, false);
|
||||
status_percent_damage(bl, bl, 0, sce->val2, false);
|
||||
sc_timer_next(1000 + tick, status_change_timer, bl->id, data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user