#include "stdafx.h" #include "Ability.h" #include "DragonTransStatus.h" #include "SkillAttrCalculator.h" #include "PacketStruct_AG.h" #include "Player.h" #include "SkillSlotManager.h" void DragonTransStatus::Start() { Character* const owner = GetOwner(); if (owner == NULL) { return; } // CHANGES: f110428.6L, prevent a skipping previous style buff release process // because at this point, player is already transform. starting_state_ = true; // // º¯½Å ¼öÄ¡¸¦ Àû¿ë½ÃŲ´Ù. SkillAttrCalculator skill_calculator(owner->GetAttr()); int changed_hp = skill_calculator.ApplyDragonFormation(true, GetSkillCode(), owner->GetHP()); owner->OnRecover(changed_hp, 0); ApplyAttrEx(true); starting_state_ = false; } VOID DragonTransStatus::End() { Character* const owner = GetOwner(); if (owner == NULL) { return; } // Ŭ¶ó¿¡ ¾Ë¸°´Ù. MSG_CG_STATUS_END_DRAGON_FORMATION_BRD brdMsg; brdMsg.m_dwObjKey = owner->GetObjectKey(); brdMsg.m_SkillCode = GetSkillCode(); brdMsg.m_wStatusCode = GetStateID(); owner->SendPacketAround( &brdMsg, sizeof(brdMsg) ); // º¯½Å Àü¿¡ Àû¿ë½ÃÄ×´ø ¼öÄ¡¸¦ »«´Ù. SkillAttrCalculator SkillCalc( owner->GetAttr() ); int iChangeHP = SkillCalc.ApplyDragonFormation( FALSE, GetSkillCode(), owner->GetHP() ); if( iChangeHP ) owner->OnRecover( iChangeHP, 0 ); ApplyAttrEx( FALSE ); } void DragonTransStatus::ApplyAttrEx(bool application) { Character* const owner = GetOwner(); if (owner == NULL) { return; } // old comments // (WAVERIX) (NOTE) °øÅë ¾Ë°í¸®Áò ±¸Çö»ó Çϱ⠳»¿ë ³ª»ÚÁö´Â ¾Ê´Ù... ÇÏÁö¸¸, Send°è¿­ Á¾·ù°¡ // º¹¼ö °³À̸ç, ±×°Í¸¶´Ù »óŰ¡ ¹Ì¹¦ÇÏ°Ô Æ²¸®´Ù´Â Á¡¿¡¼­ Àϰü¼º º¸ÀåÇϱâ Èûµé´Ù. µû¶ó¼­ // ¸í½ÃÀûÀ¸·Î PlayerÀÎ °æ¿ì¿¡ ´ëÇØ ó¸®ÇÏ´Â °ÍÀ¸·Î º¯°æÇÑ´Ù. // Áö·Â, ü·Â º¯È­¿¡ µû¸¥ HP, MP ȸº¹À² º¯È­ owner->UpdateCalcRecover( TRUE, TRUE, FALSE ); Player* pPlayer = owner->GetPlayerOwner(); if(pPlayer == 0) return; pPlayer->NotifyChangedStatus(PlayerStatEvent::eFlag_ChangedHP); pPlayer->NotifyChangedStatus(PlayerStatEvent::eFlag_ChangedMP); // ½ºÅ¸ÀÏÀ» ±³Ã¼ÇÑ´Ù. if (application) { if( GetCharType() == eTRANSFORM_TYPE_DRAGON1 ) pPlayer->GetSkillSlotManager()->SetSelectStyle( eSTYLE_DRAGON_TRANSFORM1 ); else if( GetCharType() == eTRANSFORM_TYPE_DRAGON2 ) pPlayer->GetSkillSlotManager()->SetSelectStyle( eSTYLE_DRAGON_TRANSFORM2 ); } else { pPlayer->GetSkillSlotManager()->SetSelectStyle( pPlayer->GetBaseSelectedStyle() ); } }