public void ExtractJobPrefab(string[] tags) { string jobIdTag = tags.FirstOrDefault(s => s.StartsWith("jobid:")); if (jobIdTag != null && jobIdTag.Length > 6) { string jobId = jobIdTag.Substring(6); if (jobId != string.Empty) { JobPrefab = JobPrefab.Get(jobId); } } }
public JobPrefab GetJob() { if (cachedJobPrefab != null) { return(cachedJobPrefab); } foreach (string tag in item.GetTags()) { if (tag.StartsWith("jobid:")) { string jobIdentifier = tag.Split(':').Last(); if (JobPrefab.Get(jobIdentifier) is { } jobPrefab) { cachedJobPrefab = jobPrefab; return(jobPrefab); } } } return(null); }
public override void Start() { base.Start(); var firstAidOrder = Order.GetPrefab("requestfirstaid"); doctor_firstAidIcon = firstAidOrder.SymbolSprite; doctor_firstAidIconColor = firstAidOrder.Color; subPatients = new List <Character>(); radioSpeakerName = TextManager.Get("Tutorial.Radio.Speaker"); doctor = Character.Controlled; var bandages = FindOrGiveItem(doctor, "antibleeding1"); bandages.Unequip(doctor); doctor.Inventory.RemoveItem(bandages); var syringegun = FindOrGiveItem(doctor, "syringegun"); syringegun.Unequip(doctor); doctor.Inventory.RemoveItem(syringegun); var antibiotics = FindOrGiveItem(doctor, "antibiotics"); antibiotics.Unequip(doctor); doctor.Inventory.RemoveItem(antibiotics); var morphine = FindOrGiveItem(doctor, "antidama1"); morphine.Unequip(doctor); doctor.Inventory.RemoveItem(morphine); doctor_suppliesCabinet = Item.ItemList.Find(i => i.HasTag("doctor_suppliescabinet"))?.GetComponent <ItemContainer>(); doctor_medBayCabinet = Item.ItemList.Find(i => i.HasTag("doctor_medbaycabinet"))?.GetComponent <ItemContainer>(); var patientHull1 = WayPoint.WayPointList.Find(wp => wp.IdCardDesc == "waitingroom").CurrentHull; var patientHull2 = WayPoint.WayPointList.Find(wp => wp.IdCardDesc == "airlock").CurrentHull; medBay = WayPoint.WayPointList.Find(wp => wp.IdCardDesc == "medbay").CurrentHull; var assistantInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, jobPrefab: JobPrefab.Get("assistant")); patient1 = Character.Create(assistantInfo, patientHull1.WorldPosition, "1"); patient1.TeamID = CharacterTeamType.Team1; patient1.GiveJobItems(null); patient1.CanSpeak = false; patient1.AddDamage(patient1.WorldPosition, new List <Affliction>() { new Affliction(AfflictionPrefab.Burn, 15.0f) }, stun: 0, playSound: false); patient1.AIController.Enabled = false; assistantInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, jobPrefab: JobPrefab.Get("assistant")); patient2 = Character.Create(assistantInfo, patientHull2.WorldPosition, "2"); patient2.TeamID = CharacterTeamType.Team1; patient2.GiveJobItems(null); patient2.CanSpeak = false; patient2.AIController.Enabled = false; var mechanicInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, jobPrefab: JobPrefab.Get("engineer")); var subPatient1 = Character.Create(mechanicInfo, WayPoint.GetRandom(SpawnType.Human, mechanicInfo.Job?.Prefab, Submarine.MainSub).WorldPosition, "3"); subPatient1.TeamID = CharacterTeamType.Team1; subPatient1.AddDamage(patient1.WorldPosition, new List <Affliction>() { new Affliction(AfflictionPrefab.Burn, 40.0f) }, stun: 0, playSound: false); subPatients.Add(subPatient1); var securityInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, jobPrefab: JobPrefab.Get("securityofficer")); var subPatient2 = Character.Create(securityInfo, WayPoint.GetRandom(SpawnType.Human, securityInfo.Job?.Prefab, Submarine.MainSub).WorldPosition, "3"); subPatient2.TeamID = CharacterTeamType.Team1; subPatient2.AddDamage(patient1.WorldPosition, new List <Affliction>() { new Affliction(AfflictionPrefab.InternalDamage, 40.0f) }, stun: 0, playSound: false); subPatients.Add(subPatient2); var engineerInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, jobPrefab: JobPrefab.Get("engineer")); var subPatient3 = Character.Create(securityInfo, WayPoint.GetRandom(SpawnType.Human, engineerInfo.Job?.Prefab, Submarine.MainSub).WorldPosition, "3"); subPatient3.TeamID = CharacterTeamType.Team1; subPatient3.AddDamage(patient1.WorldPosition, new List <Affliction>() { new Affliction(AfflictionPrefab.Burn, 20.0f) }, stun: 0, playSound: false); subPatients.Add(subPatient3); doctor_firstDoor = Item.ItemList.Find(i => i.HasTag("doctor_firstdoor")).GetComponent <Door>(); doctor_secondDoor = Item.ItemList.Find(i => i.HasTag("doctor_seconddoor")).GetComponent <Door>(); doctor_thirdDoor = Item.ItemList.Find(i => i.HasTag("doctor_thirddoor")).GetComponent <Door>(); tutorial_upperFinalDoor = Item.ItemList.Find(i => i.HasTag("tutorial_upperfinaldoor")).GetComponent <Door>(); doctor_firstDoorLight = Item.ItemList.Find(i => i.HasTag("doctor_firstdoorlight")).GetComponent <LightComponent>(); doctor_secondDoorLight = Item.ItemList.Find(i => i.HasTag("doctor_seconddoorlight")).GetComponent <LightComponent>(); doctor_thirdDoorLight = Item.ItemList.Find(i => i.HasTag("doctor_thirddoorlight")).GetComponent <LightComponent>(); SetDoorAccess(doctor_firstDoor, doctor_firstDoorLight, false); SetDoorAccess(doctor_secondDoor, doctor_secondDoorLight, false); SetDoorAccess(doctor_thirdDoor, doctor_thirdDoorLight, false); tutorial_submarineDoor = Item.ItemList.Find(i => i.HasTag("tutorial_submarinedoor")).GetComponent <Door>(); tutorial_submarineDoorLight = Item.ItemList.Find(i => i.HasTag("tutorial_submarinedoorlight")).GetComponent <LightComponent>(); SetDoorAccess(tutorial_submarineDoor, tutorial_submarineDoorLight, false); tutorial_lockedDoor_2 = Item.ItemList.Find(i => i.HasTag("tutorial_lockeddoor_2")).GetComponent <Door>(); SetDoorAccess(tutorial_lockedDoor_2, null, true); foreach (var patient in subPatients) { patient.CanSpeak = false; patient.AIController.Enabled = false; patient.GiveJobItems(); } Item reactorItem = Item.ItemList.Find(i => i.Submarine == Submarine.MainSub && i.GetComponent <Reactor>() != null); reactorItem.GetComponent <Reactor>().AutoTemp = true; }
public override void Start() { base.Start(); captain = Character.Controlled; radioSpeakerName = TextManager.Get("Tutorial.Radio.Watchman"); GameMain.GameSession.CrewManager.AllowCharacterSwitch = false; var revolver = FindOrGiveItem(captain, "revolver"); revolver.Unequip(captain); captain.Inventory.RemoveItem(revolver); var captainscap = captain.Inventory.FindItemByIdentifier("captainscap1") ?? captain.Inventory.FindItemByIdentifier("captainscap2") ?? captain.Inventory.FindItemByIdentifier("captainscap3"); if (captainscap != null) { captainscap.Unequip(captain); captain.Inventory.RemoveItem(captainscap); } var captainsuniform = captain.Inventory.FindItemByIdentifier("captainsuniform1") ?? captain.Inventory.FindItemByIdentifier("captainsuniform2") ?? captain.Inventory.FindItemByIdentifier("captainsuniform3"); if (captainsuniform != null) { captainsuniform.Unequip(captain); captain.Inventory.RemoveItem(captainsuniform); } var steerOrder = Order.GetPrefab("steer"); captain_steerIcon = steerOrder.SymbolSprite; captain_steerIconColor = steerOrder.Color; // Room 2 captain_equipmentObjectiveSensor = Item.ItemList.Find(i => i.HasTag("captain_equipmentobjectivesensor")).GetComponent <MotionSensor>(); captain_equipmentCabinet = Item.ItemList.Find(i => i.HasTag("captain_equipmentcabinet")).GetComponent <ItemContainer>(); captain_firstDoor = Item.ItemList.Find(i => i.HasTag("captain_firstdoor")).GetComponent <Door>(); captain_firstDoorLight = Item.ItemList.Find(i => i.HasTag("captain_firstdoorlight")).GetComponent <LightComponent>(); SetDoorAccess(captain_firstDoor, captain_firstDoorLight, true); // Room 3 captain_medicObjectiveSensor = Item.ItemList.Find(i => i.HasTag("captain_medicobjectivesensor")).GetComponent <MotionSensor>(); captain_medicSpawnPos = Item.ItemList.Find(i => i.HasTag("captain_medicspawnpos")).WorldPosition; tutorial_submarineDoor = Item.ItemList.Find(i => i.HasTag("tutorial_submarinedoor")).GetComponent <Door>(); tutorial_submarineDoorLight = Item.ItemList.Find(i => i.HasTag("tutorial_submarinedoorlight")).GetComponent <LightComponent>(); var medicInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, "", JobPrefab.Get("medicaldoctor")); captain_medic = Character.Create(medicInfo, captain_medicSpawnPos, "medicaldoctor"); captain_medic.TeamID = Character.TeamType.Team1; captain_medic.GiveJobItems(null); captain_medic.CanSpeak = captain_medic.AIController.Enabled = false; SetDoorAccess(tutorial_submarineDoor, tutorial_submarineDoorLight, false); // Submarine captain_enteredSubmarineSensor = Item.ItemList.Find(i => i.HasTag("captain_enteredsubmarinesensor")).GetComponent <MotionSensor>(); tutorial_submarineReactor = Item.ItemList.Find(i => i.HasTag("engineer_submarinereactor")).GetComponent <Reactor>(); captain_navConsole = Item.ItemList.Find(i => i.HasTag("command")).GetComponent <Steering>(); captain_navConsoleCustomInterface = Item.ItemList.Find(i => i.HasTag("command")).GetComponent <CustomInterface>(); captain_sonar = captain_navConsole.Item.GetComponent <Sonar>(); captain_statusMonitor = Item.ItemList.Find(i => i.HasTag("captain_statusmonitor")); tutorial_submarineReactor.CanBeSelected = false; tutorial_submarineReactor.IsActive = tutorial_submarineReactor.AutoTemp = false; tutorial_lockedDoor_1 = Item.ItemList.Find(i => i.HasTag("tutorial_lockeddoor_1")).GetComponent <Door>(); tutorial_lockedDoor_2 = Item.ItemList.Find(i => i.HasTag("tutorial_lockeddoor_2")).GetComponent <Door>(); SetDoorAccess(tutorial_lockedDoor_1, null, false); SetDoorAccess(tutorial_lockedDoor_2, null, false); var mechanicInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, "", JobPrefab.Get("mechanic")); captain_mechanic = Character.Create(mechanicInfo, WayPoint.GetRandom(SpawnType.Human, mechanicInfo.Job, Submarine.MainSub).WorldPosition, "mechanic"); captain_mechanic.TeamID = Character.TeamType.Team1; captain_mechanic.GiveJobItems(); var securityInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, "", JobPrefab.Get("securityofficer")); captain_security = Character.Create(securityInfo, WayPoint.GetRandom(SpawnType.Human, securityInfo.Job, Submarine.MainSub).WorldPosition, "securityofficer"); captain_security.TeamID = Character.TeamType.Team1; captain_security.GiveJobItems(); var engineerInfo = new CharacterInfo(CharacterPrefab.HumanSpeciesName, "", JobPrefab.Get("engineer")); captain_engineer = Character.Create(engineerInfo, WayPoint.GetRandom(SpawnType.Human, engineerInfo.Job, Submarine.MainSub).WorldPosition, "engineer"); captain_engineer.TeamID = Character.TeamType.Team1; captain_engineer.GiveJobItems(); captain_mechanic.CanSpeak = captain_security.CanSpeak = captain_engineer.CanSpeak = false; captain_mechanic.AIController.Enabled = captain_security.AIController.Enabled = captain_engineer.AIController.Enabled = false; }
public override void Start() { base.Start(); Submarine.MainSub.GodMode = true; foreach (Structure wall in Structure.WallList) { if (wall.Submarine != null && wall.Submarine.Info.IsOutpost) { wall.Indestructible = true; } } CharacterInfo charInfo = configElement.Element("Character") == null ? new CharacterInfo(CharacterPrefab.HumanSpeciesName, jobPrefab: JobPrefab.Get("engineer")) : new CharacterInfo(configElement.Element("Character")); WayPoint wayPoint = GetSpawnPoint(charInfo); if (wayPoint == null) { DebugConsole.ThrowError("A waypoint with the spawntype \"" + spawnPointType + "\" is required for the tutorial event"); return; } character = Character.Create(charInfo, wayPoint.WorldPosition, "", isRemotePlayer: false, hasAi: false); character.TeamID = CharacterTeamType.Team1; Character.Controlled = character; character.GiveJobItems(null); var idCard = character.Inventory.FindItemByIdentifier("idcard"); if (idCard == null) { DebugConsole.ThrowError("Item prefab \"ID Card\" not found!"); return; } idCard.AddTag("com"); idCard.AddTag("eng"); foreach (Item item in Item.ItemList) { Door door = item.GetComponent <Door>(); if (door != null) { door.CanBeWelded = false; } } tutorialCoroutine = CoroutineManager.StartCoroutine(UpdateState()); }
public override void Start() { base.Start(); Submarine.MainSub.GodMode = true; CharacterInfo charInfo = configElement.Element("Character") == null ? new CharacterInfo(Character.HumanSpeciesName, "", JobPrefab.Get("engineer")) : new CharacterInfo(configElement.Element("Character")); WayPoint wayPoint = GetSpawnPoint(charInfo); if (wayPoint == null) { DebugConsole.ThrowError("A waypoint with the spawntype \"" + spawnPointType + "\" is required for the tutorial event"); return; } character = Character.Create(charInfo, wayPoint.WorldPosition, "", false, false); Character.Controlled = character; character.GiveJobItems(null); var idCard = character.Inventory.FindItemByIdentifier("idcard"); if (idCard == null) { DebugConsole.ThrowError("Item prefab \"ID Card\" not found!"); return; } idCard.AddTag("com"); idCard.AddTag("eng"); List <Entity> entities = Entity.GetEntityList(); for (int i = 0; i < entities.Count; i++) { if (entities[i] is Item) { Door door = (entities[i] as Item).GetComponent <Door>(); if (door != null) { door.CanBeWelded = false; } } } tutorialCoroutine = CoroutineManager.StartCoroutine(UpdateState()); }