사이트 로그인
2016.03.30 07:37
도약몬스터 관련 예제
mob 발투란서장군 {
set @id, objid();
set @target, obj_getfront;
if(mob_checkmagicid(@id, name2spellid("침묵"))) end;
if(mob_checkmagicid(@id, name2spellid("경직"))) end;
if(istype(@id) == 2)
{
if(get_mobhp(@id) < 80000000)
{
effect @id, 65;
sound @id, 0, 559;
heal_hp @id, get_mobhp(@id) / 100;
}
}
if(@target > 0 && istype(@target) == 1)
{
set @target_sd, id2sd(@target);
set @back_damage, get_maxhp(@target_sd) / 4;
effect @target, 396;
sound @target, 0, 568;
set @Mob_Name$, "발투란서장군";
set @M_Name$, "발투란격투술";
if(istype(@target) != 0 ) callfunc "DEFEN_Magic", @target;
if(istype(@target) != 0 ) callfunc "M_damage", @id, @target, @back_damage;
end;
}
else
{
set @ture_target, get_mobtarget(@id);
set @target, 0;
if(@ture_target > 0 && istype(@ture_target) == 1)
{
set @target_sd, id2sd(@ture_target);
runscript @target_sd, "Prio";
sleep 100;
if(istype(@ture_target) == 1)
set @target, get_uservar_i(@target_sd, "$mob_target");
}
if(@target == 0) end;
if(istype(@target) == 1)
{
set_mobtarget @id, @target;
set @target_sd, id2sd(@target);
runscript @target_sd, "Canmove";
callfunc "M_도약", @id, @target;
}
}
}
script Prio {
set @sd, mysd();
set @id, myid();
set @x1, get_x(@id) - 7;
set @x2, get_x(@id) + 7;
set @y1, get_y(@id) - 7;
set @y2, get_y(@id) + 7;
if (@x1 < 0) { set @x1, 0; }
if (@x2 > get_mapwidth(@sd) -1) { set @x2, get_mapwidth(@sd) -1; }
if (@y1 < 0) { set @y1, 0; }
if (@y2 > get_mapheight(@sd)-1) { set @y2, get_mapheight(@sd) -1; }
for(set @i, @x1; @i < @x2; set @i, @i + 1)
{
for(set @j, @y1; @j < @y2; set @j, @j + 1)
{
set @target, obj_getxy(@i, @j);
if(@target > 0 && @target != @id)
{
if(istype(@target) == 1)
{
set @target_sd, id2sd(@target);
if(get_state(@target_sd) != 1 && get_job(@target_sd) == 4)
{
set $mob_target, @target;
end;
}
}
}
}
}
set $mob_target, @id;
}
script Canmove {
set @sd, mysd();
set @id, myid();
set @mapid, get_mapid(@sd);
set @x, get_x(@id);
set @y, get_y(@id);
set @xyck, obj_getxy(@x, @y-1);
if(@xyck == 0)
set $can0, canmove(@mapid, @x, @y-1);
else
set $can0, -1;
set @xyck, obj_getxy(@x+1, @y);
if(@xyck == 0)
set $can1, canmove(@mapid, @x+1, @y);
else
set $can1, -1;
set @xyck, obj_getxy(@x, @y+1);
if(@xyck == 0)
set $can2, canmove(@mapid, @x, @y+1);
else
set $can2, -1;
set @xyck, obj_getxy(@x-1, @y);
if(@xyck == 0)
set $can3, canmove(@mapid, @x-1, @y);
else
set $can3, -1;
}
func M_도약 {
set @id, getarg(0);
set @target, getarg(1);
if(istype(@target) == 1) set @target_sd, id2sd(@target);
else end;
set @mapid, get_mapid(@target_sd);
if(@mapid != get_mapid(@target_sd)) end;
set @x, get_x(@target);
set @y, get_y(@target);
set @can0, get_uservar_i(@target_sd, "$can0");
set @can1, get_uservar_i(@target_sd, "$can1");
set @can2, get_uservar_i(@target_sd, "$can2");
set @can3, get_uservar_i(@target_sd, "$can3");
if(0 <= @y-1 && @can0 != -1)
{
set_xy @id, @x, @y-1;
}
if(0 <= @x+1 && @can1 != -1)
{
set_xy @id, @x+1, @y;
}
if(0 <= @y+1 && @can2 != -1)
{
set_xy @id, @x, @y+1;
}
if(0 <= @x-1 && @can3 != -1)
{
set_xy @id, @x-1, @y;
}
say @id, 0, "발투란이동술";
return;
}
By. zz (바람박스)