예제 #1
0
        private void SendHitFromEnemy()
        {
            float sqrMagnitude = (LocalPlayer.Transform.position - transform.position).sqrMagnitude;

            if (sqrMagnitude < radius * radius)
            {
                int dmg = (int)(damage * (1 - ModdedPlayer.Stats.magicDamageTaken));

                if (isArcane)
                {
                    //negative armor
                    BuffDB.AddBuff(21, 63, -dmg * 2, 30);
                    BuffDB.AddBuff(1, 64, 0.2f, 10);
                    BuffDB.AddBuff(2, 65, 0.2f, 10);
                    dmg *= 2;
                }
                else
                {
                    BuffDB.AddBuff(1, 64, 0.7f, 6);
                    BuffDB.AddBuff(2, 65, 0.7f, 6);
                    LocalPlayer.Stats.Burn();
                }
                LocalPlayer.Stats.Hit((int)(dmg * (1 - ModdedPlayer.Stats.magicDamageTaken)), false, PlayerStats.DamageType.Drowning);
            }
        }
예제 #2
0
 public static void Effect()
 {
     if (!active)
     {
         return;
     }
     LocalPlayer.Stats.Energy  = ModdedPlayer.Stats.TotalMaxEnergy;
     LocalPlayer.Stats.Stamina = LocalPlayer.Stats.Energy;
     if (ModdedPlayer.Stats.i_setcount_BerserkSet >= 4)
     {
         float timeSpan = Time.time - castTimestamp;
         int   bonus    = Mathf.CeilToInt(timeSpan);
         if (bonus > setbonusAmount)
         {
             setbonusAmount = bonus;
             float buff = 0.35f * bonus + 1;
             BuffDB.ForceEndBuff(106);
             BuffDB.AddBuff(9, 106, buff, 3f);
             if (ModdedPlayer.Stats.i_setcount_BerserkSet >= 5)
             {
                 if (bonus <= 15)
                 {
                     BuffDB.ForceEndBuff(107);
                 }
                 BuffDB.AddBuff(14, 107, 0.3f * bonus, ModdedPlayer.Stats.spell_berserkDuration - bonus);
             }
         }
     }
 }
예제 #3
0
        private void OnTriggerEnter(Collider other)
        {
            float distance = Vector3.Distance(LocalPlayer.Transform.position, this.transform.position);

            if (distance < 100)
            {
                soundEmitter.PlayExplosionSound();
                LocalPlayer.HitReactions.enableFootShake(1, Math.Min(30 / distance, 0.5f));
            }
            if (other.CompareTag("suitCase") || other.CompareTag("metalProp") || other.CompareTag("animalCollide") ||
                other.CompareTag("Fish") || other.CompareTag("Tree") || other.CompareTag("MidTree") ||
                other.CompareTag("suitCase") || other.CompareTag("SmallTree"))
            {
                other.SendMessage("Hit", Damage, SendMessageOptions.DontRequireReceiver);
                other.SendMessage("Explosion", 0.1f, SendMessageOptions.DontRequireReceiver);
            }
            else if (other.transform.root == LocalPlayer.Transform.root)
            {
                LocalPlayer.Stats.Hit(Damage, false, PlayerStats.DamageType.Fire);
                ModdedPlayer.instance.Stun(3f);
                BuffDB.AddBuff(21, 69, Damage / 3, 60);
                other.SendMessage("Burn", SendMessageOptions.DontRequireReceiver);
            }
            else if (other.CompareTag("BreakableWood") || other.CompareTag("BreakableRock") || other.CompareTag("BreakableRock") || other.CompareTag("structure"))
            {
                other.SendMessage("Hit", Damage, SendMessageOptions.DontRequireReceiver);
                other.SendMessage("LocalizedHit", new LocalizedHitData(transform.position, Damage), SendMessageOptions.DontRequireReceiver);
            }
        }
