|
@@ -1209,7 +1209,7 @@ int pc_disguise(struct map_session_data *sd, int class_)
|
|
|
{
|
|
|
if (!class_ && !sd->disguise)
|
|
|
return 0;
|
|
|
- if (class_ && (sd->disguise == class_ || pc_isriding(sd)))
|
|
|
+ if (class_ && sd->disguise == class_)
|
|
|
return 0;
|
|
|
|
|
|
if(sd->sc.option&OPTION_INVISIBLE)
|
|
@@ -1217,9 +1217,11 @@ int pc_disguise(struct map_session_data *sd, int class_)
|
|
|
sd->disguise = class_; //viewdata is set on uncloaking.
|
|
|
return 2;
|
|
|
}
|
|
|
-
|
|
|
- pc_stop_walking(sd, 0);
|
|
|
- clif_clearunit_area(&sd->bl, 0);
|
|
|
+
|
|
|
+ if (sd->bl.prev != NULL) {
|
|
|
+ pc_stop_walking(sd, 0);
|
|
|
+ clif_clearunit_area(&sd->bl, 0);
|
|
|
+ }
|
|
|
|
|
|
if (!class_) {
|
|
|
sd->disguise = 0;
|
|
@@ -1229,13 +1231,15 @@ int pc_disguise(struct map_session_data *sd, int class_)
|
|
|
|
|
|
status_set_viewdata(&sd->bl, class_);
|
|
|
clif_changeoption(&sd->bl);
|
|
|
- clif_spawn(&sd->bl);
|
|
|
- if (class_ == sd->status.class_ && pc_iscarton(sd))
|
|
|
- { //It seems the cart info is lost on undisguise.
|
|
|
- clif_cartlist(sd);
|
|
|
- clif_updatestatus(sd,SP_CARTINFO);
|
|
|
- }
|
|
|
|
|
|
+ if (sd->bl.prev != NULL) {
|
|
|
+ clif_spawn(&sd->bl);
|
|
|
+ if (class_ == sd->status.class_ && pc_iscarton(sd))
|
|
|
+ { //It seems the cart info is lost on undisguise.
|
|
|
+ clif_cartlist(sd);
|
|
|
+ clif_updatestatus(sd,SP_CARTINFO);
|
|
|
+ }
|
|
|
+ }
|
|
|
return 1;
|
|
|
}
|
|
|
|