Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int buildin_mobuseskill_sub(struct block_list *bl,va_list ap)
- {
- TBL_MOB* md = (TBL_MOB*)bl;
- struct block_list *tbl;
- int mobid = va_arg(ap,int);
- int skillid = va_arg(ap,int);
- int skilllv = va_arg(ap,int);
- int casttime = va_arg(ap,int);
- int cancel = va_arg(ap,int);
- int emotion = va_arg(ap,int);
- int target = va_arg(ap,int);
- if( md->class_ != mobid )
- return 0;
- // 0:self, 1:target, 2:master, default:random
- switch( target )
- {
- case 0: tbl = map_id2bl(md->bl.id); break;
- case 1: tbl = map_id2bl(md->target_id); break;
- case 2: tbl = map_id2bl(md->master_id); break;
- default:tbl = battle_getenemy(&md->bl, DEFAULT_ENEMY_TYPE(md),skill_get_range2(&md->bl, skillid, skilllv)); break;
- }
- if( !tbl )
- return 0;
- if( md->ud.skilltimer != INVALID_TIMER ) // Cancel the casting skill.
- unit_skillcastcancel(bl,0);
- if( skill_get_casttype(skillid) == CAST_GROUND )
- unit_skilluse_pos2(&md->bl, tbl->x, tbl->y, skillid, skilllv, casttime, cancel);
- else
- unit_skilluse_id2(&md->bl, tbl->id, skillid, skilllv, casttime, cancel);
- if (emotion >= 0)
- clif_emotion(&md->bl, emotion);
- return 0;
- }
Add Comment
Please, Sign In to add comment