예제 #4
0
 public IEnumerator DoAction()
 {
     while (true)
     {
         RaycastHit[] hits = Physics.BoxCastAll(transform.position, Vector3.one * 0.5f, transform.forward, transform.rotation, 50);
         foreach (RaycastHit hit in hits)
         {
             if (hit.transform != null)
             {
                 if (hit.transform.CompareTag("Player") || hit.transform.CompareTag("PlayerNet"))
                 {
                     if (hit.transform.root == LocalPlayer.Transform.root)
                     {
                         LocalPlayer.Stats.Hit((int)(dmg * 0.3f * (1 - ModdedPlayer.instance.MagicResistance)), false, PlayerStats.DamageType.Fire);
                         BuffDB.AddBuff(10, 67, 0.5f, 15);
                         BuffDB.AddBuff(2, 66, 0.5f, 15);
                         BuffDB.AddBuff(3, 68, dmg / 13, 5);
                         hit.transform.SendMessage("Burn", SendMessageOptions.DontRequireReceiver);
                     }
                 }
                 else if (hit.transform.CompareTag("structure"))// && (!BoltNetwork.isRunning || BoltNetwork.isServer || !BoltNetwork.isClient || !PlayerPreferences.NoDestructionRemote))
                 {
                     hit.transform.SendMessage("Hit", dmg / 2, SendMessageOptions.DontRequireReceiver);
                     hit.transform.SendMessage("LocalizedHit", new LocalizedHitData(hit.point, dmg / 2), SendMessageOptions.DontRequireReceiver);
                 }
             }
         }
         yield return(new WaitForSeconds(0.1f));
     }
 }
예제 #5
0
        private void Update()
        {
            if (gameObject.layer != DesiredLayer)
            {
                gameObject.layer = DesiredLayer;
            }

            if (effectReady)
            {
                lifetime += Time.deltaTime;
                if (duration < lifetime)
                {
                    Pause();
                }

                if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < effectRadius * effectRadius)
                {
                    if (fromEnemy)
                    {
                        LocalPlayer.Stats.HealthChange(-damageAmount * Time.deltaTime * (ModdedPlayer.Stats.magicDamageTaken) * ModdedPlayer.Stats.allDamageTaken);
                        BuffDB.AddBuff(1, 5, slowAmount, 20);
                        LocalPlayer.Stats.Burn();
                    }
                    else
                    {
                        LocalPlayer.Stats.Health       += healAmount * Time.deltaTime;
                        LocalPlayer.Stats.HealthTarget += healAmount * 1.5f * Time.deltaTime;
                        BuffDB.AddBuff(5, 6, boostAmount, 30);
                        BuffDB.AddBuff(26, 94, 0.5f, 10);
                    }
                }
            }
        }
예제 #6
0
        private static void PurgeLocalPlayer(bool heal, bool bonusDamage)
        {
            int[] keys = BuffDB.activeBuffs.Keys.ToArray();
            int   a    = heal ? 1 : 0;

            for (int i = 0; i < keys.Length; i++)
            {
                if (BuffDB.activeBuffs[keys[i]].isNegative)
                {
                    BuffDB.activeBuffs[keys[i]].ForceEndBuff(keys[i]);
                }
            }

            ModdedPlayer.instance.StunDuration = 0;
            ModdedPlayer.instance.RootDuration = 0;
            BuffDB.AddBuff(7, 98, 1, 3f);

            if (heal)
            {
                float healAmount = (ModdedPlayer.Stats.TotalMaxHealth - LocalPlayer.Stats.Health);
                if (bonusDamage)
                {
                    float buffAmount = 1 + (healAmount / ModdedPlayer.Stats.TotalMaxHealth) * 3;
                    BuffDB.AddBuff(9, 90, buffAmount, 6.5f);
                }
                healAmount *= 0.4f * ModdedPlayer.Stats.allRecoveryMult;
                LocalPlayer.Stats.Health       += healAmount;
                LocalPlayer.Stats.HealthTarget += healAmount;
                LocalPlayer.Stats.Energy       += (ModdedPlayer.Stats.TotalMaxEnergy - LocalPlayer.Stats.Energy) * 0.5f;
            }
        }
