Пример #1
0
 public override void simulate(uint simulation, bool inputSteady)
 {
     if (this.isDetonating && this.isDetonatable)
     {
         if (this.charges.Count > 0)
         {
             if (simulation - this.lastExplosion > 1u)
             {
                 this.lastExplosion = simulation;
                 InteractableCharge interactableCharge = this.charges[0];
                 this.charges.RemoveAt(0);
                 if (interactableCharge != null)
                 {
                     interactableCharge.detonate(base.channel.owner.playerID.steamID);
                 }
             }
         }
         else
         {
             this.isDetonating = false;
         }
     }
     if (this.isUsing && this.isUseable && this.charges.Count == 0)
     {
         base.player.equipment.isBusy = false;
         this.isUsing = false;
     }
 }
Пример #2
0
 public override void dequip()
 {
     if (base.channel.isOwner)
     {
         for (int i = 0; i < this.chargesInRadius.Count; i++)
         {
             InteractableCharge interactableCharge = this.chargesInRadius[i];
             interactableCharge.unhighlight();
         }
     }
 }
Пример #3
0
        public static Transform getBarricade(Transform parent, byte hp, ulong owner, ulong group, Vector3 pos, Quaternion rot, ushort id, byte[] state, ItemBarricadeAsset asset)
        {
            if (asset != null)
            {
                Transform transform;
                if (Dedicator.isDedicated)
                {
                    transform = Object.Instantiate <GameObject>(asset.clip).transform;
                }
                else
                {
                    transform = Object.Instantiate <GameObject>(asset.barricade).transform;
                }
                transform.name          = id.ToString();
                transform.parent        = parent;
                transform.localPosition = pos;
                transform.localRotation = rot;
                if (Provider.isServer && asset.nav != null)
                {
                    Transform transform2 = Object.Instantiate <GameObject>(asset.nav).transform;
                    transform2.name = "Nav";
                    if (asset.build == EBuild.DOOR || asset.build == EBuild.GATE || asset.build == EBuild.SHUTTER || asset.build == EBuild.HATCH)
                    {
                        Transform transform3 = transform.FindChild("Skeleton").FindChild("Hinge");
                        if (transform3 != null)
                        {
                            transform2.parent = transform3;
                        }
                        else
                        {
                            transform2.parent = transform;
                        }
                    }
                    else
                    {
                        transform2.parent = transform;
                    }
                    transform2.localPosition = Vector3.zero;
                    transform2.localRotation = Quaternion.identity;
                }
                Transform transform4 = transform.FindChildRecursive("Burning");
                if (transform4 != null)
                {
                    transform4.gameObject.AddComponent <TemperatureTrigger>().temperature = EPlayerTemperature.BURNING;
                }
                Transform transform5 = transform.FindChildRecursive("Warm");
                if (transform5 != null)
                {
                    transform5.gameObject.AddComponent <TemperatureTrigger>().temperature = EPlayerTemperature.WARM;
                }
                if (asset.build == EBuild.DOOR || asset.build == EBuild.GATE || asset.build == EBuild.SHUTTER || asset.build == EBuild.HATCH)
                {
                    InteractableDoor interactableDoor = transform.gameObject.AddComponent <InteractableDoor>();
                    interactableDoor.updateState(asset, state);
                    Transform transform6 = transform.FindChild("Skeleton").FindChild("Hinge");
                    if (transform6 != null)
                    {
                        transform6.gameObject.AddComponent <InteractableDoorHinge>().door = interactableDoor;
                    }
                    Transform transform7 = transform.FindChild("Skeleton").FindChild("Left_Hinge");
                    if (transform7 != null)
                    {
                        transform7.gameObject.AddComponent <InteractableDoorHinge>().door = interactableDoor;
                    }
                    Transform transform8 = transform.FindChild("Skeleton").FindChild("Right_Hinge");
                    if (transform8 != null)
                    {
                        transform8.gameObject.AddComponent <InteractableDoorHinge>().door = interactableDoor;
                    }
                }
                else if (asset.build == EBuild.BED)
                {
                    transform.gameObject.AddComponent <InteractableBed>().updateState(asset, state);
                }
                else if (asset.build == EBuild.STORAGE || asset.build == EBuild.STORAGE_WALL)
                {
                    transform.gameObject.AddComponent <InteractableStorage>().updateState(asset, state);
                }
                else if (asset.build == EBuild.FARM)
                {
                    transform.gameObject.AddComponent <InteractableFarm>().updateState(asset, state);
                }
                else if (asset.build == EBuild.TORCH || asset.build == EBuild.CAMPFIRE)
                {
                    transform.gameObject.AddComponent <InteractableFire>().updateState(asset, state);
                }
                else if (asset.build == EBuild.OVEN)
                {
                    transform.gameObject.AddComponent <InteractableOven>().updateState(asset, state);
                }
                else if (asset.build == EBuild.SPIKE || asset.build == EBuild.WIRE)
                {
                    transform.FindChild("Trap").gameObject.AddComponent <InteractableTrap>().updateState(asset, state);
                }
                else if (asset.build == EBuild.CHARGE)
                {
                    InteractableCharge interactableCharge = transform.gameObject.AddComponent <InteractableCharge>();
                    interactableCharge.updateState(asset, state);
                    interactableCharge.owner = owner;
                    interactableCharge.group = group;
                }
                else if (asset.build == EBuild.GENERATOR)
                {
                    transform.gameObject.AddComponent <InteractableGenerator>().updateState(asset, state);
                }
                else if (asset.build == EBuild.SPOT || asset.build == EBuild.CAGE)
                {
                    transform.gameObject.AddComponent <InteractableSpot>().updateState(asset, state);
                }
                else if (asset.build == EBuild.SAFEZONE)
                {
                    transform.gameObject.AddComponent <InteractableSafezone>().updateState(asset, state);
                }
                else if (asset.build == EBuild.OXYGENATOR)
                {
                    transform.gameObject.AddComponent <InteractableOxygenator>().updateState(asset, state);
                }
                else if (asset.build == EBuild.SIGN || asset.build == EBuild.SIGN_WALL || asset.build == EBuild.NOTE)
                {
                    transform.gameObject.AddComponent <InteractableSign>().updateState(asset, state);
                }
                else if (asset.build == EBuild.CLAIM)
                {
                    InteractableClaim interactableClaim = transform.gameObject.AddComponent <InteractableClaim>();
                    interactableClaim.updateState(asset);
                    interactableClaim.owner = owner;
                    interactableClaim.group = group;
                }
                else if (asset.build == EBuild.BEACON)
                {
                    transform.gameObject.AddComponent <InteractableBeacon>().updateState(asset);
                }
                else if (asset.build == EBuild.BARREL_RAIN)
                {
                    transform.gameObject.AddComponent <InteractableRainBarrel>().updateState(asset, state);
                }
                else if (asset.build == EBuild.OIL)
                {
                    transform.gameObject.AddComponent <InteractableOil>().updateState(asset, state);
                }
                else if (asset.build == EBuild.TANK)
                {
                    transform.gameObject.AddComponent <InteractableTank>().updateState(asset, state);
                }
                else if (asset.build == EBuild.SENTRY)
                {
                    InteractableSentry interactableSentry = transform.gameObject.AddComponent <InteractableSentry>();
                    InteractablePower  power = transform.gameObject.AddComponent <InteractablePower>();
                    interactableSentry.power = power;
                    interactableSentry.updateState(asset, state);
                }
                else if (asset.build == EBuild.LIBRARY)
                {
                    transform.gameObject.AddComponent <InteractableLibrary>().updateState(asset, state);
                }
                else if (asset.build == EBuild.MANNEQUIN)
                {
                    transform.gameObject.AddComponent <InteractableMannequin>().updateState(asset, state);
                }
                else if (asset.build == EBuild.STEREO)
                {
                    transform.gameObject.AddComponent <InteractableStereo>().updateState(asset, state);
                }
                if (!asset.isUnpickupable)
                {
                    Interactable2HP interactable2HP = transform.gameObject.AddComponent <Interactable2HP>();
                    interactable2HP.hp = hp;
                    if (asset.build == EBuild.DOOR || asset.build == EBuild.GATE || asset.build == EBuild.SHUTTER || asset.build == EBuild.HATCH)
                    {
                        Transform transform9 = transform.FindChild("Skeleton").FindChild("Hinge");
                        if (transform9 != null)
                        {
                            Interactable2SalvageBarricade interactable2SalvageBarricade = transform9.gameObject.AddComponent <Interactable2SalvageBarricade>();
                            interactable2SalvageBarricade.root  = transform;
                            interactable2SalvageBarricade.hp    = interactable2HP;
                            interactable2SalvageBarricade.owner = owner;
                            interactable2SalvageBarricade.group = group;
                        }
                        Transform transform10 = transform.FindChild("Skeleton").FindChild("Left_Hinge");
                        if (transform10 != null)
                        {
                            Interactable2SalvageBarricade interactable2SalvageBarricade2 = transform10.gameObject.AddComponent <Interactable2SalvageBarricade>();
                            interactable2SalvageBarricade2.root  = transform;
                            interactable2SalvageBarricade2.hp    = interactable2HP;
                            interactable2SalvageBarricade2.owner = owner;
                            interactable2SalvageBarricade2.group = group;
                        }
                        Transform transform11 = transform.FindChild("Skeleton").FindChild("Right_Hinge");
                        if (transform11 != null)
                        {
                            Interactable2SalvageBarricade interactable2SalvageBarricade3 = transform11.gameObject.AddComponent <Interactable2SalvageBarricade>();
                            interactable2SalvageBarricade3.root  = transform;
                            interactable2SalvageBarricade3.hp    = interactable2HP;
                            interactable2SalvageBarricade3.owner = owner;
                            interactable2SalvageBarricade3.group = group;
                        }
                    }
                    else
                    {
                        Interactable2SalvageBarricade interactable2SalvageBarricade4 = transform.gameObject.AddComponent <Interactable2SalvageBarricade>();
                        interactable2SalvageBarricade4.root  = transform;
                        interactable2SalvageBarricade4.hp    = interactable2HP;
                        interactable2SalvageBarricade4.owner = owner;
                        interactable2SalvageBarricade4.group = group;
                    }
                }
                return(transform);
            }
            Transform transform12 = new GameObject().transform;

            transform12.name             = id.ToString();
            transform12.tag              = "Barricade";
            transform12.gameObject.layer = LayerMasks.BARRICADE;
            return(transform12);
        }
