📄 axemon.pas
字号:
end;
m_nCurrentDefFrame := 0;
m_dwDefFrameTime := GetTickCount;
end;
end else begin
if GetTickCount - m_dwSmoothMoveTime > 200 then begin
if GetTickCount - m_dwDefFrameTime > 500 then begin
m_dwDefFrameTime := GetTickCount;
Inc (m_nCurrentDefFrame);
if m_nCurrentDefFrame >= m_nDefFrameCount then
m_nCurrentDefFrame := 0;
end;
DefaultMotion;
end;
end;
if prv <> m_nCurrentFrame then begin
m_dwLoadSurfaceTime := GetTickCount;
LoadSurface;
end;
end;
{ TElectronicScolpionMon }
procedure TElectronicScolpionMon.CalcActorFrame;
var
pm: PTMonsterAction;
begin
m_nCurrentFrame := -1;
m_nBodyOffset := GetOffset (m_wAppearance);
pm := GetRaceByPM (m_btRace,m_wAppearance);
if pm = nil then exit;
case m_nCurrentAction of
SM_HIT: begin
m_nStartFrame := pm.ActAttack.start + m_btDir * (pm.ActAttack.frame + pm.ActAttack.skip);
m_nEndFrame := m_nStartFrame + pm.ActAttack.frame - 1;
m_dwFrameTime := pm.ActAttack.ftime;
m_dwStartTime := GetTickCount;
m_dwWarModeTime := GetTickCount;
Shift (m_btDir, 0, 0, 1);
end;
SM_LIGHTING: begin
m_nStartFrame := pm.ActCritical.start + m_btDir * (pm.ActCritical.frame + pm.ActCritical.skip);
m_nEndFrame := m_nStartFrame + pm.ActCritical.frame - 1;
m_dwFrameTime := pm.ActCritical.ftime;
m_dwStartTime := GetTickCount;
m_dwWarModeTime := GetTickCount;
Shift (m_btDir, 0, 0, 1);
m_boUseEffect := TRUE;
firedir := m_btDir;
m_nEffectFrame := m_nStartFrame;
m_nEffectStart := m_nStartFrame;
m_nEffectEnd := m_nEndFrame;
m_dwEffectStartTime := GetTickCount;
m_dwEffectFrameTime := m_dwFrameTime;
end;
else begin
inherited;
end;
end;
end;
procedure TElectronicScolpionMon.LoadSurface;
begin
inherited;
{
if (m_btRace = 60) and BoUseEffect and (CurrentAction = SM_SPELL) then begin
AttackEffectSurface := FrmMain.WMon19Img.GetCachedImage (
430 + (firedir * 10) + m_nEffectFrame - m_nEffectStart,
ax, ay);
}
if (m_btRace = 60) and m_boUseEffect and (m_nCurrentAction = SM_LIGHTING) then begin
AttackEffectSurface := FrmMain.WMon19Img.GetCachedImage (
430 + (firedir * 10) + m_nEffectFrame - m_nEffectStart,
ax, ay);
end;
end;
{ TBossPigMon }
procedure TBossPigMon.LoadSurface;
begin
inherited;
if (m_btRace = 61) and m_boUseEffect then begin
AttackEffectSurface := FrmMain.WMon19Img.GetCachedImage (
860 + (firedir * 10) + m_nEffectFrame - m_nEffectStart,
ax, ay);
end;
end;
{ TKingOfSculpureKingMon }
procedure TKingOfSculpureKingMon.CalcActorFrame;
var
pm: PTMonsterAction;
begin
m_nCurrentFrame := -1;
m_nBodyOffset := GetOffset (m_wAppearance);
pm := GetRaceByPM (m_btRace,m_wAppearance);
if pm = nil then exit;
case m_nCurrentAction of
SM_HIT: begin
m_nStartFrame := pm.ActAttack.start + m_btDir * (pm.ActAttack.frame + pm.ActAttack.skip);
m_nEndFrame := m_nStartFrame + pm.ActAttack.frame - 1;
m_dwFrameTime := pm.ActAttack.ftime;
m_dwStartTime := GetTickCount;
m_dwWarModeTime := GetTickCount;
Shift (m_btDir, 0, 0, 1);
m_boUseEffect := TRUE;
firedir := m_btDir;
m_nEffectFrame := m_nStartFrame;
m_nEffectStart := m_nStartFrame;
m_nEffectEnd := m_nEndFrame;
m_dwEffectStartTime := GetTickCount;
m_dwEffectFrameTime := m_dwFrameTime;
end;
SM_LIGHTING: begin
m_nStartFrame := pm.ActCritical.start + m_btDir * (pm.ActCritical.frame + pm.ActCritical.skip);
m_nEndFrame := m_nStartFrame + pm.ActCritical.frame - 1;
m_dwFrameTime := pm.ActCritical.ftime;
m_dwStartTime := GetTickCount;
m_dwWarModeTime := GetTickCount;
Shift (m_btDir, 0, 0, 1);
m_boUseEffect := TRUE;
firedir := m_btDir;
m_nEffectFrame := m_nStartFrame;
m_nEffectStart := m_nStartFrame;
m_nEffectEnd := m_nEndFrame;
m_dwEffectStartTime := GetTickCount;
m_dwEffectFrameTime := m_dwFrameTime;
end;
SM_NOWDEATH: begin
m_nStartFrame := pm.ActDie.start + m_btDir * (pm.ActDie.frame + pm.ActDie.skip);
m_nEndFrame := m_nStartFrame + pm.ActDie.frame - 1;
m_dwFrameTime := pm.ActDie.ftime;
m_dwStartTime := GetTickCount;
m_nEffectFrame := pm.ActDie.start;
m_nEffectStart := pm.ActDie.start;
m_nEffectEnd := pm.ActDie.start + pm.ActDie.frame - 1;
m_dwEffectStartTime := GetTickCount;
m_dwEffectFrameTime := m_dwFrameTime;
m_boUseEffect := TRUE;
end;
else begin
inherited;
end;
end;
end;
procedure TKingOfSculpureKingMon.LoadSurface;
begin
inherited;
if (m_btRace = 62) and m_boUseEffect then begin
case m_nCurrentAction of
SM_HIT: begin
AttackEffectSurface := FrmMain.WMon19Img.GetCachedImage (
1490 + (firedir * 10) + m_nEffectFrame - m_nEffectStart,
ax, ay);
end;
SM_LIGHTING: begin
AttackEffectSurface := FrmMain.WMon19Img.GetCachedImage (
1380 + (firedir * 10) + m_nEffectFrame - m_nEffectStart,
ax, ay);
end;
SM_NOWDEATH: begin
AttackEffectSurface := FrmMain.WMon19Img.GetCachedImage (
1470 + m_nEffectFrame - m_nEffectStart,
ax, ay);
end;
end;
end;
end;
{ TSkeletonArcherMon }
procedure TSkeletonArcherMon.CalcActorFrame;
begin
inherited;
if (m_nCurrentAction = SM_NOWDEATH) and (m_btRace <> 72) then begin
bo260:=True;
end;
end;
procedure TSkeletonArcherMon.DrawEff(dsurface: TDirectDrawSurface; dx,
dy: integer);
begin
inherited;
if bo260 and (AttackEffectSurface <> nil) then begin
DrawBlend (dsurface,dx + n264 + m_nShiftX,dy + n268 + m_nShiftY,AttackEffectSurface, 1);
end;
end;
procedure TSkeletonArcherMon.LoadSurface;
begin
inherited;
if bo260 then begin
AttackEffectSurface := FrmMain.WMon20Img.GetCachedImage (
1600 + m_nEffectFrame - m_nEffectStart,
n264, n268);
end;
end;
procedure TSkeletonArcherMon.Run;
var
m_dwFrameTimetime: longword;
begin
if m_boMsgMuch then m_dwFrameTimetime := Round(m_dwFrameTime * 2 / 3)
else m_dwFrameTimetime := m_dwFrameTime;
if m_nCurrentAction <> 0 then begin
if (GetTickCount - m_dwStartTime) > m_dwFrameTimetime then begin
if m_nCurrentFrame < m_nEndFrame then begin
end else begin
m_nCurrentAction:=0;
bo260:=False;
end;
end;
end;
inherited;
end;
{ TFlyingSpider }
procedure TFlyingSpider.CalcActorFrame;
var
Eff8:TNormalDrawEffect;
begin
inherited;
if m_nCurrentAction = SM_NOWDEATH then begin
Eff8:=TNormalDrawEffect.Create(m_nCurrX,m_nCurrY,FrmMain.WMon12Img,1420,20,m_dwFrameTime,True);
if Eff8 <> nil then begin
Eff8.MagOwner:=g_MySelf;
PlayScene.m_EffectList.Add(Eff8);
end;
end;
end;
{ TExplosionSpider }
procedure TExplosionSpider.CalcActorFrame;
begin
inherited;
case m_nCurrentAction of
SM_HIT: begin
m_boUseEffect:=False;
end;
SM_NOWDEATH: begin
m_nEffectStart:=m_nStartFrame;
m_nEffectFrame:=m_nStartFrame;
m_dwEffectStartTime:=GetTickCount();
m_dwEffectFrameTime:=m_dwFrameTime;
m_nEffectEnd:=m_nEndFrame;
m_boUseEffect:=True;
end;
end;
end;
procedure TExplosionSpider.LoadSurface;
begin
inherited;
if m_boUseEffect then
AttackEffectSurface := FrmMain.WMon14Img.GetCachedImage (
730 + m_nEffectFrame-m_nEffectStart,
ax, ay);
end;
{ TSkeletonKingMon }
procedure TSkeletonKingMon.CalcActorFrame;
var
pm: PTMonsterAction;
actor: TActor;
haircount, scx, scy, stx, sty: integer;
meff: TCharEffect;
begin
m_nCurrentFrame := -1;
m_nBodyOffset := GetOffset (m_wAppearance);
pm := GetRaceByPM (m_btRace,m_wAppearance);
if pm = nil then exit;
case m_nCurrentAction of
SM_BACKSTEP,SM_WALK: begin
m_nStartFrame := pm.ActWalk.start + m_btDir * (pm.ActWalk.frame + pm.ActWalk.skip);
m_nEndFrame := m_nStartFrame + pm.ActWalk.frame - 1;
m_dwFrameTime := pm.ActWalk.ftime;
m_dwStartTime := GetTickCount;
m_nEffectFrame:=pm.ActWalk.start;
m_nEffectStart:=pm.ActWalk.start;
m_nEffectEnd:=pm.ActWalk.start + pm.ActWalk.frame -1;
m_dwEffectStartTime:=GetTickCount();
m_dwEffectFrameTime:=m_dwFrameTime;
m_boUseEffect:=True;
m_nMaxTick := pm.ActWalk.UseTick;
m_nCurTick := 0;
//WarMode := FALSE;
m_nMoveStep := 1;
if m_nCurrentAction = SM_WALK then
Shift (m_btDir, m_nMoveStep, 0, m_nEndFrame-m_nStartFrame+1)
else
Shift (GetBack(m_btDir), m_nMoveStep, 0, m_nEndFrame-m_nStartFrame+1);
end;
SM_HIT: begin
m_nStartFrame := pm.ActAttack.start + m_btDir * (pm.ActAttack.frame + pm.ActAttack.skip);
m_nEndFrame := m_nStartFrame + pm.ActAttack.frame - 1;
m_dwFrameTime := pm.ActAttack.ftime;
m_dwStartTime := GetTickCount;
m_dwWarModeTime:= GetTickCount;
Shift (m_btDir, 0, 0, 1);
m_boUseEffect := TRUE;
firedir := m_btDir;
m_nEffectFrame:=m_nStartFrame;
m_nEffectStart:=m_nStartFrame;
m_nEffectEnd:=m_nEndFrame;
m_dwEffectStartTime:=GetTickCount();
m_dwEffectFrameTime := m_dwFrameTime;
end;
SM_FLYAXE: begin
m_nStartFrame := pm.ActCritical.start + m_btDir * (pm.ActCritical.frame + pm.ActCritical.skip);
m_nEndFrame := m_nStartFrame + pm.ActCritical.frame - 1;
m_dwFrameTime := pm.ActCritical.ftime;
m_dwStartTime := GetTickCount;
m_dwWarModeTime:= GetTickCount;
Shift (m_btDir, 0, 0, 1);
m_boUseEffect := TRUE;
firedir := m_btDir;
m_nEffectFrame:=m_nStartFrame;
m_nEffectStart:=m_nStartFrame;
m_nEffectEnd:=m_nEndFrame;
m_dwEffectStartTime:=GetTickCount();
m_dwEffectFrameTime := m_dwFrameTime;
end;
SM_LIGHTING: begin
m_nStartFrame := 80 + pm.ActAttack.start + m_btDir * (pm.ActAttack.frame + pm.ActAttack.skip);
m_nEndFrame := m_nStartFrame + pm.ActAttack.frame - 1;
m_dwFrameTime := pm.ActAttack.ftime;
m_dwStartTime := GetTickCount;
m_dwWarModeTime:= GetTickCount;
Shift (m_btDir, 0, 0, 1);
m_boUseEffect := TRUE;
firedir := m_btDir;
m_nEffectFrame:=m_nStartFrame;
m_nEffectStart:=m_nStartFrame;
m_nEffectEnd:=m_nEndFrame;
m_dwEffectStartTime:=GetTickCount();
m_dwEffectFrameTime := m_dwFrameTime;
end;
SM_STRUCK: begin
m_nStartFrame := pm.ActStruck.start + m_btDir * (pm.ActStruck.frame + pm.ActStruck.skip);
m_nEndFrame := m_nStartFrame + pm.ActStruck.frame - 1;
m_dwFrameTime := pm.ActStruck.ftime;
m_dwStartTime := GetTickCount;
m_nEffectFrame:=pm.ActStruck.start;
m_nEffectStart:=pm.ActStruck.start;
m_nEffectEnd:=pm.ActStruck.start + pm.ActStruck.frame -1;
m_dwEffectStartTime:=GetTickCount;
m_dwEffectFrameTime:=m_dwFrameTime;
m_boUseEffect := TRUE;
end;
SM_NOWDEATH: begin
m_nStartFrame := pm.ActDie.start + m_btDir * (pm.ActDie.frame + pm.ActDie.skip);
m_nEndFrame := m_nStartFrame + pm.ActDie.frame - 1;
m_dwFrameTime := pm.ActDie.ftime;
m_dwStartTime := GetTickCount;
m_nEffectFrame := pm.ActDie.start;
m_nEffectStart := pm.ActDie.start;
m_nEffectEnd := pm.ActDie.start + pm.ActDie.frame - 1;
m_dwEffectStartTime := GetTickCount;
m_dwEffectFrameTime := m_dwFrameTime;
m_boUseEffect := TRUE;
end;
else begin
inherited;
end;
end;
end;
procedure TSkeletonKingMon.LoadSurface;
begin
inherited;
if (m_btRace = 63) and m_boUseEffect then begin
case m_nCurrentAction of
SM_WALK: begin
AttackEffectSurface := FrmMain.WMon20Img.GetCachedImage (
3060 + (m_btDir * 10)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -