Ejemplo n.º 1
0
        public void SetProgressiveScaleMode(ProgressiveScaleMode mode)
        {
            byte ScaleFactor = 1;               // Bonus given by progressive scaling in 1/n form (ScaleFactor = 5 means bonus is + 1/5 per item)
            byte Threshold   = 0;               // Number of key items required for bonus.  Set this to 0 for progressive mode (every key item increases bonus)

            switch (mode)
            {
            case ProgressiveScaleMode.Disabled:
                return;

            case ProgressiveScaleMode.DoubledAt12:
                Threshold = 12;
                break;

            case ProgressiveScaleMode.DoubledAt15:
                Threshold = 15;
                break;

            case ProgressiveScaleMode.FiftyPercentAt12:
                Threshold   = 12;
                ScaleFactor = 2;
                break;

            case ProgressiveScaleMode.FiftyPercentAt15:
                Threshold   = 15;
                ScaleFactor = 2;
                break;

            case ProgressiveScaleMode.Progressive5Percent:
                ScaleFactor = 20;
                break;

            case ProgressiveScaleMode.Progressive10Percent:
                ScaleFactor = 10;
                break;

            case ProgressiveScaleMode.Progressive20Percent:
                ScaleFactor = 5;
                break;
            }

            //Progressive/Threshold scaling
            string HexBlob = $"200090ADB860D009A91C8580A960858160A9{ScaleFactor:X2}8516A9{Threshold:X2}8514F00EADB860C51490E6A9018515189005ADB8608515AD78688510AD79688511A516851220C090A515AAAD786865108D7868AD796865118D7968C9A7900AA90F8D7868A9A78D7968CAD0DF18AD76688510AD77688511A516851220C090A515AAAD766865108D7668AD776865118D7768C9A7900AA90F8D7668A9A78D7768CAD0DFAD76688588AD77688589A91C8580A960858160";

            PutInBank(0x0F, 0x9100, Blob.FromHex(HexBlob));
            //Inject into end-of-battle code
            PutInBank(0x0B, 0x9B4D, Blob.FromHex("20CBCFEAEAEAEAEA"));
        }
Ejemplo n.º 2
0
        public void SetProgressiveScaleMode(Flags flags)
        {
            byte ScaleFactor          = 1;      // Bonus given by progressive scaling in 1/n form (ScaleFactor = 5 means bonus is + 1/5 per item)
            byte Threshold            = 0;      // Number of key items required for bonus.  Set this to 0 for progressive mode (every key item increases bonus)
            byte ShardMultiplier      = 1;      // Shards are worth 1/8 Orbs
            ProgressiveScaleMode mode = flags.ProgressiveScaleMode;

            if (flags.ShardHunt)
            {
                ShardMultiplier = 8;
            }
            switch (mode)
            {
            case ProgressiveScaleMode.Disabled:
                return;

            case ProgressiveScaleMode.DoubledAt12:
                Threshold = 12;
                break;

            case ProgressiveScaleMode.DoubledAt15:
                Threshold = 15;
                break;

            case ProgressiveScaleMode.FiftyPercentAt12:
                Threshold   = 12;
                ScaleFactor = 2;
                break;

            case ProgressiveScaleMode.FiftyPercentAt15:
                Threshold   = 15;
                ScaleFactor = 2;
                break;

            case ProgressiveScaleMode.Progressive5Percent:
                ScaleFactor = 20;
                break;

            case ProgressiveScaleMode.Progressive10Percent:
                ScaleFactor = 10;
                break;

            case ProgressiveScaleMode.Progressive20Percent:
                ScaleFactor = 5;
                break;

            case ProgressiveScaleMode.OrbProgressiveSlow:
                ScaleFactor = (byte)(8 * ShardMultiplier);                          // +12.5 per orb
                break;

            case ProgressiveScaleMode.OrbProgressiveMedium:
                ScaleFactor = (byte)(4 * ShardMultiplier);                         // +25 per orb
                break;

            case ProgressiveScaleMode.OrbProgressiveFast:
                ScaleFactor = (byte)(2 * ShardMultiplier);                         // +50 per orb
                break;

            case ProgressiveScaleMode.OrbProgressiveVFast:
                ScaleFactor = ShardMultiplier;                         // +100 per orb
                break;
            }

            //Progressive/Threshold scaling
            string HexBlob = $"200090ADB860D009A91C8580A960858160A9{ScaleFactor:X2}8516A9{Threshold:X2}8514F00EADB860C51490E6A9018515189005ADB8608515AD78688510AD79688511A516851220C090A515AAAD786865108D7868AD796865118D7968C9A7900AA90F8D7868A9A78D7968CAD0DF18AD76688510AD77688511A516851220C090A515AAAD766865108D7668AD776865118D7768C9A7900AA90F8D7668A9A78D7768CAD0DFAD76688588AD77688589A91C8580A960858160";

            PutInBank(0x0F, 0x9100, Blob.FromHex(HexBlob));
            //Inject into end-of-battle code
            PutInBank(0x1B, 0x806D, Blob.FromHex("20CBCFEAEAEAEAEA"));
        }