void OnEntityTakeDamage(BaseEntity entity, HitInfo info) { var victim = entity?.ToPlayer(); var attacker = info?.Initiator?.ToPlayer(); if (victim == null || attacker == null) return; if (victim == attacker) return; if (info.IsProjectile()) return; if (!permission.UserHasPermission(attacker.UserIDString, permMugging)) return; if (permission.UserHasPermission(victim.UserIDString, permProtection)) return; if (InNoLootZone(victim, attacker) || IsFriend(victim, attacker) || IsClanmate(victim, attacker)) return; if (!cooldowns.ContainsKey(attacker.UserIDString)) cooldowns.Add(attacker.UserIDString, 0f); if (usageCooldown != 0 && cooldowns[attacker.UserIDString] + usageCooldown > Interface.Oxide.Now) { PrintToChat(attacker, Lang("Cooldown", attacker.UserIDString)); return; } if (itemStealing) StealItem(victim, attacker); if (moneyStealing) StealMoney(victim, attacker); if (pointStealing) StealPoints(victim, attacker); cooldowns[attacker.UserIDString] = Interface.Oxide.Now; }
void OnPlayerAttack(BasePlayer attacker, HitInfo info) { if (info == null) { return; } if (!permission.UserHasPermission(attacker.UserIDString, enderPearlPerms)) { return; } if (!info.IsProjectile()) { return; } //var weapon = info.Weapon.GetItem(); // ONLY WORKS FOR GUNS //Puts(info.WeaponPrefab.name); string entName = info.WeaponPrefab.name; if (entName != config.enderpearl) { return; } Teleport(attacker, info); }
public void Log(HitInfo info, float health_old, float health_new, string description = null) { uint d; uint num; string str; string str1; CombatLog.Event healthOld = new CombatLog.Event() { time = UnityEngine.Time.realtimeSinceStartup }; if (!info.Initiator || info.Initiator.net == null) { d = 0; } else { d = info.Initiator.net.ID; } healthOld.attacker_id = d; if (!info.HitEntity || info.HitEntity.net == null) { num = 0; } else { num = info.HitEntity.net.ID; } healthOld.target_id = num; if (this.player == info.Initiator) { str = "you"; } else { str = (info.Initiator ? info.Initiator.ShortPrefabName : "N/A"); } healthOld.attacker = str; if (this.player == info.HitEntity) { str1 = "you"; } else { str1 = (info.HitEntity ? info.HitEntity.ShortPrefabName : "N/A"); } healthOld.target = str1; healthOld.weapon = (info.WeaponPrefab ? info.WeaponPrefab.name : "N/A"); healthOld.ammo = (info.ProjectilePrefab ? info.ProjectilePrefab.name : "N/A"); healthOld.bone = info.boneName; healthOld.area = info.boneArea; healthOld.distance = (info.IsProjectile() ? info.ProjectileDistance : Vector3.Distance(info.PointStart, info.HitPositionWorld)); healthOld.health_old = health_old; healthOld.health_new = health_new; healthOld.info = (description != null ? description : string.Empty); this.Log(healthOld); }
public void Log(HitInfo info, float health_old, float health_new) { LogEvent(new CombatEvent { time = Time.realtimeSinceStartup, attacker_id = ((!info.Initiator || info.Initiator.net == null) ? 0u : info.Initiator.net.ID), victim_id = ((!info.HitEntity || info.HitEntity.net == null) ? 0u : info.HitEntity.net.ID), weapon = ((!info.WeaponPrefab) ? "N/A" : info.WeaponPrefab.name), ammo = ((!info.ProjectilePrefab) ? "N/A" : info.ProjectilePrefab.name), bone = info.boneName, area = info.boneArea, distance = ((!info.IsProjectile()) ? Vector3.Distance(info.PointStart, info.HitPositionWorld) : info.ProjectileDistance), health_old = health_old, health_new = health_new, }); }
public override void OnAttacked(HitInfo info) { if (this.isServer && info.WeaponPrefab is BaseMelee && !info.IsProjectile()) { BasePlayer initiator = info.Initiator as BasePlayer; if (Object.op_Implicit((Object)initiator) && (double)this.reflectDamage > 0.0) { initiator.Hurt(this.reflectDamage * Random.Range(0.75f, 1.25f), DamageType.Stab, (BaseEntity)this, true); if (this.reflectEffect.isValid) { Effect.server.Run(this.reflectEffect.resourcePath, (BaseEntity)initiator, StringPool.closest, ((Component)this).get_transform().get_position(), Vector3.get_up(), (Connection)null, false); } } } base.OnAttacked(info); }
public override void OnAttacked(HitInfo info) { if (base.isServer && info.WeaponPrefab is BaseMelee && !info.IsProjectile()) { BasePlayer initiator = info.Initiator as BasePlayer; if (initiator && this.reflectDamage > 0f) { initiator.Hurt(this.reflectDamage * UnityEngine.Random.Range(0.75f, 1.25f), DamageType.Stab, this, true); if (this.reflectEffect.isValid) { Effect.server.Run(this.reflectEffect.resourcePath, initiator, StringPool.closest, base.transform.position, Vector3.up, null, false); } } } base.OnAttacked(info); }
public void Log(HitInfo info, float health_old, float health_new, string description = null) { Event val = default(Event); val.time = UnityEngine.Time.realtimeSinceStartup; val.attacker_id = (((bool)info.Initiator && info.Initiator.net != null) ? info.Initiator.net.ID : 0u); val.target_id = (((bool)info.HitEntity && info.HitEntity.net != null) ? info.HitEntity.net.ID : 0u); val.attacker = ((player == info.Initiator) ? "you" : (info.Initiator ? info.Initiator.ShortPrefabName : "N/A")); val.target = ((player == info.HitEntity) ? "you" : (info.HitEntity ? info.HitEntity.ShortPrefabName : "N/A")); val.weapon = (info.WeaponPrefab ? info.WeaponPrefab.name : "N/A"); val.ammo = (info.ProjectilePrefab ? info.ProjectilePrefab.name : "N/A"); val.bone = info.boneName; val.area = info.boneArea; val.distance = (info.IsProjectile() ? info.ProjectileDistance : Vector3.Distance(info.PointStart, info.HitPositionWorld)); val.health_old = health_old; val.health_new = health_new; val.info = ((description != null) ? description : string.Empty); Log(val); }
public void Log(HitInfo info, float health_old, float health_new, string description = null) { this.Log(new CombatLog.Event() { time = Time.get_realtimeSinceStartup(), attacker_id = !Object.op_Implicit((Object)info.Initiator) || info.Initiator.net == null ? 0U : (uint)(int)info.Initiator.net.ID, target_id = !Object.op_Implicit((Object)info.HitEntity) || info.HitEntity.net == null ? 0U : (uint)(int)info.HitEntity.net.ID, attacker = Object.op_Equality((Object)this.player, (Object)info.Initiator) ? "you" : (Object.op_Implicit((Object)info.Initiator) ? info.Initiator.ShortPrefabName : "N/A"), target = Object.op_Equality((Object)this.player, (Object)info.HitEntity) ? "you" : (Object.op_Implicit((Object)info.HitEntity) ? info.HitEntity.ShortPrefabName : "N/A"), weapon = Object.op_Implicit((Object)info.WeaponPrefab) ? ((Object)info.WeaponPrefab).get_name() : "N/A", ammo = Object.op_Implicit((Object)info.ProjectilePrefab) ? ((Object)info.ProjectilePrefab).get_name() : "N/A", bone = info.boneName, area = info.boneArea, distance = info.IsProjectile() ? info.ProjectileDistance : Vector3.Distance(info.PointStart, info.HitPositionWorld), health_old = health_old, health_new = health_new, info = description != null ? description : string.Empty }); }
private void OnEntityTakeDamage(Door entity, HitInfo info) { if (info.Weapon == null || !info.IsProjectile() || info.InitiatorPlayer == null || !entity.PrefabName.Contains("wood") || !info.InitiatorPlayer.IPlayer.HasPermission(PermissionUse)) { return; } ArrowDamage BaseDamage; if (!_config.ArrowDamage.TryGetValue(info.ProjectilePrefab.name, out BaseDamage)) { return; } float Mult; if (!_config.BowMultipliers.TryGetValue(info.Weapon.ShortPrefabName, out Mult)) { Mult = 1; } info.damageTypes.Set(DamageType.Arrow, Random.Range(BaseDamage.MinDamage, BaseDamage.MaxDamage + 1) * Mult); }
private object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) { if (!ignoreProjectiles) { return(null); } BaseTrap trap = entity.GetComponent <BaseTrap>(); if (!trap) { return(null); } if (!info.IsProjectile()) { return(null); } BearTrap bearTrap = entity.GetComponent <BearTrap>(); if (bearTrap) { bearTrap.Arm(); } return(true); }
private object OnEntityTakeDamage(BaseCombatEntity anEntity, HitInfo aHitInfo) { if (!aHitInfo?.Weapon?.GetComponent <TaserController>()) { return(null); } aHitInfo.damageTypes.Clear(); aHitInfo.DoHitEffects = false; aHitInfo.DoDecals = false; if (aHitInfo.InitiatorPlayer && !permission.UserHasPermission(aHitInfo.InitiatorPlayer.UserIDString, PERMISSION_USETASER)) { return(true); } float theDistance = !aHitInfo.IsProjectile() ? Vector3.Distance(aHitInfo.PointStart, aHitInfo.HitPositionWorld) : aHitInfo.ProjectileDistance; if (config.TaserDistance > 0f && theDistance > config.TaserDistance) { aHitInfo.DidHit = false; return(true); } Effect.server.Run(config.PrefabShock, anEntity, aHitInfo.HitBone, aHitInfo.HitPositionLocal, aHitInfo.HitNormalLocal); aHitInfo.damageTypes.Add(DamageType.ElectricShock, config.TaserDamage); BasePlayer thePlayer = anEntity?.GetComponent <BasePlayer>(); if (thePlayer) { if (thePlayer.IsNpc) { if (aHitInfo.InitiatorPlayer && !permission.UserHasPermission(aHitInfo.InitiatorPlayer.UserIDString, PERMISSION_TASENPC)) { return(null); } if (config.InstantKillsNPCs) { thePlayer.Die(aHitInfo); return(null); } if (config.NPCBeltLocked) { thePlayer.inventory.containerBelt.SetLocked(true); } if (config.NPCWearLocked) { thePlayer.inventory.containerWear.SetLocked(true); } } ShockedController theController = thePlayer.GetComponent <ShockedController>(); if (!theController) { theController = thePlayer.gameObject.AddComponent <ShockedController>(); theController.Config = config; } NextFrame(() => theController.Shock(aHitInfo)); } return(null); }
private void OnPlayerDeath(BasePlayer victim, HitInfo hitInfo) { if (victim == null) { return; } if (hitInfo == null) { var wAttacker = victim.lastAttacker?.ToPlayer(); if (wAttacker != null && victim.IsWounded()) { OnDeathFromWounds(wAttacker, victim); } return; } if (IsTrap(hitInfo.Initiator)) { if (!_config.EnableEntityFeed) { return; } OnKilledByEnt(hitInfo.Initiator, victim); return; } if (IsAnimal(hitInfo.Initiator)) { if (!_config.EnableAnimalFeed) { return; } OnKilledByAnimal(hitInfo.Initiator, victim); return; } if (IsRadiation(hitInfo)) { if (!_config.EnableRadiationKills) { return; } OnKilledByRadiation(victim); return; } var distance = !hitInfo.IsProjectile() ? (int)Vector3.Distance(hitInfo.PointStart, hitInfo.HitPositionWorld) : (int)hitInfo.ProjectileDistance; var attacker = hitInfo.InitiatorPlayer; if (attacker == null) { return; } if (attacker == victim) { if (!_config.EnableSuicides) { return; } OnSuicide(victim); return; } if (IsExplosion(hitInfo)) { OnExploded(attacker, victim); } else if (IsFlame(hitInfo)) { OnBurned(attacker, victim); } else { OnKilled(attacker, victim, hitInfo, distance); } }
private void OnEntityTakeDamage(BaseEntity entity, HitInfo info) { var victim = entity.ToPlayer(); var attacker = info?.Initiator?.ToPlayer(); // Check if victim and attacker are invalid or equal if (victim == null || attacker == null || victim.Equals(attacker)) { return; } // Check if victim or attacker is an NPCPlayer (ie. murderer) if (entity is NPCPlayer || info.Initiator is NPCPlayer) { return; } // Check if victim or attacker is an NPCPlayerApex (ie. scientist) if (entity is NPCPlayerApex || info.Initiator is NPCPlayerApex) { return; } // Check if victim or attacker is a manually spawned BasePlayer if (victim.Connection == null || attacker.Connection == null) { return; } // Make sure player isn't using ranged weapons if (info.IsProjectile()) { return; } // Check if victim is protected from being mugged if (permission.UserHasPermission(victim.UserIDString, permProtection)) { return; } // Check if attacker is allowed to mug if (!permission.UserHasPermission(attacker.UserIDString, permMugging)) { return; } // Check if victim or attacker are in a loot zone, are friends, or share a clan if (InNoLootZone(victim, attacker) || IsFriend(victim, attacker) || IsClanmate(victim, attacker)) { return; } // Check for a cooldown and set one if it doesn't exist if (!cooldowns.ContainsKey(attacker.UserIDString)) { cooldowns.Add(attacker.UserIDString, 0f); } if (config.UsageCooldown != 0 && cooldowns[attacker.UserIDString] + config.UsageCooldown > Interface.Oxide.Now) { Player.Reply(attacker, Lang("Cooldown", attacker.UserIDString)); return; } // Check if config options are enabled for stealing if (config.ItemStealing) { StealItem(victim, attacker); } if (config.MoneyStealing) { StealMoney(victim, attacker); } if (config.PointStealing) { StealPoints(victim, attacker); } // Set time for next cooldown check cooldowns[attacker.UserIDString] = Interface.Oxide.Now; }
private object OnEntityTakeDamage(BaseCombatEntity Entity, HitInfo HitInfo) { if (Entity == null || !(Entity as BasePlayer) || HitInfo == null) { return(null); } var Attacker = HitInfo.InitiatorPlayer; var Victim = HitInfo.HitEntity as BasePlayer; if (Attacker == null || Victim == null || Victim.IsNpc) { return(null); } if (WoundedPlayers.Contains(Victim.userID)) { return(false); } if (!permission.UserHasPermission(Attacker.UserIDString, UseTaser)) { return(null); } if (!permission.UserHasPermission(Victim.UserIDString, TaserAffect) && config.AffectPermissionNeeded) { return(null); } var WeaponName = HitInfo.WeaponPrefab.ShortPrefabName; var WeaponAmmo = HitInfo.Weapon as BaseProjectile; if (WeaponName == null || WeaponAmmo == null) { return(null); } if (WeaponName != "pistol_semiauto.entity" || WeaponAmmo.primaryMagazine.ammoType != AmmoType) { return(null); } var Distance = !HitInfo.IsProjectile() ? (int)Vector3.Distance(HitInfo.PointStart, HitInfo.HitPositionWorld) : (int)HitInfo.ProjectileDistance; if (config.MaxDistance > 0 && Distance > config.MaxDistance) { return(null); } Victim.StartWounded(); WoundedPlayers.Add(Victim.userID); if (config.PlayScream) { Effect.server.Run(ScreamSound, Victim.transform.position); ScreamSoundTimer = timer.Every(3f, () => { if (Victim == null) { ScreamSoundTimer.Destroy(); } else { Effect.server.Run(ScreamSound, Victim.transform.position); } }); } timer.Once(config.WoundedTime, () => { Victim.StopWounded(); WoundedPlayers.Remove(Victim.userID); if (ScreamSoundTimer != null) { ScreamSoundTimer.Destroy(); } }); return(false); }
public AggressiveAction(HitInfo info) { if (info == null) { return; } // Get the source of the aggression if (info.Initiator != null) { if (info.InitiatorPlayer != null) { aggression_initiator = new Resident(info.InitiatorPlayer); } else { aggression_initiator = new Entity(info.Initiator); } } // Get the target of the agression BasePlayer player = info.HitEntity?.GetComponent <BasePlayer>(); if (player != null) { aggression_target = new Resident(player); } else if (info.HitEntity != null) { aggression_target = new Entity(info.HitEntity); } // Get the weapons name if (info.Weapon.ShortPrefabName != null) { weapon_name = info.Weapon.ShortPrefabName; weapon_prefab = info.Weapon.PrefabName; } if (info.material != null) { material_name = info.material.name; } if (info.hasDamage) { damage_name = info.damageProperties.name; damage_type = info.damageTypes.GetMajorityDamageType().ToString(); damage_delt = (int)info.damageTypes.Total(); is_attack = info.damageTypes.IsConsideredAnAttack(); } did_gather = info.DidGather; is_headshot = info.isHeadshot; if (info.IsProjectile()) { is_projectile = info.IsProjectile(); projectile_distance = info.ProjectileDistance; } }