|
@@ -2033,6 +2033,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
|
|
case SC_ENTRY_QUEUE_APPLY_DELAY: case SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT:
|
|
case SC_ENTRY_QUEUE_APPLY_DELAY: case SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT:
|
|
case SC_REUSE_LIMIT_LUXANIMA: case SC_LUXANIMA: case SC_SOULENERGY:
|
|
case SC_REUSE_LIMIT_LUXANIMA: case SC_LUXANIMA: case SC_SOULENERGY:
|
|
case SC_EP16_2_BUFF_SS: case SC_EP16_2_BUFF_SC: case SC_EP16_2_BUFF_AC:
|
|
case SC_EP16_2_BUFF_SS: case SC_EP16_2_BUFF_SC: case SC_EP16_2_BUFF_AC:
|
|
|
|
+ case SC_EMERGENCY_MOVE:
|
|
continue;
|
|
continue;
|
|
case SC_WHISTLE: case SC_ASSNCROS: case SC_POEMBRAGI:
|
|
case SC_WHISTLE: case SC_ASSNCROS: case SC_POEMBRAGI:
|
|
case SC_APPLEIDUN: case SC_HUMMING: case SC_DONTFORGETME:
|
|
case SC_APPLEIDUN: case SC_HUMMING: case SC_DONTFORGETME:
|
|
@@ -8473,6 +8474,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
case SC_LHZ_DUN_N1: case SC_LHZ_DUN_N2: case SC_LHZ_DUN_N3: case SC_LHZ_DUN_N4:
|
|
case SC_LHZ_DUN_N1: case SC_LHZ_DUN_N2: case SC_LHZ_DUN_N3: case SC_LHZ_DUN_N4:
|
|
case SC_REUSE_LIMIT_LUXANIMA: case SC_LUXANIMA: case SC_SOULENERGY:
|
|
case SC_REUSE_LIMIT_LUXANIMA: case SC_LUXANIMA: case SC_SOULENERGY:
|
|
case SC_EP16_2_BUFF_SS: case SC_EP16_2_BUFF_SC: case SC_EP16_2_BUFF_AC:
|
|
case SC_EP16_2_BUFF_SS: case SC_EP16_2_BUFF_SC: case SC_EP16_2_BUFF_AC:
|
|
|
|
+ case SC_EMERGENCY_MOVE:
|
|
continue;
|
|
continue;
|
|
case SC_WHISTLE:
|
|
case SC_WHISTLE:
|
|
case SC_ASSNCROS:
|
|
case SC_ASSNCROS:
|
|
@@ -9342,6 +9344,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
case GD_BATTLEORDER:
|
|
case GD_BATTLEORDER:
|
|
case GD_REGENERATION:
|
|
case GD_REGENERATION:
|
|
case GD_RESTORE:
|
|
case GD_RESTORE:
|
|
|
|
+ case GD_EMERGENCY_MOVE:
|
|
if(flag&1) {
|
|
if(flag&1) {
|
|
if (status_get_guild_id(src) == status_get_guild_id(bl)) {
|
|
if (status_get_guild_id(src) == status_get_guild_id(bl)) {
|
|
if( skill_id == GD_RESTORE )
|
|
if( skill_id == GD_RESTORE )
|
|
@@ -9356,7 +9359,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
src,skill_id,skill_lv,tick, flag|BCT_GUILD|1,
|
|
src,skill_id,skill_lv,tick, flag|BCT_GUILD|1,
|
|
skill_castend_nodamage_id);
|
|
skill_castend_nodamage_id);
|
|
if (sd)
|
|
if (sd)
|
|
- guild_block_skill(sd,skill_get_time2(skill_id,skill_lv));
|
|
|
|
|
|
+#ifdef RENEWAL
|
|
|
|
+ skill_blockpc_start(sd, skill_id, skill_get_cooldown(skill_id, skill_lv));
|
|
|
|
+#else
|
|
|
|
+ guild_block_skill(sd, skill_get_time2(skill_id, skill_lv));
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case GD_EMERGENCYCALL:
|
|
case GD_EMERGENCYCALL:
|
|
@@ -9395,9 +9402,39 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (sd)
|
|
if (sd)
|
|
- guild_block_skill(sd,skill_get_time2(skill_id,skill_lv));
|
|
|
|
|
|
+#ifdef RENEWAL
|
|
|
|
+ skill_blockpc_start(sd, skill_id, skill_get_cooldown(skill_id, skill_lv));
|
|
|
|
+#else
|
|
|
|
+ guild_block_skill(sd, skill_get_time2(skill_id, skill_lv));
|
|
|
|
+#endif
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case GD_CHARGESHOUT_FLAG:
|
|
|
|
+ if (sd && sd->guild && sd->state.gmaster_flag == 1) {
|
|
|
|
+ mob_data *md = mob_once_spawn_sub(src, src->m, src->x, src->y, sd->guild->name, MOBID_GUILD_SKILL_FLAG, nullptr, SZ_SMALL, AI_GUILD);
|
|
|
|
+
|
|
|
|
+ if (md) {
|
|
|
|
+ sd->guild->chargeshout_flag_id = md->bl.id;
|
|
|
|
+ md->master_id = src->id;
|
|
|
|
+
|
|
|
|
+ if (md->deletetimer != INVALID_TIMER)
|
|
|
|
+ delete_timer(md->deletetimer, mob_timer_delete);
|
|
|
|
+ md->deletetimer = add_timer(gettick() + skill_get_time(GD_CHARGESHOUT_FLAG, skill_lv), mob_timer_delete, md->bl.id, 0);
|
|
|
|
+ mob_spawn(md);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case GD_CHARGESHOUT_BEATING:
|
|
|
|
+ if (sd && sd->guild && map_blid_exists(sd->guild->chargeshout_flag_id)) {
|
|
|
|
+ block_list *mob_bl = map_id2bl(sd->guild->chargeshout_flag_id);
|
|
|
|
+
|
|
|
|
+ if (pc_setpos(sd, map_id2index(mob_bl->m), mob_bl->x, mob_bl->y, CLR_RESPAWN) != SETPOS_OK)
|
|
|
|
+ clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
|
|
|
|
+ else
|
|
|
|
+ clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
|
|
|
+ } else
|
|
|
|
+ clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
|
|
|
|
+ break;
|
|
|
|
|
|
case SG_FEEL:
|
|
case SG_FEEL:
|
|
//AuronX reported you CAN memorize the same map as all three. [Skotlex]
|
|
//AuronX reported you CAN memorize the same map as all three. [Skotlex]
|
|
@@ -9967,6 +10004,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
case SC_ENTRY_QUEUE_APPLY_DELAY: case SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT:
|
|
case SC_ENTRY_QUEUE_APPLY_DELAY: case SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT:
|
|
case SC_REUSE_LIMIT_LUXANIMA: case SC_LUXANIMA: case SC_SOULENERGY:
|
|
case SC_REUSE_LIMIT_LUXANIMA: case SC_LUXANIMA: case SC_SOULENERGY:
|
|
case SC_EP16_2_BUFF_SS: case SC_EP16_2_BUFF_SC: case SC_EP16_2_BUFF_AC:
|
|
case SC_EP16_2_BUFF_SS: case SC_EP16_2_BUFF_SC: case SC_EP16_2_BUFF_AC:
|
|
|
|
+ case SC_EMERGENCY_MOVE:
|
|
continue;
|
|
continue;
|
|
case SC_ASSUMPTIO:
|
|
case SC_ASSUMPTIO:
|
|
if( bl->type == BL_MOB )
|
|
if( bl->type == BL_MOB )
|
|
@@ -15894,6 +15932,9 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
|
case GD_BATTLEORDER:
|
|
case GD_BATTLEORDER:
|
|
case GD_REGENERATION:
|
|
case GD_REGENERATION:
|
|
case GD_RESTORE:
|
|
case GD_RESTORE:
|
|
|
|
+ case GD_CHARGESHOUT_FLAG:
|
|
|
|
+ case GD_CHARGESHOUT_BEATING:
|
|
|
|
+ case GD_EMERGENCY_MOVE:
|
|
if (!map_flag_gvg2(sd->bl.m)) {
|
|
if (!map_flag_gvg2(sd->bl.m)) {
|
|
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
|
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
|
return false;
|
|
return false;
|
|
@@ -15901,7 +15942,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
|
case GD_EMERGENCYCALL:
|
|
case GD_EMERGENCYCALL:
|
|
case GD_ITEMEMERGENCYCALL:
|
|
case GD_ITEMEMERGENCYCALL:
|
|
// other checks were already done in skill_isNotOk()
|
|
// other checks were already done in skill_isNotOk()
|
|
- if (!sd->status.guild_id || !sd->state.gmaster_flag)
|
|
|
|
|
|
+ if (!sd->status.guild_id || (sd->state.gmaster_flag == 0 && skill_id != GD_CHARGESHOUT_BEATING))
|
|
return false;
|
|
return false;
|
|
break;
|
|
break;
|
|
|
|
|