From 1181f3ea7d249ef2e1d6571e803940a95d03ffa0 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 12 Apr 2006 02:55:39 +0000 Subject: - Added special_state changebase to identify when a character has a special-view associated with some equipment to correctly revert the look when you take off said equipment (fixes tuxedo/wedding dress when you use modify_wedding_display: yes) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6002 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/map.h | 1 + src/map/script.c | 5 +++-- src/map/status.c | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) (limited to 'src') 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; -- cgit v1.2.3-70-g09d2