예제 #7
0
        protected override void CheckDeath()
        {
            if (Cheats.GodMode)
            {
                return;
            }
            if (this.Health <= 0f && !this.Dead)
            {
                COTFEvents.Instance.OnTakeLethalDamage.Invoke();
            }
            if (this.Health <= 0f && !this.Dead)
            {
                if (ModdedPlayer.Stats.perk_nearDeathExperienceUnlocked && !ModdedPlayer.Stats.perk_nearDeathExperienceTriggered)
                {
                    Health = ModdedPlayer.Stats.TotalMaxHealth;
                    BuffDB.AddBuff(20, 61, 0, 600);
                    BuffDB.AddBuff(6, 82, 1, 10);
                    BuffDB.AddBuff(26, 83, 0.1f, 10);                           //90% damage reduction
                    BuffDB.AddBuff(25, 99, 35, 10);                             //+35 hp/s
                    BuffDB.AddBuff(11, 100, 10, 10);                            //+10 ep/s
                    return;
                }



                if (LocalPlayer.AnimControl.swimming)
                {
                    COTFEvents.Instance.OnDeath.Invoke();
                    switch (ModSettings.dropsOnDeath)
                    {
                    case ModSettings.DropsOnDeathMode.All:
                        Inventory.Instance.DropAll();
                        break;

                    case ModSettings.DropsOnDeathMode.Equipped:
                        Inventory.Instance.DropEquipped();
                        break;

                    case ModSettings.DropsOnDeathMode.NonEquipped:
                        Inventory.Instance.DropNonEquipped();
                        break;
                    }
                    this.DeathInWater(0);
                    return;
                }

                this.Dead           = true;
                this.Player.enabled = false;
                if (ModSettings.killOnDowned)
                {
                    TheForest.Save.PlayerRespawnMP.KillPlayer();
                }
                else
                {
                    this.FallDownDead();
                }
            }
        }
예제 #8
0
 public static void OnDisable()
 {
     active = false;
     ModdedPlayer.instance.AttackSpeedMult  /= 1.2f;
     ModdedPlayer.instance.DamageOutputMult /= 1.2f;
     ModdedPlayer.instance.MoveSpeedMult    /= 1.3f;
     ModdedPlayer.instance.DamageReduction  /= 2f;
     BuffDB.AddBuff(18, 51, LocalPlayer.Stats.Energy, 20);
 }
예제 #9
0
 public static void OnDisable()
 {
     active = false;
     ModdedPlayer.Stats.attackSpeed.Divide(1.25f);
     ModdedPlayer.Stats.allDamage.Divide(1.25f);
     ModdedPlayer.Stats.movementSpeed.Divide(1.35f);
     ModdedPlayer.Stats.allDamageTaken.Divide(5f);
     BuffDB.AddBuff(18, 51, LocalPlayer.Stats.Energy, 15);
 }
        protected override void fireProjectile()
        {
            if (ModdedPlayer.instance.IsSmokeysQuiver)
            {
                BuffDB.AddBuff(14, 81, 2.5f, 8);
            }

            StartCoroutine(RCoroutines.i.AsyncCrossbowFire(_ammoId, _ammoSpawnPosGo, _boltProjectile, this));
        }
예제 #11
0
 private void Update()
 {
     transform.position = followTarget.position;                                                 //copies position of the caster
     transform.Rotate(Vector3.up * 720 * Time.deltaTime, Space.World);                           //rotates
     if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < _radius * _radius) //if player is in range, slows him
     {
         BuffDB.AddBuff(1, 30, 0.6f, 5);
         BuffDB.AddBuff(2, 31, 0.6f, 5);
     }
 }
        protected override void fireProjectile()
        {
            if (ModdedPlayer.Stats.i_SmokeyCrossbowQuiver.value)
            {
                BuffDB.AddBuff(14, 81, 2.5f, 8);
            }
            COTFEvents.Instance.OnAttackRanged.Invoke();
            COTFEvents.Instance.OnAttackRangedCrossbow.Invoke();

            StartCoroutine(RCoroutines.i.AsyncCrossbowFire(_ammoId, _ammoSpawnPosGo, _boltProjectile, this));
        }
