private void LanternMouseCarryHook(On.LanternMouse.orig_Carried orig, LanternMouse self) { if (self.grabbedBy[0].grabber is Player && (self.grabbedBy[0].grabber as Player).playerState.slugcatCharacter == PlayerManager.GetCustomPlayer("Electric").SlugcatIndex) { if (!self.dead) { bool flag3 = self.room.aimap.TileAccessibleToCreature(self.mainBodyChunk.pos, self.Template) || self.room.aimap.TileAccessibleToCreature(self.bodyChunks[1].pos, self.Template); if (self.grabbedBy[0].grabber is Player && ((self.grabbedBy[0].grabber as Player).input[0].x != 0 || (self.grabbedBy[0].grabber as Player).input[0].y != 0)) { flag3 = false; } if (flag3) { self.struggleCountdownA--; if (self.struggleCountdownA < 0) { if (UnityEngine.Random.value < 0.008333334f) { self.struggleCountdownA = UnityEngine.Random.Range(20, 400); } for (int i = 0; i < 2; i++) { self.bodyChunks[i].vel += Custom.DegToVec(UnityEngine.Random.value * 360f) * 6f * UnityEngine.Random.value; } } } self.struggleCountdownB--; if (self.struggleCountdownB < 0 && UnityEngine.Random.value < 0.008333334f) { self.struggleCountdownB = UnityEngine.Random.Range(10, 100); } if (!self.dead && self.graphicsModule != null && (self.struggleCountdownA < 0 || self.struggleCountdownB < 0)) { if (UnityEngine.Random.value < 0.025f) { (self.graphicsModule as MouseGraphics).ResetUnconsiousProfile(); self.Die(); for (int i = 0; i < EVars.Count; i++) { if (EVars[i].ply == self.grabbedBy[0].grabber as Player) { EVars[i].EnterChargedModeNoToll(); } } } for (int j = 0; j < self.graphicsModule.bodyParts.Length; j++) { self.graphicsModule.bodyParts[j].pos += Custom.DegToVec(UnityEngine.Random.value * 360f) * 3f * UnityEngine.Random.value; self.graphicsModule.bodyParts[j].vel += Custom.DegToVec(UnityEngine.Random.value * 360f) * 6f * UnityEngine.Random.value; } } } } else { orig.Invoke(self); } }
public override void Realize() { if (realizedCreature != null) { return; } switch (creatureTemplate.TopAncestor().type) { case CreatureTemplate.Type.Slugcat: realizedCreature = new Player(this, world); break; case CreatureTemplate.Type.LizardTemplate: realizedCreature = new Lizard(this, world); break; case CreatureTemplate.Type.Fly: realizedCreature = new Fly(this, world); break; case CreatureTemplate.Type.Leech: realizedCreature = new Leech(this, world); break; case CreatureTemplate.Type.Snail: realizedCreature = new Snail(this, world); break; case CreatureTemplate.Type.Vulture: realizedCreature = new Vulture(this, world); break; case CreatureTemplate.Type.GarbageWorm: GarbageWormAI.MoveAbstractCreatureToGarbage(this, Room); realizedCreature = new GarbageWorm(this, world); break; case CreatureTemplate.Type.LanternMouse: realizedCreature = new LanternMouse(this, world); break; case CreatureTemplate.Type.CicadaA: realizedCreature = new Cicada(this, world, creatureTemplate.type == CreatureTemplate.Type.CicadaA); break; case CreatureTemplate.Type.Spider: realizedCreature = new Spider(this, world); break; case CreatureTemplate.Type.JetFish: realizedCreature = new JetFish(this, world); break; case (CreatureTemplate.Type)patch_CreatureTemplate.Type.SeaDrake: realizedCreature = new SeaDrake(this, world); break; case CreatureTemplate.Type.BigEel: realizedCreature = new BigEel(this, world); break; case CreatureTemplate.Type.Deer: realizedCreature = new Deer(this, world); break; case (CreatureTemplate.Type)patch_CreatureTemplate.Type.WalkerBeast: realizedCreature = new WalkerBeast(this, world); break; case CreatureTemplate.Type.TubeWorm: realizedCreature = new TubeWorm(this, world); break; case CreatureTemplate.Type.DaddyLongLegs: realizedCreature = new DaddyLongLegs(this, world); break; case CreatureTemplate.Type.TentaclePlant: if (creatureTemplate.type == CreatureTemplate.Type.TentaclePlant) { realizedCreature = new TentaclePlant(this, world); } else { realizedCreature = new PoleMimic(this, world); } break; case CreatureTemplate.Type.MirosBird: realizedCreature = new MirosBird(this, world); break; case CreatureTemplate.Type.TempleGuard: realizedCreature = new TempleGuard(this, world); break; case CreatureTemplate.Type.Centipede: case CreatureTemplate.Type.RedCentipede: case CreatureTemplate.Type.Centiwing: case CreatureTemplate.Type.SmallCentipede: realizedCreature = new Centipede(this, world); break; case CreatureTemplate.Type.Scavenger: realizedCreature = new Scavenger(this, world); break; case CreatureTemplate.Type.Overseer: realizedCreature = new Overseer(this, world); break; case CreatureTemplate.Type.VultureGrub: if (creatureTemplate.type == CreatureTemplate.Type.VultureGrub) { realizedCreature = new VultureGrub(this, world); } else if (creatureTemplate.type == CreatureTemplate.Type.Hazer) { realizedCreature = new Hazer(this, world); } break; case CreatureTemplate.Type.EggBug: realizedCreature = new EggBug(this, world); break; case CreatureTemplate.Type.BigSpider: case CreatureTemplate.Type.SpitterSpider: realizedCreature = new BigSpider(this, world); break; case CreatureTemplate.Type.BigNeedleWorm: if (creatureTemplate.type == CreatureTemplate.Type.SmallNeedleWorm) { realizedCreature = new SmallNeedleWorm(this, world); } else { realizedCreature = new BigNeedleWorm(this, world); } break; case CreatureTemplate.Type.DropBug: realizedCreature = new DropBug(this, world); break; } InitiateAI(); for (int i = 0; i < stuckObjects.Count; i++) { if (stuckObjects[i].A.realizedObject == null) { stuckObjects[i].A.Realize(); } if (stuckObjects[i].B.realizedObject == null) { stuckObjects[i].B.Realize(); } } }