public void AddTok(UInt32 Entry) { if (HasTok(Entry)) { return; } Tok_Info Info = WorldMgr.GetTok(Entry); if (Info == null) { return; } SendTok(Entry, true); Character_tok Tok = new Character_tok(); Tok.TokEntry = Entry; Tok.CharacterId = GetPlayer().CharacterId; Tok.Count = 1; Tok.Dirty = true; _Toks.Add(Entry, Tok); GetPlayer().AddXp(Info.Xp); GetPlayer()._Info.Toks = _Toks.Values.ToArray(); CharMgr.Database.AddObject(Tok); }
/// <summary> /// Add tok to player /// </summary> /// <param name="plr">Player that initiated the command</param> /// <param name="values">List of command arguments (after command name)</param> /// <returns>True if command was correctly handled, false if operation was canceled</returns> public static bool AddTok(Player plr, ref List <string> values) { int tokEntry = GetInt(ref values); Tok_Info info = TokService.GetTok((ushort)tokEntry); if (info == null) { return(false); } plr = GetTargetOrMe(plr) as Player; plr.TokInterface.AddTok(info.Entry); GMCommandLog log = new GMCommandLog { PlayerName = plr.Name, AccountId = (uint)plr.Client._Account.AccountId, Command = "ADD TOK TO " + plr.Name + " " + tokEntry, Date = DateTime.Now }; CharMgr.Database.AddObject(log); return(false); }
public void AddTok(Tok_Info Info) { if (Info != null) { AddTok(Info.Entry); } }
public void AddTok(Tok_Info Info) { if (!_loaded) { Log.Error("ToKSystem", "Tried to add ToK when system wasn't loaded.\n" + Environment.StackTrace); return; } if (Info != null) { AddTok(Info.Entry); } }
public override void SendInteract(Player Plr, InteractMenu Menu) { Tok_Info Info = WorldMgr.GetTok((UInt32)Spawn.Proto.TokUnlock); if (!IsDead) { Plr.QtsInterface.HandleEvent(Objective_Type.QUEST_USE_GO, Spawn.Entry, 1); } Plr.TokInterface.AddTok(Info.Entry); base.SendInteract(Plr, Menu); }
static public bool AddTok(Player Plr, ref List <string> Values) { int TokEntry = GetInt(ref Values); Tok_Info Info = WorldMgr.GetTok((UInt32)TokEntry); if (Info == null) { return(false); } Plr = GetTargetOrMe(Plr); Plr.TokInterface.AddTok(Info.Entry); return(false); }
/// <summary> /// Set tok entry /// </summary> /// <param name="plr">Player that initiated the command</param> /// <param name="values">List of command arguments (after command name)</param> /// <returns>True if command was correctly handled, false if operation was canceled</returns> public static bool ChapterTok(Player plr, ref List <string> values) { int entry = GetInt(ref values); int tokEntry = GetInt(ref values); Chapter_Info chapter = ChapterService.GetChapter((ushort)entry); Tok_Info tok = TokService.GetTok((ushort)entry); if (tok == null || chapter == null) { return(false); } chapter.TokEntry = (ushort)tokEntry; chapter.Dirty = true; WorldMgr.Database.SaveObject(chapter); return(true); }
static public bool ChapterTok(Player Plr, ref List <string> Values) { int Entry = GetInt(ref Values); int TokEntry = GetInt(ref Values); Chapter_Info Chapter = WorldMgr.GetChapter((UInt32)Entry); Tok_Info Tok = WorldMgr.GetTok((UInt32)Entry); if (Tok == null || Chapter == null) { return(false); } Chapter.TokEntry = (UInt32)TokEntry; Chapter.Dirty = true; WorldMgr.Database.SaveObject(Chapter); return(true); }
private void FixTokKills(ushort Entry) { Tok_Info Info = TokService.GetTok(Entry); if (Info == null) { return; } if (Info.Realm != 0 && Info.Realm != _Owner.GetPlayer().Info.Realm) { return; } Character_tok Tok = new Character_tok { TokEntry = Entry, CharacterId = GetPlayer().CharacterId, Count = 1 }; if (Tok == null) { return; } if (!HasTok(Entry)) { SendTok(Entry, true); GetPlayer().AddXp(Info.Xp, false, false); _tokUnlocks.Add(Entry, Tok); GetPlayer().Info.Toks = _tokUnlocks.Values.ToList(); CharMgr.Database.AddObject(Tok); } }
public override void SendInteract(Player Plr, InteractMenu Menu) { Tok_Info Info = WorldMgr.GetTok(Spawn.Proto.TokUnlock); if (!IsDead) { Plr.QtsInterface.HandleEvent(Objective_Type.QUEST_USE_GO, Spawn.Entry, 1); } if (Spawn.Proto.TokUnlock != 0) { Plr.TokInterface.AddTok(Info); } Loot Loots = LootsMgr.GenerateLoot(this, Plr); if (Loots != null) { Loots.SendInteract(Plr, Menu); // If object has been looted, make it unlootable // and then Reset its lootable staus in XX seconds if (!Loots.IsLootable()) { Looted = true; foreach (Object Obj in this._ObjectRanged) { if (Obj.IsPlayer()) { this.SendMeTo(Obj.GetPlayer()); } } EvtInterface.AddEvent(ResetLoot, RELOOTABLE_TIME, 1); } } base.SendInteract(Plr, Menu); }
public void FixTokItems() { //IList<Item_Info> tokItems = WorldMgr.Database.SelectObjects<Item_Info>("career=" + GetPlayer().Info.CareerFlags + " AND TokUnlock2 = " + item.Info.TokUnlock2); List <Item_Info> tokItems = new List <Item_Info>(); for (ushort i = 10; i < 35; i++) { if (i != 29 && i != 30) { Item item = GetPlayer().ItmInterface.GetItemInSlot(i); if (item != null) { tokItems.Add(WorldMgr.Database.SelectObject <Item_Info>("entry =" + item.Info.Entry)); } } } foreach (Item_Info item in tokItems) { if (item != null && item.TokUnlock2 != 0 && !HasTok(item.TokUnlock2)) { IList <Item_Info> currentSet = WorldMgr.Database.SelectObjects <Item_Info>("career=" + GetPlayer().Info.CareerFlags + " AND TokUnlock2 = " + item.TokUnlock2); int count = currentSet.Count(); foreach (Item_Info itm in currentSet) { if (count > 0) { foreach (Item_Info setItem in currentSet) { if (HasTok(setItem.TokUnlock)) { count--; } } } if (count == 0 && !HasTok(itm.TokUnlock2)) { // Tok is send to player SendTok((ushort)item.TokUnlock2, true); Character_tok Tok2 = new Character_tok { TokEntry = (ushort)item.TokUnlock2, CharacterId = GetPlayer().CharacterId, Count = 1 }; Tok_Info InfoSetTok = TokService.GetTok((ushort)item.TokUnlock2); // ToK is added to the book _tokUnlocks.Add((ushort)item.TokUnlock2, Tok2); GetPlayer().AddXp(InfoSetTok.Xp, false, false); // Adding reward from final ToK - Title SendTok((ushort)InfoSetTok.Rewards, true); Character_tok Tok2Title = new Character_tok { TokEntry = (ushort)InfoSetTok.Rewards, CharacterId = GetPlayer().CharacterId, Count = 1 }; Tok_Info TokInfoTitle = TokService.GetTok((ushort)InfoSetTok.Rewards); _tokUnlocks.Add((ushort)InfoSetTok.Rewards, Tok2Title); GetPlayer().AddXp(TokInfoTitle.Xp, false, false); // ToKs saved in DB :) CharMgr.Database.AddObject(Tok2); CharMgr.Database.AddObject(Tok2Title); } } } } }
// variable itemEquipedToK checks if this ToK was triggered by equiping item. If it is true it was, otherwise it is false public void AddTok(ushort Entry, bool itemEquipedToK = false) { if (HasTok(Entry)) { return; } if (!_loaded) { Log.Error("ToKSystem", "Tried to add ToK when system wasn't loaded.\n" + Environment.StackTrace); return; } Tok_Info Info = TokService.GetTok(Entry); if (Info == null) { return; } if (Info.Realm != 0 && Info.Realm != _Owner.GetPlayer().Info.Realm) { return; } SendTok(Entry, true); Character_tok Tok = new Character_tok { TokEntry = Entry, CharacterId = GetPlayer().CharacterId, Count = 1 }; _tokUnlocks.Add(Entry, Tok); GetPlayer().AddXp(Info.Xp, false, false); // This checks if ToK we are adding is a part of larger ToK, for example title // "Sovereign Trinket" is part of title "The Sovereign" if (itemEquipedToK) { // Selects item we equiped from DB Item_Info tokItemUnlock2 = WorldMgr.Database.SelectObject <Item_Info>("career=" + GetPlayer().Info.CareerFlags + " AND TokUnlock=" + Entry); if (tokItemUnlock2 != null && tokItemUnlock2.TokUnlock != 0 && tokItemUnlock2.TokUnlock2 != 0) { // Selects secondary ToK we want to setup if we completed full set IList <Item_Info> tokItems = WorldMgr.Database.SelectObjects <Item_Info>("career=" + GetPlayer().Info.CareerFlags + " AND TokUnlock2 = " + tokItemUnlock2.TokUnlock2); int count = tokItems.Count(); // If there is more than 0 items with complete set unlock we proceed if (count > 0) { foreach (Item_Info tokItem in tokItems) { if (HasTok(tokItem.TokUnlock)) { count--; } } // If we have all required unlocks count = 0 and we can proceed if (count == 0) { // Tok is send to player SendTok((ushort)tokItemUnlock2.TokUnlock2, true); Character_tok Tok2 = new Character_tok { TokEntry = (ushort)tokItemUnlock2.TokUnlock2, CharacterId = GetPlayer().CharacterId, Count = 1 }; Tok_Info InfoSetTok = TokService.GetTok((ushort)tokItemUnlock2.TokUnlock2); // ToK is added to the book _tokUnlocks.Add((ushort)tokItemUnlock2.TokUnlock2, Tok2); GetPlayer().AddXp(InfoSetTok.Xp, false, false); // Adding reward from final ToK - Title SendTok((ushort)InfoSetTok.Rewards, true); Character_tok Tok2Title = new Character_tok { TokEntry = (ushort)InfoSetTok.Rewards, CharacterId = GetPlayer().CharacterId, Count = 1 }; Tok_Info TokInfoTitle = TokService.GetTok((ushort)InfoSetTok.Rewards); _tokUnlocks.Add((ushort)InfoSetTok.Rewards, Tok2Title); GetPlayer().AddXp(TokInfoTitle.Xp, false, false); //ToKs saved in DB :) CharMgr.Database.AddObject(Tok2); CharMgr.Database.AddObject(Tok2Title); } } } } if (Info.Rewards > 0) { // this will be used for future additions like the tome tactics and gear to buy if (Info.Rewards == 1) { GetPlayer().ItmInterface.CreateItem(80001, 1); // Betial Token } } GetPlayer().Info.Toks = _tokUnlocks.Values.ToList(); CharMgr.Database.AddObject(Tok); }
public override void SendInteract(Player Plr, InteractMenu Menu) { Log.Success("SendInteract", "" + Name + " -> " + Plr.Name + ",Type=" + InteractType); PacketOut Out = new PacketOut((byte)Opcodes.F_SET_ABILITY_TIMER); Out.WriteByte(0); // 00 Out.WriteByte(1); // 01 Out.WriteByte(1); // 01 Out.WriteByte(5); // 05 Out.WriteUInt16(0); //00 00 Out.WriteUInt16(Spawn.GameObjTimer); // 13 88 =5000 Out.WriteUInt16(Oid); Out.WriteUInt16(0); Plr.SendPacket(Out); if (Spawn.GameObjTimer == 0) { Out = new PacketOut((byte)Opcodes.F_SET_ABILITY_TIMER); Out.WriteByte(0); // 00 Out.WriteByte(1); // 01 Out.WriteByte(1); // 01 Out.WriteUInt16(0); //00 00 Out.WriteUInt16(0); // 13 88 Out.WriteUInt16(0); Out.WriteUInt16(0); Out.WriteByte(0); Plr.SendPacket(Out); } Out = new PacketOut((byte)Opcodes.F_PLAY_EFFECT); Out.WriteUInt16((UInt16)0x0144); Out.WriteByte(0);// 00 Out.WriteUInt16((UInt16)Spawn.WorldZ); Out.WriteUInt32((UInt32)Spawn.WorldX); Out.WriteUInt32((UInt32)Spawn.WorldY); Out.WriteUInt16(0x0017);// 00 17 Out.Fill(0, 5); Plr.SendPacket(Out); Tok_Info Info = WorldMgr.GetTok(Spawn.Proto.TokUnlock); if (!IsDead) { Plr.QtsInterface.HandleEvent(Objective_Type.QUEST_USE_GO, Spawn.Entry, 1); } if (Spawn.Proto.TokUnlock != 0) { Plr.TokInterface.AddTok(Info); } Loot Loots = LootsMgr.GenerateLoot(this, Plr); if (Loots != null) { Loots.SendInteract(Plr, Menu); // If object has been looted, make it unlootable // and then Reset its lootable staus in XX seconds if (!Loots.IsLootable()) { Looted = true; foreach (Object Obj in this._ObjectRanged) { if (Obj.IsPlayer()) { this.SendMeTo(Obj.GetPlayer()); } } EvtInterface.AddEvent(ResetLoot, RELOOTABLE_TIME, 1); } } if (Spawn.DoorId != 0) { if (DoorOpen) { CloseDoor(); } else { OpenDoor(); } } base.SendInteract(Plr, Menu); }