diff options
| author | fusion32 <marcopuzziello@gmail.com> | 2025-06-05 12:00:34 -0300 |
|---|---|---|
| committer | fusion32 <marcopuzziello@gmail.com> | 2025-06-05 12:00:34 -0300 |
| commit | ebfa80ab573b1a0ef9aec65a45fd0ae751196207 (patch) | |
| tree | e86ce77ae1f497b216861d763d92de57ec9e0490 /src/crplayer.cc | |
| parent | 3c8bcba6b540f5cb84572994d9ec2426dd348a93 (diff) | |
| download | game-ebfa80ab573b1a0ef9aec65a45fd0ae751196207.tar.gz game-ebfa80ab573b1a0ef9aec65a45fd0ae751196207.zip | |
merge creature headers
Diffstat (limited to 'src/crplayer.cc')
| -rw-r--r-- | src/crplayer.cc | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/crplayer.cc b/src/crplayer.cc new file mode 100644 index 0000000..3193843 --- /dev/null +++ b/src/crplayer.cc @@ -0,0 +1,72 @@ +#include "cr.hh" + +#include "stubs.hh" + +uint8 TPlayer::GetRealProfession(void){ + return this->Profession; +} + +uint8 TPlayer::GetEffectiveProfession(void){ + uint8 Profession = this->Profession; + if(Profession >= 10){ + Profession -= 10; + } + return Profession; +} + +uint8 TPlayer::GetActiveProfession(void){ + uint8 Profession; + if(CheckRight(this->ID, PREMIUM_ACCOUNT)){ + Profession = this->Profession; + }else{ + Profession = this->GetEffectiveProfession(); + } + return Profession; +} + +bool TPlayer::GetActivePromotion(void){ + return CheckRight(this->ID, PREMIUM_ACCOUNT) + && this->Profession >= 10; +} + +void TPlayer::CheckState(void){ + if(this->Connection != NULL){ + uint8 State = 0; + + if(this->Skills[SKILL_POISON]->TimerValue() > 0){ + State |= 0x01; + } + + if(this->Skills[SKILL_BURNING]->TimerValue() > 0){ + State |= 0x02; + } + + if(this->Skills[SKILL_ENERGY]->TimerValue() > 0){ + State |= 0x04; + } + + // TODO(fusion): Not sure about this one. + if(this->Skills[SKILL_DRUNK]->TimerValue() > 0 && this->Skills[SKILL_DRUNK]->Get() == 0){ + State |= 0x08; + } + + if(this->Skills[SKILL_MANASHIELD]->TimerValue() > 0 || this->Skills[SKILL_MANASHIELD]->Get() > 0){ + State |= 0x10; + } + + if(this->Skills[SKILL_GO_STRENGTH]->MDAct < 0){ + State |= 0x20; + }else if(this->Skills[SKILL_GO_STRENGTH]->MDAct > 0){ + State |= 0x40; + } + + if(RoundNr < this->EarliestLogoutRound){ + State |= 0x80; + } + + if(State != this->OldState){ + SendPlayerState(this->Connection, State); + this->OldState = State; + } + } +} |
