本文整理汇总了C++中G_Damage函数的典型用法代码示例。如果您正苦于以下问题:C++ G_Damage函数的具体用法?C++ G_Damage怎么用?C++ G_Damage使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了G_Damage函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: G_trigger_hurt_Touch
/**
* @brief
*/
static void G_trigger_hurt_Touch(g_entity_t *self, g_entity_t *other,
const cm_bsp_plane_t *plane,
const cm_bsp_texinfo_t *surf) {
if (!other->locals.take_damage) { // deal with items that land on us
if (other->locals.item) {
if (other->locals.item->type == ITEM_FLAG) {
G_ResetDroppedFlag(other);
} else if (other->locals.item->type == ITEM_TECH) {
G_ResetDroppedTech(other);
} else {
G_FreeEntity(other);
}
}
gi.Debug("%s\n", etos(other));
return;
}
if (self->locals.timestamp > g_level.time) {
return;
}
if (self->locals.spawn_flags & 16) {
self->locals.timestamp = g_level.time + 1000;
} else {
self->locals.timestamp = g_level.time + 100;
}
const int16_t d = self->locals.damage;
int32_t dflags = DMG_NO_ARMOR;
if (self->locals.spawn_flags & 8) {
dflags = DMG_NO_GOD;
}
G_Damage(other, self, NULL, NULL, NULL, NULL, d, d, dflags, MOD_TRIGGER_HURT);
}
开发者ID:jdolan,项目名称:quetoo,代码行数:43,代码来源:g_entity_trigger.c
示例2: env_afx_hurt_touch
void env_afx_hurt_touch( gentity_t *self, gentity_t *other, trace_t *trace )
{
int dflags;
if ( !other->takedamage )
{
return;
}
if ( self->timestamp > level.time )
{
return;
}
if ( self->spawnflags & 16 )
{
self->timestamp = level.time + 1000;
}
else
{
self->timestamp = level.time + FRAMETIME;
}
// play sound
if ( !( self->spawnflags & 4 ) )
{
G_Sound( other, CHAN_AUTO, self->soundIndex );
}
if ( self->spawnflags & 8 )
{
dflags = DAMAGE_NO_PROTECTION;
}
else
{
dflags = 0;
}
G_Damage( other, self, self, NULL, NULL, self->damage, dflags, MOD_TRIGGER_HURT );
}
开发者ID:Foe-of-Eternity,项目名称:Unvanquished,代码行数:40,代码来源:g_spawn_afx.cpp
示例3: meleeAttack
/*
===============
meleeAttack
===============
*/
void meleeAttack( gentity_t *ent, float range, float width, int damage, meansOfDeath_t mod )
{
trace_t tr;
vec3_t end;
gentity_t *tent;
gentity_t *traceEnt;
vec3_t mins, maxs;
VectorSet( mins, -width, -width, -width );
VectorSet( maxs, width, width, width );
// set aiming directions
AngleVectors( ent->client->ps.viewangles, forward, right, up );
CalcMuzzlePoint( ent, forward, right, up, muzzle );
VectorMA( muzzle, range, forward, end );
G_UnlaggedOn( muzzle, range );
trap_Trace( &tr, muzzle, mins, maxs, end, ent->s.number, MASK_SHOT );
G_UnlaggedOff( );
if( tr.surfaceFlags & SURF_NOIMPACT )
return;
traceEnt = &g_entities[ tr.entityNum ];
// send blood impact
if( traceEnt->takedamage && traceEnt->client )
{
tent = G_TempEntity( tr.endpos, EV_MISSILE_HIT );
tent->s.otherEntityNum = traceEnt->s.number;
tent->s.eventParm = DirToByte( tr.plane.normal );
tent->s.weapon = ent->s.weapon;
tent->s.generic1 = ent->s.generic1; //weaponMode
}
if( traceEnt->takedamage )
G_Damage( traceEnt, ent, ent, forward, tr.endpos, damage, DAMAGE_NO_KNOCKBACK, mod );
}
开发者ID:TremFortyTwo,项目名称:into-the-wild-p-g-qvm,代码行数:45,代码来源:g_weapon.c
示例4: ProximityMine_ExplodeOnPlayer
/*
================
ProximityMine_ExplodeOnPlayer
================
*/
static void ProximityMine_ExplodeOnPlayer(gentity_t * mine)
{
gentity_t *player;
player = mine->enemy;
player->client->ps.eFlags &= ~EF_TICKING;
if(player->client->invulnerabilityTime > level.time)
{
G_Damage(player, mine->parent, mine->parent, vec3_origin, mine->s.origin, 1000, DAMAGE_NO_KNOCKBACK, MOD_JUICED);
player->client->invulnerabilityTime = 0;
G_TempEntity(player->client->ps.origin, EV_JUICED);
}
else
{
G_SetOrigin(mine, player->s.pos.trBase);
// make sure the explosion gets to the client
mine->r.svFlags &= ~SVF_NOCLIENT;
mine->splashMethodOfDeath = MOD_PROXIMITY_MINE;
G_ExplodeMissile(mine);
}
}
开发者ID:SinSiXX,项目名称:Rogue-Reborn,代码行数:27,代码来源:g_missile.c
示例5: teslaFire
/*
======================================================================
TESLA GENERATOR
======================================================================
*/
void teslaFire( gentity_t *self )
{
trace_t tr;
vec3_t origin, target;
gentity_t *tent;
if( !self->enemy )
return;
// Move the muzzle from the entity origin up a bit to fire over turrets
VectorMA( muzzle, self->r.maxs[ 2 ], self->s.origin2, origin );
// Don't aim for the center, aim at the top of the bounding box
VectorCopy( self->enemy->s.origin, target );
target[ 2 ] += self->enemy->r.maxs[ 2 ];
// Trace to the target entity
trap_Trace( &tr, origin, NULL, NULL, target, self->s.number, MASK_SHOT );
if( tr.entityNum != self->enemy->s.number )
return;
// Client side firing effect
self->s.eFlags |= EF_FIRING;
// Deal damage
if( self->enemy->takedamage )
{
vec3_t dir;
VectorSubtract( target, origin, dir );
G_Damage( self->enemy, self, self, dir, tr.endpos,
TESLAGEN_DMG, 0, MOD_TESLAGEN );
}
// Send tesla zap trail
tent = G_TempEntity( tr.endpos, EV_TESLATRAIL );
tent->s.generic1 = self->s.number; // src
tent->s.clientNum = self->enemy->s.number; // dest
}
开发者ID:massivehaxxor,项目名称:new-edge,代码行数:44,代码来源:g_weapon.c
示例6: G_KillEnts
void G_KillEnts(const char *target, gentity_t *ignore, gentity_t *killer, meansOfDeath_t mod)
{
gentity_t *targ = NULL;
while ((targ = G_FindByTargetname(targ, target)))
{
// make sure it isn't going to respawn or show any events
targ->nextthink = 0;
if (targ == ignore)
{
continue;
}
// script_movers should die!
if (targ->s.eType == ET_MOVER && !Q_stricmp(targ->classname, "script_mover") && targ->die)
{
G_Damage(targ, killer, killer, NULL, NULL, 100000, DAMAGE_NO_PROTECTION, MOD_TELEFRAG);
continue;
}
if (targ->s.eType == ET_CONSTRUCTIBLE)
{
if (killer)
{
G_AddKillSkillPointsForDestruction(killer, mod, &targ->constructibleStats);
}
targ->die(targ, killer, killer, targ->health, 0);
continue;
}
trap_UnlinkEntity(targ);
targ->nextthink = level.time + FRAMETIME;
targ->use = NULL;
targ->touch = NULL;
targ->think = G_FreeEntity;
}
}
开发者ID:GenaSG,项目名称:etlegacy,代码行数:39,代码来源:g_target.c
示例7: G_KillBox
/*
=================
G_KillBox
Kills all entities that would touch the proposed new positioning
of ent. Ent should be unlinked before calling this!
=================
*/
void G_KillBox (gentity_t *ent) {
int i, num;
int touch[MAX_GENTITIES];
gentity_t *hit;
vec3_t mins, maxs;
VectorAdd( ent->client->ps.origin, ent->r.mins, mins );
VectorAdd( ent->client->ps.origin, ent->r.maxs, maxs );
num = trap_EntitiesInBox( mins, maxs, touch, MAX_GENTITIES );
for (i=0 ; i<num ; i++) {
hit = &g_entities[touch[i]];
if ( !hit->client ) {
continue;
}
// nail it
G_Damage ( hit, ent, ent, NULL, NULL,
100000, DAMAGE_NO_PROTECTION, MOD_TELEFRAG);
}
}
开发者ID:PadWorld-Entertainment,项目名称:wop-gamesource,代码行数:30,代码来源:g_utils.c
示例8: script_mover_blocked
void script_mover_blocked(gentity_t *ent, gentity_t *other) {
// remove it, we must not stop for anything or it will screw up script timing
if (!other->client && other->s.eType != ET_CORPSE) {
// /me slaps nerve
// except CTF flags!!!!
if (other->s.eType == ET_ITEM && other->item->giType == IT_TEAM) {
Team_DroppedFlagThink(other);
return;
}
G_TempEntity(other->s.origin, EV_ITEM_POP);
G_FreeEntity(other);
return;
}
// FIXME: we could have certain entities stop us, thereby "pausing" movement
// until they move out the way. then we can just call the GotoMarker() again,
// telling it that we are just now calling it for the first time, so it should
// start us on our way again (theoretically speaking).
// kill them
G_Damage(other, ent, ent, NULL, NULL, 9999, 0, MOD_CRUSH);
}
开发者ID:ETrun,项目名称:ETrun,代码行数:22,代码来源:g_script.c
示例9: lasGunFire
/*
===============
lasGunFire
===============
*/
void lasGunFire( gentity_t *ent )
{
trace_t tr;
vec3_t end;
gentity_t *tent;
gentity_t *traceEnt;
VectorMA( muzzle, 8192 * 16, forward, end );
trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT );
if( tr.surfaceFlags & SURF_NOIMPACT )
return;
traceEnt = &g_entities[ tr.entityNum ];
// snap the endpos to integers, but nudged towards the line
SnapVectorTowards( tr.endpos, muzzle );
// send impact
if( traceEnt->takedamage && traceEnt->client )
{
tent = G_TempEntity( tr.endpos, EV_MISSILE_HIT );
tent->s.otherEntityNum = traceEnt->s.number;
tent->s.eventParm = DirToByte( tr.plane.normal );
tent->s.weapon = ent->s.weapon;
tent->s.generic1 = ent->s.generic1; //weaponMode
}
else
{
tent = G_TempEntity( tr.endpos, EV_MISSILE_MISS );
tent->s.eventParm = DirToByte( tr.plane.normal );
tent->s.weapon = ent->s.weapon;
tent->s.generic1 = ent->s.generic1; //weaponMode
}
if( traceEnt->takedamage )
G_Damage( traceEnt, ent, ent, forward, tr.endpos, LASGUN_DAMAGE, 0, MOD_LASGUN );
}
开发者ID:wtfbbqhax,项目名称:thz,代码行数:43,代码来源:g_weapon.c
示例10: hurt_touch
/*QUAKED trigger_hurt (.5 .5 .5) ? START_OFF - SILENT NO_PROTECTION SLOW ONCE
Any entity that touches this will be hurt.
It does dmg points of damage each server frame
Targeting the trigger will toggle its on / off state.
SILENT supresses playing the sound
SLOW changes the damage rate to once per second
NO_PROTECTION *nothing* stops the damage
"dmg" default 5 (whole numbers only)
"life" time this brush will exist if value is zero will live for ever ei 0.5 sec 2.sec
default is zero
the entity must be used first before it will count down its life
*/
void hurt_touch(gentity_t *self, gentity_t *other, trace_t *trace) {
int dflags;
// Nico, silent GCC
(void)trace;
if (!other->takedamage) {
return;
}
if (self->timestamp > level.time) {
return;
}
// Nico, make hurt triggers slow
if (self->spawnflags & 16) {
self->timestamp = level.time + 1000;
} else {
self->timestamp = level.time + FRAMETIME;
}
// play sound
if (!(self->spawnflags & 4)) {
G_Sound(other, self->noise_index);
}
if (self->spawnflags & 8) {
dflags = DAMAGE_NO_PROTECTION;
} else {
dflags = 0;
}
G_Damage(other, self, self, NULL, NULL, self->damage, dflags, MOD_TRIGGER_HURT);
if (self->spawnflags & 32) {
self->touch = NULL;
}
}
开发者ID:Exosum,项目名称:ETrun,代码行数:54,代码来源:g_trigger.c
示例11: AIFunc_LoperAttack1
/*
===============
AIFunc_LoperAttack1()
Loper's close range melee attack
===============
*/
char *AIFunc_LoperAttack1( cast_state_t *cs ) {
trace_t *tr;
gentity_t *ent;
int anim;
//
ent = &g_entities[cs->entityNum];
//
// draw the client-side lightning effect
//ent->client->ps.eFlags |= EF_MONSTER_EFFECT;
//
// have we inflicted the damage?
if ( cs->weaponFireTimes[WP_MONSTER_ATTACK1] > cs->thinkFuncChangeTime ) {
// has the animation finished?
if ( !ent->client->ps.legsTimer ) {
return AIFunc_DefaultStart( cs );
}
return NULL; // just wait for anim to finish
}
// ready to inflict damage?
anim = ( ent->client->ps.legsAnim & ~ANIM_TOGGLEBIT ) - BG_AnimationIndexForString( "legs_extra", cs->entityNum );
if ( cs->thinkFuncChangeTime < level.time - loperHitTimes[anim] ) {
// check for damage
// TTimo: gcc: suggests () around assignment used as truth value
if ( ( tr = CheckMeleeAttack( &g_entities[cs->entityNum], LOPER_MELEE_RANGE, qfalse ) ) ) {
G_Damage( &g_entities[tr->entityNum], ent, ent, vec3_origin, tr->endpos,
LOPER_MELEE_DAMAGE, 0, MOD_LOPER_HIT );
// sound
if ( anim == 0 ) {
G_AddEvent( ent, EV_GENERAL_SOUND, G_SoundIndex( aiDefaults[ent->aiCharacter].soundScripts[ORDERSDENYSOUNDSCRIPT] ) );
} else {
G_AddEvent( ent, EV_GENERAL_SOUND, G_SoundIndex( aiDefaults[ent->aiCharacter].soundScripts[MISC1SOUNDSCRIPT] ) );
}
}
cs->weaponFireTimes[WP_MONSTER_ATTACK1] = level.time;
}
return NULL;
}
开发者ID:MAN-AT-ARMS,项目名称:iortcw-archive,代码行数:45,代码来源:ai_cast_func_attack.c
示例12: G_ProcessFlare
/*
================
G_ProcessFlare
If an player is close to the entity, hurt!
================
*/
void G_ProcessFlare(gentity_t *ent) {
int i, total_entities, entityList[MAX_GENTITIES];
vec3_t range, mins, maxs;
gentity_t *target;
if (level.time > ent->s.time + 30000)
{
ent->nextthink = level.time + 100;
ent->think = G_ExplodeMissile;
return;
}
// Set the next time to run this check (can be overwritten below)
ent->nextthink = level.time + FLARE_CHECK_FREQUENCY;
// Grab all entities around us
VectorSet(range, FLARE_DETECT, FLARE_DETECT, FLARE_DETECT);
VectorAdd(ent->s.origin, range, maxs);
VectorSubtract(ent->s.origin, range, mins);
total_entities = trap_EntitiesInBox(mins, maxs, entityList, MAX_GENTITIES);
// Loop entities looking for an enemy body
for(i=0; i<total_entities; i++) {
target = &g_entities[entityList[i]];
if(target->client) {
if (G_Visible( ent, target, MASK_SHOT ))
{
// Found an enemy, hurt time!
G_Damage( target, ent, ent->parent, NULL, ent->s.origin, ent->damage, 0, ent->methodOfDeath );
//ent->nextthink = level.time + MINE_BOOM_TIME;
//ent->think = G_ExplodeMissile;
return;
}
}
}
}
开发者ID:redrumrobot,项目名称:r-unlimited-cz,代码行数:45,代码来源:g_missile.c
示例13: W_Fire_Blade
/*
* W_Fire_Blade
*/
void W_Fire_Blade( edict_t *self, int range, vec3_t start, vec3_t angles, float damage, int knockback, int stun, int mod, int timeDelta )
{
edict_t *event, *other = NULL;
vec3_t end;
trace_t trace;
int mask = MASK_SHOT;
vec3_t dir;
int dmgflags = 0;
if( GS_Instagib() )
damage = 9999;
AngleVectors( angles, dir, NULL, NULL );
VectorMA( start, range, dir, end );
if( GS_RaceGametype() )
mask = MASK_SOLID;
G_Trace4D( &trace, start, NULL, NULL, end, self, MASK_SHOT, timeDelta );
if( trace.ent == -1 ) //didn't touch anything
return;
// find out what touched
other = &game.edicts[trace.ent];
if( !other->takedamage ) // it was the world
{
// wall impact
VectorMA( trace.endpos, -0.02, dir, end );
event = G_SpawnEvent( EV_BLADE_IMPACT, 0, end );
event->s.ownerNum = ENTNUM( self );
VectorScale( trace.plane.normal, 1024, event->s.origin2 );
event->r.svflags = SVF_TRANSMITORIGIN2;
return;
}
// it was a player
G_Damage( other, self, self, dir, dir, other->s.origin, damage, knockback, stun, dmgflags, mod );
}
开发者ID:Kaperstone,项目名称:warsow,代码行数:41,代码来源:g_weapon.c
示例14: shipboundary_touch
void shipboundary_touch( gentity_t *self, gentity_t *other, trace_t *trace )
{
gentity_t *ent;
if (!other || !other->inuse || !other->client ||
other->s.number < MAX_CLIENTS ||
!other->m_pVehicle)
{ //only let vehicles touch
return;
}
if ( other->client->ps.hyperSpaceTime && level.time - other->client->ps.hyperSpaceTime < HYPERSPACE_TIME )
{//don't interfere with hyperspacing ships
return;
}
ent = G_Find (NULL, FOFS(targetname), self->target);
if (!ent || !ent->inuse)
{ //this is bad
trap->Error(ERR_DROP, "trigger_shipboundary has invalid target '%s'\n", self->target);
return;
}
if (!other->client->ps.m_iVehicleNum || other->m_pVehicle->m_iRemovedSurfaces)
{ //if a vehicle touches a boundary without a pilot in it or with parts missing, just blow the thing up
G_Damage(other, other, other, NULL, other->client->ps.origin, 99999, DAMAGE_NO_PROTECTION, MOD_SUICIDE);
return;
}
//make sure this sucker is linked so the prediction knows where to go
trap->LinkEntity((sharedEntity_t *)ent);
other->client->ps.vehTurnaroundIndex = ent->s.number;
other->client->ps.vehTurnaroundTime = level.time + (self->genericValue1*2);
//keep up the detailed checks for another 2 seconds
self->genericValue7 = level.time + 2000;
}
开发者ID:lNightCrawlerl,项目名称:JediKnightGalaxies,代码行数:38,代码来源:g_trigger.cpp
示例15: ShotgunPellet
/*
================
ShotgunPellet
================
*/
void ShotgunPellet( vec3_t start, vec3_t end, gentity_t *ent ) {
trace_t tr;
int passent;
gentity_t *traceEnt;
vec3_t tr_start, tr_end;
passent = ent->s.number;
VectorCopy( start, tr_start );
VectorCopy( end, tr_end );
trap_Trace (&tr, tr_start, NULL, NULL, tr_end, passent, MASK_SHOT);
traceEnt = &g_entities[ tr.entityNum ];
// send bullet impact
if ( tr.surfaceFlags & SURF_NOIMPACT ) {
return;
}
if ( traceEnt->takedamage ) {
shotEnt = traceEnt;
G_Damage( traceEnt, ent, ent, forward, tr.endpos, weLi[ent->s.weapon].damage, 0, weLi[ent->s.weapon].mod);
}
}
开发者ID:ElderPlayerX,项目名称:Afterwards,代码行数:28,代码来源:g_weapon.c
示例16: Blocked_Door
/*
================
Blocked_Door
================
*/
void Blocked_Door( gentity_t *ent, gentity_t *other ) {
// remove anything other than a client
if ( !other->client ) {
// except CTF flags!!!!
if( other->s.eType == ET_ITEM && other->item->giType == IT_TEAM ) {
Team_DroppedFlagThink( other );
return;
}
G_TempEntity( other->s.origin, EV_ITEM_POP );
G_FreeEntity( other );
return;
}
if ( ent->damage ) {
G_Damage( other, ent, ent, NULL, NULL, ent->damage, 0, MOD_CRUSH );
}
if ( ent->spawnflags & 4 ) {
return; // crushers don't reverse
}
// reverse direction
Use_BinaryMover( ent, ent, other );
}
开发者ID:AHPlankton,项目名称:Quake-III-Arena,代码行数:28,代码来源:g_mover.c
示例17: W_Fire_RandomBucket
void W_Fire_RandomBucket( edict_t *self, vec3_t start, vec3_t fv, vec3_t rv, vec3_t uv, int *seed, int count,
int hspread, int vspread, int range, float damage, int kick, int stun, int dflags, int mod, int timeDelta )
{
int i;
float r;
float u;
trace_t trace;
for( i = 0; i < count; i++ ) {
r = Q_crandom( seed ) * hspread;
u = Q_crandom( seed ) * vspread;
GS_TraceBullet( &trace, start, fv, rv, uv, r, u, range, ENTNUM( self ), timeDelta );
if( trace.ent != -1 ) {
if( game.edicts[trace.ent].takedamage ) {
G_Damage( &game.edicts[trace.ent], self, self, fv, fv, trace.endpos, damage, kick, stun, dflags, mod );
} else {
if( !( trace.surfFlags & SURF_NOIMPACT ) ) {
}
}
}
}
}
开发者ID:Picmip,项目名称:qfusion,代码行数:23,代码来源:g_weapon.cpp
示例18: ShotgunPattern
// this should match CG_ShotgunPattern
void ShotgunPattern( vec3_t origin, vec3_t origin2, int seed, gentity_t *ent )
{
int i;
float r, u;
vec3_t end;
vec3_t forward, right, up;
trace_t tr;
gentity_t *traceEnt;
// derive the right and up vectors from the forward vector, because
// the client won't have any other information
VectorNormalize2( origin2, forward );
PerpendicularVector( right, forward );
CrossProduct( forward, right, up );
// generate the "random" spread pattern
for ( i = 0; i < SHOTGUN_PELLETS; i++ )
{
r = Q_crandom( &seed ) * SHOTGUN_SPREAD * 16;
u = Q_crandom( &seed ) * SHOTGUN_SPREAD * 16;
VectorMA( origin, SHOTGUN_RANGE, forward, end );
VectorMA( end, r, right, end );
VectorMA( end, u, up, end );
trap_Trace( &tr, origin, NULL, NULL, end, ent->s.number, MASK_SHOT );
traceEnt = &g_entities[ tr.entityNum ];
// send bullet impact
if ( !( tr.surfaceFlags & SURF_NOIMPACT ) )
{
if ( traceEnt->takedamage )
{
G_Damage( traceEnt, ent, ent, forward, tr.endpos, SHOTGUN_DMG, 0, MOD_SHOTGUN );
}
}
}
}
开发者ID:SHOVELL,项目名称:Unvanquished,代码行数:38,代码来源:g_weapon.c
示例19: G_CrushAttack
/*
===============
G_CrushAttack
Should only be called if there was an impact between a tyrant and another player
===============
*/
void G_CrushAttack( gentity_t *ent, gentity_t *victim )
{
vec3_t dir;
float jump;
int damage;
if( !victim->takedamage ||
ent->client->ps.origin[ 2 ] + ent->r.mins[ 2 ] <
victim->s.origin[ 2 ] + victim->r.maxs[ 2 ] ||
( victim->client &&
victim->client->ps.groundEntityNum == ENTITYNUM_NONE ) )
return;
// Deal velocity based damage to target
jump = BG_Class( ent->client->ps.stats[ STAT_CLASS ] )->jumpMagnitude;
damage = ( ent->client->pmext.fallVelocity + jump ) *
-LEVEL4_CRUSH_DAMAGE_PER_V;
if( damage < 0 )
damage = 0;
// Players also get damaged periodically
if( victim->client &&
ent->client->lastCrushTime + LEVEL4_CRUSH_REPEAT < level.time )
{
ent->client->lastCrushTime = level.time;
damage += LEVEL4_CRUSH_DAMAGE;
}
if( damage < 1 )
return;
// Crush the victim over a period of time
VectorSubtract( victim->s.origin, ent->client->ps.origin, dir );
G_Damage( victim, ent, ent, dir, victim->s.origin, damage,
DAMAGE_NO_LOCDAMAGE, MOD_LEVEL4_CRUSH );
}
开发者ID:massivehaxxor,项目名称:new-edge,代码行数:43,代码来源:g_weapon.c
示例20: funcGlassDie
//-----------------------------------------------------
void funcGlassDie( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags,int hitLoc )
{
vec3_t verts[4], normal;
// if a missile is stuck to us, blow it up so we don't look dumb....we could, alternately, just let the missile drop off??
for ( int i = 0; i < MAX_GENTITIES; i++ )
{
if ( g_entities[i].s.groundEntityNum == self->s.number && ( g_entities[i].s.eFlags & EF_MISSILE_STICK ))
{
G_Damage( &g_entities[i], self, self, NULL, NULL, 99999, 0, MOD_CRUSH ); //?? MOD?
}
}
// Really naughty cheating. Put in an EVENT at some point...
cgi_R_GetBModelVerts( cgs.inlineDrawModel[self->s.modelindex], verts, normal );
CG_DoGlass( verts, normal, self->pos1, self->pos2, self->splashRadius );
self->takedamage = qfalse;//stop chain reaction runaway loops
G_SetEnemy( self, self->enemy );
//NOTE: MUST do this BEFORE clearing contents, or you may not open the area portal!!!
gi.AdjustAreaPortalState( self, qtrue );
//So chunks don't get stuck inside me
self->s.solid = 0;
self->contents = 0;
self->clipmask = 0;
gi.linkentity(self);
if ( self->target && attacker != NULL )
{
G_UseTargets( self, attacker );
}
G_FreeEntity( self );
}
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:38,代码来源:g_breakable.cpp
注:本文中的G_Damage函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论