/// <summary> /// Constructor /// </summary> /// <param name="parent"></param> public EditObjects(MainForm parent) { InitializeComponent(); // TODO: Make this initialize combo boxes properly. // TODO: Create a material_string function. Type types = typeof(Material.MaterialType); foreach (string s in Enum.GetNames(types)) { cbMaterial.Items.Add(s); } for (int count = 0; count < ObjTemplate.MAX_CRAFT; count++) { cbCraftsmanship.Items.Add(ObjTemplate.CraftsmanshipString((ObjTemplate.Craftsmanship)count)); } for (int count = 0; count < Race.MAX_SIZE; count++) { cbSize.Items.Add(Race.SizeString((Race.Size)count)); } for (int count = 0; count < ObjTemplate.MAX_ITEM_TYPE; count++) { string str = ((ObjTemplate.ObjectType)count).ToString(); if (!String.IsNullOrEmpty(str)) { cbItemType.Items.Add(str); } } this.FormClosing += new FormClosingEventHandler(EditObjects_FormClosing); _parent = parent; SetControlAvailability(); }
public ItemTypeSelector() { InitializeComponent(); for (int x = 0; x < ObjTemplate.MAX_ITEM_TYPE; x++) { cbItemType.Items.Add(ObjTemplate.ItemTypeString((ObjTemplate.ObjectType)x)); } }
/// <summary> /// Checks whether a particular indexNumber is flagged as an artifact. /// </summary> /// <param name="indexNumber"></param> /// <returns></returns> public static bool IsArtifact(int indexNumber) { ObjTemplate obj = GetObjTemplate(indexNumber); if (obj != null && Macros.IsSet(obj.ExtraFlags[ObjTemplate.ITEM_ARTIFACT.Group], ObjTemplate.ITEM_ARTIFACT.Vector)) { return(true); } return(false); }
private void ApplyWindowContents() { if (shopList.SelectedIndex != -1) { if (!String.IsNullOrEmpty(txtKeeperIndexNumber.Text) && (string)shopList.Items[shopList.SelectedIndex] != txtKeeperIndexNumber.Text) { shopList.SelectedIndexChanged -= shopList_SelectedIndexChanged; shopList.Items[shopList.SelectedIndex] = ModernMUD.Color.RemoveColorCodes(txtKeeperIndexNumber.Text); shopList.SelectedIndexChanged += shopList_SelectedIndexChanged; } int value = 0; if (Int32.TryParse(txtKeeperIndexNumber.Text, out value)) { _area.Shops[shopList.SelectedIndex].Keeper = value; } if (Int32.TryParse(txtBuyPercent.Text, out value)) { _area.Shops[shopList.SelectedIndex].PercentBuy = value; } if (Int32.TryParse(txtSellPercent.Text, out value)) { _area.Shops[shopList.SelectedIndex].PercentSell = value; } if (Int32.TryParse(txtOpenHour.Text, out value)) { _area.Shops[shopList.SelectedIndex].OpenHour = value; } if (Int32.TryParse(txtCloseHour.Text, out value)) { _area.Shops[shopList.SelectedIndex].CloseHour = value; } List <ObjTemplate.ObjectType> buyTypes = new List <ObjTemplate.ObjectType>(); foreach (object obj in lstBuyTypes.Items) { buyTypes.Add(ObjTemplate.ItemTypeLookup((string)obj)); } _area.Shops[shopList.SelectedIndex].BuyTypes = buyTypes; List <int> itemsForSale = new List <int>(); foreach (object obj in lstItemsForSale.Items) { if (Int32.TryParse((string)obj, out value)) { itemsForSale.Add(value); } } _area.Shops[shopList.SelectedIndex].ItemsForSale = itemsForSale; } }
private void btnNew_Click(object sender, EventArgs e) { ApplyWindowContents(); ObjTemplate obj = new ObjTemplate(); if (_area.HighObjIndexNumber >= 0) { obj.IndexNumber = _area.HighObjIndexNumber + 1; } _area.Objects.Add(obj); _area.RebuildIndexes(); UpdateObjList(); SetControlAvailability(); objectList.SelectedIndex = objectList.Items.Count - 1; UpdateWindowContents(obj); _parent.UpdateStatusBar(); }
public HTemplate getTemplate(WebPanel webp, ObjTemplate defaultName, KBModel model) { HTemplate temp = getTemplate(webp, model); if (temp == null) { temp = getTemplate(WebPanel.Get(model, defaultName.ToString()), model); if (temp == null && defaultName == ObjTemplate.PromptTemplate) { temp = getTemplate(WebPanel.Get(model, ObjTemplate.SelectionTemplate.ToString()), model); } } if (temp == null) { throw new Artech.Packages.Patterns.PatternException("Template (" + defaultName.ToString() + ") not found!"); } return temp; }
void UpdateWindowContents(Shop shop) { txtKeeperIndexNumber.Text = shop.Keeper.ToString(); txtBuyPercent.Text = shop.PercentBuy.ToString(); txtSellPercent.Text = shop.PercentSell.ToString(); txtOpenHour.Text = shop.OpenHour.ToString(); txtCloseHour.Text = shop.CloseHour.ToString(); lstBuyTypes.Items.Clear(); foreach (int item in shop.BuyTypes) { lstBuyTypes.Items.Add(ObjTemplate.ItemTypeString((ObjTemplate.ObjectType)item)); } lstItemsForSale.Items.Clear(); foreach (int item in shop.ItemsForSale) { lstItemsForSale.Items.Add(item.ToString()); } }
public ObjTemplate[] ObjTemplatesArray() { ObjTemplate[] array = new ObjTemplate[Count]; for (int i = 0; i < Count; i++) { array[i] = new ObjTemplate() { Id = jSonObjTemplates.jToken[i]["id"].Value<string>(), ApiName = jSonObjTemplates.jToken[i]["api_name"].Value<string>(), ProjectId = jSonObjTemplates.jToken[i]["project_id"].Value<string>(), ObjTypeId = jSonObjTemplates.jToken[i]["objtype_id"].Value<string>(), PicUrl = jSonObjTemplates.jToken[i]["pic"].Value<string>(), //Дописать MyIntParams }; } return array; }
public ObjTemplate[] ObjTemplatesArray() { ObjTemplate[] array = new ObjTemplate[Count]; for (int i = 0; i < Count; i++) { array[i] = new ObjTemplate() { Id = jSonObjTemplates.jToken[i]["id"].Value <string>(), ApiName = jSonObjTemplates.jToken[i]["api_name"].Value <string>(), ProjectId = jSonObjTemplates.jToken[i]["project_id"].Value <string>(), ObjTypeId = jSonObjTemplates.jToken[i]["objtype_id"].Value <string>(), PicUrl = jSonObjTemplates.jToken[i]["pic"].Value <string>(), //Дописать MyIntParams }; } return(array); }
public ObjTemplate GetClosestObject() { float minDistance = Mathf.Infinity; ObjTemplate closestObject = null; foreach (ObjTemplate obj in objects) { if (obj.position != null && !obj.memoryObject.hasGhost) { float distance = Vector2.Distance(player.position, obj.position.position); if (distance < minDistance) { minDistance = distance; closestObject = obj; } } } return(closestObject); }
private void UpdateWindowContents(ObjTemplate obj) { txtCondition.Text = obj.Condition.ToString(); txtFullDescription.Text = obj.FullDescription; txtName.Text = obj.Name; txtShortDescription.Text = obj.ShortDescription; txtIndexNumber.Text = obj.IndexNumber.ToString(); txtWeight.Text = obj.Weight.ToString(); txtLevel.Text = obj.Level.ToString(); txtVolume.Text = obj.Volume.ToString(); cbCraftsmanship.SelectedIndex = (int)obj.CraftsmanshipLevel; int item = cbMaterial.Items.IndexOf(obj.Material.ToString()); cbMaterial.SelectedIndex = item; cbSize.SelectedIndex = (int)obj.Size; cbItemType.SelectedItem = obj.ItemType.ToString(); txtMaxInGame.Text = obj.MaxNumber.ToString(); txtExtraFlags.Text = obj.ExtraFlags[0].ToString(); txtExtraFlags2.Text = obj.ExtraFlags[1].ToString(); txtAffectFlags1.Text = obj.AffectedBy[0].ToString(); txtAffectFlags2.Text = obj.AffectedBy[1].ToString(); txtAffectFlags3.Text = obj.AffectedBy[2].ToString(); txtAffectFlags4.Text = obj.AffectedBy[3].ToString(); txtAffectFlags5.Text = obj.AffectedBy[4].ToString(); txtUseFlags.Text = obj.UseFlags[0].ToString(); txtUseFlags2.Text = obj.UseFlags[1].ToString(); txtWearFlags.Text = obj.WearFlags[0].ToString(); lstExtraDesc.Items.Clear(); foreach (ExtendedDescription desc in obj.ExtraDescriptions) { lstExtraDesc.Items.Add(desc); } if (obj.SpecFun.Count > 0) { btnEditSpecials.ForeColor = System.Drawing.Color.Black; } else { btnEditSpecials.ForeColor = System.Drawing.Color.Gray; } }
private void btnClone_Click(object sender, EventArgs e) { if (objectList.SelectedIndex == -1 || objectList.SelectedIndex > (objectList.Items.Count - 1)) { MessageBox.Show("Cannot clone an object without a valid object selected."); return; } ApplyWindowContents(); ObjTemplate obj = new ObjTemplate(_area.Objects[objectList.SelectedIndex]); if (_area.HighObjIndexNumber >= 0) { obj.IndexNumber = _area.HighObjIndexNumber + 1; } _area.Objects.Add(obj); _area.RebuildIndexes(); UpdateObjList(); SetControlAvailability(); objectList.SelectedIndex = objectList.Items.Count - 1; UpdateWindowContents(obj); _parent.UpdateStatusBar(); }
/// <summary> /// Create an instance of an object. /// </summary> /// <param name="objTempalte"></param> /// <param name="level"></param> /// <returns></returns> public static Object CreateObject(ObjTemplate objTempalte, int level) { if (level < 1) { level = 1; } if (!objTempalte) { Log.Error("CreateObject: null ObjTemplate.", 0); return(null); } Object obj = new Object(objTempalte); if (!obj) { Log.Error("Database.CreateObject: new Object(ObjIndex*) failed.", 0); return(null); } obj.Level = level; return(obj); }
/// <summary> /// Resets a room, reloading according to resets. /// </summary> /// <param name="notInitial"></param> /// <returns></returns> public bool ResetRoom(int notInitial) { Exit exit = null; CharData mobile; CharData lastMob = null; int level = 0; bool last = true; // Added for debugging. string text = String.Empty; foreach (Reset reset in Area.Resets) { if (!reset.IsRoomReset(this)) { continue; } Object obj; Object lastObj; MobTemplate mobIndex; ObjTemplate objTemplate; Room room; switch (reset.Command) { default: Log.Error("RoomIndex.Reset(): bad command %c.", reset.Command); break; case 'M': mobIndex = Database.GetMobTemplate(reset.Arg1); if (!mobIndex) { Log.Error("RoomIndex.Reset(): 'M': bad mob index number {0} for arg1.", reset.Arg1); continue; } room = GetRoom(reset.Arg3); if (!room) { Log.Error("RoomIndex.Reset(): 'R': bad room index number {0} for arg3.", reset.Arg3); continue; } if ((mobIndex.HasSpecFun("spec_cast_ghost")) && (Database.SystemData.WeatherData.Sunlight > SunType.night) && (Database.SystemData.WeatherData.Sunlight < SunType.moonrise)) { last = false; continue; } level = Macros.Range(0, mobIndex.Level - 2, Limits.LEVEL_HERO); if (mobIndex.NumActive >= reset.Arg2) { last = false; break; } mobile = Database.CreateMobile(mobIndex); // Check for pet shop. Room prevRoom = GetRoom(room.IndexNumber - 1); if (prevRoom && prevRoom.HasFlag(ROOM_PET_SHOP)) { mobile.SetActionBit(MobTemplate.ACT_PET); } if (room.IsDark()) { mobile.SetAffectBit(Affect.AFFECT_INFRAVISION); } mobile.AddToRoom(room); mobile.LoadRoomIndexNumber = room.IndexNumber; // This code makes mounts make their mounters mount them. if (reset.Arg0 == -1 && lastMob) { // If set to be mounted. String[] keywords = mobile.Name.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); Command.Mount(lastMob, keywords); } lastMob = mobile; level = Macros.Range(0, mobile.Level - 2, Limits.LEVEL_HERO); last = true; break; case 'F': mobIndex = Database.GetMobTemplate(reset.Arg1); if (!mobIndex) { Log.Error("RoomIndex.Reset(): 'F': bad mob index number {0} for arg1.", reset.Arg1); continue; } room = GetRoom(reset.Arg3); if (!room) { Log.Error("RoomIndex.Reset(): 'F': bad room index number {0} for arg3.", reset.Arg3); continue; } if (mobIndex.HasSpecFun("spec_cast_ghost") && (Database.SystemData.WeatherData.Sunlight > SunType.night) && (Database.SystemData.WeatherData.Sunlight < SunType.moonrise)) { last = false; continue; } level = Macros.Range(0, mobIndex.Level - 2, Limits.LEVEL_HERO); if (mobIndex.NumActive >= reset.Arg2) { last = false; break; } mobile = Database.CreateMobile(mobIndex); Room prev = GetRoom(room.IndexNumber - 1); if (prev && prev.HasFlag(ROOM_PET_SHOP)) { mobile.SetActionBit(MobTemplate.ACT_PET); } if (room.IsDark()) { mobile.SetAffectBit(Affect.AFFECT_INFRAVISION); } // Set following bit. Can't have a message sent because // there is no valid room number (causes a segmentation fault) CharData.AddFollowerWithoutMessage(mobile, lastMob); lastMob = mobile; mobile.AddToRoom(room); mobile.LoadRoomIndexNumber = room.IndexNumber; level = Macros.Range(0, mobile.Level - 2, Limits.LEVEL_HERO); last = true; break; case 'O': if (notInitial != 0) { last = false; continue; } objTemplate = Database.GetObjTemplate(reset.Arg1); if (!objTemplate) { Log.Error("RoomIndex.Reset(): 'O': bad obj index number {0} for arg1.", reset.Arg1); continue; } room = GetRoom(reset.Arg3); if (!room) { Log.Error("RoomIndex.Reset(): 'O': bad room index number {0} for arg3.", reset.Arg3); continue; } if (Area.NumPlayers > 0 || room._contents.Count != 0 && (Object.CountObjectInList(objTemplate, room._contents) > 0)) { last = false; break; } // check if is unique/arti if (Database.IsArtifact(objTemplate.IndexNumber)) { text += "RoomIndex.Reset(): Artifact found: " + objTemplate.Name + " (" + objTemplate.IndexNumber + ")"; Log.Trace(text); } //end if artiact obj = Database.CreateObject(objTemplate, MUDMath.FuzzyNumber(level)); if (obj != null) { obj.Cost = 0; obj.AddToRoom(this); last = true; } else { Log.Error("RoomIndex.Reset(): Unable to Database.CreateObject {0}", reset.Arg3); } break; case 'P': if (notInitial != 0) { last = false; continue; } objTemplate = Database.GetObjTemplate(reset.Arg1); if (!objTemplate) { Log.Error("RoomIndex.Reset(): 'P': bad obj index number {0} for arg3.", reset.Arg1); continue; } ObjTemplate targetObjTemplate = Database.GetObjTemplate(reset.Arg3); if (!targetObjTemplate) { Log.Error("RoomIndex.Reset(): 'P': bad obj index number {0} for arg3.", reset.Arg3); continue; } if (Area.NumPlayers > 0 || !(lastObj = Object.GetFirstObjectOfTemplateType(targetObjTemplate)) || lastObj.Contains.Count != 0 && (Object.CountObjectInList(objTemplate, lastObj.Contains) > 0)) { last = false; break; } // check if is unique/arti if (Database.IsArtifact(objTemplate.IndexNumber)) { text += "RoomIndex.Reset(): Artifact found: " + objTemplate.Name + " (" + objTemplate.IndexNumber + ")"; Log.Trace(text); } //end if artifact obj = Database.CreateObject(objTemplate, MUDMath.FuzzyNumber(lastObj.Level)); lastObj.AddToObject(obj); last = true; // Ensure that the container gets Reset. if ((lastObj.ItemType == ObjTemplate.ObjectType.container) || (lastObj.ItemType == ObjTemplate.ObjectType.drink_container)) { lastObj.Values[1] = lastObj.ObjIndexData.Values[1]; } break; case 'G': case 'E': if (notInitial != 0) { last = false; continue; } objTemplate = Database.GetObjTemplate(reset.Arg1); if (!objTemplate) { Log.Error("RoomIndex.Reset(): 'E' or 'G': bad obj index number {0} for arg1.", reset.Arg1); continue; } if (!last) { break; } if (!lastMob) { Log.Error("RoomIndex.Reset(): 'E' or 'G': null mob for index number {0} for arg1.", reset.Arg1); last = false; break; } // check if is unique/arti if (Database.IsArtifact(objTemplate.IndexNumber)) { text += "RoomIndex.Reset(): Artifact found: " + objTemplate.Name + " (" + objTemplate.IndexNumber + ")"; Log.Trace(text); } //end if artifact if (lastMob.MobileTemplate.ShopData) /* Shop-keeper? */ { int olevel; switch (objTemplate.ItemType) { default: olevel = 0; break; case ObjTemplate.ObjectType.pill: olevel = MUDMath.NumberRange(0, 10); break; case ObjTemplate.ObjectType.potion: olevel = MUDMath.NumberRange(0, 10); break; case ObjTemplate.ObjectType.scroll: olevel = MUDMath.NumberRange(5, 15); break; case ObjTemplate.ObjectType.wand: olevel = MUDMath.NumberRange(10, 20); break; case ObjTemplate.ObjectType.staff: olevel = MUDMath.NumberRange(15, 25); break; case ObjTemplate.ObjectType.armor: olevel = MUDMath.NumberRange(5, 15); break; case ObjTemplate.ObjectType.other: olevel = MUDMath.NumberRange(5, 15); break; case ObjTemplate.ObjectType.clothing: olevel = MUDMath.NumberRange(5, 15); break; case ObjTemplate.ObjectType.weapon: if (reset.Command == 'G') { olevel = MUDMath.NumberRange(5, 15); } else { olevel = MUDMath.FuzzyNumber(level); } break; } obj = Database.CreateObject(objTemplate, olevel); if (reset.Command == 'G') { obj.AddFlag(ObjTemplate.ITEM_INVENTORY); } } else { obj = Database.CreateObject(objTemplate, MUDMath.FuzzyNumber(level)); } obj.ObjToChar(lastMob); if (reset.Command == 'E') { lastMob.EquipObject(ref obj, (ObjTemplate.WearLocation)reset.Arg3); } last = true; break; case 'D': if (reset.Arg2 < 0 || reset.Arg2 >= Limits.MAX_DIRECTION || !(exit = ExitData[reset.Arg2]) || !exit.HasFlag(Exit.ExitFlag.is_door)) { Log.Error("RoomIndex.Reset(): 'D': exit {0} not door for arg2.", reset.Arg2); } switch (reset.Arg3) { default: Log.Error("RoomIndex.Reset(): 'D': bad 'locks': {0} for arg3.", reset.Arg3); break; case 0: break; case 1: exit.AddFlag(Exit.ExitFlag.closed); break; case 2: exit.AddFlag(Exit.ExitFlag.closed | Exit.ExitFlag.locked); break; case 4: exit.AddFlag(Exit.ExitFlag.secret); break; case 5: exit.AddFlag(Exit.ExitFlag.secret | Exit.ExitFlag.closed); break; case 6: exit.AddFlag(Exit.ExitFlag.secret | Exit.ExitFlag.closed | Exit.ExitFlag.locked); break; case 8: exit.AddFlag(Exit.ExitFlag.blocked); break; case 9: exit.AddFlag(Exit.ExitFlag.blocked | Exit.ExitFlag.closed); break; case 10: exit.AddFlag(Exit.ExitFlag.blocked | Exit.ExitFlag.closed | Exit.ExitFlag.locked); break; case 12: exit.AddFlag(Exit.ExitFlag.blocked | Exit.ExitFlag.secret); break; case 13: exit.AddFlag(Exit.ExitFlag.blocked | Exit.ExitFlag.secret | Exit.ExitFlag.closed); break; case 14: exit.AddFlag(Exit.ExitFlag.blocked | Exit.ExitFlag.secret | Exit.ExitFlag.closed | Exit.ExitFlag.locked); break; } break; case 'R': Log.Trace("Unsupported randomize room exits call. Please implement this."); break; } } return(true); }
public Target(ObjTemplate obj) { _objTemplate = obj; _type = TargetType.object_template; }
internal static HTemplate GetTemplate(HPatternSettings settings, ObjTemplate tipo) { templateModel = settings.Model; switch (tipo) { case ObjTemplate.TransactionTemplate: return CacheHTemplate.Cache.getTemplate(settings.Template.TransactionTemplate, tipo, templateModel); case ObjTemplate.SelectionTemplate: return CacheHTemplate.Cache.getTemplate(settings.Template.SelectionTemplate, tipo, templateModel); case ObjTemplate.DocTemplate: return CacheHTemplate.Cache.getTemplate(settings.Documentation.Template, tipo, templateModel); case ObjTemplate.ViewTemplate: return CacheHTemplate.Cache.getTemplate(settings.Template.ViewTemplate, tipo, templateModel); case ObjTemplate.PromptTemplate: return CacheHTemplate.Cache.getTemplate(settings.Template.PromptTemplate, tipo, templateModel); } return null; }