亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? herbactor.pas

?? 傳奇客戶端
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit HerbActor;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grobal2, DxDraws, CliUtil, magiceff, Actor, WIl;


const
   BEEQUEENBASE = 600;
   DOORDEATHEFFECTBASE = 120;
   WALLLEFTBROKENEFFECTBASE = 224;
   WALLRIGHTBROKENEFFECTBASE = 240;

type
   TDoorState = (dsOpen, dsClose, dsBroken);

   TKillingHerb = class (TActor)//Size 0x250
   private
   public
      constructor Create; override;
      destructor Destroy; override;
      procedure CalcActorFrame; override;
      function  GetDefaultFrame (wmode: Boolean): integer; override;
   end;

   TMineMon = class (TKillingHerb)
   private
   public
      constructor Create; override;
      procedure CalcActorFrame; override;
      function  GetDefaultFrame (wmode: Boolean): integer; override;
   end;

   TBeeQueen = class (TActor)
   private
   public
      procedure CalcActorFrame; override;
      function  GetDefaultFrame (wmode: Boolean): integer; override;
   end;

   TCentipedeKingMon = class (TKillingHerb)//Size 0x260
   private
      AttackEffectSurface :TDirectDrawSurface; //0x250
      BoUseDieEffect      :Boolean;            //0x254
      ax                  :integer;            //0x258
      ay                  :integer;            //0x25C
      procedure LoadEffect();
   public
      procedure CalcActorFrame; override;
      procedure LoadSurface; override;
      procedure DrawEff (dsurface: TDirectDrawSurface; dx, dy: integer);override;
      procedure Run;override;
   end;
   TBigHeartMon = class (TKillingHerb)//Size 0x260
   private
   public
     procedure CalcActorFrame; override;
   end;
   TSpiderHouseMon = class (TKillingHerb)
   private
   public
     procedure CalcActorFrame; override;
   end;
   TCastleDoor = class (TActor)
   private
      EffectSurface: TDirectDrawSurface;
      ax, ay: integer;
      oldunitx, oldunity: integer;
      procedure ApplyDoorState (dstate: TDoorState);
   public
      BoDoorOpen: Boolean;
      constructor Create; override;
      procedure CalcActorFrame; override;
      procedure  LoadSurface; override;
      function  GetDefaultFrame (wmode: Boolean): integer; override;
      procedure  ActionEnded; override;
      procedure  Run; override;
      procedure  DrawChr (dsurface: TDirectDrawSurface; dx, dy: integer; blend: Boolean;boFlag:Boolean); override;
   end;

   TWallStructure = class (TActor)//0x62
   private
      EffectSurface: TDirectDrawSurface;
      BrokenSurface: TDirectDrawSurface;
      ax, ay, bx, by: integer;
      deathframe: integer;
      bomarkpos: Boolean;  //給啊霸 阜絆 樂綽瘤
   public
      constructor Create; override;
      procedure CalcActorFrame; override;
      procedure  LoadSurface; override;
      function  GetDefaultFrame (wmode: Boolean): integer; override;
      procedure  DrawChr (dsurface: TDirectDrawSurface; dx, dy: integer; blend: Boolean;boFlag:Boolean); override;
      procedure  Run; override;
   end;

   TSoccerBall = class (TActor)//0x9
   private
   public
   end;
   TDragonBody = class (TKillingHerb)//0x5a
   private
   public
     procedure DrawEff (dsurface: TDirectDrawSurface; dx, dy: integer); override;
     procedure CalcActorFrame(); override;
     procedure LoadSurface(); override;
   end;
implementation

uses
   ClMain, MShare;


{============================== TKillingHerb =============================}

//        僥牢檬

{--------------------------}


constructor TKillingHerb.Create;
begin
   inherited Create;
end;

destructor TKillingHerb.Destroy;
begin
   inherited Destroy;
end;

procedure TKillingHerb.CalcActorFrame;
var
   pm: PTMonsterAction;
   haircount: integer;
