Example #1
0
        private void OnCubeTakeDamage(CubeDamageEvent damageEvent)
        {
            string damageSource = damageEvent.Damage.Damager.name.ToString();

            if (damageEvent.Damage.DamageSource.Owner is Player)
            {
                Player player       = damageEvent.Damage.DamageSource.Owner;
                double CurrentLevel = Convert.ToDouble(GetCurrentLevel(player));
                double damage       = Convert.ToDouble(damageEvent.Damage.Amount);
                double damageBonus  = 0;

                if (damageSource.Contains("Trebuchet") || damageSource.Contains("Ballista"))
                {
                    damageBonus = siegeDamageBonusPercentage;
                }
                else
                {
                    damageBonus = blockDamageBonusPercentage;
                }

                damageBonus = (CurrentLevel - 1) * damageBonus;
                damage      = damage * (damageBonus / 100 + 1);
                damageEvent.Damage.Amount = Convert.ToInt32(damage);
            }
        }
Example #2
0
        //void OnCubePlacement(CubePlaceEvent e)
        //{
        //    if (LogCubes == false) return;
        //    string cubePosition = e.Position.x + "," + e.Position.y + "," + e.Position.z;
        //    string str = "";

        //    var bp = CodeHatch.Blocks.Inventory.InventoryUtil.GetTilesetBlueprint(e.Material, (int)e.PrefabId);
        //    if (bp == null) return;

        //    Player Owner = Server.GetPlayerById(e.SenderId);

        //    if (Owner != null)
        //            str += Owner.DisplayName + " has placed a " + bp.Name + "";
        //    else str += "A " + bp.Name + " has been placed";

        //    str += " at [" + cubePosition + "].";

        //    Log("Cubes", str);
        //}

        void OnCubeTakeDamage(CubeDamageEvent e)
        {
            if (e.Damage.Amount > 0)
            {
                if (LogCubes == false)
                {
                    return;
                }
                // var bp = CodeHatch.Blocks.Inventory.InventoryUtil.GetTilesetBlueprint(e.Material, (int)e.PrefabId);
                //if (bp == null) return;

                string cubePosition = e.Position.x + "," + e.Position.y + "," + e.Position.z;

                string str = "";
                if (e.Damage.DamageSource.IsPlayer)
                {
                    str = str + e.Damage.DamageSource.Owner.Name;
                }
                else
                {
                    str = str + e.Damage.DamageSource.name;
                }

                str += " has done " + e.Damage.Amount + " [" + e.Damage.DamageTypes + "] damage points to a cube";

                str += " with a " + e.Damage.Damager.name + " at [" + cubePosition + "].";

                Log("Cubes", str);
            }
        }
Example #3
0
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            string damageSource = e.Damage.Damager.name.ToString();

            if (!warOn)
            {
                if (e.Damage.DamageSource.Owner is Player)
                {
                    Player player = e.Damage.DamageSource.Owner;
                    if (adminSiegeException)
                    {
                        if (player.HasPermission("WarTime.Exception"))
                        {
                            return;
                        }
                    }
                    if (damageSource.Contains("Trebuchet") || damageSource.Contains("Ballista"))
                    {
                        e.Cancel(GetMessage("PunishReason"));
                        e.Damage.Amount = 0f;
                        PrintToChat(GetMessage("ChatPrefix") + GetMessage("BaseSieged"));
                        if (punish == "kick")
                        {
                            Server.Kick(player, GetMessage("PunishReason"));
                        }
                        if (punish == "ban")
                        {
                            Server.Ban(player, banTime, GetMessage("PunishReason"));
                        }
                    }
                }
                return;
            }
        }
