Jump to content

Extended Affect Flags


Recommended Posts

  • Honorable Member

As the title indicates, the following changes will extend the affect flags limit from 64 to 96.

Server

common/service.h

Spoiler
/// 1.
// Add
#define __EXTENDED_AFFECT_FLAG__

 

game/src/affect_flag.h

Spoiler
/// 1.
// Search
	DWORD bits[2];

	inline TAffectFlag() { bits[0] = 0; bits[1] = 0; }
	inline TAffectFlag(DWORD v1, DWORD v2 = 0) { bits[0] = v1; bits[1] = v2; }

// Replace with
#if defined(__EXTENDED_AFFECT_FLAG__)
	DWORD bits[3];

	inline TAffectFlag() { bits[0] = 0; bits[1] = 0; bits[2] = 0; }
	inline TAffectFlag(DWORD v1, DWORD v2 = 0, DWORD v3 = 0) { bits[0] = v1; bits[1] = v2; bits[2] = v3; }
#else
	DWORD bits[2];

	inline TAffectFlag() { bits[0] = 0; bits[1] = 0; }
	inline TAffectFlag(DWORD v1, DWORD v2 = 0) { bits[0] = v1; bits[1] = v2; }
#endif

/// 2.
// Search
		bits[0] = rhs.bits[0];
		bits[1] = rhs.bits[1];

// Add below
#if defined(__EXTENDED_AFFECT_FLAG__)
		bits[2] = rhs.bits[2];
#endif

/// 3.
// Search
	return lhs.bits[0] == rhs.bits[0] && lhs.bits[1] == rhs.bits[1];

// Replace with
#if defined(__EXTENDED_AFFECT_FLAG__)
	return lhs.bits[0] == rhs.bits[0] && lhs.bits[1] == rhs.bits[1] && lhs.bits[2] == rhs.bits[2];
#else
	return lhs.bits[0] == rhs.bits[0] && lhs.bits[1] == rhs.bits[1];
#endif

 

game/src/building.cpp

Spoiler
/// 1.
// Search @ CObject::EncodeInsertPacket
	pack.dwAffectFlag[0] = unsigned(m_data.xRot);
	pack.dwAffectFlag[1] = unsigned(m_data.yRot);

// Add below
#if defined(__EXTENDED_AFFECT_FLAG__)
	pack.dwAffectFlag[2] = unsigned(m_data.zRot);
#endif

 

game/src/char.cpp

Spoiler
/// 1.
// Search @ CHARACTER::EncodeInsertPacket
	pack.dwAffectFlag[0] = m_afAffectFlag.bits[0];
	pack.dwAffectFlag[1] = m_afAffectFlag.bits[1];

// Add below
#if defined(__EXTENDED_AFFECT_FLAG__)
	pack.dwAffectFlag[2] = m_afAffectFlag.bits[2];
#endif

/// 2.
// Search @ CHARACTER::UpdatePacket
	pack.dwAffectFlag[0] = m_afAffectFlag.bits[0];
	pack.dwAffectFlag[1] = m_afAffectFlag.bits[1];

// Add below
#if defined(__EXTENDED_AFFECT_FLAG__)
	pack.dwAffectFlag[2] = m_afAffectFlag.bits[2];
#endif

 

game/src/packet.h

Spoiler
/// 1.
// Search @ struct packet_add_char
	DWORD dwAffectFlag[2];

// Replace with
#if defined(__EXTENDED_AFFECT_FLAG__)
	DWORD dwAffectFlag[3];
#else
	DWORD dwAffectFlag[2];
#endif

/// 2.
// Search @ struct packet_update_char
	DWORD dwAffectFlag[2];

// Replace with
#if defined(__EXTENDED_AFFECT_FLAG__)
	DWORD dwAffectFlag[3];
#else
	DWORD dwAffectFlag[2];
#endif

 

Client

UserInterface/Locale_inc.h

Spoiler
/// 1.
// Add
#define ENABLE_EXTENDED_AFFECT_FLAG

 

UserInterface/AffectFlagContainer.h

Spoiler
/// 1.
// Search
		BIT_SIZE = 64,

// Replace with
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
		BIT_SIZE = 96,
#else
		BIT_SIZE = 64,
#endif

 

UserInterface/Packet.h

