/*========================================== * Puts homunculus into morph state * and gives ITEMID_STRANGE_EMBRYO. *------------------------------------------*/ BUILDIN_FUNC(morphembryo) { struct item item_tmp; int m_class, i=0; TBL_PC *sd; sd = script_rid2sd(st); if( sd == NULL || sd->hd == NULL ) return 0; if( merc_is_hom_active(sd->hd) ) { m_class = hom_class2mapid(sd->hd->homunculus.class_); if ( m_class != -1 && m_class&HOM_EVO && sd->hd->homunculus.level >= 99 ) { memset(&item_tmp, 0, sizeof(item_tmp)); item_tmp.nameid = ITEMID_STRANGE_EMBRYO; item_tmp.identify = 1; if( item_tmp.nameid == 0 || (i = pc_additem(sd, &item_tmp, 1, LOG_TYPE_SCRIPT)) ) { clif_additem(sd, 0, 0, i); clif_emotion(&sd->bl, E_SWT); // Fail to avoid item drop exploit. } else { merc_hom_vaporize(sd, HOM_ST_MORPH); script_pushint(st, 1); return 0; } } else clif_emotion(&sd->hd->bl, E_SWT); } else clif_emotion(&sd->bl, E_SWT); script_pushint(st, 0); return 0; } BUILDIN_FUNC(checkhomcall) { TBL_PC *sd = script_rid2sd(st); TBL_HOM *hd; if( sd == NULL ) return 0; hd = sd->hd; if( !hd ) script_pushint(st, -1); else script_pushint(st, hd->homunculus.vaporize); return 0; }