From afe633e723eec6a856ef2c4675d2e1b69d1fa9f4 Mon Sep 17 00:00:00 2001 From: gumi Date: Mon, 5 Sep 2016 09:30:15 -0400 Subject: add slide buildin --- src/emap/script_buildins.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/emap/script_buildins.c') diff --git a/src/emap/script_buildins.c b/src/emap/script_buildins.c index 75c3308..1acae6b 100644 --- a/src/emap/script_buildins.c +++ b/src/emap/script_buildins.c @@ -2175,3 +2175,27 @@ BUILDIN(input) } return true; } + +BUILDIN(slide) +{ + getSDReturn(false); + const int x = script_getnum(st,2); + const int y = script_getnum(st,3); + const int16 m = sd->bl.m; + + if (x < 0 || x >= map->list[m].xs || y < 0 || y >= map->list[m].ys) + { + ShowError("slide: attempt to place player %s (%d:%d) on invalid coordinates (%d,%d)\n", sd->status.name, sd->status.account_id, sd->status.char_id, x, y); + script->reportsrc(st); + return false; + } + + if (map->getcell(m, &sd->bl, x, y, CELL_CHKNOPASS) && pc_get_group_level(sd) < battle->bc->gm_ignore_warpable_area) + { + return false; + } + + clif->slide(&sd->bl, x, y); + unit->movepos(&sd->bl, x, y, 1, 0); + return true; +} -- cgit v1.2.3-60-g2f50