예제 #13
0
 private void Update()
 {
     if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < radius * radius)
     {
         LocalPlayer.Stats.HealthTarget += healing * Time.deltaTime;
         LocalPlayer.Stats.Health       += healing * Time.deltaTime;
         if (GrantImmunity)
         {
             BuffDB.AddBuff(4, 40, 0, 0.1f);
         }
     }
 }
예제 #14
0
 public static void GiveEffect(bool giveEffect2, bool giveEffect3, int ArmorAmount = 1)
 {
     BuffDB.AddBuff(5, 45, 1.25f, 120);
     BuffDB.AddBuff(14, 46, 1.25f, 120);
     if (giveEffect2)
     {
         BuffDB.AddBuff(9, 47, 1.25f, 120);
     }
     if (giveEffect3)
     {
         BuffDB.AddBuff(15, 48, ArmorAmount, 120);
     }
 }
예제 #15
0
 public static void GiveEffect(float speed, float damage, bool giveEffect2, bool giveEffect3, int ArmorAmount = 1)
 {
     BuffDB.AddBuff(5, 45, speed, 120);
     BuffDB.AddBuff(14, 46, speed, 120);
     if (giveEffect2)
     {
         BuffDB.AddBuff(9, 47, damage, 120);
     }
     if (giveEffect3)
     {
         BuffDB.AddBuff(15, 48, ArmorAmount, 120);
     }
 }
예제 #16
0
 private void Update()
 {
     if (IsOn)
     {
         SpellCaster.RemoveStamina(Cost * Time.deltaTime);
         if (LocalPlayer.Stats.Stamina < 10)
         {
             Toggle();
         }
         if (GiveDamageBuff)
         {
             BuffDB.AddBuff(13, 44, 1.1f, 0.1f);
         }
     }
 }
예제 #17
0
        public override void Hit(int damage, bool ignoreArmor, DamageType type)
        {
            var hitEventContext = new COTFEvents.GotHitParams(damage, ignoreArmor);

            COTFEvents.Instance.OnGetHit.Invoke(hitEventContext);
            if (type == DamageType.Physical)
            {
                COTFEvents.Instance.OnGetHitPhysical.Invoke(hitEventContext);

                if (UnityEngine.Random.value > ModdedPlayer.Stats.getHitChance)
                {
                    COTFEvents.Instance.OnDodge.Invoke();
                    if (ModdedPlayer.Stats.i_isWindArmor)
                    {
                        //grant buffs;
                        BuffDB.AddBuff(5, 84, 1.2f, 30);
                        BuffDB.AddBuff(9, 85, 1.35f, 10);
                        BuffDB.AddBuff(15, 86, 2000, 10);
                        HealthTarget += ModdedPlayer.Stats.TotalMaxHealth * 0.05f;
                    }
                    Sfx.PlayWhoosh();
                    return;
                }
            }
            else
            {
                COTFEvents.Instance.OnGetHitNonPhysical.Invoke(hitEventContext);
            }
            float f = damage * ModdedPlayer.Stats.allDamageTaken;

            if (!ignoreArmor)
            {
                f *= 1 - ModReferences.DamageReduction(Mathf.Max(0, ModdedPlayer.Stats.armor - (int)ModdedPlayer.instance.lostArmor));
            }
            if (type == DamageType.Fire)
            {
                f *= 0.01f * ModdedPlayer.Stats.TotalMaxHealth;
                f *= UnityEngine.Random.Range(0.9f, 1.4f);
                //f *= 1-ModdedPlayer.Stats.magicDamageTaken;
                f *= ModdedPlayer.Stats.fireDamageTaken;
            }
            if (ModdedPlayer.Stats.i_KingQruiesSword)
            {
                BuffDB.AddBuff(22, 80, f, 1);
            }
            CotfUtils.Log("Tanked damage: " + f, true);
            base.Hit(damage, ignoreArmor, type);
        }
예제 #18
0
파일: Program.cs 프로젝트: keksdude/test
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            MemoryAddresses.Init("memory_addresses.xml");
            BuffDB.Init("buffdb.xml");
            Dics.Init();
            GlobalKeyboard.Init();
            KeySetting.Init();
            TaskDB.Init();
            ProfileDB.Init();
            GUI = new GUI();
            ProcessManager.Init();
            Application.Run(GUI);
        }
예제 #19
0
        protected override void CheckDeath()
        {
            if (global::Cheats.GodMode)
            {
                return;
            }
            if (this.Health <= 0f && !this.Dead)
            {
                if (ModdedPlayer.instance.NearDeathExperienceUnlocked && !ModdedPlayer.instance.NearDeathExperience)
                {
                    Health = ModdedPlayer.instance.MaxHealth;
                    BuffDB.AddBuff(20, 61, 0, 600);
                    BuffDB.AddBuff(6, 82, 0, 10);
                    BuffDB.AddBuff(26, 83, 0, 10);
                    return;
                }

                switch (ModSettings.dropsOnDeath)
                {
                case ModSettings.DropsOnDeathMode.All:
                    Inventory.Instance.DropAll();
                    break;

                case ModSettings.DropsOnDeathMode.Equipped:
                    Inventory.Instance.DropEquipped();
                    break;
                }

                if (TheForest.Utils.LocalPlayer.AnimControl.swimming)
                {
                    this.DeathInWater(0);
                    return;
                }

                this.Dead           = true;
                this.Player.enabled = false;
                if (ModSettings.killOnDowned)
                {
                    TheForest.Save.PlayerRespawnMP.KillPlayer();
                }
                else
                {
                    this.FallDownDead();
                }
            }
        }
예제 #20
0
 public static void Init()
 {
     TwitchMod.Register("randomitem", s => ChampionsOfForest.Network.NetworkManager.SendItemDrop(ItemDataBase.GetRandomItem(Random.value * 2000), LocalPlayer.Transform.position + Vector3.up * 3f));
     TwitchMod.Register("buff", s =>
     {
         int r = Random.Range(0, positiveBuffs.Length);
         BuffDB.AddBuff(positiveBuffs[r], 90000, positiveBuffs_amounts[r], 10);
     });
     TwitchMod.Register("debuff", s =>
     {
         int r = Random.Range(0, negativeBuffs.Length);
         BuffDB.AddBuff(negativeBuffs[r], 90001, negativeBuffs_amounts[r], 10);
     });
     TwitchMod.Register("meteors", s => Meteor.CreateEnemy(LocalPlayer.Transform.position, Random.Range(0, 1000000)));
     TwitchMod.Register("laser", s => EnemyLaser.CreateLaser(LocalPlayer.Transform.position - LocalPlayer.Transform.forward * 10, LocalPlayer.Transform.forward));
     TwitchMod.Register("cataclysm", s => Cataclysm.Create(LocalPlayer.Transform.position, 7, 100, 5, Cataclysm.TornadoType.Fire, true));
 }
예제 #21
0
 public static void ResistDeath()
 {
     if (ResistDeathTimeStamp < Time.time)
     {
         if (ResistDeathTimeStamp + 60 <= Time.time)
         {
             ResistDeathTimeStamp     = Time.time;
             LocalPlayer.Stats.Health = ModdedPlayer.Stats.TotalMaxHealth;
             BuffDB.AddBuff(6, 82, 1, 5);
             BuffDB.AddBuff(26, 108, 0.02f, 5);                     //98% damage reduction
             BuffDB.AddBuff(25, 99, 35, 5);                         //+35 hp/s
         }
     }
     else
     {
         ResistDeathTimeStamp = 0;
     }
 }
예제 #22
0
        private void Update()
        {
            if (isOn)
            {
                if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < 49)
                {
                    float dmgPerTick = Time.deltaTime * damage * ModdedPlayer.Stats.allDamageTaken * ModdedPlayer.Stats.magicDamageTaken * ModReferences.DamageReduction((int)ModdedPlayer.Stats.TotalArmor);

                    if (LocalPlayer.Stats.Health - 1 > dmgPerTick)
                    {
                        LocalPlayer.Stats.Health -= dmgPerTick;
                    }

                    BuffDB.AddBuff(10, 72, 0.7f, 5);
                    BuffDB.AddBuff(21, 73, Time.deltaTime * damage / 30, 15);
                }
            }
        }
예제 #23
0
 private void Update()
 {
     transform.position = followTarget.position;                                                     //copies position of the caster
     transform.Rotate(Vector3.up * 720 * Time.deltaTime, Space.World);                               //rotates
     if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < _radius * _radius)     //if player is in range, slows him
     {
         if (ModdedPlayer.Stats.perk_blizzardSlowReduced)
         {
             BuffDB.AddBuff(1, 30, 0.8f, 1);
             BuffDB.AddBuff(2, 31, 0.9f, 1);
             BuffDB.AddBuff(21, 70, armorReduction * Time.deltaTime / 2, 10);
         }
         else
         {
             BuffDB.AddBuff(1, 30, 0.5f, 6);
             BuffDB.AddBuff(2, 31, 0.25f, 6);
             BuffDB.AddBuff(21, 70, armorReduction * Time.deltaTime, 20);
         }
     }
 }
예제 #24
0
        private void Update()
        {
            timeShift           += Time.deltaTime * 2.3f;
            transform.localScale = Vector3.one * (radius + Mathf.Sin(timeShift * 3.14f * 4f));

            if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < radius * radius)
            {
                LocalPlayer.Stats.HealthTarget += healing * Time.deltaTime;
                LocalPlayer.Stats.Health       += healing * Time.deltaTime;
                if (GrantImmunity)
                {
                    BuffDB.AddBuff(4, 40002, 0, 3f);
                    BuffDB.AddBuff(6, 40001, 0, 3f);
                }
                if (regenEnergy)
                {
                    LocalPlayer.Stats.Energy += healing * Time.deltaTime / 10;
                }
            }
        }
예제 #25
0
 private void Update()
 {
     if (IsOn)
     {
         if (ModdedPlayer.instance.DanceOfFiregod)
         {
             SpellCaster.RemoveStamina(Cost * 10 * Time.deltaTime);
         }
         else
         {
             SpellCaster.RemoveStamina(Cost * Time.deltaTime);
         }
         if (LocalPlayer.Stats.Stamina < 5)
         {
             Toggle();
         }
         if (GiveDamageBuff)
         {
             BuffDB.AddBuff(13, 44, 1.6f, 1f);
         }
     }
 }
예제 #26
0
        public override void Hit(int damage, bool ignoreArmor, DamageType type)
        {
            if (type == DamageType.Physical)
            {
                if (UnityEngine.Random.value > ModdedPlayer.Stats.getHitChance)
                {
                    if (ModdedPlayer.Stats.i_isWindArmor)
                    {
                        //grant buffs;
                        BuffDB.AddBuff(5, 84, 1.2f, 30);
                        BuffDB.AddBuff(9, 85, 1.35f, 10);
                        BuffDB.AddBuff(15, 86, 2000, 10);
                        HealthTarget += ModdedPlayer.Stats.TotalMaxHealth * 0.05f;
                    }
                    Sfx.PlayWhoosh();
                    return;
                }
            }
            float f = damage * ModdedPlayer.Stats.allDamageTaken;

            if (!ignoreArmor)
            {
                f *= 1 - ModReferences.DamageReduction(Mathf.Max(0, ModdedPlayer.Stats.armor - (int)ModdedPlayer.instance.lostArmor));
            }
            if (type == DamageType.Fire)
            {
                f *= 0.01f * ModdedPlayer.Stats.TotalMaxHealth;
                f *= UnityEngine.Random.Range(0.9f, 1.4f);
                //f *= 1-ModdedPlayer.Stats.magicDamageTaken;
                f *= ModdedPlayer.Stats.fireDamageTaken;
            }
            if (ModdedPlayer.Stats.i_KingQruiesSword)
            {
                BuffDB.AddBuff(22, 80, f, 1);
            }

            base.Hit(damage, ignoreArmor, type);
        }
