コード例 #1
0
void CHL2MP_Player::Event_Killed( const CTakeDamageInfo &info )
{
	//update damage info with our accumulated physics force
	CTakeDamageInfo subinfo = info;
	subinfo.SetDamageForce( m_vecTotalBulletForce );

	//BP empêche de créer un ragdoll si on change de team en mode spectateur
	if(GetTeamNumber() != TEAM_SPECTATOR)
		CreateRagdollEntity();

	BaseClass::Event_Killed( subinfo );

	if ( info.GetDamageType() & DMG_DISSOLVE )
		if ( m_hRagdoll )
			m_hRagdoll->GetBaseAnimating()->Dissolve( NULL, gpGlobals->curtime, false, ENTITY_DISSOLVE_NORMAL );

	CBaseEntity *pAttacker = info.GetAttacker();
	if ( pAttacker )
	{
		int iScoreToAdd = 1;

		if ( pAttacker == this)
		{
			if(HL2MPRules()->GetGameType() == GAME_TDM)
				iScoreToAdd = 0;
			else
				iScoreToAdd = -1;
		}

		if((HL2MPRules()->GetGameType() == GAME_FORTS) || (HL2MPRules()->GetGameType() == GAME_PUSH))
			iScoreToAdd = 0;

		GetGlobalTeam( pAttacker->GetTeamNumber() )->AddScore( iScoreToAdd );
	}

	FlashlightTurnOff();

	m_lifeState = LIFE_DEAD;

	RemoveEffects( EF_NODRAW );	// still draw player body
	StopZooming();
	DetonateTripmines();
//BP enregistre le tueur
	SetKiller(info.GetAttacker());
}
コード例 #2
0
ファイル: Damage.c プロジェクト: Froggit/Data_Project1_Repos2
global func DoDmg(int iDmg, int iType, object pTarget, int iPrecision, int dmgplayer)
{
  if(!pTarget)
    if(!(pTarget = this()))
      return(0);
  if(!iPrecision)
    iPrecision = 10;

  var dmg;
  var dmgdealer = dmgplayer-1;
  if(dmgdealer < 0)
  	dmgdealer = GetController(pTarget);

  var red = pTarget->~OnDmg(iDmg, iType); //reduction
  // reduction
  dmg = iDmg*(100-red)*iPrecision;

  // Killer setzen
  if(this() && pTarget->GetOCF() & OCF_CrewMember || dmgplayer)
  {
    SetKiller(dmgdealer, pTarget);
  }

  //Schaden machen
  var pFrom;
  //if(pTarget != this())
    pFrom = this;
  pTarget->~LastDamageType(iType);
  pTarget->~OnHit(dmg/1000, iType, pFrom,dmg);
  
  // testweise: Schadensdings
  //var rgb = RGB(255,0,0);
  //if(dmg/1000 != 0){
  //	if(dmg < 0) rgb = RGB(0,255,0);
  //	CreateObject(CMBT,AbsX(GetX(pTarget)),AbsY(GetY(pTarget)),-1) -> Set(0, Format("%d",dmg/1000), rgb);
  //}
  
  if(GetCategory(pTarget) & C4D_Living)
    return(DoEnergy(-dmg,pTarget, true));
  return(DoDamage(dmg/1000,pTarget));
}
コード例 #3
0
ファイル: Overload-Damage.c プロジェクト: Fulgen301/SGGP
global func DoDmg(int iDmg, int iType, object pTarget, int iPrecision, int dmgplayer, id idKillIcon, int iKillAttachment)
{
  //Existenz bestätigen
  if(!pTarget)
    if(!(pTarget = this))
      return;

  if(!iPrecision)
    iPrecision = 10;

  var dmg, dmgdealer = dmgplayer-1;

  if(dmgdealer < 0)
    dmgdealer = GetController(pTarget);

  var red = pTarget->~OnDmg(iDmg, iType);
  dmg = iDmg*(100-red)*iPrecision;

  if(!dmg || red == 100) return;

  //Killer setzen
  if(this && pTarget->GetOCF() & OCF_CrewMember || dmgplayer)
    SetKiller(dmgdealer, pTarget);

  if(GetOCF(pTarget) & OCF_CrewMember)
  {
    if(!idKillIcon && this)//Kein Killicon?
    {
      idKillIcon = this->~GetKillIcon();

      if(!idKillIcon)
        idKillIcon = GetID(this);

      if(idKillIcon->~IsClonk())
        idKillIcon = 0;      
    }
    if(!idKillIcon)
      {
        if(iType)
        {
          if(iType == DMG_Fire)
            idKillIcon = GSAM;
          else if(iType == DMG_Explosion)
            idKillIcon = BOOM;
          else if(iType == DMG_Energy)
            idKillIcon = ENAM;
          else if(iType == DMG_Bio)
            idKillIcon = GLOB;
          else if(iType == DMG_Projectile)
            idKillIcon = STAM;
        }
        else
          idKillIcon = KAMB;
      }

    pTarget->~KillIcon(idKillIcon);
    pTarget->~KillAttachment(iKillAttachment, true);
  }

  //Schaden machen
  var pFrom;
  if(pTarget != this)
    pFrom = this;
  if(!pFrom) pFrom = GetCrew(dmgdealer);

  //Wird gerade eingeblendet: Entfernen
  if(GetEffect("FadeIn4K", this))
  {
    EffectVar(0, this, GetEffect("FadeIn4K", this)) = 0;
    SetClrModulation(RGBa(255, 255, 255, 0), this);
  }

  pTarget->~LastDamageType(iType);
  pTarget->~OnHit(dmg/1000, iType, pFrom);
  if(GetCategory(pTarget) & C4D_Living)
    return DoEnergy(-dmg, pTarget, true, 0, dmgplayer);
  return DoDamage(dmg/1000, pTarget, 0, dmgplayer);
}