private void OnPlayerTakesDamage(PlayerDamageEvent args) { try { SkillPlayer player = PlayerManager.GetPlayer(args.HurtPlayerIndex); SkillInformation info = player.GetSkillInformation(Name); if (info == null) { info = new SkillInformation() { Name = this.Name, Value = 0 }; player.SetSkillInformation(info); return; } if (info.Value > 0 && !args.PVP) { FireRocket(player, args.Damage, 1); } } catch (Exception e) { Console.WriteLine(e.Message); } }
internal void InvokePlayerDamageEvent(Player victim, Player killer, ref PlayerStats.HitInfo info, out bool allow) { var ev = new PlayerDamageEventArgs { HitInfo = info, Killer = killer, Victim = victim }; PlayerDamageEvent?.Invoke(ev); info = ev.HitInfo; allow = ev.Allow; }
internal void InvokePlayerDamageEvent(Player victim, Player killer, ref float damage, DamageType type, out bool allow) { var ev = new PlayerDamageEventArgs { Killer = killer, Victim = victim, Damage = damage, DamageType = type, }; PlayerDamageEvent?.Invoke(ev); damage = ev.Damage; allow = ev.Allow; }
public void DamagePlayer(int damage, EDamageCause cause, IEntity damagingEntity = null) { PlayerDamageEvent @event = new PlayerDamageEvent(Player); @event.Damage = damage; @event.DamageCausingEntity = damagingEntity; @event.DamageCause = cause; EventManager.Instance.CallEvent(@event); bool wasDead = IsDead; Health -= @event.Damage; if (IsDead && !wasDead) { OnPlayerDeath(@event.DamageCause, damagingEntity); } }
internal static void Postfix(PlayerManager __instance, float progress) { //WaterSupply waterSupply = AccessTools.Field(__instance.GetType(), "m_WaterSourceToDrinkFrom").GetValue(__instance) as WaterSupply; WaterSupply waterSupply = __instance.m_WaterSourceToDrinkFrom; if (waterSupply == null) { return; } GearItem gearItem = waterSupply.GetComponent <GearItem>(); if (gearItem.m_LiquidItem != null) { gearItem.m_LiquidItem.m_LiquidLiters = waterSupply.m_VolumeInLiters; Object.Destroy(waterSupply); gearItem.m_WaterSupply = null; } if (gearItem.m_CookingPotItem != null) { if (!WaterUtils.IsCooledDown(gearItem.m_CookingPotItem)) { //GameManager.GetPlayerManagerComponent().ApplyFreezingBuff(20 * progress, 0.5f, 1 * progress); GameManager.GetPlayerManagerComponent().ApplyFreezingBuff(20 * progress, 0.5f, 1 * progress, 24f); PlayerDamageEvent.SpawnAfflictionEvent("GAMEPLAY_WarmingUp", "GAMEPLAY_BuffHeader", "ico_injury_warmingUp", InterfaceManager.m_Panel_ActionsRadial.m_FirstAidBuffColor); } WaterUtils.SetWaterAmount(gearItem.m_CookingPotItem, waterSupply.m_VolumeInLiters); Object.Destroy(waterSupply); } if (waterSupply is WaterSourceSupply) { WaterSourceSupply waterSourceSupply = waterSupply as WaterSourceSupply; waterSourceSupply.UpdateWaterSource(); } Water.AdjustWaterSupplyToWater(); }
public static bool Prefix(Frostbite __instance, int location, bool displayIcon, bool nofx = false) { if (GameManager.GetPlayerManagerComponent().PlayerIsDead()) { return(false); } if (InterfaceManager.m_Panel_ChallengeComplete.IsEnabled()) { return(false); } GameManager.GetConditionComponent().AddHealth(-20f, DamageSource.FrostBite); var m_LocationsCurrentFrostbiteDamage = Traverse.Create(__instance).Field("m_LocationsCurrentFrostbiteDamage").GetValue <List <float> >(); List <float> locationsCurrentFrostbiteDamage = m_LocationsCurrentFrostbiteDamage; locationsCurrentFrostbiteDamage[location] *= 0.5f; if (!__instance.LocationIsIgnored(location)) { Utils.SendAnalyticsEvent("Affliction", "Frostbite"); StatsManager.IncrementValue(StatID.Frostbite); GameManager.GetLogComponent().AddAffliction(AfflictionType.Frostbite); } if (displayIcon && !nofx && !__instance.LocationIsIgnored(location)) { PlayerDamageEvent.SpawnDamageEvent(__instance.m_LocalizedDisplayName.m_LocalizationID, "GAMEPLAY_Affliction", "ico_injury_frostbite", InterfaceManager.m_Panel_ActionsRadial.m_FirstAidRedColor, true, InterfaceManager.m_Panel_HUD.m_DamageEventDisplaySeconds, InterfaceManager.m_Panel_HUD.m_DamageEventFadeOutSeconds); } if (!nofx) { GameManager.GetPlayerVoiceComponent().PlayCritical(__instance.m_FrostbiteVO); GameManager.TriggerSurvivalSaveAndDisplayHUDMessage(); } return(false); }
private void OnPlayerDoesDamage(PlayerDamageEvent args) { //hurt another player }