static void Prefix(RepulsionCannon __instance)
        {
            if (Config.Instance.terrainImpactWithPropulsionCannon && !ClipmapLevelExtensions.isMeshesRebuilding)
            {
                var energyMixin = __instance.GetEnergyMixin();
                if (energyMixin.charge > 0f)
                {
#if BelowZero
                    GameObject closestObject = null;
                    var        closestPoint  = default(Vector3);

                    if (UWE.Utils.TraceFPSTargetPosition(Player.main.gameObject, 35f, ref closestObject, ref closestPoint, false))
                    {
                        if (closestObject && closestObject.GetComponent <TerrainChunkPiece>() != null)
                        {
                            Utils.Terraform(closestPoint, 1f);
                        }
                    }
#else
                    if (UWE.Utils.TraceHitComponentNormal <ClipmapChunk>(Player.main.gameObject, 35f, 1f, out _, out var position2))
                    {
                        Utils.Terraform(position2, 1f);
                    }
#endif
                }
            }
        }
Example #2
0
        public void Awake()
        {
            leftSide  = weaponFXParent.transform.Find("LeftBarrel").gameObject;
            rightSide = weaponFXParent.transform.Find("RightBarrel").gameObject;

            RepulsionCannon cannon = CraftData.GetPrefabForTechType(TechType.RepulsionCannon).GetComponent <RepulsionCannon>();

            shootSound = cannon.shootSound;
        }
 // Token: 0x06000016 RID: 22 RVA: 0x0000275C File Offset: 0x0000095C
 public static bool Prefix(RepulsionCannon __instance)
 {
     SkinnedMeshRenderer[] allComponentsInChildren  = __instance.GetAllComponentsInChildren <SkinnedMeshRenderer>();
     MeshRenderer[]        allComponentsInChildren2 = __instance.GetAllComponentsInChildren <MeshRenderer>();
     foreach (SkinnedMeshRenderer skinnedMeshRenderer in allComponentsInChildren)
     {
         bool flag = skinnedMeshRenderer.name.Contains("Propulsion_Cannon_geo");
         if (flag)
         {
             skinnedMeshRenderer.material.color = new Color32(Convert.ToByte(MainPatch.config.Propulsionvalue), Convert.ToByte(MainPatch.config.Propulsiongvalue), Convert.ToByte(MainPatch.config.Propulsionbvalue), 1);
         }
     }
     foreach (MeshRenderer meshRenderer in allComponentsInChildren2)
     {
         bool flag2 = meshRenderer.name.Contains("Propulsion_Cannon");
         if (flag2)
         {
             meshRenderer.material.color = new Color32(Convert.ToByte(MainPatch.config.Propulsionvalue), Convert.ToByte(MainPatch.config.Propulsiongvalue), Convert.ToByte(MainPatch.config.Propulsionbvalue), 1);
         }
     }
     return(true);
 }
Example #4
0
        public override GameObject GetGameObject()
        {
            Console.WriteLine("[AlienRifle] Loading Prefab");
            GameObject gobj = AlienRifleMod.bund.LoadAsset <GameObject>("AlienRifle.prefab");

            try
            {
                BoxCollider box = gobj.AddOrGetComponent <BoxCollider>();
                box.size = new Vector3(0.1f, 0.3f, 1f);

                Console.WriteLine("[AlienRifle] Modifying MeshRenderers of Object");
                foreach (Renderer render in gobj.GetComponentsInChildren <Renderer>())
                {
                    render.material.shader = Shader.Find("MarmosetUBER");
                }

                MeshRenderer rend = gobj.transform.Find("Main/MainBody").GetComponent <MeshRenderer>();
                rend.material = gobj.transform.Find("Main/EnergyGlow").GetComponent <MeshRenderer>().material;
                rend.material.SetColor("_Emission", new Color(0.2f, 0.2f, 0.2f));

                Console.WriteLine("[AlienRifle] Modifying Transform offset and rotation");
                Vector3 offset = new Vector3(0, 0.05f, 0.1f);
                gobj.transform.GetChild(0).localPosition += offset;
                //gobj.transform.GetChild(1).localPosition = offset;

                Console.WriteLine("[AlienRifle] Adding Essential components");
                gobj.AddOrGetComponent <PrefabIdentifier>().ClassId   = ClassID;
                gobj.AddOrGetComponent <LargeWorldEntity>().cellLevel = LargeWorldEntity.CellLevel.Near;
                Console.WriteLine("[AlienRifle] Adding SkyApplier");
                SkyApplier sky = gobj.AddOrGetComponent <SkyApplier>();
                sky.renderers = gobj.GetComponentsInChildren <MeshRenderer>();
                sky.anchorSky = Skies.Auto;

                Console.WriteLine("[AlienRifle] Adding WorldForces");
                WorldForces forces = gobj.AddOrGetComponent <WorldForces>();

                Console.WriteLine("[AlienRifle] Adding Rigidbody");
                Rigidbody rb = gobj.AddOrGetComponent <Rigidbody>();
                forces.underwaterGravity = 0;
                forces.useRigidbody      = rb;

                Pickupable pick = gobj.AddOrGetComponent <Pickupable>();
                pick.isPickupable = true;

                gobj.AddOrGetComponent <TechTag>().type = TechType;

                Fixer fixer = gobj.AddOrGetComponent <Fixer>();
                fixer.ClassId  = ClassID;
                fixer.techType = TechType;

                Console.WriteLine("[AlienRifle] Adding VFX Component");
                VFXFabricating vfxfabricating = gobj.transform.Find("Main").gameObject.AddOrGetComponent <VFXFabricating>();
                vfxfabricating.localMinY   = -0.4f;
                vfxfabricating.localMaxY   = 0.2f;
                vfxfabricating.posOffset   = new Vector3(-0.054f, 0f, -0.06f);
                vfxfabricating.eulerOffset = new Vector3(0f, 0f, 90f);
                vfxfabricating.scaleFactor = 1f;

                Console.WriteLine("[AlienRifle] Adding EnergyMixin Component");
                EnergyMixin AREnergy = gobj.AddOrGetComponent <EnergyMixin>();
                AREnergy.storageRoot         = gobj.transform.Find("Main").gameObject.AddOrGetComponent <ChildObjectIdentifier>();
                AREnergy.compatibleBatteries = new List <TechType>
                {
                    TechType.PrecursorIonBattery
                };
                AREnergy.allowBatteryReplacement = true;
                AREnergy.batteryModels           = new EnergyMixin.BatteryModels[]
                {
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.PrecursorIonBattery,
                        model    = gobj.transform.Find("Main/EnergyGlow").gameObject
                    }
                };

                Material mat = new Material(Shader.Find("MarmosetUBER"));

                Console.WriteLine("[AlienRifle] Adding AlienRifle Component");
                AlienRifle rifle = gobj.AddOrGetComponent <AlienRifle>();

                GameObject power = CraftData.InstantiateFromPrefab(TechType.PowerTransmitter);
                rifle.beamPrefab = power.GetComponent <PowerFX>().vfxPrefab;
                rifle.beamPrefab.GetComponent <LineRenderer>().material.color = Color.green;
                Object.Destroy(power);

                StasisRifle     stasisrifle = CraftData.InstantiateFromPrefab(TechType.StasisRifle).GetComponent <StasisRifle>();
                RepulsionCannon cannon      = CraftData.InstantiateFromPrefab(TechType.RepulsionCannon).GetComponent <RepulsionCannon>();

                rifle.shootSound  = cannon.shootSound;
                rifle.drawSound   = stasisrifle.drawSound;
                rifle.reloadSound = stasisrifle.reloadSound;

                rifle.muzzleFlash  = gobj.transform.Find("Main/Particles/Fire").GetComponent <ParticleSystem>();
                rifle.chargeSparks = gobj.transform.Find("Main/Particles/Charging").GetComponent <ParticleSystem>();
                Object.Destroy(stasisrifle);
                Object.Destroy(cannon);

                rifle.mainCollider             = gobj.GetComponent <BoxCollider>();
                rifle.ikAimRightArm            = true;
                rifle.ikAimLeftArm             = true;
                rifle.useLeftAimTargetOnPlayer = true;

                Console.WriteLine("[AlienRifle] Prefab loaded successfully!");
                return(gobj);
            }
            catch (Exception e) {
                Console.WriteLine("[AlienRifle] Rifle Object couldn't be loaded!\n" + e.Message + e.StackTrace);
                return(gobj);
            }
        }
Example #5
0
        public void SetUpArm(GameObject clonedArm, ModdedArmsHelper.API.SetupHelper graphicsHelper)
        {
            GameObject elbow = ArmServices.main.objectHelper.FindDeepChild(clonedArm, "elbow");

            Object.DestroyImmediate(clonedArm.FindChild("xPropulsionCannon_Beams"));
            Object.DestroyImmediate(clonedArm.FindChild("PropulsionCannonGrabbedEffect"));
            Object.DestroyImmediate(clonedArm.GetComponent <ExosuitPropulsionArm>());
            Object.DestroyImmediate(clonedArm.GetComponent <PropulsionCannon>());

            GameObject repulsion = elbow.FindChild("propulsion");

            repulsion.name = "repulsion";

            GameObject ArmRig = ArmServices.main.objectHelper.FindDeepChild(clonedArm, "ArmRig");
            GameObject exosuit_repulsion_geo = ArmRig.FindChild("ArmModel");

            Common.Helpers.GraphicsHelper.ChangeObjectTexture(exosuit_repulsion_geo, 2, illumTex: Main.illumTex);

            GameObject RepulsionCannonClone = ArmServices.main.objectHelper.GetGameObjectClone(Resources.Load <GameObject>("WorldEntities/Tools/RepulsionCannon"), clonedArm.transform);

            RepulsionCannonClone.name = "RepulsionCannon";

            /*
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<Pickupable>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<EnergyMixin>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<Rigidbody>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<PrefabIdentifier>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<LargeWorldEntity>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<FPModel>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<TechTag>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<WorldForces>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<CapsuleCollider>());
             * Object.DestroyImmediate(RepulsionCannonClone.GetComponent<SkyApplier>());
             *
             * Object.DestroyImmediate(RepulsionCannonClone.transform.Find("1st Person Model").gameObject);
             * Object.DestroyImmediate(RepulsionCannonClone.transform.Find("3rd Person Model").gameObject);
             * Object.DestroyImmediate(RepulsionCannonClone.transform.Find("BatterySlot").gameObject);
             */
            Object.DestroyImmediate(clonedArm.GetComponent <VFXController>());

            RepulsionCannon repulsionCannon = RepulsionCannonClone.GetComponent <RepulsionCannon>();

            repulsionCannon.fxControl.CopyComponent(clonedArm);

            VFXController armFX = clonedArm.GetComponent <VFXController>();

            Transform muzzle = ArmServices.main.objectHelper.FindDeepChild(clonedArm, "muzzle").transform;

            for (int i = 0; i < armFX.emitters.Length; i++)
            {
                VFXController.VFXEmitter emitter = armFX.emitters[i];

                emitter.parentTransform = muzzle;

                if (emitter.fx != null)
                {
                    foreach (ParticleSystem ps in emitter.fx.GetComponentsInChildren <ParticleSystem>(true))
                    {
                        ParticleSystem.MainModule psMain = ps.main;

                        ParticleSystem.MinMaxCurve startSize = psMain.startSize;

                        if (startSize.mode == ParticleSystemCurveMode.TwoConstants)
                        {
                            startSize.constant    = 1.5f;
                            startSize.constantMax = 1.5f;
                            startSize.constantMin = 1.5f;
                            psMain.startSize      = startSize;
                        }
                    }
                }
            }

            GameObject bubblesFX = ArmServices.main.objectHelper.GetGameObjectClone(repulsionCannon.bubblesFX, clonedArm.transform, false);

            bubblesFX.name = "xRepulsionCannon_Bubbles";

            Object.DestroyImmediate(RepulsionCannonClone);
        }
Example #6
0
        public override GameObject GetGameObject()
        {
            try
            {
                GameObject     gun       = techpistol.darktest.LoadAsset <GameObject>("techpistol.prefab");
                MeshRenderer[] allshader = gun.FindChild("HandGun").GetComponentsInChildren <MeshRenderer>();
                foreach (MeshRenderer setshader in allshader)
                {
                    setshader.material.shader = Shader.Find("MarmosetUBER");
                    setshader.material.SetColor("_Emission", new Color(1f, 1f, 1f));
                }
                gun.transform.Find("Cannonmode/shoot/shoo").gameObject.AgComponent <cool>();

                gun.AgComponent <PrefabIdentifier>().ClassId   = ClassID;
                gun.AgComponent <LargeWorldEntity>().cellLevel = LargeWorldEntity.CellLevel.Near;
                gun.AgComponent <Pickupable>().isPickupable    = true;;
                gun.AgComponent <TechTag>().type   = TechType;
                gun.AgComponent <Fixer>().techType = TechType;
                gun.AgComponent <Fixer>().ClassId  = ClassID;
                WorldForces World = gun.AgComponent <WorldForces>();
                Rigidbody   body  = gun.AgComponent <Rigidbody>();
                World.underwaterGravity = 0;
                World.useRigidbody      = body;

                EnergyMixin battery = gun.AgComponent <EnergyMixin>();
                battery.storageRoot             = gun.FindChild("BatteryRoot").AgComponent <ChildObjectIdentifier>();
                battery.allowBatteryReplacement = true;
                battery.compatibleBatteries     = new List <TechType>
                {
                    TechType.PrecursorIonBattery,
                    TechType.Battery,
                    TechType.PrecursorIonPowerCell,
                    TechType.PowerCell
                };
                battery.batteryModels = new EnergyMixin.BatteryModels[]
                {
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.PrecursorIonPowerCell,
                        model    = gun.transform.Find("BatteryRoot/PrecursorIonPowerCell").gameObject
                    },
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.Battery,
                        model    = gun.transform.Find("BatteryRoot/Battery").gameObject
                    },
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.PrecursorIonBattery,
                        model    = gun.transform.Find("BatteryRoot/PrecursorIonBattery").gameObject
                    },
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.PowerCell,
                        model    = gun.transform.Find("BatteryRoot/PowerCell").gameObject
                    }
                };
                Gun              biggun         = gun.AgComponent <Gun>();
                RepulsionCannon  Boo            = CraftData.InstantiateFromPrefab(TechType.RepulsionCannon).GetComponent <RepulsionCannon>();
                StasisRifle      Boo2           = CraftData.InstantiateFromPrefab(TechType.StasisRifle).GetComponent <StasisRifle>();
                PropulsionCannon build          = CraftData.InstantiateFromPrefab(TechType.PropulsionCannon).GetComponent <PropulsionCannon>();
                Welder           laserloop      = CraftData.InstantiateFromPrefab(TechType.Welder).GetComponent <Welder>();
                VFXFabricating   vfxfabricating = gun.FindChild("HandGun").AgComponent <VFXFabricating>();
                vfxfabricating.localMinY   = -3f;
                vfxfabricating.localMaxY   = 3f;
                vfxfabricating.posOffset   = new Vector3(0f, 0, 0f);
                vfxfabricating.eulerOffset = new Vector3(0f, 90f, -90f);
                vfxfabricating.scaleFactor = 1f;
                biggun.shoot1                   = Boo.shootSound;
                biggun.shoot2                   = Boo2.fireSound;
                biggun.xulikai                  = Boo2.chargeBegin;
                biggun.modechang                = build.shootSound;
                biggun.laseroopS                = laserloop.weldSound;
                biggun.mainCollider             = gun.GetComponent <BoxCollider>();
                biggun.ikAimRightArm            = true;
                biggun.useLeftAimTargetOnPlayer = true;
                UnityEngine.Object.Destroy(Boo2);
                UnityEngine.Object.Destroy(build);
                UnityEngine.Object.Destroy(Boo);
                UnityEngine.Object.Destroy(laserloop);
                return(gun);
            }
            catch
            {
                Console.WriteLine("初始化错误");
                return(new GameObject());
            }
        }