summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-06-05 23:01:06 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-06-05 23:01:06 +0000
commitbc4983ea0bac63948d231446825ca4c00c3eeeee (patch)
tree83e9d2289a286c5fe863354c5f1b5158903042bd /src/map
parentb3391c0862bcd0416145f24bfa5687d950eb9bea (diff)
downloadhercules-bc4983ea0bac63948d231446825ca4c00c3eeeee.tar.gz
hercules-bc4983ea0bac63948d231446825ca4c00c3eeeee.tar.bz2
hercules-bc4983ea0bac63948d231446825ca4c00c3eeeee.tar.xz
hercules-bc4983ea0bac63948d231446825ca4c00c3eeeee.zip
- Fixed a crash when using SL_SMA and the "combo" ain't ready.
- Hopefully fixed changing a mob's class causing them to get all sort of stat bonuses due to the mobs-level-up setting. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6994 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/mob.c3
-rw-r--r--src/map/skill.c2
-rw-r--r--src/map/status.c3
3 files changed, 5 insertions, 3 deletions
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]