NPC_EVILLAND and Sanctuary updates (fixes #927)
* NPC_EVILLAND now has 3+level intervals, a target range of 7 and ignores flee, * NPC_EVILLAND's area of effect per unit is now 11x11 on level 1-9 and 27x27 on level 10 * NPC_EVILLAND now ignores Devotion * Sanctuary now has exactly 1+3*level heal intervals, regardless of number of players healed * Sanctuary will end early when 3+level targets have been hit, targets currently on Sanctuary might still be hit when it expires
This commit is contained in:
@@ -131,7 +131,7 @@
|
||||
//-- PR_BENEDICTIO
|
||||
69,0,0,0,40000:80000:120000:160000:200000,0,0
|
||||
//-- PR_SANCTUARY
|
||||
70,5000,0,0,4000:7000:10000:13000:16000:19000:22000:25000:28000:31000,0,0
|
||||
70,5000,0,0,3500:6500:9500:12500:15500:18500:21500:24500:27500:30500,0,0
|
||||
//-- PR_SLOWPOISON
|
||||
71,0,0,0,10000:20000:30000:40000,0,0
|
||||
//-- PR_STRECOVERY
|
||||
@@ -979,7 +979,7 @@
|
||||
//-- NPC_WIDESIGHT
|
||||
669,0,0,0,10000,0,0
|
||||
//-- NPC_EVILLAND
|
||||
670,0,0,0,30000,30000,0
|
||||
670,0,0,0,3500:4500:5500:6500:7500:8500:9500:10500:11500:12500,30000,0
|
||||
//-- NPC_MAGICMIRROR
|
||||
671,0,0,0,30000:30000:30000:30000:30000:2000:2000:2000:2000:2000,0,0
|
||||
//-- NPC_SLOWCAST
|
||||
|
||||
@@ -795,7 +795,7 @@
|
||||
667,0,6,4,0,0x3,2:5:8:11:14,5,1,no,0,0x2,0,none,0,0x0, NPC_WIDECONFUSE,Wide Confusion
|
||||
668,0,6,4,0,0x3,2:5:8:11:14,5,1,no,0,0x2,0,none,0,0x0, NPC_WIDESLEEP,Wide Sleep
|
||||
669,0,6,4,3,0x3,5,1,1,no,0,0x2,0,magic,0,0x0, NPC_WIDESIGHT,Wide Sight
|
||||
670,9,6,2,7,0x91,0,10,1,no,0,0x2,0,magic,0,0x0, NPC_EVILLAND,Evil Land
|
||||
670,7,6,2,7,0xD1,0,10,1,no,0,0x2,0,magic,0,0x0, NPC_EVILLAND,Evil Land
|
||||
671,0,6,4,0,0x1,0,5,1,no,0,0x2,0,magic,0,0x0, NPC_MAGICMIRROR,Magic Mirror
|
||||
672,0,6,4,0,0x3,2:5:8:11:14,5,1,no,0,0x2,0,none,0,0x0, NPC_SLOWCAST,Slow Cast
|
||||
673,-9,6,1,-1,0,0,5,1,no,0,0x2,0,weapon,0,0x0, NPC_CRITICALWOUND,Critical Wounds
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
527,0xbc, , -1, 0,2000,enemy, 0x018 //NJ_TATAMIGAESHI
|
||||
535,0xbd, , -1, 0, 20,enemy, 0x8010 //NJ_KAENSIN
|
||||
538,0xbb, , 1:1:1:2:2:2:3:3:3:4,0,-1,all,0x8010 //NJ_SUITON
|
||||
670,0xc7, , 1, 4:7:10:13:16:19:22:25:28:31,1000,all,0x008 //NPC_EVILLAND
|
||||
670,0xc7, , 1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008 //NPC_EVILLAND
|
||||
|
||||
//706,0xfd, , 0, 0,1000,all, 0x000 //NPC_VENOMFOG
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
//-- PR_BENEDICTIO
|
||||
69,0,0,0,40000:80000:120000:160000:200000,0,0,0
|
||||
//-- PR_SANCTUARY
|
||||
70,4000,0,0,4000:7000:10000:13000:16000:19000:22000:25000:28000:31000,0,0,1000
|
||||
70,4000,0,0,3500:6500:9500:12500:15500:18500:21500:24500:27500:30500,0,0,1000
|
||||
//-- PR_SLOWPOISON
|
||||
71,0,0,0,10000:20000:30000:40000,0,0,0
|
||||
//-- PR_STRECOVERY
|
||||
@@ -993,7 +993,7 @@
|
||||
//-- NPC_WIDESIGHT
|
||||
669,0,0,0,10000,0,0,-1
|
||||
//-- NPC_EVILLAND
|
||||
670,0,0,0,30000,30000,0,-1
|
||||
670,0,0,0,3500:4500:5500:6500:7500:8500:9500:10500:11500:12500,30000,0,-1
|
||||
//-- NPC_MAGICMIRROR
|
||||
671,0,0,0,30000:30000:30000:30000:30000:2000:2000:2000:2000:2000,0,0,-1
|
||||
//-- NPC_SLOWCAST
|
||||
|
||||
@@ -795,7 +795,7 @@
|
||||
667,0,6,4,0,0x3,2:5:8:11:14,5,1,no,0,0x2,0,none,0,0x0, NPC_WIDECONFUSE,Wide Confusion
|
||||
668,0,6,4,0,0x3,2:5:8:11:14,5,1,no,0,0x2,0,none,0,0x0, NPC_WIDESLEEP,Wide Sleep
|
||||
669,0,6,4,3,0x3,5,1,1,no,0,0x2,0,magic,0,0x0, NPC_WIDESIGHT,Wide Sight
|
||||
670,9,6,2,7,0x91,0,10,1,no,0,0x2,0,magic,0,0x0, NPC_EVILLAND,Evil Land
|
||||
670,7,6,2,7,0xD1,0,10,1,no,0,0x2,0,magic,0,0x0, NPC_EVILLAND,Evil Land
|
||||
671,0,6,4,0,0x1,0,5,1,no,0,0x2,0,magic,0,0x0, NPC_MAGICMIRROR,Magic Mirror
|
||||
672,0,6,4,0,0x3,2:5:8:11:14,5,1,no,0,0x2,0,none,0,0x0, NPC_SLOWCAST,Slow Cast
|
||||
673,-9,6,1,-1,0,0,5,1,no,0,0x2,0,weapon,0,0x0, NPC_CRITICALWOUND,Critical Wounds
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
535,0xbd, , -1, 0, 20,enemy, 0x8010 //NJ_KAENSIN
|
||||
538,0xbb, , 1:1:1:2:2:2:3:3:3:4,0,-1,all,0x8010 //NJ_SUITON
|
||||
541,0x86, , 0, 3:3:4:4:5,1000,enemy, 0x018 //NJ_RAIGEKISAI
|
||||
670,0xc7, , 1, 4:7:10:13:16:19:22:25:28:31,1000,all,0x008 //NPC_EVILLAND
|
||||
670,0xc7, , 1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008 //NPC_EVILLAND
|
||||
|
||||
//706,0xfd, , 0, 0,1000,all, 0x000 //NPC_VENOMFOG
|
||||
|
||||
|
||||
@@ -3332,7 +3332,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
||||
|
||||
// Instant damage
|
||||
if( !dmg.amotion ) {
|
||||
if( (!tsc || (!tsc->data[SC_DEVOTION] && skill_id != CR_REFLECTSHIELD && !tsc->data[SC_WATER_SCREEN_OPTION]) || skill_id == HW_GRAVITATION) && !shadow_flag )
|
||||
if( (!tsc || (!tsc->data[SC_DEVOTION] && skill_id != CR_REFLECTSHIELD && !tsc->data[SC_WATER_SCREEN_OPTION]) || skill_id == HW_GRAVITATION || skill_id == NPC_EVILLAND) && !shadow_flag )
|
||||
status_fix_damage(src,bl,damage,dmg.dmotion); //Deal damage before knockback to allow stuff like firewall+storm gust combo.
|
||||
if( !status_isdead(bl) && additional_effects )
|
||||
skill_additional_effect(src,bl,skill_id,skill_lv,dmg.flag,dmg.dmg_lv,tick);
|
||||
@@ -3355,7 +3355,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
||||
battle_delay_damage(tick, dmg.amotion,src,bl,dmg.flag,skill_id,skill_lv,damage,dmg.dmg_lv,dmg.dmotion, additional_effects);
|
||||
}
|
||||
|
||||
if (tsc && skill_id != PA_PRESSURE && skill_id != HW_GRAVITATION) {
|
||||
if (tsc && skill_id != PA_PRESSURE && skill_id != HW_GRAVITATION && skill_id != NPC_EVILLAND) {
|
||||
if (tsc->data[SC_DEVOTION]) {
|
||||
struct status_change_entry *sce = tsc->data[SC_DEVOTION];
|
||||
struct block_list *d_bl = map_id2bl(sce->val1);
|
||||
@@ -12343,7 +12343,7 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_
|
||||
|
||||
case PR_SANCTUARY:
|
||||
case NPC_EVILLAND:
|
||||
val1=(skill_lv+3)*2;
|
||||
val1=skill_lv+3;
|
||||
break;
|
||||
|
||||
case WZ_FIREPILLAR:
|
||||
@@ -13246,7 +13246,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, uns
|
||||
if( battle_check_undead(tstatus->race, tstatus->def_ele) || tstatus->race==RC_DEMON )
|
||||
{ //Only damage enemies with offensive Sanctuary. [Skotlex]
|
||||
if( battle_check_target(&unit->bl,bl,BCT_ENEMY) > 0 && skill_attack(BF_MAGIC, ss, &unit->bl, bl, sg->skill_id, sg->skill_lv, tick, 0) )
|
||||
sg->val1 -= 2; // reduce healing count if this was meant for damaging [hekate]
|
||||
sg->val1 -= 1; // Reduce the number of targets that can still be hit
|
||||
} else {
|
||||
int heal = skill_calc_heal(ss,bl,sg->skill_id,sg->skill_lv,true);
|
||||
struct mob_data *md = BL_CAST(BL_MOB, bl);
|
||||
@@ -13264,11 +13264,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, uns
|
||||
if( tsc && tsc->data[SC_AKAITSUKI] && heal )
|
||||
heal = ~heal + 1;
|
||||
status_heal(bl, heal, 0, 0);
|
||||
if( diff >= 500 )
|
||||
sg->val1--;
|
||||
}
|
||||
if( sg->val1 <= 0 )
|
||||
skill_delunitgroup(sg);
|
||||
break;
|
||||
|
||||
case UNT_EVILLAND:
|
||||
@@ -17601,9 +17597,6 @@ struct skill_unit_group* skill_initunitgroup(struct block_list* src, int count,
|
||||
|
||||
ud->skillunit[i] = group;
|
||||
|
||||
if (skill_id == PR_SANCTUARY) //Sanctuary starts healing +1500ms after casted. [Skotlex]
|
||||
group->tick += 1500;
|
||||
|
||||
// Stores this new group to DBMap
|
||||
idb_put(skillunit_group_db, group->group_id, group);
|
||||
return group;
|
||||
@@ -18059,6 +18052,11 @@ static int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap)
|
||||
if (unit->val1 <= 0 || unit->val2 <= 0) // Remove the unit only if no HP or hit limit is reached
|
||||
skill_delunit(unit);
|
||||
break;
|
||||
case UNT_SANCTUARY:
|
||||
if (group->val1 <= 0) {
|
||||
skill_delunitgroup(group);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user