Beispiel #1
0
        // Token: 0x06002AE6 RID: 10982 RVA: 0x000B48DC File Offset: 0x000B2ADC
        public override void OnEnter()
        {
            base.OnEnter();
            this.duration      = Throw.baseDuration / this.attackSpeedStat;
            this.modelAnimator = base.GetModelAnimator();
            Transform modelTransform = base.GetModelTransform();

            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    this.rightMuzzleTransform = component.FindChild("MuzzleRight");
                }
            }
            if (this.modelAnimator)
            {
                int layerIndex = this.modelAnimator.GetLayerIndex("Gesture");
                if (this.modelAnimator.GetCurrentAnimatorStateInfo(layerIndex).IsName("Throw1"))
                {
                    base.PlayCrossfade("Gesture", "Throw2", "Throw.playbackRate", this.duration / (1f - Throw.returnToIdlePercentage), 0.2f);
                }
                else
                {
                    base.PlayCrossfade("Gesture", "Throw1", "Throw.playbackRate", this.duration / (1f - Throw.returnToIdlePercentage), 0.2f);
                }
            }
            if (base.characterBody)
            {
                base.characterBody.SetAimTimer(2f);
            }
        }
 // Token: 0x0600089C RID: 2204 RVA: 0x0002B228 File Offset: 0x00029428
 private void FireSingleTarball(string targetMuzzle)
 {
     base.PlayCrossfade("Body", "FireTarBall", 0.1f);
     Util.PlaySound(FireTarball.attackSoundString, base.gameObject);
     this.aimRay = base.GetAimRay();
     if (this.modelTransform)
     {
         ChildLocator component = this.modelTransform.GetComponent <ChildLocator>();
         if (component)
         {
             Transform transform = component.FindChild(targetMuzzle);
             if (transform)
             {
                 this.aimRay.origin = transform.position;
             }
         }
     }
     base.AddRecoil(-1f * FireTarball.recoilAmplitude, -2f * FireTarball.recoilAmplitude, -1f * FireTarball.recoilAmplitude, 1f * FireTarball.recoilAmplitude);
     if (FireTarball.effectPrefab)
     {
         EffectManager.instance.SimpleMuzzleFlash(FireTarball.effectPrefab, base.gameObject, targetMuzzle, false);
     }
     if (base.isAuthority)
     {
         Vector3 forward = Vector3.ProjectOnPlane(this.aimRay.direction, Vector3.up);
         ProjectileManager.instance.FireProjectile(FireTarball.projectilePrefab, this.aimRay.origin, Util.QuaternionSafeLookRotation(forward), base.gameObject, this.damageStat * FireTarball.damageCoefficient, 0f, Util.CheckRoll(this.critStat, base.characterBody.master), DamageColorIndex.Default, null, -1f);
     }
     base.characterBody.AddSpreadBloom(FireTarball.spreadBloomValue);
 }
