4 Commits

Author SHA1 Message Date
c87e816b59 Merge pull request 'issue #10: add talisman slot support' (#3) from issue-10-talismans into main
Some checks are pending
build / Linux asan (push) Waiting to run
build / Linux release (push) Waiting to run
build / FreeBSD build (push) Waiting to run
Reviewed-on: #3
2026-04-16 23:05:36 +02:00
c7e2a0689c Merge pull request 'issue #9: add classic sash gameplay support' (#2) from issue-9-sashes into main
Some checks failed
build / Linux asan (push) Has been cancelled
build / Linux release (push) Has been cancelled
build / FreeBSD build (push) Has been cancelled
Reviewed-on: #2
2026-04-16 23:04:52 +02:00
5418a50e99 Merge pull request 'issue #4: add biolog submit command' (#1) from issue-4-biolog-submit-command into main
Some checks failed
build / Linux asan (push) Has been cancelled
build / Linux release (push) Has been cancelled
build / FreeBSD build (push) Has been cancelled
Reviewed-on: #1
2026-04-16 23:03:43 +02:00
server
762603aaf5 issue-10: add talisman slot support
Some checks are pending
build / Linux asan (pull_request) Waiting to run
build / Linux release (pull_request) Waiting to run
build / FreeBSD build (pull_request) Waiting to run
2026-04-16 22:29:08 +02:00
5 changed files with 43 additions and 2 deletions

View File

@@ -327,6 +327,7 @@ enum EItemWearableFlag
WEARABLE_COSTUME_HAIR = (1 << 13),
WEARABLE_BELT = (1 << 14),
WEARABLE_COSTUME_SASH = (1 << 15),
WEARABLE_TALISMAN = (1 << 16),
};
enum ELimitTypes

View File

@@ -124,6 +124,7 @@ enum EWearPositions
WEAR_BELT, // 23 : 신규 벨트슬롯
WEAR_COSTUME_SASH, // 24
WEAR_TALISMAN, // 25
WEAR_MAX = 32 //
};

View File

@@ -298,8 +298,9 @@ int get_Item_Flag_Value(string inputString)
int get_Item_WearFlag_Value(string inputString)
{
string arWearrFlag[] = {"WEAR_BODY", "WEAR_HEAD", "WEAR_FOOTS", "WEAR_WRIST", "WEAR_WEAPON", "WEAR_NECK", "WEAR_EAR", "WEAR_SHIELD", "WEAR_UNIQUE",
"WEAR_ARROW", "WEAR_HAIR", "WEAR_ABILITY"};
string arWearrFlag[] = {"WEAR_BODY", "WEAR_HEAD", "WEAR_FOOTS", "WEAR_WRIST", "WEAR_WEAPON", "WEAR_NECK", "WEAR_EAR", "WEAR_UNIQUE",
"WEAR_SHIELD", "WEAR_ARROW", "WEAR_HAIR", "WEAR_ABILITY", "WEAR_COSTUME_BODY", "WEAR_COSTUME_HAIR",
"WEAR_BELT", "WEAR_COSTUME_SASH", "WEAR_TALISMAN"};
int retValue = 0;

View File

@@ -54,6 +54,37 @@ namespace
constexpr int kPickupPatternMinRouteStep = 250;
constexpr int kPickupPatternMaxIntervalMs = 15000;
enum ETalismanElement
{
TALISMAN_ELEMENT_FIRE = 1,
TALISMAN_ELEMENT_ICE = 2,
TALISMAN_ELEMENT_LIGHTNING = 3,
TALISMAN_ELEMENT_WIND = 4,
TALISMAN_ELEMENT_EARTH = 5,
};
const char* GetTalismanEffectPath(LPITEM item)
{
if (!item || item->GetType() != ITEM_TOTEM)
return nullptr;
switch (item->GetValue(0))
{
case TALISMAN_ELEMENT_FIRE:
return "d:/ymir work/effect/etc/firecracker/newyear_firecracker.mse";
case TALISMAN_ELEMENT_ICE:
return "d:/ymir work/effect/etc/recuperation/drugup_blue.mse";
case TALISMAN_ELEMENT_LIGHTNING:
return "d:/ymir work/effect/etc/recuperation/drugup_purple.mse";
case TALISMAN_ELEMENT_WIND:
return "d:/ymir work/effect/etc/recuperation/drugup_green.mse";
case TALISMAN_ELEMENT_EARTH:
return "d:/ymir work/effect/etc/buff/buff_item3.mse";
default:
return "d:/ymir work/effect/etc/buff/buff_item1.mse";
}
}
bool ValidateStoredRefineNpc(LPCHARACTER ch, DWORD dwRefineNpcVID, const char* action)
{
if (!ch)
@@ -6618,6 +6649,11 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
{
this->EffectPacket(SE_EQUIP_LOVE_PENDANT);
}
else if (ITEM_TOTEM == item->GetType())
{
if (const char* c_szEffect = GetTalismanEffectPath(item))
SpecificEffectPacket(c_szEffect);
}
// ITEM_UNIQUE의 경우, SpecialItemGroup에 정의되어 있고, (item->GetSIGVnum() != NULL)
//
else if (ITEM_UNIQUE == item->GetType() && 0 != item->GetSIGVnum())

View File

@@ -535,6 +535,8 @@ int CItem::FindEquipCell(LPCHARACTER ch, int iCandidateCell)
}
else if (GetType() == ITEM_BELT)
return WEAR_BELT;
else if (GetType() == ITEM_TOTEM)
return WEAR_TALISMAN;
else if (GetWearFlag() & WEARABLE_BODY)
return WEAR_BODY;
else if (GetWearFlag() & WEARABLE_HEAD)