236 lines
6.7 KiB
C
236 lines
6.7 KiB
C
/************************/
|
||
/* action.h */
|
||
/************************/
|
||
#ifndef _ACTION_H_
|
||
#define _ACTION_H_
|
||
|
||
#include "version.h"
|
||
#include "../newproto/autil.h"
|
||
//处理优先顺序
|
||
enum{
|
||
PRIO_TOP, //最优先
|
||
|
||
PRIO_CHR, //同Char
|
||
|
||
PRIO_BG, /* ?? */
|
||
PRIO_JIKI, /* <20>? */
|
||
PRIO_ENEMY, /* <20> */
|
||
PRIO_ENEMY_TAMA, /* <20><> */
|
||
PRIO_JIKI_TAMA, /* <20>?<3F> */
|
||
PRIO_ITEM, /* ???? */
|
||
PRIO_BOSS, /* ?? */
|
||
PRIO_GAME_OVER, /* GAME OVER */
|
||
PRIO_BTM = 255 /* ??<3F> */
|
||
};
|
||
|
||
//Action状态
|
||
enum{
|
||
ACT_STATE_ACT = 0, //通常状态
|
||
ACT_STATE_DEAD //死亡状态
|
||
};
|
||
//属性
|
||
#define ACT_ATR_HIDE ( 1 << 1 ) // 不显示/* <20><><EFBFBD> */
|
||
#define ACT_ATR_HIT ( 1 << 2 ) // 可以被点选/* ???<3F><>?? */
|
||
#define ACT_ATR_HIT_BOX ( 1 << 3 ) // 可以被点选的外框/* ???<3F><> + ????<3F><> */
|
||
#define ACT_ATR_INFO ( 1 << 4 ) // 显示出相关讯息/* ??????<3F><> */
|
||
#define ACT_ATR_HIDE2 ( 1 << 5 ) // 不显示 + 可以被点选/* <20><><EFBFBD>+???<3F><>?? */
|
||
#define ACT_ATR_BTL_CMD_END ( 1 << 6 ) // 战斗指令输入完成旗标,未完成输入的玩家会动,完成则不会动/* <20><>????<3F>?<3F>???? */
|
||
#define ACT_ATR_TYPE_PC ( 1 << 7 ) // 玩家/* ?? */
|
||
#define ACT_ATR_TYPE_OTHER_PC ( 1 << 8 ) // 别的玩家/* <20>??? */
|
||
#define ACT_ATR_TYPE_PET ( 1 << 9 ) /* ??? */
|
||
#define ACT_ATR_TYPE_ITEM ( 1 << 10 ) /* ???? */
|
||
#define ACT_ATR_TYPE_GOLD ( 1 << 11 ) /* ?? */
|
||
#define ACT_ATR_TYPE_OTHER ( 1 << 12 ) /* ??<3F>????伡?<3F>??<3F>? */
|
||
#define ACT_ATR_HIT_BOX_ALL1 ( 1 << 13 ) // 可以被点选 + 外框显示1
|
||
#define ACT_ATR_HIT_BOX_ALL2 ( 1 << 14 ) // 可以被点选 + 外框显示2
|
||
#define ACT_ATR_HIT_BOX_ALL3 ( 1 << 15 ) // 可以被点选 + 外框显示3
|
||
#define ACT_ATR_HIT_BOX_ALL4 ( 1 << 16 ) // 可以被点选 + 外框显示3
|
||
#define ACT_ATR_TRAVEL ( 1 << 17 ) /* ??? */
|
||
|
||
#define ACT_ATR_HIT_BOX_COL1 ( 1 << 18 ) // 左上第一列
|
||
#define ACT_ATR_HIT_BOX_COL2 ( 1 << 19 ) // 左上第二列
|
||
#define ACT_ATR_HIT_BOX_COL3 ( 1 << 20 ) // 右下第一列
|
||
#define ACT_ATR_HIT_BOX_COL4 ( 1 << 21 ) // 右下第二列
|
||
#define ACT_ATR_HIT_BOX_COL5 ( 1 << 22 ) // 左上第一列
|
||
#define ACT_ATR_HIT_BOX_COL6 ( 1 << 23 ) // 左上第二列
|
||
#define ACT_ATR_HIT_BOX_COL7 ( 1 << 24 ) // 右下第一列
|
||
#define ACT_ATR_HIT_BOX_COL8 ( 1 << 25 ) // 右下第二列
|
||
|
||
|
||
|
||
|
||
/* ??????<3F><> **********************************************************/
|
||
struct action{
|
||
struct action *pPrev, *pNext; //上一个及下一个action指标
|
||
void ( *func )( struct action * ); //action所执行的function的指标
|
||
void *pYobi; //备用的struct指标
|
||
void *pOther; //其它用途struct指标
|
||
UCHAR prio; //action处理时的优先顺序
|
||
UCHAR dispPrio; //秀图时的优先顺序
|
||
int x, y; //图的座标
|
||
int hitDispNo; //是否命中目标编号
|
||
BOOL deathFlag; //此action是否死亡旗标
|
||
int dx, dy; //秀图座标位移量
|
||
int dir; //方向
|
||
int delta; //合成向量
|
||
|
||
char name[ 29 ]; //名字
|
||
char freeName[ 33 ]; //free name
|
||
int hp;
|
||
#ifdef _PET_ITEM
|
||
int iOldHp;
|
||
#endif
|
||
int maxHp;
|
||
int mp;
|
||
int maxMp;
|
||
int level;
|
||
int status;
|
||
int itemNameColor; /* ?????䦶<>?<3F> */
|
||
int charNameColor; // ??????<3F><>??????䦶<>?<3F>
|
||
|
||
int bmpNo; //图号
|
||
int bmpNo_bak; //备份图号
|
||
int atr; //属性
|
||
int state; //状态
|
||
int actNo; //行动编号
|
||
int damage;
|
||
|
||
int gx, gy; //在目前的地图上的座标
|
||
int nextGx, nextGy; //下一个座标
|
||
int bufGx[10], bufGy[10]; //从目前座标到下一个座标之间座标的buffer
|
||
short bufCount; //设定目前要走到那一个座标
|
||
short walkFlag; // <20>????????????<3F>?<3F>?????????
|
||
float mx, my; //地图座标
|
||
float vx, vy; // ?<3F>?<3F>
|
||
|
||
//属性
|
||
short earth; // 佋 <20><>
|
||
short water; // ? <20><>
|
||
short fire; // ? <20><>
|
||
short wind; // ? <20><>
|
||
//rader使用
|
||
int dirCnt; // <20>?<3F>??????
|
||
//gemini使用
|
||
int spd; //移动的速度(0~63)( ?????? )
|
||
int crs; //方向(0~31)(正上方为0,顺时钟方向) <20>?( ???? )( <20>?????? )
|
||
int h_mini; // <20>?<3F>?
|
||
int v_mini; // <20>?<3F><>
|
||
//pattern使用
|
||
int anim_chr_no; //人物的编号(anim_tbl.h的编号)
|
||
int anim_chr_no_bak; //上一次的人物编号
|
||
int anim_no; //人物的动作编号
|
||
int anim_no_bak; //上一次的人物编号
|
||
int anim_ang; //动作的方向(0~7)(下0)
|
||
int anim_ang_bak; //上一次的方向
|
||
int anim_cnt; //第几张frame
|
||
int anim_frame_cnt; //这张frame停留时间
|
||
int anim_x; //X座标(Sprbin+Adrnbin)
|
||
int anim_y; //Y座标(Sprbin+Adrnbin)
|
||
int anim_hit; // ???<3F><>
|
||
// shan add +1
|
||
char fmname[33]; // 家族名称
|
||
// Robin 0728 ride Pet
|
||
int onRide;
|
||
char petName[16+1];
|
||
int petLevel;
|
||
int petHp;
|
||
int petMaxHp;
|
||
int petDamage;
|
||
int petFall;
|
||
#ifdef _MIND_ICON
|
||
unsigned int sMindIcon;
|
||
#endif
|
||
#ifdef _SHOWFAMILYBADGE_
|
||
unsigned int sFamilyIcon;
|
||
#endif
|
||
#ifdef FAMILY_MANOR_
|
||
unsigned int mFamilyIcon;
|
||
#endif
|
||
#ifdef _CHAR_MANOR_
|
||
unsigned int mManorIcon;
|
||
#endif
|
||
#ifdef _CHARTITLE_STR_
|
||
TITLE_STR TitleText;
|
||
#endif
|
||
#ifdef _CHARTITLE_
|
||
unsigned int TitleIcon;
|
||
#endif
|
||
#ifdef _NPC_EVENT_NOTICE
|
||
int noticeNo;
|
||
#endif
|
||
|
||
#ifdef _SKILL_ROAR
|
||
int petRoar; //大吼(克年兽)
|
||
#endif
|
||
#ifdef _SKILL_SELFEXPLODE //自爆
|
||
int petSelfExplode;
|
||
#endif
|
||
#ifdef _MAGIC_DEEPPOISION //剧毒
|
||
int petDeepPoision;
|
||
#endif
|
||
|
||
#ifdef _CHAR_PROFESSION // WON ADD 人物职业
|
||
int profession_class;
|
||
#endif
|
||
//#ifdef _BATTLESKILL // (不可开) Syu ADD 战斗技能介面
|
||
int warrioreffect;
|
||
//#endif
|
||
#ifdef _GM_IDENTIFY // Rog ADD GM识别
|
||
char gm_name[33];
|
||
#endif
|
||
#ifdef _STREET_VENDOR
|
||
char szStreetVendorTitle[64];
|
||
#endif
|
||
#ifdef _NPC_PICTURE
|
||
int picture;
|
||
int picturetemp;
|
||
#endif
|
||
#ifdef _PETSKILL_RIDE
|
||
int saveride;
|
||
#endif
|
||
#ifdef _MOUSE_DBL_CLICK
|
||
int index; // 禁断!! Server中的charaindex
|
||
#endif
|
||
|
||
#ifdef _SFUMATO
|
||
int sfumato; // 二次渲染图层色彩
|
||
#endif
|
||
};
|
||
|
||
typedef struct action ACTION;
|
||
|
||
/* ?????????????????? */
|
||
extern ACTION *pActTop;
|
||
extern ACTION *pActBtm;
|
||
|
||
/* <20>?????? */
|
||
extern ACTION *pJiki;
|
||
|
||
#ifdef _STONDEBUG_
|
||
/* ?????????? */
|
||
extern int ActCnt;
|
||
#endif
|
||
|
||
/* ?????????<3F>? *****************************************************/
|
||
ACTION *GetAction( UCHAR prio, UINT yobiSize );
|
||
|
||
/* ??????????? *****************************************************/
|
||
void InitAction( void );
|
||
|
||
/* ????????? *********************************************************/
|
||
void RunAction( void );
|
||
|
||
/* ???????????<3F>?<3F>************************************************/
|
||
void DeathAction( ACTION *pAct );
|
||
|
||
/* <20>??????<3F>?<3F> *******************************************************/
|
||
void DeathAllAction( void );
|
||
|
||
/* ???????????<3F>?<3F> ***********************************************/
|
||
void ClearAction( ACTION *pAct );
|
||
|
||
/* ?????<3F>??? *********************************************************/
|
||
void EndAction( void );
|
||
|
||
#endif
|