Example #1
0
 public static void deployableKO(DeployableObject dep, DamageEvent e)
 {
     try
     {
         InstaKOCommand command = ChatCommand.GetCommand("instako") as InstaKOCommand;
         if (command.IsOn(e.attacker.client.userID))
         {
             try
             {
                 Helper.Log("StructDestroyed.txt", string.Concat(new object[] { e.attacker.client.netUser.displayName, " [", e.attacker.client.netUser.userID, "] destroyed (InstaKO) ", NetUser.FindByUserID(dep.ownerID).displayName, "'s ", dep.gameObject.name.Replace("(Clone)", "") }));
             }
             catch
             {
                 if (Core.userCache.ContainsKey(dep.ownerID))
                 {
                     Helper.Log("StructDestroyed.txt", string.Concat(new object[] { e.attacker.client.netUser.displayName, " [", e.attacker.client.netUser.userID, "] destroyed (InstaKO) ", Core.userCache[dep.ownerID], "'s ", dep.gameObject.name.Replace("(Clone)", "") }));
                 }
             }
             dep.OnKilled();
         }
         else
         {
             dep.UpdateClientHealth();
         }
     }
     catch
     {
         dep.UpdateClientHealth();
     }
 }
Example #2
0
 public void HandleDamageEvent(DamageEvent e)
 {
     if (shieldAction.shouldTakeDamage (e.Location)) {
         TakeDamage (e.Value);
     }
     if(shieldAction.shouldReflect(e.Location)){
         e.DamageReturn ();
     }
 }
Example #3
0
 public HurtEvent(ref DamageEvent d)
 {
     Fougerite.Player player = Fougerite.Player.FindByPlayerClient(d.attacker.client);
     if (player != null)
     {
         this.Attacker = player;
     }
     else
     {
         this.Attacker = new NPC(d.attacker.character);
     }
     Fougerite.Player player2 = Fougerite.Player.FindByPlayerClient(d.victim.client);
     if (player2 != null)
     {
         this.Victim = player2;
     }
     else
     {
         this.Victim = new NPC(d.victim.character);
     }
     this.DamageEvent = d;
     this.WeaponData = null;
     this.IsDecay = false;
     string weaponName = "Unknown";
     if (d.extraData != null)
     {
         WeaponImpact extraData = d.extraData as WeaponImpact;
         this.WeaponData = extraData;
         if (extraData.dataBlock != null)
         {
             weaponName = extraData.dataBlock.name;
         }
     }
     else
     {
         if (d.attacker.id is TimedExplosive) {
             weaponName = "Explosive Charge";
         } else if (d.attacker.id is TimedGrenade) {
             weaponName = "F1 Grenade";
         } else if (d.attacker.id.ToString().Contains("MutantBear")) {
             weaponName = "Mutant Bear Claw";
         } else if (d.attacker.id.ToString().Contains("Bear")) {
             weaponName = "Bear Claw";
         } else if (d.attacker.id.ToString().Contains("MutantWolf")) {
             weaponName = "Mutant Wolf Claw";
         } else if (d.attacker.id.ToString().Contains("Wolf")) {
             weaponName = "Wolf Claw";
         } else if (d.attacker.id.Equals(d.victim.id)) {
             weaponName = String.Format("Self ({0})", DamageType);
         } else {
             weaponName = "Hunting Bow";
         }
     }
     this.WeaponName = weaponName;
 }
Example #4
0
    public SwingEvent GetSwingEvent(int swing)
    {
        var swingEvent = comboChain[swing];

        var d = new DamageEvent();
        d.damage = CalculateDamage(damage, swing);
        d.knockback = knockback;
        swingEvent.damage = d;

        return swingEvent;
    }
Example #5
0
		public DestroyEvent(ref DamageEvent d, Entity ent, bool isdecay)
		{
			Fougerite.Player player = Fougerite.Player.FindByPlayerClient(d.attacker.client);
			if (player != null) {
				this.Attacker = player;
			}

			this.WeaponData = null;
			this.IsDecay = isdecay;
			this.DamageEvent = d;
			this.Entity = ent;

			string weaponName = "Unknown";
			if (d.extraData != null)
			{
				WeaponImpact extraData = d.extraData as WeaponImpact;
				this.WeaponData = extraData;
				if (extraData.dataBlock != null)
				{
					weaponName = extraData.dataBlock.name;
				}
			}
			else
			{
				if (d.attacker.id is TimedExplosive)
					weaponName = "Explosive Charge";
				else if (d.attacker.id is TimedGrenade)
					weaponName = "F1 Grenade";
				else if (d.attacker.id.ToString().Contains("MutantBear"))
					weaponName = "Mutant Bear Claw";
				else if (d.attacker.id.ToString().Contains("Bear"))
					weaponName = "Bear Claw";
				else if (d.attacker.id.ToString().Contains("MutantWolf"))
					weaponName = "Mutant Wolf Claw";
				else if (d.attacker.id.ToString().Contains("Wolf"))
					weaponName = "Wolf Claw";
				else if (d.attacker.id.Equals(d.victim.id))
					weaponName = String.Format("Self ({0})", DamageType);
				else
					weaponName = "Hunting Bow";
			}
			this.WeaponName = weaponName;
		}
Example #6
0
    void OnTriggerEnter(Collider other)
    {
        if(other.isTrigger) return;

        if(this.data == null)
            this.data = new DamageEvent(this.owner, damage, knockbackForce, 0, team);

        if(this.data.owner == null)
            this.data.owner = gameObject;

        if(effects.Length > 0)
        {
            foreach(string effect in effects)
            {
                string[] bits = effect.Split('=');
                this.data.effects[bits[0]] = float.Parse(bits[1]);
            }
        }

        this.data.bullet = gameObject;
        this.data.victim = other.gameObject;

        if(speed > 0.0f)
            this.data.ranged = true;

        other.gameObject.SendMessage("OnShot", this.data, SendMessageOptions.DontRequireReceiver);
        //this.data.owner.BroadcastMessage("OnShotHit", this.data, SendMessageOptions.DontRequireReceiver);

        if(!penetrates)
            OnKill();

        //if(other.gameObject.GetComponent(Dude) == null)
        //{
        //	OnKill();
        //}
    }
Example #7
0
        private void OnPlayerDeath(TakeDamage takedamage, DamageEvent damage, object tags)
        {
            string weapon    = tags.GetProperty("weapon").ToString();
            string deathtype = tags.GetProperty("deathType").ToString();
            string killer    = tags.GetProperty("killer").ToString();
            string bodyPart  = tags.GetProperty("bodypart").ToString();
            string message   = null;

            if (bodyParts.ContainsKey(bodyPart))
            {
                tags.SetProperty("bodypart", bodyParts[bodyPart]);
            }
            switch (deathtype)
            {
            case "human":
            {
                if (weapon == "Spike Wall" && killer == "Unknown")
                {
                    tags.SetProperty("killerId", PlayerDatabase?.Call("GetPlayerData", tags.GetProperty("killerId"), "name") ?? tags.GetProperty("killerId"));
                }
                message = getDeathMessage("PvP", weapon, tags);
                break;
            }

            default:
            {
                message = getDeathMessage("EvP", killer, tags);
                break;
            }
            }
            if (message != null)
            {
                rust.BroadcastChat(chatName, message);
            }
            //Puts((string)Death?.CallHook("GetDeathString", "Killer: {killer} {killerId} Killed: {killed} {killedId} Weapon: {weapon} BodyPart: {bodypart} Distance: {distance} DeathType: {deathType} Location: {location}", tags) ?? "Unknown");
        }
