Updated get_bosstype and UMOB_MODE (#8439)

* Updated mob_data::get_bosstype() to use current mob data instead of db data to fix issue when the mode is changed via the setunitdata script command.
* Added unit_refresh in UMOB_MODE to refresh the mini icon near the monster indicating the monster type.
This commit is contained in:
Atemo 2024-06-17 19:38:00 +02:00 committed by GitHub
parent 44fbe3940d
commit ce5de23874
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 3 deletions

View File

@ -377,8 +377,10 @@ e_mob_bosstype s_mob_db::get_bosstype(){
}
e_mob_bosstype mob_data::get_bosstype(){
if( this->db != nullptr ){
return this->db->get_bosstype();
if( status_has_mode( &this->status, MD_MVP ) ){
return BOSSTYPE_MVP;
}else if( this->status.class_ == CLASS_BOSS ){
return BOSSTYPE_MINIBOSS;
}else{
return BOSSTYPE_NONE;
}

View File

@ -19264,7 +19264,12 @@ BUILDIN_FUNC(setunitdata)
case UMOB_X: if (!unit_walktoxy(bl, (short)value, md->bl.y, 2)) unit_movepos(bl, (short)value, md->bl.y, 0, 0); break;
case UMOB_Y: if (!unit_walktoxy(bl, md->bl.x, (short)value, 2)) unit_movepos(bl, md->bl.x, (short)value, 0, 0); break;
case UMOB_SPEED: md->base_status->speed = (unsigned short)value; status_calc_misc(bl, &md->status, md->level); calc_status = true; break;
case UMOB_MODE: md->base_status->mode = (enum e_mode)value; calc_status = true; break;
case UMOB_MODE:
md->base_status->mode = (enum e_mode)value;
// Mob mode must be updated before calling unit_refresh
status_calc_bl_(&md->bl, status_db.getSCB_BATTLE());
unit_refresh(bl);
break;
case UMOB_AI: md->special_state.ai = (enum mob_ai)value; break;
case UMOB_SCOPTION: md->sc.option = (unsigned short)value; break;
case UMOB_SEX: md->vd->sex = (char)value; unit_refresh(bl); break;