sin-2015/maneroboss.h
1999-04-22 00:00:00 +00:00

129 lines
No EOL
2.9 KiB
C++

#ifndef __MANEROBOSS_H__
#define __MANEROBOSS_H__
#include "g_local.h"
#include "actor.h"
#include "weapon.h"
#include "rocketpack.h"
#include "nuke.h"
class EXPORT_FROM_DLL ManeroCopter:public ScriptModel
{
private:
float lastrockettime;
float lastguntime;
float lastgrenadetime;
Vector lastfiredir;
EntityPtr maneromodel;
EntityPtr manerogun;
public:
CLASS_PROTOTYPE(ManeroCopter);
ManeroCopter::ManeroCopter();
virtual void Postthink(void);
void StartAttacking(Event *ev);
void StopAttacking(Event *ev);
void RemoveManero(Event *ev);
void FireRockets(Event *ev);
void FireGrenade(void);
void FireGun(void);
void TraceAttack( Vector start, Vector end, int damage, trace_t *trace, int numricochets, int kick);
void FireBullets( Vector spread, int mindamage, int maxdamage, Vector src, Vector dir);
void FireTracer(Vector src, Vector end);
Vector GunPosition(void);
virtual void Archive( Archiver &arc );
virtual void Unarchive( Archiver &arc );
};
inline EXPORT_FROM_DLL void ManeroCopter::Archive (Archiver &arc)
{
ScriptModel::Archive(arc);
arc.WriteFloat(lastrockettime);
arc.WriteFloat(lastguntime);
arc.WriteFloat(lastgrenadetime);
arc.WriteVector(lastfiredir);
arc.WriteSafePointer(maneromodel);
arc.WriteSafePointer(manerogun);
}
inline EXPORT_FROM_DLL void ManeroCopter::Unarchive (Archiver &arc)
{
ScriptModel::Unarchive(arc);
arc.ReadFloat(&lastrockettime);
arc.ReadFloat(&lastguntime);
arc.ReadFloat(&lastgrenadetime);
arc.ReadVector(&lastfiredir);
arc.ReadSafePointer(&maneromodel);
arc.ReadSafePointer(&manerogun);
}
class EXPORT_FROM_DLL ManeroCopterTracer:public Entity
{
public:
CLASS_PROTOTYPE(ManeroCopterTracer);
ManeroCopterTracer::ManeroCopterTracer();
void RemoveTracer(Event *ev);
};
class EXPORT_FROM_DLL ManeroBoss : public Actor
{
private:
WeaponPtr secondaryWeapon;
public:
CLASS_PROTOTYPE( ManeroBoss );
ManeroBoss::ManeroBoss();
virtual void Postthink(void);
void ShieldsOn(Event *ev);
void ShieldsOff(Event *ev);
void CloakOn(Event *ev);
void CloakOff(Event *ev);
void FireNuke(Event *ev);
virtual void ArmorDamage(Event *ev);
void Pain(Event *ev);
void Dead(Event *ev);
void Killed(Event *ev);
virtual void Archive( Archiver &arc );
virtual void Unarchive( Archiver &arc );
};
inline EXPORT_FROM_DLL void ManeroBoss::Archive (Archiver &arc)
{
Actor::Archive(arc);
arc.WriteSafePointer(secondaryWeapon);
}
inline EXPORT_FROM_DLL void ManeroBoss::Unarchive (Archiver &arc)
{
Actor::Unarchive(arc);
arc.ReadSafePointer(&secondaryWeapon);
}
class EXPORT_FROM_DLL ManeroStingerPack : public StingerPack
{
public:
CLASS_PROTOTYPE( ManeroStingerPack );
ManeroStingerPack();
virtual void Shoot( Event *ev );
};
class EXPORT_FROM_DLL ManeroIP36 : public IP36
{
public:
CLASS_PROTOTYPE( ManeroIP36 );
ManeroIP36();
virtual void Shoot( Event *ev );
};
#endif