Example #8
0
        public static void HurtKilled(DamageEvent damage)
        {
            ulong        num       = 0uL;
            string       text      = "";
            ulong        num2      = 0uL;
            string       text2     = "";
            PlayerClient client    = damage.victim.client;
            PlayerClient client2   = damage.attacker.client;
            bool         flag      = !(damage.victim.idMain is Character);
            bool         flag2     = !(damage.attacker.idMain is Character);
            UserData     userData  = (client != null) ? Users.GetBySteamID(client.userID) : null;
            UserData     userData2 = (client2 != null) ? Users.GetBySteamID(client2.userID) : null;

            if (userData == null)
            {
            }
            ClanData clanData = (userData2 != null) ? userData2.Clan : null;

            if (!flag2 || !(client2 == null))
            {
                if (client2 != null)
                {
                    text2 = damage.attacker.client.netUser.displayName;
                }
                else
                {
                    text2 = Helper.NiceName(damage.attacker.character.name);
                    Config.Get("NAMES." + ((userData == null) ? Core.Languages[0] : userData.Language), text2, ref text2, true);
                }
                if (flag)
                {
                    if (!(damage.victim.idMain is SleepingAvatar) || !Economy.FeeSleeper)
                    {
                        return;
                    }
                    SleepingAvatar sleepingAvatar = damage.victim.idMain as SleepingAvatar;
                    if (sleepingAvatar == null)
                    {
                        return;
                    }
                    UserData bySteamID = Users.GetBySteamID(sleepingAvatar.ownerID);
                    if (bySteamID == null)
                    {
                        return;
                    }
                    ulong balance = Economy.GetBalance(bySteamID.SteamID);
                    text = bySteamID.Username;
                    if (Economy.FeeMurder)
                    {
                        num = (ulong)Math.Abs(balance * Economy.FeeMurderPercent / 100f);
                    }
                    if (Economy.PayMurder)
                    {
                        num2 = (ulong)Math.Abs(balance * Economy.PayMurderPercent / 100f);
                    }
                    if (num2 > 0uL && Clans.Enabled && clanData != null)
                    {
                        if (clanData.Level.BonusMembersPayMurder > 0u)
                        {
                            num2 += num2 * (ulong)clanData.Level.BonusMembersPayMurder / 100uL;
                        }
                        if (clanData.Tax > 0u)
                        {
                            ulong num3 = num2 * (ulong)clanData.Tax / 100uL;
                            clanData.Balance += num3;
                            num2             -= num3;
                        }
                    }
                    if (num2 > 0uL)
                    {
                        Economy.BalanceAdd(client2.userID, num2);
                    }
                    if (num > 0uL)
                    {
                        Economy.BalanceSub(bySteamID.SteamID, num);
                    }
                }
                else if (client != null)
                {
                    text = damage.victim.client.netUser.displayName;
                    ulong balance2 = Economy.GetBalance(client.userID);
                    if (client2 == null)
                    {
                        if (Economy.FeeDeath)
                        {
                            num = (ulong)Math.Abs(balance2 * Economy.FeeDeathPercent / 100f);
                        }
                    }
                    else if (!(client2 == client) && !flag2)
                    {
                        if (client2 != client && !flag2)
                        {
                            Economy.Get(client2.userID).PlayersKilled++;
                            if (Economy.FeeMurder)
                            {
                                num = (ulong)Math.Abs(balance2 * Economy.FeeMurderPercent / 100f);
                            }
                            if (Economy.PayMurder)
                            {
                                num2 = (ulong)Math.Abs(balance2 * Economy.PayMurderPercent / 100f);
                            }
                        }
                    }
                    else if (Economy.FeeSuicide)
                    {
                        num = (ulong)Math.Abs(balance2 * Economy.FeeSuicidePercent / 100f);
                    }
                    if (num2 > 0uL && Clans.Enabled && clanData != null)
                    {
                        if (clanData.Level.BonusMembersPayMurder > 0u)
                        {
                            num2 += num2 * (ulong)clanData.Level.BonusMembersPayMurder / 100uL;
                        }
                        if (clanData.Tax > 0u)
                        {
                            ulong num4 = num2 * (ulong)clanData.Tax / 100uL;
                            clanData.Balance += num4;
                            num2             -= num4;
                        }
                    }
                    if (num2 > 0uL)
                    {
                        Economy.BalanceAdd(client2.userID, num2);
                    }
                    if (num > 0uL)
                    {
                        Economy.BalanceSub(client.userID, num);
                    }
                    Economy.Get(client.userID).Deaths++;
                }
                else if (client2 != null)
                {
                    text = Helper.NiceName(damage.victim.character.name);
                    if (text.Equals("Chicken", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostChicken != 0uL)
                        {
                            num2 = Economy.CostChicken;
                        }
                        Economy.Get(client2.userID).AnimalsKilled++;
                    }
                    else if (text.Equals("Rabbit", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostRabbit != 0uL)
                        {
                            num2 = Economy.CostRabbit;
                        }
                        Economy.Get(client2.userID).AnimalsKilled++;
                    }
                    else if (text.Equals("Boar", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostBoar != 0uL)
                        {
                            num2 = Economy.CostBoar;
                        }
                        Economy.Get(client2.userID).AnimalsKilled++;
                    }
                    else if (text.Equals("Stag", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostStag != 0uL)
                        {
                            num2 = Economy.CostStag;
                        }
                        Economy.Get(client2.userID).AnimalsKilled++;
                    }
                    else if (text.Equals("Wolf", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostWolf != 0uL)
                        {
                            num2 = Economy.CostWolf;
                        }
                        Economy.Get(client2.userID).AnimalsKilled++;
                    }
                    else if (text.Equals("Bear", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostBear != 0uL)
                        {
                            num2 = Economy.CostBear;
                        }
                        Economy.Get(client2.userID).AnimalsKilled++;
                    }
                    else if (text.Equals("Mutant Wolf", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostMutantWolf != 0uL)
                        {
                            num2 = Economy.CostMutantWolf;
                        }
                        Economy.Get(client2.userID).MutantsKilled++;
                    }
                    else if (text.Equals("Mutant Bear", StringComparison.OrdinalIgnoreCase))
                    {
                        if (Economy.CostMutantBear != 0uL)
                        {
                            num2 = Economy.CostMutantBear;
                        }
                        Economy.Get(client2.userID).MutantsKilled++;
                    }
                    else
                    {
                        ConsoleSystem.LogWarning("[WARNING] Economy: Creature '" + text + "' not have cost of death.");
                    }
                    Config.Get("NAMES." + ((userData2 == null) ? Core.Languages[0] : userData2.Language), text, ref text, true);
                    if (num2 > 0uL && Clans.Enabled && clanData != null)
                    {
                        if (clanData.Level.BonusMembersPayMurder > 0u)
                        {
                            num2 += num2 * (ulong)clanData.Level.BonusMembersPayMurder / 100uL;
                        }
                        if (clanData.Tax > 0u)
                        {
                            ulong num5 = num2 * (ulong)clanData.Tax / 100uL;
                            clanData.Balance += num5;
                            num2             -= num5;
                        }
                    }
                    if (num2 > 0uL)
                    {
                        Economy.BalanceAdd(client2.userID, num2);
                    }
                }
                if (client2 != null && num2 > 0uL)
                {
                    string text3 = Config.GetMessage("Economy.PlayerDeath.Pay", client2.netUser, null);
                    if (flag)
                    {
                        text3 = Config.GetMessage("Economy.SleeperDeath.Pay", client2.netUser, null);
                    }
                    text3 = text3.Replace("%DEATHPAY%", num2.ToString("N0") + Economy.CurrencySign);
                    text3 = text3.Replace("%VICTIM%", text);
                    Broadcast.Message(client2.netPlayer, text3, null, 0f);
                }
                if (client != null && num > 0uL)
                {
                    string text4 = Config.GetMessage("Economy.PlayerDeath.Fee", client.netUser, null);
                    if (client2 == client || flag2)
                    {
                        text4 = Config.GetMessage("Economy.PlayerSuicide.Fee", client.netUser, null);
                    }
                    text4 = text4.Replace("%DEATHFEE%", num.ToString("N0") + Economy.CurrencySign);
                    text4 = text4.Replace("%KILLER%", text2);
                    text4 = text4.Replace("%VICTIM%", text);
                    Broadcast.Message(client.netPlayer, text4, null, 0f);
                }
            }
        }
Example #9
0
 void PlayerKilled_Test()
 {
     try
     {
         DamageEvent damageEvent = new DamageEvent();
         Log("PlayerKilled_Test: Test 1");
         Hooks.PlayerHurt(ref damageEvent);
     }
     catch (Exception ex)
     {
         Logger.LogException(ex);
     }
 }
Example #10
0
 public HurtEvent(ref DamageEvent d, Fougerite.Entity en)
     : this(ref d)
 {
     this.Entity = en;
 }
Example #11
0
 public void RegisterDamageEvent(DamageEvent e)
 {
     m_DmgEvents += e;
 }
Example #12
0
 private void OnKilled(TakeDamage takedamage, DamageEvent damage)
 {
     HookCalled("OnKilled");
     // Print death message
     var netUser = damage.victim.client.netUser;
     if (netUser == null) return;
     Puts("Player " + netUser.displayName + " has died!");
 }
Example #13
0
        public static void OnAIHurt(ref DamageEvent damage)
        {
            if (damage.attacker.idMain != null)
            {
                if (isPlayer(damage.attacker.idMain))
                {
                    PlayerClient attackerClient = damage.attacker.client;

                    if (destroyerList.Contains(attackerClient.userID.ToString()))
                    {
                        beingDestroyed.Add(damage.victim.idMain.gameObject);
                        damage.amount = 1000f;
                        damage.status = LifeStatus.WasKilled;
                    }
                }
            }
        }
Example #14
0
        public static void HostileHurt(DamageEvent damage, HostileWildlifeAI HWAI)
        {
            try
            {
                bool b = false;
                try
                {
                    if (isPlayer(damage.attacker.idMain))
                    {
                        b = hiddenList.Contains(damage.attacker.client.userID.ToString()) && HWAI._targetTD == damage.attacker.client.controllable.GetComponent<TakeDamage>();
                    }
                }
                catch (Exception ex)
                {
                    Vars.conLog.Error("HH: " + ex.ToString());
                }

                if (!HWAI.HasTarget() && (damage.attacker.character != null) && !b)
                {
                    HWAI.SetAttackTarget(damage.attacker.character.gameObject.GetComponent<TakeDamage>());
                    HWAI.ExitCurrentState();
                    HWAI.EnterState_Chase();
                }

                if (b && HWAI.HasTarget())
                    HWAI._targetTD = null;
            }
            catch (Exception ex)
            {
                Vars.conLog.Error(ex.ToString());
            }
        }
Example #15
0
 public DeathEvent(ref DamageEvent d)
     : base(ref d)
 {
     this._drop = true;
 }
 protected override LifeStatus Hurt(ref DamageEvent damage)
 {
     return(base.Hurt(ref damage));
 }
 public void OnDamage(Bowhead.Actors.Pawn p, float d, bool directHit)
 {
     DamageEvent?.Invoke(p, d, directHit);
 }
