public override void RecreateSticksFromAbstract() { for (int i = 0; i < abstractPhysicalObject.stuckObjects.Count; i++) { if (abstractPhysicalObject.stuckObjects[i] is AbstractPhysicalObject.AbstractSpearStick && (abstractPhysicalObject.stuckObjects[i] as AbstractPhysicalObject.AbstractSpearStick).Spear == abstractPhysicalObject && (abstractPhysicalObject.stuckObjects[i] as AbstractPhysicalObject.AbstractSpearStick).LodgedIn.realizedObject != null) { AbstractPhysicalObject.AbstractSpearStick abstractSpearStick = abstractPhysicalObject.stuckObjects[i] as AbstractPhysicalObject.AbstractSpearStick; stuckInObject = abstractSpearStick.LodgedIn.realizedObject; stuckInChunkIndex = abstractSpearStick.chunk; stuckBodyPart = abstractSpearStick.bodyPart; stuckRotation = abstractSpearStick.angle; ChangeMode(Mode.StuckInCreature); } else if (abstractPhysicalObject.stuckObjects[i] is AbstractPhysicalObject.AbstractSpearAppendageStick && (abstractPhysicalObject.stuckObjects[i] as AbstractPhysicalObject.AbstractSpearAppendageStick).Spear == abstractPhysicalObject && (abstractPhysicalObject.stuckObjects[i] as AbstractPhysicalObject.AbstractSpearAppendageStick).LodgedIn.realizedObject != null) { AbstractPhysicalObject.AbstractSpearAppendageStick abstractSpearAppendageStick = abstractPhysicalObject.stuckObjects[i] as AbstractPhysicalObject.AbstractSpearAppendageStick; stuckInObject = abstractSpearAppendageStick.LodgedIn.realizedObject; stuckInAppendage = new Appendage.Pos(stuckInObject.appendages[abstractSpearAppendageStick.appendage], abstractSpearAppendageStick.prevSeg, abstractSpearAppendageStick.distanceToNext); stuckRotation = abstractSpearAppendageStick.angle; ChangeMode(Mode.StuckInCreature); } } }
private static void SpearStickCtorHK(On.AbstractPhysicalObject.AbstractSpearStick.orig_ctor orig, AbstractPhysicalObject.AbstractSpearStick self, AbstractPhysicalObject spear, AbstractPhysicalObject stuckIn, int chunk, int bodyPart, float angle) { if (MonklandSteamManager.isInGame && spear != null && stuckIn != null && spear.Room != null && self.A != null && self.B != null) { AbsPhyObjFields As = GetField(self.A); AbsPhyObjFields Bs = GetField(self.B); if (As.networkObject || Bs.networkObject) { MonklandSteamManager.EntityManager.SendSpearStick(self.A, self.B, self.A.Room, chunk, bodyPart, angle); } } orig(self, spear, stuckIn, chunk, bodyPart, angle); }