private void doRecipe(Smod2.API.Item item, Scp914 objectOfType, Smod2.API.Player player, Smod2.API.KnobSetting knobSetting) { sbyte outputitem = -2; try { outputitem = (sbyte)(objectOfType.recipes[(byte)item.ItemType].outputs[(byte)knobSetting].outputs[getrandom.Next(0, objectOfType.recipes[(byte)item.ItemType].outputs[(byte)knobSetting].outputs.Count)]); } catch (System.Exception) { if (outputitem >= 0) { this.plugin.Error("Recipe for " + item.ItemType + "does not exist! Ask the game devs to add a recipe for it!"); } } if (outputitem != -2) { item.Remove(); this.plugin.Debug(item.ItemType + " ==> " + (ItemType)outputitem); } if (outputitem >= 0) { player.GiveItem((ItemType)outputitem); } }
private void InfectPlayer(Player player, Smod2.API.Item pItem) { List <Player> pList = instance.Server.GetPlayers().Where(x => x.TeamRole.Team == Smod2.API.Team.SPECTATOR && !x.OverwatchMode).ToList(); if (pList.Count > 0 && scpPlayer == null) { pItem.Remove(); Player p035 = pList[rand.Next(pList.Count)]; p035.ChangeRole(player.TeamRole.Role); p035.Teleport(player.GetPosition()); foreach (Smod2.API.Item item in player.GetInventory()) { p035.GiveItem(item.ItemType); } p035.SetHealth(scpHealth); p035.SetAmmo(AmmoType.DROPPED_5, player.GetAmmo(AmmoType.DROPPED_5)); p035.SetAmmo(AmmoType.DROPPED_7, player.GetAmmo(AmmoType.DROPPED_7)); p035.SetAmmo(AmmoType.DROPPED_9, player.GetAmmo(AmmoType.DROPPED_9)); p035.SetRank("red", "SCP-035"); p035.PersonalBroadcast(10, $"You are <color=\"red\">SCP-035!</color> You have infected a body and have gained control over it, use it to help the other SCPs!", false); scpPlayer = p035; isRotating = false; player.ChangeRole(Role.SPECTATOR); player.PersonalBroadcast(10, $"You have picked up <color=\"red\">SCP-035.</color> He has infected your body and is now in control of you.", false); if (spawnNewItems) { RemovePossessedItems(); } else { ResetItemDurability(); } } }