Beispiel #3
0
 // Token: 0x06002CD5 RID: 11477 RVA: 0x000BD06C File Offset: 0x000BB26C
 private void FireBullet(string targetMuzzle)
 {
     this.aimRay = base.GetAimRay();
     if (this.modelTransform)
     {
         ChildLocator component = this.modelTransform.GetComponent <ChildLocator>();
         if (component)
         {
             Transform transform = component.FindChild(targetMuzzle);
             if (transform)
             {
                 base.rigidbody.AddForceAtPosition(transform.forward * FireCannon.selfForce, transform.position, ForceMode.Impulse);
             }
         }
     }
     if (FireCannon.effectPrefab)
     {
         EffectManager.SimpleMuzzleFlash(FireCannon.effectPrefab, base.gameObject, targetMuzzle, false);
     }
     if (base.isAuthority)
     {
         float   x      = UnityEngine.Random.Range(FireCannon.minSpread, FireCannon.maxSpread);
         float   z      = UnityEngine.Random.Range(0f, 360f);
         Vector3 up     = Vector3.up;
         Vector3 axis   = Vector3.Cross(up, this.aimRay.direction);
         Vector3 vector = Quaternion.Euler(0f, 0f, z) * (Quaternion.Euler(x, 0f, 0f) * Vector3.forward);
         float   y      = vector.y;
         vector.y = 0f;
         float   angle   = Mathf.Atan2(vector.z, vector.x) * 57.29578f - 90f;
         float   angle2  = Mathf.Atan2(y, vector.magnitude) * 57.29578f + FireCannon.arcAngle;
         Vector3 forward = Quaternion.AngleAxis(angle, up) * (Quaternion.AngleAxis(angle2, axis) * this.aimRay.direction);
         ProjectileManager.instance.FireProjectile(FireCannon.projectilePrefab, this.aimRay.origin, Util.QuaternionSafeLookRotation(forward), base.gameObject, this.damageStat * FireCannon.damageCoefficient, 0f, Util.CheckRoll(this.critStat, base.characterBody.master), DamageColorIndex.Default, null, -1f);
     }
 }
        // Token: 0x060003FF RID: 1023 RVA: 0x00010694 File Offset: 0x0000E894
        public override void OnEnter()
        {
            base.OnEnter();
            Ray    aimRay = base.GetAimRay();
            string text   = "MuzzleLeft";
            string text2  = "MuzzleRight";

            this.duration = FireCannons.baseDuration / this.attackSpeedStat;
            if (FireCannons.effectPrefab)
            {
                EffectManager.instance.SimpleMuzzleFlash(FireCannons.effectPrefab, base.gameObject, text, false);
                EffectManager.instance.SimpleMuzzleFlash(FireCannons.effectPrefab, base.gameObject, text2, false);
            }
            base.PlayAnimation("Gesture", "FireCannons", "FireCannons.playbackRate", this.duration);
            if (base.isAuthority && base.modelLocator && base.modelLocator.modelTransform)
            {
                ChildLocator component = base.modelLocator.modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    int       childIndex  = component.FindChildIndex(text);
                    int       childIndex2 = component.FindChildIndex(text2);
                    Transform transform   = component.FindChild(childIndex);
                    Transform transform2  = component.FindChild(childIndex2);
                    if (transform)
                    {
                        ProjectileManager.instance.FireProjectile(FireCannons.projectilePrefab, transform.position, Util.QuaternionSafeLookRotation(aimRay.direction), base.gameObject, this.damageStat * FireCannons.damageCoefficient, FireCannons.force, Util.CheckRoll(this.critStat, base.characterBody.master), DamageColorIndex.Default, null, -1f);
                    }
                    if (transform)
                    {
                        ProjectileManager.instance.FireProjectile(FireCannons.projectilePrefab, transform2.position, Util.QuaternionSafeLookRotation(aimRay.direction), base.gameObject, this.damageStat * FireCannons.damageCoefficient, FireCannons.force, Util.CheckRoll(this.critStat, base.characterBody.master), DamageColorIndex.Default, null, -1f);
                    }
                }
            }
        }
Beispiel #5
0
        public override void OnEnter()
        {
            base.OnEnter();
            duration = baseDuration / characterBody.attackSpeed;
            if (modelLocator && characterBody && rigidbody)
            {
                childLocator = modelLocator.modelTransform.GetComponent <ChildLocator>();
                if (childLocator)
                {
                    voidLanceCenter = childLocator.FindChild("VoidLanceCenter");
                }

                var aimRay = GetAimRay();
                bullseyeSearch          = new BullseyeSearch();
                bullseyeSearch.viewer   = characterBody;
                bullseyeSearch.sortMode = BullseyeSearch.SortMode.DistanceAndAngle;
                bullseyeSearch.filterByDistinctEntity = true;
                bullseyeSearch.filterByLoS            = true;
                bullseyeSearch.teamMaskFilter         = TeamMask.allButNeutral;
                bullseyeSearch.teamMaskFilter.RemoveTeam(TeamComponent.GetObjectTeam(gameObject));
                bullseyeSearch.minDistanceFilter = 3f;
                bullseyeSearch.maxDistanceFilter = 50f;
                bullseyeSearch.searchOrigin      = aimRay.origin;
                bullseyeSearch.searchDirection   = aimRay.direction;
                bullseyeSearch.maxAngleFilter    = 30f;

                if (dragPenalty != 0f)
                {
                    rigidbody.drag += dragPenalty;
                }
            }
        }
