public void WeaponToBack(Weapon backItem) { if (this.backItem != null) { return; } for (int i = 0; i < 2; i++) { if (owner.grasps[i] != null && owner.grasps[i].grabbed == backItem) { owner.ReleaseGrasp(i); break; } } this.backItem = backItem; this.backItem.ChangeMode(Weapon.Mode.OnBack); interactionLocked = true; owner.noPickUpOnRelease = 20; owner.room.PlaySound(SoundID.Slugcat_Stash_Spear_On_Back, owner.mainBodyChunk); if (abstractStick != null) { abstractStick.Deactivate(); } abstractStick = new AbstractWeaponOnBackStick(owner.abstractPhysicalObject, this.backItem.abstractPhysicalObject); }
public void DropItem() { if (backItem != null) { backItem.firstChunk.vel = owner.mainBodyChunk.vel + Custom.RNV() * 3f * UnityEngine.Random.value; backItem.ChangeMode(Weapon.Mode.Free); backItem = null; if (abstractStick != null) { abstractStick.Deactivate(); abstractStick = null; } } }
public void WeaponToHand(bool eu) { if (backItem == null) { return; } for (int i = 0; i < 2; i++) { if (owner.grasps[i] != null && owner.Grabability(owner.grasps[i].grabbed) >= Player.ObjectGrabability.BigOneHand) { return; } } int targetHand = -1; for (int i = 0; i < 2; i++) { if (targetHand != -1) { break; } if (owner.grasps[i] == null) { targetHand = i; } } if (targetHand != -1) { if (owner.graphicsModule != null) { backItem.firstChunk.MoveFromOutsideMyUpdate(eu, (owner.graphicsModule as PlayerGraphics).hands[targetHand].pos); } owner.SlugcatGrab(backItem, targetHand); backItem = null; interactionLocked = true; owner.noPickUpOnRelease = 20; owner.room.PlaySound(SoundID.Slugcat_Pick_Up_Spear, owner.mainBodyChunk); if (abstractStick != null) { abstractStick.Deactivate(); abstractStick = null; } } }