StoneAge/gmsv/include/battle.h
2018-08-07 00:51:35 -07:00

684 lines
18 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __BATTLE_H__
#define __BATTLE_H__
#define BATTLE_ENTRY_MAX 10
#define BATTLE_PLAYER_MAX 5
#define SIDE_OFFSET 10
#define BATTLE_STRING_MAX 4096
#define BATTLE_TIME_LIMIT (60*60)
#define DUELPOINT_RATE (0.1)
enum{
BATTLE_MODE_NONE = 0, // 无战斗状态
BATTLE_MODE_INIT, // 战斗初始化
BATTLE_MODE_BATTLE, // 战斗中
BATTLE_MODE_FINISH, // 战斗结束
BATTLE_MODE_STOP, // 战斗结束(未使用)
BATTLE_MODE_WATCHBC, // 观战初始化
BATTLE_MODE_WATCHPRE, // 观战(没作用)
BATTLE_MODE_WATCHWAIT, // 观战(没作用)
BATTLE_MODE_WATCHMOVIE, // 观战(没作用)
BATTLE_MODE_WATCHAFTER, // 观战(没作用)
BATTLE_MODE_END
};
enum{
BATTLE_TYPE_NONE = 0,
BATTLE_TYPE_P_vs_E = 1,
BATTLE_TYPE_P_vs_P = 2,
BATTLE_TYPE_E_vs_E = 3,
BATTLE_TYPE_WATCH = 4,
BATTLE_TYPE_DP_BATTLE = 5,
BATTLE_TYPE_BOSS_BATTLE = 6,
BATTLE_TYPE_END
};
enum{
BATTLE_CHARMODE_NONE = 0, // 无战斗状态
BATTLE_CHARMODE_INIT, // 战斗初始化
BATTLE_CHARMODE_C_WAIT, // 等待战斗指令
BATTLE_CHARMODE_C_OK, // 已输入战斗指令
BATTLE_CHARMODE_BATTLE, // 未使用
BATTLE_CHARMODE_RESCUE, // 由help状态进入的
BATTLE_CHARMODE_FINAL, // 战斗结束
BATTLE_CHARMODE_WATCHINIT, // 观战初始化
BATTLE_CHARMODE_COMMAND, // 未使用
BATTLE_CHARMODE_END
};
typedef enum{
BATTLE_ERR_NONE = 0,
BATTLE_ERR_NOTASK,
BATTLE_ERR_NOUSE,
BATTLE_ERR_PARAM,
BATTLE_ERR_ENTRYMAX,
BATTLE_ERR_TYPE,
BATTLE_ERR_CHARAINDEX,
BATTLE_ERR_BATTLEINDEX,
BATTLE_ERR_NOENEMY,
BATTLE_ERR_ALREADYBATTLE,
BATTLE_ERR_SAMEPARTY,
BATTLE_ERR_END
}BATTLE_ERR;
enum{
BATTLE_S_TYPE_PLAYER = 0,
BATTLE_S_TYPE_ENEMY,
BATTLE_S_TYPE_END
};
typedef enum{
BATTLE_COM_NONE,
BATTLE_COM_ATTACK,
BATTLE_COM_GUARD,
BATTLE_COM_CAPTURE,
BATTLE_COM_ESCAPE,
BATTLE_COM_PETIN,
BATTLE_COM_PETOUT,
BATTLE_COM_ITEM,
BATTLE_COM_BOOMERANG,
BATTLE_COM_COMBO,
BATTLE_COM_COMBOEND,
BATTLE_COM_WAIT,
BATTLE_COM_SEKIBAN = 1000,
BATTLE_COM_S_RENZOKU,
BATTLE_COM_S_GBREAK,
BATTLE_COM_S_GUARDIAN_ATTACK,
BATTLE_COM_S_GUARDIAN_GUARD,
BATTLE_COM_S_CHARGE,
BATTLE_COM_S_MIGHTY,
BATTLE_COM_S_POWERBALANCE,
BATTLE_COM_S_STATUSCHANGE,
BATTLE_COM_S_EARTHROUND0,
BATTLE_COM_S_EARTHROUND1,
BATTLE_COM_S_LOSTESCAPE,
BATTLE_COM_S_ABDUCT,
BATTLE_COM_S_STEAL,
BATTLE_COM_S_NOGUARD,
BATTLE_COM_S_CHARGE_OK,
BATTLE_COM_JYUJYUTU = 2000,
BATTLE_COM_COMPELESCAPE, //强制离开
#ifdef __ATTACK_MAGIC
BATTLE_COM_S_ATTACK_MAGIC, // 宠物魔法
#endif
#ifdef _PSKILL_FALLGROUND
BATTLE_COM_S_FALLRIDE, //落马术
#endif
#ifdef _PETSKILL_EXPLODE
BATTLE_COM_S_EXPLODE,
#endif
#ifdef _PETSKILL_TIMID
BATTLE_COM_S_TIMID,
#endif
#ifdef _PETSKILL_2TIMID
BATTLE_COM_S_2TIMID,
#endif
#ifdef _PETSKILL_ANTINTER
BATTLE_COM_S_ANTINTER,
#endif
#ifdef _PETSKILL_PROPERTY
BATTLE_COM_S_PROPERTYSKILL,
#endif
#ifdef _PETSKILL_TEAR
BATTLE_COM_S_PETSKILLTEAR,
#endif
#ifdef _BATTLE_LIGHTTAKE
BATTLE_COM_S_LIGHTTAKE,
#endif
#ifdef _BATTLE_ATTCRAZED // ANDY 疯狂暴走
BATTLE_COM_S_ATTCRAZED,
#endif
#ifdef _SHOOTCHESTNUT // Syu ADD 宠技:丢栗子
BATTLE_COM_S_ATTSHOOT,
#endif
#ifdef _BATTLESTEAL_FIX
BATTLE_COM_S_STEALMONEY,
#endif
#ifdef _PRO_BATTLEENEMYSKILL
BATTLE_COM_S_ENEMYRELIFE, //NPC ENEMY 复活技能
BATTLE_COM_S_ENEMYREHP, //NPC ENEMY 补血技能
BATTLE_COM_S_ENEMYHELP, //NPC ENEMY 招人
#endif
#ifdef _SKILL_DAMAGETOHP
BATTLE_COM_S_DAMAGETOHP, //嗜血技
#endif
#ifdef _Skill_MPDAMAGE
BATTLE_COM_S_MPDAMAGE, //MP伤害
#endif
#ifdef _SKILL_WILDVIOLENT_ATT
BATTLE_COM_S_WILDVIOLENTATTACK, //狂暴攻击 vincent add 2002/05/16
#endif
#ifdef _SKILL_SPEEDY_ATT
BATTLE_COM_S_SPEEDYATTACK, //疾速攻击 vincent add 2002/05/20
#endif
#ifdef _SKILL_GUARDBREAK2
BATTLE_COM_S_GBREAK2, //破除防御2 vincent add 2002/05/20
#endif
#ifdef _SKILL_SACRIFICE
BATTLE_COM_S_SACRIFICE, //救援 vincent add 2002/05/30
#endif
#ifdef _SKILL_WEAKEN
BATTLE_COM_S_WEAKEN, //虚弱 vincent add 2002/07/11
#endif
#ifdef _SKILL_DEEPPOISON
BATTLE_COM_S_DEEPPOISON, //剧毒 vincent add 2002/07/16
#endif
#ifdef _SKILL_BARRIER
BATTLE_COM_S_BARRIER, //魔障 vincent add 2002/07/16
#endif
#ifdef _SKILL_NOCAST
BATTLE_COM_S_NOCAST, //沉默 vincent add 2002/07/16
#endif
#ifdef _SKILL_ROAR
BATTLE_COM_S_ROAR, //大吼 vincent add 2002/07/11
#endif
#ifdef _BATTLENPC_WARP_PLAYER
BATTLE_COM_WARP, // npc warp player
#endif
#ifdef _SKILL_TOOTH
BATTLE_COM_S_TOOTHCRUSHE,
#endif
#ifdef _PSKILL_MODIFY
BATTLE_COM_S_MODIFYATT,
#endif
#ifdef _PSKILL_MDFYATTACK
BATTLE_COM_S_MDFYATTACK,
#endif
#ifdef _MAGIC_SUPERWALL
BATTLE_COM_S_SUPERWALL,
#endif
#ifdef _SKILL_REFRESH
BATTLE_COM_S_REFRESH,
#endif
#ifdef _VARY_WOLF
BATTLE_COM_S_VARY,
#endif
#ifdef _PETSKILL_SETDUCK
BATTLE_COM_S_SETDUCK,
#endif
#ifdef _MAGICPET_SKILL
BATTLE_COM_S_SETMAGICPET,
#endif
#ifdef _PROFESSION_SKILL // WON ADD 人物职业技能
// 巫师
BATTLE_COM_S_VOLCANO_SPRINGS, // 火山泉
BATTLE_COM_S_FIRE_BALL, // 火星球
BATTLE_COM_S_FIRE_SPEAR, // 火龙枪
BATTLE_COM_S_SUMMON_THUNDER, // 召雷术
BATTLE_COM_S_CURRENT, // 电流术
BATTLE_COM_S_STORM, // 暴风雨
BATTLE_COM_S_ICE_ARROW, // 冰箭术
BATTLE_COM_S_ICE_CRACK, // 冰爆术
BATTLE_COM_S_ICE_MIRROR, // 冰镜术
BATTLE_COM_S_DOOM, // 世界末日
BATTLE_COM_S_BLOOD, // 嗜血成性
BATTLE_COM_S_BLOOD_WORMS, // 嗜血蛊
BATTLE_COM_S_SIGN, // 一针见血
BATTLE_COM_S_FIRE_ENCLOSE, // 火附体
BATTLE_COM_S_ICE_ENCLOSE, // 冰附体
BATTLE_COM_S_THUNDER_ENCLOSE, // 雷附体
BATTLE_COM_S_ENCLOSE, // 附身术
BATTLE_COM_S_TRANSPOSE, // 移形换位
// 勇士
BATTLE_COM_S_BRUST, // 爆击
BATTLE_COM_S_CHAIN_ATK, // 连环攻击
BATTLE_COM_S_AVOID, // 回避
BATTLE_COM_S_RECOVERY, // 补血
BATTLE_COM_S_WEAPON_FOCUS, // 武器专精
BATTLE_COM_S_REBACK, // 状态回复
BATTLE_COM_S_CHAIN_ATK_2, // 双重攻击
BATTLE_COM_S_SCAPEGOAT, // 舍已为友
BATTLE_COM_S_ENRAGE, // 激化攻击
BATTLE_COM_S_COLLECT, // 能量聚集
BATTLE_COM_S_FOCUS, // 专注战斗
BATTLE_COM_S_SHIELD_ATTACK, // 盾击
BATTLE_COM_S_DUAL_WEAPON, // 二刀流
BATTLE_COM_S_DEFLECT, // 格档
BATTLE_COM_S_THROUGH_ATTACK, // 贯穿攻击
BATTLE_COM_S_CAVALRY, // 座骑攻击
BATTLE_COM_S_DEAD_ATTACK, // 濒死攻击
BATTLE_COM_S_CONVOLUTE, // 回旋攻击
BATTLE_COM_S_CHAOS, // 混乱攻击
// 猎人
BATTLE_COM_S_TRAP, // 陷阱
BATTLE_COM_S_TRACK, // 追寻敌踪
BATTLE_COM_S_DOCILE, // 驯伏宠物
BATTLE_COM_S_ENRAGE_PET, // 激怒宠物
BATTLE_COM_S_DRAGNET, // 天罗地网
BATTLE_COM_S_ENTWINE, // 树根缠绕
BATTLE_COM_S_AUTARKY, // 自给自足
BATTLE_COM_S_PLUNDER, // 体掠夺
BATTLE_COM_S_TOXIN_WEAPON, // 毒素武器
BATTLE_COM_S_RESIST_FIRE, // 火抗性提升
BATTLE_COM_S_RESIST_ICE, // 冰抗性提升
BATTLE_COM_S_RESIST_THUNDER, // 雷抗性提升
BATTLE_COM_S_G_RESIST_FIRE, // 团体火抗性提升
BATTLE_COM_S_G_RESIST_ICE, // 团体冰抗性提升
BATTLE_COM_S_G_RESIST_THUNDER, // 团体雷抗性提升
BATTLE_COM_S_ATTACK_WEAK, // 弱点攻击
BATTLE_COM_S_INSTIGATE, // 挑拨
BATTLE_COM_S_OBLIVION, // 遗忘
#ifdef _PROFESSION_ADDSKILL
BATTLE_COM_S_RESIST_F_I_T, // 自然威能
BATTLE_COM_S_CALL_NATURE, // 号召自然
BATTLE_COM_S_BOUNDARY, // 四属性结界
#endif
#endif
#ifdef _PET_SKILL_SARS // WON ADD 毒煞蔓延
BATTLE_COM_S_SARS,
#endif
#ifdef _SONIC_ATTACK // WON ADD 音波攻击
BATTLE_COM_S_SONIC,
BATTLE_COM_S_SONIC2,
#endif
#ifdef _PETSKILL_REGRET
BATTLE_COM_S_REGRET,
BATTLE_COM_S_REGRET2,
#endif
#ifdef _PETSKILL_GYRATE
BATTLE_COM_S_GYRATE,
#endif
#ifdef _PETSKILL_ACUPUNCTURE
BATTLE_COM_S_ACUPUNCTURE,
#endif
#ifdef _PETSKILL_RETRACE
BATTLE_COM_S_RETRACE,
#endif
#ifdef _PETSKILL_HECTOR
BATTLE_COM_S_HECTOR,
#endif
#ifdef _PETSKILL_FIREKILL
BATTLE_COM_S_FIREKILL,
#endif
#ifdef _PETSKILL_DAMAGETOHP
BATTLE_COM_S_DAMAGETOHP2, //暗月狂狼(嗜血技的变体)
#endif
#ifdef _PETSKILL_BECOMEFOX
BATTLE_COM_S_BECOMEFOX,
#endif
#ifdef _PETSKILL_BECOMEPIG
BATTLE_COM_S_BECOMEPIG,
#endif
#ifdef _PETSKILL_SHOWMERCY
BATTLE_COM_S_SHOWMERCY,
#endif
#ifdef _PETSKILL_LER
BATTLE_COM_S_BAT_FLY, // 雷尔技 - 群蝠四窜
BATTLE_COM_S_DIVIDE_ATTACK, // 雷尔技 - 分身地裂
#endif
#ifdef _PETSKILL_BATTLE_MODEL
BATTLE_COM_S_BATTLE_MODEL, // 宠物技能战斗模组
#endif
BATTLE_COM_END
}BATTLE_COM;
enum{
BATTLE_RET_NORMAL,
BATTLE_RET_CRITICAL,
BATTLE_RET_MISS,
BATTLE_RET_DODGE,
BATTLE_RET_ALLGUARD,
#ifdef _EQUIT_ARRANGE
BATTLE_RET_ARRANGE,
#endif
BATTLE_RET_END
}BATTLE_RET;
#define BC_FLG_NEW (1<<0)
#define BC_FLG_DEAD (1<<1)
#define BC_FLG_PLAYER (1<<2)
#define BC_FLG_POISON (1<<3)
#define BC_FLG_PARALYSIS (1<<4)
#define BC_FLG_SLEEP (1<<5)
#define BC_FLG_STONE (1<<6)
#define BC_FLG_DRUNK (1<<7)
#define BC_FLG_CONFUSION (1<<8)
#define BC_FLG_HIDE (1<<9)
#define BC_FLG_REVERSE (1<<10)
#ifdef _MAGIC_WEAKEN
#define BC_FLG_WEAKEN (1<<11) // 虚弱
#endif
#ifdef _MAGIC_DEEPPOISON
#define BC_FLG_DEEPPOISON (1<<12) // 剧毒
#endif
#ifdef _MAGIC_BARRIER
#define BC_FLG_BARRIER (1<<13) // 魔障
#endif
#ifdef _MAGIC_NOCAST
#define BC_FLG_NOCAST (1<<14) // 沉默
#endif
#ifdef _PET_SKILL_SARS // WON ADD 毒煞蔓延
#define BC_FLG_SARS (1<<15) // 毒煞
#endif
#ifdef _PROFESSION_SKILL // WON ADD 人物职业技能
#define BC_FLG_DIZZY (1<<16) // 晕眩
#define BC_FLG_ENTWINE (1<<17) // 树根缠绕
#define BC_FLG_DRAGNET (1<<18) // 天罗地网
#define BC_FLG_ICECRACK (1<<19) // 冰爆术
#define BC_FLG_OBLIVION (1<<20) // 遗忘
#define BC_FLG_ICEARROW (1<<21) // 冰箭
#define BC_FLG_BLOODWORMS (1<<22) // 嗜血蛊
#define BC_FLG_SIGN (1<<23) // 一针见血
#define BC_FLG_CARY (1<<24) // 挑拨
#define BC_FLG_F_ENCLOSE (1<<25) // 火附体
#define BC_FLG_I_ENCLOSE (1<<26) // 冰附体
#define BC_FLG_T_ENCLOSE (1<<27) // 雷附体
#ifdef _PROFESSION_ADDSKILL
#define BC_FLG_WATER (1<<28) // 水附体
#define BC_FLG_FEAR (1<<29) // 恐惧
#endif
#ifdef _PETSKILL_LER
#define BC_FLG_CHANGE (1<<30) // 雷尔变身
#endif
#endif
#define BP_FLG_JOIN (1<<0)
#define BP_FLG_PLAYER_MENU_OFF (1<<1)
#define BP_FLG_BOOMERANG (1<<2)
#define BP_FLG_PET_MENU_OFF (1<<3)
#define BP_FLG_ENEMY_SURPRISAL (1<<4)
#define BP_FLG_PLAYER_SURPRISAL (1<<5)
#define CHAR_BATTLEFLG_ULTIMATE (1<<0)
#define CHAR_BATTLEFLG_AIBAD (1<<1)
#define CHAR_BATTLEFLG_REVERSE (1<<2)
#define CHAR_BATTLEFLG_GUARDIAN (1<<3)
#define CHAR_BATTLEFLG_NORETURN (1<<4)
#define CHAR_BATTLEFLG_RECOVERY (1<<5)
#define CHAR_BATTLEFLG_ABIO (1<<6)
#define CHAR_BATTLEFLG_NODUCK (1<<7)
#define GETITEM_MAX 3
typedef struct
{
int attacker;
}INVADER;
typedef struct
{
int charaindex;
int bid;
int escape;
int flg;
int guardian;
int duelpoint;
int getitem[GETITEM_MAX];
}BATTLE_ENTRY;
#define BENT_FLG_ULTIMATE (1<<0)
typedef struct
{
int type;
int flg;
int common_dp;
BATTLE_ENTRY Entry[BATTLE_ENTRY_MAX];
}BATTLE_SIDE;
#define BSIDE_FLG_SURPRISE ( 1 << 0 )
#define BSIDE_FLG_HELP_OK ( 1 << 1 )
typedef struct _Battle
{
BOOL use; /* 银匀化中月井升丹井 */
int battleindex; /* 田玄伙 寞 */
int mode; /* 蜇箕及爵 乒□玉 */
int type; /* 爵 正奶皿 (0:骚橘)(1:DUEL)(2:示旦爵) */
int dpbattle; /* DP田玄伙井 */
int norisk; /* 韶氏匹手伉旦弁及 中田玄伙井" */
int turn; /* 正□件醒 */
int timer; /* 它巨奶玄羁卞银丹正奶穴 */
int leaderindex; /* 巨件市它件玄毛粟仇仄凶平乓仿及奶件犯永弁旦 */
int winside; /* 厍仄凶扔奶玉 */
int field_att; /* 白奴□伙玉及箪岭 */
int att_count; /* 白奴□伙玉及箪岭 祭 及正奶穴 */
int att_pow; /* 白奴□伙玉及箪岭 祭 及由伐□ */
int field_no;
int flg; /* 备潘白仿弘 */
BATTLE_SIDE Side[2];
#ifdef _BATTLE_TIMESPEED
unsigned int CreateTime;
unsigned int EndTime;
unsigned int PartTime;
int flgTime;
#endif
#ifdef _PROFESSION_ADDSKILL
//冰爆术存放
int ice_count;//暂存数量
int ice_bout[20];//回合计数
BOOL ice_use[20];//是否使用
int ice_toNo[20];//对象
int ice_level[20];//攻击力
int ice_array[20];
int ice_charaindex[20];
int ice_attackNo[20];
#endif
#ifdef _DEATH_CONTEND
int menum;
int tonum;
#endif
#ifdef _ACTION_BULLSCR
int enemynum;
#endif
int iEntryBack[BATTLE_ENTRY_MAX*2]; // 蟆正□件瓒 今木化中凶丢件田□
int iEntryBack2[BATTLE_ENTRY_MAX*2]; // 蟆正□件瓒 今木化中凶丢件田□
int createindex; /* 仇及爵 毛综曰请仄凶平乓仿奶件犯永弁旦(NPC卅升) */
int (*WinFunc)( int battleindex, int charaindex );
#ifdef _DEATH_CONTEND//计算胜败func
int (*PkFunc)( int menum, int tonum, int winside, int battlemap);
int battlemap;
#endif
struct _Battle *pNext; // 戚及棋爵弘伙□皿
struct _Battle *pBefore; // 蟆及棋爵弘伙□皿
}BATTLE;
#define BATTLE_FLG_FREEDP ( 1 << 0 ) // 仆化手 蛹日卅中
#define BATTLE_FLG_CHARALOST ( 1 << 1 ) // 平乓仿互韶氏分曰 仃凶曰仄化中月
enum{ // 晓及field_att 卞 木月袄
BATTLE_ATTR_NONE = 0, // 箪岭
BATTLE_ATTR_EARTH, // 哗
BATTLE_ATTR_WATER, //
BATTLE_ATTR_FIRE, // 绍
BATTLE_ATTR_WIND, // 氘
BATTLE_ATTR_END
};
//krynn 2001/12/28
enum
{
BATTLE_SIDE_RIGHT, // 战斗中右侧 right side of battle
BATTLE_SIDE_LEFT, // 战斗中左侧 left side of battle
BATTLE_SIDE_WATCH, // 观战 watch battle player
};
//krynn end
#define TARGET_SIDE_0 20 // 惘础 扔奶玉ㄟ 隙烂
#define TARGET_SIDE_1 21 // 尔础 扔奶玉ㄠ 隙烂
#define TARGET_ALL 22 // 蝈 隙烂
#ifdef __ATTACK_MAGIC
#define TARGET_SIDE_0_B_ROW 26 // 右下後一列
#define TARGET_SIDE_0_F_ROW 25 // 右下前一列
#define TARGET_SIDE_1_F_ROW 24 // 左上前一列
#define TARGET_SIDE_1_B_ROW 23 // 左上後一列
// won add
#define TARGER_THROUGH 27
#endif
extern int gItemCrushRate; // 莽 犯白巧伙玄
extern BATTLE *BattleArray; /* 爵 正旦弁 */
extern int BATTLE_battlenum; /* 及醒 */
extern char szAllBattleString[BATTLE_STRING_MAX]; /* 爵 卞银丹戊穴件玉 侬 */
extern char *pszBattleTop, *pszBattleLast; /* 爵 卞银丹 侬 及匏 */
extern char szBadStatusString[]; // 旦 □正旦唱橘迕 侬
extern int gWeponType; // 蜇箕及 湛及潘
extern float gDamageDiv; // 母丢□斥坌喃
#define BATTLE_CHECKINDEX( a ) ( ((a)>=BATTLE_battlenum || (a)<0 )?(FALSE):(TRUE) )
#define BATTLE_CHECKSIDE( a ) ( ((a)>=2 || (a)<0)?(FALSE):( TRUE) )
#define BATTLE_CHECKNO( a ) ( ((a)>=20 || (a)<0 )?(FALSE):(TRUE) )
#define BATTLE_CHECKADDRESS( a ) ((&BattleArray[0])<=(a) && (a)<=(&BattleArray[BATTLE_battlenum-1] )?(TRUE):(FALSE) )
#define IsBATTLING( a ) (CHAR_getWorkInt((a),CHAR_WORKBATTLEMODE)?(TRUE):(FALSE))
#define STRCPY_TAIL( _pszTop, _pszLast, _szBuffer) { int _len = strlen( _szBuffer ); ( _pszTop + _len < (_pszLast)-1 )?( memcpy( _pszTop, _szBuffer, _len ), _pszTop += _len, _pszTop[0] = 0):(0); }
#define BATTLESTR_ADD( _szBuffer ){ int _len = strlen( _szBuffer ); ( pszBattleTop + _len < ( pszBattleLast)-1 )?( memcpy( pszBattleTop, _szBuffer, _len ), pszBattleTop += _len, pszBattleTop[0] = 0):(0); }
#define BATTLE_MAP_MAX 219
#define CH_FIX_PLAYERLEVELUP (+2) // 皿伊奶乩□及伊矛伙互失永皿
#define CH_FIX_PLAYERDEAD (-2) // 皿伊奶乩□互骚橘韶
#define CH_FIX_PLAYEULTIMATE (-4) // 皿伊奶乩□互失伙 奴丢永玄韶
#define CH_FIX_PETESCAPE (-1) // 矢永玄互 仆凶
#define AI_FIX_PETLEVELUP (+5*100) // 矢永玄互伊矛伙失永皿
#define AI_FIX_PETWIN (+1) // 矢永玄互衬毛逦仄凶
#define AI_FIX_PETGOLDWIN (+2*10) // 矢永玄互伊矛伙及嫖中衬毛逦仄凶
#define AI_FIX_PETRECOVERY (+10) // 爵 卞荚汊仄化手日匀凶
#define AI_FIX_PETRESSURECT (+3*100) // 爵 卞汊唾仄化手日匀凶
//#define AI_FIX_PETRECOVERY (+50) // 爵 卞荚汊仄化手日匀凶
#define AI_FIX_SEKKAN (-2*100) // 愤坌及矢永玄毛 猾
#define AI_FIX_PLAYERULTIMATE (-10*100) // 愤坌及潜谛互失伙 奴丢永玄韶
#define AI_FIX_PETULTIMATE (-10*100) // 矢永玄互失伙 奴丢永玄韶
#define AI_FIX_PLAYERDEAD (-1*100) // 愤坌及潜谛互竣濮
#define AI_FIX_PETDEAD (-5*100) // 矢永玄互竣濮
#ifdef _Item_ReLifeAct
int BATTLE_getBattleDieIndex( int battleindex, int bid );
#endif
int BATTLE_No2Index( int battleindex, int No);
int BATTLE_Index2No( int battleindex, int charaindex);
BOOL BATTLE_initBattleArray( int battlenum);
int BATTLE_CreateBattle( void );
int BATTLE_DeleteBattle( int battleindex);
int BATTLE_NewEntry( int charaindex, int battleindex, int side);
#define BATTLE_Exit( charaindex, battleindex) _BATTLE_Exit( __FILE__, __LINE__, charaindex, battleindex)
INLINE int _BATTLE_Exit( char *file, int line, int charaindex ,int battleindex);
#define BATTLE_ExitAll( battleindex) _BATTLE_ExitAll( __FILE__, __LINE__, battleindex)
INLINE void _BATTLE_ExitAll( char *file, int line, int battleindex);
int BATTLE_CreateVsPlayer( int charaindex0, int charaindex1);
int BATTLE_CreateVsEnemy( int charaindex, int mode, int npcindex);
int BATTLE_CountEntry( int battleindex, int side);
int BATTLE_Loop( void );
int BATTLE_FinishSet( int battleindex );
int BATTLE_StopSet( int battleindex );
int BATTLE_RescueEntry( int charaindex, int toindex);
int BATTLE_PetDefaultExit( int charaindex, int battleindex);
int BATTLE_PetDefaultEntry(
int charaindex, // 矢永玄毛 匀化中月皿伊奶乩□及
int battleindex,// 田玄伙奶件犯永弁旦
int side
);
BOOL BATTLE_RescueTry( int charaindex);
BOOL BATTLE_RescueParentTry(
int charaindex,
int pindex
);
int BATTLE_DefaultAttacker( int battleindex, int side);
BOOL BATTLE_IsThrowWepon( int itemindex);
void BATTLE_BadStatusString( int defNo, int status );
int BATTLE_MultiList( int battleindex, int toNo, int ToList[] );
BOOL BATTLE_IsCharge( int com );
BOOL BATTLE_CanMoveCheck( int charaindex );
int BATTLE_TargetCheck( int battleindex, int defNo);
char *BATTLE_CharTitle( int charaindex );
void BATTLE_EscapeDpSend( int battleindex, int charaindex );
int BATTLE_GetDuelPoint( int battleindex, int side, int num);
int BATTLE_TargetCheckDead( int battleindex, int defNo);
void BATTLE_MultiListDead( int battleindex, int toNo, int ToList[] );
BOOL BATTLE_WatchTry( int charaindex);
int BATTLE_WatchEntry( int charaindex, int toindex);
void BATTLE_WatchStop( int charaindex );
int BATTLE_WatchUnLink( int battleindex );
void BATTLE_BpSendToWatch( BATTLE *pBattle, char *pszBcString);
int BATTLE_GetWepon( int charaindex );
#ifdef _ITEM_EQUITSPACE
int BATTLE_GetEqShield( int charaindex );
#endif
int BATTLE_GetAttackCount( int charaindex );
int DoujyouRandomWeponSet( int charaindex );
void BATTLE_AttReverse( int charaindex );
void BATTLE_BadStatusAllClr( int charaindex );
#define CHAR_GETWORKINT_HIGH( index, pos ) ( CHAR_getWorkInt( (index), (pos) ) >> 16 )
#define CHAR_SETWORKINT_HIGH( index, pos, set ) { int iTmp = CHAR_getWorkInt( (index), (pos) ) & 0xFFFF, work = (set); CHAR_setWorkInt( (index), (pos), (work << 16)|iTmp ); }
#define CHAR_GETWORKINT_LOW( index, pos ) ( CHAR_getWorkInt( (index), (pos) ) & 0xFFFF )
#define CHAR_SETWORKINT_LOW( index, pos, set ) { int iTmp = CHAR_getWorkInt( index, pos ) & 0xFFFF0000, work = (set); CHAR_setWorkInt( (index), (pos), (work & 0x0000FFFF) | iTmp ); }
int Battle_getTotalBattleNum();
#ifdef _TYPE_TOXICATION
void CHAR_ComToxicationHp( int charaindex);
#endif
#ifdef _PROFESSION_SKILL // WON ADD 人物职业技能
void BATTLE_ProfessionStatus_init( int battleindex, int charaindex );
void BATTLE_ProfessionStatusSeq( int battleindex, int charaindex);
#endif
#endif