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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user