begin
   m_boUseMagic := FALSE;
   m_nCurrentFrame := -1;

   m_nBodyOffset := GetOffset (m_wAppearance);
   pm := GetRaceByPM (m_btRace,m_wAppearance);
   if pm = nil then exit;

   case m_nCurrentAction of
      SM_TURN: //
         begin
            m_nStartFrame := pm.ActStand.start; // + Dir * (pm.ActStand.frame + pm.ActStand.skip);
            m_nEndFrame := m_nStartFrame + pm.ActStand.frame - 1;
            m_dwFrameTime := pm.ActStand.ftime;
            m_dwStartTime := GetTickCount;
            m_nDefFrameCount := pm.ActStand.frame;
            Shift (m_btDir, 0, 0, 1);
         end;
      SM_DIGUP: //, SM_DIGUP, .
         begin
            m_nStartFrame := pm.ActWalk.start; // + Dir * (pm.ActWalk.frame + pm.ActWalk.skip);
            m_nEndFrame := m_nStartFrame + pm.ActWalk.frame - 1;
            m_dwFrameTime := pm.ActWalk.ftime;
            m_dwStartTime := GetTickCount;
            m_nMaxTick := pm.ActWalk.UseTick;
            m_nCurTick := 0;
            //WarMode := FALSE;
            m_nMoveStep := 1;
            Shift (m_btDir, 0, 0, 1); //m_nMoveStep, 0, m_nEndFrame-startframe+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;
            //WarMode := TRUE;
            m_dwWarModeTime := GetTickCount;
            Shift (m_btDir, 0, 0, 1);
         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 := m_dwStruckFrameTime; //pm.ActStruck.ftime;
            m_dwStartTime := GetTickCount;
         end;
      SM_DEATH:
         begin
            m_nStartFrame := pm.ActDie.start + m_btDir * (pm.ActDie.frame + pm.ActDie.skip);
            m_nEndFrame := m_nStartFrame + pm.ActDie.frame - 1;
            m_nStartFrame := m_nEndFrame; //
            m_dwFrameTime := pm.ActDie.ftime;
            m_dwStartTime := GetTickCount;
         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;
         end;
      SM_DIGDOWN:
         begin
            m_nStartFrame := pm.ActDeath.start;
            m_nEndFrame := m_nStartFrame + pm.ActDeath.frame - 1;
            m_dwFrameTime := pm.ActDeath.ftime;
            m_dwStartTime := GetTickCount;
            m_boDelActionAfterFinished := TRUE;  //撈悼累撈 場唱擱 咀磐 瘤瀾
         end;
   end;
end;


function  TKillingHerb.GetDefaultFrame (wmode: Boolean): integer;
var
   cf, dr: integer;
   pm: PTMonsterAction;
begin
   Result:=0;//jacky
   pm := GetRaceByPM (m_btRace,m_wAppearance);
   if pm = nil then exit;

   if m_boDeath then begin
      if m_boSkeleton then
         Result := pm.ActDeath.start
      else Result := pm.ActDie.start + m_btDir * (pm.ActDie.frame + pm.ActDie.skip) + (pm.ActDie.frame - 1);
   end else begin
      m_nDefFrameCount := pm.ActStand.frame;
      if m_nCurrentDefFrame < 0 then cf := 0
      else if m_nCurrentDefFrame >= pm.ActStand.frame then cf := 0
      else cf := m_nCurrentDefFrame;
      Result := pm.ActStand.start + cf; //規氫撈 絕瀾..
   end;
end;


{----------------------------------------------------------------------}
//厚阜盔面


procedure TBeeQueen.CalcActorFrame;
var
   pm: PTMonsterAction;
