summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/script.c5
-rw-r--r--src/map/status.c6
3 files changed, 8 insertions, 4 deletions
diff --git a/src/map/map.h b/src/map/map.h
index 603d21701..0fa350f8b 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -507,6 +507,7 @@ struct map_session_data {
unsigned no_gemstone : 1;
unsigned infinite_endure : 1;
unsigned intravision : 1; // Maya Purple Card effect allowing to see Hiding/Cloaking people [DracoRPG]
+ unsigned changebase : 1; //Specifies when you are wearing a change-base piece of equipment.
} special_state;
int char_id, login_id1, login_id2, sex;
unsigned short class_; //This is the internal job ID used by the map server to simplify comparisons/queries/etc. [Skotlex]
diff --git a/src/map/script.c b/src/map/script.c
index 706408af4..66e77d9c8 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -6335,9 +6335,10 @@ int buildin_changebase(struct script_state *st)
return 0;
}
- //If you are already using a special view (disguises?) prevent overriding it. [Skotlex]
- if (sd->vd.class_ == sd->status.class_)
+ if(!sd->disguise && !sd->special_state.changebase) {
status_set_viewdata(&sd->bl, vclass);
+ sd->special_state.changebase =1; //Character on suit.
+ }
return 0;
}
diff --git a/src/map/status.c b/src/map/status.c
index 7555a25aa..9b7ed47f0 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -627,9 +627,11 @@ int status_calc_pc(struct map_session_data* sd,int first)
b_matk2 = sd->matk2;
b_mdef = sd->mdef;
b_mdef2 = sd->mdef2;
- b_class = sd->vd.class_;
b_base_atk = sd->base_atk;
-
+ b_class = sd->vd.class_;
+ if (sd->special_state.changebase) //Clear suit. (if equipment is still on, vd.class_ will revert back to b_class's value)
+ sd->vd.class_ = sd->status.class_;
+
pc_calc_skilltree(sd); // スキルツリ?の計算
sd->max_weight = max_weight_base[sd->status.class_]+sd->status.str*300;