예제 #27
0
        public override void Hit(int damage, bool ignoreArmor, DamageType type)
        {
            if (type == DamageType.Physical)
            {
                if (UnityEngine.Random.value < ModdedPlayer.instance.DodgeChance)
                {
                    if (ModdedPlayer.instance.isWindArmor)
                    {
                        //grant buffs;
                        BuffDB.AddBuff(5, 84, 1.1f, 10);
                        BuffDB.AddBuff(9, 85, 1.15f, 10);
                        BuffDB.AddBuff(15, 86, 1500, 10);
                    }
                    return;
                }
            }
            float f = damage * ModdedPlayer.instance.DamageReductionTotal;

            if (!ignoreArmor)
            {
                f *= 1 - ModdedPlayer.instance.ArmorDmgRed;
            }
            if (type == DamageType.Fire)
            {
                f *= 0.01f * ModdedPlayer.instance.MaxHealth;
                f *= UnityEngine.Random.Range(0.9f, 1.4f);
                //f *= 1-ModdedPlayer.instance.MagicResistance;
                f *= ModdedPlayer.instance.FireDamageTakenMult;
            }
            damage = Mathf.RoundToInt(f);
            if (ModdedPlayer.instance.KingQruiesSpecial)
            {
                BuffDB.AddBuff(22, 80, damage / 2, 4);
            }

            base.Hit(damage, ignoreArmor, type);
        }
예제 #28
0
        public static void Initialize()
        {
            try
            {
                ModSettings.DifficultyChoosen = false;
                if (SceneManager.GetActiveScene().name == "TitleScene")
                {
                    new GameObject("Resource Manager").AddComponent <Res.ResourceLoader>();
                    Res.ResourceLoader.InMainMenu = true;
                }
                else
                {
                    Res.ResourceLoader.InMainMenu = false;

                    new GameObject("NetworkManagerObj").AddComponent <Network.NetworkManager>();
                    GameObject go = new GameObject("Playerobj");
                    go.AddComponent <ModdedPlayer>();
                    go.AddComponent <Inventory>();
                    go.AddComponent <ModReferences>();
                    go.AddComponent <SpellCaster>();
                    go.AddComponent <ClinetItemPicker>();
                    go.AddComponent <MeteorSpawner>();
                    BuffDB.FillBuffList();
                    ItemDataBase.Initialize();
                    SpellDataBase.Initialize();
                    EnemyManager.Initialize();
                    new GameObject("MainMenuObj").AddComponent <MainMenu>();
                    Network.NetworkManager.instance.onGetMessage += Network.CommandReader.OnCommand;
                    Res.Buildings.InitBuildings();
                    Perk.FillPerkList();
                }
            }
            catch (Exception ex)
            {
                ModAPI.Log.Write(ex.ToString());
            }
        }
예제 #29
0
 private void Update()
 {
     transform.Rotate((transform.forward + transform.up + Vector3.right) * rotSpeed * Time.deltaTime);
     Lifetime += Time.deltaTime;
     if (caughtPlayer && ModdedPlayer.Stats.stunImmunity == 0 && playerTransform != null)
     {
         var mag = (playerTransform.position - transform.position).sqrMagnitude;
         if (mag > Radius * Radius)
         {
             playerTransform.position = Vector3.MoveTowards(playerTransform.position, transform.position, mag / 2 * Time.deltaTime);
             BuffDB.AddBuff(5, 71, 0.6f, 5);
             BuffDB.AddBuff(10, 72, 0.6f, 5);
         }
     }
     else
     {
         caughtPlayer = false;
     }
     if (Lifetime < Duration)
     {
         if ((LocalPlayer.Transform.root.position - transform.position).sqrMagnitude < Radius * Radius - 2)
         {
             caughtPlayer    = true;
             playerTransform = LocalPlayer.Transform.root;
         }
     }
     else
     {
         transform.localScale -= Vector3.one * Time.deltaTime * 2;
         Radius -= Time.deltaTime * 2;
         if (transform.localScale.x < 0.002f)
         {
             Destroy(gameObject);
         }
     }
 }
예제 #30
0
 public static void Cast()
 {
     BuffDB.AddBuff(17, 50, 0, 30);
 }