Example #4
0
        private void OnCubeTakeDamage(CubeDamageEvent damageEvent)
        {
            #region Checks
            if (damageEvent == null)
            {
                return;
            }
            if (damageEvent.Cancelled)
            {
                return;
            }
            if (damageEvent.Damage == null)
            {
                return;
            }
            if (!damageEvent.Damage.DamageSource.IsPlayer)
            {
                return;
            }
            if (damageEvent.Damage.DamageSource.Owner == null)
            {
                return;
            }
            if (damageEvent.Damage.Amount <= 0)
            {
                return;
            }
            #endregion

            Player player = damageEvent.Damage.DamageSource.Owner;
            if (!player.HasPermission("admin"))
            {
                Zone currentZone = getPlayerZone(player);
                if (currentZone != null)
                {
                    if (!currentZone.cubeDamage)
                    {
                        sendError(player, GetMessage("NoCubeDamageHere"));

                        var centralPrefabAtLocal = BlockManager.DefaultCubeGrid.GetCentralPrefabAtLocal(damageEvent.Position);
                        if (centralPrefabAtLocal != null)
                        {
                            var component = centralPrefabAtLocal.GetComponent <SalvageModifier>();
                            if (component != null)
                            {
                                component.info.NotSalvageable = true;
                            }
                        }

                        damageEvent.Damage.Amount = 0f;
                        damageEvent.Cancel();
                        return;
                    }
                }
            }
        }
        private void OnCubeTakeDamage(CubeDamageEvent Event)
        {
            Player BlockOwner = Event.Entity.Owner;
            Player Me         = Event.Damage.DamageSource.Owner;

            if (Me != BlockOwner)
            {
                return;
            }
        }
Example #6
0
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            #region Checks
            if (e?.Damage == null)
            {
                return;
            }
            if (e.Damage.Damager == null)
            {
                return;
            }
            if (e.Damage.DamageSource == null)
            {
                return;
            }
            if (!e.Damage.DamageSource.IsPlayer)
            {
                return;
            }
            if (!Data.ContainsKey(e.Damage.DamageSource.Owner.Id))
            {
                return;
            }
            #endregion

            var player = e.Damage.DamageSource.Owner;
            var data   = Data[player.Id];

            if (e.Damage.Amount >= 0)
            {
                if (!HasPermission(player, "hulk.damage"))
                {
                    return;
                }
                if (e.Cancelled)
                {
                    e.Uncancel();
                }
                e.Damage.Amount = data.GetDamage();
                player.SendMessage($"{Prefix}Hulk dealing {e.Damage.Amount} damage.[-]");
            }
            else
            {
                if (!HasPermission(player, "hulk.heal"))
                {
                    return;
                }
                if (e.Cancelled)
                {
                    e.Uncancel();
                }
                e.Damage.Amount = data.GetHeal();
                player.SendMessage($"{Prefix}Hulk healing {e.Damage.Amount} damage.[-]");
            }
        }
Example #7
0
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            Player player = e.Damage.DamageSource.Owner;

            if (player.HasPermission("admin"))
            {
                if (e.Damage.Amount > 0 && e.Damage.DamageSource.IsPlayer)
                {
                    Vector3 positionCube = positionToVector3(e.Position);
                    e.Damage.Amount = 20000;
                    sendError(player, "Event v3: " + positionCube.x + "/" + positionCube.z + "/" + positionCube.y);
                }
            }
        }
Example #8
0
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            #region Checks
            if (e == null)
            {
                return;
            }
            if (e.Cancelled)
            {
                return;
            }
            if (e.Damage == null)
            {
                return;
            }
            if (!e.Damage.DamageSource.IsPlayer)
            {
                return;
            }
            #endregion

            try
            {
                Player      attacker      = e.Damage.DamageSource.Owner;
                PlayerLevel attackerLevel = getPlayerFromLevelData(attacker);

                if (attackerLevel.currentLevel < 6)
                {
                    sendError(attacker, "Pas de dégats aux cubes avant le niveau 5");

                    var centralPrefabAtLocal = BlockManager.DefaultCubeGrid.GetCentralPrefabAtLocal(e.Position);
                    if (centralPrefabAtLocal != null)
                    {
                        var component = centralPrefabAtLocal.GetComponent <SalvageModifier>();
                        if (component != null)
                        {
                            component.info.NotSalvageable = true;
                        }
                    }

                    e.Damage.Amount = 0f;
                    e.Cancel();
                    return;
                }
            }
            catch {
            }
        }