Example #18
0
 public static void OnAIKilled(BasicWildLifeAI BWAI, DamageEvent damage)
 {
     BWAI.ExitCurrentState();
     BWAI.EnterState_Dead();
     Facepunch.NetworkView networkView = BWAI.networkView;
     NetCull.RemoveRPCsByName(networkView, "GetNetworkUpdate");
     object[] args = new object[] { BWAI._myTransform.position, damage.attacker.networkViewID };
     networkView.RPC("ClientDeath", uLink.RPCMode.Others, args);
     if (beingDestroyed.Contains(damage.victim.idMain.gameObject))
         NetCull.Destroy(damage.victim.idMain.gameObject);
     else
         BWAI.Invoke("DelayedDestroy", 90f);
     WildlifeManager.RemoveWildlifeInstance(BWAI);
 }
Example #19
0
        void OnKilled(TakeDamage takedamage, DamageEvent damage)
        {
            if (!(takedamage is HumanBodyTakeDamage))
            {
                return;
            }
            NetUser Attacker = damage.attacker.client?.netUser ?? null;
            NetUser Victim   = damage.victim.client?.netUser ?? null;

            if (Attacker == null || Victim == null)
            {
                return;
            }
            int      Strike;
            DateTime Time;
            var      AttackerID = Attacker.userID;

            if (HeadShotChecker.TryGetValue(AttackerID, out Time))
            {
                if ((Time - DateTime.Now).Seconds < 10)
                {
                    if (Strikes.TryGetValue(AttackerID, out Strike))
                    {
                        if (Strike >= 2)
                        {
                            damage.attacker.client.netUser.Kick(NetError.ConnectionBanned, true);
                            SendLogServer($"{Attacker.displayName} Detected Aimbot Hack | Will Kick from the server");
                        }
                        else
                        {
                            Strikes[AttackerID]++;
                        }
                    }
                    else
                    {
                        Strikes.Add(AttackerID, 1);
                    }
                }
                else
                {
                    Debug.Log("Timer No es Mayor");
                    var TimerAdd = DateTime.Now.AddSeconds(10);
                    HeadShotChecker[AttackerID] = TimerAdd;

                    if (Strikes.ContainsKey(AttackerID))
                    {
                        Strikes[AttackerID] = 0;
                    }
                    else
                    {
                        Strikes.Add(AttackerID, 1);
                    }
                }
            }
            else
            {
                Debug.Log("No Existe la Clave");
                var TimerAdd = DateTime.Now.AddSeconds(10);
                HeadShotChecker.Add(AttackerID, TimerAdd);
            }
        }
Example #20
0
        public static void OnHumanHurt(ref DamageEvent damage)
        {
            try
            {
                PlayerClient victim = damage.victim.client;
                TakeDamage takeDamage = victim.controllable.GetComponent<TakeDamage>();
                PlayerClient attacker = null;

                if (godList.Contains(victim.userID.ToString()))
                {
                    damage.amount = 0f;
                }

                string victimFaction = "Neutral";
                string attackerFaction = "";

                KeyValuePair<string, Dictionary<string, string>>[] possibleFactions = Array.FindAll(factions.ToArray(), (KeyValuePair<string, Dictionary<string, string>> kv) => kv.Value.ContainsKey(victim.userID.ToString()));
                if (possibleFactions.Count() > 0)
                {
                    victimFaction = possibleFactions[0].Key;
                }

                if (isPlayer(damage.attacker.idMain))
                {
                    attacker = damage.attacker.client;

                    possibleFactions = Array.FindAll(factions.ToArray(), (KeyValuePair<string, Dictionary<string, string>> kv) => kv.Value.ContainsKey(attacker.userID.ToString()));
                    if (possibleFactions.Count() > 0)
                        attackerFaction = possibleFactions[0].Key;

                    if (inSafeZone.ContainsKey(attacker) && !inWarZone.ContainsKey(attacker))
                    {
                        Broadcast.noticeTo(attacker.netPlayer, "☃", "You cannot hurt players while in a safe zone!");
                        damage.amount = 0f;
                    }
                    else if (inSafeZone.ContainsKey(victim) && !inWarZone.ContainsKey(victim))
                    {
                        Broadcast.noticeTo(attacker.netPlayer, "☃", "You cannot hurt players in a safe zone!");
                        damage.amount = 0f;
                    }
                }
                else
                {
                    if (inSafeZone.ContainsKey(victim) && !inWarZone.ContainsKey(victim))
                    {
                        damage.amount = 0f;
                    }
                }

                if (victimFaction == attackerFaction && damage.attacker.IsDifferentPlayer(victim))
                {
                    if (damage.damageTypes == DamageTypeFlags.damage_bullet)
                    {
                        Broadcast.sideNoticeTo(attacker.netPlayer, "You shot " + victim.userName);
                        Broadcast.sideNoticeTo(victim.netPlayer, attacker.userName + " shot you");
                    }
                    else
                    {
                        Broadcast.sideNoticeTo(attacker.netPlayer, "You hit " + victim.userName);
                        Broadcast.sideNoticeTo(victim.netPlayer, attacker.userName + " hit you");
                    }
                    if (!inWarZone.ContainsKey(attacker) && !inWarZone.ContainsKey(victim))
                    {
                        if (!friendlyFire)
                        {
                            damage.amount = 0f;
                        }
                    }
                    else
                    {
                        damage.amount = damage.amount * warFriendlyDamage;
                    }
                }
                else
                {
                    if (damage.attacker.IsDifferentPlayer(victim) && alliances.ContainsKey(attackerFaction))
                    {
                        if (alliances[attackerFaction].Contains(victimFaction))
                        {
                            if (damage.damageTypes == DamageTypeFlags.damage_bullet)
                            {
                                Broadcast.sideNoticeTo(attacker.netPlayer, "You shot an ally");
                                Broadcast.sideNoticeTo(victim.netPlayer, "An ally shot you");
                            }
                            else
                            {
                                Broadcast.sideNoticeTo(attacker.netPlayer, "You hit an ally");
                                Broadcast.sideNoticeTo(victim.netPlayer, "An ally hit you");
                            }
                            if (!inWarZone.ContainsKey(attacker) && !inWarZone.ContainsKey(victim))
                            {
                                if (!alliedFire)
                                    damage.amount = (damage.amount * 2) / 3;
                            }
                            else
                            {
                                damage.amount = damage.amount * warAllyDamage;
                            }
                        }
                    }
                    else
                    {
                        if (!inWarZone.ContainsKey(attacker) && !inWarZone.ContainsKey(victim))
                        {
                            damage.amount = damage.amount * neutralDamage;
                        }
                        else
                        {
                            damage.amount = damage.amount * warDamage;
                        }
                    }

                    if (!godList.Contains(victim.userID.ToString()))
                    {
                        if (isTeleporting.Contains(victim))
                        {
                            wasHit.Add(victim);
                        }
                        if (isAccepting.Contains(victim))
                        {
                            wasHit.Add(victim);
                        }
                    }
                }

                if (takeDamage.health > damage.amount)
                {
                    damage.status = LifeStatus.IsAlive;
                }
                else
                {
                    damage.status = LifeStatus.WasKilled;
                }
            }
            catch { }
        }