begin
   m_boUseMagic := FALSE;
   m_nCurrentFrame := -1;

   m_nBodyOffset := GetOffset (m_wAppearance);
   pm := GetRaceByPM (m_btRace,m_wAppearance);
   if pm = nil then exit;

   case m_nCurrentAction of
      SM_TURN: //規氫撈 絕瀾...
         begin
            m_nStartFrame := pm.ActStand.start; // + Dir * (pm.ActStand.frame + pm.ActStand.skip);
            m_nEndFrame := m_nStartFrame + pm.ActStand.frame - 1;
            m_dwFrameTime := pm.ActStand.ftime;
            m_dwStartTime := GetTickCount;
            m_nDefFrameCount := pm.ActStand.frame;
            Shift (m_btDir, 0, 0, 1);
         end;
      SM_HIT:
         begin
            m_nStartFrame := pm.ActAttack.start; // + Dir * (pm.ActAttack.frame + pm.ActAttack.skip);
            m_nEndFrame := m_nStartFrame + pm.ActAttack.frame - 1;
            m_dwFrameTime := pm.ActAttack.ftime;
            m_dwStartTime := GetTickCount;
            //WarMode := TRUE;
            m_dwWarModeTime := GetTickCount;
            Shift (m_btDir, 0, 0, 1);
         end;
      SM_STRUCK:
         begin
            m_nStartFrame := pm.ActStruck.start; // + Dir * (pm.ActStruck.frame + pm.ActStruck.skip);
            m_nEndFrame := m_nStartFrame + pm.ActStruck.frame - 1;
            m_dwFrameTime := m_dwStruckFrameTime; //pm.ActStruck.ftime;
            m_dwStartTime := GetTickCount;
         end;
      SM_DEATH:
         begin
            m_nStartFrame := pm.ActDie.start; // + Dir * (pm.ActDie.frame + pm.ActDie.skip);
            m_nEndFrame := m_nStartFrame + pm.ActDie.frame - 1;
            m_nStartFrame := m_nEndFrame; //
            m_dwFrameTime := pm.ActDie.ftime;
            m_dwStartTime := GetTickCount;
         end;
      SM_NOWDEATH:
         begin
            m_nStartFrame := pm.ActDie.start; // + Dir * (pm.ActDie.frame + pm.ActDie.skip);
            m_nEndFrame := m_nStartFrame + pm.ActDie.frame - 1;
            m_dwFrameTime := pm.ActDie.ftime;
            m_dwStartTime := GetTickCount;
         end;
   end;
end;

function  TBeeQueen.GetDefaultFrame (wmode: Boolean): integer;
var
   pm: PTMonsterAction;
   cf: integer;
begin
   Result:=0;//jacky
   pm := GetRaceByPM (m_btRace,m_wAppearance);
   if pm = nil then exit;

   if m_boDeath then begin
      Result := pm.ActDie.start + (pm.ActDie.frame - 1);
   end else begin
      m_nDefFrameCount := pm.ActStand.frame;
      if m_nCurrentDefFrame < 0 then cf := 0
      else if m_nCurrentDefFrame >= pm.ActStand.frame then cf := 0
      else cf := m_nCurrentDefFrame;
      Result := pm.ActStand.start + cf; //規氫撈 絕瀾..
   end;
end;


{----------------------------------------------------------------------}
//瘤匙空


procedure TCentipedeKingMon.CalcActorFrame;
var
   pm: PTMonsterAction;
begin
   m_boUseMagic := FALSE;
   m_nCurrentFrame := -1;
   m_nBodyOffset := GetOffset(m_wAppearance);
   pm := GetRaceByPM (m_btRace,m_wAppearance);
   if pm = nil then exit;

   case m_nCurrentAction of
      SM_TURN: //
         begin
            m_btDir := 0;
            inherited CalcActorFrame;
         end;
      SM_HIT:
         begin
            m_btDir:=0;
            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;
            BoUseDieEffect:=True;
            m_nEffectFrame:=0;
            m_nEffectStart:=0;
            m_nEffectEnd:=m_nEffectStart + 9;
            m_dwEffectFrameTime:= 62;
//            BoUseEffect:=True;
            Shift (m_btDir, 0, 0, 1);
         end;
      SM_DIGDOWN:
         begin
           inherited CalcActorFrame;
         end;
      else begin
         m_btDir := 0;
         inherited CalcActorFrame;
      end;
   end;
end;


{----------------------------------------------------------------------}
//己寒, 己鞏

constructor TCastleDoor.Create;
begin
   inherited Create;
   m_btDir := 0;
   EffectSurface := nil;
   m_nDownDrawLevel := 1;  //1伎 剛歷 弊覆. (葷恩 贛府啊 己鞏 關欄肺 甸絹啊綽 巴闌 阜瀾)
end;

procedure TCastleDoor.ApplyDoorState (dstate: TDoorState);
var
   bowalk: Boolean;
