Offical oyunun protolarında bulunan reflect aiflag'ı sayesinde mobun %x canı altında vurulan hasarın %y'sini yansıtmasını sağlar.
char_state.cpp
C++:
// Arat
bool CHARACTER::IsStoneSkinner() const
// Üstüne ekle
bool CHARACTER::IsReflector() const
{
return IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_REFLECT);
}
// CHARACTER::__StateIdle_Monster() fonksiyonunun içinde arat
if (IsGodSpeeder())
if (IsGodSpeed())
SetGodSpeed(false);
// Altına ekle
if (IsReflector())
if (IsReflect())
SetReflect(false);
// CHARACTER::StateBattle() fonksiyonunun içinde arat
if (IsGodSpeeder() == true)
if (GetHPPct() < m_pkMobData->m_table.bGodSpeedPoint)
if (IsGodSpeed() != true)
SetGodSpeed(true);
// Üstüne ekle
if (IsReflector() == true)
if (GetHPPct() < 25)
if (IsReflect() != true)
SetReflect(true);
char_battle.cpp
C++:
// ::Damage fonksiyonu içinde arat
SendDamagePacket(pAttacker, dam, damageFlag);
// Üstüne ekle
if (pAttacker && pAttacker->IsPC() && IsNPC() && IsReflect())
pAttacker->SendDamagePacket(this, dam/100*5, damageFlag);
char.h
C++:
//arat
bool IsBerserker() const;
bool IsBerserk() const;
void SetBerserk(bool mode);
//altına ekle
bool IsReflector() const;
bool IsReflect() const;
void SetReflect(bool mode);
char.cpp
C++:
//arat
bool CHARACTER::IsGodSpeed() const
//üstüne ekle
bool CHARACTER::IsReflect() const
{
if (m_pkMobInst != nullptr)
return m_pkMobInst->m_IsReflect;
else
return false;
}
void CHARACTER::SetReflect(bool mode)
{
if (m_pkMobInst != nullptr)
m_pkMobInst->m_IsReflect = mode;
}
mob_manager.cpp
C++:
//arat
CMobInstance::CMobInstance()
: m_IsBerserk(false), m_IsGodSpeed(false), m_IsRevive(false),
//ekle
, m_IsReflect(false)
mob_manager.h
C++:
//arat
bool m_IsRevive;
//Altına ekle
bool m_IsReflect;
+ olarak buraya dahil etmedim fakat
length.h'da
C++:
enum EAIFlags
ve protoreader dosyanıza
get_Mob_AIFlag_Value
fonksiyonunda bulunan array'in içerisine "REFLECT" olarak dahil ettikten sonra mob_proto'da aiflag olarak REFLECT verdiğiniz mobların %25'den az canı olduğunda vurduğunuz hasarın %5'ini size geri yansıtır. Bu kısımları sabit yapmayı tercih ettim, dilerseniz mob proto'ya berserk, stoneskin gibi column açıp dinamik bir şekilde % kaç canda reflect'e gireceğini ve % kaç hasarı geri yansıtacağını ayarlayabilirsiniz.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 12
- Görüntüleme
- 1K
- Cevaplar
- 2
- Görüntüleme
- 171
- Cevaplar
- 3
- Görüntüleme
- 461
- Cevaplar
- 15
- Görüntüleme
- 892
