public static void ShowList() { Console.Clear(); UpdateList(); int count = 0; foreach (Achievement ach in achList) { if (ach.Checker()) { count++; RPG.Dialogue("\n" + ach.Title, true, ach.Color); Console.WriteLine(ach.Description); } else { RPG.Dialogue("\n" + ach.Title, true, ConsoleColor.Red); } } Console.WriteLine("\n" + count + "/" + achList.Count + " достижений получено."); Console.ReadKey(); }
static void Main(string[] args) { Game game; // Menggunakan Abstract Class game = new FPS(); game.Kategori(); Console.WriteLine(); game = new RPG(); game.Kategori(); Console.WriteLine(); game = new RTS(); game.Kategori(); /*IGame game; // Menggunakan Abstract Class * game = new FPS(); * game.Kategori(); * * Console.WriteLine(); * game = new RPG(); * game.Kategori(); * * Console.WriteLine(); * game = new RTS(); * game.Kategori()*/ Console.ReadKey(); }
static public void Init(Monster[] _monsters, bool _boss = false) { Reset(); boss = _boss; monsters = _monsters; amount = monsters.Length; if (amount == 1) { RPG.Dialogue($"{GetTypeName(monsters[0].Type)} {monsters[0].Name}!" + $"\nУ него: {monsters[0].HP} HP" + $"\nи {monsters[0].Damage} Урона.", false, ConsoleColor.Red); // Вывод строки красного цвета о начале схватки } else { RPG.Dialogue("Монстры!"); for (int i = 0; i < amount; i++) { RPG.Dialogue($"\n{i}: {GetTypeName(monsters[i].Type)} {monsters[i].Name}!" + $"\nУ него: {monsters[i].HP} HP" + $"\nи {monsters[i].Damage} Урона.", false, ConsoleColor.Red); } } MonsterFight(); }
private static void GetHigh(Skill skill) { var rng = Random.Range(0, 100); SkillEventHandler.Do(x => { Function.Call(Hash.SET_TIME_SCALE, rng < 80 ? 0.4f : 0.2f); Function.Call(Hash.SET_TIMECYCLE_MODIFIER, rng < 80 ? "phone_cam6" : "phone_cam7"); var slowTime = skill.GetIntParam("Slow Time"); if (rng > 80) { RPG.Notify(Notification.Danger("Unlucky, what a hit! HP Lost")); if (Game.Player.Character.Health > 10) { Game.Player.Character.Health -= 10; } else { Game.Player.Character.Health = 5; } } SkillEventHandler.Wait(slowTime); Function.Call(Hash.SET_TIME_SCALE, 1f); Function.Call(Hash.SET_TIMECYCLE_MODIFIER, ""); }); }
public void Unlock() { if (RPG.PlayerData.SkillExp >= PointsToUnlock) { RPG.PlayerData.SkillExp -= PointsToUnlock; Unlocked = true; RPG.GetPopup <SkillUnlocked>().Show(this); CoolDownTimer.Current = CoolDownTimer.CoolDownMsTime; var slots = RPG.SkillHandler.Slots; if (slots[2].IsEmpty) { slots[2].Set(Name, true); } else { for (int i = 0; i < slots.Length; i++) { var slot = slots[i]; if (slot.IsEmpty) { slot.Set(Name, true); break; } } } } }
public static void ShowMenu() { Console.Clear(); if (index == 0) { RPG.Dialogue($"[{newfile}]", true); } else { RPG.Dialogue($"{newfile}", true); } for (int i = 1; i < Player.subDirs.Length + 1; i++) { if (i == index) { RPG.Dialogue($"[{Player.subDirs[i - 1]}]", true); } else { RPG.Dialogue($" {Player.subDirs[i - 1]} ", true); } } Console.WriteLine("W,S - Переместить выделение, E - Выбрать пункт меню, Q - Выйти"); MenuControls(); }
public static void Migrate(string dataVersion, string version) { switch (dataVersion) { case "0.1": Migrate_v010_To_v014(); break; case "0.1.1": case "0.1.2": case "0.1.3": case "0.1.4": case "0.1.5": case "0.1.6": case "0.1.7": case "0.1.8": case "0.1.9": case "0.1.10": case "0.1.11": case "0.1.12": FixTutorial(); FixWeapons(); break; } if (dataVersion != version) { RPG.GetPopup <PatchNotes>().Show(); } RPG.PlayerData.Version = RPG.Version; }
public void Unlock() { if (RPG.PlayerData.SkillExp >= PointsToUnlock && RPG.PlayerData.Level >= LevelToUnlock) { RPG.PlayerData.SkillExp -= PointsToUnlock; Unlocked = true; RPG.GetPopup <WeaponUnlocked>().Show(this); EventHandler.Do(o => { Game.Player.Character.Weapons.Give(WeaponHash, 0, false, false); Script.Wait(150); Game.Player.Character.Weapons[WeaponHash].Ammo = 100; }); } else { if (RPG.PlayerData.SkillExp < PointsToUnlock) { RPG.Notify("Not enough SP"); } else if (RPG.PlayerData.Level < LevelToUnlock) { RPG.Notify("Requires Level " + LevelToUnlock); } } }
protected override void OnPopup(UIContainer popup, object[] args) { RPG.GetPopup <QuestStarted>().Hide(); var quest = (Quest)args[0]; popup.Size = new Size(UI.WIDTH, 115); var extra = quest.AdditionalRewards.Count; if (extra > 0) { popup.Size = new Size(popup.Size.Width, popup.Size.Height + extra * 20); } popup.Position = new Point(0, UI.HEIGHT / 2 - 50); var completedText = quest.IsContract ? "Contract complete" : "Quest complete"; var color = quest.IsContract ? Color.FromArgb(150, 180, 180, 180) : Color.FromArgb(150, 255, 180, 0); popup.Color = color; popup.Items.Add(new UIText(completedText, new Point(UI.WIDTH / 2, 0), 0.5f, Color.White, 0, true)); popup.Items.Add(new UIText("- " + quest.Name + " -", new Point(UI.WIDTH / 2, 15), 1.4f, Color.White, 0, true)); popup.Items.Add(new UIText("- " + quest.GetBasicRewardString() + " -", new Point(UI.WIDTH / 2, 80), 0.25f, Color.White, 0, true)); var point = 110; for (int index = 0; index < quest.AdditionalRewards.Count; index++) { var reward = quest.AdditionalRewards[index]; popup.Items.Add(new UIText("- " + reward.GetRewardString() + " -", new Point(UI.WIDTH / 2, point + (index * 15)), 0.24f, Color.White, 0, true)); } }
static void Main(string[] args) { Console.Title = "WELCOME TO SHIPMENT"; Console.WriteLine("May you survive the map...\n"); int score = 0; Weapon fireShotgun = new Weapon(1, 15, "Fire Shotgun", 5, false); Player player = new Player("Paw KC", 50, 5, 50, 50, Name.AlexMason, fireShotgun); bool exit = false; do { Console.WriteLine(GetMap()); RPG r1 = new RPG(); RPG r2 = new RPG("Game Wrecker", 40, 40, 50, 15, 1, 10, "The guys have RPG's, everyone stay in spawn...", true); RPG[] rpgs = { r1, r2, r2, r1, r1 }; Random rand = new Random(); int randNbr = rand.Next(rpgs.Length); RPG rpg = rpgs[randNbr]; Console.WriteLine("\nOn the map: " + rpg.Name); } while (!exit); Console.WriteLine("You've defeated " + score + " enemy" + ((score == 1)? "." : "s.")); } //end Main()
public static void ShowMenu() { Console.Clear(); Console.WriteLine($"Текущее оружие: {Player.Inventory[0].GetName()} ({Player.Inventory[0].LVL} УР)" + $"\n{Player.Inventory[0].Description}" + $"\nУрон: {Player.Inventory[0].baseDamage} АТК"); Console.WriteLine($"\nТекущая броня: {Player.Inventory[1].GetName()} ({Player.Inventory[1].LVL} УР)" + $"\n{Player.Inventory[1].Description}" + $"\nЗащита: {Player.Inventory[1].Defence} ЗАЩ"); Console.WriteLine($"\nТекущий предмет: {Player.Inventory[2].GetName()}" + $"\n{Player.Inventory[2].Description}"); Console.WriteLine("\n"); for (int i = 0; i < Player.Passive_Inventory.Length; i++) { if (i == index) { RPG.Dialogue($"[{Player.Passive_Inventory[i].GetName()}] - {Player.Passive_Inventory[i].Description} (УР: {Player.Passive_Inventory[i].LVL})", true, Player.Passive_Inventory[i].Colour); } else { RPG.Dialogue($" {Player.Passive_Inventory[i].GetName()} ", true, Player.Passive_Inventory[i].Colour); } } Console.WriteLine("W,S - Выбрать предмет, E - Экипировать предмет, Q - Выйти"); MenuControls(); }
public void RPGToevoegenEnVervolgensVerwijderen() { var options = DBContextGenerator(); //Arrange using (var context = new RPGContext(options)) { RPGRepositoryEFDB RPGRepo = new RPGRepositoryEFDB(context); RPG RPG = new RPG { RPGSysteem = RPGSystemen.MistbornAdventureGame }; //Act RPGRepo.Insert(new RPG()); } using (var context = new RPGContext(options)) { RPGRepositoryEFDB RPGRepo = new RPGRepositoryEFDB(context); List <RPG> RPGs = (List <RPG>)RPGRepo.FindBy(t => t.RPGSysteem == RPGSystemen.MistbornAdventureGame); List <RPG> RPGs2 = (List <RPG>)RPGRepo.FindAll(); //Assert Assert.AreEqual(0, RPGs.Count()); } }
public void LoadLevel(string levelName, bool updatePlayerLevel, bool saveCurrentPlayer, WorldArea worldArea = null, Location location = null) { if (RPG.LoadLevel(levelName, updatePlayerLevel, saveCurrentPlayer, worldArea, location)) { GetObject.AudioPlayer.StartAudio(); InitialiseLevel(); } }
// 250 DPS. Rockets deal 100 + splash damage. public override Gun spawn(float rarity) { RPG r = new RPG(); r.capacity = 1; r.reloadtime = 1; return(r); }
public static void LetsGo() { #region Install Error Manager, and the global engine! NALACore.Core.Window.Title = SBubble.Title; #endregion #region The base MonoGame stuff SBubble.AddInit(delegate(string v) { SBubble.State(v).DoString($"function {FlowManager.NOTHING}() end", "Alright move along, nothing to see here!"); }); SBubble.AddInit(BubbleConsole.StateInit); SBubble.AddInit(BubbleGraphics.InitGraphics); SBubble.AddInit(Bubble_Audio.Init); SBubble.AddInit(APIFlow.Init); SBubble.AddInit(BubbleSuperGlobal.Init); SBubble.AddInit(Bubble_Input.Init); SBubble.AddInit(Bubble_Save.Init); SBubble.AddInit(Bubble_Conf.Init); SBubble.AddInit(Bubble_GameJolt.Init); SBubble.AddInit(BubbleTimer.Init); SBubble.AddInit(Bubble_Swap.Init); #endregion #region Extras to use in savegames Bubble_Save.SaveXtra["RPGPARTY"] = delegate(UseJCR6.TJCRCreate j, string dir) { RPG.RPGSave(j, $"XTRA/{dir}"); }; Bubble_Save.LoadXtra["RPGPARTY"] = delegate(UseJCR6.TJCRDIR j, string dir) { RPG.RPGLoad(j, $"XTRA/{dir}"); return(true); }; Bubble_Save.SaveXtra["SWAP"] = Bubble_Swap.SwapSave; Bubble_Save.LoadXtra["SWAP"] = Bubble_Swap.SwapLoad; #endregion #region The stuff needed for NALA in particular // Own APIs for NIL and Lua //SBubble.AddInit(MapScriptAPI.API_Init); SBubble.AddInit(RPG_API.Init); // Kthura Init Kthura.SetDefaultTextureJCR(SBubble.JCR); // Textures are all in the same project KthuraDraw.DrawDriver = new KthuraDrawMonoGame(); // Tell Kthura to use the MonoGame Driver to display the map KthuraDrawMonoGame.CrashOnNoTex = delegate(string msg) { SBubble.MyError("Kthura Texture Error", msg, ""); }; // SBubble Kthura API SBubble.AddInit(KthuraBubble.KthuraBubble.Init); SBubble.AddInit(KthuraBubble.KthBlockAPI.Init); SBubble.AddInit(KthuraBubble.KthuraAbyssGenerator.Init); // TODO: API for TeddyBear // TODO: API for Swap Data Manager // TODO: API for RPGStat RPG.JCRSTORAGE = "lzma"; #endregion // Start init script FlowManager.StartInitFlow(); }
static void MenuControls() { Item buffer; ConsoleKey key = Console.ReadKey().Key; switch (key) { case ConsoleKey.E: buffer = Player.Passive_Inventory[index]; switch (Player.Passive_Inventory[index].IType) { case Item.Type.Armour: Player.Passive_Inventory[index] = Player.Inventory[1]; Player.Inventory[1] = buffer; break; case Item.Type.Weapon: Player.Passive_Inventory[index] = Player.Inventory[0]; Player.Inventory[0] = buffer; break; case Item.Type.Item: Player.Passive_Inventory[index] = Player.Inventory[2]; Player.Inventory[2] = buffer; break; default: RPG.Dialogue("Нельзя экипировать."); break; } goto default; case ConsoleKey.Q: break; case ConsoleKey.S: if (index < Player.Passive_Inventory.Length - 1) { index++; } goto default; case ConsoleKey.W: if (index > 0) { index--; } goto default; default: ShowMenu(); break; } }
// END CUT HERE // BEGIN CUT HERE public static void Main() { try { RPG ___test = new RPG(); ___test.run_test(-1); } catch(Exception e) { //Console.WriteLine(e.StackTrace); Console.WriteLine(e.ToString()); } }
// END CUT HERE // BEGIN CUT HERE public static void Main() { try { RPG ___test = new RPG(); ___test.run_test(-1); } catch (Exception e) { //Console.WriteLine(e.StackTrace); Console.WriteLine(e.ToString()); } }
public override void Show(params object[] args) { var qc = RPG.GetPopup <QuestStarted>(); while (qc.Showing) { Wait(0); } base.Show(args); }
void OnTriggerEnter(Collider other) { if (other.tag == "Player") { if (flagPrereq == "" || RPG.GetBool(flagPrereq)) // the prequisit is done { RPG.SetFlag(flagName, flagValue); Destroy(this); } } }
void OnTriggerEnter(Collider other) { if (other.tag == "Player") { RPG.KillPlayer(message); // kill them } if (other.tag == "Enemy") { Destroy(other.gameObject); // kill it } }
public static void UseSkill(Skill skill) { if (!skill.Unlocked) { RPG.Notify(Notification.Alert("You have not unlocked this skill.")); return; } skill.Use(skill); //Cooldowns, mana use etc }
public void Use(Skill obj) { if (CoolDownTimer.Usable) { SkillRepository.GetAction(Name).Invoke(obj); CoolDownTimer.Reset(); } else { var secs = CoolDownTimer.SecondsRemaining.ToString("0.0"); RPG.Notify("cannot use " + Name + " for " + secs + "s"); } }
public void Start(bool withPopup = true) { SetupConditions(); QuestRepository.GetStartAction(Name).Invoke(this); if (withPopup) { RPG.GetPopup <QuestStarted>().Show(this); } InProgress = true; }
public void addGun(int gunType) { if (PlayerData.Instance.gunList.Contains(gunType) == false) { PlayerData.Instance.addGun(gunType); } switch (gunType) { case (int)GunPickup.GunType.Pistol: Pistol pistol = new Pistol(this, firePoint, hitEffects[0], gunSounds[0], GetComponent <LineRenderer>(), gunAnimControllers[0], ejected_shell, ejectPt, gunicons[0]); gunList.Add(pistol); break; case (int)GunPickup.GunType.RPG: RPG rpg = new RPG(this, firePoint, hitEffects[0], bulletObjs[1], gunSounds[1], gunAnimControllers[2], gunicons[2]); gunList.Add(rpg); break; case (int)GunPickup.GunType.Shotgun: Shotgun shotgun = new Shotgun(this, firePoint, hitEffects[0], gunSounds[1], bulletObjs[3], gunAnimControllers[1], gunicons[1]); gunList.Add(shotgun); break; case (int)GunPickup.GunType.DualPistols: DualPistols dualPistols = new DualPistols(this, firePoint, DPLeftFirePoint, hitEffects[0], gunSounds[0], GetComponent <LineRenderer>(), dualPistolsLeftFirePoint, gunAnimControllers[3], ejected_shell, ejectPt, gunicons[3]); gunList.Add(dualPistols); break; case (int)GunPickup.GunType.RailGun: RailGun railgun = new RailGun(this, firePoint, hitEffects[0], bulletObjs[4], gunSounds[4], gunAnimControllers[4], gunicons[4]); gunList.Add(railgun); break; case (int)GunPickup.GunType.TVGun: TVGun tvgun = new TVGun(this, firePoint, hitEffects[0], bulletObjs[2], gunSounds[0], gunAnimControllers[5], gunicons[5]); gunList.Add(tvgun); break; case (int)GunPickup.GunType.ColtPython: PythonGun pythonGun = new PythonGun(this, firePoint, hitEffects[0], bulletObjs[5], gunSounds[0], gunAnimControllers[6], gunicons[6]); gunList.Add(pythonGun); break; } if (gunHUDSlots != null) { SetPlayerCurrentGun(currentGun); } playSound(gunSounds[6]); }
// Инициализация схватки static public void Init(int _amount = 1) { Reset(); amount = _amount; monsters = new Monster[amount]; for (int i = 0; i < amount; i++) { if (i == 0) { monsters[i] = new Monster { Type = (Monster.MType)RPG.rnd.Next(0, 7), } } ; else { monsters[i] = new Monster(LVL - 1) { Type = (Monster.MType)RPG.rnd.Next(0, 7), } }; } if (amount != 1) { RPG.Dialogue("Монстры!"); for (int i = 0; i < amount; i++) { monsters[i].HP *= (1 - 1 / (2 * amount)); monsters[i].Damage *= (1 - 1 / (2 * amount)); RPG.Dialogue($"\n{i}: {GetTypeName(monsters[i].Type)} {monsters[i].Name} (УР: {monsters[i].LVL})!" + "\nУ него: " + monsters[i].HP + " HP" + "\nи " + monsters[i].Damage + " Урона", false, ConsoleColor.Red); } } else { RPG.Dialogue(GetTypeName(monsters[0].Type) + $" {monsters[0].Name}!" + "\nУ него: " + monsters[0].HP + " HP" + "\nи " + monsters[0].Damage + " Урона", false, ConsoleColor.Red); // Вывод строки красного цвета о начале схватки } MonsterFight(); // Начать цикл схватки }
private void CreateAndSaveCharacter() { var classDef = Rm_RPGHandler.Instance.Player.CharacterDefinitions.First(c => c.ID == SaveCharacterID); var startingScene = classDef.StartingScene; var startingWorldArea = classDef.StartingWorldArea; var startingLocation = classDef.StartingLocation; var playerToCreate = new PlayerSave(SaveName, SaveClassID, SaveGenderID, SaveRaceID, SaveSubRaceID, SaveCharacterID, CharacterName.text, startingScene); playerToCreate.Initialize(); if (classDef.HasStartingPet) { var petDef = Rm_RPGHandler.Instance.Player.PetDefinitions.FirstOrDefault(p => p.ID == classDef.StartingPet); playerToCreate.CurrentPet = new PetData(petDef); } playerToCreate.WorldMap.CurrentWorldAreaID = startingWorldArea; playerToCreate.WorldMap.CurrentLocationID = startingLocation; if (classDef.StartAtWorldLocation) { var locationScene = Rm_RPGHandler.Instance.Customise.WorldMapLocations.First(w => w.ID == startingWorldArea).Locations. First(l => l.ID == startingLocation).SceneName; playerToCreate.CurrentScene = locationScene; } //Save MetaData foreach (var metaData in MetaDataValues) { var newMetaData = new MetaDataInfo(); newMetaData.ID = metaData.Key; newMetaData.ValueID = metaData.Value; playerToCreate.Character.MetaData.Add(newMetaData); } //Save visual customisations var allCustomisations = FindObjectsOfType <VisualCustomiser>(); var customisations = allCustomisations.Select(e => e.VisualCustomisation); playerToCreate.VisualCustomisations = GeneralMethods.CopyObject(customisations).ToList(); //Save and Load the player PlayerSaveLoadManager.Instance.Save(playerToCreate, true); RPG.LoadLevel(playerToCreate.CurrentScene, false, false); }
} // ChainClash #region Functions private static void GetTypeSpecAtk(Monster monster) // Получить специальную атаку типа монстра { double a = RPG.rnd.NextDouble(); switch (monster.Type) { case Monster.MType.Explosive: if (count == 4) { monster.Damage = (float)Math.Pow(2, LVL) / 1.5f; monster.HP = 0; RPG.Dialogue("Монстр подорвался.", true, ConsoleColor.DarkRed); } break; case Monster.MType.Thorned: if (a <= 1f / 4) { defenceMultiplier = 0f; RPG.Dialogue("Монстр выстрелил шип!", true, ConsoleColor.DarkRed); } break; case Monster.MType.Ice: if (a <= 1f / 20) { monster.isInvincible = true; monster.Damage = 0; RPG.Dialogue("Монстр поставил ледяной щит.", true, ConsoleColor.Cyan); } break; case Monster.MType.Luminous: if (a <= 3f / 10) { monster.Damage += monster.Damage / 5; RPG.Dialogue("Монстр использовал линзу!", true, ConsoleColor.White); } break; default: break; } }
void OnTriggerEnter(Collider other) { Debug.Log("trigger:" + other.name + " " + other.tag); if (other.tag == "Player") { if (flagPrereq == "" || RPG.GetBool(flagPrereq)) // the prequisit is done { // add quest to the main RPG & this destroy myself to stop muliple triggers GameObject rpg = GameObject.FindGameObjectWithTag("GameController"); // because unity will not allow add component by name // we now have an existing component attached & use its type to get the correct version // string=>Type never works for javascript behaviours rpg.AddComponent(questComponent.GetType()); // add this component to the quest system Destroy(this); } } }
public void Injure(int dmg, GameObject who) { RPG.InjurePlayer(dmg); RPG.FloatingTextAbove(transform, dmg.ToString(), Color.red, 2); RPGSounds.Instance.PlayHitSound(); if (who != null) { knockback.Knockback(who.transform.position, gameObject.transform.position, 10); /*Vector3 direction=(transform.position-who.transform.position); * direction.y=0; * direction.Normalize(); * direction.y=+1; * knockback.Knockback(direction*5); * Debug.Log("player kb:"+direction);*/ } }
public override void OnUse(Monster[] monsters, int index = 0) { Random rnd = new Random(); int potion = rnd.Next(1, 5); switch (potion) { // heal the player case 1: float recovHP = 10; if (Player.MaxHP - Player.HP > 10) { Player.HP += 10; } else { recovHP = Player.MaxHP - Player.HP; Player.HP = Player.MaxHP; } RPG.Dialogue($"Лечебное Зелье! (Восстановлено {recovHP})", true, ConsoleColor.Green); break; // damage all monsters case 2: foreach (Monster mnstr in monsters) { mnstr.HP -= 12; } RPG.Dialogue("Взрывное Зелье! (Всем монстрам было нанесено 12 урона)", true, ConsoleColor.Green); break; // damage a random monster case 3: int idx = rnd.Next(0, monsters.Length - 1); monsters[idx].HP -= 31 - 16 / (monsters[idx].LVL + 1); RPG.Dialogue($"Необычно Конкретное Зелье! (Монстру {idx+1} было нанесено {31 - 16 / (monsters[idx].LVL + 1)})", true, ConsoleColor.Green); break; // damage the player case 4: Player.HP -= 62 - 60 / (Player.LVL + 1); RPG.Dialogue($"Зелье Саботажа! (Вам было нанесено {62 - 60 / (Player.LVL + 1)} урона)", true, ConsoleColor.Red); break; } }
private void LoadNewMap(RPG.Map map) { _map = map; if (map == null) { Invalidate(); return; } _tileset = Project.Data.Tilesets[_map.tileset_id]; Size = new Size(MapPixelWidth, MapPixelHeight); _srcTexture = Cache.Tileset(_tileset.tileset_name).ToTexture(GraphicsDevice); _autotiles[0] = null; for (int i = 1; i <= _tileset.autotile_names.Count; i++) { string name = _tileset.autotile_names[i - 1]; if (!_autotileCache.ContainsKey(name)) _autotileCache[name] = CreateAutotile(name); _autotiles[i] = _autotileCache[name]; } Invalidate(); }
private void SetTileset(RPG.Tileset tileset) { _tileset = tileset; if (_tileset == null) { Image = null; return; } _srcImage = Cache.Tileset(_tileset.tileset_name); Image = new Bitmap(_srcImage); Size = Image.Size; }