private object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) { /* Remove all fall damage */ Rust.DamageType damageType = info.damageTypes.GetMajorityDamageType(); if (damageType == Rust.DamageType.Fall) { info.damageTypes.Set(damageType, 0); } switch (EID) { case GameModes.FreeForAll: break; case GameModes.GunGame: break; case GameModes.OneInTheChamber: break; case GameModes.Infected: break; } return(null); }
// BasePlayer.TakeDamage() public static void PlayerTakeDamage(BasePlayer player, float dmgAmount, Rust.DamageType dmgType) { // works? var ptd = new PlayerTakedmgEvent(new Player(player), dmgAmount, dmgType); OnPlayerTakeDamage.OnNext(ptd); }
void applyBlastDamage(BasePlayer player, float damageamount, Rust.DamageType damagetype, HitInfo hitInfo) { if (!hitInfo.ProjectilePrefab.ToString().Contains("arrow")) { return; } playerBlastDamage(player, damageamount, damagetype, hitInfo); }
bool IsDamageBlocking(Rust.DamageType dt) { switch (dt) { case Rust.DamageType.Bullet: case Rust.DamageType.Stab: case Rust.DamageType.Explosion: case Rust.DamageType.ElectricShock: return(true); } return(false); }
void playerBlastDamage(BasePlayer player, float damageamount, Rust.DamageType damagetype, HitInfo hitInfo) { List <BaseCombatEntity> playerlist = new List <BaseCombatEntity>(); Vis.Entities <BaseCombatEntity>(hitInfo.HitPositionWorld, DamageRadius, playerlist); foreach (BaseCombatEntity p in playerlist) { if (!(p is BuildingPrivlidge)) { p.Hurt(damageamount, damagetype, player, UseProt); } } }
void playerBlastDamage(BasePlayer player, float damageamount, Rust.DamageType damagetype, HitInfo hitInfo) { List <BaseCombatEntity> playerlist = new List <BaseCombatEntity>(); Vis.Entities <BaseCombatEntity>(hitInfo.HitPositionWorld, DamageRadius, playerlist); foreach (BaseCombatEntity p in playerlist) { if (!(p is BuildingPrivlidge)) { if (!hitInfo.ProjectilePrefab.ToString().Contains("arrow")) { return; } p.Hurt(damageamount, damagetype, player, UseProt); } } }
private float getDamageDeduction(BasePlayer player, Rust.DamageType damageType) { float dd = 0.0f; foreach (Item item in player.inventory.containerWear.itemList) { if (!item.isBroken) { if (item.info.shortname.Contains("hazmatsuit")) { if (damageType == Rust.DamageType.Drowned) { dd += (dmgdrowning / 100); } if (damageType == Rust.DamageType.Cold) { dd += (dmgcold / 100); } } } } return(dd); }
private void dealDamage(Vector3 deathPos, float damage, float radius, Rust.DamageType type) { List <BaseCombatEntity> entitiesClose = new List <BaseCombatEntity>(); List <BaseCombatEntity> entitiesNear = new List <BaseCombatEntity>(); List <BaseCombatEntity> entitiesFar = new List <BaseCombatEntity>(); Vis.Entities(deathPos, radius / 3, entitiesClose); Vis.Entities(deathPos, radius / 2, entitiesNear); Vis.Entities(deathPos, radius, entitiesFar); foreach (BaseCombatEntity entity in entitiesClose) { entity.Hurt(damage, type, null, true); notifyPlayer(entity); } foreach (BaseCombatEntity entity in entitiesNear) { if (entitiesClose.Contains(entity)) { return; } entity.Hurt(damage / 2, type, null, true); notifyPlayer(entity); } foreach (BaseCombatEntity entity in entitiesFar) { if (entitiesClose.Contains(entity) || entitiesNear.Contains(entity)) { return; } entity.Hurt(damage / 4, type, null, true); notifyPlayer(entity); } }
public PlayerTakedmgEvent(Player p, float amount, Rust.DamageType type) { Type = type; Amount = amount; Victim = p; }
public PlayerTakedmgEvent(Player p, float amount, Rust.DamageType type) { Type = type; Amount = amount; Victim = p; }
void applyBlastDamage(BasePlayer player, float damageamount, Rust.DamageType damagetype, HitInfo hitInfo) { playerBlastDamage(player, damageamount, damagetype, hitInfo); }
private float getDamageDeduction(BasePlayer player, Rust.DamageType damageType) { float dd = 0.0f; foreach (Item i in player.inventory.containerWear.itemList) { if (!i.isBroken) { if (i.info.name.ToLower().Contains("hazmat_helmet.item")) { //PrintToChat(player, "damageArmour "+damageArmour, new object[0]); if (damageType == Rust.DamageType.Drowned) { dd += head; } if (damageType == Rust.DamageType.Cold) { dd += chead; } } if (i.info.name.ToLower().Contains("hazmat_jacket.item")) { if (damageType == Rust.DamageType.Drowned) { dd += chest; } if (damageType == Rust.DamageType.Cold) { dd += cchest; } } if (i.info.name.ToLower().Contains("hazmat_pants.item")) { if (damageType == Rust.DamageType.Drowned) { dd += pants; } if (damageType == Rust.DamageType.Cold) { dd += cpants; } } if (i.info.name.ToLower().Contains("hazmat_gloves.item")) { if (damageType == Rust.DamageType.Drowned) { dd += gloves; } if (damageType == Rust.DamageType.Cold) { dd += cgloves; } } if (i.info.name.ToLower().Contains("hazmat_boots.item")) { if (damageType == Rust.DamageType.Drowned) { dd += boots; } if (damageType == Rust.DamageType.Cold) { dd += cboots; } } } } return(dd); }
private float GetDamageDeduction(BasePlayer player, Rust.DamageType damageType) { var deduction = 0.0f; foreach (var item in player.inventory.containerWear.itemList) { if (item.isBroken) { continue; } if (item.info.name.ToLower().Contains("hazmat_suit.item")) { if (damageType == Rust.DamageType.Drowned) { deduction += 0.8f; } if (damageType == Rust.DamageType.Cold) { deduction += 0.8f; } } if (item.info.name.ToLower().Contains("hazmat_helmet.item")) { if (damageType == Rust.DamageType.Drowned) { deduction += 0.3f; } if (damageType == Rust.DamageType.Cold) { deduction += 0.3f; } } if (item.info.name.ToLower().Contains("hazmat_jacket.item")) { if (damageType == Rust.DamageType.Drowned) { deduction += 0.2f; } if (damageType == Rust.DamageType.Cold) { deduction += 0.2f; } } if (item.info.name.ToLower().Contains("hazmat_pants.item")) { if (damageType == Rust.DamageType.Drowned) { deduction += 0.2f; } if (damageType == Rust.DamageType.Cold) { deduction += 0.2f; } } if (item.info.name.ToLower().Contains("hazmat_gloves.item")) { if (damageType == Rust.DamageType.Drowned) { deduction += 0.05f; } if (damageType == Rust.DamageType.Cold) { deduction += 0.05f; } } if (item.info.name.ToLower().Contains("hazmat_boots.item")) { if (damageType == Rust.DamageType.Drowned) { deduction += 0.05f; } if (damageType == Rust.DamageType.Cold) { deduction += 0.05f; } } } return(deduction); }
void OnPlayerAttack(BasePlayer attacker, HitInfo info) { if (isStarted && (playerList.Contains(attacker) || playerList2.Contains(attacker))) { switch (EID) { case GameModes.FreeForAll: break; case GameModes.GunGame: try { Rust.DamageType hit = info.damageTypes.GetMajorityDamageType(); BasePlayer victim = info.HitEntity.ToPlayer(); //PrintToChat(playerNumbers[playerList.LastIndexOf(attacker)].ToString()); if (playerNumbers[playerList.LastIndexOf(attacker)] == GGWeapons.Count - 1) { PrintToChat(attacker.displayName + " has won " + gameModes[ID] + "!"); reset(); victim.DieInstantly(); } else if (hit == Rust.DamageType.Slash || hit == Rust.DamageType.Fun_Water) { victim.DieInstantly(); if (playerNumbers[playerList.LastIndexOf(victim)] > 0) { playerNumbers[playerList.LastIndexOf(victim)] -= 1; } } } catch { } break; case GameModes.OneInTheChamber: try { if (playerList.Contains(info.HitEntity.ToPlayer())) // If attack hit player { BasePlayer target = info.HitEntity.ToPlayer(); playerNumbers2[playerList.LastIndexOf(target)] -= 1; playerNumbers[playerList.LastIndexOf(attacker)] += 1; PrintToChat(target, playerNumbers2[playerList.LastIndexOf(target)] + " lives left."); if (playerNumbers2[playerList.LastIndexOf(target)] <= 0) // If player is out of lives { PrintToChat(target, "Out of lives!"); playerList.Remove(target); } target.DieInstantly(); if (playerList.Count == 1) // If one player remains { int winner = 0; int index = 0; for (int i = 0; i < playerNumbers.Count; i++) { if (winner < playerNumbers[i]) { winner = playerNumbers[i]; index = i; } } PrintToChat(playerList2[index].displayName + " has won with " + playerNumbers[index].ToString() + " kills!"); reset(); } else { /* Weird memory work around */ List <Item> belt = attacker.inventory.containerBelt.FindItemsByItemID(-852563019); Item gun = ItemManager.CreateByItemID(-852563019); BaseProjectile newGun = gun.GetHeldEntity() as BaseProjectile; BaseProjectile oldGun = belt[0].GetHeldEntity() as BaseProjectile; newGun.primaryMagazine.contents = oldGun.primaryMagazine.contents; strip(attacker); attacker.inventory.GiveItem(incAmmo(gun)); attacker.GiveItem(ItemManager.CreateByItemID(2040726127)); // combat 12 wipe(); } } } catch { } break; case GameModes.Infected: try { if (playerList.Contains(info.HitEntity.ToPlayer()) && playerList.Contains(attacker) || playerList2.Contains(info.HitEntity.ToPlayer()) && playerList2.Contains(attacker)) // If attack hit a player of the same team { info.damageTypes.ScaleAll(0); } else if (info.damageTypes.GetMajorityDamageType() == Rust.DamageType.Slash || info.damageTypes.GetMajorityDamageType() == Rust.DamageType.Fun_Water || info.damageTypes.GetMajorityDamageType() == Rust.DamageType.Arrow) { info.HitEntity.ToPlayer().DieInstantly(); wipe(); if (playerList.Contains(info.HitEntity.ToPlayer())) { playerList.Remove(info.HitEntity.ToPlayer()); playerList2.Add(info.HitEntity.ToPlayer()); } if (playerList.Count == 0) { PrintToChat("Final kill: " + attacker.displayName + " killed " + info.HitEntity.ToPlayer().displayName); cleanPlayers(); reset(); } } } catch { } break; } } }