begin
   Map.MarkCanWalk (m_nCurrX, m_nCurrY-2, TRUE);
   Map.MarkCanWalk (m_nCurrX+1, m_nCurrY-1, TRUE);
   Map.MarkCanWalk (m_nCurrX+1, m_nCurrY-2, TRUE);
   if dstate = dsClose then bowalk := FALSE
   else bowalk := TRUE;

   Map.MarkCanWalk (m_nCurrX, m_nCurrY, bowalk);
   Map.MarkCanWalk (m_nCurrX, m_nCurrY-1, bowalk);
   Map.MarkCanWalk (m_nCurrX, m_nCurrY-2, bowalk);
   Map.MarkCanWalk (m_nCurrX+1, m_nCurrY-1, bowalk);
   Map.MarkCanWalk (m_nCurrX+1, m_nCurrY-2, bowalk);
   Map.MarkCanWalk (m_nCurrX-1, m_nCurrY-1, bowalk);
   Map.MarkCanWalk (m_nCurrX-1, m_nCurrY, bowalk);
   Map.MarkCanWalk (m_nCurrX-1, m_nCurrY+1, bowalk);
   Map.MarkCanWalk (m_nCurrX-2, m_nCurrY, bowalk);

   if dstate = dsOpen then begin
      Map.MarkCanWalk (m_nCurrX, m_nCurrY-2, FALSE);
      Map.MarkCanWalk (m_nCurrX+1, m_nCurrY-1, FALSE);
      Map.MarkCanWalk (m_nCurrX+1, m_nCurrY-2, FALSE);
   end;
end;

procedure  TCastleDoor.LoadSurface;
var
   mimg: TWMImages;
begin
   inherited LoadSurface;
   mimg := GetMonImg (m_wAppearance);
   if m_boUseEffect then
      EffectSurface := mimg.GetCachedImage (DOORDEATHEFFECTBASE + (m_nCurrentFrame - m_nStartFrame), ax, ay);
end;

