Slight cleanup to the build/dismantle sendevents
This commit is contained in:
parent
54d2fe4e0b
commit
5d37d48c23
6 changed files with 130 additions and 100 deletions
|
@ -19,22 +19,10 @@ ClientGame_ConsoleCommand(void)
|
||||||
{
|
{
|
||||||
switch(argv(0)) {
|
switch(argv(0)) {
|
||||||
case "build":
|
case "build":
|
||||||
int type = stoi(argv(1));
|
sendevent("TFCBuild", "i", stoi(argv(1)));
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case 1:
|
|
||||||
sendevent("TFC_BuildDispenser", "");
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case "dismantle":
|
||||||
sendevent("TFC_BuildSentry", "");
|
sendevent("TFCDismantle", "i", stoi(argv(1)));
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
sendevent("TFC_BuildTele", "");
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
sendevent("TFC_BuildTeleExit", "");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return (0);
|
return (0);
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
|
|
||||||
#define TFC_SENTRY_COST 130
|
|
||||||
|
|
||||||
class
|
|
||||||
TFCSentry:NSSurfacePropEntity
|
|
||||||
{
|
|
||||||
NSSurfacePropEntity m_eHead;
|
|
||||||
|
|
||||||
void(void) TFCSentry;
|
|
||||||
|
|
||||||
virtual void(player) Place;
|
|
||||||
virtual void(void) FinishPlacing;
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
TFCSentry::Place(player pl)
|
|
||||||
{
|
|
||||||
SetAngles(pl.GetAngles());
|
|
||||||
|
|
||||||
makevectors([0, pl.v_angle[1], 0]);
|
|
||||||
SetOrigin(pl.origin + (v_forward * 48));
|
|
||||||
DropToFloor();
|
|
||||||
|
|
||||||
think = FinishPlacing;
|
|
||||||
nextthink = time + 5.0f;
|
|
||||||
real_owner = pl;
|
|
||||||
|
|
||||||
env_message_single(real_owner, "#Engineer_building");
|
|
||||||
Sound_Play(this, CHAN_BODY, "engineer.build");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TFCSentry::FinishPlacing(void)
|
|
||||||
{
|
|
||||||
/* put the top on that spins */
|
|
||||||
m_eHead.SetModel("models/sentry1.mdl");
|
|
||||||
m_eHead.SetAngles(GetAngles());
|
|
||||||
m_eHead.SetSolid(SOLID_BBOX);
|
|
||||||
m_eHead.SetMovetype(MOVETYPE_NONE);
|
|
||||||
m_eHead.SetSize([-16,-16,0], [16,16,32]);
|
|
||||||
m_eHead.SetOrigin(GetOrigin() + [0,0,20]);
|
|
||||||
|
|
||||||
env_message_single(real_owner, "#Sentry_finish");
|
|
||||||
Sound_Play(this, CHAN_BODY, "engineer.turret_set");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TFCSentry::TFCSentry(void)
|
|
||||||
{
|
|
||||||
m_eHead = spawn(NSSurfacePropEntity);
|
|
||||||
SetModel("models/base.mdl");
|
|
||||||
SetSolid(SOLID_BBOX);
|
|
||||||
SetMovetype(MOVETYPE_NONE);
|
|
||||||
SetSize([-16,-16,0], [16,16,20]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
CSEv_TFC_BuildSentry_(void)
|
|
||||||
{
|
|
||||||
player pl = (player)self;
|
|
||||||
|
|
||||||
/* only engineers can do this */
|
|
||||||
if (pl.classtype != CLASS_ENGINEER)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* it costs */
|
|
||||||
if (pl.m_iAmmoCells < TFC_SENTRY_COST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
pl.m_iAmmoCells -= TFC_SENTRY_COST;
|
|
||||||
|
|
||||||
/* deploy */
|
|
||||||
TFCSentry sentry = spawn(TFCSentry);
|
|
||||||
sentry.Place(pl);
|
|
||||||
}
|
|
|
@ -16,16 +16,68 @@
|
||||||
|
|
||||||
#define TFC_DISPENSER_COST 100
|
#define TFC_DISPENSER_COST 100
|
||||||
|
|
||||||
|
/* The unit has 150 health and can hold up to 400 shells, 600 nails, 300 rockets, 400 cells, and 500 armor points. */
|
||||||
|
|
||||||
class
|
class
|
||||||
TFCDispenser:NSSurfacePropEntity
|
TFCDispenser:NSSurfacePropEntity
|
||||||
{
|
{
|
||||||
|
int m_iShells;
|
||||||
|
int m_iNails;
|
||||||
|
int m_iRockets;
|
||||||
|
int m_iCells;
|
||||||
|
int m_iArmor;
|
||||||
|
|
||||||
void(void) TFCDispenser;
|
void(void) TFCDispenser;
|
||||||
|
|
||||||
virtual void(player) Place;
|
virtual void(player) Place;
|
||||||
virtual void(void) FinishPlacing;
|
virtual void(void) FinishPlacing;
|
||||||
|
|
||||||
|
virtual void(void) Replenish;
|
||||||
|
virtual void(void) ClampValues;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TFCDispenser::ClampValues(void)
|
||||||
|
{
|
||||||
|
if (m_iShells >= 400)
|
||||||
|
m_iShells = 400;
|
||||||
|
|
||||||
|
if (m_iNails >= 600)
|
||||||
|
m_iNails = 600;
|
||||||
|
|
||||||
|
if (m_iRockets >= 300)
|
||||||
|
m_iRockets = 300;
|
||||||
|
|
||||||
|
if (m_iCells >= 400)
|
||||||
|
m_iCells = 400;
|
||||||
|
|
||||||
|
if (m_iArmor >= 500)
|
||||||
|
m_iArmor = 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TFCDispenser::Replenish(void)
|
||||||
|
{
|
||||||
|
m_iShells += 5;
|
||||||
|
m_iNails += 5;
|
||||||
|
m_iRockets += 5;
|
||||||
|
m_iCells += 5;
|
||||||
|
m_iArmor += 5;
|
||||||
|
ClampValues();
|
||||||
|
|
||||||
|
nextthink = time + 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TFCDispenser::Touch(entity eToucher)
|
||||||
|
{
|
||||||
|
if (team != real_owner.team)
|
||||||
|
return;
|
||||||
|
|
||||||
|
player pl = (player)eToucher;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TFCDispenser::Place(player pl)
|
TFCDispenser::Place(player pl)
|
||||||
{
|
{
|
||||||
|
@ -61,7 +113,7 @@ TFCDispenser::TFCDispenser(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CSEv_TFC_BuildDispenser_(void)
|
TFCDispenser_Build(void)
|
||||||
{
|
{
|
||||||
player pl = (player)self;
|
player pl = (player)self;
|
||||||
|
|
||||||
|
@ -92,3 +144,9 @@ CSEv_TFC_BuildDispenser_(void)
|
||||||
TFCDispenser dispenser = spawn(TFCDispenser);
|
TFCDispenser dispenser = spawn(TFCDispenser);
|
||||||
dispenser.Place(pl);
|
dispenser.Place(pl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TFCDispenser_Dismantle(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ TFCSentry::TFCSentry(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CSEv_TFC_BuildSentry_(void)
|
TFCSentry_Build(void)
|
||||||
{
|
{
|
||||||
player pl = (player)self;
|
player pl = (player)self;
|
||||||
|
|
||||||
|
@ -102,3 +102,9 @@ CSEv_TFC_BuildSentry_(void)
|
||||||
TFCSentry sentry = spawn(TFCSentry);
|
TFCSentry sentry = spawn(TFCSentry);
|
||||||
sentry.Place(pl);
|
sentry.Place(pl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TFCSentry_Dismantle(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -32,6 +32,11 @@ Game_Worldspawn(void)
|
||||||
Sound_Precache("engineer.build");
|
Sound_Precache("engineer.build");
|
||||||
Sound_Precache("engineer.turret_set");
|
Sound_Precache("engineer.turret_set");
|
||||||
|
|
||||||
|
precache_model("models/base.mdl");
|
||||||
|
precache_model("models/dispenser.mdl");
|
||||||
|
precache_model("models/sentry1.mdl");
|
||||||
|
precache_model("models/sentry2.mdl");
|
||||||
|
precache_model("models/sentry3.mdl");
|
||||||
precache_model("models/player.mdl");
|
precache_model("models/player.mdl");
|
||||||
precache_model("models/w_weaponbox.mdl");
|
precache_model("models/w_weaponbox.mdl");
|
||||||
Weapons_Init();
|
Weapons_Init();
|
||||||
|
@ -42,3 +47,41 @@ Game_Worldspawn(void)
|
||||||
void weaponbox_spawn(player pl)
|
void weaponbox_spawn(player pl)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CSEv_TFCBuild_i(int type)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case 1:
|
||||||
|
TFCDispenser_Build();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
TFCSentry_Build();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
TFCTeleporter_Build();
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
TFCTeleporterExit_Build();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CSEv_TFCDismantle_i(int type)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case 1:
|
||||||
|
TFCDispenser_Dismantle();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
TFCSentry_Dismantle();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
TFCTeleporter_Dismantle();
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
TFCTeleporterExit_Dismantle();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ TFCTeleporterExit::TFCTeleporterExit(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CSEv_TFC_BuildTele_(void)
|
TFCTeleporter_Build(void)
|
||||||
{
|
{
|
||||||
player pl = (player)self;
|
player pl = (player)self;
|
||||||
|
|
||||||
|
@ -159,9 +159,8 @@ CSEv_TFC_BuildTele_(void)
|
||||||
start.Place(pl);
|
start.Place(pl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
CSEv_TFC_BuildTeleExit_(void)
|
TFCTeleporterExit_Build(void)
|
||||||
{
|
{
|
||||||
player pl = (player)self;
|
player pl = (player)self;
|
||||||
|
|
||||||
|
@ -192,3 +191,14 @@ CSEv_TFC_BuildTeleExit_(void)
|
||||||
TFCTeleporterExit end = spawn(TFCTeleporterExit);
|
TFCTeleporterExit end = spawn(TFCTeleporterExit);
|
||||||
end.Place(pl);
|
end.Place(pl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TFCTeleporter_Dismantle(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void
|
||||||
|
TFCTeleporterExit_Dismantle(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue