Nullpekar-krasch vid artikelsök på offert

--- TESS/Controllers/Offers/CustomerOfferController.cs
+++ TESS/Controllers/Offers/CustomerOfferController.cs
@@ -1339,7 +1339,7 @@
                 connection.Open();

                 String queryText = @"SELECT view_Module.Article_number, view_Module.Module, T1.License, Case When T2.Maintenance = 0 Then T1.Maintenance Else IsNull(T2.Maintenance, T1.Maintenance) End As Maintenance,
-                                        view_Module.Price_category, view_Module.System, view_Module.Classification, view_Module.Fixed_price,
+                                        view_Module.Price_category, IsNull(view_Module.Maint_price_category, 0) As Maint_price_category, view_Module.System, view_Module.Classification, view_Module.Fixed_price,
                                         view_Module.Discount_type, view_Module.Discount, view_Module.Comment, view_Module.Area, view_Module.Multiple_type, view_Module.Description,
                                         view_Module.Module_status, IsNull(O.Text,'') as Module_status_txt, IsNull(view_Module.Offer_Description, '') AS Offer_Description
                                         FROM view_Module
@@ -1348,7 +1348,7 @@
                                         Left Join view_SelectOption O on O.Value = view_Module.Module_status And O.Model = 'view_Module' And Property = 'Module_status'
                                         WHERE Expired = 0 And (Cast(view_Module.Article_number As Varchar(30)) Like Case @searchtext When '' Then Cast(view_Module.Article_number As Varchar(30)) Else @searchtext End Or
                                         view_Module.Module Like Case @searchtext When '' Then view_Module.Module Else @searchtext End)
-                                        AND IsNull(Inhabitant_level,(Select ISNULL(Inhabitant_level, 1) AS I_level from view_Customer
+                                        AND IsNull(T1.Inhabitant_level,(Select ISNULL(Inhabitant_level, 1) AS I_level from view_Customer
                                             where Customer = @customer)) = (
                                             Select ISNULL(Inhabitant_level, 1) AS I_level from view_Customer
                                             where Customer = @customer
@@ -1482,7 +1482,7 @@
                                     order by Article_number asc";*/

                 String queryText = @"Select A.*, Case When T2.Maintenance = 0 Then T.Maintenance Else IsNull(T2.Maintenance, T.Maintenance) End As Maintenance, T.License As License, IsNull(O.Text,'') as Module_status_txt
-	                                    From (Select M.Article_number, M.Module, M.Price_category, M.Maint_price_category, M.System, M.Classification, M.Area, M.Fixed_price, M.Discount_type,
+	                                    From (Select M.Article_number, M.Module, M.Price_category, IsNull(view_Module.Maint_price_category, 0) As Maint_price_category, M.System, M.Classification, M.Area, M.Fixed_price, M.Discount_type,
                                                     M.Discount, M.Comment, M.Multiple_type, C.Inhabitant_level, IsNull(M.Description,'') As Description, M.Module_status, IsNull(M.Offer_Description, '') AS Offer_Description
 					                                    from view_Module M, view_Customer C
 					                                    Where C.Customer = @customer And M.Expired = 0) A


Fixed PVP, More to be checked out

Fixed PVP, More to be checked out

--- Terraria_Server/Messages/PlayerPvPChangeMessage.cs
+++ Terraria_Server/Messages/PlayerPvPChangeMessage.cs
@@ -55,15 +55,9 @@

 			player.hostile = pvp;

-            string message;
-            if(player.hostile)
-            {
-                message = " has enabled PvP!";
-            }
-            else
-            {
-                message = " has disabled PvP!";
-            }
+            string message = (player.hostile) ? " has enabled PvP!" : " has disabled PvP!";
+
+            NetMessage.SendData(30, -1, whoAmI, "", whoAmI, 0f, 0f, 0f, 0);
             NetMessage.SendData(25, -1, -1, player.Name + message, 255, (float)Main.teamColor[player.team].R, (float)Main.teamColor[player.team].G, (float)Main.teamColor[player.team].B);
         }
     }


Refactor RedisCacheTest

Refactor RedisCacheTest

--- Tests.RatanaLibrary.Common/Cache/RedisCacheTest.cs
+++ Tests.RatanaLibrary.Common/Cache/RedisCacheTest.cs
@@ -7,6 +7,11 @@
     [TestFixture]
     public class RedisCacheTest
     {
+        private readonly RedisCache.RedisSettings redisSettings = new RedisCache.RedisSettings()
+        {
+            Server = "localhost"
+        };
+
         [Test]
         [TestCase("RedisCacheTest:GetOrAdd:test-key1", "test-value", "test-fake-value")]
         [TestCase("RedisCacheTest:GetOrAdd:test-key2", "", "test-fake-value")]
@@ -14,7 +19,7 @@
         {
             #region Arrange
             // Set up some variables
-            var cache = new RedisCache(new RedisCache.RedisSettings() { });
+            var cache = new RedisCache(this.redisSettings);

             // Make sure the key we're about to test is empty
             ((ICache)cache).Remove(cacheKey);
@@ -57,7 +62,7 @@
             var cacheKey = "RedisCacheTest:GetOrAddAnonymousType:test-key";
             var cacheValue = new { Name = "test-name", Value = "test-value" };
             var fakeValue = new { Name = "test-fake-name", Value = "test-fake-value" };
-            var cache = new RedisCache(new RedisCache.RedisSettings() { });
+            var cache = new RedisCache(this.redisSettings);

             // Make sure the key we're about to test is empty
             ((ICache)cache).Remove(cacheKey);
@@ -100,7 +105,7 @@
         {
             #region Arrange
             // Set up some variables
-            var cache = new RedisCache(new RedisCache.RedisSettings(){});
+            var cache = new RedisCache(this.redisSettings);

             // Make sure the key we're about to test is empty
             ((ICache)cache).Remove(cacheKey);


[KMS] CharaSim: Add blocked for anvil message to mechanic, dragon gears

--- WzComparerR2/CharaSimControl/GearTooltipRender2.cs
+++ WzComparerR2/CharaSimControl/GearTooltipRender2.cs
@@ -1223,6 +1223,10 @@
             if (Gear.Props.TryGetValue(GearPropType.cantRepair, out value) && value != 0)
             {
                 tags.Add(ItemStringHelper.GetGearPropString(GearPropType.cantRepair, value));
+            }
+            if ((Gear.ItemID / 10000 >= 161 && Gear.ItemID / 10000 <= 165) || (Gear.ItemID / 10000 >= 194 && Gear.ItemID / 10000 <= 197))
+            {
+                tags.Add("신비의 모루 사용 불가");
             }

             return tags;


Commenting UriBuilder uri = new UriBuilder(path);.

--- eFormSDK.Integration.Case.CoreTests/CoreTestCase.cs
+++ eFormSDK.Integration.Case.CoreTests/CoreTestCase.cs
@@ -46,8 +46,8 @@
                 await sut.StartSqlOnly(ConnectionString);
             }
             path = Assembly.GetExecutingAssembly().Location;
-            UriBuilder uri = new UriBuilder(path);
-            path = Uri.UnescapeDataString(uri.Path);
+            // UriBuilder uri = new UriBuilder(path);
+            // path = Uri.UnescapeDataString(uri.Path);
             path = Path.GetDirectoryName(path);
             await sut.SetSdkSetting(Settings.fileLocationPicture, Path.Combine(path, "output", "dataFolder", "picture"));
             await sut.SetSdkSetting(Settings.fileLocationPdf, Path.Combine(path, "output", "dataFolder", "pdf"));


-fixed issues

-fixed issues

--- Eventis/Views/Events/Edit.cshtml
+++ Eventis/Views/Events/Edit.cshtml
@@ -40,13 +40,6 @@

-        @*

-            @Html.LabelFor(model => model.StartDate, htmlAttributes: new { @class = "control-label col-md-2" })
-

-                @Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "form-control" , required = "required" } })
-                @Html.ValidationMessageFor(model => model.StartDate, "", new { @class = "text-danger" })
-

-
*@

             Start Date


Dedupe, update SPA's

Dedupe, update SPA's

Dedupe Old Text to make it consistant with newer added stuff (Ternary instead of Short If's)

Update SPA's 0, 21, 55, 92, 227, 266, 349, 397, 400, 401, 402, 436, 464, 466, 469, 470, 477, 478, 501, 503, 504, 505, 506, 521

--- core/SpellData.cs
+++ core/SpellData.cs
@@ -201,9 +201,9 @@
             switch (spa)
             {
                 case 0:
-                    if (base2 > 0)
-                        return Spell.FormatCount("Current HP", value) + repeating + range + " (If " + Spell.FormatEnum((SpellTargetRestrict)base2) + ")";
-                    return Spell.FormatCount("Current HP", value) + repeating + range;
+                    if (calc == 2060 || calc == 2070 || calc == 2090 || calc == 2100)
+                        return Spell.FormatCount("Current HP", base1) + " + (" + (calc - 2000) + " x Item/Player Level)" + repeating + range + (base2 > 0 ? " (If " + Spell.FormatEnum((SpellTargetRestrict)base2) + ")" : "");
+                    return Spell.FormatCount("Current HP", value) + repeating + range + (base2 > 0 ? " (If " + Spell.FormatEnum((SpellTargetRestrict)base2) + ")" : "");
                 case 1:
                     // showing post softcap AC (for Pre-Softcap Values, it should be - Int users: Value/3, all others: Value/4)
                     // Devs suggest anyone in any relevant gear Velious+ was hitting Soft Caps, which is like 95% of the expansions/game - Riou
@@ -258,13 +258,11 @@
                 case 20:
                     return "Blind";
                 case 21:
-                    //if (base2 != base1 && base2 != 0)
-                    //    return String.Format("Stun for {0:0.##}s ({1:0.##}s in PvP)", base1 / 1000f, base2 / 1000f) + maxlevel;
+                    if (base2 != base1 && base2 != 0)
+                        return String.Format("Stun for {0:0.##}s ({1:0.##}s in PvP)", base1 / 1000f, base2 / 1000f) + absmax;
                     return String.Format("Stun for {0:0.##}s", base1 / 1000f) + absmax;
                 case 22:
-                    if (base2 > 0)
-                        return "Charm" + absmax + String.Format(" with {0}% Chance of Memory Blur", base2);
-                    return "Charm" + absmax;
+                    return "Charm" + absmax + (base2 > 0 ? String.Format(" with {0}% Chance of Memory Blur", base2) : "");
                 case 23:
                     return "Fear" + absmax;
                 case 24:
@@ -272,9 +270,7 @@
                 case 25:
                     return "Bind";
                 case 26:
-                    if (base2 > 1)
-                        return "Gate to Secondary Bind";
-                    return "Gate";
+                    return "Gate" + (base2 > 1 ? " to Secondary Bind" : "");
                 case 27:
                     return String.Format("Dispel ({0})", value);
                 case 28:
@@ -327,20 +323,18 @@
                 case 54:
                     return "Sense Animal";
                 case 55:
+                    if (calc == 2200)
+                        return String.Format("Absorb Damage: 100%, Total: {0}", base1) + " + (" + (calc - 2000) + " x Item/Player Level)";
                     return String.Format("Absorb Damage: 100%, Total: {0}", value);
                 case 56:
                     return "True North";
                 case 57:
-                    if (base2 == 1)
-                        return "Levitate While Moving";
-                    return "Levitate";
+                    return "Levitate" + (base2 == 1 ? " While Moving" : "");
                 case 58:
                     value = (base1 << 16) + base2 + (max * 1000);
                     if (Enum.IsDefined(typeof(SpellIllusion), value))
                         return String.Format("Illusion: {0}", Spell.FormatEnum((SpellIllusion)value));
-                    if (base2 > 0)
-                        return String.Format("Illusion: {0} ({1})", Spell.FormatEnum((SpellIllusion)base1), base2);
-                    return String.Format("Illusion: {0}", Spell.FormatEnum((SpellIllusion)base1));
+                    return String.Format("Illusion: {0}", Spell.FormatEnum((SpellIllusion)base1)) + (base2 > 0 ? String.Format("({0})", base2) : "");
                 case 59:
                     return Spell.FormatCount("Damage Shield", -value);
                 case 61:
@@ -368,9 +362,7 @@
                 case 73:
                     return "Bind Sight";
                 case 74:
-                    if (value < 100)
-                        return String.Format("Feign Death ({0}% Chance)", value);
-                    return "Feign Death";
+                    return "Feign Death" + (value < 100 ? String.Format(" ({0}% Chance)", value) : "");
                 case 75:
                     return "Project Voice";
                 case 76:
@@ -381,9 +373,7 @@
                     return String.Format("Absorb Spell Damage: 100%, Total: {0}", value);
                 case 79:
                     // delta hp for heal/nuke, non repeating
-                    if (base2 > 0)
-                        return Spell.FormatCount("Current HP", value) + range + " (If " + Spell.FormatEnum((SpellTargetRestrict)base2) + ")";
-                    return Spell.FormatCount("Current HP", value) + range;
+                    return Spell.FormatCount("Current HP", value) + range + (base2 > 0 ? " (If " + Spell.FormatEnum((SpellTargetRestrict)base2) + ")" : "");
                 case 81:
                     return String.Format("Resurrect with {0}% XP", value);
                 case 82:
@@ -394,9 +384,7 @@
                 case 84:
                     return "Gravity Flux";
                 case 85:
-                    if (base2 != 0)
-                        return String.Format("Add Melee Proc: [Spell {0}] with {1}% Rate Mod", base1, base2);
-                    return String.Format("Add Melee Proc: [Spell {0}]", base1);
+                    return String.Format("Add Melee Proc: [Spell {0}]", base1) + (base2 != 0 ? String.Format(" with {0}% Rate Mod", base2) : "");
                 case 86:
                     return String.Format("Decrease Social Radius to {0}", value) + absmax;
                 case 87:
@@ -413,6 +401,8 @@
                 case 92:
                     // calming strike spells are all capped at 100. so base1 would be more appropriate for those
                     // but most other hate spells seem to imply scaled value is used
+                    if (calc == 2400 || calc == 2800)
+                        return Spell.FormatCount("Hate", base1) + " + (" + (calc - 2000) + " x Item/Player Level)";
                     return Spell.FormatCount("Hate", value);
                 case 93:
                     return "Stop Rain";
@@ -432,9 +422,7 @@
                     return "Root";
                 case 100:
                     // heal over time
-                    if (base2 > 0)
-                        return Spell.FormatCount("Current HP", value) + repeating + range + " (If " + Spell.FormatEnum((SpellTargetRestrict)base2) + ")";
-                    return Spell.FormatCount("Current HP", value) + repeating + range;
+                    return Spell.FormatCount("Current HP", value) + repeating + range + (base2 > 0 ? " (If " + Spell.FormatEnum((SpellTargetRestrict)base2) + ")" : "");
                 case 101:
                     // only castable via Donal's BP. creates a buf that blocks recasting
                     return "Increase Current HP by 7500";
@@ -449,9 +437,7 @@
                 case 106:
                     return String.Format("Summon Warder: {0}", Extra);
                 case 108:
-                    if (base2 > 0)
-                        return String.Format("Summon Familiar: {0} (Ignore Auto Leave)", Extra);
-                    return String.Format("Summon Familiar: {0}", Extra);
+                    return String.Format("Summon Familiar: {0}", Extra) + (base2 > 0 ? " (Ignore Auto Leave)" : "");
                 case 109:
                     if (Version != 0 && Version < 20190108)
                         return String.Format("Summon into Bag: [Item {0}] x {1}", base1, calc);
@@ -507,9 +493,8 @@
                 case 132:
                     return Spell.FormatPercentRange("Spell Mana Cost", base1, base2, true);
                 case 134:
-                    if (base2 == 0)
-                        base2 = 100; // just to make it obvious that 0 means the focus stops functioning
-                    return String.Format("Limit Max Level: {0} (lose {1}% per level)", base1, base2);
+                    // 100 just to make it obvious that the focus stops functioning
+                    return String.Format("Limit Max Level: {0} (lose {1}% per level)", base1, base2 == 0 ? 100 : base2);
                 case 135:
                     return String.Format("Limit Resist: {1}{0}", (SpellResist)Math.Abs(base1), base1 >= 0 ? "" : "Exclude ");
                 case 136:
@@ -550,17 +535,15 @@
                 case 150:
                     return String.Format("Divine Intervention with {0} Heal", max);
                 case 151:
-                    if (base1 == 1)
-                        return "Suspend Pet with Buffs";
-                    return "Suspend Pet";
+                    return "Suspend Pet" + (base1 == 1 ? " with Buffs" : "");
                 case 152:
                     return String.Format("Summon Pet: {0} x {1} for {2}s", Extra, base1, max);
                 case 153:
                     return String.Format("Balance Group HP with {0}% Penalty", value);
                 case 154:
                     // +0.5% per level difference
-                    if (base2 != 0)
-                        return String.Format("Decrease Detrimental Duration by 50% ({0}% Chance)", base1 / 10) + absmax;
+                    if (base2 != 0)
+                        return String.Format("Decrease Detrimental Duration by 50% ({0}% Chance)", base1 / 10) + absmax;
                     return String.Format("Dispel Detrimental ({0}% Chance)", base1 / 10) + absmax;
                 case 156:
                     return "Illusion: Target";
@@ -592,9 +575,7 @@
                     // maybe it only mitigates the DI portion of the hit?
                     return Spell.FormatPercent("Melee Mitigation", -value);
                 case 169:
-                    if ((SpellSkill)base2 != SpellSkill.Hit)
-                        return Spell.FormatPercent("Chance to Critical Hit with " + Spell.FormatEnum((SpellSkill)base2), value);
-                    return Spell.FormatPercent("Chance to Critical Hit", value);
+                    return Spell.FormatPercent("Chance to Critical Hit" + ((SpellSkill)base2 != SpellSkill.Hit ? " with " + Spell.FormatEnum((SpellSkill)base2) : ""), value);
                 case 170:
                     // stacks with itself in other slots
                     return Spell.FormatPercent("Critical Nuke Damage", base1) + " of Base Damage";
@@ -753,7 +734,7 @@
                     // allows bash while weilding a 2h weapon
                     return "Add Two-Handed Bash Ability";
                 case 227:
-                    return String.Format("Decrease {0} Timer by {1}", Spell.FormatEnum((SpellSkill)base2), FormatTime(base1));
+                    return String.Format("Decrease {0} Timer by {1} (Before Haste)", Spell.FormatEnum((SpellSkill)base2), FormatTime(base1));
                 case 228:
                     return Spell.FormatPercent("Falling Damage", -base1);
                 case 229:
@@ -840,7 +821,7 @@
                 case 266:
                     // only works when first attack is successful?
                     // base2 may be the the number of attacks?
-                    return Spell.FormatPercent("Chance of Additional 2H Attack", base1) + String.Format(" ({0})", base2);
+                    return Spell.FormatPercent("Chance of " + base2 + " Additional 2H Attacks", base1);
                 case 267:
                     // 2 = /pet attack
                     // 3 = /pet qattack
@@ -921,10 +902,7 @@
                     return Spell.FormatPercent("Chance to Resist Melee Stun", base1);
                 case 294:
                     // the base2 nuke damage increase only appears on 4 spells after the 2015-7-22 patch
-                    if (base2 > 0)
-                        return Spell.FormatPercent("Chance to Critical Nuke", base1) + " and " + Spell.FormatPercent("Critical Nuke Damage", base2) + " of Base Damage";
-                    else
-                        return Spell.FormatPercent("Chance to Critical Nuke", base1);
+                    return Spell.FormatPercent("Chance to Critical Nuke", base1) + (base2 > 0 ? " and " + Spell.FormatPercent("Critical Nuke Damage", base2) + " of Base Damage" : "");
                 case 296:
                     // incoming damage % SPAs 296 and 483 multiply against what is essentially (spell-data's base value * spa 413)
                     // rather than the focused value - Dzarn
@@ -971,27 +949,17 @@
                 case 313:
                     return Spell.FormatPercent("Chance to Double Forage", base1);
                 case 314:
-                    if (base1 > 1)
-                        return String.Format("Invisibility (Enhanced {0})", base1);
-                    return "Invisibility";
+                    return "Invisibility" + (base1 > 1 ? String.Format(" (Enhanced {0})", base1) : "");
                 case 315:
-                    if (base1 > 1)
-                        return String.Format("Invisibility to Undead (Enhanced {0})", base1);
-                    return "Invisibility to Undead";
+                    return "Invisibility to Undead" + (base1 > 1 ? String.Format(" (Enhanced {0})", base1) : "");
                 case 316:
-                    if (base1 > 1)
-                        return String.Format("Invisibility to Animals (Enhanced {0})", base1);
-                    return "Invisibility to Animals";
+                    return "Invisibility to Animals" + (base1 > 1 ? String.Format(" (Enhanced {0})", base1) : "");
                 case 317:
                     return Spell.FormatCount("HP Regen Cap", base1);
                 case 318:
                     return Spell.FormatCount("Mana Regen Cap", base1);
                 case 319:
-                    if (base2 == 0)
-                        base2 = 100;
-                    if (max > 0)
-                        absmax += String.Format(" (lose {0}% per level)", base2);
-                    return Spell.FormatPercent("Chance to Critical HoT", base1) + absmax;
+                    return Spell.FormatPercent("Chance to Critical HoT", base1) + absmax + (max > 0 ? String.Format(" (lose {0}% per level)", base2 == 0 ? 100 : base2) : "");
                 case 320:
                     // % chance to block incoming melee attacks with your shield
                     return Spell.FormatPercent("Shield Block Chance", base1);
@@ -1033,9 +1001,7 @@
                     return Spell.FormatCount("Current HP", value) + repeating + range + " (If Target Not Moving)";
                 case 335:
                     // block next spell that matches limits
-                    if (base1 < 100)
-                        return String.Format("Block Next Spell ({0}% Chance)", base1);
-                    return "Block Next Spell";
+                    return "Block Next Spell" + (base1 < 100 ? String.Format(" ({0}% Chance)", base1) : "");
                 case 337:
                     return Spell.FormatPercent("Experience Gain", value);
                 case 338:
@@ -1045,17 +1011,13 @@
                     return String.Format("Cast: [Spell {0}] on Spell Use ({1}% Chance)", base2, base1);
                 case 340:
                     // when a spell has multiple 340 slots, only one has a chance to cast
-                    if (base1 < 100)
-                        return String.Format("Cast: [Spell {0}] ({1}% Chance)", base2, base1);
-                    return String.Format("Cast: [Spell {0}]", base2);
+                    return String.Format("Cast: [Spell {0}]", base2) + (base1 < 100 ? String.Format(" ({0}% Chance)", base1) : "");
                 case 341:
                     return Spell.FormatCount("ATK Cap", base1);
                 case 342:
                     return "Inhibit Low Health Fleeing";
                 case 343:
-                    if (base1 < 100)
-                        return String.Format("Interrupt Casting ({0}% Chance)", base1);
-                    return "Interrupt Casting";
+                    return "Interrupt Casting" + (base1 < 100 ? String.Format(" ({0}% Chance)", base1) : "");
                 case 344:
                     return Spell.FormatPercent("Chance to Channel Item Procs", base1);
                 case 345:
@@ -1068,7 +1030,7 @@
                     return String.Format("Limit Min Mana Cost: {0}", base1);
                 case 349:
                     // increases weapon damage when a shield is equiped
-                    return Spell.FormatPercent("Damage When Shield Equiped", base1);
+                    return Spell.FormatPercent("Damage When Shield Equipped", base1);
                 case 350:
                     if (base1 > Mana)
                         Mana = base1; // hack
@@ -1197,9 +1159,7 @@
                 case 374:
                     // when a spell has multiple 374 slots, each one has a chance to cast
                     // very few spells have base1 < 100
-                    if (base1 < 100)
-                        return String.Format("Cast: [Spell {0}] ({1}% Chance)", base2, base1);
-                    return String.Format("Cast: [Spell {0}]", base2);
+                    return String.Format("Cast: [Spell {0}]", base2) + (base1 < 100 ? String.Format(" ({0}% Chance)", base1) : "");
                 case 375:
                     // additive with innate crit multiplier and same effect in other slots
                     return Spell.FormatPercent("Critical DoT Damage", base1) + " of Base Damage";
@@ -1225,9 +1185,7 @@
                 case 381:
                     return String.Format("Fling to Self ({0}' away)", base1) + varmax;
                 case 382:
-                    if (base1 != 0)
-                        return String.Format("Inhibit Effect: {0} ({1})", Spell.FormatEnum((SpellEffect)base2), (SpellInhibitType)base1);
-                    return String.Format("Inhibit Effect: {0}", Spell.FormatEnum((SpellEffect)base2));
+                    return String.Format("Inhibit Effect: {0}", Spell.FormatEnum((SpellEffect)base2)) + (base1 != 0 ? String.Format(" ({0})", (SpellInhibitType)base1) : "");
                 case 383:
                     // sympathetic procs like this are often cast at a specific level by an item (see focuslevel item attrib)
                     // chance % modified by the cast time of the spell cast that triggers the proc, whereas 339 is not
@@ -1270,7 +1228,7 @@
                     return Spell.FormatCount("Healing", base1) + " (v396, Before Crit)";
                 case 397:
                     // will use the player AC formula for comparison with buffs but maybe they aren't comparable?
-                    return Spell.FormatCount("Pet AC", (int)(value / (10f / 3f)));
+                    return Spell.FormatCount("Pet AC", value);
                 case 398:
                     return String.Format("Increase Pet Duration by {0}s", base1 / 1000);
                 case 399:
@@ -1280,11 +1238,11 @@
                     // this effect doesn't cause hate - it was added to divine arb as a non-aggro heal
                     Mana = base1; // a bit misleading since the spell will cast with 0 mana and scale the heal
                     Target = SpellTarget.Caster_Group; // total hack but makes sense for current spells
-                    return String.Format("Increase Current HP by up to {0} ({1} HP per 1 Mana)", Math.Floor(base1 * base2 / 10f), base2 / 10f);
+                    return String.Format("Increase Current HP by up to {0} ({1} HP per 1 Mana)", Math.Abs(Math.Floor(base1 * base2 / 10f)), Math.Abs(base2 / 10f));
                 case 401:
-                    return String.Format("Decrease Current HP by up to {0} ({1} HP per 1 Target Mana)", Math.Floor(base1 * base2 / -10f), base2 / -10f);
+                    return String.Format("Decrease Current HP by up to {0} ({1} HP per 1 Target Mana)", Math.Abs(Math.Floor(base1 * base2 / 10f)), Math.Abs(base2 / 10f));
                 case 402:
-                    return String.Format("Decrease Current HP by up to {0} ({1} HP per 1 Target Endurance)", Math.Floor(base1 * base2 / -10f), base2 / -10f);
+                    return String.Format("Decrease Current HP by up to {0} ({1} HP per 1 Target Endurance)", Math.Abs(Math.Floor(base1 * base2 / 10f)), Math.Abs(base2 / 10f));
                 case 403:
                     return String.Format("Limit Spell Class: {0}{1}", base1 >= 0 ? "" : "Exclude ", Spell.FormatEnum((SpellCategory)Math.Abs(base1)));
                 case 404:
@@ -1300,17 +1258,11 @@
                     return String.Format("Cast: [Spell {0}] if Hit By Spell", base1);
                 case 408:
                     // target will still have normal max HP but cannot be regen/heal past the cap
-                    if (base2 > 0)
-                        return String.Format("Cap HP at lowest of {0}% or {1}", base1, base2);
-                    return String.Format("Cap HP at {0}%", base1);
+                    return String.Format("Cap HP at ") + (base2 > 0 ? String.Format("lowest of {0}% or {1}", base1, base2) : String.Format("{0}%", base1));
                 case 409:
-                    if (base2 > 0)
-                        return String.Format("Cap Mana at lowest of {0}% or {1}", base1, base2);
-                    return String.Format("Cap Mana at {0}%", base1);
+                    return String.Format("Cap Mana at ") + (base2 > 0 ? String.Format("lowest of {0}% or {1}", base1, base2) : String.Format("{0}%", base1));
                 case 410:
-                    if (base2 > 0)
-                        return String.Format("Cap Endurance at lowest of {0}% or {1}", base1, base2);
-                    return String.Format("Cap Endurance at {0}%", base1);
+                    return String.Format("Cap Endurance at ") + (base2 > 0 ? String.Format("lowest of {0}% or {1}", base1, base2) : String.Format("{0}%", base1));
                 case 411:
                     return String.Format("Limit Class: {0}", (SpellClassesMask)(base1 >> 1));
                 case 412:
@@ -1333,9 +1285,7 @@
                     return Spell.FormatCount(Spell.FormatEnum((SpellSkill)base2) + " Damage Bonus", base1) + " (v418)";
                 case 419:
                     // this is used for potions. how is it different than 85? maybe proc rate?
-                    if (base2 != 0)
-                        return String.Format("Add Melee Proc: [Spell {0}] with {1}% Rate Mod", base1, base2);
-                    return String.Format("Add Melee Proc: [Spell {0}]", base1);
+                    return String.Format("Add Melee Proc: [Spell {0}]", base1) + (base2 != 0 ? String.Format(" with {0}% Rate Mod", base2) : "");
                 case 421:
                     return Spell.FormatCount("Max Hits Counter", base1);
                 case 422:
@@ -1356,9 +1306,7 @@
                 case 428:
                     return String.Format("Limit Skill: {0}", Spell.FormatEnum((SpellSkill)base1));
                 case 429:
-                    if (base2 != 0)
-                        return String.Format("Add Skill Proc: [Spell {0}] with {1}% Rate Mod", base1, base2);
-                    return String.Format("Add Skill Proc: [Spell {0}]", base1);
+                    return String.Format("Add Skill Proc: [Spell {0}]", base1) + (base2 != 0 ? String.Format(" with {0}% Rate Mod", base2) : "");
                 case 430:
                     return String.Format("Alter Vision: Base1={0} Base2={1} Max={2}", base1, base2, max);
                 case 431:
@@ -1382,7 +1330,7 @@
                 case 435:
                     return String.Format("Fragile Defense ({0})", base1);
                 case 436:
-                    return "Freeze Beneficial Countdown";
+                    return "Toggle: Freeze Buffs";
                 case 437:
                     return "Teleport to your " + FormatEnum((SpellTeleport)base1);
                 case 438:
@@ -1451,33 +1399,28 @@
                     // same as /shield command?
                     return Spell.FormatPercent("Melee Shielding: {0}%", base1);
                 case 464:
-                    return Spell.FormatPercent("Pet Chance to Rampage", base1);
+                    return Spell.FormatPercent("Pet Chance to Rampage", base1) + String.Format(" with {0}% Damage", base2);
                 case 465:
                     return Spell.FormatPercent("Pet Chance to AE Rampage", base1);
                 case 466:
                     // this chance is additive with the owner's passive pet flurry chance AA abilities.
-                    // how does this differ from 280?
-                    return Spell.FormatPercent("Pet Chance to Flurry", base1);
+                    // allows pet to flurry on double attack instead of normal triple like 280
+                    return Spell.FormatPercent("Pet Chance to Flurry on Double Attack", base1);
                 case 467:
                     return Spell.FormatCount("Damage Shield Taken", base1);
                 case 468:
                     return Spell.FormatPercent("Damage Shield Taken", base1);
                 case 469:
                     // 469/470 seem to be similar to spa 340/374 except the cast a spell by group ID rather than spell ID
-                    // is the chance on this shared with other chance SPAs (i.e. only 1 can be cast)?
-                    return String.Format("Cast: [Group {0}] ({1}% Chance)", base2, base1);
+                    // 469 is a chance, 470 is guaranteed
+                    return String.Format("Cast: Highest Rank of [Group {0}] ({1}% Chance)", base2, base1);
                 case 470:
                     // cast highest rank of a spell group - if you don't have any in your spellbook, nothing will be cast
-                    // is the chance on this independant of other chance SPAs (i.e. each one has it's own chance to cast)?
-                    if (base1 < 100)
-                        return String.Format("Cast: Highest Rank of [Group {0}] ({1}% Chance)", base2, base1);
                     return String.Format("Cast: Highest Rank of [Group {0}]", base2);
                 case 471:
                     // add an extra melee round. i.e. main attack, double attack, triple
                     // this is sort of like 211 AE attack except it was added to nerf DPS by only affecting the current target
-                    if (base2 != 100)
-                        return Spell.FormatPercent("Chance to Repeat Primary Hand Round", base1) + String.Format(" with {0}% Damage", base2);
-                    return Spell.FormatPercent("Chance to Repeat Primary Hand Round", base1);
+                    return Spell.FormatPercent("Chance to Repeat Primary Hand Round", base1) + (base2 != 100 ? String.Format(" with {0}% Damage", base2) : "");
                 case 472:
                     return String.Format("Buy AA Rank ({0})", base1);
                 case 473:
@@ -1491,18 +1434,16 @@
                 case 476:
                     return String.Format("Weapon Stance: [Spell {0}] ({1})", base2, base1);
                 case 477:
-                    return String.Format("Move to Top of Hatelist ({0}% Chance)", base1);
+                    return String.Format("Move to Top of Rampage List ({0}% Chance)", base1);
                 case 478:
-                    return String.Format("Move to Bottom of Hatelist ({0}% Chance)", base1);
+                    return String.Format("Move to Bottom of Rampage List ({0}% Chance)", base1);
                 case 479:
                     return String.Format("Limit Effect: {0} greater than {1}", Spell.FormatEnum((SpellEffect)base2), base1);
                 case 480:
                     return String.Format("Limit Effect: {0} less than {1}", Spell.FormatEnum((SpellEffect)base2), base1);
                 case 481:
                     // similar to 407 except maybe it checks limits?
-                    if (base1 < 100)
-                        return String.Format("Cast: [Spell {0}] if Hit By Spell ({1}% Chance)", base2, base1);
-                    return String.Format("Cast: [Spell {0}] if Hit By Spell", base2);
+                    return String.Format("Cast: [Spell {0}] if Hit By Spell", base2) + (base1 < 100 ? String.Format(" ({0}% Chance)", base1) : "");
                 case 482:
                     return Spell.FormatPercent("Base " + Spell.FormatEnum((SpellSkill)base2) + " Damage", base1);
                 case 483:
@@ -1518,9 +1459,7 @@
                     // 411 is used on outgoing focuses
                     return String.Format("Limit Caster Class: {0}", (SpellClassesMask)(base1 >> 1));
                 case 486:
-                    if (base1 == 0)
-                        return "Limit Caster: Exclude Self";
-                    return "Limit Caster: Self";
+                    return "Limit Caster: " + (base1 == 0 ? "Exclude " : "") + "Self";
                 case 487:
                     return Spell.FormatCount(Spell.FormatEnum((SpellSkill)base2) + " Skill Cap with Recipes", base1);
                 case 488:
@@ -1563,20 +1502,23 @@
                     return Spell.FormatPercent("Spell Haste", base1) + " (v500)"; ;
                 case 501:
                     // applied after 127/500 spell haste focus?
-                    return String.Format("Decrease Casting Times by {0:0.##}s", base1 / 1000f);
+                    return String.Format((base1 < 0 ? "Increase" : "Decrease") + " Casting Times by {0:0.##}s", Math.Abs(base1 / 1000f));
                 case 502:
-                    // what is base2 used for?
-                    return String.Format("Stun and Fear for {0}s", base1 / 1000f) + varmax;
+                    // mostly the same as SPA 21, but uses Fear for Immunity check instead of Stun
+                    // and allows for Level Relative Caps i.e. Level + 3
+                    if (base2 != base1 && base2 != 0)
+                        return String.Format("Stun and Fear for {0:0.##}s ({1:0.##}s in PvP)", base1 / 1000f, base2 / 1000f) + varmax;
+                    return String.Format("Stun and Fear for {0:0.##}s", base1 / 1000f) + varmax;
                 case 503:
                     // similar to 185 but with rear arc? stacking?
                     // base2 might be arc type. e.g. 0 = back
-                    return Spell.FormatPercent("Rear Arc Melee Damage", base1 / 10f);
+                    return Spell.FormatPercent((base2 == 0 ? "Rear" : "Frontal") + " Arc Melee Damage", base1 / 10f);
                 case 504:
-                    return Spell.FormatCount("Rear Arc Melee Damage", base1);
+                    return Spell.FormatCount((base2 == 0 ? "Rear" : "Frontal") + " Arc Melee Damage", base1);
                 case 505:
-                    return Spell.FormatPercent("Rear Arc Melee Damage Taken", base1 / 10f);
+                    return Spell.FormatPercent((base2 == 0 ? "Rear" : "Frontal") + " Arc Melee Damage Taken", base1 / 10f);
                 case 506:
-                    return Spell.FormatCount("Rear Arc Melee Damage Taken", base1);
+                    return Spell.FormatCount((base2 == 0 ? "Rear" : "Frontal") + " Arc Melee Damage Taken", base1);
                 case 507:
                     // Effectively Fc_Damage_%2. I know 461 is supposedly "Fc_Damage_%2," but for whatever reason it works nothing like SPA 124.
                     // SPA 507 appears to work just like 124, except it appears to be applied after 461. - Sancus
@@ -1613,7 +1555,7 @@
                     // divide by 10 or 100?
                     return Spell.FormatPercent("Luck", base1 / 10f);
                 case 521:
-                    return String.Format("Absorb Damage using Endurance: {0}%", base1 / 100) + (base2 != 10000 ? String.Format(" ({0:F} End per 1 HP)", base2 / 10000) : "") + (max > 0 ? String.Format(", Max Per Hit: {0}", max) : "");
+                    return String.Format("Absorb Damage using Endurance: {0}%", base1 / 100) + (base2 != 10000 ? String.Format(" ({0} End per 1 HP)", base2 / 10000f) : "") + (max > 0 ? String.Format(", Max Per Hit: {0}", max) : "");
                 case 522:
                     return Spell.FormatPercent("Current Mana", base1 / 100) + String.Format(" up to {0}", max);
                 case 523:


(build) Changing Repository Owner

(build) Changing Repository Owner

--- setup.cake
+++ setup.cake
@@ -36,7 +36,7 @@
 var solutionDirectoryPath     = "./Source/Cake.ReSharperReports";
 var title                     = "Cake.ReSharperReports";
 var resharperSettingsFileName = "Cake.ReSharperReports.sln.DotSettings";
-var repositoryOwner           = "gep13";
+var repositoryOwner           = "cake-build";
 var repositoryName            = "Cake.ReSharperReports";
 var dupFinderExcludePattern   = new string[] { rootDirectoryPath + "/Source/Cake.ReSharperReports.Tests/*.cs" };


Locate tests directory in code.

Locate tests directory in code.

Rather than using a hard-coded path.

--- tests/Avalonia.RenderTests/TestBase.cs
+++ tests/Avalonia.RenderTests/TestBase.cs
@@ -46,7 +46,8 @@

         public TestBase(string outputPath)
         {
-            var testFiles = Path.GetFullPath(@"..\..\..\..\TestFiles\");
+            var testPath = GetTestsDirectory();
+            var testFiles = Path.Combine(testPath, "TestFiles");
 #if AVALONIA_SKIA
             var platform = "Skia";
 #else
@@ -142,6 +143,18 @@
             }
         }

+        private string GetTestsDirectory()
+        {
+            var path = Directory.GetCurrentDirectory();
+
+            while (path.Length > 0 && Path.GetFileName(path) != "tests")
+            {
+                path = Path.GetDirectoryName(path);
+            }
+
+            return path;
+        }
+
         private class TestThreadingInterface : IPlatformThreadingInterface
         {
             public bool CurrentThreadIsLoopThread => MainThread.ManagedThreadId == Thread.CurrentThread.ManagedThreadId;


:bulb: 名前が無い敵は重複チェックから外すように

:bulb: 名前が無い敵は重複チェックから外すように


Updated AttributesFacetCountCollector.cs to 4.0.2 compatibility.

--- src/BoboBrowse.Net/BoboBrowse.Net/Facets/Attribute/AttributesFacetCountCollector.cs
+++ src/BoboBrowse.Net/BoboBrowse.Net/Facets/Attribute/AttributesFacetCountCollector.cs
@@ -17,7 +17,7 @@
 //* See the License for the specific language governing permissions and
 //* limitations under the License.

-// Version compatibility level: 3.2.0
+// Version compatibility level: 4.0.2
 namespace BoboBrowse.Net.Facets.Attribute
 {
     using BoboBrowse.Net.Facets.Data;
@@ -30,25 +30,22 @@

     public class AttributesFacetCountCollector : DefaultFacetCountCollector
     {
-        private readonly AttributesFacetHandler attributesFacetHandler;
-        //public readonly BigNestedIntArray _array; // NOT USED
-        //private int[] buffer;    // NOT USED
+        public readonly BigNestedIntArray _array; // NOT USED
         private IEnumerable<BrowseFacet> cachedFacets;
         private readonly int numFacetsPerKey;
         private readonly char separator;
-        //private OpenBitSet excludes; // NOT USED
-        //private OpenBitSet includes; // NOT USED
-        private readonly MultiValueFacetDataCache dataCache;
+        private readonly IMultiValueFacetDataCache dataCache;
         private string[] values;

-        public AttributesFacetCountCollector(AttributesFacetHandler attributesFacetHandler, string name, MultiValueFacetDataCache dataCache, int docBase, BrowseSelection browseSelection, FacetSpec ospec, int numFacetsPerKey, char separator)
+        public AttributesFacetCountCollector(AttributesFacetHandler attributesFacetHandler, string name,
+            IMultiValueFacetDataCache dataCache, int docBase, BrowseSelection browseSelection,
+            FacetSpec ospec, int numFacetsPerKey, char separator)
             : base(name, dataCache, docBase, browseSelection, ospec)
         {
-            this.attributesFacetHandler = attributesFacetHandler;
             this.dataCache = dataCache;
             this.numFacetsPerKey = numFacetsPerKey;
             this.separator = separator;
-            //_array = dataCache.NestedArray; // NOT USED
+            _array = dataCache.NestedArray; // NOT USED
             if (browseSelection != null)
             {
                 values = browseSelection.Values;


Reduce the amount of 'PersistedCityStatistics'

--- src/Mirage.Urbanization.Simulation/Persistence/PersistedCityStatisticsCollection.cs
+++ src/Mirage.Urbanization.Simulation/Persistence/PersistedCityStatisticsCollection.cs
@@ -14,7 +14,7 @@
         public void Add(PersistedCityStatisticsWithFinancialData statistics)
         {
             _persistedCityStatistics = _persistedCityStatistics.Enqueue(statistics);
-            if (_persistedCityStatistics.Count() > 20800)
+            if (_persistedCityStatistics.Count() > 5200)
                 _persistedCityStatistics = _persistedCityStatistics.Dequeue();

             _mostRecentStatistics = statistics;


Show the Last Published Date without the time.

--- src/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageViewModel.cs
+++ src/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageViewModel.cs
@@ -469,7 +469,7 @@
 		public string GetLastPublishedDisplayText()
 		{
 			if (HasLastPublished) {
-				return LastPublished.Value.ToString ();
+				return LastPublished.Value.Date.ToShortDateString ();
 			}
 			return String.Empty;
 		}


#18381: Making RSD declaration absolute

#18381: Making RSD declaration absolute

Work Item: 18381

--HG--
branch : 1.x

--- src/Orchard.Web/Modules/Orchard.Blogs/Controllers/RemoteBlogPublishingController.cs
+++ src/Orchard.Web/Modules/Orchard.Blogs/Controllers/RemoteBlogPublishingController.cs
@@ -6,6 +6,7 @@
 using Orchard.Blogs.Services;
 using Orchard.Environment.Extensions;
 using Orchard.Logging;
+using Orchard.Mvc.Extensions;

 namespace Orchard.Blogs.Controllers {
     [OrchardFeature("Orchard.Blogs.RemotePublishing")]
@@ -32,7 +33,7 @@
             const string manifestUri = "http://archipelago.phrasewise.com/rsd";

             var urlHelper = new UrlHelper(ControllerContext.RequestContext, _routeCollection);
-            var url = urlHelper.Action("", "", new { Area = "XmlRpc" });
+            var url = urlHelper.AbsoluteAction("", "", new { Area = "XmlRpc" });

             var options = new XElement(
                 XName.Get("service", manifestUri),


Simplify

Simplify

--- src/Workspaces/CSharp/Portable/Recommendations/CSharpRecommendationServiceRunner.cs
+++ src/Workspaces/CSharp/Portable/Recommendations/CSharpRecommendationServiceRunner.cs
@@ -525,7 +525,7 @@

             // If we're showing instance members, don't include nested types
             if (excludeStatic)
-                symbols = symbols.WhereAsArray(s => !s.IsStatic && !(s is ITypeSymbol));
+                symbols = symbols.WhereAsArray(s => !(s.IsStatic || s is ITypeSymbol));

             return new RecommendedSymbols(symbols, default, container, isInstance: excludeStatic);
         }


Simplify code.

Simplify code.

--- src/Workspaces/CSharp/Portable/Recommendations/CSharpRecommendationServiceRunner.cs
+++ src/Workspaces/CSharp/Portable/Recommendations/CSharpRecommendationServiceRunner.cs
@@ -417,97 +417,76 @@
             ExpressionSyntax originalExpression,
             ExpressionSyntax expression,
             SymbolInfo leftHandBinding,
-            INamespaceOrTypeSymbol container)
+            ITypeSymbol containerType)
         {
             var useBaseReferenceAccessibility = false;
             var excludeInstance = false;
-            var excludeStatic = false;
+            var excludeStatic = true;
+
             var symbol = leftHandBinding.GetAnySymbol();
-            ImmutableArray<ISymbol> symbols = default;
-
+
+            INamespaceOrTypeSymbol containerNamespaceOrType = containerType;
             if (symbol != null)
             {
                 // If the thing on the left is a type, namespace or alias and the original
                 // expression was parenthesized, we shouldn't show anything in IntelliSense.
                 if (originalExpression.IsKind(SyntaxKind.ParenthesizedExpression) &&
-                    symbol.MatchesKind(SymbolKind.NamedType,
-                                       SymbolKind.Namespace,
-                                       SymbolKind.Alias))
+                    symbol.Kind is SymbolKind.NamedType or SymbolKind.Namespace or SymbolKind.Alias)
                 {
                     return ImmutableArray<ISymbol>.Empty;
                 }

                 // If the thing on the left is a lambda expression, we shouldn't show anything.
-                if (symbol.Kind == SymbolKind.Method &&
-                    ((IMethodSymbol)symbol).MethodKind == MethodKind.AnonymousFunction)
-                {
+                if (symbol is IMethodSymbol { MethodKind: MethodKind.AnonymousFunction })
                     return ImmutableArray<ISymbol>.Empty;
-                }

                 // If the thing on the left is a method name identifier, we shouldn't show anything.
                 var originalExpressionKind = originalExpression.Kind();
-                if (symbol.Kind == SymbolKind.Method &&
-                    (originalExpressionKind == SyntaxKind.IdentifierName || originalExpressionKind == SyntaxKind.GenericName))
+                if (symbol.Kind is SymbolKind.Method &&
+                    originalExpressionKind is SyntaxKind.IdentifierName or SyntaxKind.GenericName)
                 {
                     return ImmutableArray<ISymbol>.Empty;
                 }

                 // If the thing on the left is an event that can't be used as a field, we shouldn't show anything
-                if (symbol.Kind == SymbolKind.Event &&
-                    !_context.SemanticModel.IsEventUsableAsField(originalExpression.SpanStart, (IEventSymbol)symbol))
+                if (symbol is IEventSymbol ev &&
+                    !_context.SemanticModel.IsEventUsableAsField(originalExpression.SpanStart, ev))
                 {
                     return ImmutableArray<ISymbol>.Empty;
                 }

                 // If the thing on the left is a this parameter (e.g. this or base) and we're in a static context,
                 // we shouldn't show anything
-                if (symbol.IsThisParameter() &&
-                    expression.IsInStaticContext())
-                {
+                if (symbol.IsThisParameter() && expression.IsInStaticContext())
                     return ImmutableArray<ISymbol>.Empty;
-                }
-
-                // What is the thing on the left?
-                switch (symbol.Kind)
-                {
-                    case SymbolKind.NamedType:
-                    case SymbolKind.Namespace:
-                        excludeInstance = true;
-                        container = (INamespaceOrTypeSymbol)symbol;
-                        break;
-
-                    case SymbolKind.Alias:
-                        excludeInstance = true;
-                        container = ((IAliasSymbol)symbol).Target;
-                        break;
-
-                    case SymbolKind.Parameter:
-                        var parameter = (IParameterSymbol)symbol;
-
-                        excludeStatic = true;
-
-                        symbols = GetSymbols(parameter, originalExpression.SpanStart);
-
-                        // case:
-                        //    base.|
-                        if (parameter.IsThis && !object.Equals(parameter.Type, container))
-                        {
-                            useBaseReferenceAccessibility = true;
-                        }
-
-                        break;
-
-                    default:
-                        excludeStatic = true;
-                        break;
-                }
-            }
-            else if (container != null)
-            {
+
+                if (symbol is IAliasSymbol alias)
+                    symbol = alias.Target;
+
+                if (symbol.Kind is SymbolKind.NamedType or SymbolKind.Namespace)
+                {
+                    // For named typed and namespaces, we flip things around.  We only want statics and not instance members.
+                    excludeInstance = true;
+                    excludeStatic = false;
+                    containerNamespaceOrType = (INamespaceOrTypeSymbol)symbol;
+                }
+
+                if (symbol is IParameterSymbol parameter)
+                {
+                    // case:
+                    //    base.|
+                    useBaseReferenceAccessibility = parameter.IsThis && !parameter.Type.Equals(containerType);
+                }
+            }
+            else if (containerType != null)
+            {
+                // Otherwise, if it wasn't a symbol on the left, but it was something that had a type,
+                // then include instance members for it.
                 excludeStatic = true;
             }
             else
             {
+                // Otherwise, we don't have a symbol, or a type.  So we have nothing to return.
                 return ImmutableArray<ISymbol>.Empty;
             }

@@ -522,18 +501,11 @@
                 excludeStatic = false;
             }

-            if (symbols.IsDefault)
-            {
-                symbols = GetSymbols(
-                    container,
-                    position: originalExpression.SpanStart,
-                    excludeInstance: excludeInstance,
-                    useBaseReferenceAccessibility: useBaseReferenceAccessibility);
-            }
+            var symbols = GetSymbols(containerNamespaceOrType, position: originalExpression.SpanStart, excludeInstance, useBaseReferenceAccessibility);

             // If we're showing instance members, don't include nested types
             return excludeStatic
-                ? symbols.WhereAsArray(s => !s.IsStatic && !(s is ITypeSymbol))
+                ? symbols.WhereAsArray(s => !(s.IsStatic || s is ITypeSymbol))
                 : symbols;
         }
     }


dump grayscale image with console client

git-tfs-id: [https://tfs.codeplex.com/tfs/TFS05/]$/ZXingNet/trunk;C86203

--- Clients/CommandLineDecoder/DecodeThread.cs
+++ Clients/CommandLineDecoder/DecodeThread.cs
@@ -161,7 +161,7 @@
          BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
          if (config.DumpBlackPoint)
          {
-            dumpBlackPoint(uri, image, bitmap);
+            dumpBlackPoint(uri, image, bitmap, source);
          }
          Result result = new MultiFormatReader().decode(bitmap, hints);
          if (result != null)
@@ -217,7 +217,7 @@
          BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
          if (config.DumpBlackPoint)
          {
-            dumpBlackPoint(uri, image, bitmap);
+            dumpBlackPoint(uri, image, bitmap, source);
          }

          MultiFormatReader multiFormatReader = new MultiFormatReader();
@@ -262,7 +262,7 @@
        * to right: the original image, the row sampling monochrome version, and the 2D sampling
        * monochrome version.
        */
-      private static void dumpBlackPoint(Uri uri, Bitmap image, BinaryBitmap bitmap)
+      private static void dumpBlackPoint(Uri uri, Bitmap image, BinaryBitmap bitmap, LuminanceSource luminanceSource)
       {
          // TODO: Update to compare different Binarizer implementations.
          String inputName = uri.LocalPath;
@@ -291,7 +291,7 @@

          int width = bitmap.Width;
          int height = bitmap.Height;
-         int stride = width * 3;
+         int stride = width * 4;
          var result = new Bitmap(stride, height, PixelFormat.Format32bppArgb);
          var offset = 0;

@@ -328,15 +328,24 @@

          // 2D sampling
          offset += width;
+         BitMatrix matrix = bitmap.BlackMatrix;
          for (int y = 0; y < height; y++)
          {
-            BitMatrix matrix = bitmap.BlackMatrix;
             for (int x = 0; x < width; x++)
             {
                result.SetPixel(offset + x, y, matrix[x, y] ? Color.Black : Color.White);
             }
          }

+         offset += width;
+         var luminanceMatrix = luminanceSource.Matrix;
+         for (int y = 0; y < height; y++)
+         {
+            for (int x = 0; x < width; x++)
+            {
+               result.SetPixel(offset + x, y, Color.FromArgb(luminanceMatrix[y * width + x], luminanceMatrix[y * width + x], luminanceMatrix[y * width + x]));
+            }
+         }
          result.Save(resultName, ImageFormat.Png);
       }
    }


Small change to sorting order

Small change to sorting order

--- Commands/ContentTypes/RemoveContentType.cs
+++ Commands/ContentTypes/RemoveContentType.cs
@@ -16,7 +16,7 @@
     [CmdletExample(
         Code = @"PS:> Remove-SPOContentType -Identity ""Project Document"" -Force",
         Remarks = @"This will remove a content type called ""Project Document"" from the current web with force",
-        SortOrder = 1)]
+        SortOrder = 2)]
     public class RemoveContentType : SPOWebCmdlet
     {


skipping QuickPulse tests

skipping QuickPulse tests

--- test/Microsoft.Azure.WebJobs.Host.EndToEndTests/ApplicationInsightsEndToEndTests.cs
+++ test/Microsoft.Azure.WebJobs.Host.EndToEndTests/ApplicationInsightsEndToEndTests.cs
@@ -159,7 +159,7 @@
             ValidateRequest(request, testName, false);
         }

-        [Theory]
+        [Theory(Skip = "Skipping flaky tests")]
         [InlineData(LogLevel.None, 0)]
         [InlineData(LogLevel.Information, 28)]
         [InlineData(LogLevel.Warning, 10)]


Added width and height slider to CappedImage sample page

--- DNA.XForms.Sample/Pages/CappedImagePage.cs
+++ DNA.XForms.Sample/Pages/CappedImagePage.cs
@@ -10,6 +10,8 @@
 	{
 		public CappedImagePage ()
 		{
+			this.Title = "Capped Image Sample";
+
 			// Dictionary to get Color from color name.
 			Dictionary<string, Color> NamedColors = new Dictionary<string, Color>
 			{
@@ -33,8 +35,8 @@

 			var caps = new Thickness (21d, 17d, 26.5d, 17.5d);

-			var image1 = new CappedImage (@"MessageBubble.png", caps);
-			var image2 = new CappedImage (@"MessageBubble.png", caps);
+			var cappedImage = new CappedImage (@"MessageBubble.png", caps);
+			cappedImage.HorizontalOptions = LayoutOptions.Start;

 			var flipVerticallySwitch = new Switch { HorizontalOptions = LayoutOptions.End};
 			var flipHorizontallySwitch = new Switch { HorizontalOptions = LayoutOptions.End};
@@ -45,56 +47,104 @@
 			foreach (var item in NamedColors.Select (n => n.Key).ToList ()) {
 				colorPicker.Items.Add (item);
 			}
+			colorPicker.SelectedIndex = 0; // None (Default)
+
 			colorPicker.SelectedIndexChanged += (sender, args) =>
 			{
 				if (colorPicker.SelectedIndex == -1)
 				{
-					image2.TintColor = Color.Default;
+					cappedImage.TintColor = Color.Default;
 					colorPicker.BackgroundColor = Color.Default;
 				}
 				else
 				{
 					string colorName = colorPicker.Items[colorPicker.SelectedIndex];
 					var color = NamedColors[colorName];
-					image2.TintColor = color;
+					cappedImage.TintColor = color;
 					colorPicker.BackgroundColor = color;
 				}
 			};

-
-			this.Content = new StackLayout() {
-				Padding = new Thickness(8d,8d,8d,8d),
-				Spacing = 8d,
-				Children = {
-					image1,
-					image2,
-					new StackLayout {
-						Orientation = StackOrientation.Horizontal,
-						Spacing = 16,
-						Children = {
-							new Label { Text = "Color", HorizontalOptions = LayoutOptions.Start, YAlign=TextAlignment.Center},
-							colorPicker,
-						},
-					},
-					new StackLayout {
-						Orientation = StackOrientation.Horizontal,
-						Children = {
-							new Label { Text = "Switch Vertically", HorizontalOptions = LayoutOptions.StartAndExpand, YAlign=TextAlignment.Center},
-							flipVerticallySwitch,
-						},
-					},
-					new StackLayout {
-						Orientation = StackOrientation.Horizontal,
-						Children = {
-							new Label { Text = "Switch Horizontally", HorizontalOptions = LayoutOptions.StartAndExpand, YAlign=TextAlignment.Center},
-							flipHorizontallySwitch,
-						},
-					}
-				},
+			var widthSlider = new Slider {
+				Minimum = 0d,
+				Maximum = Application.Current.MainPage.Width-20f,
+				Value = 100d,
+				HorizontalOptions = LayoutOptions.EndAndExpand,
+			};
+			var heightSlider = new Slider {
+				Minimum = 0d,
+				Maximum = Application.Current.MainPage.Height,
+				Value = 50d,
+				HorizontalOptions = LayoutOptions.EndAndExpand,
 			};

-			image2.SetBinding(CappedImage.FlippedHorizontallyProperty, new Binding("IsToggled", BindingMode.OneWay, source:flipHorizontallySwitch));
-			image2.SetBinding(CappedImage.FlippedVerticallyProperty, new Binding("IsToggled", BindingMode.OneWay, source:flipVerticallySwitch));
+			this.Content = new ScrollView {
+				Content = new StackLayout () {
+					Padding = new Thickness (8d, 8d, 8d, 8d),
+					Spacing = 8d,
+					Children = {
+						new StackLayout {
+							Orientation = StackOrientation.Horizontal,
+							Spacing = 16,
+							Children = {
+								new Label { Text = "Color", HorizontalOptions = LayoutOptions.Start, YAlign = TextAlignment.Center },
+								colorPicker,
+							},
+						},
+						new StackLayout {
+							Orientation = StackOrientation.Horizontal,
+							Children = {
+								new Label {
+									Text = "Switch Vertically",
+									HorizontalOptions = LayoutOptions.StartAndExpand,
+									YAlign = TextAlignment.Center
+								},
+								flipVerticallySwitch,
+							},
+						},
+						new StackLayout {
+							Orientation = StackOrientation.Horizontal,
+							Children = {
+								new Label {
+									Text = "Switch Horizontally",
+									HorizontalOptions = LayoutOptions.StartAndExpand,
+									YAlign = TextAlignment.Center
+								},
+								flipHorizontallySwitch,
+							},
+						},
+						new StackLayout {
+							Orientation = StackOrientation.Horizontal,
+							Children = {
+								new Label { Text = "Width", HorizontalOptions = LayoutOptions.StartAndExpand, YAlign = TextAlignment.Center },
+								widthSlider,
+							},
+						},
+						new StackLayout {
+							Orientation = StackOrientation.Horizontal,
+							Children = {
+								new Label { Text = "Height", HorizontalOptions = LayoutOptions.StartAndExpand, YAlign = TextAlignment.Center },
+								heightSlider,
+							},
+						},
+						new StackLayout {
+							Orientation = StackOrientation.Horizontal,
+							Children = {
+								cappedImage,
+								new BoxView {
+									HorizontalOptions = LayoutOptions.EndAndExpand,
+								},
+							}
+						}
+
+					},
+				}
+			};
+
+			cappedImage.SetBinding(CappedImage.FlippedHorizontallyProperty, new Binding("IsToggled", BindingMode.OneWay, source:flipHorizontallySwitch));
+			cappedImage.SetBinding(CappedImage.FlippedVerticallyProperty, new Binding("IsToggled", BindingMode.OneWay, source:flipVerticallySwitch));
+			cappedImage.SetBinding(CappedImage.WidthRequestProperty, new Binding("Value", BindingMode.TwoWay, source:widthSlider));
+			cappedImage.SetBinding(CappedImage.HeightRequestProperty, new Binding("Value", BindingMode.TwoWay, source:heightSlider));
 		}
 	}
 }


Creating trip method tested

Creating trip method tested

--- BrumWithMe/Tests/BrumWithMe.Services.Data.Tests/TripServiceTests/CreateTripShould.cs
+++ BrumWithMe/Tests/BrumWithMe.Services.Data.Tests/TripServiceTests/CreateTripShould.cs
@@ -1,12 +1,16 @@
 using BrumWithMe.Data.Contracts;
 using BrumWithMe.Data.Models.CompositeModels.Trip;
 using BrumWithMe.Data.Models.Entities;
+using BrumWithMe.Data.Models.Enums;
 using BrumWithMe.Services.Data.Contracts;
 using BrumWithMe.Services.Data.Services;
 using BrumWithMe.Services.Providers.Mapping.Contracts;
 using BrumWithMe.Services.Providers.TimeProviders;
 using Moq;
 using NUnit.Framework;
+using System;
+using System.Collections.Generic;
+using System.Linq;

 namespace BrumWithMe.Services.Data.Tests.TripServiceTests
 {
@@ -156,7 +160,7 @@
             // Assert
             mockedCityService.Verify(x => x.CreateCity(tripCreatingInfo.DestinationName), Times.Never);
         }
-
+
         [Test]
         public void CallCreateCityFromCityServiceTwice_WhenOriginAndDestinationNamesDoesNotExistInDB()
         {
@@ -236,5 +240,150 @@
             mockedCityService.Verify(x => x.CreateCity(tripCreatingInfo.DestinationName), Times.Never);
             mockedCityService.Verify(x => x.CreateCity(tripCreatingInfo.OriginName), Times.Never);
         }
+
+        [Test]
+        public void CreateTripWithoutTags_WhenThereAreNotagsProvider()
+        {
+            // Arrange
+            var mockedTripRepo = new Mock<IProjectableRepositoryEf<Trip>>();
+            var mockedUserTripRepo = new Mock<IProjectableRepositoryEf<UsersTrips>>();
+            var mockedCityService = new Mock<ICityService>();
+            var mockedTagService = new Mock<ITagService>();
+            var mockedDateTimpeProvider = new Mock<IDateTimeProvider>();
+            var mockedMappingProvider = new Mock<IMappingProvider>();
+            var mockedUnitOfWork = new Mock<IUnitOfWorkEF>();
+
+            var tripService = new TripService(
+                  () => mockedUnitOfWork.Object,
+                  mockedUserTripRepo.Object,
+                  mockedCityService.Object,
+                  mockedMappingProvider.Object,
+                  mockedTagService.Object,
+                  mockedTripRepo.Object,
+                  mockedDateTimpeProvider.Object);
+
+            var tripCreatingInfo = new TripCreationInfo()
+            {
+                OriginName = "Sofia",
+                DestinationName = "Pazardzhik",
+                TagIds = new List<int>()
+            };
+
+            City originCity = new City() { Name = tripCreatingInfo.OriginName };
+            mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.DestinationName))
+                .Returns(originCity);
+
+            City destinationCity = new City() { Name = tripCreatingInfo.DestinationName };
+            mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.OriginName))
+            .Returns(destinationCity);
+
+            var foundTags = new List<Tag>();
+            mockedTagService.Setup(x => x.GetTagsByIds(tripCreatingInfo.TagIds)).Returns(foundTags);
+
+            var trip = new Trip()
+            {
+                Tags = foundTags
+            };
+
+            mockedMappingProvider.Setup(x => x.Map<TripCreationInfo, Trip>(tripCreatingInfo))
+                .Returns(trip);
+
+            // Act
+            tripService.CreateTrip(tripCreatingInfo);
+
+            // Assert
+            mockedTripRepo.Verify(x => x.Add(trip), Times.Once);
+            mockedUnitOfWork.Verify(x => x.Commit(), Times.Once);
+        }
+
+        [Test]
+        public void CreateTripWithAllPropertiesFromMethodParameter()
+        {
+            // Arrange
+            var mockedTripRepo = new Mock<IProjectableRepositoryEf<Trip>>();
+            var mockedUserTripRepo = new Mock<IProjectableRepositoryEf<UsersTrips>>();
+            var mockedCityService = new Mock<ICityService>();
+            var mockedTagService = new Mock<ITagService>();
+            var mockedDateTimpeProvider = new Mock<IDateTimeProvider>();
+            var mockedMappingProvider = new Mock<IMappingProvider>();
+            var mockedUnitOfWork = new Mock<IUnitOfWorkEF>();
+
+            var tripService = new TripService(
+                  () => mockedUnitOfWork.Object,
+                  mockedUserTripRepo.Object,
+                  mockedCityService.Object,
+                  mockedMappingProvider.Object,
+                  mockedTagService.Object,
+                  mockedTripRepo.Object,
+                  mockedDateTimpeProvider.Object);
+
+            var tripCreatingInfo = new TripCreationInfo()
+            {
+                OriginName = "Sofia",
+                DestinationName = "Pazardzhik",
+                TagIds = new List<int>(),
+                Description = "test",
+                Price = 4,
+                CarId = 1,
+                TotalSeats = 2,
+                TimeOfDeparture = DateTime.Now,
+                DriverId = "1"
+            };
+
+            City originCity = new City() { Name = tripCreatingInfo.OriginName };
+            mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.DestinationName))
+                .Returns(originCity);
+
+            City destinationCity = new City() { Name = tripCreatingInfo.DestinationName };
+            mockedCityService.Setup(x => x.GetCityByName(tripCreatingInfo.OriginName))
+            .Returns(destinationCity);
+
+            var foundTags = new List<Tag>();
+            mockedTagService.Setup(x => x.GetTagsByIds(tripCreatingInfo.TagIds)).Returns(foundTags);
+
+            var dateCreated = DateTime.Now;
+            mockedDateTimpeProvider.Setup(x => x.Now).Returns(dateCreated);
+
+            var trip = new Trip()
+            {
+                Tags = foundTags,
+                Origin = originCity,
+                Destination = destinationCity,
+                CarId = tripCreatingInfo.CarId,
+                Price = tripCreatingInfo.Price,
+                TotalSeats = tripCreatingInfo.TotalSeats,
+                TimeOfDeparture = tripCreatingInfo.TimeOfDeparture,
+                TakenSeats = 0,
+                Description = tripCreatingInfo.Description,
+                IsDeleted = false,
+                IsReported = false,
+                IsFinished = false,
+                DateCreated = DateTime.UtcNow,
+            };
+
+            mockedMappingProvider.Setup(x => x.Map<TripCreationInfo, Trip>(tripCreatingInfo))
+                .Returns(trip);
+
+            // Act
+            tripService.CreateTrip(tripCreatingInfo);
+            var createdTripUserTrips = trip.TripsUsers.FirstOrDefault(x => x.Trip == trip);
+
+            // Assert
+            Assert.AreEqual(createdTripUserTrips.UserTripStatusId, (int)UserTripStatusType.Owner);
+            Assert.AreEqual(createdTripUserTrips.UserId, tripCreatingInfo.DriverId);
+            Assert.AreEqual(createdTripUserTrips.Trip, trip);
+            Assert.AreEqual(tripCreatingInfo.CarId, trip.CarId);
+            Assert.AreEqual(tripCreatingInfo.Price, trip.Price);
+            Assert.AreEqual(0, trip.TakenSeats);
+            Assert.AreEqual(tripCreatingInfo.TotalSeats, trip.TotalSeats);
+            Assert.AreEqual(tripCreatingInfo.TimeOfDeparture, trip.TimeOfDeparture);
+            Assert.AreEqual(dateCreated, trip.DateCreated);
+            Assert.IsFalse(trip.IsDeleted);
+            Assert.IsFalse(trip.IsFinished);
+            Assert.IsFalse(trip.IsReported);
+
+            mockedTripRepo.Verify(x => x.Add(trip), Times.Once);
+            mockedUnitOfWork.Verify(x => x.Commit(), Times.Once);
+        }
     }
 }


Dispose ExcelWriter with large reports

Dispose ExcelWriter with large reports

--- frmFilter.cs
+++ frmFilter.cs
@@ -3950,12 +3950,24 @@
                                 }
                                 if (makeReport && outFile != null)
                                 {
-                                    if (report == reportType.HTML)
-                                    {
-                                        WriteHTMLEndReport(outFile);
-                                    }
-                                    outFile.Close();
-                                    outFile.Dispose();
+                                    switch (report)
+                                    {
+                                        case reportType.CSV:
+                                            outFile.Close();
+                                            outFile.Dispose();
+                                            break;
+                                        case reportType.Excel:
+                                            excelFile.Dispose();
+                                            break;
+                                        default:
+                                            if (report == reportType.HTML)
+                                            {
+                                                WriteHTMLEndReport(outFile);
+                                            }
+                                            outFile.Close();
+                                            outFile.Dispose();
+                                            break;
+                                    }
                                     makeReport = false;
                                 }
                                 if (filter != null && !stopProcessing)


Fixed index out of range, started ignoring hidden items

--- EPPlus/Table/PivotTable/ExcelPivotTable.cs
+++ EPPlus/Table/PivotTable/ExcelPivotTable.cs
@@ -1246,6 +1246,8 @@
 		private List<Tuple<int, int>> BuildRowItems(PivotItemTreeNode root, List<Tuple<int, int>> indices, List<Tuple<int, int>> lastChildIndices, int indent)
 		{
 			var pivotField = root.PivotFieldItemIndex != -2 ? this.Fields[root.PivotFieldIndex] : null;
+			if (this.IsHidden(root))
+				return indices;
 			int repeatedItemsCount = 0;
 			if (root.Value != -1)
 			{
@@ -1312,8 +1314,16 @@
 			return null;
 		}

+		private bool IsHidden(PivotItemTreeNode node)
+		{
+			var pivotField = node.PivotFieldItemIndex != -2 ? this.Fields[node.PivotFieldIndex] : null;
+			return pivotField != null && pivotField.Items[node.PivotFieldItemIndex].Hidden;
+		}
+
 		private List<Tuple<int, int>> BuildColumnItems(PivotItemTreeNode node, List<Tuple<int, int>> indices, List<Tuple<int, int>> lastChildIndices)
 		{
+			if (this.IsHidden(node))
+				return indices;
 			int repeatedItemsCount = 0;
 			// Base case (leaf node).
 			if (!node.HasChildren)
@@ -1917,7 +1927,7 @@
 			else
 			{
 				sharedItemValue = item.Value;
-				if (sharedItemValue != null && sharedItemValue[0] == '<' && DateTime.TryParse(sharedItemValue.Substring(1), out var date))
+				if (!string.IsNullOrEmpty(sharedItemValue) && sharedItemValue[0] == '<' && DateTime.TryParse(sharedItemValue.Substring(1), out var date))
 					sharedItemValue = this.GetItemValueByGroupingType(date, cacheField.FieldGroup.GroupBy);
 			}
 			sharedItemValue = sharedItemValue ?? stringResources.BlankValueHeaderCaption;


Link StartJump to next system

Link StartJump to next system

--- EliteDangerous/HistoryList/HistoryEntry.cs
+++ EliteDangerous/HistoryList/HistoryEntry.cs
@@ -166,15 +166,16 @@
             bool starposfromedsm = false;
             bool firstdiscover = false;

-
-            if (je.EventTypeID == JournalTypeEnum.Location || je.EventTypeID == JournalTypeEnum.FSDJump)
+            if (je.EventTypeID == JournalTypeEnum.Location || je.EventTypeID == JournalTypeEnum.FSDJump ||
+                (je.EventTypeID == JournalTypeEnum.StartJump && (je as JournalStartJump)?.JumpType == "Hyperspace"))
             {
                 JournalLocOrJump jl = je as JournalLocOrJump;
                 JournalFSDJump jfsd = je as JournalFSDJump;
+                JournalStartJump js = je as JournalStartJump;

                 ISystem newsys;

-                if (jl.HasCoordinate)       // LAZY LOAD IF it has a co-ord.. the front end will when it needs it
+                if (jl != null && jl.HasCoordinate)       // LAZY LOAD IF it has a co-ord.. the front end will when it needs it
                 {
                     newsys = new SystemClassDB(jl.StarSystem, jl.StarPos.X, jl.StarPos.Y, jl.StarPos.Z);
                     newsys.id_edsm = jl.EdsmID < 0 ? 0 : jl.EdsmID;       // pass across the EDSMID for the lazy load process.
@@ -188,8 +189,10 @@
                 }
                 else
                 {                           // Default one
-                    newsys = new SystemClassDB(jl.StarSystem);
-                    newsys.id_edsm = jl.EdsmID;
+                    string sysname = jl?.StarSystem ?? js?.StarSystem;
+
+                    newsys = new SystemClassDB(sysname);
+                    newsys.id_edsm = je.EdsmID;

                     if (checkedsm)          // see if we can find the right system
                     {
@@ -197,7 +200,7 @@

                         if (s != null)                                          // yes, use, and update the journal with the esdmid, and also the position if we have a co-ord
                         {                                                       // so next time we don't have to do this again..
-                            if (jl.HasCoordinate)
+                            if (jl != null && jl.HasCoordinate)
                             {
                                 s.x = Math.Round(jl.StarPos.X * 32.0) / 32.0;
                                 s.y = Math.Round(jl.StarPos.Y * 32.0) / 32.0;
@@ -212,7 +215,7 @@
                                 journalupdate = true;
                             }

-                            if (jl.EdsmID <= 0 && newsys.id_edsm > 0)
+                            if (je.EdsmID <= 0 && newsys.id_edsm > 0)
                             {
                                 journalupdate = true;
                             }
@@ -232,8 +235,8 @@
                 }

                 isys = newsys;
-                starposfromedsm = jl.HasCoordinate ? jl.StarPosFromEDSM : newsys.HasCoordinate;
-                firstdiscover = jl.EDSMFirstDiscover;
+                starposfromedsm = (jl != null && jl.HasCoordinate) ? jl.StarPosFromEDSM : newsys.HasCoordinate;
+                firstdiscover = jl == null ? false : jl.EDSMFirstDiscover;
             }

             string summary, info, detailed;


Fix some logs in DokanOperationProxy

Fix some logs in DokanOperationProxy

--- DokanNet/DokanOperationProxy.cs
+++ DokanNet/DokanOperationProxy.cs
@@ -804,6 +804,7 @@
         {
             try
             {
+                logger.Debug("GetDiskFreeSpace:");
                 logger.Debug("GetDiskFr{0}eeSpaceProxy", "ARG0");
                 logger.Debug("\tContext\t{0}", rawFileInfo);

@@ -833,7 +834,7 @@
             rawVolumeSerialNumber = serialNumber;
             try
             {
-                logger.Debug("GetVolumeInformationProxy");
+                logger.Debug("GetVolumeInformationProxy:");
                 logger.Debug("\tContext\t{0}", rawFileInfo);
                 string label;
                 string name;
@@ -866,7 +867,7 @@
         {
             try
             {
-                logger.Debug("MountedProxy");
+                logger.Debug("MountedProxy:");
                 logger.Debug("\tContext\t{0}", rawFileInfo);

                 var result = operations.Mounted(rawFileInfo);
@@ -885,7 +886,7 @@
         {
             try
             {
-                logger.Debug("UnmountedProxy");
+                logger.Debug("UnmountedProxy:");
                 logger.Debug("\tContext\t{0}", rawFileInfo);

                 var result = operations.Unmounted(rawFileInfo);


Update help for web player controls. Pathing for resources loading on web.


More formatting

More formatting


Some minor commenting

Some minor commenting

--- Indicators/ConstantIndicator.cs
+++ Indicators/ConstantIndicator.cs
@@ -45,6 +45,8 @@
         {
             _value = value;

+            // set this immediatelyso it always has the .Value property correctly set, the
+            // time will be updated anytime this indicators Update method gets called.
             Current = new IndicatorDataPoint(DateTime.MinValue, value);
         }


fix control readonly property always true #137


A bit more virtual

A bit more virtual


Fixed Flickering

Fixed Flickering

--- Game-Engine/Game-Engine/Form1.cs
+++ Game-Engine/Game-Engine/Form1.cs
@@ -11,16 +11,25 @@

 namespace Game_Engine
 {
+
+
     public partial class Form1 : Form
     {
-        do you see flickering????
+        protected override CreateParams CreateParams
+        {
+            get
+            {
+                CreateParams handleParam = base.CreateParams;
+                handleParam.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
+                return handleParam;
+            }
+        }

-        private int x = 10;
+        private int x = 1;
         public Form1()
         {
+            InitializeComponent();

-            InitializeComponent();
-
         }

         private void screen_Paint(object sender, PaintEventArgs e)//paint method is run on window event or by the invalidate method located in the timer1_Tick method
@@ -29,7 +38,7 @@
             this.DoubleBuffered = true;
             Graphics gObject = screen.CreateGraphics();

-            Brush red = new SolidBrush(Color.Red);
+            Brush red = new SolidBrush(Color.Blue);
             Pen redPen = new Pen(red, 8);

             gObject.DrawLine(redPen, x, 10, 400, 376);


comment Hellcat waistguard

comment Hellcat waistguard

--- Extensions/LegendaryPowerInfoExtensions.cs
+++ Extensions/LegendaryPowerInfoExtensions.cs
@@ -112,7 +112,7 @@
             if (powerInfo.HauntingGirdle != null) yield return powerInfo.HauntingGirdle;
             if (powerInfo.HauntOfVaxo != null) yield return powerInfo.HauntOfVaxo;
             if (powerInfo.HeartOfIron != null) yield return powerInfo.HeartOfIron;
-            if (powerInfo.HellcatWaistguard != null) yield return powerInfo.HellcatWaistguard;
+            //if (powerInfo.HellcatWaistguard != null) yield return powerInfo.HellcatWaistguard;
             if (powerInfo.HergbrashsBinding != null) yield return powerInfo.HergbrashsBinding;
             if (powerInfo.HexingPantsOfMrYan != null) yield return powerInfo.HexingPantsOfMrYan;
             if (powerInfo.HillenbrandsTrainingSword != null) yield return powerInfo.HillenbrandsTrainingSword;


Added HasMorePages property to SleepLogListBase

--- Fitbit.Portable/Models/SleepLogListBase.cs
+++ Fitbit.Portable/Models/SleepLogListBase.cs
@@ -3,6 +3,8 @@
     public class SleepLogListBase
     {
         public Pagination Pagination { get; set; }
+        //Shortcut property to allow user to check for additional paged data
+        public bool HasMorePages => Pagination?.Next != null;
         public SleepLogDateRange[] Sleep { get; set; }
     }
 }


Relaxing eager mousewhell scrolling prevention in ribbon

--- Fluent.Ribbon/Controls/RibbonTabControl.cs
+++ Fluent.Ribbon/Controls/RibbonTabControl.cs
@@ -597,11 +597,11 @@

         #region Private methods

-        private static bool IsRibbonAncestorOf(DependencyObject element)
+        private static bool IsRibbonGroupBoxAncestorOf(DependencyObject element)
         {
             while (element != null)
             {
-                if (element is Ribbon)
+                if (element is RibbonGroupBox)
                 {
                     return true;
                 }
@@ -625,8 +625,9 @@

             var focusedElement = Keyboard.FocusedElement as DependencyObject;

+            // Prevent scrolling if any control inside a RibbonGroupBox has focus
             if (focusedElement != null
-                && IsRibbonAncestorOf(focusedElement))
+                && IsRibbonGroupBoxAncestorOf(focusedElement))
             {
                 return;
             }


Create InputParameterParser.cs

Create InputParameterParser.cs

--- src/utility/InputParameterParser.cs
+++ src/utility/InputParameterParser.cs
@@ -1,4 +1,3 @@
-//  Copyright 2005-2010 Portland State University, University of Wisconsin
 //  Authors:  Robert M. Scheller, James B. Domingo

 using Landis.Library.Succession;
@@ -58,11 +57,6 @@

         protected override IInputParameters Parse()
         {
-            //InputVar<string> landisData = new InputVar<string>("LandisData");
-            //ReadVar(landisData);
-            //if (landisData.Value.Actual != PlugIn.ExtensionName)
-            //    throw new InputValueException(landisData.Value.String, "The value is not \"{0}\"", PlugIn.ExtensionName);
-
             ReadLandisDataVar();
             InputParameters parameters = new InputParameters();


Fix CI build error

Fix CI build error

--- Gem.Engine/Console/GemConsole.cs
+++ Gem.Engine/Console/GemConsole.cs
@@ -44,7 +44,7 @@
             }, new CellBehavior(Color.Black, 0.0f, 1.0f));

             aligner = new CellRowAligner();
-            entryPoint = new TerminalEntry(appender, aligner, ()=>renderingOptions.CellSpacing,()=> renderingOptions.RowSize.X);
+            entryPoint = new TerminalEntry(appender, aligner, ()=>renderingOptions.CellSpacing,()=> 100.0f);
             aligner.RowAdded += (sender, args) => cellEntryRenderArea.AddCellRange(args.Row, args.RowIndex);
             aligner.Cleared += (sender, args) => cellEntryRenderArea.Clear();


Cleanup implementation of CreateRepository

--- GitAspx/Lib/RepositoryService.cs
+++ GitAspx/Lib/RepositoryService.cs
@@ -21,7 +21,6 @@
 namespace GitAspx.Lib {
 	using System.Collections.Generic;
 	using System.IO;
-	using GitSharp.Commands;
 	using System.Linq;

 	public class RepositoryService {
@@ -60,12 +59,9 @@
 			if (!Directory.Exists(directory)) {
 				Directory.CreateDirectory(directory);

-				var cmd = new InitCommand {
-					GitDirectory = directory,
-					Quiet = false,
-					Bare = true
-				};
-				cmd.Execute();
+				using(var repository = new GitSharp.Core.Repository(new DirectoryInfo(directory))) {
+					repository.Create(true);
+				}
 			}
 		}
 	}


ResponseStream

ResponseStream

--- websocket-sharp.clone/Net/ResponseStream.cs
+++ websocket-sharp.clone/Net/ResponseStream.cs
@@ -49,87 +49,51 @@
 	// what if we don't set content-length at all?
 	internal class ResponseStream : Stream
 	{
-		#region Private Static Fields
-
-		private static byte[] _crlf = new byte[] { 13, 10 };
-
-		#endregion
-
-		#region Private Fields
-
-		private bool _disposed;
+	    private static byte[] _crlf = new byte[] { 13, 10 };
+
+	    private bool _disposed;
 		private bool _ignoreErrors;
 		private HttpListenerResponse _response;
 		private Stream _stream;
 		private bool _trailerSent;

-		#endregion
-
-		#region Internal Constructors
-
-		internal ResponseStream(Stream stream, HttpListenerResponse response, bool ignoreErrors)
+	    internal ResponseStream(Stream stream, HttpListenerResponse response, bool ignoreErrors)
 		{
 			_stream = stream;
 			_response = response;
 			_ignoreErrors = ignoreErrors;
 		}

-		#endregion
-
-		#region Public Properties
-
-		public override bool CanRead
+	    public override bool CanRead { get; } = false;
+
+	    public override bool CanSeek { get; } = false;
+
+	    public override bool CanWrite { get; } = true;
+
+	    public override long Length
 		{
 			get
 			{
-				return false;
-			}
-		}
-
-		public override bool CanSeek
+				throw new NotSupportedException();
+			}
+		}
+
+		public override long Position
 		{
 			get
 			{
-				return false;
-			}
-		}
-
-		public override bool CanWrite
-		{
-			get
-			{
-				return true;
-			}
-		}
-
-		public override long Length
-		{
-			get
-			{
 				throw new NotSupportedException();
 			}
-		}
-
-		public override long Position
-		{
-			get
+
+			set
 			{
 				throw new NotSupportedException();
 			}
-
-			set
-			{
-				throw new NotSupportedException();
-			}
-		}
-
-		#endregion
-
-		#region Private Methods
-
-		private static byte[] getChunkSizeBytes(int size, bool final)
-		{
-			return Encoding.ASCII.GetBytes(string.Format("{0:x}\r\n{1}", size, final ? "\r\n" : ""));
+		}
+
+	    private static byte[] getChunkSizeBytes(int size, bool final)
+		{
+			return Encoding.ASCII.GetBytes($"{size:x}\r\n{(final ? "\r\n" : "")}");
 		}

 		private MemoryStream getHeaders(bool closing)
@@ -143,11 +107,7 @@
 			return stream;
 		}

-		#endregion
-
-		#region Internal Methods
-
-		internal void WriteInternally(byte[] buffer, int offset, int count)
+	    internal void WriteInternally(byte[] buffer, int offset, int count)
 		{
 			if (_ignoreErrors)
 			{
@@ -165,11 +125,7 @@
 			}
 		}

-		#endregion
-
-		#region Public Methods
-
-		public override IAsyncResult BeginRead(
+	    public override IAsyncResult BeginRead(
 		  byte[] buffer, int offset, int count, AsyncCallback callback, object state)
 		{
 			throw new NotSupportedException();
@@ -183,7 +139,7 @@

 			var headers = getHeaders(false);
 			var chunked = _response.SendChunked;
-			byte[] bytes = null;
+			byte[] bytes;
 			if (headers != null)
 			{
 				using (headers)
@@ -220,7 +176,7 @@

 			var headers = getHeaders(true);
 			var chunked = _response.SendChunked;
-			byte[] bytes = null;
+			byte[] bytes;
 			if (headers != null)
 			{
 				using (headers)
@@ -307,7 +263,7 @@

 			var headers = getHeaders(false);
 			var chunked = _response.SendChunked;
-			byte[] bytes = null;
+			byte[] bytes;
 			if (headers != null)
 			{
 				// After the possible preamble for the encoding.
@@ -340,7 +296,5 @@
 			if (chunked)
 				WriteInternally(_crlf, 0, 2);
 		}
-
-		#endregion
 	}
 }


Trim trailing slashes

Trim trailing slashes

--- csharp/Program.cs
+++ csharp/Program.cs
@@ -71,7 +71,19 @@
                     printHelp();
                     return;
                 }
-                uploadFolder(args[1], args[2]);
+
+                /* trim trailing slashes */
+                string sDir;
+                if (args[1].EndsWith("\\"))
+                {
+                    sDir = args[1].Substring(0, args[1].Length - 1);
+                }
+                else
+                {
+                    sDir = args[1];
+                }
+
+                uploadFolder(sDir, args[2]);
             }
             else
             {


Minor fixes

Minor fixes

--- Hermod/HTTP/Server/HTTPServer.cs
+++ Hermod/HTTP/Server/HTTPServer.cs
@@ -69,20 +69,6 @@
             get
             {
                 return _DefaultServerName;
-            }
-        }
-
-        #endregion
-
-        #region HTTPRoot
-
-        private readonly String _HTTPRoot;
-
-        public String HTTPRoot
-        {
-            get
-            {
-                return _HTTPRoot;
             }
         }

@@ -216,7 +202,6 @@
         {

             this._DefaultServerName                = DefaultServerName;
-            this._HTTPRoot                         = HTTPRoot;
             this._URIMapping                       = new URIMapping();
             this._CallingAssemblies                = new List<Assembly>() { Assembly.GetExecutingAssembly(), typeof(HTTPServer).Assembly };


More robust type conversion

More robust type conversion

--- Jot/Configuration/TrackingConfiguration.cs
+++ Jot/Configuration/TrackingConfiguration.cs
@@ -135,10 +135,16 @@
             else
             {
                 var typeOfValue = value.GetType();
-
+
                 // This can happen if we're trying to write an Int64 to an Int32 property (in case of overflow it will throw).
                 if (typeOfValue != pi.PropertyType && !pi.PropertyType.IsAssignableFrom(typeOfValue))
-                    valueToWrite = Convert.ChangeType(value, pi.PropertyType);
+                {
+                    var converter = TypeDescriptor.GetConverter(pi.PropertyType);
+                    if(converter.CanConvertFrom(typeOfValue))
+                        valueToWrite = converter.ConvertFrom(value);
+                    else
+                        valueToWrite = Convert.ChangeType(value, pi.PropertyType);
+                }
             }
             pi.SetValue(target, valueToWrite);
         }