procedure TCastleDoor.CalcActorFrame;
var
   pm: PTMonsterAction;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合久久久久久久久久久久| 一区二区三区精品视频| 欧美日韩精品一区二区天天拍小说| 国产传媒久久文化传媒| 国产尤物一区二区在线| 精品在线播放免费| 国产精品一区二区你懂的| 精品一区二区三区av| 久草中文综合在线| 国产一区二区福利视频| 国产精品66部| 不卡av在线网| 欧美亚洲一区二区在线观看| 欧美日韩三级视频| 日韩欧美一区二区久久婷婷| 欧美一区二区观看视频| 久久综合成人精品亚洲另类欧美| 久久久久久久一区| 国产精品乱人伦一区二区| 综合亚洲深深色噜噜狠狠网站| 亚洲免费在线观看| 亚洲一区二区三区四区在线| 日韩成人av影视| 国产精品1区二区.| 色久综合一二码| 欧美精品乱人伦久久久久久| 精品嫩草影院久久| 中文字幕不卡的av| 亚洲成人第一页| 国产剧情av麻豆香蕉精品| 色综合久久久久综合体| 欧美日韩中文一区| 久久久久久久久久久久电影| 日韩理论在线观看| 麻豆精品视频在线| 不卡一卡二卡三乱码免费网站| 欧美日韩精品欧美日韩精品一 | 岛国一区二区在线观看| 色综合久久88色综合天天6| 51午夜精品国产| 中文字幕一区二区三区色视频 | 国产精品人人做人人爽人人添| 国产精品美女久久久久久久久 | 色综合久久66| 日韩午夜电影av| 亚洲激情校园春色| 国产精品一二三四区| 91麻豆精品国产91久久久使用方法 | 一本久道中文字幕精品亚洲嫩| 日韩午夜在线影院| 亚洲亚洲精品在线观看| 国产成人欧美日韩在线电影| 欧美丰满少妇xxxxx高潮对白| 国产精品美女久久福利网站 | 国内精品嫩模私拍在线| 99re视频精品| 日韩三级电影网址| 亚洲日本一区二区| 精品中文字幕一区二区| 色综合色综合色综合色综合色综合| 91精品欧美久久久久久动漫| 中文字幕亚洲区| 韩国三级电影一区二区| 欧美影院午夜播放| 中文字幕欧美一| 国产资源在线一区| 欧美日韩1234| 国产精品灌醉下药二区| 成人激情图片网| 精品国产免费人成电影在线观看四季 | 日本福利一区二区| 久久这里只有精品首页| 日日夜夜免费精品视频| 色综合av在线| 国产精品免费久久久久| 精品影视av免费| 欧美一区二区三区四区久久| 亚洲欧洲99久久| 国产精品一区二区视频| 日韩精品中文字幕在线不卡尤物| 国产精品久久三| 国产大片一区二区| 日韩欧美电影一二三| 日日夜夜精品视频免费| 欧美亚一区二区| 亚洲精品乱码久久久久| 成人午夜精品在线| 国产亚洲欧美日韩日本| 久久精品二区亚洲w码| 91精品国产综合久久香蕉的特点 | 日本欧美大码aⅴ在线播放| 欧美性大战久久久久久久蜜臀| 国产精品成人午夜| 成人影视亚洲图片在线| 欧美一级日韩免费不卡| 国产一区二区美女诱惑| 久久久久久久久久久电影| 国产一区二区精品在线观看| 国产午夜精品久久久久久免费视| 韩国女主播一区二区三区| 欧美精品一区男女天堂| 国产精品一区二区三区四区| 国产婷婷色一区二区三区| 国产91清纯白嫩初高中在线观看| 国产日韩精品一区二区浪潮av| 国产最新精品精品你懂的| 中文字幕欧美日本乱码一线二线| 成人精品高清在线| 亚洲最大成人综合| 欧美日韩一区高清| 精品一区二区成人精品| 亚洲国产电影在线观看| 91视频精品在这里| 亚洲线精品一区二区三区| 精品乱人伦一区二区三区| 国产成人在线观看免费网站| 日韩一区在线免费观看| 欧美色图免费看| 午夜激情综合网| 国产午夜久久久久| 91黄色免费版| 五月激情综合网| ●精品国产综合乱码久久久久| 欧美三级资源在线| 精品在线视频一区| 国产精品国产a| 欧美精品第1页| 成人毛片在线观看| 午夜欧美2019年伦理| 精品国产91九色蝌蚪| 欧美系列日韩一区| 国产美女精品人人做人人爽| 亚洲蜜桃精久久久久久久| 欧美体内she精视频| 激情深爱一区二区| 亚洲国产成人av| 中文av一区二区| 欧美一二三在线| 91在线porny国产在线看| 久久se这里有精品| 亚洲成av人片在线观看无码| 久久精品人人做人人爽人人| 日韩一级黄色片| 欧美色综合久久| 91在线国内视频| 国产成人福利片| 美女免费视频一区二区| 丝袜诱惑制服诱惑色一区在线观看| 亚洲欧洲av在线| 久久免费美女视频| 欧美片网站yy| 在线精品亚洲一区二区不卡| 国产成人丝袜美腿| 久草这里只有精品视频| 国产精品国产三级国产aⅴ中文| 欧美精品一区二区精品网| 欧美日韩国产美女| 91麻豆swag| 99久久伊人久久99| 懂色av一区二区在线播放| 久久99国产精品免费网站| 日韩在线一区二区三区| 天堂蜜桃91精品| 天天射综合影视| 亚洲黄色在线视频| 亚洲乱码国产乱码精品精98午夜| 国产日韩av一区| 亚洲同性同志一二三专区| 日韩成人精品视频| 日本亚洲一区二区| 日本欧美一区二区三区乱码| 日韩经典中文字幕一区| 天天爽夜夜爽夜夜爽精品视频| 五月天视频一区| 国产精品久久综合| 亚洲bt欧美bt精品| 男女男精品视频| 免费观看久久久4p| 婷婷综合另类小说色区| 午夜视频一区二区| 理论片日本一区| 国产精品18久久久久久vr| 国产成人免费视频精品含羞草妖精| 国产91在线观看| 欧洲精品在线观看| 精品视频在线免费观看| 日韩毛片精品高清免费| 99精品久久只有精品| 国产一区二区三区在线观看免费 | 日韩高清在线一区| 久久精品国产成人一区二区三区 | 欧美色网一区二区| 中文字幕亚洲在| 国产风韵犹存在线视精品| 日韩视频免费观看高清完整版| 一个色在线综合| av午夜一区麻豆| 久久精品水蜜桃av综合天堂| 成人免费毛片片v| 日韩一区二区三区精品视频 |