135 lines
5.3 KiB
C++
135 lines
5.3 KiB
C++
|
|
//initialization functions that should be useful...
|
|
void generic_monster_spawnnow (edict_t *self);
|
|
void generic_armor_spawnnow (edict_t *self);
|
|
void dekker_init (edict_t *self);
|
|
void generic_leader_init (edict_t *self);
|
|
void generic_grunt_init (edict_t *self);
|
|
void generic_heavyweapons_init (edict_t *self);
|
|
void generic_npc_init (edict_t *self);
|
|
void generic_animal_init (edict_t *self);
|
|
void generic_armor_init(edict_t *self);
|
|
|
|
typedef enum
|
|
{
|
|
EXPRESSION_PRIORITY_LOWEST=0,
|
|
EXPRESSION_PRIORITY_LOW,
|
|
EXPRESSION_PRIORITY_HIGH,
|
|
EXPRESSION_PRIORITY_HIGHEST,
|
|
} expressionPriority_e;
|
|
|
|
typedef enum
|
|
{
|
|
VARIETY_PRIORITY_LOWEST=0,
|
|
VARIETY_PRIORITY_LOW,
|
|
VARIETY_PRIORITY_HIGH,
|
|
VARIETY_PRIORITY_HIGHEST,
|
|
} varietyPriority_e;
|
|
|
|
class generic_human_ai : public ai_c
|
|
{
|
|
protected:
|
|
virtual void RegisterSkins(void);
|
|
virtual void RegisterGoreSkins(void);
|
|
|
|
virtual void RegisterFaceSkin(const char *theMaterialName, const char *faceSkinName, expressionPriority_e expressionPriorityVal);
|
|
virtual void RegisterSkin(const char *theMaterialName, const char *theSkinName, varietyPriority_e varietyPriorityVal);
|
|
|
|
virtual void RegisterFaceSkins(const char *faceBase, varietyPriority_e varietyPriorityVal);
|
|
virtual void RegisterTalkFaceSkins(const char *faceBase, varietyPriority_e varietyPriorityVal);
|
|
public:
|
|
virtual const char* GetInterpFile(char *theclass, char *subclass);
|
|
virtual ~generic_human_ai(){}
|
|
virtual void Init(edict_t *monster, char *theclass, char* subclass);
|
|
virtual int GetClassCode(void){return AI_GENERIC;}//this should be different for everybody in this class family
|
|
generic_human_ai():ai_c(){}
|
|
generic_human_ai(generic_human_ai *orig):ai_c(orig){}
|
|
};
|
|
|
|
class playercorpse_ai : public generic_human_ai
|
|
{
|
|
protected:
|
|
virtual void RegisterSkins(void){}
|
|
public:
|
|
virtual action_c *DeathAction(decision_c *od, action_c *oa, mmove_t *newanim, edict_t &monster, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point);
|
|
virtual void AddBody(edict_t *monster);
|
|
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
|
|
virtual int GetClassCode(void){return AI_PLAYERCORPSE;}//this should be different for everybody in this class family
|
|
};
|
|
|
|
class generic_meso_ai : public generic_human_ai
|
|
{
|
|
protected:
|
|
public:
|
|
virtual const char* GetInterpFile(char *theclass, char *subclass);
|
|
virtual void AddBody(edict_t *monster);
|
|
};
|
|
|
|
class blownpart_ai : public generic_human_ai
|
|
{
|
|
private:
|
|
protected:
|
|
float severTime;
|
|
bool removeMe;
|
|
bool Stopped;
|
|
bool frozen;
|
|
bool bFading;
|
|
virtual qboolean IsFirstFrameTime(void){return false;}
|
|
public:
|
|
virtual const char* GetInterpFile(char *theclass, char *subclass);
|
|
virtual const char* GetObjectSkin(char *theclass, char *subclass);
|
|
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
|
|
virtual int GetClassCode(void){return AI_BLOWNPART;}//this should be different for everybody in this class family
|
|
virtual void Think(edict_t &monster);
|
|
|
|
blownpart_ai():generic_human_ai(){}
|
|
blownpart_ai(blownpart_ai *orig);
|
|
virtual void Evaluate(blownpart_ai *orig);
|
|
};
|
|
|
|
class generic_ghoul_dog_ai : public ai_c//generic_human_ai
|
|
{
|
|
public:
|
|
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
|
|
virtual int GetTeam(edict_t &monster){return 1;}
|
|
virtual int GetClassCode(void){return AI_GENERIC_DOG;}//this should be different for everybody in this class family
|
|
|
|
virtual action_c *AttackAction(decision_c *od, action_c *oa, mmove_t *newanim, edict_t *attackTarget, vec3_t attackPos, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
|
|
virtual action_c *WalkAction(decision_c *od, action_c *oa, mmove_t *newanim, vec3_t destination, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
|
|
|
|
protected:
|
|
virtual void AddBody(edict_t *monster);
|
|
};
|
|
|
|
class dog_husky_ai : public generic_ghoul_dog_ai
|
|
{
|
|
protected:
|
|
virtual void AddBody(edict_t *monster);
|
|
public:
|
|
virtual void Init(edict_t *monster, char *ghoulname, char* subclass) {generic_ghoul_dog_ai::Init(monster, ghoulname, subclass);}
|
|
virtual int GetClassCode(void){return AI_DOG_HUSKY;}//this should be different for everybody in this class family
|
|
};
|
|
|
|
class dog_rottweiler_ai : public generic_ghoul_dog_ai
|
|
{
|
|
protected:
|
|
virtual void AddBody(edict_t *monster);
|
|
public:
|
|
virtual void Init(edict_t *monster, char *ghoulname, char* subclass) {generic_ghoul_dog_ai::Init(monster, ghoulname, subclass);}
|
|
virtual int GetClassCode(void){return AI_DOG_ROTTWEILER;}//this should be different for everybody in this class family
|
|
};
|
|
|
|
class cow_ai : public ai_c
|
|
{
|
|
public:
|
|
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
|
|
virtual int GetTeam(edict_t &monster){return 100;}
|
|
virtual int GetClassCode(void){return AI_GENERIC_COW;}//this should be different for everybody in this class family
|
|
|
|
// virtual action_c *AttackAction(decision_c *od, action_c *oa, mmove_t *newanim, edict_t *attackTarget, vec3_t attackPos, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
|
|
// virtual action_c *WalkAction(decision_c *od, action_c *oa, mmove_t *newanim, vec3_t destination, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
|
|
|
|
protected:
|
|
virtual void AddBody(edict_t *monster);
|
|
};
|
|
|