Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 2, 2011, 5:17:20 PM (13 years ago)
Author:
simonmie
Message:

New shielddamage implemented, depending functions changed, bugs fixed.

LightningGun →fire changed
Other weapons still need to be edited

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/gameimmersion/src/orxonox/worldentities/pawns/Pawn.cc

    r8187 r8386  
    265265////////////////////end edit
    266266
     267
     268/////////////////////me override
     269    void Pawn::damage(float damage, float healthdamage, float shielddamage, Pawn* originator)
     270    {
     271        if (this->getGametype() && this->getGametype()->allowPawnDamage(this, originator))
     272        {
     273            if (shielddamage >= this->getShieldHealth())
     274            {
     275                this->setShieldHealth(0);
     276                this->setHealth(this->health_ - (healthdamage + damage));
     277            }
     278            else
     279            {
     280                this->setShieldHealth(this->shieldHealth_ - shielddamage);
     281
     282                // remove remaining shieldAbsorpton-Part of damage from shield
     283                shielddamage = damage * this->shieldAbsorption_;
     284                shielddamage = std::min(this->getShieldHealth(),shielddamage);
     285                this->setShieldHealth(this->shieldHealth_ - shielddamage);
     286
     287                // set remaining damage to health
     288                this->setHealth(this->health_ - (damage - shielddamage) - healthdamage);
     289            }
     290
     291            this->lastHitOriginator_ = originator;
     292
     293            // play damage effect
     294        }
     295        COUT(3) << "neue damage-Funktion wurde aufgerufen // " << "Shield:" << this->getShieldHealth() << endl;
     296    }
     297
     298/////////////end me
     299
     300
     301/* HIT-Funktionen
     302        Die hit-Funktionen muessen auch in src/orxonox/controllers/Controller.h angepasst werden!
     303
     304*/
     305
     306
    267307    void Pawn::hit(Pawn* originator, const Vector3& force, float damage)
    268308    {
     
    276316    }
    277317
     318/////////////me override
     319    void Pawn::hit(Pawn* originator, const Vector3& force, float damage, float healthdamage, float shielddamage)
     320    {
     321        COUT(3) << "neue hit-Funktion wurde aufgerufen // " << std::flush;
     322        if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) )
     323        {
     324            this->damage(damage, healthdamage, shielddamage, originator);
     325            this->setVelocity(this->getVelocity() + force);
     326
     327            // play hit effect
     328        }
     329    }
     330/////////////end me
     331
    278332    void Pawn::hit(Pawn* originator, btManifoldPoint& contactpoint, float damage)
    279333    {
     
    288342        }
    289343    }
     344
     345/////////////me override
     346    void Pawn::hit(Pawn* originator, btManifoldPoint& contactpoint, float damage, float healthdamage, float shielddamage)
     347    {
     348        COUT(3) << "neue hit2-Funktion wurde aufgerufen // shielddamage: " << shielddamage << std::flush;
     349        if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) )
     350        {
     351            this->damage(damage, healthdamage, shielddamage, originator);
     352
     353            if ( this->getController() )
     354                this->getController()->hit(originator, contactpoint, shielddamage);
     355
     356            // play hit effect
     357        }
     358    }
     359/////////////end me
    290360
    291361    void Pawn::kill()
Note: See TracChangeset for help on using the changeset viewer.