/
Crimson2/alias/
Crimson2/area.tmp/
Crimson2/area.tmp/AnomalySpaceDock/
Crimson2/area.tmp/AnomalyStation/
Crimson2/area.tmp/AntHill/
Crimson2/area.tmp/ArcticTerrarium/
Crimson2/area.tmp/BuilderCity/
Crimson2/area.tmp/Dungeon/
Crimson2/area.tmp/MiningDock/
Crimson2/area.tmp/PipeSystem/
Crimson2/area.tmp/RattArea/
Crimson2/area.tmp/RobotFactory/
Crimson2/area.tmp/SilverDale/
Crimson2/area.tmp/StarshipFearless/
Crimson2/area.tmp/StationConduits/
Crimson2/area.tmp/TerrariumAlpha/
Crimson2/area.tmp/TerrariumBeta/
Crimson2/area.tmp/TestArea/
Crimson2/area.tmp/Void/
Crimson2/area/
Crimson2/area/AnomalySpaceDock/
Crimson2/area/AnomalyStation/
Crimson2/area/MiningDock/
Crimson2/area/PipeSystem/
Crimson2/area/SilverDale/
Crimson2/area/StationConduits/
Crimson2/area/Void/
Crimson2/board/
Crimson2/clone/
Crimson2/lib/
Crimson2/mole/
Crimson2/mole/mole_src/HELP/
Crimson2/player/
Crimson2/util/
Crimson2/wldedit/
Crimson2/wldedit/res/
#define FIGHT_MOVECOST 1

#define FIGHT_CORPSE_KEY "body remnants remains corpse %s"

/* Fight/Damage flags */
#define FD_PUNCTURE   1<<0
#define FD_SLASH      1<<1
#define FD_CONCUSSIVE 1<<2
#define FD_HEAT       1<<3
#define FD_EMR        1<<4
#define FD_LASER      1<<5
#define FD_PSYCHIC    1<<6
#define FD_ACID       1<<7
#define FD_POISON     1<<8

#define FR_PUNCTURE   0
#define FR_SLASH      1
#define FR_CONCUSSIVE 2
#define FR_HEAT       3
#define FR_EMR        4
#define FR_LASER      5
#define FR_PSYCHIC    6
#define FR_ACID       7
#define FR_POISON     8

#define FR_NONE       9

struct WeaponListType {
  BYTE *wName;
  BYTE  wStrBonus;
  FLAG  wDamage;
  WORD *wSkill;
  WORD *wFamily;
};

#define FM_DEFAULT    0    /* when there is nothing else */
#define FM_WEAPON  1024
#define FM_EFFECT  2048
#define FM_UNARMED 4096    /* so we can have claw, bite etc */
/* what gets stored in the msg Indexes */
typedef struct FightMsgType {
  WORD fmType;
  STR *fmSrc;
  STR *fmDst;
  STR *fmRoom;
} FIGHTMSG;
#define FightMsg(x) ((FIGHTMSG*)(x))

extern struct WeaponListType weaponList[];
extern BYTE  *resistList[];

extern INDEX fightIndex;

extern void  FightInit(void);
extern void  FightIdle(void);
extern void  FightStart(THING *thing, THING *target, BYTE range, EXIT *exit);
extern void  FightStop(THING *thing);
extern void  FightMove(THING *thing, EXIT *exit);
extern void  FightAttack(THING *thing);
extern void  FightReload(THING *thing);
extern LWORD FightDamagePrimitive(THING *thing, THING *target, LWORD damage);
extern LWORD FightDamage(THING *thing, LWORD damage, WORD hitNum, FLAG damFlag, WORD damType, BYTE *weaponName);
extern void  FightKill(THING *thing, THING *target);