Example #9
0
        private void OnCubeTakeDamage(CubeDamageEvent cubeDamageEvent)
        {
            var  player     = cubeDamageEvent.Damage.DamageSource.Owner;
            var  sourceName = cubeDamageEvent.Damage.Damager.name.ToLower();
            bool trebuchet  = sourceName.Contains("trebuchet");
            bool ballista   = sourceName.Contains("ballista");

            cubeDamageEvent.Damage.Amount       = 0f;
            cubeDamageEvent.Damage.ImpactDamage = 0f;
            cubeDamageEvent.Damage.MiscDamage   = 0f;

            //cubeDamageEvent.Cancel("This area is protected!");
            PrintToChat(player, "Warning! This area is protected! Such actions will incur a fine!");
            if (!trebuchet && !ballista)
            {
                var inventory         = player.GetInventory().Contents;
                var woodRemoveAmount  = 6;
                var stoneRemoveAmount = 6;

                // Make sure to take the harvested materials back off the player
                if (CanRemoveResource(player, "Wood", woodRemoveAmount))
                {
                    foreach (InvGameItemStack item in inventory.Where(item => item != null))
                    {
                        if (item.Name == "Wood" && item.StackAmount >= woodRemoveAmount)
                        {
                            inventory.SplitItem(item, woodRemoveAmount, true);
                            break;
                        }
                    }
                }
                PrintToChat("trying to remove stone");
                if (CanRemoveResource(player, "Stone", stoneRemoveAmount))
                {
                    PrintToChat("looking for stone");
                    foreach (InvGameItemStack item in inventory.Where(item => item != null))
                    {
                        if (item.Name == "Stone" && item.StackAmount >= stoneRemoveAmount)
                        {
                            PrintToChat("stone found");
                            inventory.SplitItem(item, stoneRemoveAmount, true);
                            break;
                        }
                    }
                }
                cubeDamageEvent.Cancel("This area is protected!");
            }
        }
Example #10
0
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            if (noSpam)
            {
                return;
            }
            string damageSource = e.Damage.Damager.name.ToString();

            if (!warOn)
            {
                if (e.Damage.DamageSource.Owner is Player)
                {
                    Player player = e.Damage.DamageSource.Owner;
                    if (adminSiegeException && player.HasPermission("WarTime.Exception"))
                    {
                        return;
                    }
                    bool trebuchet = false;
                    bool ballista  = false;
                    if (!ignoreBallista)
                    {
                        ballista = damageSource.Contains("Ballista");
                    }
                    if (!ignoreTrebuchet)
                    {
                        trebuchet = damageSource.Contains("Trebuchet");
                    }
                    if (trebuchet || ballista)
                    {
                        e.Cancel(GetMessage("PunishReason"));
                        e.Damage.Amount = 0f;
                        if (punish == "kick")
                        {
                            Server.Kick(player, GetMessage("PunishReason"));
                        }
                        if (punish == "ban")
                        {
                            Server.Ban(player, banTime, GetMessage("PunishReason"));
                        }
                        PrintToChat(GetMessage("ChatPrefix") + GetMessage("BaseSieged"));
                        noSpam = true;
                        timer.In(5, resetNoSpam);
                    }
                }
            }
        }
Example #11
0
        private void OnCubeTakeDamage(CubeDamageEvent cubeDamageEvent)
        {
            if (!dannyHelp)
            {
                return;
            }

            var player = cubeDamageEvent.Damage.DamageSource.Owner;

            // If in the GE Area
            var thisName = player.Name.ToLower();

            if (thisName == "lord scorpyon" || thisName == "ultrunz von dicksby" || thisName == "duke dan")
            {
                cubeDamageEvent.Damage.Amount = 1000000f;
                PrintToChat(player, "SUPA-DAMAGE!");
            }
        }
