|
@@ -384,32 +384,30 @@ void Spiel::tick( double zeit )
|
|
int team = getTeamVonSpieler( tmp->getSpieler() );
|
|
int team = getTeamVonSpieler( tmp->getSpieler() );
|
|
for( int j = 0; j < spielerAnzahl; j++ )
|
|
for( int j = 0; j < spielerAnzahl; j++ )
|
|
{
|
|
{
|
|
- Spieler *s = spieler->z( j );
|
|
|
|
- if( s && s->zTeam() && s->zTeam()->id != team && s->istTreffer( tmp->getPosition() ) )
|
|
|
|
|
|
+ Spieler *attacked = spieler->z( j );
|
|
|
|
+ if( attacked && attacked->zTeam() && attacked->zTeam()->id != team && attacked->istTreffer( tmp->getPosition() ) )
|
|
{ // Treffer
|
|
{ // Treffer
|
|
- double intens = tmp->getIntensity() * ( ( tmp->getSpeed() - s->getSpeed() ).getLength() / 200 );
|
|
|
|
- bool kill = s->nimmSchaden( intens );
|
|
|
|
- if( tmp->getSpeed().getLengthSq() > 0 )
|
|
|
|
- s->impuls( tmp->getPosition() - tmp->getSpeed(), tmp->getSpeed() * 0.3f );
|
|
|
|
- float erf = 0;
|
|
|
|
- int skillP = 0;
|
|
|
|
|
|
+ Spieler *attacker = 0;
|
|
for( int k = 0; k < spielerAnzahl; k++ )
|
|
for( int k = 0; k < spielerAnzahl; k++ )
|
|
{
|
|
{
|
|
- Spieler *sp = spieler->z( k );
|
|
|
|
- if( sp && sp->getSpielerNummer() == tmp->getSpieler() )
|
|
|
|
- {
|
|
|
|
- skillP = sp->getSkillP();
|
|
|
|
- sp->machSchaden( intens, kill );
|
|
|
|
- erf = sp->getEp();
|
|
|
|
- }
|
|
|
|
|
|
+ Spieler *tmpS = spieler->z( k );
|
|
|
|
+ if( tmpS && tmpS->getSpielerNummer() == tmp->getSpieler() )
|
|
|
|
+ attacker = tmpS;
|
|
}
|
|
}
|
|
|
|
+ double intens = tmp->getIntensity() * ( ( tmp->getSpeed() - attacked->getSpeed() ).getLength() / 200 );
|
|
|
|
+ bool kill = attacked->nimmSchaden( intens, attacker ? attacker->getLevel() : 1 );
|
|
|
|
+ if( tmp->getSpeed().getLengthSq() > 0 )
|
|
|
|
+ attacked->impuls( tmp->getPosition() - tmp->getSpeed(), tmp->getSpeed() * 0.3f );
|
|
|
|
+ int skillP = attacker->getSkillP();
|
|
|
|
+ attacker->machSchaden( intens, kill, attacked->getLevel() );
|
|
|
|
+ float erf = attacker->getEp();
|
|
for( int k = 0; k < spielerAnzahl; k++ )
|
|
for( int k = 0; k < spielerAnzahl; k++ )
|
|
{
|
|
{
|
|
Spieler *sp = spieler->z( k );
|
|
Spieler *sp = spieler->z( k );
|
|
if( sp )
|
|
if( sp )
|
|
- sp->zKlient()->sendeTreffer( tmp->getId(), s->getSpielerNummer(), spielZeit, erf, skillP );
|
|
|
|
|
|
+ sp->zKlient()->sendeTreffer( tmp->getId(), attacked->getSpielerNummer(), spielZeit, erf, skillP );
|
|
if( kill && sp )
|
|
if( kill && sp )
|
|
- sp->zKlient()->sendeTod( s->getSpielerNummer(), tmp->getSpieler(), spielZeit );
|
|
|
|
|
|
+ sp->zKlient()->sendeTod( attacked->getSpielerNummer(), tmp->getSpieler(), spielZeit );
|
|
}
|
|
}
|
|
if( kill )
|
|
if( kill )
|
|
{
|
|
{
|
|
@@ -442,7 +440,7 @@ void Spiel::tick( double zeit )
|
|
Spieler *s = spieler->z( k );
|
|
Spieler *s = spieler->z( k );
|
|
if( s && s->getSpielerNummer() == tmp->getSpieler() )
|
|
if( s && s->getSpielerNummer() == tmp->getSpieler() )
|
|
{
|
|
{
|
|
- s->addTreffer( (float)intens );
|
|
|
|
|
|
+ s->addTreffer( (float)intens, 0 );
|
|
erf = s->getEp();
|
|
erf = s->getEp();
|
|
skillP = s->getSkillP();
|
|
skillP = s->getSkillP();
|
|
}
|
|
}
|