public string BuffString(ClientBuff buff) { string text = RegexFunctions.SeperateCamelCase(buff.Type.ToString()) + "\n"; bool overridestats = false; switch (buff.Type) { case BuffType.GameMaster: GMOptions options = (GMOptions)buff.Values[0]; if (options.HasFlag(GMOptions.GameMaster)) { text += "-Invisible\n"; } if (options.HasFlag(GMOptions.Superman)) { text += "-Superman\n"; } if (options.HasFlag(GMOptions.Observer)) { text += "-Observer\n"; } break; case BuffType.MentalState: switch (buff.Values[0]) { case 0: text += "Agressive (Full damage)\nCan't shoot over walls.\n"; break; case 1: text += "Trick shot (Minimal damage)\nCan shoot over walls.\n"; break; case 2: text += "Group Mode (Medium damage)\nDon't steal agro.\n"; break; } break; case BuffType.Hiding: case BuffType.ClearRing: text += "Invisible to many monsters.\n"; break; case BuffType.MoonLight: text += "Invisible to players and many\nmonsters when at a distance.\n"; break; case BuffType.EnergyShield: overridestats = true; text += string.Format("{0}% chance to gain {1} HP when attacked.\n", buff.Stats[Stat.EnergyShieldPercent], buff.Stats[Stat.EnergyShieldHPGain]); break; case BuffType.DarkBody: text += "Invisible to many monsters and able to move.\n"; break; case BuffType.VampireShot: text += "Gives you a vampiric ability\nthat can be released with\ncertain skills.\n"; break; case BuffType.PoisonShot: text += "Gives you a poison ability\nthat can be released with\ncertain skills.\n"; break; case BuffType.Concentration: text += "Increases chance on element extraction.\n"; break; case BuffType.MagicBooster: overridestats = true; text = string.Format("Increases MC by: {0}-{1}.\nIncreases consumption by {2}%.\n", buff.Stats[Stat.MinMC], buff.Stats[Stat.MaxMC], buff.Stats[Stat.ManaPenaltyPercent]); break; case BuffType.Transform: text = "Disguises your appearance.\n"; break; case BuffType.Mentee: text = "Learn skill points twice as quick.\n"; break; case BuffType.Guild: text += GameScene.Scene.GuildDialog.ActiveStats; break; } if (!overridestats) { foreach (var val in buff.Stats.Values) { var c = val.Value < 0 ? "Decreases" : "Increases"; var key = val.Key.ToString(); var strKey = RegexFunctions.SeperateCamelCase(key.Replace("Rate", "").Replace("Multiplier", "").Replace("Percent", "")); var sign = ""; if (key.Contains("Percent")) { sign = "%"; } else if (key.Contains("Multiplier")) { sign = "x"; } var txt = $"{c} {strKey} by: {val.Value}{sign}.\n"; text += txt; } } text += buff.Infinite ? GameLanguage.ExpireNever : string.Format(GameLanguage.Expire, Functions.PrintTimeSpanFromSeconds(Math.Round((buff.ExpireTime - CMain.Time) / 1000D))); if (!string.IsNullOrEmpty(buff.Caster)) { text += string.Format("\nCaster: {0}", buff.Caster); } return(text); }
private void Load_Options(ProjectReader reader) { Options = new GMOptions(reader); }
public static void WriteOptions(ProjectWriter main_writer, GMOptions go) { main_writer.Write(go.FormatVersion); var stream = new MemoryStream(); var writer = new ProjectWriter(stream); writer.Write(go.StartInFullscreen); writer.Write(go.InterpolatePixels); writer.Write(go.DontDrawBorder); writer.Write(go.DisplayCursor); writer.Write(go.Scaling); writer.Write(go.AllowWindowResize); writer.Write(go.AlwaysOnTop); writer.Write(go.OutsideRoom); writer.Write(go.SetResolution); writer.Write((int)go.ColorDepth); writer.Write((int)go.ScreenResolution); writer.Write((int)go.Frequency); writer.Write(go.Borderless); uint vsync = go.VSync ? 1U : 0U; if (go.SoftwareVertex) { vsync |= 0x80000000; } writer.Write(vsync); writer.Write(go.DisableScreensavers); writer.Write(go.LetF4Fullscreen); writer.Write(go.LetF1GameInfo); writer.Write(go.LetESCEndGame); writer.Write(go.LetF5F6SaveLoad); writer.Write(go.LetF9Screenshot); writer.Write(go.TreatCloseAsESC); writer.Write((int)go.Priority); writer.Write(go.FreezeWhenFocusLost); writer.Write((int)go.LoadingBarMode); string AppDir = AppDomain.CurrentDomain.BaseDirectory; if (go.LoadingBarMode == GMOptions.ProgBars.BAR_CUSTOM) { writer.Write(go.BackLoadingBar); writer.Write(go.FrontLoadingBar); } else if (go.LoadingBarMode == GMOptions.ProgBars.BAR_DEFAULT) { string back = Path.Combine(AppDir, "back.png"); if (File.Exists(back)) { Image defBack = Image.FromFile(back); writer.Write(defBack); defBack.Dispose(); } string front = Path.Combine(AppDir, "front.png"); if (File.Exists(front)) { Image defFront = Image.FromFile(front); writer.Write(defFront); defFront.Dispose(); } } if (go.ShowCustomLoadImage && go.LoadingImage != null) { writer.Write(go.LoadingImage); } else { string load = Path.Combine(AppDir, "load.png"); if (File.Exists(load)) { Image defLoad = Image.FromFile(load); writer.Write(defLoad); defLoad.Dispose(); } else { writer.Write(false); } } writer.Write(go.LoadimgImagePartTransparent); writer.Write(go.LoadImageAlpha); writer.Write(go.ScaleProgressBar); writer.Write(go.DisplayErrors); writer.Write(go.WriteToLog); writer.Write(go.AbortOnAllErrors); writer.Write(go.TreatUninitAsZero); main_writer.WriteZlibChunk(writer); stream.Dispose(); writer.Dispose(); }
public override string ToString() { string text = string.Empty; switch (Type) { //magic case BuffType.TemporalFlux: text = string.Format(CMain.Tr("Temporal Flux\nIncreases cost of next Teleport by: {0} MP.\n"), (int)(MapObject.User.MaxMP * 0.3F)); break; case BuffType.Hiding: text = CMain.Tr("Hiding\nInvisible to many monsters.\n"); break; case BuffType.Haste: text = string.Format(CMain.Tr("Haste\nIncreases Attack Speed by: {0}.\n"), Values[0]); break; case BuffType.SwiftFeet: text = string.Format(CMain.Tr("Swift Feet\nIncreases Move Speed by: {0}.\n"), Values[0]); break; case BuffType.Fury: text = string.Format(CMain.Tr("Fury\nIncreases Attack Speed by: {0}.\n"), Values[0]); break; case BuffType.LightBody: text = string.Format(CMain.Tr("Light Body\nIncreases Agility by: {0}.\n"), Values[0]); break; case BuffType.SoulShield: text = string.Format(CMain.Tr("Soul Shield\nIncreases MAC by: 0-{0}.\n"), Values[0]); break; case BuffType.BlessedArmour: text = string.Format(CMain.Tr("Blessed Armour\nIncreases AC by: 0-{0}.\n"), Values[0]); break; case BuffType.ProtectionField: text = string.Format(CMain.Tr("Protection Field\nIncreases AC by: 0-{0}.\n"), Values[0]); break; case BuffType.Rage: text = string.Format(CMain.Tr("Rage\nIncreases DC by: 0-{0}.\n"), Values[0]); break; case BuffType.ImmortalSkin: text = string.Format(CMain.Tr("ImmortalSkin\nIncreases AC by: 0-{0}.\nDecreases DC by: 0-{1}.\n"), Values[0], Values[1]); break; case BuffType.CounterAttack: text = string.Format(CMain.Tr("Counter Attack\nIncreases AC/MAC by: {0}-{1}.\n"), Values[0], Values[0]); break; case BuffType.UltimateEnhancer: if (GameScene.User.Class == MirClass.Wizard || GameScene.User.Class == MirClass.Archer) { text = string.Format(CMain.Tr("Ultimate Enhancer\nIncreases MC by: 0-{0}.\n"), Values[0]); } else if (GameScene.User.Class == MirClass.Taoist) { text = string.Format(CMain.Tr("Ultimate Enhancer\nIncreases SC by: 0-{0}.\n"), Values[0]); } else { text = string.Format(CMain.Tr("Ultimate Enhancer\nIncreases DC by: 0-{0}.\n"), Values[0]); } break; case BuffType.EnergyShield: text = string.Format(CMain.Tr("Energy Shield\n{0}% chance to gain {1} HP when attacked\n"), Math.Round((1 / (decimal)Values[0]) * 100), Values[1]); break; case BuffType.Curse: text = string.Format(CMain.Tr("Cursed\nDecreases DC/MC/SC/ASpeed by: {0}%.\n"), Values[0]); break; case BuffType.MoonLight: text = CMain.Tr("Moon Light\nInvisible to players and many\nmonsters when at a distance.\n"); break; case BuffType.DarkBody: text = CMain.Tr("Dark Body\nInvisible to many monsters and able to move.\n"); break; case BuffType.VampireShot: text = string.Format(CMain.Tr("Vampire Shot\nGives you a vampiric ability\nthat can be released with\ncertain skills.\n"), Values[0]); break; case BuffType.PoisonShot: text = string.Format(CMain.Tr("Poison Shot\nGives you a poison ability\nthat can be released with\ncertain skills.\n"), Values[0]); break; case BuffType.Concentration: text = CMain.Tr("Concentrating\nIncreases chance on element extraction.\n"); break; case BuffType.MentalState: switch (Values[0]) { case 0: text = string.Format(CMain.Tr("Agressive (Full damage)\nCan't shoot over walls.\n"), Values[0]); break; case 1: text = string.Format(CMain.Tr("Trick shot (Minimal damage)\nCan shoot over walls.\n"), Values[0]); break; case 2: text = string.Format(CMain.Tr("Group Mode (Medium damage)\nDon't steal agro.\n"), Values[0]); break; } break; case BuffType.MagicBooster: text = string.Format(CMain.Tr("Magic Booster\nIncreases MC by: {0}-{0}.\nIncreases consumption by {1}%.\n"), Values[0], Values[1]); break; case BuffType.MagicShield: text = string.Format(CMain.Tr("Magic Shield\nReduces damage by {0}%.\n"), (Values[0] + 2) * 10); break; //special case BuffType.GameMaster: GMOptions options = (GMOptions)Values[0]; text = CMain.Tr("GameMaster\n"); if (options.HasFlag(GMOptions.GameMaster)) { text += CMain.Tr("-Invisible\n"); } if (options.HasFlag(GMOptions.Superman)) { text += CMain.Tr("-Superman\n"); } if (options.HasFlag(GMOptions.Observer)) { text += CMain.Tr("-Observer\n"); } break; case BuffType.General: text = string.Format(CMain.Tr("Mirian Advantage\nExpRate increased by {0}%\n"), Values[0]); if (Values.Length > 1) { text += string.Format(CMain.Tr("DropRate increased by {0}%\n"), Values[1]); } if (Values.Length > 2) { text += string.Format(CMain.Tr("GoldRate increased by {0}%\n"), Values[2]); } break; case BuffType.Exp: text = string.Format(CMain.Tr("Exp Rate\nIncreased by {0}%\n"), Values[0]); break; case BuffType.Gold: text = string.Format(CMain.Tr("Gold Rate\nIncreased by {0}%\n"), Values[0]); break; case BuffType.Drop: text = string.Format(CMain.Tr("Drop Rate\nIncreased by {0}%\n"), Values[0]); break; case BuffType.BagWeight: text = string.Format(CMain.Tr("Bag Weight\nIncreases BagWeight by: {0}.\n"), Values[0]); break; case BuffType.Transform: text = string.Format(CMain.Tr("Transform\nDisguises your appearance.\n")); break; case BuffType.RelationshipEXP: text = string.Format(CMain.Tr("Love is in the Air\nExpRate increased by: {0}%.\n"), Values[0]); break; case BuffType.Mentee: text = string.Format(CMain.Tr("In Training\nLearn skill points twice as quick.\nExpRate increased by: {0}%.\n"), Values[0]); break; case BuffType.Mentor: text = string.Format(CMain.Tr("Mentorship Empowerment\nDamage to monsters increased by {0}%.\n"), Values[0]); break; case BuffType.Guild: text = string.Format(CMain.Tr("Guild Charge\n")); text += GameScene.Scene.GuildDialog.ActiveStats; break; case BuffType.Rested: text = string.Format(CMain.Tr("Rested\nIncreases Exp Rate by {0}%\n"), Values[0]); break; //stats case BuffType.Impact: text = string.Format(CMain.Tr("Impact\nIncreases DC by: 0-{0}.\n"), Values[0]); break; case BuffType.Magic: text = string.Format(CMain.Tr("Magic\nIncreases MC by: 0-{0}.\n"), Values[0]); break; case BuffType.Taoist: text = string.Format(CMain.Tr("Taoist\nIncreases SC by: 0-{0}.\n"), Values[0]); break; case BuffType.Storm: text = string.Format(CMain.Tr("Storm\nIncreases A.Speed by: {0}.\n"), Values[0]); break; case BuffType.HealthAid: text = string.Format(CMain.Tr("Health Aid\nIncreases HP by: {0}.\n"), Values[0]); break; case BuffType.ManaAid: text = string.Format(CMain.Tr("Mana Aid\nIncreases MP by: {0}.\n"), Values[0]); break; case BuffType.Defence: text = string.Format(CMain.Tr("Defence\nIncreases Max AC by: {0}-{0}.\n"), Values[0]); break; case BuffType.MagicDefence: text = string.Format(CMain.Tr("Magic Defence\nIncreases Max MAC by: {0}-{0}.\n"), Values[0]); break; case BuffType.WonderDrug: text = string.Format(CMain.Tr("Wonder Drug\n")); switch (Values[0]) { case 0: text += string.Format(CMain.Tr("Increases Exp Rate by {0}%\n"), Values[1]); break; case 1: text += string.Format(CMain.Tr("Increases Drop Rate by {0}%\n"), Values[1]); break; case 2: text += string.Format(CMain.Tr("Increases HP by: {0}.\n"), Values[1]); break; case 3: text += string.Format(CMain.Tr("Increases MP by: {0}.\n"), Values[1]); break; case 4: text += string.Format(CMain.Tr("Increases Max AC by: {0}-{0}.\n"), Values[1]); break; case 5: text += string.Format(CMain.Tr("Increases Max MAC by: {0}-{0}.\n"), Values[1]); break; case 6: text += string.Format(CMain.Tr("Increases A.Speed by: {0}.\n"), Values[1]); break; } break; case BuffType.Knapsack: text = string.Format(CMain.Tr("Knapsack\nIncreases BagWeight by: {0}.\n"), Values[0]); break; } text += string.Format(CMain.Tr("Expire: {0}"), Infinite ? CMain.Tr("Never") : Functions.PrintTimeSpanFromSeconds(Math.Round((Expire - CMain.Time) / 1000D))); if (Caster.Length > 0) { text += string.Format(CMain.Tr("\nCaster: {0}"), Caster); } return(text); }