public override void OnUpdate(float deltaTime) { foreach (var entity in _healthFilter) { ref var health = ref entity.GetComponent <Health>(); if (health.Value == 0) { if (entity.Has <PlayerData>()) { var respawnMarker = new RespawnMarker() { RespawnTime = 3f }; entity.SetComponent(respawnMarker); entity.AddComponent <LockInputMarker>(); health.Value = Config.Lives; ref var transform = ref entity.GetComponent <TransformData>(); transform.transform.position = new Vector2(100, 100); } else if (entity.Has <Emblem>()) { health.Value = 1; ref var emblem = ref entity.GetComponent <Emblem>(); ref var spriteView = ref entity.GetComponent <SpriteView>();
private static void HandleBenchSave(On.PlayerData.orig_SetBenchRespawn_RespawnMarker_string_int orig, PlayerData self, RespawnMarker spawnMarker, string sceneName, int spawnType) { if (CanSaveInRoom(sceneName)) { orig(self, spawnMarker, sceneName, spawnType); } }
public override void OnEnter() { GameManager gm = Ref.GM; if (gm == null) { Finish(); return; } PlayerData pd = gm.playerData; if (pd == null) { Finish(); return; } GameObject spawnPoint = GameObject.FindGameObjectWithTag("RespawnPoint"); if (spawnPoint == null) { LogWarn( "RandomizerSetHardSave action present in scene with no respawn points: " + Ref.GM.GetSceneNameString()); Finish(); return; } PlayMakerFSM bench = FSMUtility.LocateFSM(spawnPoint, "Bench Control"); RespawnMarker marker = spawnPoint.GetComponent <RespawnMarker>(); if (bench != null) { pd.SetBenchRespawn(spawnPoint.name, gm.GetSceneNameString(), 1, true); } else if (marker != null) { pd.SetBenchRespawn(marker, gm.GetSceneNameString(), 2); } else { LogWarn( "RandomizerSetHardSave could not identify type of RespawnPoint object in scene " + Ref.GM.GetSceneNameString()); Finish(); return; } gm.SaveGame(); Finish(); }
private static void PlayerData_SetBenchRespawn ( On.PlayerData.orig_SetBenchRespawn_RespawnMarker_string_int orig, PlayerData self, RespawnMarker spawnMarker, string sceneName, int spawnType ) { if (IsGarbage || spawnMarker != null && !string.IsNullOrEmpty(spawnMarker.name) && spawnMarker.name.ToLower().Contains("bench")) { orig(self, spawnMarker, sceneName, spawnType); } }