protected void CreditQuestKill(Player killer) { if (killer.PriorityGroup != null) { List <Player> curMembers = killer.PriorityGroup.GetPlayersCloseTo(killer, 150); } if (!string.IsNullOrEmpty(Spawn.Proto.TokUnlock)) { killer.TokInterface.AddToks(Spawn.Proto.TokUnlock); if (killer.WorldGroup != null) { List <Player> members = killer.WorldGroup.GetPlayerListCopy(); foreach (var member in members) { if (member != killer) { member.TokInterface.AddToks(Spawn.Proto.TokUnlock); } } } } killer.QtsInterface.HandleEvent(Objective_Type.QUEST_KILL_GO, Spawn.Entry, 1); PublicQuest pq = killer.QtsInterface.PublicQuest; pq?.HandleEvent(killer, Objective_Type.QUEST_KILL_GO, Spawn.Entry, 1, 100); }
private void HandleInteractionEvents(Player player) { if (!IsDead) { player.QtsInterface.HandleEvent(Objective_Type.QUEST_USE_GO, Spawn.Entry, 1); } // This will spawn a creature after interacting with the GO if (this.Spawn.Proto.CreatureId != 0 && IsAttackable == 0) { SpawnNPCFromGO(); } // This will play sound after clicking on the GO long now = TCPManager.GetTimeStampMS(); if (this.Spawn.SoundId != 0 && now > SoundCooldown) { this.PlaySound((ushort)this.Spawn.SoundId); SoundCooldown = TCPManager.GetTimeStampMS() + 60 * 1000; } HandleCustomInteraction(); PublicQuest pq = player.QtsInterface.PublicQuest; pq?.HandleEvent(player, Objective_Type.QUEST_USE_GO, Spawn.Entry, 1, 50); if (Spawn.Proto.TokUnlock != null && Spawn.Proto.TokUnlock.Length > 1 && IsAttackable == 0) { player.TokInterface.AddToks(Spawn.Proto.TokUnlock); // This check if the GO we clicked is a Door - if it is we don't want to mess with its // VFXState because we can break it if (this.Spawn.DoorId == 0) { this.EvtInterface.AddEvent(EventSendMeTo, 60000, 1); if (this.Spawn.AllowVfxUpdate == 1) { this.VfxState = 1; } foreach (Player plr in PlayersInRange) { this.UpdateVfxState(VfxState); } } } if (Spawn.TokUnlock != null && Spawn.TokUnlock.Length > 1 && IsAttackable == 0) { player.TokInterface.AddToks(Spawn.TokUnlock); // This check if the GO we clicked is a Door - if it is we don't want to mess with its // VFXState because we can break it if (this.Spawn.DoorId == 0) { this.EvtInterface.AddEvent(EventSendMeTo, 60000, 1); if (this.Spawn.AllowVfxUpdate == 1) { this.VfxState = 1; } foreach (Player plr in PlayersInRange) { this.UpdateVfxState(VfxState); } } } }