diff options
-rw-r--r-- | Changelog-Trunk.txt | 3 | ||||
-rw-r--r-- | src/map/mob.c | 3 | ||||
-rw-r--r-- | src/map/skill.c | 2 | ||||
-rw-r--r-- | src/map/status.c | 3 |
4 files changed, 8 insertions, 3 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index bba7366c2..0baeab557 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/06/05
+ * Fixed a crash when using SL_SMA and the "combo" ain't ready. [Skotlex]
+ * Hopefully fixed changing a mob's class causing them to get all sort of
+ stat bonuses due to the mobs-level-up setting. [Skotlex]
* Changed hit, flee, cri, flee2, def2 and mdef2 to signed short, def, mdef
to signed char to correctly account for cards with penalties in said stats.
[Skotlex]
diff --git a/src/map/mob.c b/src/map/mob.c index 8968136dd..5dd5008ff 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2241,6 +2241,7 @@ int mob_class_change (struct mob_data *md, int class_) hp_rate = md->status.hp*100/md->status.max_hp; md->db = mob_db(class_); + md->level = md->db->lv; //Also reset their level. if (battle_config.override_mob_names==1) memcpy(md->name,md->db->name,NAME_LENGTH-1); @@ -2252,7 +2253,7 @@ int mob_class_change (struct mob_data *md, int class_) unit_skillcastcancel(&md->bl, 0); status_set_viewdata(&md->bl, class_); clif_mob_class_change(md,class_); - status_calc_mob(md, 1); + status_calc_mob(md, 3); if (battle_config.monster_class_change_full_recover) { memset(md->dmglog, 0, sizeof(md->dmglog)); diff --git a/src/map/skill.c b/src/map/skill.c index 2a0f04527..7a667bf22 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7790,7 +7790,7 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ break; case SL_SMA: if(type) break; //Only do the combo check when the target is selected (type == 0) - if(!sd || sc->data[SC_SMA].timer == -1) + if(!sc || sc->data[SC_SMA].timer == -1) return 0; break; diff --git a/src/map/status.c b/src/map/status.c index 332fddc59..ec809ec60 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1006,6 +1006,7 @@ void status_calc_misc(struct status_data *status, int level) //Skotlex: Calculates the initial status for the given mob //first will only be false when the mob leveled up or got a GuardUp level. +//first&2: Class-change invoked. int status_calc_mob(struct mob_data* md, int first) { struct status_data *status; @@ -1014,7 +1015,7 @@ int status_calc_mob(struct mob_data* md, int first) if(first) { //Set basic level on respawn. - if (md->spawn) + if (md->spawn && !(flag&2)) md->level = md->spawn->level; else md->level = md->db->lv; // [Valaris] |