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 SpearAppStickCtorHK(On.AbstractPhysicalObject.AbstractSpearAppendageStick.orig_ctor orig, AbstractPhysicalObject.AbstractSpearAppendageStick self, AbstractPhysicalObject spear, AbstractPhysicalObject stuckIn, int appendage, int prevSeg, float distanceToNext, 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.SendSpearAppendageStick(self.A, self.B, self.A.Room, appendage, prevSeg, distanceToNext, angle); } } orig(self, spear, stuckIn, appendage, prevSeg, distanceToNext, angle); }