summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpanikon <panikon@zoho.com>2014-04-04 23:44:20 -0300
committerpanikon <panikon@zoho.com>2014-04-04 23:44:20 -0300
commit94ef1ee7bbea5dbdfcc6e96adf87a6262bb3ccdb (patch)
tree0eb22c142ee1bdec5477d285577e18946594d8b8 /src
parent694d32a550e8841a6ed6c237880e3d5005e6208d (diff)
downloadhercules-94ef1ee7bbea5dbdfcc6e96adf87a6262bb3ccdb.tar.gz
hercules-94ef1ee7bbea5dbdfcc6e96adf87a6262bb3ccdb.tar.bz2
hercules-94ef1ee7bbea5dbdfcc6e96adf87a6262bb3ccdb.tar.xz
hercules-94ef1ee7bbea5dbdfcc6e96adf87a6262bb3ccdb.zip
Fixed issue: 8131
http://hercules.ws/board/tracker/issue-8131-sc-chat/ -Documented SC_NOCHAT -Corrected the way that pc_setparam was handling SP_MANNER -Added documentation on *sc_status regarding SC_NOCHAT, to mute a user via script you should set Manner
Diffstat (limited to 'src')
-rw-r--r--src/common/mmo.h2
-rw-r--r--src/map/pc.c8
-rw-r--r--src/map/script.c2
-rw-r--r--src/map/status.c5
4 files changed, 13 insertions, 4 deletions
diff --git a/src/common/mmo.h b/src/common/mmo.h
index cf3933d40..019472acb 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -392,7 +392,7 @@ struct mmo_charstatus {
unsigned int status_point,skill_point;
int hp,max_hp,sp,max_sp;
unsigned int option;
- short manner;
+ short manner; // Defines how many minutes a char will be muted, each negative point is equivalent to a minute.
unsigned char karma;
short hair,hair_color,clothes_color;
int party_id,guild_id,pet_id,hom_id,mer_id,ele_id;
diff --git a/src/map/pc.c b/src/map/pc.c
index b6964fc6e..42b79ed92 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -7466,7 +7466,13 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
break;
case SP_MANNER:
sd->status.manner = val;
- break;
+ if( val < 0 )
+ sc_start(NULL, &sd->bl, SC_NOCHAT, 100, 0, 0);
+ else {
+ status_change_end(&sd->bl, SC_NOCHAT, INVALID_TIMER);
+ clif->manner_message(sd, 5);
+ }
+ return 1; // status_change_start/status_change_end already sends packets warning the client
case SP_FAME:
sd->status.fame = val;
break;
diff --git a/src/map/script.c b/src/map/script.c
index 296008536..312e40696 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -8687,7 +8687,7 @@ BUILDIN(savepoint) {
sd = script->rid2sd(st);
if( sd == NULL )
- return true;// no player attached, report source
+ return false;// no player attached, report source
str = script_getstr(st,2);
x = script_getnum(st,3);
diff --git a/src/map/status.c b/src/map/status.c
index fdbafd6b0..460af3179 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -7755,7 +7755,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
unit->stop_attack(bl);
break;
case SC_NOCHAT:
- // [GodLesZ] FIXME: is this correct? a hardcoded interval of 60sec? what about configuration ?_?
+ // A hardcoded interval of 60 seconds is expected, as the time that SC_NOCHAT uses is defined by
+ // mmocharstatus.manner, each negative point results in 1 minute with this status activated
+ // This is done this way because the message that the client displays is hardcoded, and only
+ // shows how many minutes are remaining. [Panikon]
tick = 60000;
val1 = battle_config.manner_system; //Mute filters.
if (sd)