Updated getunitdata / setunitdata (#3029)

Added the possibility to retrieve / change the current target id of a Mob, Homunculus, Mercenary and Elemental through getunitdata / setunitdata
This commit is contained in:
Atemo
2018-04-10 00:23:22 +02:00
committed by Lemongrass3110
parent f948b9a665
commit cdae404e6a
4 changed files with 53 additions and 0 deletions

View File

@@ -17571,6 +17571,7 @@ BUILDIN_FUNC(getunitdata)
getunitdata_sub(UMOB_AMOTION, md->status.amotion);
getunitdata_sub(UMOB_ADELAY, md->status.adelay);
getunitdata_sub(UMOB_DMOTION, md->status.dmotion);
getunitdata_sub(UMOB_TARGETID, md->target_id);
break;
case BL_HOM:
@@ -17617,6 +17618,7 @@ BUILDIN_FUNC(getunitdata)
getunitdata_sub(UHOM_AMOTION, hd->battle_status.amotion);
getunitdata_sub(UHOM_ADELAY, hd->battle_status.adelay);
getunitdata_sub(UHOM_DMOTION, hd->battle_status.dmotion);
getunitdata_sub(UHOM_TARGETID, hd->ud.target);
break;
case BL_PET:
@@ -17704,6 +17706,7 @@ BUILDIN_FUNC(getunitdata)
getunitdata_sub(UMER_AMOTION, mc->base_status.amotion);
getunitdata_sub(UMER_ADELAY, mc->base_status.adelay);
getunitdata_sub(UMER_DMOTION, mc->base_status.dmotion);
getunitdata_sub(UMER_TARGETID, mc->ud.target);
break;
case BL_ELEM:
@@ -17749,6 +17752,7 @@ BUILDIN_FUNC(getunitdata)
getunitdata_sub(UELE_AMOTION, ed->base_status.amotion);
getunitdata_sub(UELE_ADELAY, ed->base_status.adelay);
getunitdata_sub(UELE_DMOTION, ed->base_status.dmotion);
getunitdata_sub(UELE_TARGETID, ed->ud.target);
break;
case BL_NPC:
@@ -17944,6 +17948,15 @@ BUILDIN_FUNC(setunitdata)
case UMOB_AMOTION: md->base_status->amotion = (short)value; calc_status = true; break;
case UMOB_ADELAY: md->base_status->adelay = (short)value; calc_status = true; break;
case UMOB_DMOTION: md->base_status->dmotion = (short)value; calc_status = true; break;
case UMOB_TARGETID: {
struct block_list* target = map_id2bl(value);
if (!target) {
ShowWarning("buildin_setunitdata: Error in finding target for BL_MOB!\n");
return SCRIPT_CMD_FAILURE;
}
mob_target(md,target,0);
break;
}
default:
ShowError("buildin_setunitdata: Unknown data identifier %d for BL_MOB.\n", type);
return SCRIPT_CMD_FAILURE;
@@ -17997,6 +18010,15 @@ BUILDIN_FUNC(setunitdata)
case UHOM_AMOTION: hd->base_status.amotion = (short)value; calc_status = true; break;
case UHOM_ADELAY: hd->base_status.adelay = (short)value; calc_status = true; break;
case UHOM_DMOTION: hd->base_status.dmotion = (short)value; calc_status = true; break;
case UHOM_TARGETID: {
struct block_list* target = map_id2bl(value);
if (!target) {
ShowWarning("buildin_setunitdata: Error in finding target for BL_HOM!\n");
return SCRIPT_CMD_FAILURE;
}
unit_attack(&hd->bl, target->id, 1);
break;
}
default:
ShowError("buildin_setunitdata: Unknown data identifier %d for BL_HOM.\n", type);
return SCRIPT_CMD_FAILURE;
@@ -18096,6 +18118,15 @@ BUILDIN_FUNC(setunitdata)
case UMER_AMOTION: mc->base_status.amotion = (short)value; calc_status = true; break;
case UMER_ADELAY: mc->base_status.adelay = (short)value; calc_status = true; break;
case UMER_DMOTION: mc->base_status.dmotion = (short)value; calc_status = true; break;
case UMER_TARGETID: {
struct block_list* target = map_id2bl(value);
if (!target) {
ShowWarning("buildin_setunitdata: Error in finding target for BL_MER!\n");
return SCRIPT_CMD_FAILURE;
}
unit_attack(&mc->bl, target->id, 1);
break;
}
default:
ShowError("buildin_setunitdata: Unknown data identifier %d for BL_MER.\n", type);
return SCRIPT_CMD_FAILURE;
@@ -18148,6 +18179,16 @@ BUILDIN_FUNC(setunitdata)
case UELE_AMOTION: ed->base_status.amotion = (short)value; calc_status = true; break;
case UELE_ADELAY: ed->base_status.adelay = (short)value; calc_status = true; break;
case UELE_DMOTION: ed->base_status.dmotion = (short)value; calc_status = true; break;
case UELE_TARGETID: {
struct block_list* target = map_id2bl(value);
if (!target) {
ShowWarning("buildin_setunitdata: Error in finding target for BL_ELEM!\n");
return SCRIPT_CMD_FAILURE;
}
elemental_change_mode(ed, static_cast<e_mode>(EL_MODE_AGGRESSIVE));
unit_attack(&ed->bl, target->id, 1);
break;
}
default:
ShowError("buildin_setunitdata: Unknown data identifier %d for BL_ELEM.\n", type);
return SCRIPT_CMD_FAILURE;