Index: src/map/script.c =================================================================== --- src/map/script.c (revision 17322) +++ src/map/script.c (working copy) @@ -15156,21 +15156,50 @@ return 0; } -/* Work In Progress [Lupus] BUILDIN_FUNC(addmonsterdrop) { - int class_,item_id,chance; - class_=script_getnum(st,2); + struct mob_db *mob; + int item_id,rate,i,c = 0; + + mob = mob_db(script_getnum(st,2)); + item_id=script_getnum(st,3); - chance=script_getnum(st,4); - if(class_>1000 && item_id>500 && chance>0) { - script_pushint(st,1); - } else { - script_pushint(st,0); + rate=script_getnum(st,4); + + if(!itemdb_exists(item_id)){ + ShowError("addmonsterdrop: Nonexistant item %d requested.\n", item_id ); + return 1; } + + if(mob) { //We got a valid monster, check for available drop slot + for(i = 0; i < MAX_MOB_DROP; i++) { + if(mob->dropitem[i].nameid) { + if(mob->dropitem[i].nameid == item_id) { //If it equals item_id we update that drop + c = i; + break; + } + continue; + } + c = i; + } + if(c) { //Fill in the slot with the item and rate + mob->dropitem[c].nameid = item_id; + mob->dropitem[c].p = (rate > 10000)?10000:rate; + } + else //No place to put the new drop + return 0; + } + else { + ShowWarning("addmonsterdrop: bad mob id given %d\n",script_getnum(st,2)); + return 1; + } + + script_pushint(st,1); + return 0; + } -BUILDIN_FUNC(delmonsterdrop) +/*BUILDIN_FUNC(delmonsterdrop) { int class_,item_id; class_=script_getnum(st,2); @@ -18051,6 +18080,7 @@ BUILDIN_DEF(disguise,"i"), //disguise player. Lupus BUILDIN_DEF(undisguise,""), //undisguise player. Lupus BUILDIN_DEF(getmonsterinfo,"ii"), //Lupus + BUILDIN_DEF(addmonsterdrop,"iii"), //Akinari [Lupus] BUILDIN_DEF(axtoi,"s"), BUILDIN_DEF(query_sql,"s*"), BUILDIN_DEF(query_logsql,"s*"),