private void OnDestroy() { if (LocalPlayer.Transform == base.transform) { LocalPlayer.Transform = null; LocalPlayer.Ridigbody = null; FMOD_StudioEventEmitter.LocalPlayerTransform = null; LocalPlayer.GameObject = null; LocalPlayer.PlayerBase = null; LocalPlayer.HeadTr = null; LocalPlayer.HipsTr = null; LocalPlayer.Inventory = null; LocalPlayer.ReceipeBook = null; LocalPlayer.SpecialActions = null; LocalPlayer.SpecialItems = null; LocalPlayer.MainCamTr = null; LocalPlayer.MainCam = null; LocalPlayer.InventoryCam = null; LocalPlayer.CamFollowHead = null; LocalPlayer.Animator = null; LocalPlayer.AnimControl = null; LocalPlayer.Create = null; LocalPlayer.Tuts = null; LocalPlayer.Sfx = null; LocalPlayer.Stats = null; LocalPlayer.FpCharacter = null; LocalPlayer.FpHeadBob = null; LocalPlayer.CamRotator = null; LocalPlayer.MainRotator = null; LocalPlayer.ScriptSetup = null; LocalPlayer.TargetFunctions = null; LocalPlayer.HitReactions = null; LocalPlayer.Buoyancy = null; LocalPlayer.WaterViz = null; LocalPlayer.AiInfo = null; LocalPlayer.WaterEngine = null; LocalPlayer.ItemDecayMachine = null; LocalPlayer.AnimatedBook = null; LocalPlayer.PassengerManifest = null; LocalPlayer.GreebleRoot = null; LocalPlayer.MudGreeble = null; LocalPlayer.PlayerDeadCam = null; LocalPlayer.PauseMenuBlur = null; LocalPlayer.PauseMenuBlurPsCam = null; LocalPlayer.HeldItemsData = null; LocalPlayer.Vis = null; } }
private void Awake() { LocalPlayer.Transform = this._transform; LocalPlayer.Ridigbody = this._ridigbody; FMOD_StudioEventEmitter.LocalPlayerTransform = LocalPlayer.Transform; LocalPlayer.GameObject = this._playerGO; LocalPlayer.PlayerBase = this._playerBase; LocalPlayer.HeadTr = this._headTr; LocalPlayer.HipsTr = this._hipsTr; LocalPlayer.Inventory = this._inventory; LocalPlayer.ReceipeBook = this._receipeBook; LocalPlayer.SpecialActions = this._specialActions; LocalPlayer.SpecialItems = this._specialItems; LocalPlayer.MainCamTr = this._mainCamTr; LocalPlayer.MainCam = this._mainCam; LocalPlayer.InventoryCam = this._inventoryCam; LocalPlayer.CamFollowHead = this._camFollowHead; LocalPlayer.Animator = this._animator; LocalPlayer.AnimControl = this._animControl; LocalPlayer.Create = this._create; LocalPlayer.Tuts = this._tuts; LocalPlayer.Sfx = this._sfx; LocalPlayer.Stats = this._stats; LocalPlayer.FpCharacter = this._fpc; LocalPlayer.FpHeadBob = this._fphb; LocalPlayer.CamRotator = this._camRotator; LocalPlayer.MainRotator = this._mainRotator; LocalPlayer.ScriptSetup = this._scriptSetup; LocalPlayer.TargetFunctions = this._targetFunctions; LocalPlayer.HitReactions = this._hitReactions; LocalPlayer.Buoyancy = this._buoyancy; LocalPlayer.WaterViz = this._waterViz; LocalPlayer.AiInfo = this._aiInfo; LocalPlayer.WaterEngine = this._waterEngine; LocalPlayer.ItemDecayMachine = this._itemDecayMachine; LocalPlayer.AnimatedBook = this._animatedBook; LocalPlayer.PassengerManifest = this._passengerManifest; LocalPlayer.GreebleRoot = this._greebleRoot; LocalPlayer.MudGreeble = this._mudGreeble; LocalPlayer.PlayerDeadCam = this._PlayerDeadCam; LocalPlayer.PauseMenuBlur = this._pauseMenuBlur; LocalPlayer.PauseMenuBlurPsCam = this._pauseMenuBlurPsCam; LocalPlayer.HeldItemsData = this._heldItemsData; LocalPlayer.Vis = this._vis; base.StartCoroutine(this.OldSaveCompat()); }
private void Awake() { this.hitReactions = base.transform.root.GetComponent<playerHitReactions>(); }
protected override void OnTriggerEnter(Collider other) { try { currState = animator.GetCurrentAnimatorStateInfo(0); nextState = animator.GetNextAnimatorStateInfo(0); if (currState.tagHash != damagedHash && currState.tagHash != staggerHash && currState.tagHash != hitStaggerHash && currState.tagHash != deathHash && nextState.tagHash != damagedHash && nextState.tagHash != staggerHash && nextState.tagHash != hitStaggerHash && nextState.tagHash != deathHash) { if (other.gameObject.CompareTag("trapTrigger")) { other.gameObject.SendMessage("CutRope", SendMessageOptions.DontRequireReceiver); } if (!netPrefab && LocalPlayer.Animator && LocalPlayer.Animator.GetBool("deathBool")) { return; } if (other.gameObject.CompareTag("playerHitDetect") && mainTrigger) { if (!Scene.SceneTracker.hasAttackedPlayer) { Scene.SceneTracker.hasAttackedPlayer = true; Scene.SceneTracker.Invoke("resetHasAttackedPlayer", Random.Range(120, 240)); } targetStats component = other.transform.root.GetComponent <targetStats>(); if (component && component.targetDown) { return; } Animator componentInParent = other.gameObject.GetComponentInParent <Animator>(); Vector3 position = rootTr.position; position.y += 3.3f; Vector3 direction = other.transform.position - position; if (!Physics.Raycast(position, direction, out hit, direction.magnitude, enemyHitMask, QueryTriggerInteraction.Ignore)) { bool doParry = SpellActions.ParryAnythingIsTimed; if (doParry || (!creepy_male && !creepy && !creepy_baby && !creepy_fat && events)) { if (componentInParent) { bool flag = InFront(other.gameObject); if (doParry || ((!BoltNetwork.isServer || !netPrefab) && flag && events.parryBool && ((componentInParent.GetNextAnimatorStateInfo(1).tagHash == blockHash || componentInParent.GetCurrentAnimatorStateInfo(1).tagHash == blockHash)))) { SpellActions.DoParry(transform.position); ModAPI.Console.Write("Parrying successful"); if ((!creepy_male && !creepy && !creepy_baby && !creepy_fat && events)) { int parryDir = events != null ? events.parryDir : 1; BoltSetReflectedShim.SetIntegerReflected(animator, "parryDirInt", parryDir); if (BoltNetwork.isClient && netPrefab) { BoltSetReflectedShim.SetTriggerReflected(animator, "ClientParryTrigger"); hitPrediction.StartParryPrediction(); FMODCommon.PlayOneshot(parryEvent, base.transform); parryEnemy parryEnemy = parryEnemy.Create(GlobalTargets.OnlyServer); parryEnemy.Target = transform.root.GetComponent <BoltEntity>(); parryEnemy.Send(); } else { BoltSetReflectedShim.SetTriggerReflected(animator, "parryTrigger"); } events.StartCoroutine("disableAllWeapons"); playerHitReactions componentInParent2 = other.gameObject.GetComponentInParent <playerHitReactions>(); if (componentInParent2 != null) { componentInParent2.enableParryState(); } FMODCommon.PlayOneshotNetworked(parryEvent, base.transform, FMODCommon.NetworkRole.Server); events.parryBool = false; } return; } } } if ((bool)events) { events.parryBool = false; } other.transform.root.SendMessage("getHitDirection", rootTr.position, SendMessageOptions.DontRequireReceiver); float num = 0; if (maleSkinny || femaleSkinny) { if (pale) { num = ((!skinned) ? Mathf.Floor(10f * GameSettings.Ai.skinnyDamageRatio) : Mathf.Floor(10f * GameSettings.Ai.skinnyDamageRatio * GameSettings.Ai.skinMaskDamageRatio)); } else { num = Mathf.Floor(13f * GameSettings.Ai.skinnyDamageRatio); if (maleSkinny && props.regularStick.activeSelf && events.leftHandWeapon) { num = Mathf.Floor(num * 1.35f); } } } else if (male && pale) { num = ((!skinned) ? Mathf.Floor(22f * GameSettings.Ai.largePaleDamageRatio) : Mathf.Floor(22f * GameSettings.Ai.largePaleDamageRatio * GameSettings.Ai.skinMaskDamageRatio)); } else if (male && !firemanMain) { num = ((!painted) ? Mathf.Floor(20f * GameSettings.Ai.regularMaleDamageRatio) : Mathf.Floor(20f * GameSettings.Ai.regularMaleDamageRatio * GameSettings.Ai.paintedDamageRatio)); } else if (female) { num = Mathf.Floor(17f * GameSettings.Ai.regularFemaleDamageRatio); } else if (creepy) { num = ((!pale) ? Mathf.Floor(28f * GameSettings.Ai.creepyDamageRatio) : Mathf.Floor(35f * GameSettings.Ai.creepyDamageRatio)); } else if (creepy_male) { num = ((!pale) ? Mathf.Floor(60f * GameSettings.Ai.creepyDamageRatio) : Mathf.Floor(120f * GameSettings.Ai.creepyDamageRatio)); } else if (creepy_baby) { num = Mathf.Floor(26f * GameSettings.Ai.creepyBabyDamageRatio); } else if (firemanMain) { num = Mathf.Floor(12f * GameSettings.Ai.regularMaleDamageRatio); if (events && !enemyAtStructure && !events.noFireAttack) { if (BoltNetwork.isRunning && netPrefab) { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } else { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } } } if (!female && male) { if (holdingRegularWeapon() && events.leftHandWeapon) { num += 7; } else if (holdingAdvancedWeapon() && events.leftHandWeapon) { num += 15; } } if (setup && setup.health.poisoned) { num = Mathf.Floor(num / 2); } //COTF additional code try { if (GameSetup.IsMpClient) { if (other.transform.root == LocalPlayer.Transform.root) { var x = EnemyManager.clientEnemies[entity.networkId.PackedValue]; num = x.damagemult + num - 20f; if (x.abilities.Contains(EnemyProgression.Abilities.RainEmpowerment)) { if (Scene.WeatherSystem.Raining) { num *= 5; } } hitDamage = num; if (x.abilities.Contains(EnemyProgression.Abilities.Poisonous)) { BuffDB.AddBuff(3, 32, Mathf.Sqrt(num / 10) / 7, poisonDuration); } if (x.abilities.Contains(EnemyProgression.Abilities.Basher)) { ModdedPlayer.instance.Stun(stunDuration); } if (ModdedPlayer.Stats.TotalThornsDamage > 0) { if (ModdedPlayer.Stats.TotalThornsArmorPiercing > 0) { EnemyProgression.ReduceArmor(entity, ModdedPlayer.Stats.TotalThornsArmorPiercing); } PlayerHitEnemy playerHitEnemy = PlayerHitEnemy.Create(GlobalTargets.OnlyServer); playerHitEnemy.Target = entity; //this integer make the attack not stagger the enemy playerHitEnemy.getAttackerType = 2000000; playerHitEnemy.Hit = DamageMath.GetSendableDamage(ModdedPlayer.Stats.TotalThornsDamage); playerHitEnemy.Send(); } } } else { if (other.transform.root == LocalPlayer.Transform.root && EnemyManager.enemyByTransform.ContainsKey(this.rootTr)) { if (EnemyProg == null) { EnemyProg = EnemyManager.enemyByTransform[this.rootTr]; } num = EnemyProg.DamageAmp * EnemyProg.DebuffDmgMult + num - 20f; hitDamage = num; CotfUtils.Log($"Damage dealt to player: d{hitDamage} amp{EnemyProg.DamageAmp} lv{EnemyProg.level} php{hitDamage*100 / ModdedPlayer.Stats.TotalMaxHealth}%", true); //POISON ATTACKS if (EnemyProg.abilities.Contains(EnemyProgression.Abilities.Poisonous)) { BuffDB.AddBuff(3, 32, Mathf.Sqrt(num / 10) / 10, poisonDuration); } //STUN ON HIT if (EnemyProg.abilities.Contains(EnemyProgression.Abilities.Basher)) { ModdedPlayer.instance.Stun(stunDuration); } if (ModdedPlayer.Stats.TotalThornsDamage > 0) { EnemyProg.HitPhysicalSilent(ModdedPlayer.Stats.TotalThornsDamage); if (ModdedPlayer.Stats.TotalThornsArmorPiercing > 0) { EnemyProg.ReduceArmor(ModdedPlayer.Stats.TotalThornsArmorPiercing); } } } } } catch (System.Exception ex) { ModAPI.Log.Write(ex.ToString()); } PlayerStats component2 = other.transform.root.GetComponent <PlayerStats>(); if (male || female || creepy_male || creepy_fat || creepy || creepy_baby) { netId component3 = other.transform.GetComponent <netId>(); if (BoltNetwork.isServer && component3) { other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); return; } if (BoltNetwork.isClient && netPrefab && !(bool)component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", Mathf.RoundToInt(num), SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); } else if (BoltNetwork.isServer) { if (!(bool)component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", Mathf.RoundToInt(num), SendMessageOptions.DontRequireReceiver); } } else if (!BoltNetwork.isRunning && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(Mathf.RoundToInt(num)); } } else if (!netPrefab && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(Mathf.RoundToInt(num)); } goto IL_092f; } return; } goto IL_092f; } return; IL_092f: if (other.gameObject.CompareTag("enemyCollide") && mainTrigger && bodyCollider && !enemyAtStructure) { setupAttackerType(); if (other.gameObject != bodyCollider) { other.transform.SendMessageUpwards("getAttackDirection", Random.Range(0, 2), SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("getCombo", Random.Range(1, 4), SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttackerType", attackerType, SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttacker", rootTr.gameObject, SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("HitPhysical", Random.Range(30f, 50f) * Mathf.Pow(ModdedPlayer.Stats.explosionDamage, 1.25f), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } } if (other.gameObject.CompareTag("BreakableWood") || (other.gameObject.CompareTag("BreakableRock") && mainTrigger)) { other.transform.SendMessage("Hit", 50, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, 50f), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (other.gameObject.CompareTag("SmallTree") && !mainTrigger) { other.SendMessage("Hit", 2, SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Fire") && mainTrigger && firemanMain && !events.noFireAttack) { other.SendMessage("Burn", SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Tree") && mainTrigger && creepy_male) { other.SendMessage("Explosion", 5f, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (!other.gameObject.CompareTag("structure") && !other.gameObject.CompareTag("SLTier1") && !other.gameObject.CompareTag("SLTier2") && !other.gameObject.CompareTag("SLTier3") && !other.gameObject.CompareTag("jumpObject") && !other.gameObject.CompareTag("UnderfootWood")) { return; } if (!mainTrigger) { return; } getStructureStrength component4 = other.gameObject.GetComponent <getStructureStrength>(); bool flag2 = component4 == null; enemyAtStructure = true; int num2; if (!creepy_male && !creepy && !creepy_fat && !creepy_baby) { if (!flag2) { num2 = ((maleSkinny || femaleSkinny) ? ((component4._strength == getStructureStrength.strength.weak) ? Mathf.FloorToInt(8f * GameSettings.Ai.regularStructureDamageRatio) : 0) : ((pale || painted || skinned) ? ((component4._strength != getStructureStrength.strength.veryStrong) ? Mathf.FloorToInt(16f * GameSettings.Ai.regularStructureDamageRatio) : 0) : ((component4._strength != getStructureStrength.strength.veryStrong) ? Mathf.FloorToInt(12f * GameSettings.Ai.regularStructureDamageRatio) : 0))); goto IL_0d63; } return; } num2 = ((!creepy_baby) ? Mathf.FloorToInt(30f * GameSettings.Ai.creepyStructureDamageRatio) : Mathf.FloorToInt(10f * GameSettings.Ai.creepyStructureDamageRatio)); goto IL_0d63; IL_0d63: if (setup && setup.health.poisoned) { num2 /= 2; } other.SendMessage("Hit", num2, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, num2), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } catch (System.Exception ee) { ModAPI.Log.Write(ee.ToString()); } }
protected override void OnTriggerEnter(Collider other) { try { currState = animator.GetCurrentAnimatorStateInfo(0); nextState = animator.GetNextAnimatorStateInfo(0); if (currState.tagHash != damagedHash && currState.tagHash != staggerHash && currState.tagHash != hitStaggerHash && currState.tagHash != deathHash && nextState.tagHash != damagedHash && nextState.tagHash != staggerHash && nextState.tagHash != hitStaggerHash && nextState.tagHash != deathHash) { if (other.gameObject.CompareTag("trapTrigger")) { other.gameObject.SendMessage("CutRope", SendMessageOptions.DontRequireReceiver); } if (!netPrefab && LocalPlayer.Animator && LocalPlayer.Animator.GetBool("deathBool")) { return; } if (other.gameObject.CompareTag("playerHitDetect") && mainTrigger) { if (!Scene.SceneTracker.hasAttackedPlayer) { Scene.SceneTracker.hasAttackedPlayer = true; Scene.SceneTracker.Invoke("resetHasAttackedPlayer", Random.Range(120, 240)); } targetStats component = other.transform.root.GetComponent <targetStats>(); if (component && component.targetDown) { return; } Animator componentInParent = other.gameObject.GetComponentInParent <Animator>(); Vector3 position = rootTr.position; position.y += 3.3f; Vector3 direction = other.transform.position - position; if (!Physics.Raycast(position, direction, out hit, direction.magnitude, enemyHitMask, QueryTriggerInteraction.Ignore)) { if (!creepy_male && !creepy && !creepy_baby && !creepy_fat && events && componentInParent) { bool flag = InFront(other.gameObject); if ((!BoltNetwork.isServer || !netPrefab) && flag && events.parryBool && (componentInParent.GetNextAnimatorStateInfo(1).tagHash == blockHash || componentInParent.GetCurrentAnimatorStateInfo(1).tagHash == blockHash)) { int parryDir = events.parryDir; BoltSetReflectedShim.SetIntegerReflected(animator, "parryDirInt", parryDir); if (BoltNetwork.isClient && netPrefab) { BoltSetReflectedShim.SetTriggerReflected(animator, "ClientParryTrigger"); hitPrediction.StartParryPrediction(); parryEnemy parryEnemy = parryEnemy.Create(GlobalTargets.OnlyServer); parryEnemy.Target = transform.root.GetComponent <BoltEntity>(); parryEnemy.Send(); FMODCommon.PlayOneshot(parryEvent, base.transform); } else { BoltSetReflectedShim.SetTriggerReflected(animator, "parryTrigger"); } events.StartCoroutine("disableAllWeapons"); playerHitReactions componentInParent2 = other.gameObject.GetComponentInParent <playerHitReactions>(); if (componentInParent2 != null) { componentInParent2.enableParryState(); } FMODCommon.PlayOneshotNetworked(parryEvent, base.transform, FMODCommon.NetworkRole.Server); events.parryBool = false; return; } } if ((bool)events) { events.parryBool = false; } other.transform.root.SendMessage("getHitDirection", rootTr.position, SendMessageOptions.DontRequireReceiver); int num = 0; if (maleSkinny || femaleSkinny) { if (pale) { num = ((!skinned) ? Mathf.FloorToInt(10f * GameSettings.Ai.skinnyDamageRatio) : Mathf.FloorToInt(10f * GameSettings.Ai.skinnyDamageRatio * GameSettings.Ai.skinMaskDamageRatio)); } else { num = Mathf.FloorToInt(13f * GameSettings.Ai.skinnyDamageRatio); if (maleSkinny && props.regularStick.activeSelf && events.leftHandWeapon) { num = Mathf.FloorToInt(num * 1.35f); } } } else if (male && pale) { num = ((!skinned) ? Mathf.FloorToInt(22f * GameSettings.Ai.largePaleDamageRatio) : Mathf.FloorToInt(22f * GameSettings.Ai.largePaleDamageRatio * GameSettings.Ai.skinMaskDamageRatio)); } else if (male && !firemanMain) { num = ((!painted) ? Mathf.FloorToInt(20f * GameSettings.Ai.regularMaleDamageRatio) : Mathf.FloorToInt(20f * GameSettings.Ai.regularMaleDamageRatio * GameSettings.Ai.paintedDamageRatio)); } else if (female) { num = Mathf.FloorToInt(17f * GameSettings.Ai.regularFemaleDamageRatio); } else if (creepy) { num = ((!pale) ? Mathf.FloorToInt(28f * GameSettings.Ai.creepyDamageRatio) : Mathf.FloorToInt(35f * GameSettings.Ai.creepyDamageRatio)); } else if (creepy_male) { num = ((!pale) ? Mathf.FloorToInt(30f * GameSettings.Ai.creepyDamageRatio) : Mathf.FloorToInt(40f * GameSettings.Ai.creepyDamageRatio)); } else if (creepy_baby) { num = Mathf.FloorToInt(26f * GameSettings.Ai.creepyBabyDamageRatio); } else if (firemanMain) { num = Mathf.FloorToInt(12f * GameSettings.Ai.regularMaleDamageRatio); if (events && !enemyAtStructure && !events.noFireAttack) { if (BoltNetwork.isRunning && netPrefab) { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } else { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } } } if (!female && male) { if (holdingRegularWeapon() && events.leftHandWeapon) { num += 7; } else if (holdingAdvancedWeapon() && events.leftHandWeapon) { num += 15; } } if (setup && setup.health.poisoned) { num = Mathf.FloorToInt(num / 1.6f); } //My additional code try { if (EnemyProg == null) { EnemyProg = setup.health.gameObject.GetComponent <EnemyProgression>(); } num = Mathf.RoundToInt(num * EnemyProg.DamageAmp); BoltEntity bo = other.transform.root.GetComponent <BoltEntity>(); if (bo == null) { bo = other.transform.root.GetComponentInChildren <BoltEntity>(); } //POISON ATTACKS if (EnemyProg.abilities.Contains(EnemyProgression.Abilities.Poisonous)) { if (BoltNetwork.isRunning) { if (BoltNetwork.isServer) { if (other.transform.root == LocalPlayer.Transform.root) { BuffDB.AddBuff(3, 32, num / 20, poisonDuration); } else { if (bo != null) { Network.NetworkManager.SendLine("PO" + bo.networkId.PackedValue + ";32;" + num / 20 + ";" + poisonDuration, bo.controller); } } } } else { BuffDB.AddBuff(3, 32, num / 20, poisonDuration); } } //STUN ON HIT if (EnemyProg.abilities.Contains(EnemyProgression.Abilities.Basher)) { if (BoltNetwork.isRunning) { if (BoltNetwork.isServer) { if (other.transform.root == LocalPlayer.Transform.root) { ModdedPlayer.instance.Stun(stunDuration); } else { if (bo != null) { Network.NetworkManager.SendLine("ST" + bo.networkId.PackedValue + ";" + stunDuration + ";", bo.controller); } } } } else { ModdedPlayer.instance.Stun(stunDuration); } } } catch (System.Exception ex) { ModAPI.Log.Write(ex.ToString()); } PlayerStats component2 = other.transform.root.GetComponent <PlayerStats>(); if (male || female || creepy_male || creepy_fat || creepy || creepy_baby) { netId component3 = other.transform.GetComponent <netId>(); if (BoltNetwork.isServer && component3) { other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); return; } if (BoltNetwork.isClient && netPrefab && !(bool)component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); } else if (BoltNetwork.isServer) { if (!(bool)component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); } } else if (!BoltNetwork.isRunning && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(num); } } else if (!netPrefab && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(num); } goto IL_092f; } return; } goto IL_092f; } return; IL_092f: if (other.gameObject.CompareTag("enemyCollide") && mainTrigger && bodyCollider && !enemyAtStructure) { setupAttackerType(); if (other.gameObject != bodyCollider) { other.transform.SendMessageUpwards("getAttackDirection", Random.Range(0, 2), SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("getCombo", Random.Range(1, 4), SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttackerType", attackerType, SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttacker", rootTr.gameObject, SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("Hit", 6, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } } if (other.gameObject.CompareTag("BreakableWood") || (other.gameObject.CompareTag("BreakableRock") && mainTrigger)) { other.transform.SendMessage("Hit", 50, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, 50f), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (other.gameObject.CompareTag("SmallTree") && !mainTrigger) { other.SendMessage("Hit", 2, SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Fire") && mainTrigger && firemanMain && !events.noFireAttack) { other.SendMessage("Burn", SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Tree") && mainTrigger && creepy_male) { other.SendMessage("Explosion", 5f, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (!other.gameObject.CompareTag("structure") && !other.gameObject.CompareTag("SLTier1") && !other.gameObject.CompareTag("SLTier2") && !other.gameObject.CompareTag("SLTier3") && !other.gameObject.CompareTag("jumpObject") && !other.gameObject.CompareTag("UnderfootWood")) { return; } if (!mainTrigger) { return; } getStructureStrength component4 = other.gameObject.GetComponent <getStructureStrength>(); bool flag2 = false; if (component4 == null) { flag2 = true; } enemyAtStructure = true; int num2 = 0; if (!creepy_male && !creepy && !creepy_fat && !creepy_baby) { if (!flag2) { num2 = ((maleSkinny || femaleSkinny) ? ((component4._strength == getStructureStrength.strength.weak) ? Mathf.FloorToInt(8f * GameSettings.Ai.regularStructureDamageRatio) : 0) : ((pale || painted || skinned) ? ((component4._strength != getStructureStrength.strength.veryStrong) ? Mathf.FloorToInt(16f * GameSettings.Ai.regularStructureDamageRatio) : 0) : ((component4._strength != getStructureStrength.strength.veryStrong) ? Mathf.FloorToInt(12f * GameSettings.Ai.regularStructureDamageRatio) : 0))); goto IL_0d63; } return; } num2 = ((!creepy_baby) ? Mathf.FloorToInt(30f * GameSettings.Ai.creepyStructureDamageRatio) : Mathf.FloorToInt(10f * GameSettings.Ai.creepyStructureDamageRatio)); goto IL_0d63; IL_0d63: if (setup && setup.health.poisoned) { num2 /= 2; } other.SendMessage("Hit", num2, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, num2), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } catch (System.Exception ee) { ModAPI.Log.Write(ee.ToString()); } }
private void Awake() { BleedBehavior.BloodAmount = 0f; BleedBehavior.BloodReductionRatio = 1f; this.explodeHash = Animator.StringToHash("explode"); this.DSpots = GameObject.FindWithTag("DeadSpots").GetComponent<DeadSpotController>(); this.Hud = Scene.HudGui; this.Ocean = GameObject.FindWithTag("Ocean"); this.mutantControl = Scene.MutantControler; this.sceneInfo = Scene.SceneTracker; this.Player = base.gameObject.GetComponent<PlayerInventory>(); this.camFollow = base.GetComponentInChildren<camFollowHead>(); this.hitReaction = base.GetComponent<playerHitReactions>(); this.Atmos = Scene.Atmosphere; this.FrostScript = LocalPlayer.MainCam.GetComponent<Frost>(); this.Tuts = LocalPlayer.Tuts; this.Sfx = LocalPlayer.Sfx; this.animator = LocalPlayer.Animator; this.DyingVision = LocalPlayer.MainCam.GetComponent<Grayscale>(); this.Fullness = 1f; this.bloodPropertyBlock = new MaterialPropertyBlock(); if (!LevelSerializer.IsDeserializing) { CoopPlayerVariations component = base.GetComponent<CoopPlayerVariations>(); this.PlayerVariation = UnityEngine.Random.Range(0, component.Variations.Length); this.PlayerVariationBody = UnityEngine.Random.Range(0, component.BodyMaterials.Length); } if (this.CurrentArmorTypes == null || this.CurrentArmorTypes.Length != this.ArmorModel.Length) { this.CurrentArmorTypes = new PlayerStats.ArmorTypes[this.ArmorModel.Length]; for (int i = 0; i < this.CurrentArmorTypes.Length; i++) { this.CurrentArmorTypes[i] = PlayerStats.ArmorTypes.None; this.ArmorModel[i].SetActive(false); } } if (this.CurrentArmorHP == null || this.CurrentArmorHP.Length != this.ArmorModel.Length) { this.CurrentArmorHP = new int[this.ArmorModel.Length]; } this.CaveDoors = GameObject.FindGameObjectsWithTag("CaveDoor"); }
private void Start() { this.animator = base.gameObject.GetComponent<Animator>(); this.reactions = base.transform.parent.GetComponent<playerHitReactions>(); this.controller = base.transform.GetComponentInParent<Rigidbody>(); this.playerCollider = this.controller.GetComponent<CapsuleCollider>(); this.playerHeadCollider = this.controller.GetComponent<SphereCollider>(); this.enemyCollider = this.setup.enemyBlockerGo.GetComponent<CapsuleCollider>(); this.forcePos = base.transform.GetComponent<ForceLocalPosZero>(); this.rb = base.transform.GetComponentInParent<Rigidbody>(); this.tr = base.transform; this.rootTr = base.transform.root; this.smoothCamX = 0f; this.fsmPlayerAngle = this.setup.pmRotate.FsmVariables.GetFsmFloat("playerAngle"); this.fsmTiredFloat = this.setup.pmStamina.FsmVariables.GetFsmFloat("notTiredSpeed"); this.fsmButtonHeldBool = this.setup.pmControl.FsmVariables.GetFsmBool("checkHeldBool"); this.stickAttackHash = Animator.StringToHash("stickAttack"); this.axeAttackHash = Animator.StringToHash("AxeAttack"); this.idleHash = Animator.StringToHash("idling"); this.hangingHash = Animator.StringToHash("hanging"); this.checkArmsHash = Animator.StringToHash("checkArms"); this.heldHash = Animator.StringToHash("held"); this.attackHash = Animator.StringToHash("attacking"); this.smashHash = Animator.StringToHash("smash"); this.blockHash = Animator.StringToHash("block"); this.deathHash = Animator.StringToHash("death"); this.swimHash = Animator.StringToHash("swimming"); this.climbingHash = Animator.StringToHash("climbing"); this.climbIdleHash = Animator.StringToHash("climbIdle"); this.enterClimbHash = Animator.StringToHash("enterClimb"); this.explodeHash = Animator.StringToHash("explode"); this.knockBackHash = Animator.StringToHash("knockBack"); this.setup.pmControl.FsmVariables.GetFsmInt("knockBackHash").Value = Animator.StringToHash("knockBack"); this.setup.pmControl.FsmVariables.GetFsmInt("climbHash").Value = Animator.StringToHash("climbing"); this.setup.pmControl.FsmVariables.GetFsmInt("climbIdleHash").Value = this.climbIdleHash; this.setup.pmControl.FsmVariables.GetFsmInt("sledHash").Value = Animator.StringToHash("onSled"); this.setup.pmControl.FsmVariables.GetFsmInt("stick1Hash").Value = Animator.StringToHash("stickCombo1"); this.setup.pmControl.FsmVariables.GetFsmInt("stick2Hash").Value = Animator.StringToHash("stickCombo2"); this.layerMask = 69345280; if (this.oculusDemo) { this.animator.SetBoolReflected("oculusDemoBool", true); this.reactions.StartCoroutine("setControllerSpeed", 0f); this.animator.SetLayerWeightReflected(2, 1f); this.animator.SetLayerWeightReflected(4, 0f); this.animator.SetLayerWeightReflected(5, 1f); base.transform.parent.GetComponent<SimpleMouseRotator>().enabled = false; } base.InvokeRepeating("checkPlaneDistance", 5f, 5f); }
protected override void OnTriggerEnter(Collider other) { try { if (GameSetup.IsMpClient) { if (entity == null && !EnemyManager.clientEnemies.ContainsKey(entity.networkId.PackedValue)) { return; } else if (EnemyManager.clientEnemies[entity.networkId.PackedValue].Outdated) { LastReqTime = Time.time; using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) { using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) { w.Write(29); w.Write(entity.networkId.PackedValue); w.Close(); } ChampionsOfForest.Network.NetworkManager.SendLine(answerStream.ToArray(), ChampionsOfForest.Network.NetworkManager.Target.OnlyServer); answerStream.Close(); } } } currState = animator.GetCurrentAnimatorStateInfo(0); nextState = animator.GetNextAnimatorStateInfo(0); if (currState.tagHash != damagedHash && currState.tagHash != staggerHash && currState.tagHash != hitStaggerHash && currState.tagHash != deathHash && nextState.tagHash != damagedHash && nextState.tagHash != staggerHash && nextState.tagHash != hitStaggerHash && nextState.tagHash != deathHash) { if (other.gameObject.CompareTag("trapTrigger")) { other.gameObject.SendMessage("CutRope", SendMessageOptions.DontRequireReceiver); } if (!netPrefab && LocalPlayer.Animator && LocalPlayer.Animator.GetBool("deathBool")) { return; } if (other.gameObject.CompareTag("playerHitDetect") && mainTrigger) { if (!Scene.SceneTracker.hasAttackedPlayer) { Scene.SceneTracker.hasAttackedPlayer = true; Scene.SceneTracker.Invoke("resetHasAttackedPlayer", Random.Range(120, 240)); } targetStats component = other.transform.root.GetComponent <targetStats>(); if (component && component.targetDown) { return; } Animator componentInParent = other.gameObject.GetComponentInParent <Animator>(); Vector3 position = rootTr.position; position.y += 3.3f; Vector3 direction = other.transform.position - position; if (!Physics.Raycast(position, direction, out hit, direction.magnitude, enemyHitMask, QueryTriggerInteraction.Ignore)) { ModAPI.Console.Write("Starting to get hit"); if (((!creepy_male && !creepy && !creepy_baby && !creepy_fat) || ModdedPlayer.instance.ParryAnything) && events) { ModAPI.Console.Write("events exists"); if (componentInParent) { ModAPI.Console.Write("componentInParent exists"); bool flag = InFront(other.gameObject); ModAPI.Console.Write("in front: " + flag + "\nevents.parryBool: " + events.parryBool + "\nnext tagHash: " + (componentInParent.GetNextAnimatorStateInfo(1).tagHash == blockHash) + "\ncurrent tagHash" + (componentInParent.GetCurrentAnimatorStateInfo(1).tagHash == blockHash) + "\nfirst condition" + (!BoltNetwork.isServer || !netPrefab)); if ((!BoltNetwork.isServer || !netPrefab) && flag && events.parryBool && ((componentInParent.GetNextAnimatorStateInfo(1).tagHash == blockHash || componentInParent.GetCurrentAnimatorStateInfo(1).tagHash == blockHash) || ModdedPlayer.instance.ParryAnything)) { ModAPI.Console.Write("Parrying successful"); int parryDir = events.parryDir; BoltSetReflectedShim.SetIntegerReflected(animator, "parryDirInt", parryDir); if (BoltNetwork.isClient && netPrefab) { BoltSetReflectedShim.SetTriggerReflected(animator, "ClientParryTrigger"); hitPrediction.StartParryPrediction(); parryEnemy parryEnemy = parryEnemy.Create(GlobalTargets.OnlyServer); parryEnemy.Target = transform.root.GetComponent <BoltEntity>(); parryEnemy.Send(); FMODCommon.PlayOneshot(parryEvent, base.transform); } else { BoltSetReflectedShim.SetTriggerReflected(animator, "parryTrigger"); } SpellActions.DoParry(transform.position); events.StartCoroutine("disableAllWeapons"); playerHitReactions componentInParent2 = other.gameObject.GetComponentInParent <playerHitReactions>(); if (componentInParent2 != null) { componentInParent2.enableParryState(); } FMODCommon.PlayOneshotNetworked(parryEvent, base.transform, FMODCommon.NetworkRole.Server); events.parryBool = false; return; } } } if ((bool)events) { events.parryBool = false; } other.transform.root.SendMessage("getHitDirection", rootTr.position, SendMessageOptions.DontRequireReceiver); int num = 0; if (maleSkinny || femaleSkinny) { if (pale) { num = ((!skinned) ? Mathf.FloorToInt(10f * GameSettings.Ai.skinnyDamageRatio) : Mathf.FloorToInt(10f * GameSettings.Ai.skinnyDamageRatio * GameSettings.Ai.skinMaskDamageRatio)); } else { num = Mathf.FloorToInt(13f * GameSettings.Ai.skinnyDamageRatio); if (maleSkinny && props.regularStick.activeSelf && events.leftHandWeapon) { num = Mathf.FloorToInt(num * 1.35f); } } } else if (male && pale) { num = ((!skinned) ? Mathf.FloorToInt(22f * GameSettings.Ai.largePaleDamageRatio) : Mathf.FloorToInt(22f * GameSettings.Ai.largePaleDamageRatio * GameSettings.Ai.skinMaskDamageRatio)); } else if (male && !firemanMain) { num = ((!painted) ? Mathf.FloorToInt(20f * GameSettings.Ai.regularMaleDamageRatio) : Mathf.FloorToInt(20f * GameSettings.Ai.regularMaleDamageRatio * GameSettings.Ai.paintedDamageRatio)); } else if (female) { num = Mathf.FloorToInt(17f * GameSettings.Ai.regularFemaleDamageRatio); } else if (creepy) { num = ((!pale) ? Mathf.FloorToInt(28f * GameSettings.Ai.creepyDamageRatio) : Mathf.FloorToInt(35f * GameSettings.Ai.creepyDamageRatio)); } else if (creepy_male) { num = ((!pale) ? Mathf.FloorToInt(60f * GameSettings.Ai.creepyDamageRatio) : Mathf.FloorToInt(120f * GameSettings.Ai.creepyDamageRatio)); } else if (creepy_baby) { num = Mathf.FloorToInt(26f * GameSettings.Ai.creepyBabyDamageRatio); } else if (firemanMain) { num = Mathf.FloorToInt(12f * GameSettings.Ai.regularMaleDamageRatio); if (events && !enemyAtStructure && !events.noFireAttack) { if (BoltNetwork.isRunning && netPrefab) { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } else { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } } } if (!female && male) { if (holdingRegularWeapon() && events.leftHandWeapon) { num += 7; } else if (holdingAdvancedWeapon() && events.leftHandWeapon) { num += 15; } } if (setup && setup.health.poisoned) { num = Mathf.FloorToInt(num / 1.6f); } //My additional code try { if (GameSetup.IsMpClient) { if (other.transform.root == LocalPlayer.Transform.root) { var x = EnemyManager.clientEnemies[entity.networkId.PackedValue]; num = Mathf.RoundToInt(num * x.damagemult); if (x.abilities.Contains(EnemyProgression.Abilities.RainEmpowerement)) { if (TheForest.Utils.Scene.WeatherSystem.Raining) { num *= 5; } } if (x.abilities.Contains(EnemyProgression.Abilities.Poisonous)) { BuffDB.AddBuff(3, 32, Mathf.Sqrt(num / 10) / 7, poisonDuration); } if (x.abilities.Contains(EnemyProgression.Abilities.Basher)) { ModdedPlayer.instance.Stun(stunDuration); } if (ModdedPlayer.instance.thornsDamage > 0) { DamageMath.DamageClamp(ModdedPlayer.instance.thornsDamage, out int dmg, out int reps); PlayerHitEnemy playerHitEnemy = PlayerHitEnemy.Create(GlobalTargets.OnlyServer); playerHitEnemy.Target = entity; playerHitEnemy.Hit = dmg; AsyncHit.SendPlayerHitEnemy(playerHitEnemy, reps, 0.1f); } } } else { if (other.transform.root == LocalPlayer.Transform.root) { if (EnemyProg == null) { EnemyProg = setup.health.gameObject.GetComponent <EnemyProgression>(); } num = Mathf.RoundToInt(num * EnemyProg.DamageAmp * EnemyProg.DebuffDmgMult); BoltEntity bo = other.transform.root.GetComponent <BoltEntity>(); if (bo == null) { bo = other.transform.root.GetComponentInChildren <BoltEntity>(); } //POISON ATTACKS if (EnemyProg.abilities.Contains(EnemyProgression.Abilities.Poisonous)) { BuffDB.AddBuff(3, 32, Mathf.Sqrt(num / 10) / 10, poisonDuration); } //STUN ON HIT if (EnemyProg.abilities.Contains(EnemyProgression.Abilities.Basher)) { ModdedPlayer.instance.Stun(stunDuration); } if (ModdedPlayer.instance.thornsDamage > 0) { Invoke("HitEnemeyDelayed", 0.1f); } } } } catch (System.Exception ex) { ModAPI.Log.Write(ex.ToString()); } PlayerStats component2 = other.transform.root.GetComponent <PlayerStats>(); if (male || female || creepy_male || creepy_fat || creepy || creepy_baby) { netId component3 = other.transform.GetComponent <netId>(); if (BoltNetwork.isServer && component3) { other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); return; } if (BoltNetwork.isClient && netPrefab && !(bool)component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); } else if (BoltNetwork.isServer) { if (!(bool)component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); } } else if (!BoltNetwork.isRunning && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(num); } } else if (!netPrefab && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(num); } goto IL_092f; } return; } goto IL_092f; } return; IL_092f: if (other.gameObject.CompareTag("enemyCollide") && mainTrigger && bodyCollider && !enemyAtStructure) { setupAttackerType(); if (other.gameObject != bodyCollider) { other.transform.SendMessageUpwards("getAttackDirection", Random.Range(0, 2), SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("getCombo", Random.Range(1, 4), SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttackerType", attackerType, SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttacker", rootTr.gameObject, SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("Hit", 6, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } } if (other.gameObject.CompareTag("BreakableWood") || (other.gameObject.CompareTag("BreakableRock") && mainTrigger)) { other.transform.SendMessage("Hit", 50, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, 50f), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (other.gameObject.CompareTag("SmallTree") && !mainTrigger) { other.SendMessage("Hit", 2, SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Fire") && mainTrigger && firemanMain && !events.noFireAttack) { other.SendMessage("Burn", SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Tree") && mainTrigger && creepy_male) { other.SendMessage("Explosion", 5f, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (!other.gameObject.CompareTag("structure") && !other.gameObject.CompareTag("SLTier1") && !other.gameObject.CompareTag("SLTier2") && !other.gameObject.CompareTag("SLTier3") && !other.gameObject.CompareTag("jumpObject") && !other.gameObject.CompareTag("UnderfootWood")) { return; } if (!mainTrigger) { return; } getStructureStrength component4 = other.gameObject.GetComponent <getStructureStrength>(); bool flag2 = false; if (component4 == null) { flag2 = true; } enemyAtStructure = true; int num2 = 0; if (!creepy_male && !creepy && !creepy_fat && !creepy_baby) { if (!flag2) { num2 = ((maleSkinny || femaleSkinny) ? ((component4._strength == getStructureStrength.strength.weak) ? Mathf.FloorToInt(8f * GameSettings.Ai.regularStructureDamageRatio) : 0) : ((pale || painted || skinned) ? ((component4._strength != getStructureStrength.strength.veryStrong) ? Mathf.FloorToInt(16f * GameSettings.Ai.regularStructureDamageRatio) : 0) : ((component4._strength != getStructureStrength.strength.veryStrong) ? Mathf.FloorToInt(12f * GameSettings.Ai.regularStructureDamageRatio) : 0))); goto IL_0d63; } return; } num2 = ((!creepy_baby) ? Mathf.FloorToInt(30f * GameSettings.Ai.creepyStructureDamageRatio) : Mathf.FloorToInt(10f * GameSettings.Ai.creepyStructureDamageRatio)); goto IL_0d63; IL_0d63: if (setup && setup.health.poisoned) { num2 /= 2; } other.SendMessage("Hit", num2, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, num2), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } catch (System.Exception ee) { ModAPI.Log.Write(ee.ToString()); } }
private void OnTriggerEnter(Collider other) { this.currState = this.animator.GetCurrentAnimatorStateInfo(0); this.nextState = this.animator.GetNextAnimatorStateInfo(0); if (this.currState.tagHash == this.damagedHash || this.currState.tagHash == this.staggerHash || this.currState.tagHash == this.hitStaggerHash || this.currState.tagHash == this.deathHash || this.nextState.tagHash == this.damagedHash || this.nextState.tagHash == this.staggerHash || this.nextState.tagHash == this.hitStaggerHash || this.nextState.tagHash == this.deathHash) { return; } if (other.gameObject.CompareTag("trapTrigger")) { other.gameObject.SendMessage("CutRope", SendMessageOptions.DontRequireReceiver); } if (!this.netPrefab && LocalPlayer.Animator && LocalPlayer.Animator.GetBool("deathBool")) { return; } if (other.gameObject.CompareTag("SmallTree")) { other.SendMessage("Hit", 10, SendMessageOptions.DontRequireReceiver); other.SendMessage("Hit", 10, SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("playerHitDetect") && this.mainTrigger) { if (!Scene.SceneTracker.hasAttackedPlayer) { Scene.SceneTracker.hasAttackedPlayer = true; Scene.SceneTracker.Invoke("resetHasAttackedPlayer", (float)UnityEngine.Random.Range(120, 240)); } targetStats component = other.transform.root.GetComponent <targetStats>(); if (component && component.targetDown) { return; } Animator componentInParent = other.gameObject.GetComponentInParent <Animator>(); Vector3 position = this.rootTr.position; position.y += 3.3f; Vector3 direction = other.transform.position - position; if (Physics.Raycast(position, direction, out this.hit, direction.magnitude, this.enemyHitMask, QueryTriggerInteraction.Ignore)) { return; } if (!this.creepy_male && !this.creepy && !this.creepy_baby && !this.creepy_fat && this.events && componentInParent) { bool flag = this.InFront(other.gameObject); if (!BoltNetwork.isServer || !this.netPrefab) { if (flag && this.events.parryBool && (componentInParent.GetNextAnimatorStateInfo(1).tagHash == this.blockHash || componentInParent.GetCurrentAnimatorStateInfo(1).tagHash == this.blockHash)) { int parryDir = this.events.parryDir; this.animator.SetIntegerReflected("parryDirInt", parryDir); if (BoltNetwork.isClient && this.netPrefab) { this.animator.SetTriggerReflected("ClientParryTrigger"); this.hitPrediction.StartParryPrediction(); parryEnemy parryEnemy = parryEnemy.Create(GlobalTargets.OnlyServer); parryEnemy.Target = base.transform.root.GetComponent <BoltEntity>(); parryEnemy.Send(); FMODCommon.PlayOneshot(this.parryEvent, base.transform); } else { this.animator.SetTriggerReflected("parryTrigger"); } this.events.StartCoroutine("disableAllWeapons"); playerHitReactions componentInParent2 = other.gameObject.GetComponentInParent <playerHitReactions>(); if (componentInParent2 != null) { componentInParent2.enableParryState(); } FMODCommon.PlayOneshotNetworked(this.parryEvent, base.transform, FMODCommon.NetworkRole.Server); this.events.parryBool = false; return; } } } if (this.events) { this.events.parryBool = false; } other.transform.root.SendMessage("getHitDirection", this.rootTr.position, SendMessageOptions.DontRequireReceiver); int num = 0; if (this.maleSkinny || this.femaleSkinny) { if (this.pale) { if (this.skinned) { num = Mathf.FloorToInt(10f * GameSettings.Ai.skinnyDamageRatio * GameSettings.Ai.skinMaskDamageRatio); } else { num = Mathf.FloorToInt(10f * GameSettings.Ai.skinnyDamageRatio); } } else { num = Mathf.FloorToInt(13f * GameSettings.Ai.skinnyDamageRatio); if (this.maleSkinny && this.props.regularStick.activeSelf && this.events.leftHandWeapon) { num = Mathf.FloorToInt((float)num * 1.35f); } } } else if (this.male && this.pale) { if (this.skinned) { num = Mathf.FloorToInt(22f * GameSettings.Ai.largePaleDamageRatio * GameSettings.Ai.skinMaskDamageRatio); } else { num = Mathf.FloorToInt(22f * GameSettings.Ai.largePaleDamageRatio); } } else if (this.male && !this.firemanMain) { if (this.painted) { num = Mathf.FloorToInt(20f * GameSettings.Ai.regularMaleDamageRatio * GameSettings.Ai.paintedDamageRatio); } else { num = Mathf.FloorToInt(20f * GameSettings.Ai.regularMaleDamageRatio); } } else if (this.female) { num = Mathf.FloorToInt(17f * GameSettings.Ai.regularFemaleDamageRatio); } else if (this.creepy) { if (this.pale) { num = Mathf.FloorToInt(35f * GameSettings.Ai.creepyDamageRatio); } else { num = Mathf.FloorToInt(28f * GameSettings.Ai.creepyDamageRatio); } } else if (this.creepy_male) { if (this.pale) { num = Mathf.FloorToInt(40f * GameSettings.Ai.creepyDamageRatio); } else { num = Mathf.FloorToInt(30f * GameSettings.Ai.creepyDamageRatio); } } else if (this.creepy_baby) { num = Mathf.FloorToInt(26f * GameSettings.Ai.creepyBabyDamageRatio); } else if (this.firemanMain) { num = Mathf.FloorToInt(12f * GameSettings.Ai.regularMaleDamageRatio); if (this.events && !this.enemyAtStructure && !this.events.noFireAttack) { if (BoltNetwork.isRunning && this.netPrefab) { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } else { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } } } if (!this.female && this.male) { if (this.holdingRegularWeapon() && this.events.leftHandWeapon) { num += 7; } else if (this.holdingAdvancedWeapon() && this.events.leftHandWeapon) { num += 15; } } if (this.setup && this.setup.health.poisoned) { num = Mathf.FloorToInt((float)num / 1.6f); } PlayerStats component2 = other.transform.root.GetComponent <PlayerStats>(); if (this.male || this.female || this.creepy_male || this.creepy_fat || this.creepy || this.creepy_baby) { netId component3 = other.transform.GetComponent <netId>(); if (BoltNetwork.isServer && component3) { other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); return; } if (BoltNetwork.isClient && this.netPrefab && !component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); } else if (BoltNetwork.isServer) { if (!component3) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); } } else if (!BoltNetwork.isRunning && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(num); } } else if (!this.netPrefab && component2) { component2.setCurrentAttacker(this); component2.hitFromEnemy(num); } } if (other.gameObject.CompareTag("enemyCollide") && this.mainTrigger && this.bodyCollider && !this.enemyAtStructure) { this.setupAttackerType(); if (other.gameObject != this.bodyCollider) { other.transform.SendMessageUpwards("getAttackDirection", UnityEngine.Random.Range(0, 2), SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("getCombo", UnityEngine.Random.Range(1, 4), SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttackerType", this.attackerType, SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttacker", this.rootTr.gameObject, SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("Hit", 6, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } } if (other.gameObject.CompareTag("BreakableWood") || (other.gameObject.CompareTag("BreakableRock") && this.mainTrigger)) { other.transform.SendMessage("Hit", 50, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, 50f), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (other.gameObject.CompareTag("SmallTree")) { other.SendMessage("Hit", 5, SendMessageOptions.DontRequireReceiver); other.SendMessage("Hit", 5, SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Fire") && this.mainTrigger && this.firemanMain && !this.events.noFireAttack) { other.SendMessage("Burn", SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Tree") && this.mainTrigger && (this.creepy_male || this.boss)) { other.SendMessage("Explosion", 5f, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if ((other.gameObject.CompareTag("structure") || other.gameObject.CompareTag("SLTier1") || other.gameObject.CompareTag("SLTier2") || other.gameObject.CompareTag("SLTier3") || other.gameObject.CompareTag("jumpObject") || other.gameObject.CompareTag("UnderfootWood")) && this.mainTrigger) { getStructureStrength component4 = other.gameObject.GetComponent <getStructureStrength>(); bool flag2 = false; if (component4 == null) { flag2 = true; } this.enemyAtStructure = true; int num2; if (this.creepy_male || this.creepy || this.creepy_fat || this.creepy_baby) { if (this.creepy_baby) { num2 = Mathf.FloorToInt(10f * GameSettings.Ai.creepyStructureDamageRatio); } else { num2 = Mathf.FloorToInt(30f * GameSettings.Ai.creepyStructureDamageRatio); } } else { if (flag2) { return; } if (this.maleSkinny || this.femaleSkinny) { if (component4._strength == getStructureStrength.strength.weak) { num2 = Mathf.FloorToInt(8f * GameSettings.Ai.regularStructureDamageRatio); } else { num2 = 0; } } else if (this.pale || this.painted || this.skinned) { if (component4._strength == getStructureStrength.strength.veryStrong) { num2 = 0; } else { num2 = Mathf.FloorToInt(16f * GameSettings.Ai.regularStructureDamageRatio); } } else if (component4._strength == getStructureStrength.strength.veryStrong) { num2 = 0; } else { num2 = Mathf.FloorToInt(12f * GameSettings.Ai.regularStructureDamageRatio); } } if (this.setup && this.setup.health.poisoned) { num2 /= 2; } other.SendMessage("Hit", num2, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, (float)num2), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } }
private void Awake() { this.hitReactions = base.transform.root.GetComponent <playerHitReactions>(); }
private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("trapTrigger")) { other.gameObject.SendMessage("CutRope", SendMessageOptions.DontRequireReceiver); } if (!this.netPrefab && LocalPlayer.Transform && LocalPlayer.Animator.GetBool("deathBool")) { return; } if (other.gameObject.CompareTag("playerHitDetect") && this.mainTrigger) { if (!Scene.SceneTracker.hasAttackedPlayer) { Scene.SceneTracker.hasAttackedPlayer = true; Scene.SceneTracker.Invoke("resetHasAttackedPlayer", (float)UnityEngine.Random.Range(60, 180)); } Animator componentInParent = other.gameObject.GetComponentInParent <Animator>(); Vector3 position = this.rootTr.position; position.y += 3.3f; Vector3 direction = other.transform.position - position; RaycastHit[] array = Physics.RaycastAll(position, direction, direction.magnitude, this.enemyHitMask); for (int i = 0; i < array.Length; i++) { if (array[i].transform.gameObject.layer == 11 || array[i].transform.gameObject.layer == 13 || array[i].transform.gameObject.layer == 17 || array[i].transform.gameObject.layer == 20 || array[i].transform.gameObject.layer == 21 || array[i].transform.gameObject.layer == 25) { return; } } if (!this.creepy_male && !this.creepy && !this.creepy_baby && !this.creepy_fat && this.events && componentInParent && this.events.parryBool && componentInParent.GetNextAnimatorStateInfo(1).tagHash == this.blockHash) { int parryDir = this.events.parryDir; this.animator.SetIntegerReflected("parryDirInt", parryDir); this.animator.SetTriggerReflected("parryTrigger"); this.events.StartCoroutine("disableAllWeapons"); playerHitReactions componentInParent2 = other.gameObject.GetComponentInParent <playerHitReactions>(); if (componentInParent2 != null) { componentInParent2.enableParryState(); } FMODCommon.PlayOneshotNetworked(this.parryEvent, base.transform, FMODCommon.NetworkRole.Server); return; } other.transform.root.SendMessage("getHitDirection", this.rootTr.position, SendMessageOptions.DontRequireReceiver); int num = 0; if (this.maleSkinny || this.femaleSkinny) { if (this.pale) { num = 10; } else { num = 13; } } else if (this.male && this.pale) { num = 22; } else if (this.male && !this.firemanMain) { num = 20; } else if (this.female) { num = 17; } else if (this.creepy) { if (this.pale) { num = 35; } else { num = 28; } } else if (this.creepy_male) { if (this.pale) { num = 40; } else { num = 30; } } else if (this.creepy_baby) { num = 26; } else if (this.firemanMain) { num = 8; if (!this.events.noFireAttack) { if (BoltNetwork.isRunning && this.netPrefab) { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } else { other.gameObject.SendMessageUpwards("Burn", SendMessageOptions.DontRequireReceiver); } } } PlayerStats component = other.transform.root.GetComponent <PlayerStats>(); if (this.male || this.female || this.creepy_male || this.creepy_fat || this.creepy || this.creepy_baby) { netId component2 = other.transform.GetComponent <netId>(); if (BoltNetwork.isServer && component2) { other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); return; } if (BoltNetwork.isClient && this.netPrefab && !component2) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("StartPrediction", SendMessageOptions.DontRequireReceiver); } else if (BoltNetwork.isServer) { if (!component2) { other.transform.root.SendMessage("setCurrentAttacker", this, SendMessageOptions.DontRequireReceiver); other.transform.root.SendMessage("hitFromEnemy", num, SendMessageOptions.DontRequireReceiver); } } else if (!BoltNetwork.isRunning && component) { component.setCurrentAttacker(this); component.hitFromEnemy(num); } } else if (!this.netPrefab && component) { component.setCurrentAttacker(this); component.hitFromEnemy(num); } } if (other.gameObject.CompareTag("enemyCollide") && this.mainTrigger && this.bodyCollider) { this.setupAttackerType(); if (other.gameObject != this.bodyCollider) { other.transform.SendMessageUpwards("getAttackDirection", UnityEngine.Random.Range(0, 2), SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("getCombo", UnityEngine.Random.Range(1, 4), SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttackerType", this.attackerType, SendMessageOptions.DontRequireReceiver); other.transform.SendMessage("getAttacker", this.rootTr.gameObject, SendMessageOptions.DontRequireReceiver); other.transform.SendMessageUpwards("Hit", 6, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } } if (other.gameObject.CompareTag("BreakableWood") || (other.gameObject.CompareTag("BreakableRock") && this.mainTrigger)) { other.transform.SendMessage("Hit", 50, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, 50f), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if (other.gameObject.CompareTag("SmallTree") && !this.mainTrigger) { other.SendMessage("Hit", 2, SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Fire") && this.mainTrigger && this.firemanMain && !this.events.noFireAttack) { other.SendMessage("Burn", SendMessageOptions.DontRequireReceiver); } if (other.gameObject.CompareTag("Tree") && this.mainTrigger && this.creepy_male) { other.SendMessage("Explosion", 5f, SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } if ((other.gameObject.CompareTag("structure") || other.gameObject.CompareTag("SLTier1") || other.gameObject.CompareTag("SLTier2") || other.gameObject.CompareTag("SLTier3") || other.gameObject.CompareTag("jumpObject")) && this.mainTrigger) { getStructureStrength component3 = other.gameObject.GetComponent <getStructureStrength>(); if (component3 == null) { return; } int num2; if (this.creepy_male || this.creepy) { if (this.creepy) { if (component3._strength == getStructureStrength.strength.veryStrong) { num2 = 15; } else { num2 = 30; } } else { num2 = 40; } } else if (this.maleSkinny || this.femaleSkinny) { if (component3._strength == getStructureStrength.strength.weak) { num2 = 7; } else { num2 = 0; } } else if (this.pale) { if (component3._strength == getStructureStrength.strength.veryStrong) { num2 = 0; } else { num2 = 6; } } else if (component3._strength == getStructureStrength.strength.strong || component3._strength == getStructureStrength.strength.veryStrong) { num2 = 0; } else { num2 = 7; } other.SendMessage("Hit", num2, SendMessageOptions.DontRequireReceiver); other.SendMessage("LocalizedHit", new LocalizedHitData(base.transform.position, (float)num2), SendMessageOptions.DontRequireReceiver); FMODCommon.PlayOneshotNetworked(this.weaponHitEvent, base.transform, FMODCommon.NetworkRole.Server); } }