Spoiler
/// 1.
// Search @ struct packet_add_char
	DWORD dwAffectFlag[2];

// Replace with
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	DWORD dwAffectFlag[3];
#else
	DWORD dwAffectFlag[2];
#endif

/// 2.
// Search @ struct packet_add_char2
	DWORD dwAffectFlag[2];

// Replace with
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	DWORD dwAffectFlag[3];
#else
	DWORD dwAffectFlag[2];
#endif

/// 3.
// Search @ struct packet_update_char
	DWORD dwAffectFlag[2];

// Replace with
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	DWORD dwAffectFlag[3];
#else
	DWORD dwAffectFlag[2];
#endif

/// 4.
// Search @ struct packet_update_char2
	DWORD dwAffectFlag[2];

// Replace with
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	DWORD dwAffectFlag[3];
#else
	DWORD dwAffectFlag[2];
#endif

 

UserInterface/PythonNetworkStreamPhaseGameActor.cpp

Spoiler
/// 1.
// Search @ CPythonNetworkStream::RecvCharacterAppendPacket
	kNetActorData.m_kAffectFlags.CopyData(32, sizeof(chrAddPacket.dwAffectFlag[1]), &chrAddPacket.dwAffectFlag[1]);

// Add below
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	kNetActorData.m_kAffectFlags.CopyData(64, sizeof(chrAddPacket.dwAffectFlag[2]), &chrAddPacket.dwAffectFlag[2]);
#endif

/// 2.
// Search @ CPythonNetworkStream::RecvCharacterAppendPacketNew
	kNetActorData.m_kAffectFlags.CopyData(32, sizeof(chrAddPacket.dwAffectFlag[1]), &chrAddPacket.dwAffectFlag[1]);

// Add below
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	kNetActorData.m_kAffectFlags.CopyData(64, sizeof(chrAddPacket.dwAffectFlag[2]), &chrAddPacket.dwAffectFlag[2]);
#endif

/// 3.
// Search @ CPythonNetworkStream::RecvCharacterUpdatePacket
	kNetUpdateActorData.m_kAffectFlags.CopyData(32, sizeof(chrUpdatePacket.dwAffectFlag[1]), &chrUpdatePacket.dwAffectFlag[1]);

// Add below
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	kNetUpdateActorData.m_kAffectFlags.CopyData(64, sizeof(chrUpdatePacket.dwAffectFlag[2]), &chrUpdatePacket.dwAffectFlag[2]);
#endif

/// 4.
// Search @ CPythonNetworkStream::RecvCharacterUpdatePacketNew
	kNetUpdateActorData.m_kAffectFlags.CopyData(32, sizeof(chrUpdatePacket.dwAffectFlag[1]), &chrUpdatePacket.dwAffectFlag[1]);

// Add below
#if defined(ENABLE_EXTENDED_AFFECT_FLAG)
	kNetUpdateActorData.m_kAffectFlags.CopyData(64, sizeof(chrUpdatePacket.dwAffectFlag[2]), &chrUpdatePacket.dwAffectFlag[2]);
#endif

 

Curiosity

