Forum

is there a way to do location specific damage in QC?

Discuss programming in the QuakeC language.

Moderator: InsideQC Admins

is there a way to do location specific damage in QC?

Postby hondobondo » Sun Aug 01, 2010 11:07 pm

or does it have to be first done in the engine?
hondobondo
 
Posts: 207
Joined: Tue Sep 26, 2006 2:48 am

Postby leileilol » Mon Aug 02, 2010 12:13 am

The only thing you'll do is rough estimation by vector height and that's stupid
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Postby hondobondo » Mon Aug 02, 2010 1:03 am

leileilol wrote:The only thing you'll do is rough estimation by vector height and that's stupid


why would that be stupid
hondobondo
 
Posts: 207
Joined: Tue Sep 26, 2006 2:48 am

Postby Spike » Mon Aug 02, 2010 1:41 am

because shooting from up high is always a headshot.
Spike
 
Posts: 2853
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Postby Sajt » Mon Aug 02, 2010 1:59 am

And shooting from below you'll have to aim at a narrow strip of air three feet in front of his face to get a headshot.
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.
Sajt
 
Posts: 1215
Joined: Sat Oct 16, 2004 3:39 am

Postby Swift » Mon Aug 02, 2010 2:09 am

That's a bit rough isn't it? How do we know he's not using Quake 3 models in Darkplaces or something?
Swift
 
Posts: 60
Joined: Tue Jan 26, 2010 11:02 am

Postby leileilol » Mon Aug 02, 2010 2:38 am

sdquake.exe isn't darkplaces, and quake3 models don't allow for locational damage stuff either
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Postby Swift » Mon Aug 02, 2010 6:32 am

Arguable. Might be the 'wrong' way to do things - but could you spawn multiple entitys for the head etc and set them to SOLID_BSP (per poly collision?), doing away with the BBOX?

Of course this is all pointless if setting the head as a tag_entity means it doesn't get checked for collisions - which I'm not sure on.

//DP_GFX_QUAKE3MODELTAGS
//idea: id Software
//darkplaces implementation: LordHavoc
//field definitions:
.entity tag_entity; // entity this is attached to (call setattachment to set this)
.float tag_index; // which tag on that entity (0 is relative to the entity, > 0 is an index into the tags on the model if it has any) (call setattachment to set this)
Swift
 
Posts: 60
Joined: Tue Jan 26, 2010 11:02 am

Postby Sajt » Mon Aug 02, 2010 7:56 am

It's possible that you could cook up some hack for headshots. If the traceline hits the monster's box, then check manually if the line also intersects some hard-coded smaller box representing the monster's head...
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.
Sajt
 
Posts: 1215
Joined: Sat Oct 16, 2004 3:39 am

leilei

Postby hondobondo » Tue Aug 03, 2010 6:08 am

no one even mentioned sdquake. if you ever played it, you would know headshots would be an enormous waste of time to code. i'm thinking more of a zombie mod. i can't believe no one's even done it for quake before, or has they? i mean real zombie not those weird quake zombies. what are those
hondobondo
 
Posts: 207
Joined: Tue Sep 26, 2006 2:48 am

Postby gnounc » Tue Aug 03, 2010 6:44 am

The Horror is a zombie mod ;)
User avatar
gnounc
 
Posts: 424
Joined: Mon Apr 06, 2009 6:26 am

Postby Orion » Tue Aug 03, 2010 9:49 pm

Unfortunately Quake only uses ONE bounding box per entity. On modern games there are multiple bounding boxes for each part of the body, or per-poly collision. So locational damage gets a bit weird in Quake because of that but anyway I still like it.

See a simple diagram below:

Image


I've drawn the bbox accordingly, that's why you see little spheres between the lines. :wink:
As you can see, if you shoot between the player's legs, he will take damage, the bullet will not pass through them.


The simplest way to do this is simply checking where the projectile is hitting.

Use this for hitscan weapons:

Code: Select all
damage = 100; // initial damage value (changeable)
if (trace_endpos_z > (trace_ent.origin_z + trace_ent.maxs_z) - 10) // headshot
 damage = damage * 3; // this will do 3x damage, change to whatever you like
else if (trace_endpos_z < trace_ent.origin_z) // leg shot
 damage = damage * 0.5; // this will do half damage (changeable)


And use this for projectile weapons:

Code: Select all
damage = 100; // initial damage value
if (self.origin_z > (other.origin_z + other.maxs_z) - 10) // headshot
 damage = damage * 3; // same thing as above
else if (self.origin_z < other.origin_z)
 damage = damage * 0.5;


Hope it helps, not tested, just came from the top of my head. :)
User avatar
Orion
 
Posts: 476
Joined: Fri Jan 12, 2007 6:32 pm
Location: Brazil

Postby frag.machine » Wed Aug 04, 2010 12:59 am

Q2K4 has per-poly collision, which could give a little more precise results against hitscan projectiles (shotguns and alike), unfortunately not very helpful against nails and, obviously, rockets. And, unfortunately, there's no way to tell to QuakeC which triangle in the mesh was hit.
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC :) (LordHavoc)
User avatar
frag.machine
 
Posts: 2029
Joined: Sat Nov 25, 2006 1:49 pm

Postby ceriux » Wed Aug 04, 2010 1:01 am

question could a multi bbox system be implemented into the quake engine? for better model formats?
User avatar
ceriux
 
Posts: 2220
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Postby Urre » Wed Aug 04, 2010 6:56 am

I've implemented multi-bbox systems in QC. It's all perfectly possible...

Do basicly what Sajt said, it's not far from what most games do anyway.
Strap yourself up!

Look out for Twigboy.
User avatar
Urre
 
Posts: 1101
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon

Next

Return to QuakeC Programming

Who is online

Users browsing this forum: No registered users and 1 guest