|
@@ -10100,7 +10100,7 @@ static bool clif_process_message(struct map_session_data* sd, bool whisperFormat
|
|
if( is_atcommand( fd, sd, out_message, 1 ) )
|
|
if( is_atcommand( fd, sd, out_message, 1 ) )
|
|
return false;
|
|
return false;
|
|
|
|
|
|
- if (sd->sc.cant.chat)
|
|
|
|
|
|
+ if (sd->sc.cant.chat || (sd->state.block_action & PCBLOCK_CHAT))
|
|
return false; //no "chatting" while muted.
|
|
return false; //no "chatting" while muted.
|
|
|
|
|
|
if( battle_config.min_chat_delay ) { //[Skotlex]
|
|
if( battle_config.min_chat_delay ) { //[Skotlex]
|
|
@@ -11102,6 +11102,11 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
|
|
if (battle_config.idletime_option&IDLE_EMOTION)
|
|
if (battle_config.idletime_option&IDLE_EMOTION)
|
|
sd->idletime = last_tick;
|
|
sd->idletime = last_tick;
|
|
|
|
|
|
|
|
+ if (sd->state.block_action & PCBLOCK_EMOTION) {
|
|
|
|
+ clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
if(battle_config.client_reshuffle_dice && emoticon>=ET_DICE1 && emoticon<=ET_DICE6) {// re-roll dice
|
|
if(battle_config.client_reshuffle_dice && emoticon>=ET_DICE1 && emoticon<=ET_DICE6) {// re-roll dice
|
|
emoticon = rnd()%6+ET_DICE1;
|
|
emoticon = rnd()%6+ET_DICE1;
|
|
}
|
|
}
|
|
@@ -11202,6 +11207,11 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
|
|
)) //No sitting during these states either.
|
|
)) //No sitting during these states either.
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ if (sd->state.block_action & PCBLOCK_SITSTAND) {
|
|
|
|
+ clif_displaymessage(sd->fd, msg_txt(sd,794)); // This action is currently blocked.
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (battle_config.idletime_option&IDLE_SIT)
|
|
if (battle_config.idletime_option&IDLE_SIT)
|
|
sd->idletime = last_tick;
|
|
sd->idletime = last_tick;
|
|
|
|
|
|
@@ -11219,6 +11229,11 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
|
|
if (sd->sc.opt1 && sd->sc.opt1 != OPT1_STONEWAIT && sd->sc.opt1 != OPT1_BURNING)
|
|
if (sd->sc.opt1 && sd->sc.opt1 != OPT1_STONEWAIT && sd->sc.opt1 != OPT1_BURNING)
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ if (sd->state.block_action & PCBLOCK_SITSTAND) {
|
|
|
|
+ clif_displaymessage(sd->fd, msg_txt(sd,794)); // This action is currently blocked.
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (pc_setstand(sd, false)) {
|
|
if (pc_setstand(sd, false)) {
|
|
if (battle_config.idletime_option&IDLE_SIT)
|
|
if (battle_config.idletime_option&IDLE_SIT)
|
|
sd->idletime = last_tick;
|
|
sd->idletime = last_tick;
|
|
@@ -11501,7 +11516,7 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- if ( (!sd->npc_id && pc_istrading(sd)) || sd->chatID )
|
|
|
|
|
|
+ if ( (!sd->npc_id && pc_istrading(sd)) || sd->chatID || (sd->state.block_action & PCBLOCK_USEITEM) )
|
|
return;
|
|
return;
|
|
|
|
|
|
//Whether the item is used or not is irrelevant, the char ain't idle. [Skotlex]
|
|
//Whether the item is used or not is irrelevant, the char ain't idle. [Skotlex]
|
|
@@ -12215,6 +12230,9 @@ void clif_parse_skill_toid( struct map_session_data* sd, uint16 skill_id, uint16
|
|
if (inf&INF_GROUND_SKILL || !inf)
|
|
if (inf&INF_GROUND_SKILL || !inf)
|
|
return; //Using a ground/passive skill on a target? WRONG.
|
|
return; //Using a ground/passive skill on a target? WRONG.
|
|
|
|
|
|
|
|
+ if (sd->state.block_action & PCBLOCK_SKILL)
|
|
|
|
+ return;
|
|
|
|
+
|
|
if( SKILL_CHK_HOMUN(skill_id) ) {
|
|
if( SKILL_CHK_HOMUN(skill_id) ) {
|
|
clif_parse_UseSkillToId_homun(sd->hd, sd, tick, skill_id, skill_lv, target_id);
|
|
clif_parse_UseSkillToId_homun(sd->hd, sd, tick, skill_id, skill_lv, target_id);
|
|
return;
|
|
return;
|
|
@@ -12328,6 +12346,9 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
|
|
if( !(skill_get_inf(skill_id)&INF_GROUND_SKILL) )
|
|
if( !(skill_get_inf(skill_id)&INF_GROUND_SKILL) )
|
|
return; //Using a target skill on the ground? WRONG.
|
|
return; //Using a target skill on the ground? WRONG.
|
|
|
|
|
|
|
|
+ if (sd->state.block_action & PCBLOCK_SKILL)
|
|
|
|
+ return;
|
|
|
|
+
|
|
if( SKILL_CHK_HOMUN(skill_id) ) {
|
|
if( SKILL_CHK_HOMUN(skill_id) ) {
|
|
clif_parse_UseSkillToPos_homun(sd->hd, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
|
|
clif_parse_UseSkillToPos_homun(sd->hd, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
|
|
return;
|
|
return;
|