forked from metin2/server
184 lines
3.8 KiB
C++
184 lines
3.8 KiB
C++
#ifndef __INC_AFFECT_H
|
|
#define __INC_AFFECT_H
|
|
|
|
class CAffect
|
|
{
|
|
public:
|
|
DWORD dwType;
|
|
BYTE bApplyOn;
|
|
long lApplyValue;
|
|
DWORD dwFlag;
|
|
long lDuration;
|
|
long lSPCost;
|
|
|
|
static CAffect* Acquire();
|
|
static void Release(CAffect* p);
|
|
};
|
|
|
|
enum EAffectTypes
|
|
{
|
|
AFFECT_NONE,
|
|
|
|
AFFECT_MOV_SPEED = 200,
|
|
AFFECT_ATT_SPEED,
|
|
AFFECT_ATT_GRADE,
|
|
AFFECT_INVISIBILITY,
|
|
AFFECT_STR,
|
|
AFFECT_DEX, // 205
|
|
AFFECT_CON,
|
|
AFFECT_INT,
|
|
AFFECT_FISH_MIND_PILL,
|
|
|
|
AFFECT_POISON,
|
|
AFFECT_STUN, // 210
|
|
AFFECT_SLOW,
|
|
AFFECT_DUNGEON_READY,
|
|
AFFECT_DUNGEON_UNIQUE,
|
|
|
|
AFFECT_BUILDING,
|
|
AFFECT_REVIVE_INVISIBLE, // 215
|
|
AFFECT_FIRE,
|
|
AFFECT_CAST_SPEED,
|
|
AFFECT_HP_RECOVER_CONTINUE,
|
|
AFFECT_SP_RECOVER_CONTINUE,
|
|
|
|
AFFECT_POLYMORPH, // 220
|
|
AFFECT_MOUNT,
|
|
|
|
AFFECT_WAR_FLAG, // 222
|
|
|
|
AFFECT_BLOCK_CHAT, // 223
|
|
AFFECT_CHINA_FIREWORK,
|
|
|
|
AFFECT_BOW_DISTANCE, // 225
|
|
AFFECT_DEF_GRADE, // 226
|
|
|
|
AFFECT_PREMIUM_START = 500,
|
|
AFFECT_EXP_BONUS = 500, // 경험의 반지
|
|
AFFECT_ITEM_BONUS = 501, // 도둑의 장갑
|
|
AFFECT_SAFEBOX = 502, // PREMIUM_SAFEBOX,
|
|
AFFECT_AUTOLOOT = 503, // PREMIUM_AUTOLOOT,
|
|
AFFECT_FISH_MIND = 504, // PREMIUM_FISH_MIND,
|
|
AFFECT_MARRIAGE_FAST = 505, // 원앙의 깃털
|
|
AFFECT_GOLD_BONUS = 506, // 돈 드롭확률 50%증가
|
|
AFFECT_PREMIUM_END = 509,
|
|
|
|
AFFECT_MALL = 510, // 몰 아이템 에펙트
|
|
AFFECT_NO_DEATH_PENALTY = 511, // 용신의 가호 (경험치가 패널티를 한번 막아준다)
|
|
AFFECT_SKILL_BOOK_BONUS = 512, // 선인의 교훈 (책 수련 성공 확률이 50% 증가)
|
|
AFFECT_SKILL_NO_BOOK_DELAY = 513, // 주안술서
|
|
|
|
AFFECT_HAIR = 514, // 헤어 효과
|
|
AFFECT_COLLECT = 515, //수집퀘스트
|
|
AFFECT_EXP_BONUS_EURO_FREE = 516, // 경험의 반지 (유럽 버전 14 레벨 이하 기본 효과)
|
|
AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 = 517,
|
|
AFFECT_UNIQUE_ABILITY = 518,
|
|
|
|
AFFECT_CUBE_1,
|
|
AFFECT_CUBE_2,
|
|
AFFECT_CUBE_3,
|
|
AFFECT_CUBE_4,
|
|
AFFECT_CUBE_5,
|
|
AFFECT_CUBE_6,
|
|
AFFECT_CUBE_7,
|
|
AFFECT_CUBE_8,
|
|
AFFECT_CUBE_9,
|
|
AFFECT_CUBE_10,
|
|
AFFECT_CUBE_11,
|
|
AFFECT_CUBE_12,
|
|
|
|
AFFECT_BLEND,
|
|
|
|
AFFECT_HORSE_NAME,
|
|
AFFECT_MOUNT_BONUS,
|
|
|
|
AFFECT_AUTO_HP_RECOVERY = 534,
|
|
AFFECT_AUTO_SP_RECOVERY = 535,
|
|
|
|
AFFECT_DRAGON_SOUL_QUALIFIED = 540,
|
|
AFFECT_DRAGON_SOUL_DECK_0 = 541,
|
|
AFFECT_DRAGON_SOUL_DECK_1 = 542,
|
|
|
|
|
|
AFFECT_RAMADAN_ABILITY = 300,
|
|
AFFECT_RAMADAN_RING = 301,
|
|
|
|
AFFECT_NOG_ABILITY = 302,
|
|
AFFECT_HOLLY_STONE_POWER = 303,
|
|
|
|
AFFECT_QUEST_START_IDX = 1000
|
|
};
|
|
|
|
enum EAffectBits
|
|
{
|
|
AFF_NONE,
|
|
|
|
AFF_YMIR,
|
|
AFF_INVISIBILITY,
|
|
AFF_SPAWN,
|
|
|
|
AFF_POISON,
|
|
AFF_SLOW,
|
|
AFF_STUN,
|
|
|
|
AFF_DUNGEON_READY, // 던전에서 준비 상태
|
|
AFF_DUNGEON_UNIQUE, // 던전 유니크 (클라이언트에서 컬링되지않음)
|
|
|
|
AFF_BUILDING_CONSTRUCTION_SMALL,
|
|
AFF_BUILDING_CONSTRUCTION_LARGE,
|
|
AFF_BUILDING_UPGRADE,
|
|
|
|
AFF_MOV_SPEED_POTION,
|
|
AFF_ATT_SPEED_POTION,
|
|
|
|
AFF_FISH_MIND,
|
|
|
|
AFF_JEONGWIHON, // 전귀혼
|
|
AFF_GEOMGYEONG, // 검경
|
|
AFF_CHEONGEUN, // 천근추
|
|
AFF_GYEONGGONG, // 경공술
|
|
AFF_EUNHYUNG, // 은형법
|
|
AFF_GWIGUM, // 귀검
|
|
AFF_TERROR, // 공포
|
|
AFF_JUMAGAP, // 주마갑
|
|
AFF_HOSIN, // 호신
|
|
AFF_BOHO, // 보호
|
|
AFF_KWAESOK, // 쾌속
|
|
AFF_MANASHIELD, // 마나쉴드
|
|
AFF_MUYEONG, // 무영진 affect
|
|
AFF_REVIVE_INVISIBLE, // 부활시 잠시동안 무적
|
|
AFF_FIRE, // 지속 불 데미지
|
|
AFF_GICHEON, // 기천대공
|
|
AFF_JEUNGRYEOK, // 증력술
|
|
AFF_TANHWAN_DASH, // 탄환격용 달리기어펙트
|
|
AFF_PABEOP, // 파법술
|
|
AFF_CHEONGEUN_WITH_FALL, // 천근추
|
|
AFF_POLYMORPH,
|
|
AFF_WAR_FLAG1,
|
|
AFF_WAR_FLAG2,
|
|
AFF_WAR_FLAG3,
|
|
|
|
AFF_CHINA_FIREWORK,
|
|
AFF_HAIR, // 헤어
|
|
AFF_GERMANY, // 독일
|
|
|
|
AFF_BITS_MAX
|
|
};
|
|
|
|
extern void SendAffectAddPacket(LPDESC d, CAffect * pkAff);
|
|
|
|
// AFFECT_DURATION_BUG_FIX
|
|
enum AffectVariable
|
|
{
|
|
// Affect가 무한대로 들어가 있어야 할 경우 사용.
|
|
// 시간을 계속 줄이기 때문에 매우 큰값으로 무한대를 에뮬레이션함.
|
|
//// 24비트는 적으므로 25비트를 사용.
|
|
// ... 25비트 사용한다고 해놓고선 29bit 사용하고 있는 엄청난 주석이란...
|
|
// collect quest에서 무한 시간을 60년으로 사용하고 있으므로, 여기도 60년으로 하자.
|
|
|
|
INFINITE_AFFECT_DURATION = 60 * 365 * 24 * 60 * 60
|
|
};
|
|
// END_AFFECT_DURATION_BUG_FIX
|
|
|
|
#endif
|