I am working on a system that automatically applies Full Blue (FB) + +5 enhancement to items when a character travels (teleport / zone change).
The system should:
The system should:
- Apply to all items in inventory slots 0 → 12
- Work for:
- Weapons
- Armor
- Accessories
- Detect item degree:
- DG01 → DG08
- Automatically set:
- +5 upgrade
- Full Blue stats (FB max options)
- Prevent duplicate execution (Anti-spam / once per trigger)
anyone can share PROCEDURE
ALTER PROCEDURE [dbo].[_OnLoadingScreen_EDIT]
@CharID INT,
@Charname VARCHAR(25),
@TargetedRegionID SMALLINT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@Slot INT = 0,
@ID64 BIGINT,
@RefItemID INT,
@CharLevel INT,
@T1 INT,
@T2 INT,
@T3 INT,
@T4 INT,
@CodeName VARCHAR(128);
/* =========================
CHARACTER LEVEL
========================== */
SELECT @CharLevel = CurLevel
FROM Vengard_SHARD.dbo._Char
WHERE CharID = @CharID;
/* =========================
LOOP EQUIPMENT
========================== */
WHILE @Slot <= 12
BEGIN
SET @ID64 = NULL;
SET @RefItemID = NULL;
/* GET EQUIPPED ITEM */
SELECT
@ID64 = I.ID64,
@RefItemID = I.RefItemID
FROM Vengard_SHARD.dbo._Inventory INV WITH(NOLOCK)
INNER JOIN Vengard_SHARD.dbo._Items I WITH(NOLOCK)
ON INV.ItemID = I.ID64
WHERE INV.CharID = @CharID
AND INV.Slot = @Slot;
/* ITEM EXISTS */
IF @ID64 IS NOT NULL
BEGIN
/* GET ITEM TYPES */
SELECT
@CodeName = CodeName128,
@T1 = TypeID1,
@T2 = TypeID2,
@T3 = TypeID3,
@T4 = TypeID4
FROM Vengard_SHARD.dbo._RefObjCommon WITH(NOLOCK)
WHERE ID = @RefItemID;
/* =========================
EQUIPMENT FILTER
========================== */
IF
(
@CodeName LIKE 'ITEM_CH_%'
OR @CodeName LIKE 'ITEM_EU_%'
OR @CodeName LIKE '%SHIELD%'
OR @CodeName LIKE '%RING%'
OR @CodeName LIKE '%EARRING%'
OR @CodeName LIKE '%NECKLACE%'
)
BEGIN
/* =========================
APPLY FB FROM POOL
========================== */
UPDATE Vengard_SHARD.dbo._Items
SET
/* +0 => +5 */
OptLevel =
CASE
WHEN OptLevel = 0 THEN 5
ELSE OptLevel
END,
/* SAFE FLAG */
Data =
CASE
WHEN ISNULL(Data,0) < 100
THEN ISNULL(Data,0) + 100
ELSE Data
END,
/* FB STATS */
Variance = Q.Variance,
MagParamNum = Q.MagParamNum,
MagParam1 = Q.MagParam1,
MagParam2 = Q.MagParam2,
MagParam3 = Q.MagParam3,
MagParam4 = Q.MagParam4,
MagParam5 = Q.MagParam5,
MagParam6 = Q.MagParam6,
MagParam7 = Q.MagParam7,
MagParam8 = Q.MagParam8,
MagParam9 = Q.MagParam9,
MagParam10 = Q.MagParam10,
MagParam11 = Q.MagParam11,
MagParam12 = Q.MagParam12
FROM
(
SELECT TOP 1 *
FROM ANTHEIA.dbo._AutoEquipmentItemPool P WITH(NOLOCK)
WHERE
P.TypeID1 = @T1
AND P.TypeID2 = @T2
AND P.TypeID3 = @T3
AND P.TypeID4 = @T4
AND P.ReqLevel1 <= @CharLevel
ORDER BY ReqLevel1 DESC
) AS Q
WHERE ID64 = @ID64
/* ANTI DUPLICATE */
AND ISNULL(Data,0) < 100;
END
END
SET @Slot = @Slot + 1;
END
END
GO
