From c58f741a0f2b807cbeb065c2dbbfe4f86dfb95b2 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Fri, 22 Mar 2013 03:34:40 -0300 Subject: Adding itemeffect script command as per Script Dev Streusel request. Originally 'consumeitem', renamed for we thought the name was misleading (since it didn't consume anything). Merged from rAthena - lemongrass3110 Signed-off-by: shennetsind --- src/map/script.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index cd5a1a324..4c913651a 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -9557,6 +9557,44 @@ static int buildin_announce_sub(struct block_list *bl, va_list ap) clif_broadcast(bl, mes, len, type, SELF); return 0; } +/* Runs item effect on attached character. + * consumeitem ; + * consumeitem ""; */ +BUILDIN_FUNC(itemeffect) { + TBL_NPC *nd; + TBL_PC *sd; + struct script_data *data; + struct item_data *item_data; + + nullpo_retr( 1, ( sd = script_rid2sd( st ) ) ); + nullpo_retr( 1, ( nd = (TBL_NPC *)map_id2bl( sd->npc_id ) ) ); + + data = script_getdata( st, 2 ); + get_val( st, data ); + + if( data_isstring( data ) ){ + const char *name = conv_str( st, data ); + + if( ( item_data = itemdb_searchname( name ) ) == NULL ){ + ShowError( "buildin_itemeffect: Nonexistant item %s requested.\n", name ); + return 1; + } + }else if( data_isint( data ) ){ + int nameid = conv_num( st, data ); + + if( ( item_data = itemdb_exists( nameid ) ) == NULL ){ + ShowError("buildin_itemeffect: Nonexistant item %d requested.\n", nameid ); + return 1; + } + }else{ + ShowError("buildin_itemeffect: invalid data type for argument #1 (%d).", data->type ); + return 1; + } + + run_script( item_data->script, 0, sd->bl.id, nd->bl.id ); + + return 0; +} BUILDIN_FUNC(mapannounce) { @@ -17784,6 +17822,7 @@ struct script_function buildin_func[] = { BUILDIN_DEF(cleanmap,"s"), BUILDIN_DEF2(cleanmap,"cleanarea","siiii"), BUILDIN_DEF(npcskill,"viii"), + BUILDIN_DEF(itemeffect,"v"), /** * @commands (script based) **/ -- cgit v1.2.3-60-g2f50