Example #21
0
        public static void HurtKilled(DamageEvent damage)
        {
            ulong        amount      = 0L;
            string       key         = "";
            ulong        costChicken = 0L;
            string       displayName = "";
            PlayerClient client      = damage.victim.client;
            PlayerClient client2     = damage.attacker.client;
            bool         flag        = !(damage.victim.idMain is Character);
            bool         flag2       = !(damage.attacker.idMain is Character);
            UserData     data        = (client != null) ? Users.GetBySteamID(client.userID) : null;
            UserData     data2       = (client2 != null) ? Users.GetBySteamID(client2.userID) : null;

            if (data == null)
            {
            }
            ClanData data3 = (data2 != null) ? data2.Clan : null;

            if (!flag2 || (client2 != null))
            {
                if (client2 != null)
                {
                    displayName = damage.attacker.client.netUser.displayName;
                }
                else
                {
                    displayName = Helper.NiceName(damage.attacker.character.name);
                    Config.Get("NAMES." + ((data == null) ? Core.Languages[0] : data.Language), displayName, ref displayName, true);
                }
                if (flag)
                {
                    if (!(damage.victim.idMain is SleepingAvatar) || !FeeSleeper)
                    {
                        return;
                    }
                    SleepingAvatar idMain = damage.victim.idMain as SleepingAvatar;
                    if (idMain == null)
                    {
                        return;
                    }
                    UserData bySteamID = Users.GetBySteamID(idMain.ownerID);
                    if (bySteamID == null)
                    {
                        return;
                    }
                    ulong balance = GetBalance(bySteamID.SteamID);
                    key = bySteamID.Username;
                    if (FeeMurder)
                    {
                        amount = (ulong)Math.Abs((float)((balance * FeeMurderPercent) / 100f));
                    }
                    if (PayMurder)
                    {
                        costChicken = (ulong)Math.Abs((float)((balance * PayMurderPercent) / 100f));
                    }
                    if (((costChicken > 0L) && Clans.Enabled) && (data3 != null))
                    {
                        if (data3.Level.BonusMembersPayMurder > 0)
                        {
                            costChicken += (costChicken * data3.Level.BonusMembersPayMurder) / ((ulong)100L);
                        }
                        if (data3.Tax > 0)
                        {
                            ulong num4 = (costChicken * data3.Tax) / ((ulong)100L);
                            data3.Balance += num4;
                            costChicken   -= num4;
                        }
                    }
                    if (costChicken > 0L)
                    {
                        BalanceAdd(client2.userID, costChicken);
                    }
                    if (amount > 0L)
                    {
                        BalanceSub(bySteamID.SteamID, amount);
                    }
                }
                else if (client != null)
                {
                    key = damage.victim.client.netUser.displayName;
                    ulong num5 = GetBalance(client.userID);
                    if (client2 == null)
                    {
                        if (FeeDeath)
                        {
                            amount = (ulong)Math.Abs((float)((num5 * FeeDeathPercent) / 100f));
                        }
                    }
                    else if ((client2 != client) && !flag2)
                    {
                        if ((client2 != client) && !flag2)
                        {
                            UserEconomy economy1 = Get(client2.userID);
                            economy1.PlayersKilled++;
                            if (FeeMurder)
                            {
                                amount = (ulong)Math.Abs((float)((num5 * FeeMurderPercent) / 100f));
                            }
                            if (PayMurder)
                            {
                                costChicken = (ulong)Math.Abs((float)((num5 * PayMurderPercent) / 100f));
                            }
                        }
                    }
                    else if (FeeSuicide)
                    {
                        amount = (ulong)Math.Abs((float)((num5 * FeeSuicidePercent) / 100f));
                    }
                    if (((costChicken > 0L) && Clans.Enabled) && (data3 != null))
                    {
                        if (data3.Level.BonusMembersPayMurder > 0)
                        {
                            costChicken += (costChicken * data3.Level.BonusMembersPayMurder) / ((ulong)100L);
                        }
                        if (data3.Tax > 0)
                        {
                            ulong num6 = (costChicken * data3.Tax) / ((ulong)100L);
                            data3.Balance += num6;
                            costChicken   -= num6;
                        }
                    }
                    if (costChicken > 0L)
                    {
                        BalanceAdd(client2.userID, costChicken);
                    }
                    if (amount > 0L)
                    {
                        BalanceSub(client.userID, amount);
                    }
                    UserEconomy economy2 = Get(client.userID);
                    economy2.Deaths++;
                }
                else if (client2 != null)
                {
                    key = Helper.NiceName(damage.victim.character.name);
                    if (key.Equals("Chicken", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostChicken != 0L)
                        {
                            costChicken = CostChicken;
                        }
                        UserEconomy economy3 = Get(client2.userID);
                        economy3.AnimalsKilled++;
                    }
                    else if (key.Equals("Rabbit", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostRabbit != 0L)
                        {
                            costChicken = CostRabbit;
                        }
                        UserEconomy economy4 = Get(client2.userID);
                        economy4.AnimalsKilled++;
                    }
                    else if (key.Equals("Boar", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostBoar != 0L)
                        {
                            costChicken = CostBoar;
                        }
                        UserEconomy economy5 = Get(client2.userID);
                        economy5.AnimalsKilled++;
                    }
                    else if (key.Equals("Stag", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostStag != 0L)
                        {
                            costChicken = CostStag;
                        }
                        UserEconomy economy6 = Get(client2.userID);
                        economy6.AnimalsKilled++;
                    }
                    else if (key.Equals("Wolf", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostWolf != 0L)
                        {
                            costChicken = CostWolf;
                        }
                        UserEconomy economy7 = Get(client2.userID);
                        economy7.AnimalsKilled++;
                    }
                    else if (key.Equals("Bear", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostBear != 0L)
                        {
                            costChicken = CostBear;
                        }
                        UserEconomy economy8 = Get(client2.userID);
                        economy8.AnimalsKilled++;
                    }
                    else if (key.Equals("Mutant Wolf", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostMutantWolf != 0L)
                        {
                            costChicken = CostMutantWolf;
                        }
                        UserEconomy economy9 = Get(client2.userID);
                        economy9.MutantsKilled++;
                    }
                    else if (key.Equals("Mutant Bear", StringComparison.OrdinalIgnoreCase))
                    {
                        if (CostMutantBear != 0L)
                        {
                            costChicken = CostMutantBear;
                        }
                        UserEconomy economy10 = Get(client2.userID);
                        economy10.MutantsKilled++;
                    }
                    else
                    {
                        ConsoleSystem.LogWarning("[WARNING] Economy: Creature '" + key + "' not have cost of death.");
                    }
                    Config.Get("NAMES." + ((data2 == null) ? Core.Languages[0] : data2.Language), key, ref key, true);
                    if (((costChicken > 0L) && Clans.Enabled) && (data3 != null))
                    {
                        if (data3.Level.BonusMembersPayMurder > 0)
                        {
                            costChicken += (costChicken * data3.Level.BonusMembersPayMurder) / ((ulong)100L);
                        }
                        if (data3.Tax > 0)
                        {
                            ulong num7 = (costChicken * data3.Tax) / ((ulong)100L);
                            data3.Balance += num7;
                            costChicken   -= num7;
                        }
                    }
                    if (costChicken > 0L)
                    {
                        BalanceAdd(client2.userID, costChicken);
                    }
                }
                if ((client2 != null) && (costChicken > 0L))
                {
                    string text = Config.GetMessage("Economy.PlayerDeath.Pay", client2.netUser, null);
                    if (flag)
                    {
                        text = Config.GetMessage("Economy.SleeperDeath.Pay", client2.netUser, null);
                    }
                    text = text.Replace("%DEATHPAY%", costChicken.ToString("N0") + CurrencySign).Replace("%VICTIM%", key);
                    Broadcast.Message(client2.netPlayer, text, null, 0f);
                }
                if ((client != null) && (amount > 0L))
                {
                    string str4;
                    str4 = str4 = Config.GetMessage("Economy.PlayerDeath.Fee", client.netUser, null);
                    if ((client2 == client) || flag2)
                    {
                        str4 = Config.GetMessage("Economy.PlayerSuicide.Fee", client.netUser, null);
                    }
                    str4 = str4.Replace("%DEATHFEE%", amount.ToString("N0") + CurrencySign).Replace("%KILLER%", displayName).Replace("%VICTIM%", key);
                    Broadcast.Message(client.netPlayer, str4, null, 0f);
                }
            }
        }
