Unbreakable sunsets

Newbie Spellweaver
Joined
May 8, 2004
Messages
54
Reaction score
0
To stop sunsets from breaking entirely, open RMS_REMOVEONEITEM in the stored procedures and delete this line:

Code:
	delete tblSpecialItem1 where ID in (select top 1 ID from tblSpecialItem1 where GameID = @GameID and Position = @Position and WindowKind = @WindowKind and WindowIndex = @WindowIndex and ItemKind = @ItemKind and ItemIndex = @ItemIndex and ItemDurability = @ItemDurability and AttackGrade = @ItemAttackGrade  and StrengthGrade = @ItemStrengthGrade  and SpiritGrade = @ItemSpiritGrade  and DexterityGrade = @ItemDexterityGrade  and PowerGrade = @ItemPowerGrade)

If your item would normally be broken, it will still display "The item has lost the transference of experience..." but it will still be there.
 
Ok this makes it impossible to use ppills and probably pellets/LM too. I'll fix it shortly.
 
Ok this will solve the problem, only sunsets will be unbreakable, ppills and other consumables can still be used.
Code:
CREATE PROCEDURE RMS_REMOVEONEITEM
	@ItemKind int,
	@ItemIndex int,
	@ItemDurability int,
	@ItemAttackGrade int,
	@ItemStrengthGrade int,
	@ItemSpiritGrade int,
	@ItemDexterityGrade int,
	@ItemPowerGrade int,
	@Position int,
	@GameID varchar(14),
	@WindowKind int,
	@WindowIndex int

AS

set nocount on

begin transaction
	if (@ItemIndex < 100) OR (@ItemIndex = 200)
	begin
	delete tblSpecialItem1 where ID in (select top 1 ID from tblSpecialItem1 where GameID = @GameID and Position = @Position and WindowKind = @WindowKind and WindowIndex = @WindowIndex and ItemKind = @ItemKind and ItemIndex = @ItemIndex and ItemDurability = @ItemDurability and AttackGrade = @ItemAttackGrade  and StrengthGrade = @ItemStrengthGrade  and SpiritGrade = @ItemSpiritGrade  and DexterityGrade = @ItemDexterityGrade  and PowerGrade = @ItemPowerGrade)
--	if @@ROWCOUNT > 0
--	begin
		insert tblSpecialItemLog1 (LogKind, ItemKind, ItemIndex, ItemDurability, Position, GameID, WindowKind, WindowIndex, LogItemCount,AttackGrade,StrengthGrade,SpiritGrade,DexterityGrade,PowerGrade) values (102, @ItemKind, @ItemIndex, @ItemDurability, @Position, @GameID, @WindowKind, @WindowIndex, @@ROWCOUNT,@ItemAttackGrade,@ItemStrengthGrade,@ItemSpiritGrade,@ItemDexterityGrade,@ItemPowerGrade)
--	end
	end
commit transaction



GO
If the forum chops it, just tidy it up again until syntax check passes.
 
Lol it's funny though, it's still not THAT easy to get tons of s4 stuff. Takes loads of upgrading.
 
Ok this will solve the problem, only sunsets will be unbreakable, ppills and other consumables can still be used.
Code:
CREATE PROCEDURE RMS_REMOVEONEITEM
    @ItemKind int,
    @ItemIndex int,
    @ItemDurability int,
    @ItemAttackGrade int,
    @ItemStrengthGrade int,
    @ItemSpiritGrade int,
    @ItemDexterityGrade int,
    @ItemPowerGrade int,
    @Position int,
    @GameID varchar(14),
    @WindowKind int,
    @WindowIndex int
 
AS
 
set nocount on
 
begin transaction
    if (@ItemIndex < 100) OR (@ItemIndex = 200)
    begin
    delete tblSpecialItem1 where ID in (select top 1 ID from tblSpecialItem1 where GameID = @GameID and Position = @Position and WindowKind = @WindowKind and WindowIndex = @WindowIndex and ItemKind = @ItemKind and ItemIndex = @ItemIndex and ItemDurability = @ItemDurability and AttackGrade = @ItemAttackGrade  and StrengthGrade = @ItemStrengthGrade  and SpiritGrade = @ItemSpiritGrade  and DexterityGrade = @ItemDexterityGrade  and PowerGrade = @ItemPowerGrade)
