public virtual void DealDamage(Enemy target) { Random rand = new Random(); int RandFactor = rand.Next(1, UsingWeapon.RandFactor); double DMGBuffModificator; if (BuffCD == 0) { DMGBuffModificator = 1; } else { DMGBuffModificator = 1.3; } if ((rand.Next(1, 100) <= UsingWeapon.MissChance) || (rand.Next(1, 100) <= target.EvasionChance)) { PlayerDamageInfo?.Invoke(this, new TargetEventArgs(false, "You MISSED!")); target.Health -= 0; } else { if (rand.Next(1, 100) <= UsingWeapon.CritChance) { PlayerDamageInfo?.Invoke(this, new TargetEventArgs(true, "CRIT!", Damage * 2, RandFactor * 2, EvadeChance, DMGBuffModificator, CritModifier, target.Armor)); target.Health -= Convert.ToInt32((((UsingWeapon.Damage + RandFactor) * DMGBuffModificator * CritModifier) + ((UsingWeapon.Damage + RandFactor) * DMGBuffModificator * CritModifier * target.Armor / 1000))); } else { PlayerDamageInfo?.Invoke(this, new TargetEventArgs(true, "Hit!", Damage, RandFactor, EvadeChance, DMGBuffModificator, CritModifier, target.Armor)); target.Health -= Convert.ToInt32((((UsingWeapon.Damage + RandFactor)) * DMGBuffModificator + (target.Armor / 1000 * ((UsingWeapon.Damage + RandFactor) * DMGBuffModificator)))); } } }
public void KillPlayer(PlayerEntity source, PlayerEntity target, PlayerDamageInfo damage) { if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.KILL_PLAYER)) { if (source != null) { args.TempUse("killer", (FreeData)source.freeData.FreeData); } args.TempUse("killed", (FreeData)target.freeData.FreeData); SimpleParaList dama = new SimpleParaList(); dama.AddFields(new ObjectFields(damage)); SimpleParable sp = new SimpleParable(dama); args.TempUse("damage", sp); this.args.Triggers.Trigger(FreeTriggerConstant.KILL_PLAYER, args); if (source != null) { args.Resume("killer"); } args.Resume("killed"); args.Resume("damage"); } if (source != null) { source.statisticsData.Statistics.SetSrcDataByDamageInfo(damage); } if (target != null) { target.statisticsData.Statistics.SetTarDataByDamageInfo(damage); } }
public static void SetTarDataByDamageInfo(this StatisticsData data, PlayerDamageInfo damage) { switch ((EUIDeadType)damage.type) { case EUIDeadType.Bombing: data.KillByAirBomb = true; break; case EUIDeadType.Drown: data.Drown = true; break; case EUIDeadType.Fall: data.DropDead = true; break; case EUIDeadType.Poison: data.PoisionDead = true; break; case EUIDeadType.VehicleHit: data.KillByVehicle = true; break; case EUIDeadType.Weapon: data.KillByPlayer = true; break; case EUIDeadType.Unarmed: data.KillByPlayer = true; break; } }
public override void DoAction(IEventArgs args) { FreeRuleEventArgs fr = (FreeRuleEventArgs)args; PlayerEntity player = (PlayerEntity)fr.GetEntity(target); if (player != null) { if (player.gamePlay.IsDead()) { return; } PlayerEntity sourcePlayer = null; if (!string.IsNullOrEmpty(source)) { sourcePlayer = (PlayerEntity)fr.GetEntity(source); } if (string.IsNullOrEmpty(part)) { part = ((int)EBodyPart.Chest).ToString(); } PlayerDamageInfo damageInfo = new PlayerDamageInfo(FreeUtil.ReplaceFloat(damage, args), FreeUtil.ReplaceInt(type, args), FreeUtil.ReplaceInt(part, args), 0, false, false, FreeUtil.ReplaceBool(dead, args)); BulletPlayerUtility.DoProcessPlayerHealthDamage(args.GameContext, (IGameRule)fr.Rule, sourcePlayer, player, damageInfo, null); } }
public virtual void TakeDamage(PlayerDamageInfo damageInfo) { if (OnTakeDamageEvent != null) { OnTakeDamageEvent.Invoke(damageInfo); } }
private static float ReduceDamage(IEventArgs args, FreeData fd, PlayerDamageInfo damage, ItemPosition ip, int percent, ItemType itemType) { if (ip != null) { float realDamage = damage.damage; float reduce = damage.damage * percent / 100; float realReduce = reduce; damage.damage -= realReduce; fd.Player.statisticsData.Statistics.DefenseDamage += reduce; // 普通帽子不减少 if (reduce > 0) { ip.SetCount(ip.GetCount() - (int)realDamage); UpdateGamePlayData(fd, ip, itemType); args.TempUse("current", fd); if (ip.GetCount() <= 0) { ip.GetInventory().RemoveItem((FreeRuleEventArgs)args, ip); FuntionUtil.Call(args, "showBottomTip", "msg", "{desc:10075," + ip.key.GetName() + "}"); } else { ip.GetInventory().GetInventoryUI().UpdateItem((FreeRuleEventArgs)args, ip.GetInventory(), ip); } args.Resume("current"); } } return(damage.damage); }
void Tick(float deltaSec) { if (_targetNode == null) { return; } var enemiesAttackList = nodesDB.QueryNodes <EnemyNode>(); for (int enemyIndex = enemiesAttackList.Count - 1; enemyIndex >= 0; --enemyIndex) { var enemyAttackNode = enemiesAttackList[enemyIndex]; if (enemyAttackNode.attackComponent.targetInRange == true) { var attackDamageComponent = enemyAttackNode.attackDamageComponent; attackDamageComponent.timer += deltaSec; if (attackDamageComponent.timer >= attackDamageComponent.attackInterval) { attackDamageComponent.timer = 0.0f; var damageInfo = new PlayerDamageInfo(attackDamageComponent.damage, Vector3.zero, _targetNode.ID); _targetDamageSequence.Next(this, ref damageInfo); } } } }
public void Step(ref PlayerDamageInfo token, Enum condition) { if ((DamageCondition)condition == DamageCondition.dead) { OnTargetDead(token.entityDamaged); } }
public override void TakeDamage(PlayerDamageInfo damageInfo) { base.TakeDamage(damageInfo); GameController.Instance.ObservableScore.Item += EnemyController.Config.ScorePrice; EnemyController.Die(); Debug.Log("TakeDamage"); }
public static float HandleDamage(IEventArgs args, FreeData fd, PlayerDamageInfo damage) { float readDamage = damage.damage; if (damage.type != (int)EUIDeadType.Weapon && damage.type != (int)EUIDeadType.Unarmed) { return(readDamage); } if (damage.part == (int)EBodyPart.Head) { ItemPosition ip = GetHelmet(fd); if (ip != null) { FreeItemInfo info = FreeItemConfig.GetItemInfo(ip.key.GetKey()); int percent = 0; if (info.id == 8) { percent = 30; } if (info.id == 9) { percent = 40; } else if (info.id == 10) { percent = 55; } readDamage = ReduceDamage(args, fd, damage, ip, percent, ItemType.Helmet); } } else if (damage.part == (int)EBodyPart.Chest || damage.part == (int)EBodyPart.Stomach || damage.part == (int)EBodyPart.Pelvis) { ItemPosition ip = GetArmor(fd); if (ip != null) { FreeItemInfo info = FreeItemConfig.GetItemInfo(ip.key.GetKey()); int percent = 0; if (info.id == 1) { percent = 30; } if (info.id == 2) { percent = 40; } else if (info.id == 3) { percent = 55; } readDamage = ReduceDamage(args, fd, damage, ip, percent, ItemType.Armor); } } return(readDamage); }
void OnDamageEvent(ref PlayerDamageInfo damaged) { var damageComponent = _guiNode.damageImageComponent; var damageImage = damageComponent.damageImage; damageImage.color = damageComponent.flashColor; _guiNode.healthSliderComponent.healthSlider.value = nodesDB.QueryNode <HUDDamageEventNode>(damaged.entityDamaged).healthComponent.currentHealth; }
private static float ReduceDamage(IEventArgs args, PlayerEntity player, PlayerDamageInfo damage, int percent, bool armor) { float readDamage = damage.damage; if (damage.type != (int)EUIDeadType.Weapon && damage.type != (int)EUIDeadType.Unarmed) { return(readDamage); } float reduce = damage.damage * percent / 100; float realReduce = reduce; if (armor) { realReduce = Math.Min(player.gamePlay.CurArmor, reduce); } else { realReduce = Math.Min(player.gamePlay.CurHelmet, reduce); } damage.damage -= realReduce; FreeData fd = (FreeData)player.freeData.FreeData; // 普通帽子不减少 args.TempUse("current", fd); if (realReduce > 0) { if (armor) { player.gamePlay.CurArmor = Math.Max(0, player.gamePlay.CurArmor - (int)readDamage); if (player.gamePlay.CurArmor == 0) { PlayerItemAvatarAction.TakeOff(player, player.gamePlay.ArmorLv); FreeItemInfo info = FreeItemConfig.GetItemInfo((int)ECategory.Avatar, player.gamePlay.ArmorLv); FuntionUtil.Call(args, "showBottomTip", "msg", "{desc:10075," + info.name + "}"); } } else { player.gamePlay.CurHelmet = Math.Max(0, player.gamePlay.CurHelmet - (int)readDamage); if (player.gamePlay.CurHelmet == 0) { PlayerItemAvatarAction.TakeOff(player, player.gamePlay.HelmetLv); FreeItemInfo info = FreeItemConfig.GetItemInfo((int)ECategory.Avatar, player.gamePlay.HelmetLv); FuntionUtil.Call(args, "showBottomTip", "msg", "{desc:10075," + info.name + "}"); } } player.statisticsData.Statistics.DefenseDamage += realReduce; } args.Resume("current"); return(damage.damage); }
public void Step(ref PlayerDamageInfo token, Enum condition) { if ((DamageCondition)condition == DamageCondition.damage) { OnDamageEvent(ref token); } else if ((DamageCondition)condition == DamageCondition.dead) { OnDeadEvent(); } }
public static void DoProcessPlayerHealthDamage(Contexts contexts, IGameRule gameRule, PlayerEntity srcPlayer, PlayerEntity playerEntity, PlayerDamageInfo damage) { List <PlayerEntity> teamList = OnePlayerHealthDamage(contexts, gameRule, srcPlayer, playerEntity, damage, false); if (null != teamList) { //队友 foreach (PlayerEntity other in teamList) { PlayerDamageInfo damageInfo = new PlayerDamageInfo(other.gamePlay.InHurtedHp, (int)EUIDeadType.NoHelp, (int)EBodyPart.Chest, 0, false, false, true); OnePlayerHealthDamage(contexts, gameRule, null, other, damageInfo, true); } } }
private void HandleKill(IEventArgs args) { if (code == "KillInfo") { SimpleProto message = FreePool.Allocate(); message.Key = FreeMessageConstant.ScoreInfo; message.Ks.Add(3); message.Bs.Add(true); PlayerDamageInfo damageInfo = GetDamageInfo(args); //击杀者姓名 if (args.GetUnit("killer") == null) { message.Ss.Add(""); message.Ds.Add(-1); message.Ins.Add(0); message.Ins.Add(damageInfo.KillType); message.Ins.Add(damageInfo.KillFeedbackType); } else { //击杀者姓名 message.Ss.Add(FreeUtil.ReplaceVar("{killer.PlayerName}", args)); //击杀者队伍ID message.Ds.Add(FreeUtil.ReplaceDouble("{killer.TeamId}", args)); //击杀者武器ID message.Ins.Add(damageInfo.weaponId); //击杀方式 message.Ins.Add(damageInfo.KillType); //击杀反馈 message.Ins.Add(damageInfo.KillFeedbackType); } //死者姓名 message.Ss.Add(FreeUtil.ReplaceVar("{killed.PlayerName}", args)); //死者队伍ID message.Ds.Add(FreeUtil.ReplaceDouble("{killed.TeamId}", args)); //死亡方式 message.Ins.Add(damageInfo.type); // Debug.Log("KillInfo ..." + message.ToString()); SendMessageAction.sender.SendMessage(args, message, 4, string.Empty); } }
public static void SetSrcDataByDamageInfo(this StatisticsData data, PlayerDamageInfo damage) { switch (damage.WeaponType) { case EWeaponSubType.BurnBomb: case EWeaponSubType.Grenade: case EWeaponSubType.FlashBomb: case EWeaponSubType.FogBomb: case EWeaponSubType.Throw: data.KillWithThrowWeapon += 1; break; case EWeaponSubType.Hand: case EWeaponSubType.Melee: data.KillWithMelee += 1; break; case EWeaponSubType.MachineGun: data.KillWithMachineGun += 1; break; case EWeaponSubType.Pistol: data.KillWithPistol += 1; break; case EWeaponSubType.ShotGun: data.KillWithShotGun += 1; break; case EWeaponSubType.Sniper: data.KillWithSniper += 1; break; case EWeaponSubType.SubMachineGun: data.KillWithSubmachineGun += 1; break; case EWeaponSubType.Rifle: case EWeaponSubType.AccurateRifle: data.KillWithRifle += 1; break; default: break; } }
private void HandleBioDamage(IEventArgs args) { if (code == "BioDamage") { SimpleProto message = FreePool.Allocate(); message.Key = FreeMessageConstant.ScoreInfo; message.Ks.Add(3); message.Bs.Add(true); PlayerDamageInfo damageInfo = GetDamageInfo(args); IParable source = args.GetUnit("source"); if (null == source) { return; } FreeData freeData = (FreeData)args.GetUnit("source"); if (null == freeData) { return; } int jobAttribute = 0; if (freeData.Player.hasGamePlay) { jobAttribute = freeData.Player.gamePlay.JobAttribute; } if (jobAttribute == (int)EJobAttribute.EJob_EveryMan || jobAttribute == (int)EJobAttribute.EJob_Hero) { return; } message.Ss.Add(FreeUtil.ReplaceVar("{source.PlayerName}", args)); message.Ds.Add(FreeUtil.ReplaceDouble("{source.TeamId}", args)); message.Ins.Add(damageInfo.weaponId); message.Ins.Add(damageInfo.KillType); message.Ins.Add(damageInfo.KillFeedbackType); message.Ss.Add(FreeUtil.ReplaceVar("{target.PlayerName}", args)); message.Ds.Add(FreeUtil.ReplaceDouble("{target.TeamId}", args)); message.Ins.Add(damageInfo.type); SendMessageAction.sender.SendMessage(args, message, 4, string.Empty); } }
public override void DoAction(IEventArgs args) { FreeRuleEventArgs fr = (FreeRuleEventArgs)args; PlayerEntity player = (PlayerEntity)fr.GetEntity(target); if (player != null) { if (player.gamePlay.IsDead()) { return; } PlayerEntity sourcePlayer = null; UnitPosition up = null; try { if (!string.IsNullOrEmpty(source)) { sourcePlayer = (PlayerEntity)fr.GetEntity(source); } if (string.IsNullOrEmpty(part)) { part = ((int)EBodyPart.Chest).ToString(); } if (pos != null) { up = pos.Select(args); } } catch (Exception e) { Logger.Error("PlayerHurtAction handle error" + e.Message); } PlayerDamageInfo damageInfo = new PlayerDamageInfo(FreeUtil.ReplaceFloat(damage, args), FreeUtil.ReplaceInt(type, args), FreeUtil.ReplaceInt(part, args), 0, false, false, FreeUtil.ReplaceBool(dead, args), up != null ? player.position.Value : Vector3.zero, up != null ? player.position.Value - up.Vector3 : Vector3.zero); BulletPlayerUtil.DoProcessPlayerHealthDamage(args.GameContext, (IGameRule)fr.Rule, sourcePlayer, player, damageInfo); } }
private void ShootCore(Vector3 position) { Camera cam = Camera.main; Ray ray = cam.ScreenPointToRay(position); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { EnemyController enemy = hit.collider.gameObject.GetComponent <EnemyController>(); if (enemy != null) { PlayerDamageInfo damageInfo = new PlayerDamageInfo(Player, enemy); enemy.TakeDamage(damageInfo); } base.Shoot(); } }
private void HandleArmor(IEventArgs args) { if ("ReduceDamage" == code) { FreeData fd = (FreeData)args.GetUnit("target"); if (fd != null) { SimpleParable sp = (SimpleParable)args.GetUnit("damage"); if (sp != null) { PlayerDamageInfo info = (PlayerDamageInfo)((ObjectFields)((SimpleParaList)sp.GetParameters()).GetFieldList()[0]).GetObj(); float da = ReduceDamageUtil.HandleDamage(args, fd, info); FloatPara d = (FloatPara)args.GetDefault().GetParameters().Get("damage"); if (d != null) { d.SetValue(da); } } } } }
public float HandleDamage(PlayerEntity source, PlayerEntity target, PlayerDamageInfo damage) { if (damagePara == null) { damagePara = new FloatPara("damage", damage.damage); } damagePara.SetValue(Math.Min(damage.damage, target.gamePlay.CurModeHp)); if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.DAMAGE)) { if (source != null) { args.TempUse("source", (FreeData)source.freeData.FreeData); } args.TempUse("target", (FreeData)target.freeData.FreeData); SimpleParaList dama = new SimpleParaList(); dama.AddFields(new ObjectFields(damage)); SimpleParable sp = new SimpleParable(dama); args.TempUse("damage", sp); args.TempUsePara(damagePara); this.args.Triggers.Trigger(FreeTriggerConstant.DAMAGE, args); if (source != null) { args.Resume("source"); } args.Resume("target"); args.Resume("damage"); args.ResumePara("damage"); } return((float)damagePara.GetValue()); }
public override void DoAction(IEventArgs args) { FreeData fd = (FreeData)args.GetUnit("target"); if (fd != null) { SimpleParable damage = (SimpleParable)args.GetUnit("damage"); if (damage != null) { PlayerDamageInfo info = (PlayerDamageInfo)damage.GetFieldObject(0); WeaponAllConfigs configs = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(info.weaponId); if (configs != null) { int time = configs.InitWeaponAllConfig.RigidityDuration; int per = configs.InitWeaponAllConfig.RigidityEffect; fd.EffectBufs.AddEffect(RigidityEffect, (float)per / 100, time, args); } } } }
private void ReduceDamage(IEventArgs args, PlayerEntity player) { SimpleParable sp = (SimpleParable)args.GetUnit("damage"); if (sp != null) { PlayerDamageInfo damage = (PlayerDamageInfo)sp.GetFieldObject(0); float da = damage.damage; if (damage.part == (int)EBodyPart.Head) { int helId = player.gamePlay.HelmetLv; if (armorDic.ContainsKey(helId)) { ArmorData ad = armorDic[helId]; da = ReduceDamage(args, player, damage, ad.reduce, false); } } else if (damage.part == (int)EBodyPart.Chest || damage.part == (int)EBodyPart.Stomach || damage.part == (int)EBodyPart.Pelvis) { int armor = player.gamePlay.ArmorLv; if (armorDic.ContainsKey(armor)) { ArmorData ad = armorDic[armor]; da = ReduceDamage(args, player, damage, ad.reduce, true); } } FloatPara d = (FloatPara)args.GetDefault().GetParameters().Get("damage"); if (d != null) { d.SetValue(da); } } }
public void TakeDamage(PlayerDamageInfo damageInfo) { Config.EnemyTakeDamage.TakeDamage(damageInfo); }
public static float HandleDamage(IEventArgs args, FreeData fd, PlayerDamageInfo damage) { float readDamage = damage.damage; if (damage.type != (int)EUIDeadType.Weapon && damage.type != (int)EUIDeadType.Unarmed) { return(readDamage); } PlayerEntity playerEntity = fd.Player; if (playerEntity.gamePlay.CurHelmet > 0) { var config = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(playerEntity.gamePlay.HelmetLv); if (config != null) { if (config.NewWeaponCfg.ProtectivePartsList.Contains(damage.part)) { float reduce = readDamage * config.NewWeaponCfg.DamageReduction / 100; reduce = Math.Min(playerEntity.gamePlay.CurHelmet, reduce); playerEntity.gamePlay.CurHelmet = Math.Max(0, playerEntity.gamePlay.CurHelmet - (int)readDamage); if (reduce > 0 && playerEntity.gamePlay.CurHelmet == 0) { playerEntity.gamePlay.HelmetLv = playerEntity.gamePlay.MaxHelmet = 0; SimpleProto msg = FreePool.Allocate(); msg.Key = FreeMessageConstant.ChickenTip; msg.Ss.Add("word75," + config.NewWeaponCfg.Name); FreeMessageSender.SendMessage(playerEntity, msg); } ItemPosition ip = GetHelmet(fd); if (ip != null) { args.TempUse("current", (FreeData)playerEntity.freeData.FreeData); if (playerEntity.gamePlay.CurHelmet == 0) { ip.GetInventory().RemoveItem((FreeRuleEventArgs)args, ip); } else { ip.SetCount(playerEntity.gamePlay.CurHelmet); ip.GetInventory().GetInventoryUI().UpdateItem((FreeRuleEventArgs)args, ip.GetInventory(), ip); } args.Resume("current"); } damage.damage -= reduce; readDamage = damage.damage; playerEntity.statisticsData.Statistics.DefenseDamage += reduce; } } } if (playerEntity.gamePlay.CurArmor > 0) { var config = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(playerEntity.gamePlay.ArmorLv); if (config != null) { if (config.NewWeaponCfg.ProtectivePartsList.Contains(damage.part)) { float reduce = readDamage * config.NewWeaponCfg.DamageReduction / 100; reduce = Math.Min(playerEntity.gamePlay.CurArmor, reduce); playerEntity.gamePlay.CurArmor = Math.Max(0, playerEntity.gamePlay.CurArmor - (int)readDamage); if (reduce > 0 && playerEntity.gamePlay.CurArmor == 0) { playerEntity.gamePlay.ArmorLv = playerEntity.gamePlay.MaxArmor = 0; SimpleProto msg = FreePool.Allocate(); msg.Key = FreeMessageConstant.ChickenTip; msg.Ss.Add("word75," + config.NewWeaponCfg.Name); FreeMessageSender.SendMessage(playerEntity, msg); } ItemPosition ip = GetArmor(fd); if (ip != null) { args.TempUse("current", (FreeData)playerEntity.freeData.FreeData); if (playerEntity.gamePlay.CurArmor == 0) { ip.GetInventory().RemoveItem((FreeRuleEventArgs)args, ip); } else { ip.SetCount(playerEntity.gamePlay.CurArmor); ip.GetInventory().GetInventoryUI().UpdateItem((FreeRuleEventArgs)args, ip.GetInventory(), ip); } args.Resume("current"); } damage.damage -= reduce; readDamage = damage.damage; playerEntity.statisticsData.Statistics.DefenseDamage += reduce; } } } return(readDamage); }
public void OnPlayerDamage(PlayerEntity sourcePlayer, PlayerEntity targetPlayer, PlayerDamageInfo damage) { BulletPlayerUtility.ProcessPlayerHealthDamage(_contexts, _damager, sourcePlayer, targetPlayer, damage); }
public override void DoAction(IEventArgs args) { PlayerEntity playerEntity = GetPlayerEntity(args); if (playerEntity != null) { SimpleParable sp = (SimpleParable)args.GetUnit("damage"); if (sp != null) { FloatPara d = (FloatPara)args.GetDefault().GetParameters().Get("damage"); PlayerDamageInfo damage = (PlayerDamageInfo)sp.GetFieldObject(0); if (damage.type != (int)EUIDeadType.Weapon && damage.type != (int)EUIDeadType.Unarmed) { return; } if (playerEntity.gamePlay.CurHelmet > 0) { var config = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(playerEntity.gamePlay.HelmetLv); if (config != null) { if (config.NewWeaponCfg.ProtectivePartsList.Contains(damage.part)) { float readDamage = damage.damage; float reduce = readDamage * config.NewWeaponCfg.DamageReduction / 100; reduce = Math.Min(playerEntity.gamePlay.CurHelmet, reduce); playerEntity.gamePlay.CurHelmet = Math.Max(0, playerEntity.gamePlay.CurHelmet - (int)readDamage); if (reduce > 0 && playerEntity.gamePlay.CurHelmet == 0) { playerEntity.gamePlay.HelmetLv = playerEntity.gamePlay.MaxHelmet = 0; SimpleProto msg = FreePool.Allocate(); msg.Key = FreeMessageConstant.ChickenTip; msg.Ss.Add("word75," + config.NewWeaponCfg.Name); FreeMessageSender.SendMessage(playerEntity, msg); } damage.damage -= reduce; playerEntity.statisticsData.Statistics.DefenseDamage += reduce; d.SetValue(damage.damage); } } } if (playerEntity.gamePlay.CurArmor > 0) { var config = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(playerEntity.gamePlay.ArmorLv); if (config != null) { if (config.NewWeaponCfg.ProtectivePartsList.Contains(damage.part)) { float readDamage = damage.damage; float reduce = readDamage * config.NewWeaponCfg.DamageReduction / 100; reduce = Math.Min(playerEntity.gamePlay.CurArmor, reduce); playerEntity.gamePlay.CurArmor = Math.Max(0, playerEntity.gamePlay.CurArmor - (int)readDamage); if (reduce > 0 && playerEntity.gamePlay.CurArmor == 0) { playerEntity.gamePlay.ArmorLv = playerEntity.gamePlay.MaxArmor = 0; SimpleProto msg = FreePool.Allocate(); msg.Key = FreeMessageConstant.ChickenTip; msg.Ss.Add("word75," + config.NewWeaponCfg.Name); FreeMessageSender.SendMessage(playerEntity, msg); } damage.damage -= reduce; playerEntity.statisticsData.Statistics.DefenseDamage += reduce; d.SetValue(damage.damage); } } } } } }
public void Step(ref PlayerDamageInfo token, Enum condition) { StopMovementOnDeath(token.entityDamaged); }
public void KillPlayer(PlayerEntity source, PlayerEntity target, PlayerDamageInfo damage) { _room.GameRule.KillPlayer(source, target, damage); }
public float HandleDamage(PlayerEntity source, PlayerEntity target, PlayerDamageInfo damage) { return(_room.GameRule.HandleDamage(source, target, damage)); }