Spoiler
	enum EAffectBits
	{
		AFFECT_YMIR,
		AFFECT_INVISIBILITY,
		AFFECT_SPAWN,

		AFFECT_POISON,
		AFFECT_SLOW,
		AFFECT_STUN,

		AFFECT_DUNGEON_READY, // ´øÀü¿¡¼­ Áغñ »óÅÂ
		AFFECT_SHOW_ALWAYS, // AFFECT_DUNGEON_UNIQUE ¿¡¼­ º¯°æ(Ŭ¶óÀ̾ðÆ®¿¡¼­ ÄøµµÇÁö¾ÊÀ½)

		AFFECT_BUILDING_CONSTRUCTION_SMALL,
		AFFECT_BUILDING_CONSTRUCTION_LARGE,
		AFFECT_BUILDING_UPGRADE,

		AFFECT_MOV_SPEED_POTION,
		AFFECT_ATT_SPEED_POTION,

		AFFECT_FISH_MIND,

		AFFECT_JEONGWI, // Àü±ÍÈ¥
		AFFECT_GEOMGYEONG, // °Ë°æ
		AFFECT_CHEONGEUN, // õ±ÙÃß
		AFFECT_GYEONGGONG, // °æ°ø¼ú
		AFFECT_EUNHYEONG, // ÀºÇü¹ý
		AFFECT_GWIGEOM, // ±Í°Ë
		AFFECT_GONGPO, // °øÆ÷
		AFFECT_JUMAGAP, // ÁÖ¸¶°©
		AFFECT_HOSIN, // È£½Å
		AFFECT_BOHO, // º¸È£
		AFFECT_KWAESOK, // Äè¼Ó
		AFFECT_HEUKSIN, // Èæ½Å¼öÈ£
		AFFECT_MUYEONG, // ¹«¿µÁø
		AFFECT_REVIVE_INVISIBILITY, // ºÎÈ° ¹«Àû
		AFFECT_FIRE, // Áö¼Ó ºÒ
		AFFECT_GICHEON, // ±âõ ´ë°ø
		AFFECT_JEUNGRYEOK, // Áõ·Â¼ú 
		AFFECT_DASH, // ´ë½¬
		AFFECT_PABEOP, // ÆĹý¼ú
		AFFECT_FALLEN_CHEONGEUN, // ´Ù¿î ±×·¹À̵å õ±ÙÃß

		AFFECT_POLYMORPH, // Æú¸®¸ðÇÁ

		AFFECT_WAR_FLAG1,
		AFFECT_WAR_FLAG2,
		AFFECT_WAR_FLAG3,

		AFFECT_CHINA_FIREWORK,
		AFFECT_CANNOT_ATTACK,
		AFFECT_CANNOT_USE_SKILL,
		AFFECT_DS,

		AFFECT_BLEEDING,
		AFFECT_RED_POSSESSION,
		AFFECT_BLUE_POSSESSION, 

		AFFECT_UNK45, // ?
		AFFECT_UNK46, // ?
		AFFECT_UNBEATABLE,

		AFFECT_BATTLE_FIELD_RANK1,
		AFFECT_BATTLE_FIELD_RANK2,
		AFFECT_BATTLE_FIELD_RANK3,
		AFFECT_TARGET_VICTIM,

		AFFECT_UNK52, // ?

		AFFECT_ELECTRIC_SHOCK,
		AFFECT_CONFUSION,

		AFFECT_SOUL_RED,
		AFFECT_SOUL_BLUE,
		AFFECT_SOUL_MIX,

		AFFECT_UNK58, // ?
		AFFECT_BATTLE_ROYALE_SLOW_1,
		AFFECT_BATTLE_ROYALE_SLOW_2,
		AFFECT_BATTLE_ROYALE_SLOW_3,

		AFFECT_UNK62, // ?
		AFFECT_PASWAE,
		AFFECT_UNK64, // ?

		AFFECT_FLAG_ELEMENT_BUFF_CRACK_NONE,
		AFFECT_FLAG_ELEMENT_BUFF_CRACK_FIRE,
		AFFECT_FLAG_ELEMENT_BUFF_CRACK_ICE,
		AFFECT_FLAG_ELEMENT_BUFF_CRACK_ELECT,
		AFFECT_FLAG_ELEMENT_BUFF_CRACK_WIND,
		AFFECT_FLAG_ELEMENT_BUFF_CRACK_EARTH,
		AFFECT_FLAG_ELEMENT_BUFF_CRACK_DARK,

		AFFECT_FLAG_UNK72, // guild_battle (blue)
		AFFECT_FLAG_UNK73, // guild_battle (yellow)
		AFFECT_FLAG_UNK74, // guild_battle (green)
		AFFECT_FLAG_UNK75, // guild_battle (red)

		AFFECT_FLAG_UNK76, // ?
		AFFECT_FLAG_UNK77, // ?
		AFFECT_FLAG_UNK78, // ?
		AFFECT_FLAG_UNK79, // ?

		AFFECT_CHEONUN_INVINCIBILITY,
		AFFECT_CHEONUN_NORMAL,
		AFFECT_CHEONUN_MASTER,
		AFFECT_CHEONUN_GRAND_MASTER,
		AFFECT_CHEONUN_PERFECT_MASTER,

		AFFECT_NUM,

		AFFECT_HWAYEOM = AFFECT_GEOMGYEONG,
	};

 

.

Edited by Owsap
  • Metin2 Dev 21
  • Good 5
  • Love 1
  • Love 16
Link to comment
Share on other sites

  • 6 months later...

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.