示例#1
0
        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);
            }
        }
示例#2
0
        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;
        }
示例#3
0
        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;
        }
示例#4
0
        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);
        }
示例#7
0
 private void OnPlayerDoesDamage(PlayerDamageEvent args)
 {
     //hurt another player
 }