public static bool PlayerHealed(Player player, ref byte amount, ref bool healBleeding, ref bool healBroken) { // TODO: Event! UFMHealthController healthController = player.gameObject.GetComponent <UFMHealthController>(); if (healthController != null) { healthController.Heal(amount); } return(false); }
public override TemplateObject Handle(TagData data) { if (data.Remaining == 0) { return(this); } switch (data[0]) { // <--[tag] // @Name PlayerTag.is_valid // @Group General Information // @ReturnType BooleanTag // @Returns whether the player is still online and valid. // @Example "bob" .is_valid returns "true". // --> case "is_valid": return(new BooleanTag(PlayerTool.getSteamPlayer(Internal.playerID.steamID) != null).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.name // @Group General Information // @ReturnType TextTag // @Returns the name of the player. // @Example "bob" .name returns "bob". // --> case "name": return(new TextTag(Internal.playerID.playerName).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.steam_id // @Group General Information // @ReturnType TextTag // @Returns the Steam ID number of the player. // @Example "bob" .steam_id returns "1000". // --> case "steam_id": return(new TextTag(Internal.playerID.steamID.ToString()).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.is_pro // @Group General Information // @ReturnType BooleanTag // @Returns whether the player is considered pro. // @Example "bob" .is_pro returns "true". // --> case "is_pro": return(new BooleanTag(Internal.isPro).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.agro // @Group Status // @ReturnType IntegerTag // @Returns the number of zombies agro'd by this player currently. // @Example "bob" .agro returns "5". // --> case "agro": return(new IntegerTag(Internal.player.agro).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.health // @Group Status // @ReturnType IntegerTag // @Returns the player's current health level. // @Example "bob" .health returns "56". // --> case "health": UFMHealthController healthController = Internal.player.gameObject.GetComponent <UFMHealthController>(); if (healthController != null) { return(new IntegerTag(healthController.health).Handle(data.Shrink())); } return(new IntegerTag(Internal.player.life.health).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.max_health // @Group Status // @ReturnType IntegerTag // @Returns the player's current maximum health level. // @Example "bob" .max_health returns "100". // --> case "max_health": UFMHealthController controller = Internal.player.gameObject.GetComponent <UFMHealthController>(); if (controller != null) { return(new IntegerTag(controller.maxHealth).Handle(data.Shrink())); } return(new IntegerTag(100).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.food // @Group Status // @ReturnType IntegerTag // @Returns the player's current food level. Maximum food level is 100. // @Example "bob" .food returns "89". // --> case "food": return(new IntegerTag(Internal.player.life.food).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.water // @Group Status // @ReturnType IntegerTag // @Returns the player's current water level. Maximum water level is 100. // @Example "bob" .water returns "74". // --> case "water": return(new IntegerTag(Internal.player.life.water).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.virus // @Group Status // @ReturnType IntegerTag // @Returns the player's current virus level. Maximum virus level is 100. // @Example "bob" .virus returns "37". // --> case "virus": return(new IntegerTag(Internal.player.life.virus).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.stamina // @Group Status // @ReturnType IntegerTag // @Returns the player's current stamina level. Maximum stamina level is 100. // @Example "bob" .stamina returns "13". // --> case "stamina": return(new IntegerTag(Internal.player.life.stamina).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.oxygen // @Group Status // @ReturnType IntegerTag // @Returns the player's current oxygen level. Maximum oxygen level is 100. // @Example "bob" .oxygen returns "42". // --> case "oxygen": return(new IntegerTag(Internal.player.life.oxygen).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.vision // @Group Status // @ReturnType IntegerTag // @Returns the player's current vision obscurity level, for example caused by berries. // @Example "bob" .vision returns "20". // --> case "vision": return(new IntegerTag(Internal.player.life.vision).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.is_bleeding // @Group Status // @ReturnType BooleanTag // @Returns whether the player is bleeding. // @Example "bob" .is_bleeding returns "false". // --> case "is_bleeding": return(new BooleanTag(Internal.player.life.isBleeding).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.is_broken // @Group Status // @ReturnType BooleanTag // @Returns whether the player has a broken limb. // @Example "bob" .is_broken returns "true". // --> case "is_broken": return(new BooleanTag(Internal.player.life.isBroken).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.temperature // @Group Status // @ReturnType TextTag // @Returns the player's current temperature. // @Example "bob" .temperature returns "COLD". // --> case "temperature": return(new TextTag(Internal.player.life.temperature.ToString()).Handle(data.Shrink())); // <--[tag] // @Name PlayerTag.experience // @Group Status // @ReturnType IntegerTag // @Returns the player's current experience points. // @Example "bob" .experience returns "5". // --> case "experience": return(new IntegerTag(Internal.player.skills.experience).Handle(data.Shrink())); case "inventory": return(new InventoryTag(Internal.player.inventory.items)); default: return(new EntityTag(Internal.player.gameObject).Handle(data)); } }
public static bool PlayerDamaged(Player player, ref uint amount, ref Vector3 ragdoll, ref EDeathCause deathCause, ref ELimb limb, CSteamID killer, object attacker, bool fromUFM) { TemplateObject attackerTag = null; if (killer != null && killer != CSteamID.Nil && killer != Provider.server) { SteamPlayer steamkiller = PlayerTool.getSteamPlayer(killer); if (steamkiller != null) { attackerTag = new PlayerTag(steamkiller); } } else if (attacker != null) { if (attacker is Animal) { attackerTag = new AnimalTag((Animal)attacker); } else if (attacker is Zombie) { attackerTag = new ZombieTag((Zombie)attacker); } } PlayerTag playerTag = new PlayerTag(player.channel.owner); UFMHealthController healthController = player.gameObject.GetComponent <UFMHealthController>(); uint health = healthController != null ? healthController.health : player.life.health; if (amount >= health) { PlayerDeathEventArgs deathevt = new PlayerDeathEventArgs(); deathevt.Player = playerTag; deathevt.Amount = new NumberTag(amount); deathevt.Cause = new TextTag(deathCause.ToString()); deathevt.Limb = new TextTag(limb.ToString()); deathevt.Killer = attackerTag; UnturnedFreneticEvents.OnPlayerDeath.Fire(deathevt); amount = (uint)deathevt.Amount.Internal; if (!deathevt.Cancelled && !EntityDeath(playerTag, ref amount) && healthController != null) { healthController.Damage(amount); player.life.ragdoll = ragdoll; amount = (uint)(((double)amount / healthController.maxHealth) * 100.0); return(false); } return(deathevt.Cancelled); } PlayerDamagedEventArgs evt = new PlayerDamagedEventArgs(); evt.Player = playerTag; evt.Amount = new NumberTag(amount); evt.Attacker = attackerTag; UnturnedFreneticEvents.OnPlayerDamaged.Fire(evt); amount = (uint)evt.Amount.Internal; if (!evt.Cancelled && !EntityDamaged(playerTag, ref amount) && healthController != null) { healthController.Damage(amount); player.life.ragdoll = ragdoll; amount = (uint)(((double)amount / healthController.maxHealth) * 100.0); return(false); } return(evt.Cancelled); }