Code:
USE [SERVER01]
GO
/****** Object: StoredProcedure [dbo].[cabal_sp_newchar] Script Date: 08/01/2013 11:33:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[cabal_sp_newchar]
(
@Name VARCHAR(16),
@CharacterIdx INT,
@Style INT,
@StyleMastery INT
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @CR_SUCCESS INT
DECLARE @CR_DATABRK INT
DECLARE @CR_NAMEDUP INT
DECLARE @CR_BADWORD INT
DECLARE @ALZ BIGINT
DECLARE @ID INT
DECLARE @TEMP INT
DECLARE @TEMP2 INT
SET @CR_SUCCESS = 0xA0
SET @CR_DATABRK = 0x02
SET @CR_NAMEDUP = 0x03
SET @CR_BADWORD = 0x04
SET @ALZ = 0
SET @ID = 0
SET @TEMP = @CharacterIdx
SET @TEMP2 = 0
IF NOT @StyleMastery BETWEEN 1 AND 6
BEGIN
SELECT @CR_DATABRK
RETURN
END
IF EXISTS (SELECT * FROM cabal_badwoard WHERE badword = @Name )
BEGIN
SELECT @CR_BADWORD
RETURN
END
IF EXISTS (SELECT * FROM cabal_character_table WHERE Name = @Name)
BEGIN
SELECT @CR_NAMEDUP
RETURN
END
IF EXISTS (SELECT * FROM cabal_character_table WHERE CharacterIdx = @CharacterIdx)
BEGIN
SELECT @CR_DATABRK
RETURN
END
WHILE (@TEMP2 = 0)
BEGIN
IF (@TEMP%8 = 0)
BEGIN
SET @ID = @TEMP/8
SET @TEMP2 = 1
END;
ELSE
SET @TEMP = @TEMP-1
END;
IF ((SELECT chars_count FROM ACCOUNT.dbo.cabal_auth_table WHERE UserNum = @ID) >= 7)
SET @ALZ = 0
ELSE
SET @ALZ = (SELECT Alz FROM cabal_new_character_data WHERE ClassType = @StyleMastery)
SET XACT_ABORT ON
BEGIN TRAN
INSERT INTO cabal_character_table
(
CharacterIdx, Name,
LEV, [EXP], [STR], DEX, [INT], PNT, Rank, Alz,
WorldIdx, [Position], Style,
HP, MP, SP, SwdPNT, MagPNT, RankEXP, Flags, WarpBField, MapsBField
)
SELECT
@CharacterIdx, @Name,
LEV, [EXP], [STR], [DEX], [INT], [PNT], Rank, @Alz,
WorldIdx, Position, @Style,
HP, MP, SP, SwdPNT, MagPNT, RankEXP, Flags, WarpBField, MapsBField
FROM cabal_new_character_data
WHERE ClassType = @StyleMastery
UPDATE ACCOUNT.dbo.cabal_auth_table SET chars_count = chars_count+1 WHERE UserNum = @ID;
UPDATE cabal_character_table SET Reserved1 = SERVER01.dbo.DoAlzXor(@ALZ) WHERE CharacterIdx = @CharacterIdx;
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SELECT @CR_DATABRK
RETURN
END
INSERT INTO cabal_inventory_table (CharacterIdx, Data)
SELECT @CharacterIdx, InventoryData FROM cabal_new_character_data
WHERE ClassType = @StyleMastery
INSERT INTO cabal_equipment_table (CharacterIdx, Data)
SELECT @CharacterIdx, EquipmentData FROM cabal_new_character_data
WHERE ClassType = @StyleMastery
INSERT INTO cabal_skilllist_table (CharacterIdx, Data)
SELECT @CharacterIdx, SkillData FROM cabal_new_character_data
WHERE ClassType = @StyleMastery
INSERT INTO cabal_quickslot_table (CharacterIdx, Data)
SELECT @CharacterIdx, QuickSlotData FROM cabal_new_character_data
WHERE ClassType = @StyleMastery
INSERT INTO cabal_questdata_table (characterIdx, Data, Flags)
SELECT @CharacterIdx, QuestData, QuestFlagsData FROM cabal_new_character_data
WHERE ClassType = @StyleMastery
EXEC cabal_sp_linked_update_character_count @CharacterIdx, 1
SELECT @CR_SUCCESS + @StyleMastery
COMMIT TRAN
SET XACT_ABORT OFF
SET NOCOUNT OFF
END
Red lines are what I added/changed.