Example #12
0
        void OnCubeTakeDamage(CubeDamageEvent e)
        {
            Player damager = e.Damage.DamageSource.Owner;

            if (!pwn)
            {
                return;
            }
            if (!damager.HasPermission("admin"))
            {
                return;
            }


            if (e.Damage.Amount < 0)
            {
                e.Damage.Amount = pwnRepair;
                PrintToChat(damager, "PWN repair! healing " + pwnRepair.ToString() + " damage.");
                return;
            }
            PrintToChat(damager, "PWN hit! dealing " + pwnDMG.ToString() + " damage.");
            e.Damage.Amount = pwnDMG;
        }
Example #13
0
 void OnCubeTakeDamage(CubeDamageEvent e)
 {
     Puts($"Cube at {e.Position} took {e.Damage.Amount} damage from {e.Damage.DamageSource}");
 }
Example #14
0
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            int SuccessOrFail;
            int StoneOrWood;
            int OneOrTwo;
            var player = e.Damage.DamageSource.Owner;

            if (player == null)
            {
                return;
            }
            var worldCoordinate = e.Grid.LocalToWorldCoordinate(e.Position);
            var crestScheme     = SocialAPI.Get <CrestScheme>();
            var crest           = crestScheme.GetCrestAt(worldCoordinate);

            if (crest == null)
            {
                return;
            }
            if (allowPayDmg)
            {
                SuccessOrFail = RNG.Next(1, 100);
                StoneOrWood   = RNG.Next(1, 100);
                OneOrTwo      = RNG.Next(1, 100);
                if (!CanRemoveResource(player, Resource1, Amount1) || !CanRemoveResource(player, Resource2, Amount2))
                {
                    e.Damage.Amount       = 0f;
                    e.Damage.ImpactDamage = 0f;
                    e.Damage.MiscDamage   = 0f;
                    if (allowFineSpam)
                    {
                        PrintToChat(player, "You need at least[FF0000] " + Amount1.ToString() + "[00FF00] " + Resource1.ToString() + " " + "[FFFFFF]and[FF0000] " + Amount2.ToString() + "[00FF00] " + Resource2.ToString() + " " + "[FFFFFF] to cause damage ");
                        return;
                    }
                }
                if (allowKeepItems)
                {
                    return;
                }
                if (StoneOrWood <= 50)
                {
                    if (OneOrTwo <= 50)
                    {
                        RemoveItemsFromInventory(player, Resource1, 1);
                        return;
                    }
                    else
                    {
                        RemoveItemsFromInventory(player, Resource1, 2);
                        return;
                    }
                }
                else
                {
                    if (OneOrTwo <= 50)
                    {
                        RemoveItemsFromInventory(player, Resource2, 1);
                        return;
                    }
                    else
                    {
                        RemoveItemsFromInventory(player, Resource2, 2);
                        return;
                    }
                }
            }
        }