--    if @@ROWCOUNT > 0
--    begin
        insert tblSpecialItemLog1 (LogKind, ItemKind, ItemIndex, ItemDurability, Position, GameID, WindowKind, WindowIndex, LogItemCount,AttackGrade,StrengthGrade,SpiritGrade,DexterityGrade,PowerGrade) values (102, @ItemKind, @ItemIndex, @ItemDurability, @Position, @GameID, @WindowKind, @WindowIndex, @@ROWCOUNT,@ItemAttackGrade,@ItemStrengthGrade,@ItemSpiritGrade,@ItemDexterityGrade,@ItemPowerGrade)
--    end
    end
commit transaction
 
 
 
GO
If the forum chops it, just tidy it up again until syntax check passes.
how does this works? is it only for people with own server or does it count for everyone who plays redmoon?
if its for everyone can u explain how this work? Thnx
 
It's a script run on the server to give you that effect.
Personal use whether its on your own private or public server.
It's a choice! But only if you're running and playing on the server it's on.
 
To fix the problem this causes from sunsets staging to soon (which in turn makes it extreemly hard to get your s4 to a high level) there is a procedure you can change to make it a little more predictable.

Code:
CREATE PROCEDURE RMS_DOITEMGROWTH
	@GameID varchar(14),
	@WindowKind	int,
	@WindowIndex	int,
	@ItemKind	int,
	@ItemIndex	int,
	@AttackGrade	int,
	@StrengthGrade	int,
	@SpiritGrade	int,
	@DexterityGrade	int,
	@PowerGrade	int,
	@NextItemKind	int,
	@NextItemIndex	int,
	@NextAttackGrade	int,
	@NextStrengthGrade	int,
	@NextSpiritGrade	int,
	@NextDexterityGrade	int,
	@NextPowerGrade	int
AS

set nocount on

begin transaction
	DECLARE @ItemID	int
	DECLARE @RandNum  int
	SET	@ItemID= 0
	
	SELECT TOP 1 @ItemID=ID FROM RedMoon.dbo.tblSpecialItem1 WHERE GameID=@GameID AND WindowKind=@WindowKind AND WindowIndex=@WindowIndex AND 
		ItemKind=@ItemKind AND ItemIndex=@ItemIndex AND AttackGrade=@AttackGrade AND StrengthGrade=@StrengthGrade AND SpiritGrade=@SpiritGrade AND DexterityGrade=@DexterityGrade AND PowerGrade=@PowerGrade AND Position=1

	IF @NextAttackGrade = @AttackGrade begin
		SET @RandNum = (rand() * 100)
		IF @AttackGrade = 0 AND @RandNum > 0 AND @RandNum < 10 begin
   			SET @NextAttackGrade = @AttackGrade + 1
			SET @NextStrengthGrade = @StrengthGrade
			SET @NextSpiritGrade = @SpiritGrade
			SET @NextDexterityGrade = @DexterityGrade
			SET @NextPowerGrade = @PowerGrade
			SET @NextItemIndex = @NextItemIndex + 20
		end
		IF @AttackGrade = 1 AND @RandNum > 0 AND @RandNum < 8 begin
			SET @NextAttackGrade = @AttackGrade + 1
			SET @NextStrengthGrade = @StrengthGrade
			SET @NextSpiritGrade = @SpiritGrade
			SET @NextDexterityGrade = @DexterityGrade
			SET @NextPowerGrade = @PowerGrade
			SET @NextItemIndex = @NextItemIndex + 20
		end
		IF @AttackGrade = 2  AND @RandNum > 0 AND @RandNum < 6 begin
   			SET @NextAttackGrade = @AttackGrade + 1
			SET @NextStrengthGrade = @StrengthGrade
			SET @NextSpiritGrade = @SpiritGrade
			SET @NextDexterityGrade = @DexterityGrade
			SET @NextPowerGrade = @PowerGrade
			SET @NextItemIndex = @NextItemIndex + 20
		end
		IF @AttackGrade = 3  AND @RandNum > 0 AND @RandNum < 4 begin
   			SET @NextAttackGrade = @AttackGrade + 1
			SET @NextStrengthGrade = @StrengthGrade
			SET @NextSpiritGrade = @SpiritGrade
			SET @NextDexterityGrade = @DexterityGrade
			SET @NextPowerGrade = @PowerGrade
			SET @NextItemIndex = @NextItemIndex + 20
		end 
	
	end

	IF @NextItemIndex > 194 begin
		SET @NextItemIndex = @ItemIndex
	end

	SET @NextItemIndex = 100+20*@NextAttackGrade + ((@NextItemIndex % 100) % 20)

	IF @ItemID > 0

	BEGIN
		UPDATE RedMoon.dbo.tblSpecialItem1 SET ItemKind=@NextItemKind,ItemIndex=@NextItemIndex,AttackGrade=@NextAttackGrade,StrengthGrade=@NextStrengthGrade,SpiritGrade=@NextSpiritGrade,DexterityGrade=@NextDexterityGrade, PowerGrade=@NextPowerGrade WHERE ID=@ItemID
	END

