したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

【Weiss】バージョンアップ報告スレ

199119(バージョンスレ):2003/07/05(土) 08:41 ID:bAFSrkxg
87: //アイスウォール
begin
xy.X := MPoint.X - Point.X;
xy.Y := MPoint.Y - Point.Y;
if abs(xy.X) > abs(xy.Y) * 3 then begin
//横向き
if xy.X > 0 then b := 6 else b := 2;
end else if abs(xy.Y) > abs(xy.X) * 3 then begin
//縦向き
if xy.Y > 0 then b := 0 else b := 4;
end else begin
if xy.X > 0 then begin
if xy.Y > 0 then b := 7 else b := 5;
end else begin
if xy.Y > 0 then b := 1 else b := 3;
end;
end;
DebugOut.Lines.Add(Format('IceWall: (%d,%d) %d', [xy.X, xy.Y, b]));
//縦向き
xy.X := MPoint.X;
xy.Y := MPoint.Y;
tn := SetSkillUnit(tm, ID, xy, Tick, $8d, tl.Data2[MUseLV], tl.Data2[MUseLV] * 1000);
tn.CData := tc;
tn.MUseLV := MUseLV;
SetLength(bb, 1);
bb[0] := 2;
DirMove(tm, xy, b, bb);
tn := SetSkillUnit(tm, ID, xy, Tick, $8d, tl.Data2[MUseLV], tl.Data2[MUseLV] * 1000);
tn.CData := tc;
tn.MUseLV := MUseLV;
xy.X := MPoint.X;
xy.Y := MPoint.Y;
bb[0] := 6;
DirMove(tm, xy, b, bb);
tn := SetSkillUnit(tm, ID, xy, Tick, $8d, tl.Data2[MUseLV], tl.Data2[MUseLV] * 1000);
tn.CData := tc;
tn.MUseLV := MUseLV;
if (b mod 2) <> 0 then begin
//斜め向き
xy.X := MPoint.X;
xy.Y := MPoint.Y;
bb[0] := 3;
DirMove(tm, xy, b, bb);
tn := SetSkillUnit(tm, ID, xy, Tick, $8d, tl.Data2[MUseLV], tl.Data2[MUseLV] * 1000);
tn.CData := tc;
tn.MUseLV := MUseLV;
xy.X := MPoint.X;
xy.Y := MPoint.Y;
bb[0] := 5;
DirMove(tm, xy, b, bb);
tn := SetSkillUnit(tm, ID, xy, Tick, $8d, tl.Data2[MUseLV], tl.Data2[MUseLV] * 1000);
tn.CData := tc;
tn.MUseLV := MUseLV;
end;
WFIFOW( 0, $0117);
WFIFOW( 2, MSkill);
WFIFOL( 4, ID);
WFIFOW( 8, 10);
WFIFOW(10, MPoint.X);
WFIFOW(12, MPoint.Y);
WFIFOL(14, 1);
SendBCmd(tm, xy, 18);
SkillProcessType := 0;
end;

$8d: //アイスウォール
begin
//ノックバック処理
//if (dmg[0] > 0) and (ts1.Data.Race <> 1) then begin
SetLength(bb, 2);
bb[0] := 4;
bb[1] := 4;
xy := ts1.Point;
DirMove(tm, ts1.Point, ts1.Dir, bb);
//ブロック移動
if (xy.X div 8 <> ts1.Point.X div 8) or (xy.Y div 8 <> ts1.Point.Y div 8) then begin
with tm.Block[xy.X div 8][xy.Y div 8].Mob do begin
assert(IndexOf(ts1.ID) <> -1, 'MobBlockDelete Error');
Delete(IndexOf(ts1.ID));
end;
tm.Block[ts1.Point.X div 8][ts1.Point.Y div 8].Mob.AddObject(ts1.ID, ts1);
end;
ts1.pcnt := 0;
//パケ送信
WFIFOW(0, $0088);
WFIFOL(2, ts1.ID);
WFIFOW(6, ts1.Point.X);
WFIFOW(8, ts1.Point.Y);
SendBCmd(tm, ts1.Point, 10);
//end;
//Dec(tn.Count);
//if tn.Count = 0 then begin //ここの処理がうまくいくかどうか謎
//DelSkillUnit(tm, tn);
//Dec(k);
//c := -1;
//continue;
//end else begin
Dec(c);
//end;
end;
でウィザードのアイスウォールが使用できます
ただ壊すことができないのでプレイヤーには障害物として判定されません


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板