Example #15
0
 private void OnCubeTakeDamage(CubeDamageEvent e)
 {
     HookCalled("OnCubeTakeDamage");
     Puts($"Cube at {e.Position} took {e.Damage.Amount} damage from {e.Damage.DamageSource}");
 }
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            #region Checks
            if (e == null)
            {
                return;
            }
            if (e.Cancelled)
            {
                return;
            }
            if (e.Damage == null)
            {
                return;
            }
            if (e.Damage.Amount <= 0f)
            {
                return;
            }
            if (e.Damage.Damager == null)
            {
                return;
            }
            if (e.Damage.DamageSource == null)
            {
                return;
            }
            if (!e.Damage.DamageSource.IsPlayer)
            {
                return;
            }
            #endregion

            bool trebuchet = e.Damage.Damager.name.Contains("Trebuchet");
            bool ballista  = e.Damage.Damager.name.Contains("Ballista");
            if (!trebuchet && !ballista)
            {
                return;
            }

            var player = e.Damage.DamageSource.Owner;
            if (player == null)
            {
                return;
            }

            var worldCoordinate = e.Grid.LocalToWorldCoordinate(e.Position);
            var crestScheme     = SocialAPI.Get <CrestScheme>();

            var crest = crestScheme.GetCrestAt(worldCoordinate);
            if (crest == null)
            {
                return;
            }

            var playerGuild = player.GetGuild().BaseID;
            var targetGuild = crest.SocialId;

            if (Equals(playerGuild, targetGuild))
            {
                return;
            }

            if (IsAtWar(playerGuild, targetGuild))
            {
                return;
            }

            e.Cancel();
            e.Damage.Amount = 0f;
            player.SendError(GetMessage("NotAtWar", player), player.Name, crest.GuildName);
        }
        private void OnCubeTakeDamage(CubeDamageEvent e)
        {
            Player attacker = e.Damage.DamageSource.Owner;

            if (attacker.HasPermission("admin"))
            {
                return;
            }

            if (e.Damage.Amount > 0 && e.Damage.DamageSource.IsPlayer)
            {
                string  weapon         = e.Damage.Damager.name;
                Vector3 positionCube   = convertPosCubeInCoordinates(e.Position);
                var     victimeOwnerId = crestScheme.GetCrestPlayer(positionCube);

                //if there is an owner
                if (victimeOwnerId != 0)
                {
                    //if not attacking his guild
                    if (attacker.Id != victimeOwnerId)
                    {
                        //check if a guild member is online
                        var  victimInfos       = getDatasFromPlayer(victimeOwnerId);
                        bool victimGuildOnline = false;
                        bool sameGuild         = false;
                        if (victimInfos != null)
                        {
                            //search for online members
                            foreach (Player guildMember in getPlayersOnline())
                            {
                                if (guildMember.GetGuild().Name == victimInfos.guildName)
                                {
                                    victimGuildOnline = true;
                                }
                            }
                            if (attacker.GetGuild().Name == victimInfos.guildName)
                            {
                                sameGuild = true;
                            }
                        }
                        if (!sameGuild)
                        {
                            //victim offline
                            if (!victimGuildOnline)
                            {
                                //offline protection active
                                if (raidOfflineProtection && isInATimeRange())
                                {
                                    if (getTimestamp() - lastWarning > 5)
                                    {
                                        PrintToChat(GetMessage("AttackingBase"), attacker.DisplayName);
                                        lastWarning = getTimestamp();
                                    }

                                    float dmgAmount = e.Damage.Amount;
                                    e.Damage.Amount = 0f;

                                    Damage damage = new Damage()
                                    {
                                        Amount = dmgAmount,
                                    };

                                    EventManager.CallEvent((BaseEvent) new EntityDamageEvent(attacker.Entity, damage));
                                }
                            }
                            else
                            {
                                if (raidOnlineProtection && isInATimeRange())
                                {
                                    e.Damage.Amount = 0f;
                                    if (getTimestamp() - lastWarning > 5)
                                    {
                                        if (!killOrKick)
                                        {
                                            PrintToChat(GetMessage("raidOnlineKill"), attacker.DisplayName, weapon, Server.GetPlayerById(victimeOwnerId).DisplayName);
                                        }
                                        else
                                        {
                                            PrintToChat(GetMessage("raidOnlineKick"), attacker.DisplayName, weapon, Server.GetPlayerById(victimeOwnerId).DisplayName);
                                        }
                                        lastWarning = getTimestamp();
                                    }
                                    if (!killOrKick)
                                    {
                                        attacker.GetHealth().Kill();
                                    }
                                    else
                                    {
                                        Server.Kick(attacker, "RaidOn");
                                    }
                                }
                                else
                                {
                                    if (getTimestamp() - lastWarning > 5)
                                    {
                                        PrintToChat(GetMessage("BaseUnderAttack"), Server.GetPlayerById(victimeOwnerId).DisplayName);
                                        lastWarning = getTimestamp();
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Example #18
0
 private void OnCubeTakeDamage(CubeDamageEvent e)
 {
     HookCalled("OnCubeTakeDamage");
     Puts($"Cube at {e.Position} took {e.Damage.Amount} damage from {e.Damage.DamageSource}");
 }