Beispiel #6
0
        // Token: 0x0600041E RID: 1054 RVA: 0x00011214 File Offset: 0x0000F414
        public override void OnEnter()
        {
            base.OnEnter();
            this.duration = ChargeRHCannon.baseDuration / this.attackSpeedStat;
            Transform modelTransform = base.GetModelTransform();

            base.PlayAnimation("Gesture", "ChargeRHCannon", "ChargeRHCannon.playbackRate", this.duration);
            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component && ChargeRHCannon.effectPrefab)
                {
                    Transform transform = component.FindChild("MuzzleRight");
                    if (transform)
                    {
                        this.chargeEffectRight = UnityEngine.Object.Instantiate <GameObject>(ChargeRHCannon.effectPrefab, transform.position, transform.rotation);
                        this.chargeEffectRight.transform.parent = transform;
                    }
                }
            }
            if (base.characterBody)
            {
                base.characterBody.SetAimTimer(this.duration);
            }
        }
 // Token: 0x0600073D RID: 1853 RVA: 0x0002342C File Offset: 0x0002162C
 public override void OnEnter()
 {
     base.OnEnter();
     this.modelAnimator  = base.GetModelAnimator();
     this.modelTransform = base.GetModelTransform();
     Util.PlayScaledSound(ClapState.attackSoundString, base.gameObject, this.attackSpeedStat);
     base.PlayCrossfade("Body", "Clap", "Clap.playbackRate", ClapState.duration, 0.1f);
     if (this.modelTransform)
     {
         ChildLocator component = this.modelTransform.GetComponent <ChildLocator>();
         if (component)
         {
             GameObject original   = Resources.Load <GameObject>("Prefabs/GolemClapCharge");
             Transform  transform  = component.FindChild("HandL");
             Transform  transform2 = component.FindChild("HandR");
             if (transform)
             {
                 this.leftHandChargeEffect = UnityEngine.Object.Instantiate <GameObject>(original, transform);
             }
             if (transform2)
             {
                 this.rightHandChargeEffect = UnityEngine.Object.Instantiate <GameObject>(original, transform2);
             }
         }
     }
 }
        // Token: 0x06002C09 RID: 11273 RVA: 0x000BA124 File Offset: 0x000B8324
        public override void OnEnter()
        {
            base.OnEnter();
            base.PlayAnimation("Base", "InitialSpawn");
            Transform modelTransform = base.GetModelTransform();

            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    Transform transform = component.FindChild("Travel");
                    if (transform)
                    {
                        this.shakeEmitter      = transform.gameObject.AddComponent <ShakeEmitter>();
                        this.shakeEmitter.wave = new Wave
                        {
                            amplitude   = 1f,
                            frequency   = 180f,
                            cycleOffset = 0f
                        };
                        this.shakeEmitter.duration           = 10000f;
                        this.shakeEmitter.radius             = 400f;
                        this.shakeEmitter.amplitudeTimeDecay = false;
                    }
                }
            }
        }
Beispiel #9
0
        internal static void SetupCharacterModel(GameObject prefab, CustomRendererInfo[] rendererInfo, int mainRendererIndex)
        {
            CharacterModel characterModel = prefab.GetComponent <ModelLocator>().modelTransform.gameObject.AddComponent <CharacterModel>();
            ChildLocator   childLocator   = characterModel.GetComponent <ChildLocator>();

            characterModel.body = prefab.GetComponent <CharacterBody>();

            List <CharacterModel.RendererInfo> rendererInfos = new List <CharacterModel.RendererInfo>();

            for (int i = 0; i < rendererInfo.Length; i++)
            {
                rendererInfos.Add(new CharacterModel.RendererInfo
                {
                    renderer                 = childLocator.FindChild(rendererInfo[i].childName).GetComponent <Renderer>(),
                    defaultMaterial          = rendererInfo[i].material,
                    ignoreOverlays           = rendererInfo[i].ignoreOverlays,
                    defaultShadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On
                });
            }

            characterModel.baseRendererInfos = rendererInfos.ToArray();

            characterModel.autoPopulateLightInfos = true;
            characterModel.invisibilityCount      = 0;
            characterModel.temporaryOverlays      = new List <TemporaryOverlay>();

            characterModel.mainSkinnedMeshRenderer = characterModel.baseRendererInfos[mainRendererIndex].renderer.GetComponent <SkinnedMeshRenderer>();
        }
Beispiel #10
0
        // Token: 0x0600330D RID: 13069 RVA: 0x000DD464 File Offset: 0x000DB664
        public override void OnEnter()
        {
            base.OnEnter();
            this.duration = ChargeSpit.baseDuration / this.attackSpeedStat;
            Transform modelTransform = base.GetModelTransform();

            base.PlayCrossfade("Gesture", "ChargeSpit", "ChargeSpit.playbackRate", this.duration, 0.2f);
            Util.PlaySound(ChargeSpit.attackSoundString, base.gameObject);
            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component && ChargeSpit.effectPrefab)
                {
                    Transform transform = component.FindChild("Mouth");
                    if (transform)
                    {
                        this.chargeEffect = UnityEngine.Object.Instantiate <GameObject>(ChargeSpit.effectPrefab, transform.position, transform.rotation);
                        this.chargeEffect.transform.parent = transform;
                        ScaleParticleSystemDuration component2 = this.chargeEffect.GetComponent <ScaleParticleSystemDuration>();
                        if (component2)
                        {
                            component2.newDuration = this.duration;
                        }
                    }
                }
            }
        }
Beispiel #11
0
        public override void OnEnter()
        {
            base.OnEnter();
            this.duration = ChargeBeam.baseDuration / this.attackSpeedStat;
            Animator  modelAnimator  = base.GetModelAnimator();
            Transform modelTransform = base.GetModelTransform();

            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    Transform transform = component.FindChild("Head");
                    if (transform && ChargeMegaFireball.chargeEffectPrefab)
                    {
                        this.chargeInstance = UnityEngine.Object.Instantiate <GameObject>(ChargeMegaFireball.chargeEffectPrefab, transform.position, transform.rotation);
                        this.chargeInstance.transform.parent = transform;
                        ScaleParticleSystemDuration component2 = this.chargeInstance.GetComponent <ScaleParticleSystemDuration>();
                        if (component2)
                        {
                            component2.newDuration = this.duration;
                        }
                    }
                }
            }
            if (modelAnimator)
            {
                base.PlayCrossfade("Gesture, Additive", "ChargeMegaFireball", "ChargeMegaFireball.playbackRate", this.duration, 0.1f);
            }
        }
        public override void OnEnter()
        {
            if (goodState == null)
            {
                goodState = new FireCannons();
            }
            effectPrefab = goodState.effectPrefab;

            base.OnEnter();
            Ray aimRay = base.GetAimRay();

            duration = baseDuration / attackSpeedStat;

            PlayAnimation("Body", "FireAttack1", "FireAttack1.playbackRate", duration);
            if ((bool)effectPrefab)
            {
                EffectManager.SimpleMuzzleFlash(this.effectPrefab, base.gameObject, "Muzzle", false);
            }

            if (base.isAuthority && base.modelLocator && base.modelLocator.modelTransform)
            {
                ChildLocator childLocator = base.modelLocator.modelTransform.GetComponent <ChildLocator>();
                if (childLocator)
                {
                    Transform muzzleTransform = childLocator.FindChild("Muzzle");
                    if (muzzleTransform)
                    {
                        ProjectileManager.instance.FireProjectile(Resources.Load <GameObject>("Prefabs/Projectiles/ArchWispCannon"), transform.position, Util.QuaternionSafeLookRotation(aimRay.direction), gameObject, damageStat * damageCoefficient, 80f, Util.CheckRoll(critStat, characterBody.master), DamageColorIndex.Default, null, -1f);
                    }
                }
            }
        }
        // Token: 0x0600049B RID: 1179 RVA: 0x00013388 File Offset: 0x00011588
        public override void OnEnter()
        {
            base.OnEnter();
            base.PlayAnimation("Base", "Release");
            Transform modelTransform = base.GetModelTransform();

            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                component.FindChild("Door").gameObject.SetActive(false);
                component.FindChild("ReleaseExhaustFX").gameObject.SetActive(true);
            }
            if (!base.survivorPodController)
            {
                return;
            }
            if (Util.HasEffectiveAuthority(base.survivorPodController.characterBodyObject))
            {
                base.survivorPodController.characterStateMachine.SetNextStateToMain();
                TeleportHelper.TeleportGameObject(base.survivorPodController.characterBodyObject, base.survivorPodController.exitPosition.position);
                CharacterMotor component2 = base.survivorPodController.characterBodyObject.GetComponent <CharacterMotor>();
                if (component2)
                {
                    component2.velocity = base.survivorPodController.exitPosition.forward * Release.ejectionSpeed;
                }
            }
        }
        public override void OnEnter()
        {
            base.OnEnter();
            this.duration = ChargeUltraFireball.baseDuration / this.attackSpeedStat;
            UnityEngine.Object modelAnimator  = base.GetModelAnimator();
            Transform          modelTransform = base.GetModelTransform();

            Util.PlayAttackSpeedSound(EntityStates.LemurianBruiserMonster.ChargeMegaFireball.attackString, base.gameObject, this.attackSpeedStat);

            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    Transform transform = component.FindChild("MuzzleMouth");
                    if (transform && EntityStates.LemurianBruiserMonster.ChargeMegaFireball.chargeEffectPrefab)
                    {
                        this.chargeInstance = UnityEngine.Object.Instantiate <GameObject>(EntityStates.LemurianBruiserMonster.ChargeMegaFireball.chargeEffectPrefab, transform.position, transform.rotation);
                        this.chargeInstance.transform.parent = transform;

                        ScaleParticleSystemDuration component2 = this.chargeInstance.GetComponent <ScaleParticleSystemDuration>();
                        if (component2)
                        {
                            component2.newDuration = this.duration;
                        }
                    }
                }
            }

            if (modelAnimator)
            {
                base.PlayCrossfade("Gesture, Additive", "ChargeMegaFireball", "ChargeMegaFireball.playbackRate", this.duration, 0.1f);
            }
        }
Beispiel #15
0
        private static void InitializeNemSkins()
        {
            if (Prefabs.nemPaladinPrefab == null)
            {
                return;
            }

            GameObject bodyPrefab = Prefabs.nemPaladinPrefab;

            GameObject     model          = bodyPrefab.GetComponentInChildren <ModelLocator>().modelTransform.gameObject;
            CharacterModel characterModel = model.GetComponent <CharacterModel>();

            ModelSkinController skinController = model.AddComponent <ModelSkinController>();
            ChildLocator        childLocator   = model.GetComponent <ChildLocator>();

            SkinnedMeshRenderer mainRenderer = characterModel.mainSkinnedMeshRenderer;

            List <SkinDef> skinDefs = new List <SkinDef>();

            #region DefaultSkin
            CharacterModel.RendererInfo[] defaultRenderers = characterModel.baseRendererInfos;
            SkinDef defaultSkin = CreateSkinDef("PALADINBODY_DEFAULT_SKIN_NAME", Assets.mainAssetBundle.LoadAsset <Sprite>("texMainSkin"), defaultRenderers, mainRenderer, model);
            defaultSkin.meshReplacements = new SkinDef.MeshReplacement[0];

            skinDefs.Add(defaultSkin);
            #endregion

            skinController.skins = skinDefs.ToArray();
        }
Beispiel #16
0
 // Token: 0x06003131 RID: 12593 RVA: 0x000D3C24 File Offset: 0x000D1E24
 public override void OnEnter()
 {
     base.OnEnter();
     if (base.isAuthority)
     {
         this.currentPlacementInfo = this.GetPlacementInfo();
         this.blueprints           = UnityEngine.Object.Instantiate <GameObject>(this.blueprintPrefab, this.currentPlacementInfo.position, this.currentPlacementInfo.rotation).GetComponent <BlueprintController>();
     }
     base.PlayAnimation("Gesture", "PrepTurret");
     this.entryCountdown = 0.1f;
     this.exitCountdown  = 0.25f;
     this.exitPending    = false;
     if (base.modelLocator)
     {
         ChildLocator component = base.modelLocator.modelTransform.GetComponent <ChildLocator>();
         if (component)
         {
             Transform transform = component.FindChild("WristDisplay");
             if (transform)
             {
                 this.wristDisplayObject = UnityEngine.Object.Instantiate <GameObject>(this.wristDisplayPrefab, transform);
             }
         }
     }
 }
 // Token: 0x060015D7 RID: 5591 RVA: 0x0005D1FC File Offset: 0x0005B3FC
 private Transform FindAttachmentTransform()
 {
     this.projectileGhostController = base.GetComponent <ProjectileGhostController>();
     if (this.projectileGhostController)
     {
         Transform authorityTransform = this.projectileGhostController.authorityTransform;
         if (authorityTransform)
         {
             ProjectileController component = authorityTransform.GetComponent <ProjectileController>();
             if (component)
             {
                 GameObject owner = component.owner;
                 if (owner)
                 {
                     ModelLocator component2 = owner.GetComponent <ModelLocator>();
                     if (component2)
                     {
                         Transform modelTransform = component2.modelTransform;
                         if (modelTransform)
                         {
                             ChildLocator component3 = modelTransform.GetComponent <ChildLocator>();
                             if (component3)
                             {
                                 return(component3.FindChild(this.attachmentString));
                             }
                         }
                     }
                 }
             }
         }
     }
     return(null);
 }
Beispiel #18
0
        public override void OnEnter()
        {
            base.OnEnter();
            this.childLocator = base.GetModelChildLocator();
            this.animator     = base.GetModelAnimator();
            if (base.healthComponent.combinedHealth >= (0.9f * base.healthComponent.fullCombinedHealth) || base.healthComponent.barrier > 0)
            {
                this.swordActive     = true;
                this.swordTransition = StaticValues.maxSwordGlow;
            }
            else
            {
                this.swordActive     = false;
                this.swordTransition = 0;
            }
            this.swordController = base.characterBody.GetComponent <PaladinSwordController>();

            if (base.characterBody)
            {
                Transform modelTransform = base.GetModelTransform();
                if (modelTransform)
                {
                    this.swordMat = modelTransform.GetComponent <CharacterModel>().baseRendererInfos[0].defaultMaterial;
                }
            }

            if (this.childLocator)
            {
                string effectString = Modules.Effects.GetSkinInfo(this.swordController.skinName).passiveEffectName;
                if (effectString != "")
                {
                    this.swordActiveEffect = this.childLocator.FindChild(effectString).gameObject;
                }
            }
        }
Beispiel #19
0
        // Token: 0x06000690 RID: 1680 RVA: 0x0001F41C File Offset: 0x0001D61C
        public override void OnEnter()
        {
            base.OnEnter();
            Ray aimRay = base.GetAimRay();

            base.StartAimMode(aimRay, 2f, false);
            Transform modelTransform = base.GetModelTransform();

            this.duration = FireGlaive.baseDuration / this.attackSpeedStat;
            base.PlayAnimation("Gesture", "FireGlaive", "FireGlaive.playbackRate", this.duration);
            Vector3    position = aimRay.origin;
            Quaternion rotation = Util.QuaternionSafeLookRotation(aimRay.direction);

            if (modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    Transform transform = component.FindChild("RightHand");
                    if (transform)
                    {
                        position = transform.position;
                    }
                }
            }
            if (base.hasAuthority)
            {
                ProjectileManager.instance.FireProjectile(FireGlaive.projectilePrefab, position, rotation, base.gameObject, this.damageStat * FireGlaive.damageCoefficient, FireGlaive.force, Util.CheckRoll(this.critStat, base.characterBody.master), DamageColorIndex.Default, null, -1f);
            }
        }
        public void Awake()
        {
            this.body = base.GetComponent <CharacterBody>();
            var model          = base.GetComponent <ModelLocator>();
            var modelTransform = model.modelTransform;

            this.childLocator         = modelTransform.GetComponent <ChildLocator>();
            this.rightDrillBone       = childLocator.FindChild("RightHandDrill");
            this.leftDrillBone        = childLocator.FindChild("LeftHandDrill");
            this.drillRushHitboxPivot = childLocator.FindChild("DrillRushHitboxPivot");
            this.animator             = modelTransform.GetComponent <Animator>();
            this.setStateOnHurt       = base.GetComponent <SetStateOnHurt>();
            this.skillLocator         = base.GetComponent <SkillLocator>();

            if (this.setStateOnHurt)
            {
                this.defaultCanBeFrozen     = setStateOnHurt.canBeFrozen;
                this.defaultCanBeStunned    = setStateOnHurt.canBeStunned;
                this.defaultCanBeHitStunned = setStateOnHurt.canBeHitStunned;
            }
            if (this.skillLocator)
            {
                this.yokoSkill = this.skillLocator.secondary;
            }
            On.RoR2.CharacterBody.RecalculateStats               += CharacterBody_RecalculateStats;
            On.RoR2.CharacterBody.AddBuff_BuffDef                += CharacterBody_AddBuff_BuffDef;
            On.RoR2.CharacterBody.AddTimedBuff_BuffDef_float     += CharacterBody_AddTimedBuff_BuffDef_float;
            On.RoR2.CharacterBody.AddTimedBuff_BuffDef_float_int += CharacterBody_AddTimedBuff_BuffDef_float_int;
        }
 // Token: 0x0600073F RID: 1855 RVA: 0x0002351C File Offset: 0x0002171C
 public override void FixedUpdate()
 {
     base.FixedUpdate();
     if (this.modelAnimator && this.modelAnimator.GetFloat("Clap.hitBoxActive") > 0.5f && !this.hasAttacked)
     {
         if (base.isAuthority && this.modelTransform)
         {
             ChildLocator component = this.modelTransform.GetComponent <ChildLocator>();
             if (component)
             {
                 Transform transform = component.FindChild("ClapZone");
                 if (transform)
                 {
                     this.attack            = new BlastAttack();
                     this.attack.attacker   = base.gameObject;
                     this.attack.inflictor  = base.gameObject;
                     this.attack.teamIndex  = TeamComponent.GetObjectTeam(base.gameObject);
                     this.attack.baseDamage = this.damageStat * ClapState.damageCoefficient;
                     this.attack.baseForce  = ClapState.forceMagnitude;
                     this.attack.position   = transform.position;
                     this.attack.radius     = ClapState.radius;
                     this.attack.Fire();
                 }
             }
         }
         this.hasAttacked = true;
         EntityState.Destroy(this.leftHandChargeEffect);
         EntityState.Destroy(this.rightHandChargeEffect);
     }
     if (base.fixedAge >= ClapState.duration && base.isAuthority)
     {
         this.outer.SetNextStateToMain();
         return;
     }
 }
Beispiel #22
0
 public override void FixedUpdate()
 {
     if (canJet)
     {
         if (this.characterBody.characterMotor.isGrounded)
         {
             canJet = false;
             return;
         }
         if (this.characterBody.inputBank.skill3.down && !this.characterBody.inputBank.skill3.wasDown)
         {
             canJet = false;
             this.characterBody.characterMotor.velocity.y = jetAmount;
             if (DodgeState.jetEffect)
             {
                 Util.PlaySound(DodgeState.dodgeSoundString, base.gameObject);
                 ChildLocator component = this.GetModelAnimator().GetComponent <ChildLocator>();
                 if (component)
                 {
                     Transform transform  = component.FindChild("LeftJet");
                     Transform transform2 = component.FindChild("RightJet");
                     if (transform)
                     {
                         UnityEngine.Object.Instantiate <GameObject>(DodgeState.jetEffect, transform);
                     }
                     if (transform2)
                     {
                         UnityEngine.Object.Instantiate <GameObject>(DodgeState.jetEffect, transform2);
                     }
                 }
             }
         }
     }
 }
        public static void RegisterSkins()
        {
            GameObject bodyPrefab = Prefabs.scoutPrefab;

            GameObject     model          = bodyPrefab.GetComponentInChildren <ModelLocator>().modelTransform.gameObject;
            CharacterModel characterModel = model.GetComponent <CharacterModel>();

            ModelSkinController skinController = model.AddComponent <ModelSkinController>();
            ChildLocator        childLocator   = model.GetComponent <ChildLocator>();

            SkinnedMeshRenderer mainRenderer = characterModel.mainSkinnedMeshRenderer;

            List <SkinDef> skinDefs = new List <SkinDef>();

            #region DefaultSkin
            //CharacterModel.RendererInfo[] defaultRenderers = characterModel.baseRendererInfos;
            //SkinDef defaultSkin = CreateSkinDef("SAXTONHALEBODY_DEFAULT_SKIN_NAME", Assets.mainAssetBundle.LoadAsset<Sprite>("texMainSkin"), defaultRenderers, mainRenderer, model, "");
            //defaultSkin.meshReplacements = new SkinDef.MeshReplacement[]
            //{
            //    new SkinDef.MeshReplacement
            //    {
            //        mesh = Assets.defaultMesh,
            //        renderer = defaultRenderers[1].renderer
            //    },
            //    new SkinDef.MeshReplacement
            //    {
            //        mesh = Assets.defaultSwordMesh,
            //        renderer = defaultRenderers[0].renderer
            //    }
            //};

            //skinDefs.Add(defaultSkin);
            #endregion
        }
Beispiel #24
0
        // Token: 0x0600300A RID: 12298 RVA: 0x000CE150 File Offset: 0x000CC350
        public override void OnEnter()
        {
            base.OnEnter();
            base.fixedAge      = 0f;
            this.duration      = FireHook.baseDuration / this.attackSpeedStat;
            this.modelAnimator = base.GetModelAnimator();
            if (this.modelAnimator)
            {
                base.PlayCrossfade("Body", "FireHook", "FireHook.playbackRate", this.duration, 0.03f);
            }
            ChildLocator component = this.modelAnimator.GetComponent <ChildLocator>();

            if (component)
            {
                component.FindChild(FireHook.muzzleString);
            }
            Util.PlayScaledSound(FireHook.soundString, base.gameObject, this.attackSpeedStat);
            EffectManager.SimpleMuzzleFlash(FireHook.muzzleflashEffectPrefab, base.gameObject, FireHook.muzzleString, false);
            Ray aimRay = base.GetAimRay();

            if (NetworkServer.active)
            {
                this.FireSingleHook(aimRay, 0f, 0f);
                for (int i = 0; i < FireHook.projectileCount; i++)
                {
                    float bonusPitch = UnityEngine.Random.Range(-FireHook.spread, FireHook.spread) / 2f;
                    float bonusYaw   = UnityEngine.Random.Range(-FireHook.spread, FireHook.spread) / 2f;
                    this.FireSingleHook(aimRay, bonusPitch, bonusYaw);
                }
            }
        }
    private static void setStoredChildLocator(GameObject selected)
    {
        ChildLocator locator = selected.GetComponent <ChildLocator>();

        if (locator == null)
        {
            locator = selected.AddComponent <ChildLocator>();
        }

        List <Transform> children = selected.GetComponentsInChildren <Transform>().ToList();

        locator.TransformPairs = new ChildLocator.NameTransformPair[storedChildLocator.TransformPairs.Length];

        for (int i = 0; i < locator.TransformPairs.Length; i++)
        {
            ChildLocator.NameTransformPair pair       = locator.TransformPairs[i];
            ChildLocator.NameTransformPair storedPair = storedChildLocator.TransformPairs[i];

            pair.name = storedPair.name;

            if (storedPair.transform == null)
            {
                continue;
            }
            ;

            pair.transform = children.Find(tran => {
                return(tran.name == storedPair.transform.name);
            });

            locator.TransformPairs[i] = pair;
        }
    }
        // Token: 0x06002FFD RID: 12285 RVA: 0x000CDB9C File Offset: 0x000CBD9C
        public override void OnEnter()
        {
            base.OnEnter();
            this.duration      = Slam.baseDuration / this.attackSpeedStat;
            this.modelAnimator = base.GetModelAnimator();
            Transform modelTransform = base.GetModelTransform();

            this.attack                 = new OverlapAttack();
            this.attack.attacker        = base.gameObject;
            this.attack.inflictor       = base.gameObject;
            this.attack.teamIndex       = TeamComponent.GetObjectTeam(this.attack.attacker);
            this.attack.damage          = Slam.impactDamageCoefficient * this.damageStat;
            this.attack.hitEffectPrefab = Slam.hitEffectPrefab;
            this.attack.isCrit          = Util.CheckRoll(this.critStat, base.characterBody.master);
            if (modelTransform)
            {
                this.attack.hitBoxGroup = Array.Find <HitBoxGroup>(modelTransform.GetComponents <HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Hammer");
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    this.hammerChildTransform = component.FindChild("SwingCenter");
                }
            }
            if (this.modelAnimator)
            {
                base.PlayAnimation("Gesture", "Slam", "Slam.playbackRate", this.duration);
            }
            if (base.characterBody)
            {
                base.characterBody.SetAimTimer(2f);
            }
        }
Beispiel #27
0
        private static void SetupMainHurtbox(GameObject prefab, GameObject model)
        {
            ChildLocator childLocator = model.GetComponent <ChildLocator>();

            if (!childLocator.FindChild("MainHurtbox"))
            {
                Debug.LogError("Could not set up main hurtbox: make sure you have a transform pair in your prefab's ChildLocator component called 'MainHurtbox'");
                return;
            }

            HurtBoxGroup hurtBoxGroup = model.AddComponent <HurtBoxGroup>();
            HurtBox      mainHurtbox  = childLocator.FindChild("MainHurtbox").gameObject.AddComponent <HurtBox>();

            mainHurtbox.gameObject.layer = LayerIndex.entityPrecise.intVal;
            mainHurtbox.healthComponent  = prefab.GetComponent <HealthComponent>();
            mainHurtbox.isBullseye       = true;
            mainHurtbox.damageModifier   = HurtBox.DamageModifier.Normal;
            mainHurtbox.hurtBoxGroup     = hurtBoxGroup;
            mainHurtbox.indexInGroup     = 0;

            hurtBoxGroup.hurtBoxes = new HurtBox[]
            {
                mainHurtbox
            };

            hurtBoxGroup.mainHurtBox   = mainHurtbox;
            hurtBoxGroup.bullseyeCount = 1;
        }
Beispiel #28
0
        // Token: 0x06002AE0 RID: 10976 RVA: 0x000B46BC File Offset: 0x000B28BC
        public override void OnEnter()
        {
            base.OnEnter();
            Ray    aimRay = base.GetAimRay();
            string text   = "MuzzleRight";

            this.duration             = FireRHCannon.baseDuration / this.attackSpeedStat;
            this.durationBetweenShots = FireRHCannon.baseDurationBetweenShots / this.attackSpeedStat;
            if (FireRHCannon.effectPrefab)
            {
                EffectManager.SimpleMuzzleFlash(FireRHCannon.effectPrefab, base.gameObject, text, false);
            }
            base.PlayAnimation("Gesture", "FireRHCannon", "FireRHCannon.playbackRate", this.duration);
            if (base.isAuthority && base.modelLocator && base.modelLocator.modelTransform)
            {
                ChildLocator component = base.modelLocator.modelTransform.GetComponent <ChildLocator>();
                if (component)
                {
                    Transform transform = component.FindChild(text);
                    if (transform)
                    {
                        Vector3    forward = aimRay.direction;
                        RaycastHit raycastHit;
                        if (Physics.Raycast(aimRay, out raycastHit, (float)LayerIndex.world.mask))
                        {
                            forward = raycastHit.point - transform.position;
                        }
                        ProjectileManager.instance.FireProjectile(FireRHCannon.projectilePrefab, transform.position, Util.QuaternionSafeLookRotation(forward), base.gameObject, this.damageStat * FireRHCannon.damageCoefficient, FireRHCannon.force, Util.CheckRoll(this.critStat, base.characterBody.master), DamageColorIndex.Default, null, -1f);
                    }
                }
            }
        }
        // Token: 0x06000EBE RID: 3774 RVA: 0x000489C0 File Offset: 0x00046BC0
        public void SimpleMuzzleFlash(GameObject effectPrefab, GameObject obj, string muzzleName, bool transmit)
        {
            if (!obj)
            {
                return;
            }
            ModelLocator component = obj.GetComponent <ModelLocator>();

            if (component && component.modelTransform)
            {
                ChildLocator component2 = component.modelTransform.GetComponent <ChildLocator>();
                if (component2)
                {
                    int       childIndex = component2.FindChildIndex(muzzleName);
                    Transform transform  = component2.FindChild(childIndex);
                    if (transform)
                    {
                        EffectData effectData = new EffectData
                        {
                            origin = transform.position
                        };
                        effectData.SetChildLocatorTransformReference(obj, childIndex);
                        EffectManager.instance.SpawnEffect(effectPrefab, effectData, transmit);
                    }
                }
            }
        }
Beispiel #30
0
 public override void OnEnter()
 {
     base.OnEnter();
     this.model        = base.GetModelTransform();
     this.childLocator = base.GetModelChildLocator();
     this.overpowerParticleSystemEmission = this.childLocator.FindChild("OverpowerParticles").GetComponent <ParticleSystem>().emission;
 }