Пример #4
0
 public override void startPrimary()
 {
     if (base.player.equipment.isBusy)
     {
         return;
     }
     if (this.isUseable)
     {
         if (base.channel.isOwner)
         {
             for (int i = 0; i < this.charges.Count; i++)
             {
                 InteractableCharge interactableCharge = this.charges[i];
                 if (!(interactableCharge == null))
                 {
                     RaycastInfo info = new RaycastInfo(interactableCharge.transform);
                     base.player.input.sendRaycast(info);
                 }
             }
             this.charges.Clear();
         }
         if (Provider.isServer)
         {
             this.charges.Clear();
             if (base.player.input.hasInputs())
             {
                 int inputCount = base.player.input.getInputCount();
                 for (int j = 0; j < inputCount; j++)
                 {
                     InputInfo input = base.player.input.getInput(false);
                     if (input != null)
                     {
                         if (input.type == ERaycastInfoType.BARRICADE)
                         {
                             if (!(input.transform == null) && input.transform.CompareTag("Barricade"))
                             {
                                 InteractableCharge component = input.transform.GetComponent <InteractableCharge>();
                                 if (!(component == null))
                                 {
                                     if (!((!Dedicator.isDedicated) ? (!component.hasOwnership) : (!OwnershipTool.checkToggle(base.channel.owner.playerID.steamID, component.owner, base.player.quests.groupID, component.group))))
                                     {
                                         this.charges.Add(component);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         base.player.equipment.isBusy = true;
         this.startedUse   = Time.realtimeSinceStartup;
         this.isUsing      = true;
         this.isDetonating = true;
         this.plunge();
         if (Provider.isServer)
         {
             base.player.life.markAggressive(false, true);
             base.channel.send("askPlunge", ESteamCall.NOT_OWNER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, new object[0]);
         }
     }
 }
Пример #5
0
 public override void tick()
 {
     if (base.channel.isOwner)
     {
         if ((base.transform.position - this.chargePoint).sqrMagnitude > 1f)
         {
             this.chargePoint = base.transform.position;
             this.foundInRadius.Clear();
             PowerTool.checkInteractables <InteractableCharge>(this.chargePoint, 64f, this.foundInRadius);
             for (int i = this.chargesInRadius.Count - 1; i >= 0; i--)
             {
                 InteractableCharge interactableCharge = this.chargesInRadius[i];
                 if (interactableCharge == null)
                 {
                     this.chargesInRadius.RemoveAtFast(i);
                 }
                 else if (!this.foundInRadius.Contains(interactableCharge))
                 {
                     interactableCharge.unhighlight();
                     this.chargesInRadius.RemoveAtFast(i);
                 }
             }
             for (int j = 0; j < this.foundInRadius.Count; j++)
             {
                 InteractableCharge interactableCharge2 = this.foundInRadius[j];
                 if (!(interactableCharge2 == null))
                 {
                     if (interactableCharge2.hasOwnership)
                     {
                         if (!this.chargesInRadius.Contains(interactableCharge2))
                         {
                             interactableCharge2.highlight();
                             this.chargesInRadius.Add(interactableCharge2);
                         }
                     }
                 }
             }
         }
         InteractableCharge interactableCharge3 = null;
         float num = 0.98f;
         for (int k = 0; k < this.chargesInRadius.Count; k++)
         {
             InteractableCharge interactableCharge4 = this.chargesInRadius[k];
             if (!(interactableCharge4 == null))
             {
                 float num2 = Vector3.Dot((interactableCharge4.transform.position - MainCamera.instance.transform.position).normalized, MainCamera.instance.transform.forward);
                 if (num2 > num)
                 {
                     interactableCharge3 = interactableCharge4;
                     num = num2;
                 }
             }
         }
         if (interactableCharge3 != this.target)
         {
             if (this.target != null)
             {
                 this.target.untarget();
             }
             this.target = interactableCharge3;
             if (this.target != null)
             {
                 this.target.target();
             }
         }
     }
 }