Beispiel #1
0
            /// <summary>
            /// Removes a clone from the clone area
            /// </summary>
            public static void Remove()
            {
                if (CloneManager.Instance.GetNumClones() == 0)
                {
                    return;
                }

                List <MechBodyPart> bodyParts = ((List <FirstPersonMover>)Accessor.GetPrivateField(typeof(CloneArea), "_clones", CloneManager.Instance.CloneArea))[CloneManager.Instance.GetNumClones() - 1].GetAllBodyParts();

                FireSpreadDefinition fireSpread = new FireSpreadDefinition
                {
                    DamageSourceType         = DamageSourceType.None,
                    FireType                 = FireType.BanFire,
                    MinSpreadProbability     = 1000f,
                    SpreadProbabilityDropOff = 0f,
                    StartSpreadProbability   = 100f,
                    WaitBetweenSpreads       = 0.001f
                };

                for (int i = 0; i < bodyParts.Count; i++)
                {
                    bodyParts[i].TryCutVolume(
                        bodyParts[i].transform.position + new Vector3(2f, 0.5f, -2f),
                        bodyParts[i].transform.position + new Vector3(-2f, 0.5f, -2f),
                        bodyParts[i].transform.position + new Vector3(-2f, 0.5f, 2f),
                        bodyParts[i].transform.position + new Vector3(2f, 0.5f, 2f),
                        AttackManager.Instance.GetNextAttackID(), false, null, DamageSourceType.SpeedHackBanFire, fireSpread, false);
                }

                CloneManager.Instance.CloneArea.PutAllClonesBackToStartingPositions();
            }
Beispiel #2
0
            /// <summary>
            /// Creates an arrow and makes it fly in the given direction
            /// </summary>
            /// <param name="Owner">The FirstPersonMover that should be considered the owner of the arrow</param>
            /// <param name="StartPosition"></param>
            /// <param name="MoveDir"></param>
            /// <param name="fireSpreadDefinition"></param>
            /// <param name="BladeWidth"></param>
            /// <param name="MakeFlyBySound"></param>
            /// <param name="RotationZ"></param>
            /// <returns>The fired arrow</returns>
            public static ArrowProjectile CreateFlaming(FirstPersonMover Owner, Vector3 StartPosition, Vector3 MoveDir, FireSpreadDefinition fireSpreadDefinition, float BladeWidth = 1f, bool MakeFlyBySound = false, float RotationZ = 0f)
            {
                if (Owner == null)
                {
                    return(null);
                }

                ArrowProjectile arrow = Create(Owner, StartPosition, MoveDir, BladeWidth, MakeFlyBySound, RotationZ);

                arrow.SetOnFire(fireSpreadDefinition);

                return(arrow);
            }