mirror of
https://git.code.sf.net/p/quake/prozac-qfcc
synced 2024-11-23 20:52:29 +00:00
- set martyr_enemy to the hacker when he does bad hacks to a field gen
- use martyr_enemy as the badguy when a fieldgen frys teammates - make sure martyr_enemy is set to world when the guy disconnects - move ClientObituary into it's own obituary.qc file - tweak field lighting times and stuff - add code to turn off a field the instant it's turned on, instead of later when it thinks, but that's disabled for now - probably other stuff I've forgotten I havn't actually set the deathmsg for friendly forcefield kills yet. I'm commiting now to reduce conflicting changes.
This commit is contained in:
parent
9b1f1adede
commit
5410fbad7e
7 changed files with 2938 additions and 2902 deletions
1
BUGS
1
BUGS
|
@ -1,6 +1,5 @@
|
|||
- info string length exceeded :/
|
||||
- duplicate connects
|
||||
- the curse color is rejected by the color changing code
|
||||
- the map cycler (including if you set nmap) just sit there if it doesn't change map. instead, it should have failsafe behavior
|
||||
- "has_sentry" should be a counter, not a flag (allows a second build if you hack and it gets roasted)
|
||||
- there appears to be a window between when a teamkill curse respawn is disabled and when they're killed. it should be removed.
|
||||
|
|
2
defs.qh
2
defs.qh
|
@ -1276,6 +1276,8 @@
|
|||
#define DMSG_STUCK_FORCEFIELD 65
|
||||
#define DMSG_SPANNERFIELD 66
|
||||
#define DMSG_FGTRAP 67
|
||||
#define DMSG_FF_HACKED 68
|
||||
#define DMSG_FF_STUCK_HACKED 69
|
||||
|
||||
//Defs for objects a spikeshooter can spawn Misc.qc
|
||||
#define SPAWNFLAG_SUPERSPIKE 1
|
||||
|
|
30
field.qc
30
field.qc
|
@ -19,9 +19,9 @@
|
|||
|
||||
// field generator settings
|
||||
|
||||
#define FIELDGEN_SHOCKTIME 2 // seconds the generators remains glowing and doing lightning after a shock
|
||||
#define FIELDGEN_SHOCKTIME 3 // seconds the generators remains glowing and doing lightning after a shock
|
||||
#define FIELDGEN_LINKTIME 3.5 // seconds between tries to link with other generator
|
||||
#define FIELDGEN_TIMEDISABLED 1 // was 3 // then 2
|
||||
#define FIELDGEN_TIMEDISABLED 1.5 // was 3 // then 2
|
||||
#define FIELDGEN_CELLSCOST 2 // cells cost for each "FIELDGEN_ISWORKING" pass
|
||||
#define FIELDGEN_DMG 80 // normal damag when touching
|
||||
#define FIELDGEN_DMGINSIDE 120 // damage when trapped inside field
|
||||
|
@ -275,8 +275,14 @@ void() Field_touch_SUB =
|
|||
if (shoulddamage == 1)
|
||||
TF_T_Damage (other, self, self.real_owner, self.dmg, TF_TD_NOTTEAM, TF_TD_ELECTRICITY);
|
||||
else if (shoulddamage == 2) // hacked to hurt teammates
|
||||
TF_T_Damage (other, self, world, self.dmg, TF_TD_NOTTEAM, TF_TD_ELECTRICITY);
|
||||
}
|
||||
{
|
||||
if (deathmsg == DMSG_FORCEFIELD)
|
||||
deathmsg = DMSG_FF_HACKED;
|
||||
else /* if (deathmsg == DMSG_FORCEFIELD_STUCK) */
|
||||
deathmsg = DMSG_FF_STUCK_HACKED;
|
||||
TF_T_Damage (other, self, self.martyr_enemy, self.dmg, TF_TD_NOTTEAM, TF_TD_ELECTRICITY);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else // non player entities
|
||||
|
@ -294,7 +300,13 @@ void() Field_touch_SUB =
|
|||
if (shoulddamage == 1)
|
||||
TF_T_Damage (other, self, self.real_owner, self.dmg, TF_TD_NOTTEAM, TF_TD_ELECTRICITY);
|
||||
else if (shoulddamage == 2) // hacked to hurt teammates
|
||||
TF_T_Damage (other, self, world, self.dmg, TF_TD_NOTTEAM, TF_TD_ELECTRICITY);
|
||||
{
|
||||
if (deathmsg == DMSG_FORCEFIELD)
|
||||
deathmsg = DMSG_FF_HACKED;
|
||||
else /* if (deathmsg == DMSG_FORCEFIELD_STUCK) */
|
||||
deathmsg = DMSG_FF_STUCK_HACKED;
|
||||
TF_T_Damage (other, self, self.martyr_enemy, self.dmg, TF_TD_NOTTEAM, TF_TD_ELECTRICITY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -617,6 +629,13 @@ void(entity gen1, entity gen2) Create_Field =
|
|||
gen2.effects = EF_DIMLIGHT;
|
||||
gen2.has_teleporter = TRUE;
|
||||
gen2.skin = 2;
|
||||
|
||||
/* // make sure the field goes off instantly if there's somebody in it
|
||||
local entity oldself;
|
||||
oldself = self;
|
||||
self = tfield;
|
||||
self.think ();
|
||||
self = oldself; */
|
||||
};
|
||||
|
||||
//=================================================================0
|
||||
|
@ -949,6 +968,7 @@ void(entity field) Field_Built =
|
|||
field.fieldgen_hasfield = FALSE;
|
||||
field.no_grenades_1 = time + 3;
|
||||
field.fieldgen_field = world;
|
||||
field.martyr_enemy = world;
|
||||
};
|
||||
|
||||
//==============================================================
|
||||
|
|
3
haxxx.qc
3
haxxx.qc
|
@ -415,7 +415,10 @@ void() SBFireInterface =
|
|||
else if (targ.classname == "building_teleporter")
|
||||
sprint(self, PRINT_HIGH, "The teleporter will now strip the items off all who enter...\n");
|
||||
else if (targ.classname == "building_fieldgen")
|
||||
{
|
||||
sprint(self, PRINT_HIGH, "The field generator is now rigged to hurt teammates...\n");
|
||||
targ.martyr_enemy = self;
|
||||
}
|
||||
}
|
||||
else if (hackThis == SCREWUP_TWO)
|
||||
{
|
||||
|
|
2898
obituary.qc
Normal file
2898
obituary.qc
Normal file
File diff suppressed because it is too large
Load diff
|
@ -19,6 +19,7 @@ weapons.qc
|
|||
world.qc
|
||||
status.qc
|
||||
client.qc
|
||||
obituary.qc
|
||||
player.qc
|
||||
doors.qc
|
||||
buttons.qc
|
||||
|
|
Loading…
Reference in a new issue