Example #22
0
        public static void OnHurt(TakeDamage takeDamage, ref DamageEvent damage)
        {
            if (damage.extraData != null)
            {
                if (damage.victim.idMain is Character)
                {
                    if (isPlayer(damage.victim.idMain))
                    {
                        OnHumanHurt(ref damage);
                    }
                    else
                    {
                        OnAIHurt(ref damage);
                    }
                }
                else
                {
                    if (damage.victim.idMain is StructureComponent || damage.victim.idMain is DeployableObject)
                    {
                        if (isPlayer(damage.attacker.idMain))
                        {
                            if (destroyerList.Contains(damage.attacker.userID.ToString()))
                            {
                                beingDestroyed.Add(damage.victim.idMain.gameObject);
                                NetCull.Destroy(damage.victim.idMain.gameObject);
                            }
                            else if (destroyerAllList.Contains(damage.attacker.userID.ToString()))
                            {
                                if (damage.victim.idMain is StructureComponent)
                                {
                                    HashSet<StructureComponent> structureComponents = damage.victim.idMain.gameObject.GetComponent<StructureComponent>()._master._structureComponents;
                                    List<GameObject> toDestroy = new List<GameObject>();
                                    foreach (var kv in structureComponents)
                                    {
                                        if (kv.gameObject != null)
                                        {
                                            toDestroy.Add(kv.gameObject);
                                        }
                                    }
                                    foreach (GameObject GO in toDestroy)
                                    {
                                        if (GO != null)
                                        {
                                            beingDestroyed.Add(GO);
                                            NetCull.Destroy(GO);
                                        }
                                    }
                                }
                                if (damage.victim.idMain is DeployableObject)
                                {
                                    beingDestroyed.Add(damage.victim.idMain.gameObject);
                                    NetCull.Destroy(damage.victim.idMain.gameObject);
                                }
                            }
                            else
                            {
                                if (inZone(damage.victim.idMain.transform.position))
                                {
                                    damage.amount = 0f;
                                    damage.status = LifeStatus.IsAlive;
                                }

                                if (ownershipList.Contains(damage.attacker.userID.ToString()))
                                {
                                    damage.amount = 0f;
                                    damage.status = LifeStatus.IsAlive;
                                    string ownerUID = "";
                                    if (damage.victim.idMain is StructureComponent)
                                        ownerUID = (damage.victim.idMain as StructureComponent)._master.ownerID.ToString();

                                    if (damage.victim.idMain is DeployableObject)
                                        ownerUID = (damage.victim.idMain as DeployableObject).ownerID.ToString();

                                    Thread t = new Thread((DE) =>
                                        {
                                            Broadcast.noticeTo(((DamageEvent)DE).attacker.client.netPlayer, "✲", "This is owned by " + grabNameByUID(ownerUID) + "!");
                                        });
                                    t.Start(damage);
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                if (damage.victim.idMain is Character)
                {
                    if (isPlayer(damage.victim.idMain))
                    {
                        if (godList.Contains(damage.victim.userID.ToString()))
                        {
                            damage.amount = 0f;
                            damage.status = LifeStatus.IsAlive;
                        }
                    }
                }
            }
        }
Example #23
0
 private void OnHurt(TakeDamage takedamage, DamageEvent damage)
 {
     HookCalled("OnHurt");
 }
Example #24
0
        public static void SetDeathReason(PlayerClient playerClient, ref DamageEvent damage)
        {
            try
            {
                if (playerClient != null)
                {
                    if (playerClient.netPlayer != null)
                    {
                        if (NetCheck.PlayerValid(playerClient.netPlayer))
                        {
                            IDMain idMain = damage.attacker.idMain;
                            string message = "";
                            if (idMain != null)
                            {
                                idMain = idMain.idMain;
                                if (idMain is Character)
                                {
                                    Character character = idMain as Character;
                                    Controller playerControlledController = character.playerControlledController;
                                    if (playerControlledController != null)
                                    {
                                        if (playerControlledController.playerClient == playerClient)
                                        {
                                            if (killList.Contains(playerClient))
                                            {
                                                killList.Remove(playerClient);
                                                DeathScreen.SetReason(playerClient.netPlayer, "You fell victim to /kill");
                                                Broadcast.broadcastAll(playerClient.userName + " fell victim to /kill.");
                                            }
                                            else
                                            {
                                                DeathScreen.SetReason(playerClient.netPlayer, "You killed yourself. You silly sod.");
                                                if (Vars.suicideMessages)
                                                {
                                                    message = Vars.suicideMessage.Replace("$VICTIM$", playerClient.userName);

                                                    Broadcast.broadcastAll(message);
                                                }
                                            }
                                            return;
                                        }
                                        Character killerChar;
                                        Character victimChar;
                                        Character.FindByUser(playerControlledController.playerClient.userID, out killerChar);
                                        Character.FindByUser(playerClient.userID, out victimChar);
                                        Vector3 killerPos = killerChar.transform.position;
                                        Vector3 victimPos = victimChar.transform.position;
                                        double distance = Math.Round(Vector3.Distance(killerPos, victimPos));

                                        WeaponImpact extraData = damage.extraData as WeaponImpact;
                                        if (wasHit.Contains(playerClient))
                                        {
                                            wasHit.Remove(playerClient);
                                        }
                                        if (extraData != null)
                                        {
                                            if (Vars.murderMessages)
                                            {
                                                message = Vars.murderMessage.Replace("$VICTIM$", playerClient.userName).Replace("$KILLER$", playerControlledController.playerClient.userName).Replace("$WEAPON$", extraData.dataBlock.name).Replace("$PART$", BodyParts.GetNiceName(damage.bodyPart)).Replace("$DISTANCE$", Convert.ToString(distance) + "m");

                                                Broadcast.broadcastAll(message);
                                            }
                                            DeathScreen.SetReason(playerClient.netPlayer, playerControlledController.playerClient.userName + " killed you using a " + extraData.dataBlock.name + " with a hit to your " + BodyParts.GetNiceName(damage.bodyPart));
                                            return;
                                        }
                                        if (Vars.murderMessages)
                                        {
                                            message = Vars.murderMessageUnknown.Replace("$VICTIM$", playerClient.userName).Replace("$KILLER$", playerControlledController.playerClient.userName);

                                            Broadcast.broadcastAll(message);
                                        }
                                        DeathScreen.SetReason(playerClient.netPlayer, playerControlledController.playerClient.userName + " killed you with a hit to your " + BodyParts.GetNiceName(damage.bodyPart));
                                        return;
                                    }
                                }

                                string killer = idMain.ToString();
                                if (killer.Contains("(Clone)"))
                                    killer = killer.Substring(0, killer.IndexOf("(Clone)"));

                                switch (killer)
                                {
                                    case "MutantBear":
                                        killer = "Mutant Bear";
                                        break;
                                    case "MutantWolf":
                                        killer = "Mutant Wolf";
                                        break;
                                }
                                Character victimChar2;
                                Character.FindByUser(playerClient.userID, out victimChar2);

                                if (Vars.accidentMessages)
                                {
                                    message = Vars.accidentMessage.Replace("$VICTIM$", victimChar2.netUser.displayName).Replace("$KILLER$", killer);

                                    Broadcast.broadcastAll(message);
                                }

                                DeathScreen.SetReason(playerClient.netPlayer, "You were killed by a " + killer);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Vars.conLog.Error("SDR: " + ex.ToString());
            }
        }
Example #25
0
        void EntityHurt_Test()
        {
            try
            {
                Entity Ent = null;
                if (World.GetWorld().Entities.ToArray().Length > 2)
                    Ent = World.GetWorld().Entities.ToArray()[2];
                if (Ent == null)
                    Log("EntityHurt_Test: Ent == null!");

                DamageEvent damageEvent = new DamageEvent();
                damageEvent.amount = 50f;

                Log("EntityHurt_Test: Test 1");
                Hooks.EntityHurt(Ent, ref damageEvent);

                Fougerite.Player player = null;
                Ent.ChangeOwner(player);
                Log("EntityHurt_Test: Test 2");
                Hooks.EntityHurt(Ent, ref damageEvent);

                Log("EntityHurt_Test: Test 3");
                Hooks.EntityHurt(null, ref damageEvent);

                Ent = new Entity(new object());
                Log("EntityHurt_Test: Test 4");
                Hooks.EntityHurt(Ent, ref damageEvent);
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
        }
Example #26
0
 public void OnHurt(DamageEvent damage)
 {
 }
Example #27
0
        /// <summary>
        /// Performs a melee attack for the monster
        /// </summary>
        /// <returns>The length in seconds for the attack animation</returns>
        public float MeleeAttack()
        {
            var target       = AttackTarget as Creature;
            var targetPlayer = AttackTarget as Player;
            var targetPet    = AttackTarget as CombatPet;
            var combatPet    = this as CombatPet;

            if (target == null || !target.IsAlive)
            {
                FindNextTarget();
                return(0.0f);
            }

            if (CurrentMotionState.Stance == MotionStance.NonCombat)
            {
                DoAttackStance();
            }

            // choose a random combat maneuver
            var maneuver = GetCombatManeuver();

            if (maneuver == null)
            {
                Console.WriteLine($"Combat maneuver null! Stance {CurrentMotionState.Stance}, MotionTable {MotionTableId:X8}");
                return(0.0f);
            }

            AttackHeight = maneuver.AttackHeight;

            DoSwingMotion(AttackTarget, maneuver, out float animLength, out var attackFrames);
            PhysicsObj.stick_to_object(AttackTarget.PhysicsObj.ID);

            var numStrikes = attackFrames.Count;

            var actionChain = new ActionChain();

            var prevTime = 0.0f;

            for (var i = 0; i < numStrikes; i++)
            {
                actionChain.AddDelaySeconds(attackFrames[i] * animLength - prevTime);
                prevTime = attackFrames[i] * animLength;

                actionChain.AddAction(this, () =>
                {
                    if (AttackTarget == null || IsDead)
                    {
                        return;
                    }

                    if (WeenieType == WeenieType.GamePiece)
                    {
                        target.TakeDamage(this, DamageType.Slash, target.Health.Current);
                        (this as GamePiece).OnDealtDamage();
                        return;
                    }

                    var weapon      = GetEquippedWeapon();
                    var damageEvent = DamageEvent.CalculateDamage(this, target, weapon, maneuver);

                    //var damage = CalculateDamage(ref damageType, maneuver, bodyPart, ref critical, ref shieldMod);

                    if (damageEvent.HasDamage)
                    {
                        if (combatPet != null || targetPet != null)
                        {
                            // combat pet inflicting or receiving damage
                            //Console.WriteLine($"{target.Name} taking {Math.Round(damage)} {damageType} damage from {Name}");
                            target.TakeDamage(this, damageEvent.DamageType, damageEvent.Damage);
                            EmitSplatter(target, damageEvent.Damage);
                        }
                        else if (targetPlayer != null)
                        {
                            // this is a player taking damage
                            targetPlayer.TakeDamage(this, damageEvent);

                            if (damageEvent.ShieldMod != 1.0f)
                            {
                                var shieldSkill = targetPlayer.GetCreatureSkill(Skill.Shield);
                                Proficiency.OnSuccessUse(targetPlayer, shieldSkill, shieldSkill.Current); // ?
                            }
                        }
                    }
                    else
                    {
                        target.OnEvade(this, CombatType.Melee);
                    }

                    if (combatPet != null)
                    {
                        combatPet.PetOnAttackMonster(target);
                    }
                });
            }
            actionChain.EnqueueChain();

            // TODO: figure out exact speed / delay formula
            var meleeDelay = ThreadSafeRandom.Next(MeleeDelayMin, MeleeDelayMax);

            NextAttackTime = Timers.RunningTime + animLength + meleeDelay;
            return(animLength);
        }
Example #28
0
 object CancelDamage(DamageEvent damage)
 {
     damage.amount = 0f;
     damage.status = LifeStatus.IsAlive;
     return(damage);
 }
Example #29
0
 public void OnHurt(DamageEvent damage)
 {
     this.MarkDamageTime();
 }
 public DeathEvent(ref DamageEvent d) : base(ref d)
 {
     this.DropItems = true;
 }
Example #31
0
 public void ModifyRecievedEvent(DamageEvent damageEvent)
 {
     damageEvent.DamageAmount = Mathf.Max(1, damageEvent.DamageAmount - DamageReduction);
 }
Example #32
0
        private object OnProcessDamageEvent(TakeDamage takedamage, DamageEvent damage)
        {
            var dmg = Interface.CallHook("ModifyDamage", takedamage, damage);
            if (dmg is DamageEvent)
                damage = (DamageEvent)dmg;
            if ((bool)takenodamage.GetValue(takedamage)) return null;

            var lifeStatus = damage.status;
            if (lifeStatus == LifeStatus.WasKilled)
            {
                takedamage.health = 0f;
                Interface.CallHook("OnKilled", takedamage, damage);
            }
            else if (lifeStatus == LifeStatus.IsAlive)
            {
                takedamage.health -= damage.amount;
                Interface.CallHook("OnHurt", takedamage, damage);
            }

            return damage;
        }
Example #33
0
        public HurtEvent(ref DamageEvent d)
        {
            //Logger.LogDebug(string.Format("[DamageEvent] {0}", d.ToString()));
            try
            {
                this._sleeper    = false;
                this.DamageEvent = d;
                this.WeaponData  = null;
                this.IsDecay     = false;
                this._status     = d.status;
                string weaponName = "Unknown";
                if (d.victim.idMain is DeployableObject)
                {
                    if (d.victim.id.ToString().ToLower().Contains("sleeping"))
                    {
                        this._sleeper = true;
                        DeployableObject sleeper = d.victim.idMain as DeployableObject;
                        this.Victim = new Sleeper(sleeper);
                    }
                    else
                    {
                        this.Victim = new Entity(d.victim.idMain.GetComponent <DeployableObject>());
                    }
                    this._playervictim = false;
                }
                else if (d.victim.idMain is StructureComponent)
                {
                    this.Victim        = new Entity(d.victim.idMain.GetComponent <StructureComponent>());
                    this._playervictim = false;
                }
                else if (d.victim.id is SpikeWall)
                {
                    this._playerattacker = false;
                    this.Victim          = new Entity(d.victim.idMain.GetComponent <DeployableObject>());
                }
                else if (d.victim.client != null)
                {
                    this.Victim        = Fougerite.Server.Cache[d.victim.client.userID];
                    this._playervictim = true;
                }
                else if (d.victim.character != null)
                {
                    this.Victim        = new NPC(d.victim.character);
                    this._playervictim = false;
                }
                if (!(bool)d.attacker.id)
                {
                    if (d.victim.client != null)
                    {
                        weaponName           = this.DamageType;
                        this._playerattacker = false;
                        this.Attacker        = null;
                    }
                }
                else if (d.attacker.id is SpikeWall)
                {
                    this._playerattacker = false;
                    this.Attacker        = new Entity(d.attacker.idMain.GetComponent <DeployableObject>());
                    weaponName           = d.attacker.id.ToString().Contains("Large") ? "Large Spike Wall" : "Spike Wall";
                }
                else if (d.attacker.id is SupplyCrate)
                {
                    this._playerattacker = false;
                    this.Attacker        = new Entity(d.attacker.idMain.gameObject);
                    weaponName           = "Supply Crate";
                }
                else if (d.attacker.id is Metabolism && d.victim.id is Metabolism)
                {
                    //this.Attacker = Fougerite.Server.Cache[d.attacker.client.userID];
                    this.Attacker        = Fougerite.Player.FindByPlayerClient(d.attacker.client);
                    this._playerattacker = false;
                    this.Victim          = this.Attacker;
                    ICollection <string> list = new List <string>();
                    Fougerite.Player     vic  = this.Victim as Fougerite.Player;
                    if (vic.IsStarving)
                    {
                        list.Add("Starvation");
                    }
                    if (vic.IsRadPoisoned)
                    {
                        list.Add("Radiation");

                        /*if (vic.RadLevel > 5000)
                         * {
                         *  vic.AddRads(-vic.RadLevel);
                         *  d.amount = 0;
                         *  _de.amount = 0;
                         *  Logger.LogDebug("[RadiationHack] Someone tried to kill " + vic.Name + " with radiation hacks.");
                         * }*/
                    }
                    if (vic.IsPoisoned)
                    {
                        list.Add("Poison");
                    }
                    if (vic.IsBleeding)
                    {
                        list.Add("Bleeding");
                    }

                    if (list.Contains("Bleeding"))
                    {
                        if (this.DamageType != "Unknown" && !list.Contains(this.DamageType))
                        {
                            list.Add(this.DamageType);
                        }
                    }
                    if (list.Count > 0)
                    {
                        weaponName = string.Format("Self ({0})", string.Join(",", list.ToArray()));
                    }
                    else
                    {
                        weaponName = this.DamageType;
                    }
                }
                else if (d.attacker.client != null)
                {
                    this.Attacker        = Fougerite.Server.Cache[d.attacker.client.userID];
                    this._playerattacker = true;
                    if (d.extraData != null)
                    {
                        WeaponImpact extraData = d.extraData as WeaponImpact;
                        this.WeaponData = extraData;
                        if (extraData.dataBlock != null)
                        {
                            weaponName = extraData.dataBlock.name;
                        }
                    }
                    else
                    {
                        if (d.attacker.id is TimedExplosive)
                        {
                            weaponName = "Explosive Charge";
                        }
                        else if (d.attacker.id is TimedGrenade)
                        {
                            weaponName = "F1 Grenade";
                        }
                        else
                        {
                            weaponName = "Hunting Bow";
                        }
                        if (d.victim.client != null)
                        {
                            if (!d.attacker.IsDifferentPlayer(d.victim.client) && !(this.Victim is Entity))
                            {
                                weaponName = "Fall Damage";
                            }
                            else if (!d.attacker.IsDifferentPlayer(d.victim.client) && (this.Victim is Entity))
                            {
                                weaponName = "Hunting Bow";
                            }
                        }
                    }
                }
                else if (d.attacker.character != null)
                {
                    this.Attacker        = new NPC(d.attacker.character);
                    this._playerattacker = false;
                    weaponName           = string.Format("{0} Claw", (this.Attacker as NPC).Name);
                }
                this.WeaponName = weaponName;
            }
            catch (Exception ex)
            {
                Logger.LogDebug(string.Format("[HurtEvent] Error. " + ex.ToString()));
            }
        }
Example #34
0
    public void Damage(GameObject source, int damage)
    {
        DamageEvent eventArgs = new DamageEvent(source, gameObject, damage);

        EventBus.Publish(eventArgs);
    }
Example #35
0
 private void OnHurt(TakeDamage takedamage, DamageEvent damage)
 {
     HookCalled("OnHurt");
     // Print damage taken
     var netUser = damage.victim.client.netUser;
     if (netUser == null) return;
     Puts("Player " + netUser.displayName + " took " + damage.amount + " damage!");
 }
Example #36
0
        public DamageEvent DamageTarget(Creature target, WorldObject damageSource)
        {
            if (target.Health.Current <= 0)
            {
                return(null);
            }

            // check PK status
            var targetPlayer = target as Player;

            if (targetPlayer != null)
            {
                var pkError = CheckPKStatusVsTarget(this, targetPlayer, null);
                if (pkError != null)
                {
                    Session.Network.EnqueueSend(new GameEventWeenieErrorWithString(Session, pkError[0], target.Name));
                    targetPlayer.Session.Network.EnqueueSend(new GameEventWeenieErrorWithString(targetPlayer.Session, pkError[1], Name));
                    return(null);
                }
            }

            var damageEvent = DamageEvent.CalculateDamage(this, target, damageSource);

            if (damageEvent.HasDamage)
            {
                OnDamageTarget(target, damageEvent.CombatType, damageEvent.IsCritical);

                if (targetPlayer != null)
                {
                    targetPlayer.TakeDamage(this, damageEvent.DamageType, damageEvent.Damage, damageEvent.BodyPart, damageEvent.IsCritical);
                }
                else
                {
                    target.TakeDamage(this, damageEvent.DamageType, damageEvent.Damage, damageEvent.IsCritical);
                }
            }
            else
            {
                if (targetPlayer != null && targetPlayer.UnderLifestoneProtection)
                {
                    Session.Network.EnqueueSend(new GameMessageSystemChat($"The Lifestone's magic protects {target.Name} from the attack!", ChatMessageType.Magic));
                }
                else
                {
                    Session.Network.EnqueueSend(new GameMessageSystemChat($"{target.Name} evaded your attack.", ChatMessageType.CombatSelf));
                }
            }

            if (damageEvent.HasDamage && target.IsAlive)
            {
                var attackConditions = new AttackConditions();
                if (damageEvent.RecklessnessMod > 1.0f)
                {
                    attackConditions |= AttackConditions.Recklessness;
                }
                if (damageEvent.SneakAttackMod > 1.0f)
                {
                    attackConditions |= AttackConditions.SneakAttack;
                }

                // notify attacker
                var intDamage = (uint)Math.Round(damageEvent.Damage);

                Session.Network.EnqueueSend(new GameEventAttackerNotification(Session, target.Name, damageEvent.DamageType, (float)intDamage / target.Health.MaxValue, intDamage, damageEvent.IsCritical, attackConditions));

                // splatter effects
                if (targetPlayer == null)
                {
                    Session.Network.EnqueueSend(new GameMessageSound(target.Guid, Sound.HitFlesh1, 0.5f));
                    if (damageEvent.Damage >= target.Health.MaxValue * 0.25f)
                    {
                        var painSound = (Sound)Enum.Parse(typeof(Sound), "Wound" + ThreadSafeRandom.Next(1, 3), true);
                        Session.Network.EnqueueSend(new GameMessageSound(target.Guid, painSound, 1.0f));
                    }
                    var splatter = (PlayScript)Enum.Parse(typeof(PlayScript), "Splatter" + GetSplatterHeight() + GetSplatterDir(target));
                    Session.Network.EnqueueSend(new GameMessageScript(target.Guid, splatter));
                }

                // handle Dirty Fighting
                if (GetCreatureSkill(Skill.DirtyFighting).AdvancementClass >= SkillAdvancementClass.Trained)
                {
                    FightDirty(target);
                }
            }

            if (damageEvent.Damage > 0.0f)
            {
                Session.Network.EnqueueSend(new GameEventUpdateHealth(Session, target.Guid.Full, (float)target.Health.Current / target.Health.MaxValue));
            }

            if (targetPlayer == null)
            {
                OnAttackMonster(target);
            }

            return(damageEvent);
        }
Example #37
0
 private void ModifyDamage(TakeDamage takedamage, DamageEvent damage)
 {
     HookCalled("ModifyDamage");
 }
Example #38
0
 public static LifeStatus HurtSelf(IDBase victim, TakeDamage.Quantity damageQuantity, out DamageEvent damage, object extraData = null)
 {
     return TakeDamage.HurtShared(victim, victim, damageQuantity, out damage, extraData);
 }
Example #39
0
 public void OnDestroy()
 {
     unit = null;
     DamageEvent.RemoveAllListeners();
 }
Example #40
0
 public static LifeStatus KillSelf(IDBase victim, out DamageEvent damage, object extraData = null)
 {
     return TakeDamage.HurtShared(victim, victim, TakeDamage.Quantity.AllHealth, out damage, extraData);
 }
Example #41
0
    /*void OnSetPlayer(int playerNum)
    {
        humanPlayer = playerNum;

    }*/
    void OnShotHit(DamageEvent data)
    {
        // we send damagedealt in Dude now ... that might not be a good idea
        //Director.GetSingleton().SendMessage("OnDamageDealt", data);
    }
Example #42
0
 protected virtual void ApplyDamageTypeList(ref DamageEvent damage, DamageTypeList damageTypes)
 {
     for (int i = 0; i < 6; i++)
     {
         if (!Mathf.Approximately(damageTypes[i], 0f))
         {
             damage.damageTypes = (DamageTypeFlags)((int)damage.damageTypes | 1 << (i & 31));
             damage.amount = damage.amount + damageTypes[i];
         }
     }
 }
Example #43
0
        public HurtEvent(ref DamageEvent d)
        {
            Fougerite.Player player = Fougerite.Player.FindByPlayerClient(d.attacker.client);
            if (player != null)
            {
                this.Attacker = player;
            }
            else
            {
                this.Attacker = new NPC(d.attacker.character);
            }
            Fougerite.Player player2 = Fougerite.Player.FindByPlayerClient(d.victim.client);
            if (player2 != null)
            {
                this.Victim = player2;
            }
            else
            {
                this.Victim = new NPC(d.victim.character);
            }
            this.DamageEvent = d;
            this.WeaponData  = null;
            this.IsDecay     = false;
            string weaponName = "Unknown";

            if (d.extraData != null)
            {
                WeaponImpact extraData = d.extraData as WeaponImpact;
                this.WeaponData = extraData;
                if (extraData.dataBlock != null)
                {
                    weaponName = extraData.dataBlock.name;
                }
            }
            else
            {
                if (d.attacker.id is TimedExplosive)
                {
                    weaponName = "Explosive Charge";
                }
                else if (d.attacker.id is TimedGrenade)
                {
                    weaponName = "F1 Grenade";
                }
                else if (d.attacker.id.ToString().Contains("MutantBear"))
                {
                    weaponName = "Mutant Bear Claw";
                }
                else if (d.attacker.id.ToString().Contains("Bear"))
                {
                    weaponName = "Bear Claw";
                }
                else if (d.attacker.id.ToString().Contains("MutantWolf"))
                {
                    weaponName = "Mutant Wolf Claw";
                }
                else if (d.attacker.id.ToString().Contains("Wolf"))
                {
                    weaponName = "Wolf Claw";
                }
                else if (d.attacker.id.Equals(d.victim.id))
                {
                    weaponName = String.Format("Self ({0})", DamageType);
                }
                else
                {
                    weaponName = "Hunting Bow";
                }
            }
            this.WeaponName = weaponName;
        }
Example #44
0
 protected virtual LifeStatus Hurt(ref DamageEvent damage)
 {
     if (this.dead)
     {
         damage.status = LifeStatus.IsDead;
     }
     else if (this.health <= damage.amount)
     {
         damage.status = LifeStatus.WasKilled;
     }
     else
     {
         damage.status = LifeStatus.IsAlive;
     }
     this.ProcessDamageEvent(ref damage);
     if (this.ShouldRelayDamageEvent(ref damage))
     {
         base.SendMessage("OnHurt", damage, SendMessageOptions.DontRequireReceiver);
     }
     if (damage.status == LifeStatus.WasKilled)
     {
         base.SendMessage("OnKilled", damage, SendMessageOptions.DontRequireReceiver);
     }
     return damage.status;
 }
Example #45
0
 private void ModifyDamage(TakeDamage takedamage, DamageEvent damage)
 {
     HookCalled("ModifyDamage");
 }
Example #46
0
 protected void ProcessDamageEvent(ref DamageEvent damage)
 {
     if (this.takenodamage)
     {
         return;
     }
     LifeStatus lifeStatu = damage.status;
     if (lifeStatu == LifeStatus.IsAlive)
     {
         TakeDamage takeDamage = this;
         takeDamage._health = takeDamage._health - damage.amount;
     }
     else if (lifeStatu == LifeStatus.WasKilled)
     {
         this._health = 0f;
     }
 }
Example #47
0
 private void OnKilled(TakeDamage takedamage, DamageEvent damage)
 {
     HookCalled("OnKilled");
 }
Example #48
0
 protected bool ShouldRelayDamageEvent(ref DamageEvent damage)
 {
     switch (damage.status)
     {
         case LifeStatus.IsAlive:
         {
             return this.sendMessageWhenAlive;
         }
         case LifeStatus.WasKilled:
         {
             return this.sendMessageWhenKilled;
         }
         case LifeStatus.IsDead:
         {
             return this.sendMessageWhenDead;
         }
     }
     Debug.LogWarning(string.Concat("Unhandled LifeStatus ", damage.status), this);
     return false;
 }
Example #49
0
 public void ExecuteDealDamage(IAttacker target, int value, DamageType type)
 {
     DamageEvent.Call(new DamageEventArgs(this, target, value, type));
 }
Example #50
0
 private static LifeStatus HurtShared(IDBase attacker, IDBase victim, TakeDamage.Quantity damageQuantity, out DamageEvent damage, object extraData = null)
 {
     damage = new DamageEvent();
     TakeDamage takeDamage;
     if (victim)
     {
         IDMain dMain = victim.idMain;
         if (dMain)
         {
             takeDamage = (!(dMain is Character) ? dMain.GetLocal<TakeDamage>() : ((Character)dMain).takeDamage);
             if (takeDamage && !takeDamage.takenodamage)
             {
                 takeDamage.MarkDamageTime();
                 damage.victim.id = victim;
                 damage.attacker.id = attacker;
                 damage.amount = damageQuantity.@value;
                 damage.sender = takeDamage;
                 damage.status = (!takeDamage.dead ? LifeStatus.IsAlive : LifeStatus.IsDead);
                 damage.damageTypes = (DamageTypeFlags)0;
                 damage.extraData = extraData;
                 if ((int)damageQuantity.Unit == -1)
                 {
                     takeDamage.ApplyDamageTypeList(ref damage, damageQuantity.list);
                 }
                 takeDamage.Hurt(ref damage);
                 return damage.status;
             }
         }
     }
     damage.victim.id = null;
     damage.attacker.id = null;
     damage.amount = 0f;
     damage.sender = null;
     damage.damageTypes = (DamageTypeFlags)0;
     damage.status = LifeStatus.Failed;
     damage.extraData = extraData;
     return LifeStatus.Failed;
 }
Example #51
0
 void NPCKilled_Test()
 {
     try
     {
         DamageEvent damageEvent = new DamageEvent();
         Log("NPCKilled_Test: Test 1");
         Hooks.NPCKilled(ref damageEvent);
     }
     catch (Exception ex)
     {
         Logger.LogException(ex);
     }
 }
 // Token: 0x06001318 RID: 4888
 protected abstract void OnDamageEvent(DamageEvent damageEvent);
Example #53
0
        public void Damage(float damage, Vector3 hitPoint, AttributeChangeCause cause = AttributeChangeCause.FORCED, Damageable attacker = null, DamageType type = DamageType.NONE)
        {
            //  Invoke a damage event
            DamageEvent e = new DamageEvent {
                cause = cause, victim = this, attacker = attacker, type = type, damage = damage
            };

            OnDamageEvent?.Invoke(this, e);
            if (e.cancel == true)
            {
                return;
            }                               //  return if the event has been cancelled by any subscriber

            bool hadImmunity   = false;
            bool hadWeakness   = false;
            bool hadResistance = false;

            //  Check for immunity
            for (int i = 0; i < immunities.Length; i++)
            {
                if (e.type == immunities[i])
                {
                    e.damage    = 0;
                    hadImmunity = true;
                    break;
                }
            }

            //  Modify any damage by any weaknesses or resistances
            if (e.damage > 0 && e.type != DamageType.NONE)
            {
                for (int i = 0; i < weaknesses.Length; i++)
                {
                    if (e.type == weaknesses[i])
                    {
                        e.damage   *= 2;
                        hadWeakness = true;
                        break;
                    }
                }

                for (int i = 0; i < resistances.Length; i++)
                {
                    if (e.type == resistances[i])
                    {
                        e.damage     /= 2;
                        hadResistance = true;
                        break;
                    }
                }
            }

            //  If the damage is enough to kill, invoke a death event
            if (GetAttributeValue(Attributes.HEALTH) - e.damage <= 0)
            {
                DeathEvent e2 = new DeathEvent {
                    cause = cause, victim = this, attacker = attacker
                };
                OnDeathEvent?.Invoke(this, e2);
                if (e2.cancel == true)
                {
                    return;
                }                                //  return if the event has been cancelled by any subscriber
            }

            //  Update health
            GetAttribute(Attributes.HEALTH).Modify(-e.damage);

            //  Send indicator
            Color indicatorColor = Color.gray * Color.gray;

            if (hadImmunity)
            {
                indicatorColor = Color.red;
            }
            if (hadWeakness)
            {
                indicatorColor = Color.white;
            }
            if (hadResistance)
            {
                indicatorColor = Color.yellow;
            }

            if (hitPoint == null)
            {
                UIMaster.SendFloatingIndicator(this.transform.position + this.transform.rotation * center, e.damage.ToString("#.0"), indicatorColor);
            }
            else
            {
                UIMaster.SendFloatingIndicator(hitPoint, e.damage.ToString("0.0"), indicatorColor);
            }
        }
Example #54
0
    public IEnumerator OnStun(float stunDuration)
    {
        if (status.stunned || cannotBeStunned)
        {
            yield break;
        }

        if (stunDuration == 0.0f)
        {
            stunDuration = defaultStun;
        }

        // HACK: stunDuration of < 0 means "force a stun of this amount"
        if (stunDuration < 0.0f)
        {
            stunDuration *= -1.0f;
        }
        else
        {
            stunDuration -= stunResistance;
            if (stunDuration <= 0.0f)
            {
                stunDuration = 0.5f;                 //yield break;
            }
            // tell the Director to maintain the bloodlust meter
            var fakeData = new DamageEvent();
            fakeData.damage = 20;
            var director = GameObject.FindGameObjectWithTag("Director");
            if (director != null)
            {
                director.SendMessage("OnDamageDealt", fakeData);
            }
        }

        var trailEffect = Instantiate(
            Resources.Load("Effects/effect_stun") as GameObject, Vector3.zero, Quaternion.identity
            ) as GameObject;

        trailEffect.transform.parent        = transform;
        trailEffect.transform.localPosition = Vector3.zero;

        if (stunDuration >= 1.0f)
        {
            animated.animation["bjorn_die"].speed = 1;
            animated.animation.Play("bjorn_die");
            //animated.parent.SendMessage("DoEffect", stunDuration);
        }

        // stop all active processes
        gameObject.BroadcastMessage("OnDisable");
        StopCoroutine("doSwing");
        if (activeTelegraph != null)
        {
            activeTelegraph.gameObject.SetActive(false);
            //activeTelegraphCircle.gameObject.SetActive(false);
        }

        this.status.stunned = true;
        yield return(new WaitForSeconds(stunDuration));

        Destroy(trailEffect);

        if (stunDuration >= 1.0f)
        {
            // get up
            animated.animation["bjorn_die"].normalizedTime = 1.0f;
            animated.animation["bjorn_die"].speed          = -1;
            animated.animation.Play("bjorn_die");

            yield return(new WaitForSeconds(0.5f));
        }

        gameObject.BroadcastMessage("OnEnable");
        this.status.stunned = false;

        // have to reset other statuses as well
        // I really shouldn't have to do this...
        this.status.Reset();
    }
Example #55
0
 private void OnDamaged(DamageEvent evt)
 {
     health = PlayerInputComponent.health;
     Debug.Log("Health: " + health.ToString());
 }
Example #56
0
    /*void OnSetPlayer(int playerNum)
     * {
     *      humanPlayer = playerNum;
     *
     * }*/

    void OnShotHit(DamageEvent data)
    {
        // we send damagedealt in Dude now ... that might not be a good idea
        //Director.GetSingleton().SendMessage("OnDamageDealt", data);
    }
Example #57
0
        public void OnCollideObject(WorldObject target)
        {
            if (!PhysicsObj.is_active())
            {
                return;
            }

            //Console.WriteLine($"Projectile.OnCollideObject - {WorldObject.Name} ({WorldObject.Guid}) -> {target.Name} ({target.Guid})");

            if (ProjectileTarget == null || ProjectileTarget != target)
            {
                //Console.WriteLine("Unintended projectile target! (should be " + ProjectileTarget.Guid.Full.ToString("X8") + " - " + ProjectileTarget.Name + ")");
                OnCollideEnvironment();
                return;
            }

            // take damage
            var sourceCreature = ProjectileSource as Creature;
            var sourcePlayer   = ProjectileSource as Player;
            var targetCreature = target as Creature;

            DamageEvent damageEvent = null;

            if (targetCreature != null)
            {
                if (sourcePlayer != null)
                {
                    // player damage monster or player
                    damageEvent = sourcePlayer.DamageTarget(targetCreature, WorldObject);

                    if (damageEvent != null && damageEvent.HasDamage)
                    {
                        WorldObject.EnqueueBroadcast(new GameMessageSound(WorldObject.Guid, Sound.Collision, 1.0f));
                    }
                }
                else if (sourceCreature != null && sourceCreature.AttackTarget != null)
                {
                    var targetPlayer = sourceCreature.AttackTarget as Player;

                    damageEvent = DamageEvent.CalculateDamage(sourceCreature, targetCreature, WorldObject);

                    if (targetPlayer != null)
                    {
                        // monster damage player
                        if (damageEvent.HasDamage)
                        {
                            targetPlayer.TakeDamage(sourceCreature, damageEvent);

                            // blood splatter?

                            if (damageEvent.ShieldMod != 1.0f)
                            {
                                var shieldSkill = targetPlayer.GetCreatureSkill(Skill.Shield);
                                Proficiency.OnSuccessUse(targetPlayer, shieldSkill, shieldSkill.Current);   // ??
                            }
                        }
                        else
                        {
                            targetPlayer.OnEvade(sourceCreature, CombatType.Missile);
                        }
                    }
                    else
                    {
                        // monster damage pet
                        if (damageEvent.HasDamage)
                        {
                            targetCreature.TakeDamage(sourceCreature, damageEvent.DamageType, damageEvent.Damage);

                            // blood splatter?
                        }
                    }
                }

                // handle target procs
                if (damageEvent != null && damageEvent.HasDamage)
                {
                    sourceCreature?.TryProcEquippedItems(targetCreature, false);
                }
            }

            WorldObject.CurrentLandblock?.RemoveWorldObject(WorldObject.Guid, showError: !PhysicsObj.entering_world);
            PhysicsObj.set_active(false);

            WorldObject.HitMsg = true;
        }
Example #58
0
    public override void OnHit(OmniObject player, OmniObject hitPlayer, Vector2 vel,Vector2 pos,int location)
    {
        if (hitPlayer is DamageableObject)
        {
            DamageableObject dmged = hitPlayer as DamageableObject;
            if (dmged.stun > 0)
                return;
            else
            {
                dmged.stun = stunTime;
            }
        }

        if (vel.magnitude < 0.7f)
            return;

        if (location >= 0)
        {
            if (player is DamageableObject)
            {

                if (((DamageableObject)player).isProjectile)
                {
                    DamageableObject pl = ((DamageableObject)player);

                    Vector2 b1 = pos;
                    Vector2 b2 = hitPlayer.boundsPos + new Vector2(hitPlayer.skeleton[location].bounds.x * hitPlayer.item.Size, hitPlayer.skeleton[location].bounds.y * hitPlayer.item.Size);

                    //b1.x += player.item.Size / 2f;
                    //b2.x += hitPlayer.item.Size / 2f;
                    //b1.y += player.item.Size / 2f;
                    //b2.y += hitPlayer.item.Size / 2f;
                    Vector2 offset = pos;
                    /*

                    Quaternion rot = Quaternion.AngleAxis(hitPlayer.skeleton[location].rotation, Vector3.forward);
                    Matrix4x4 tr = hitPlayer.skeleton[location].tr;
                    Matrix4x4 skelmove = Matrix4x4.TRS(hitPlayer.skeleton[location].rotationPoint, Quaternion.identity, Vector3.one);
                    Matrix4x4 skelrot = Matrix4x4.TRS(Vector3.zero, rot, Vector3.one);
                    tr *= skelmove;
                    tr *= skelrot;
                    tr *= skelmove.inverse;
                    offset = tr.MultiplyPoint(offset);
                    */
                    //offset /= hitPlayer.item.Size;
                    pl.mountedTo = hitPlayer;
                    pl.mountPos = offset;
                    pl.mountPosFlipped = offset;
                    pl.mountPosFlipped.x = pl.item.Size-offset.x;
                    pl.mountRot = player.rotation - hitPlayer.skeleton[location].rotation;
                    //Debug.Log(pl.mountRot);
                    //float a = ;
                    if (hitPlayer.skeleton[location].rotation >= 0)
                    {
                        //pl.mountPos.x += 1 * (hitPlayer.item.Size / player.item.Size);
                    }
                    //pl.mountPos.x -= Mathf.Cos(a);
                    //pl.mountPos.y -= Mathf.Sin(a);
                    //pl.mountRotOffset = player.rotation - hitPlayer.skeleton[location].rotation;
                    pl.mountLoc = location;
                    mountObject o = new mountObject();
                    o.obj = player;
                    o.location = location;
                    hitPlayer.mountObjects.Add(o);
                }
            }
        }
        DamageEvent e = new DamageEvent(OmniWorld.tick, hitPlayer, player, this, vel);
        OmniEvents.AddEvent(e);
    }
Example #59
0
 void Handle(DamageEvent e)
 {
     constraint.ForEachGameObject((egoComponent, transform, powerUpComponent, spriteRenderer, collider) => {
         powerUpComponent.powerUpTimerTimeElapsed = -1;
     });
 }
Example #60
0
 public void ModifyDispatchedEvent(DamageEvent damageEvent)
 {
     damageEvent.DamageAmount += DamageDealt;
 }