commit transaction
GO

If you replace the RMS_DOITEMGROWTH procedure with that, it will make the staging process a little smoother. However it does cause a problem where at each 9 incriment the sunset is hard to upgrade. For instance at lvl 19, 29, 39, 49, 59 etc.. the sunset will be hardest to upgrade, and the higher the stage of it, the harder it will be to upgrade past these levels. Basically what this does is make it where at stage 0 you have a 10 out of 20 chance of staging, at stage 1 you have a 8 out of 20 change of staging, at s2 it's 6 of 20 and at s3 it's 4 of 20. An easy way to think of it is as a 20 sided dice. If you roll under a 10 at st0 it'll stage, if you roll a 8 at s1 it'll stage etc...

This procedure works hand and hand with the RMS_REMOVEONEITEM procedure, so you'll need to change it as well. The one above looks similar to the one I've used but just for good reference I'll post mine as well.

Code:
CREATE PROCEDURE RMS_REMOVEONEITEM 
   @ItemKind int, 
   @ItemIndex int, 
   @ItemDurability int, 
   @ItemAttackGrade int, 
   @ItemStrengthGrade int, 
   @ItemSpiritGrade int, 
   @ItemDexterityGrade int, 
   @ItemPowerGrade int, 
   @Position int, 
   @GameID varchar(14), 
   @WindowKind int, 
   @WindowIndex int 

AS 

set nocount on 

begin transaction 
   if (@ItemIndex < 100) OR (@ItemIndex = 200) 
   begin 
   delete tblSpecialItem1 where ID in (select top 1 ID from tblSpecialItem1 where GameID = @GameID and Position = @Position and WindowKind = @WindowKind and WindowIndex = @WindowIndex and ItemKind = @ItemKind and ItemIndex = @ItemIndex and ItemDurability = @ItemDurability and AttackGrade = @ItemAttackGrade  and StrengthGrade = @ItemStrengthGrade  and SpiritGrade = @ItemSpiritGrade  and DexterityGrade = @ItemDexterityGrade  and PowerGrade = @ItemPowerGrade) 
--   if @@ROWCOUNT > 0 
--   begin 
      insert tblSpecialItemLog1 (LogKind, ItemKind, ItemIndex, ItemDurability, Position, GameID, WindowKind, WindowIndex, LogItemCount,AttackGrade,StrengthGrade,SpiritGrade,DexterityGrade,PowerGrade) values (102, @ItemKind, @ItemIndex, @ItemDurability, @Position, @GameID, @WindowKind, @WindowIndex, @@ROWCOUNT,@ItemAttackGrade,@ItemStrengthGrade,@ItemSpiritGrade,@ItemDexterityGrade,@ItemPowerGrade) 
--   end 
   end 
commit transaction
GO

To implement this into your server, open up Enterprize manager and open your redmoon database. inside you should see an item called Stored procedures. Open that up and look for RMS_DOITEMGROWTH, double click on that and replace the text inside with the DOITEMGROWTH code, hit apply and close and then do the same for the RMS_REMOVEONEITEM procedure. Be sure to save what you already have in there so you can go back to the way it originally was if you ever want to.
 
Back