/// <summary> /// Creates a Guard Inventory from an Inventory Template /// </summary> /// <param name="template"></param> public GameNPCInventory(GameNpcInventoryTemplate template) { foreach (InventoryItem item in template.AllItems) { AddItem((eInventorySlot)item.SlotPosition, GameInventoryItem.Create(item)); } }
/// <summary> /// Add equipment to the teleporter. /// </summary> /// <returns></returns> public override bool AddToWorld() { GameNpcInventoryTemplate template = new GameNpcInventoryTemplate(); template.AddNPCEquipment(eInventorySlot.Cloak, 57, 66); template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1005, 86); template.AddNPCEquipment(eInventorySlot.LegsArmor, 140, 6); template.AddNPCEquipment(eInventorySlot.ArmsArmor, 141, 6); template.AddNPCEquipment(eInventorySlot.HandsArmor, 142, 6); template.AddNPCEquipment(eInventorySlot.FeetArmor, 143, 6); template.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 1166); Inventory = template.CloseTemplate(); SwitchWeapon(GameLiving.eActiveWeaponSlot.TwoHanded); return base.AddToWorld(); }
public override bool AddToWorld() { GameNpcInventoryTemplate template = new GameNpcInventoryTemplate(); switch (Realm) { case eRealm.Albion: template.AddNPCEquipment(eInventorySlot.TorsoArmor, 2230); break; case eRealm.Midgard: template.AddNPCEquipment(eInventorySlot.TorsoArmor, 2232); template.AddNPCEquipment(eInventorySlot.ArmsArmor, 2233); template.AddNPCEquipment(eInventorySlot.LegsArmor, 2234); template.AddNPCEquipment(eInventorySlot.HandsArmor, 2235); template.AddNPCEquipment(eInventorySlot.FeetArmor, 2236); break; case eRealm.Hibernia: template.AddNPCEquipment(eInventorySlot.TorsoArmor, 2231); ; break; } Inventory = template.CloseTemplate(); Flags = eFlags.PEACE; // Peace flag. return base.AddToWorld(); }
/// <summary> /// Load equipment for the pet. /// </summary> /// <param name="templateID">Equipment Template ID.</param> /// <returns>True on success, else false.</returns> private bool LoadEquipmentTemplate(String templateID) { if (templateID.Length > 0) { GameNpcInventoryTemplate inventoryTemplate = new GameNpcInventoryTemplate(); if (inventoryTemplate.LoadFromDatabase(templateID)) { Inventory = new GameNPCInventory(inventoryTemplate); InventoryItem item; if ((item = Inventory.GetItem(eInventorySlot.TwoHandWeapon)) != null) { item.DPS_AF = (int)(Level * 3.3); item.SPD_ABS = 50; switch (templateID) { case "abomination_fiery_sword": case "abomination_flaming_mace": item.ProcSpellID = (int)Procs.Heat; break; case "abomination_icy_sword": case "abomination_frozen_mace": item.ProcSpellID = (int)Procs.Cold; break; case "abomination_poisonous_sword": case "abomination_venomous_mace": item.ProcSpellID = (int)Procs.Poison; break; } SwitchWeapon(eActiveWeaponSlot.TwoHanded); } else { if ((item = Inventory.GetItem(eInventorySlot.RightHandWeapon)) != null) { item.DPS_AF = (int)(Level * 3.3); item.SPD_ABS = 37; } if ((item = Inventory.GetItem(eInventorySlot.LeftHandWeapon)) != null) { item.DPS_AF = (int)(Level * 3.3); item.SPD_ABS = 37; } SwitchWeapon(eActiveWeaponSlot.Standard); } } foreach (GamePlayer player in GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE)) { if (player == null) continue; player.Out.SendLivingEquipmentUpdate(this); } return true; } return false; }
/// <summary> /// Load a NPC template onto this NPC /// </summary> /// <param name="template"></param> public virtual void LoadTemplate(INpcTemplate template) { if (template == null) return; var m_templatedInventory = new List<string>(); this.TranslationId = template.TranslationId; this.Name = template.Name; this.Suffix = template.Suffix; this.GuildName = template.GuildName; this.ExamineArticle = template.ExamineArticle; this.MessageArticle = template.MessageArticle; #region Models, Sizes, Levels, Gender // Grav: this.Model/Size/Level accessors are triggering SendUpdate() // so i must use them, and not directly use private variables ushort choosenModel = 1; var splitModel = template.Model.SplitCSV(true); ushort.TryParse(splitModel[Util.Random(0,splitModel.Count-1)], out choosenModel); this.Model = choosenModel; // Graveen: template.Gender is 0,1 or 2 for respectively eGender.Neutral("it"), eGender.Male ("he"), // eGender.Female ("she"). Any other value is randomly choosing a gender for current GameNPC int choosenGender = template.Gender>2?Util.Random(0,2):template.Gender; switch (choosenGender) { default : case 0 : this.Gender = eGender.Neutral; break; case 1 : this.Gender = eGender.Male; break; case 2 : this.Gender = eGender.Female; break; } byte choosenSize = 50; if (!Util.IsEmpty(template.Size)) { var split = template.Size.SplitCSV(true); byte.TryParse(split[Util.Random(0,split.Count-1)], out choosenSize); } this.Size = choosenSize; byte choosenLevel = 1; if (!Util.IsEmpty(template.Level)) { var split = template.Level.SplitCSV(true); byte.TryParse(split[Util.Random(0,split.Count-1)], out choosenLevel); } this.Level = choosenLevel; #endregion #region Stats // Stats if (template.Strength==0) { this.AutoSetStats(); } else { this.Constitution = (short)template.Constitution; this.Dexterity = (short)template.Dexterity; this.Strength = (short)template.Strength; this.Quickness = (short)template.Quickness; this.Intelligence = (short)template.Intelligence; this.Piety = (short)template.Piety; this.Empathy = (short)template.Empathy; this.Charisma = (short)template.Charisma; } #endregion #region Misc Stats this.MaxDistance = template.MaxDistance; this.TetherRange = template.TetherRange; this.Race = (short)template.Race; this.BodyType = (ushort)template.BodyType; this.MaxSpeedBase = template.MaxSpeed; this.Flags = (eFlags)template.Flags; this.MeleeDamageType = template.MeleeDamageType; this.ParryChance = template.ParryChance; this.EvadeChance = template.EvadeChance; this.BlockChance = template.BlockChance; this.LeftHandSwingChance = template.LeftHandSwingChance; #endregion #region Inventory //Ok lets start loading the npc equipment - only if there is a value! if (!Util.IsEmpty(template.Inventory)) { bool equipHasItems = false; GameNpcInventoryTemplate equip = new GameNpcInventoryTemplate(); //First let's try to reach the npcequipment table and load that! //We use a ';' split to allow npctemplates to support more than one equipmentIDs var equipIDs = template.Inventory.SplitCSV(); if (!template.Inventory.Contains(":")) { foreach (string str in equipIDs) { m_templatedInventory.Add(str); } string equipid = ""; if (m_templatedInventory.Count > 0) { if (m_templatedInventory.Count == 1) equipid = template.Inventory; else equipid = m_templatedInventory[Util.Random(m_templatedInventory.Count - 1)]; } if (equip.LoadFromDatabase(equipid)) equipHasItems = true; } #region Legacy Equipment Code //Nope, nothing in the npcequipment table, lets do the crappy parsing //This is legacy code if (!equipHasItems && template.Inventory.Contains(":")) { //Temp list to store our models List<int> tempModels = new List<int>(); //Let's go through all of our ';' seperated slots foreach (string str in equipIDs) { tempModels.Clear(); //Split the equipment into slot and model(s) string[] slotXModels = str.Split(':'); //It should only be two in length SLOT : MODELS if (slotXModels.Length == 2) { int slot; //Let's try to get our slot if (Int32.TryParse(slotXModels[0], out slot)) { //Now lets go through and add all the models to the list string[] models = slotXModels[1].Split('|'); foreach (string strModel in models) { //We'll add it to the list if we successfully parse it! int model; if (Int32.TryParse(strModel, out model)) tempModels.Add(model); } //If we found some models let's randomly pick one and add it the equipment if (tempModels.Count > 0) equipHasItems |= equip.AddNPCEquipment((eInventorySlot)slot, tempModels[Util.Random(tempModels.Count - 1)]); } } } } #endregion //We added some items - let's make it the new inventory if (equipHasItems) { this.Inventory = new GameNPCInventory(equip); if (this.Inventory.GetItem(eInventorySlot.DistanceWeapon) != null) this.SwitchWeapon(eActiveWeaponSlot.Distance); } if (template.VisibleActiveWeaponSlot > 0) this.VisibleActiveWeaponSlots = template.VisibleActiveWeaponSlot; } #endregion if (template.Spells != null) this.Spells = template.Spells; if (template.Styles != null) this.Styles = template.Styles; if (template.Abilities != null) { lock (m_lockAbilities) { foreach (Ability ab in template.Abilities) m_abilities[ab.KeyName] = ab; } } BuffBonusCategory4[(int)eStat.STR] += template.Strength; BuffBonusCategory4[(int)eStat.DEX] += template.Dexterity; BuffBonusCategory4[(int)eStat.CON] += template.Constitution; BuffBonusCategory4[(int)eStat.QUI] += template.Quickness; BuffBonusCategory4[(int)eStat.INT] += template.Intelligence; BuffBonusCategory4[(int)eStat.PIE] += template.Piety; BuffBonusCategory4[(int)eStat.EMP] += template.Empathy; BuffBonusCategory4[(int)eStat.CHR] += template.Charisma; m_ownBrain = new StandardMobBrain { Body = this, AggroLevel = template.AggroLevel, AggroRange = template.AggroRange }; this.NPCTemplate = template as NpcTemplate; }
/// <summary> /// Loads the equipment template of this npc /// </summary> /// <param name="equipmentTemplateID">The template id</param> public virtual void LoadEquipmentTemplateFromDatabase(string equipmentTemplateID) { EquipmentTemplateID = equipmentTemplateID; if (EquipmentTemplateID != null && EquipmentTemplateID.Length > 0) { GameNpcInventoryTemplate template = new GameNpcInventoryTemplate(); if (template.LoadFromDatabase(EquipmentTemplateID)) { m_inventory = template.CloseTemplate(); } else { //if (log.IsDebugEnabled) //{ // //log.Warn("Error loading NPC inventory: InventoryID="+EquipmentTemplateID+", NPC name="+Name+"."); //} } if (Inventory != null) { //if the distance slot isnt empty we use that //Seems to always if (Inventory.GetItem(eInventorySlot.DistanceWeapon) != null) SwitchWeapon(eActiveWeaponSlot.Distance); else { InventoryItem twohand = Inventory.GetItem(eInventorySlot.TwoHandWeapon); InventoryItem onehand = Inventory.GetItem(eInventorySlot.RightHandWeapon); if (twohand != null && onehand != null) //Let's add some random chance SwitchWeapon(Util.Chance(50) ? eActiveWeaponSlot.TwoHanded : eActiveWeaponSlot.Standard); else if (twohand != null) //Hmm our right hand weapon may have been null SwitchWeapon(eActiveWeaponSlot.TwoHanded); else if (onehand != null) //Hmm twohand was null lets default down here SwitchWeapon(eActiveWeaponSlot.Standard); } } } }
public virtual void SetInventoryTemplate() { var template = new GameNpcInventoryTemplate(); switch (Realm) { case eRealm.Albion: { Model = 92; template.AddNPCEquipment(eInventorySlot.RightHandWeapon, 310, 81); template.AddNPCEquipment(eInventorySlot.FeetArmor, 1301); template.AddNPCEquipment(eInventorySlot.LegsArmor, 1312); if (Util.Chance(50)) { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1005, 67); } else { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1313); } template.AddNPCEquipment(eInventorySlot.Cloak, 669, 65); } break; case eRealm.Midgard: { Model = 156; template.AddNPCEquipment(eInventorySlot.RightHandWeapon, 321, 81); template.AddNPCEquipment(eInventorySlot.FeetArmor, 1301); template.AddNPCEquipment(eInventorySlot.LegsArmor, 1303); if (Util.Chance(50)) { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1300); } else { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 993); } template.AddNPCEquipment(eInventorySlot.Cloak, 669, 51); } break; case eRealm.Hibernia: { Model = 335; template.AddNPCEquipment(eInventorySlot.RightHandWeapon, 457, 81); template.AddNPCEquipment(eInventorySlot.FeetArmor, 1333); if (Util.Chance(50)) { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1336); } else { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1008); } template.AddNPCEquipment(eInventorySlot.Cloak, 669); } break; } Inventory = template.CloseTemplate(); }
/// <summary> /// Method to load all the templates into memory /// </summary> public static void LoadTemplates() { #region Albion #region Archer if (!Albion_Archer.LoadFromDatabase("albion_archer")) { Albion_Archer.AddNPCEquipment(eInventorySlot.Cloak, 3800); Albion_Archer.AddNPCEquipment(eInventorySlot.TorsoArmor, 728); Albion_Archer.AddNPCEquipment(eInventorySlot.LegsArmor, 663); Albion_Archer.AddNPCEquipment(eInventorySlot.ArmsArmor, 664); Albion_Archer.AddNPCEquipment(eInventorySlot.HandsArmor, 665); Albion_Archer.AddNPCEquipment(eInventorySlot.FeetArmor, 666); Albion_Archer.AddNPCEquipment(eInventorySlot.DistanceWeapon, 849); Albion_Archer.AddNPCEquipment(eInventorySlot.RightHandWeapon, 653); Albion_Archer.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 59); Albion_Archer = Albion_Archer.CloseTemplate(); Albion_Archer.GetItem(eInventorySlot.DistanceWeapon).Hand = (int)eHandFlag.Two; Albion_Archer.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; } #endregion #region Caster if (!Albion_Caster.LoadFromDatabase("albion_caster")) { Albion_Caster.AddNPCEquipment(eInventorySlot.Cloak, 3800); Albion_Caster.AddNPCEquipment(eInventorySlot.TorsoArmor, 58); Albion_Caster.AddNPCEquipment(eInventorySlot.HandsArmor, 142); Albion_Caster.AddNPCEquipment(eInventorySlot.FeetArmor, 143); Albion_Caster.AddNPCEquipment(eInventorySlot.RightHandWeapon, 13); Albion_Caster.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 1170); Albion_Caster = Albion_Caster.CloseTemplate(); Albion_Caster.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Fighter if (!Albion_Fighter.LoadFromDatabase("albion_fighter")) { Albion_Fighter.AddNPCEquipment(eInventorySlot.Cloak, 3800); Albion_Fighter.AddNPCEquipment(eInventorySlot.TorsoArmor, 662); Albion_Fighter.AddNPCEquipment(eInventorySlot.LegsArmor, 663); Albion_Fighter.AddNPCEquipment(eInventorySlot.ArmsArmor, 664); Albion_Fighter.AddNPCEquipment(eInventorySlot.HandsArmor, 665); Albion_Fighter.AddNPCEquipment(eInventorySlot.FeetArmor, 666); Albion_Fighter.AddNPCEquipment(eInventorySlot.HeadArmor, 95); Albion_Fighter.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 60); Albion_Fighter.AddNPCEquipment(eInventorySlot.RightHandWeapon, 10); Albion_Fighter.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 649); Albion_Fighter = Albion_Fighter.CloseTemplate(); Albion_Fighter.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; Albion_Fighter.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Lord if (!Albion_Lord.LoadFromDatabase("albion_lord")) { Albion_Lord.AddNPCEquipment(eInventorySlot.Cloak, 3800); //676 Albion_Lord.AddNPCEquipment(eInventorySlot.TorsoArmor, 662); Albion_Lord.AddNPCEquipment(eInventorySlot.LegsArmor, 663); Albion_Lord.AddNPCEquipment(eInventorySlot.ArmsArmor, 664); Albion_Lord.AddNPCEquipment(eInventorySlot.HandsArmor, 665); Albion_Lord.AddNPCEquipment(eInventorySlot.FeetArmor, 666); Albion_Lord.AddNPCEquipment(eInventorySlot.HeadArmor, 95); Albion_Lord.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 60); Albion_Lord.AddNPCEquipment(eInventorySlot.RightHandWeapon, 10); Albion_Lord.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 649); Albion_Lord.AddNPCEquipment(eInventorySlot.DistanceWeapon, 132); Albion_Lord = Albion_Lord.CloseTemplate(); Albion_Lord.GetItem(eInventorySlot.DistanceWeapon).Hand = (int)eHandFlag.Two; Albion_Lord.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; Albion_Lord.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Healer if (!Albion_Healer.LoadFromDatabase("albion_healer")) { Albion_Healer.AddNPCEquipment(eInventorySlot.Cloak, 3800); Albion_Healer.AddNPCEquipment(eInventorySlot.TorsoArmor, 713); Albion_Healer.AddNPCEquipment(eInventorySlot.LegsArmor, 663); Albion_Healer.AddNPCEquipment(eInventorySlot.ArmsArmor, 664); Albion_Healer.AddNPCEquipment(eInventorySlot.HandsArmor, 665); Albion_Healer.AddNPCEquipment(eInventorySlot.FeetArmor, 666); Albion_Healer.AddNPCEquipment(eInventorySlot.HeadArmor, 94); Albion_Healer.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 61); Albion_Healer.AddNPCEquipment(eInventorySlot.RightHandWeapon, 3282); Albion_Healer = Albion_Healer.CloseTemplate(); Albion_Fighter.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; } #endregion #region Stealther if (!Albion_Stealther.LoadFromDatabase("albion_stealther")) { Albion_Stealther.AddNPCEquipment(eInventorySlot.Cloak, 3800); Albion_Stealther.AddNPCEquipment(eInventorySlot.TorsoArmor, 792); Albion_Stealther.AddNPCEquipment(eInventorySlot.LegsArmor, 663); Albion_Stealther.AddNPCEquipment(eInventorySlot.ArmsArmor, 664); Albion_Stealther.AddNPCEquipment(eInventorySlot.HandsArmor, 665); Albion_Stealther.AddNPCEquipment(eInventorySlot.FeetArmor, 666); Albion_Stealther.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 653); Albion_Stealther.AddNPCEquipment(eInventorySlot.RightHandWeapon, 653); Albion_Stealther.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 653); Albion_Stealther = Albion_Stealther.CloseTemplate(); Albion_Stealther.GetItem(eInventorySlot.LeftHandWeapon).Hand = (int)eHandFlag.Left; Albion_Stealther.GetItem(eInventorySlot.LeftHandWeapon).SlotPosition = Slot.LEFTHAND; } #endregion #region PK //portal keep Albion_FighterPK.LoadFromDatabase("alb_fighter_pk"); Albion_ArcherPK.LoadFromDatabase("alb_archer_pk"); Albion_CasterPK.LoadFromDatabase("alb_caster_pk"); #endregion #endregion #region Midgard #region Archer if (!Midgard_Archer.LoadFromDatabase("midgard_archer")) { Midgard_Archer.AddNPCEquipment(eInventorySlot.Cloak, 3801); Midgard_Archer.AddNPCEquipment(eInventorySlot.TorsoArmor, 668); Midgard_Archer.AddNPCEquipment(eInventorySlot.LegsArmor, 2943); Midgard_Archer.AddNPCEquipment(eInventorySlot.ArmsArmor, 2944); Midgard_Archer.AddNPCEquipment(eInventorySlot.HandsArmor, 2945); Midgard_Archer.AddNPCEquipment(eInventorySlot.FeetArmor, 2946); Midgard_Archer.AddNPCEquipment(eInventorySlot.HeadArmor, 2874); Midgard_Archer.AddNPCEquipment(eInventorySlot.DistanceWeapon, 1037); Midgard_Archer.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 328); Midgard_Archer.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 59); Midgard_Archer = Midgard_Archer.CloseTemplate(); Midgard_Archer.GetItem(eInventorySlot.DistanceWeapon).Hand = (int)eHandFlag.Two; Midgard_Archer.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; Midgard_Archer.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; } #endregion #region Caster if (!Midgard_Caster.LoadFromDatabase("midgard_caster")) { Midgard_Caster.AddNPCEquipment(eInventorySlot.Cloak, 3801); Midgard_Caster.AddNPCEquipment(eInventorySlot.TorsoArmor, 98); Midgard_Caster.AddNPCEquipment(eInventorySlot.HandsArmor, 142); Midgard_Caster.AddNPCEquipment(eInventorySlot.FeetArmor, 143); Midgard_Caster.AddNPCEquipment(eInventorySlot.RightHandWeapon, 13); Midgard_Caster.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 566); Midgard_Caster = Midgard_Caster.CloseTemplate(); Midgard_Caster.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Fighter if (!Midgard_Fighter.LoadFromDatabase("midgard_fighter")) { Midgard_Fighter.AddNPCEquipment(eInventorySlot.Cloak, 3801); Midgard_Fighter.AddNPCEquipment(eInventorySlot.TorsoArmor, 668); Midgard_Fighter.AddNPCEquipment(eInventorySlot.LegsArmor, 2943); Midgard_Fighter.AddNPCEquipment(eInventorySlot.ArmsArmor, 2944); Midgard_Fighter.AddNPCEquipment(eInventorySlot.HandsArmor, 2945); Midgard_Fighter.AddNPCEquipment(eInventorySlot.FeetArmor, 2946); Midgard_Fighter.AddNPCEquipment(eInventorySlot.HeadArmor, 2874); Midgard_Fighter.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 60); Midgard_Fighter.AddNPCEquipment(eInventorySlot.RightHandWeapon, 313); Midgard_Fighter.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 572); Midgard_Fighter = Midgard_Fighter.CloseTemplate(); Midgard_Fighter.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; Midgard_Fighter.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Lord if (!Midgard_Lord.LoadFromDatabase("midgard_lord")) { Midgard_Lord.AddNPCEquipment(eInventorySlot.Cloak, 3801); Midgard_Lord.AddNPCEquipment(eInventorySlot.TorsoArmor, 668); Midgard_Lord.AddNPCEquipment(eInventorySlot.LegsArmor, 2943); Midgard_Lord.AddNPCEquipment(eInventorySlot.ArmsArmor, 2944); Midgard_Lord.AddNPCEquipment(eInventorySlot.HandsArmor, 2945); Midgard_Lord.AddNPCEquipment(eInventorySlot.FeetArmor, 2946); Midgard_Lord.AddNPCEquipment(eInventorySlot.HeadArmor, 2874); Midgard_Lord.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 60); Midgard_Lord.AddNPCEquipment(eInventorySlot.RightHandWeapon, 313); Midgard_Lord.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 572); Midgard_Lord.AddNPCEquipment(eInventorySlot.DistanceWeapon, 564); Midgard_Lord = Midgard_Lord.CloseTemplate(); Midgard_Lord.GetItem(eInventorySlot.DistanceWeapon).Hand = (int)eHandFlag.Two; Midgard_Lord.GetItem(eInventorySlot.DistanceWeapon).Object_Type = (int)eObjectType.Longbow; Midgard_Lord.GetItem(eInventorySlot.DistanceWeapon).SlotPosition = Slot.RANGED; Midgard_Lord.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; Midgard_Lord.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Healer if (!Midgard_Healer.LoadFromDatabase("midgard_healer")) { Midgard_Healer.AddNPCEquipment(eInventorySlot.Cloak, 3801); Midgard_Healer.AddNPCEquipment(eInventorySlot.TorsoArmor, 668); Midgard_Healer.AddNPCEquipment(eInventorySlot.LegsArmor, 2943); Midgard_Healer.AddNPCEquipment(eInventorySlot.ArmsArmor, 2944); Midgard_Healer.AddNPCEquipment(eInventorySlot.HandsArmor, 2945); Midgard_Healer.AddNPCEquipment(eInventorySlot.FeetArmor, 2946); Midgard_Healer.AddNPCEquipment(eInventorySlot.HeadArmor, 2874); Midgard_Healer.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 59); Midgard_Healer.AddNPCEquipment(eInventorySlot.RightHandWeapon, 3335); Midgard_Healer.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 3336); Midgard_Healer = Midgard_Healer.CloseTemplate(); Midgard_Healer.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; } #endregion #region Hastener if (!Midgard_Hastener.LoadFromDatabase("midgard_hastener")) { Midgard_Hastener.AddNPCEquipment(eInventorySlot.Cloak, 443, 43); Midgard_Hastener.AddNPCEquipment(eInventorySlot.TorsoArmor, 230); Midgard_Hastener.AddNPCEquipment(eInventorySlot.HandsArmor, 233); Midgard_Hastener.AddNPCEquipment(eInventorySlot.FeetArmor, 234); Midgard_Hastener.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 228); Midgard_Hastener = Midgard_Hastener.CloseTemplate(); Midgard_Hastener.GetItem(eInventorySlot.LeftHandWeapon).Hand = (int)eHandFlag.Left; Midgard_Hastener.GetItem(eInventorySlot.LeftHandWeapon).SlotPosition = Slot.LEFTHAND; } #endregion #region Stealther if (!Midgard_Stealther.LoadFromDatabase("midgard_stealther")) { Midgard_Stealther.AddNPCEquipment(eInventorySlot.Cloak, 3801); Midgard_Stealther.AddNPCEquipment(eInventorySlot.TorsoArmor, 668); Midgard_Stealther.AddNPCEquipment(eInventorySlot.LegsArmor, 2943); Midgard_Stealther.AddNPCEquipment(eInventorySlot.ArmsArmor, 2944); Midgard_Stealther.AddNPCEquipment(eInventorySlot.HandsArmor, 2945); Midgard_Stealther.AddNPCEquipment(eInventorySlot.FeetArmor, 2946); Midgard_Stealther.AddNPCEquipment(eInventorySlot.HeadArmor, 335); Midgard_Stealther.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 573); Midgard_Stealther.AddNPCEquipment(eInventorySlot.RightHandWeapon, 573); Midgard_Stealther.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 577); Midgard_Stealther = Midgard_Stealther.CloseTemplate(); Midgard_Stealther.GetItem(eInventorySlot.LeftHandWeapon).Hand = (int)eHandFlag.Left; Albion_Stealther.GetItem(eInventorySlot.LeftHandWeapon).SlotPosition = Slot.LEFTHAND; } #endregion #region PK Midgard_FighterPK.LoadFromDatabase("mid_fighter_pk"); Midgard_ArcherPK.LoadFromDatabase("mid_archer_pk"); Midgard_CasterPK.LoadFromDatabase("mid_caster_pk"); #endregion #endregion #region Hibernia #region Archer if (!Hibernia_Archer.LoadFromDatabase("hibernia_archer")) { Hibernia_Archer.AddNPCEquipment(eInventorySlot.Cloak, 3802); Hibernia_Archer.AddNPCEquipment(eInventorySlot.TorsoArmor, 667); Hibernia_Archer.AddNPCEquipment(eInventorySlot.LegsArmor, 989); Hibernia_Archer.AddNPCEquipment(eInventorySlot.ArmsArmor, 990); Hibernia_Archer.AddNPCEquipment(eInventorySlot.HandsArmor, 991); Hibernia_Archer.AddNPCEquipment(eInventorySlot.FeetArmor, 992); Hibernia_Archer.AddNPCEquipment(eInventorySlot.HeadArmor, 1207); Hibernia_Archer.AddNPCEquipment(eInventorySlot.DistanceWeapon, 919); Hibernia_Archer.AddNPCEquipment(eInventorySlot.RightHandWeapon, 643); Hibernia_Archer.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 643); Hibernia_Archer = Hibernia_Archer.CloseTemplate(); Hibernia_Archer.GetItem(eInventorySlot.DistanceWeapon).Hand = (int)eHandFlag.Two; Hibernia_Archer.GetItem(eInventorySlot.DistanceWeapon).Object_Type = (int)eObjectType.RecurvedBow; Hibernia_Archer.GetItem(eInventorySlot.DistanceWeapon).SlotPosition = Slot.RANGED; Hibernia_Archer.GetItem(eInventorySlot.LeftHandWeapon).Hand = (int)eHandFlag.Left; } #endregion #region Caster if (!Hibernia_Caster.LoadFromDatabase("hibernia_caster")) { Hibernia_Caster.AddNPCEquipment(eInventorySlot.Cloak, 3802); Hibernia_Caster.AddNPCEquipment(eInventorySlot.TorsoArmor, 97); Hibernia_Caster.AddNPCEquipment(eInventorySlot.HandsArmor, 142); Hibernia_Caster.AddNPCEquipment(eInventorySlot.FeetArmor, 143); Hibernia_Caster.AddNPCEquipment(eInventorySlot.RightHandWeapon, 13); Hibernia_Caster.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 1176); Hibernia_Caster = Hibernia_Caster.CloseTemplate(); Hibernia_Caster.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Fighter if (!Hibernia_Fighter.LoadFromDatabase("hibernia_fighter")) { Hibernia_Fighter.AddNPCEquipment(eInventorySlot.Cloak, 3802); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.TorsoArmor, 667); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.LegsArmor, 989); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.ArmsArmor, 990); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.HandsArmor, 991); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.FeetArmor, 992); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.HeadArmor, 1207); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 79); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.RightHandWeapon, 897); Hibernia_Fighter.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 476); Hibernia_Fighter = Hibernia_Fighter.CloseTemplate(); Hibernia_Fighter.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; Hibernia_Fighter.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Lord if (!Hibernia_Lord.LoadFromDatabase("hibernia_lord")) { Hibernia_Lord.AddNPCEquipment(eInventorySlot.Cloak, 3802); Hibernia_Lord.AddNPCEquipment(eInventorySlot.TorsoArmor, 667); Hibernia_Lord.AddNPCEquipment(eInventorySlot.LegsArmor, 989); Hibernia_Lord.AddNPCEquipment(eInventorySlot.ArmsArmor, 990); Hibernia_Lord.AddNPCEquipment(eInventorySlot.HandsArmor, 991); Hibernia_Lord.AddNPCEquipment(eInventorySlot.FeetArmor, 992); Hibernia_Lord.AddNPCEquipment(eInventorySlot.HeadArmor, 1207); Hibernia_Lord.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 79); Hibernia_Lord.AddNPCEquipment(eInventorySlot.RightHandWeapon, 897); Hibernia_Lord.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 476); Hibernia_Lord.AddNPCEquipment(eInventorySlot.DistanceWeapon, 471); Hibernia_Lord.GetItem(eInventorySlot.DistanceWeapon).Hand = (int)eHandFlag.Two; Hibernia_Lord.GetItem(eInventorySlot.DistanceWeapon).Object_Type = (int)eObjectType.CompositeBow; Hibernia_Lord.GetItem(eInventorySlot.DistanceWeapon).SlotPosition = Slot.RANGED; Hibernia_Lord.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; Hibernia_Lord.GetItem(eInventorySlot.TwoHandWeapon).Hand = (int)eHandFlag.Two; } #endregion #region Healer if (!Hibernia_Healer.LoadFromDatabase("hibernia_healer")) { Hibernia_Healer.AddNPCEquipment(eInventorySlot.Cloak, 3802); Hibernia_Healer.AddNPCEquipment(eInventorySlot.TorsoArmor, 667); Hibernia_Healer.AddNPCEquipment(eInventorySlot.LegsArmor, 989); Hibernia_Healer.AddNPCEquipment(eInventorySlot.ArmsArmor, 990); Hibernia_Healer.AddNPCEquipment(eInventorySlot.HandsArmor, 991); Hibernia_Healer.AddNPCEquipment(eInventorySlot.FeetArmor, 992); Hibernia_Healer.AddNPCEquipment(eInventorySlot.HeadArmor, 1207); Hibernia_Healer.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 59); Hibernia_Healer.AddNPCEquipment(eInventorySlot.RightHandWeapon, 3247); Hibernia_Healer = Hibernia_Healer.CloseTemplate(); Hibernia_Healer.GetItem(eInventorySlot.LeftHandWeapon).Object_Type = (int)eObjectType.Shield; } #endregion #region Stealther if (!Hibernia_Stealther.LoadFromDatabase("hibernia_stealther")) { Hibernia_Stealther.AddNPCEquipment(eInventorySlot.Cloak, 3802); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.TorsoArmor, 667); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.LegsArmor, 989); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.ArmsArmor, 990); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.HandsArmor, 991); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.FeetArmor, 992); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.LeftHandWeapon, 2685); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.RightHandWeapon, 2685); Hibernia_Stealther.AddNPCEquipment(eInventorySlot.TwoHandWeapon, 2687); Hibernia_Stealther = Hibernia_Stealther.CloseTemplate(); Hibernia_Stealther.GetItem(eInventorySlot.LeftHandWeapon).Hand = (int)eHandFlag.Left; Albion_Stealther.GetItem(eInventorySlot.LeftHandWeapon).SlotPosition = Slot.LEFTHAND; } #endregion #region PK Hibernia_FighterPK.LoadFromDatabase("hib_fighter_pk"); Hibernia_ArcherPK.LoadFromDatabase("hib_archer_pk"); Hibernia_CasterPK.LoadFromDatabase("hib_caster_pk"); #endregion #endregion }
/// <summary> /// Static constructor /// </summary> static GameNpcInventoryTemplate() { GameNpcInventoryTemplate temp = new GameNpcInventoryTemplate().CloseTemplate(); Thread.MemoryBarrier(); EmptyTemplate = temp; }
/// <summary> /// Creates a copy of the GameNpcInventoryTemplate. /// </summary> /// <returns>Open copy of this template</returns> public GameNpcInventoryTemplate CloneTemplate() { lock (m_items) { var clone = new GameNpcInventoryTemplate(); clone.m_changedSlots = new List<eInventorySlot>(m_changedSlots); clone.m_changesCounter = m_changesCounter; foreach (var de in m_items) { InventoryItem oldItem = de.Value; InventoryItem item = new GameInventoryItem(); item.Template = new ItemTemplate(); item.Template.Id_nb = oldItem.Id_nb; item.Model = oldItem.Model; item.Color = oldItem.Color; item.Effect = oldItem.Effect; item.Extension = oldItem.Extension; item.SlotPosition = oldItem.SlotPosition; clone.m_items.Add(de.Key, item); } clone.m_isClosed = false; return clone; } }
public DecoySpellHandler(GameLiving caster, Spell spell, SpellLine line) : base(caster, spell, line) { Random m_rnd = new Random(); decoy = new GameDecoy(); //Fill the object variables decoy.CurrentRegion = caster.CurrentRegion; decoy.Heading = (ushort)((caster.Heading + 2048) % 4096); decoy.Level = 50; decoy.Realm = caster.Realm; decoy.X = caster.X; decoy.Y = caster.Y; decoy.Z = caster.Z; string TemplateId = ""; switch (caster.Realm) { case eRealm.Albion: decoy.Name = "Avalonian Unicorn Knight"; decoy.Model = (ushort)m_rnd.Next(61, 68); TemplateId = "e3ead77b-22a7-4b7d-a415-92a29295dcf7"; break; case eRealm.Midgard: decoy.Name = "Kobold Elding Herra"; decoy.Model = (ushort)m_rnd.Next(169, 184); TemplateId = "ee137bff-e83d-4423-8305-8defa2cbcd7a"; break; case eRealm.Hibernia: decoy.Name = "Elf Gilded Spear"; decoy.Model = (ushort)m_rnd.Next(334, 349); TemplateId = "a4c798a2-186a-4bda-99ff-ccef228cb745"; break; } GameNpcInventoryTemplate load = new GameNpcInventoryTemplate(); if (load.LoadFromDatabase(TemplateId)) { decoy.EquipmentTemplateID = TemplateId; decoy.Inventory = load; decoy.BroadcastLivingEquipmentUpdate(); } decoy.CurrentSpeed = 0; decoy.GuildName = ""; }
public override bool AddToWorld() { var template = new GameNpcInventoryTemplate(); switch (Realm) { case eRealm.Albion: { Model = 92; template.AddNPCEquipment(eInventorySlot.RightHandWeapon, 310, 81); template.AddNPCEquipment(eInventorySlot.FeetArmor, 1301); template.AddNPCEquipment(eInventorySlot.LegsArmor, 1312); if (Util.Chance(50)) { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1005, 67); } else { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1313); } template.AddNPCEquipment(eInventorySlot.Cloak, 669, 65); } break; case eRealm.Midgard: { Model = 156; template.AddNPCEquipment(eInventorySlot.RightHandWeapon, 321, 81); template.AddNPCEquipment(eInventorySlot.FeetArmor, 1301); template.AddNPCEquipment(eInventorySlot.LegsArmor, 1303); if (Util.Chance(50)) { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1300); } else { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 993); } template.AddNPCEquipment(eInventorySlot.Cloak, 669, 51); } break; case eRealm.Hibernia: { Model = 335; template.AddNPCEquipment(eInventorySlot.RightHandWeapon, 457, 81); template.AddNPCEquipment(eInventorySlot.FeetArmor, 1333); if (Util.Chance(50)) { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1336); } else { template.AddNPCEquipment(eInventorySlot.TorsoArmor, 1008); } template.AddNPCEquipment(eInventorySlot.Cloak, 669); } break; } Inventory = template.CloseTemplate(); base.AddToWorld(); House house = HouseMgr.GetHouse(HouseNumber); house.ConsignmentMerchant = this; SetEmblem(); // verify if OwnerLot is correct var itemcon = GameServer.Database.SelectObjects<InventoryItem>("OwnerID = '" + house.OwnerID + "' AND SlotPosition >= 1500 AND SlotPosition <= 1599"); if (itemcon.Count > 0) { for (int i = 0; i < itemcon.Count; i++) { itemcon[i].OwnerLot = ((ushort)HouseNumber); GameServer.Database.SaveObject(itemcon[i]); } } return true; }
/// <summary> /// Changes the commander's weapon to the specified type /// by WHRIA /// </summary> /// <param name="slot"></param> /// <param name="aSlot"></param> /// <param name="weaponType"></param> protected void CommanderSwitchWeapon(eInventorySlot slot, eActiveWeaponSlot aSlot, string weaponType) { string templateID = string.Format("BD_Commander_{0}_{1}", slot.ToString(), weaponType); GameNpcInventoryTemplate inventoryTemplate = new GameNpcInventoryTemplate(); if (inventoryTemplate.LoadFromDatabase(templateID)) { Inventory = new GameNPCInventory(inventoryTemplate); if (Inventory.AllItems.Count == 0) { if (log.IsErrorEnabled) log.Error(string.Format("Unable to find Bonedancer item: {0}", templateID)); return; } } else { if (log.IsErrorEnabled) log.Error(string.Format("Unable to find Bonedancer item: {0}", templateID)); return; } SwitchWeapon(aSlot); AddStatsToWeapon(); InventoryItem item_left; InventoryItem item_right; InventoryItem item_two; if (Inventory != null) { item_left = Inventory.GetItem(eInventorySlot.LeftHandWeapon); item_right = Inventory.GetItem(eInventorySlot.RightHandWeapon); item_two = Inventory.GetItem(eInventorySlot.TwoHandWeapon); switch (weaponType) { case "one_handed_sword": if (item_right != null) item_right.Type_Damage = (int)eDamageType.Slash; break; case "two_handed_sword": if (item_two != null) item_right.Type_Damage = (int)eDamageType.Slash; break; case "one_handed_hammer": if (item_right != null) item_right.Type_Damage = (int)eDamageType.Crush; break; case "two_handed_hammer": if (item_two != null) item_right.Type_Damage = (int)eDamageType.Crush; break; case "one_handed_axe": if (item_right != null) item_right.Type_Damage = (int)eDamageType.Thrust; break; case "two_handed_axe": if (item_two != null) item_right.Type_Damage = (int)eDamageType.Thrust; break; } } BroadcastLivingEquipmentUpdate(); }