protected virtual void ReceiveElementalDamage(ElementalDamage damage) { if (damage.type != elementalType) { Hp -= damage.amount; } else { Hp += damage.amount; } }
protected override void caneEffect(MyCharacterController user, ObjectEntity target) { MyCharacterController c = target as MyCharacterController; if (c == null) return; var token = new ElementalDamage(user, c, BasisParameter.EffectPoint, CharacterParameterBasis.Elemental.FIRE); token.ShowLogAction = d => GameController.PlayingLogger.damagedObject(c.Parameter.Name, (int)d, c.isDead); c.damaged(token); //character.damagedFromCharacterAttack(BasisParameter.EffectPoint,user,false); //user.killedTarget(character); //GameController.PlayingLogger.damagedObject(character.Parameter.Name,BasisParameter.EffectPoint,character.isDead); }
// Update is called once per frame public void CreateElements(List <Element> elems) { elements = gameObject.GetComponent <ElementalDamage>(); if (elements != null) { foreach (Element elem in elems) { //Help.print(elem, Damage); elements.AddElement(elem, Damage); } } }
public override void applyItemEffect(MyCharacterController src, params ObjectEntity[] targets) { foreach (var obj in targets) { var target = obj as MyCharacterController; if (target != null) { var token = new ElementalDamage(src, target, BasisParameter.EffectPoint, CharacterParameterBasis.Elemental.EARTH); token.ShowLogAction = d => GameController.PlayingLogger.damagedObject(target.Parameter.Name, (int)d, target.isDead); target.damaged(token); //target.damagedFromCharacterAttack(BasisParameter.EffectPoint, src,false); //src.killedTarget(target); } } }
private void BulletShoot() { Damage damage = null; if (Input.GetKeyDown(KeyCode.Alpha1)) { damage = new ElementalDamage(ElementalDamageType.Fire, 20); } if (damage != null) { //Instantiate(Weapon); } }
public override void potionEffect(MyCharacterController user, MyCharacterController target) { var token = new ElementalDamage(user, target, BasisParameter.EffectPoint, CharacterParameterBasis.Elemental.FIRE); token.ShowLogAction = delegate(float d) { if (d != 0) { GameController.PlayingLogger.addLogFormat("炎が{0} の身を焦がす!{1}ポイントのダメージを与えた。", target.Parameter.Name,(int)d); } else { GameController.PlayingLogger.addLogFormat("{0} にダメージを与えられない!", target.Parameter.Name); } }; target.damaged(token); }
/* public override EffectAnimationEntity[] getEffectAnimationEntity(MyCharacterController src, bool throwhit,params ObjectEntity[] targets) { List<EffectAnimationEntity> ret = new List<EffectAnimationEntity>(); //new EffectAnimationEntity[targets.Length]; for (int i = 0; i < targets.Length; i++) { Debug.logger.Log(targets[i].name,targets[i].Position); if (GameController.CameraController.outOfScreen(targets[i].Position)) continue; var entity = GameController.EffectAnimationController.singleshotEffect(this.EffectAnimationName,targets[i].Position,1.5f,1.5f,false); entity.PlaySEName = this.PlaySEName; ret.Add(entity); } return ret.ToArray(); } */ public override void applyItemEffect(MyCharacterController src, params ObjectEntity[] targets) { base.applyItemEffect(src, targets); foreach (MyCharacterController character in targets) { Debug.logger.Log(character.name+", "+src.name); if (character.CurrentHostile == MyCharacterController.Hostile.AGGRESIVE) { int damage = BasisParameter.EffectPoint; var token = new ElementalDamage(src, character, damage, CharacterParameterBasis.Elemental.AIR); token.ShowLogAction = d => GameController.PlayingLogger.damagedObject(character.Parameter.Name, (int)d, character.isDead); character.damaged(token); //src.killedTarget(character); //GameController.PlayingLogger.damagedObject(character.Parameter.Name,damege,character.isDead); } } }
private static void UpdateCombatants() { //Update enemies and npcs var enemiesAndnpcs = Rm_RPGHandler.Instance.Repositories.Enemies.AllEnemies.Concat( Rm_RPGHandler.Instance.Repositories.Interactable.AllNpcs.Select(n => n as CombatCharacter) ).ToList(); for (int charIndex = 0; charIndex < enemiesAndnpcs.Count; charIndex++) { var selectedCharInfo = enemiesAndnpcs[charIndex]; //Update Attributes foreach (var d in Rm_RPGHandler.Instance.ASVT.AttributesDefinitions) { var attr = selectedCharInfo.Attributes.FirstOrDefault(a => a.ID == d.ID); if (attr == null) { var attributeToAdd = new Attribute { ID = d.ID, BaseValue = d.DefaultValue }; selectedCharInfo.Attributes.Add(attributeToAdd); } } for (int index = 0; index < selectedCharInfo.Attributes.Count; index++) { var v = selectedCharInfo.Attributes[index]; var stillExists = Rm_RPGHandler.Instance.ASVT.AttributesDefinitions.FirstOrDefault( a => a.ID == v.ID); if (stillExists == null) { selectedCharInfo.Attributes.Remove(v); index--; } } //Update Vitals foreach (var d in Rm_RPGHandler.Instance.ASVT.VitalDefinitions) { var vital = selectedCharInfo.Vitals.FirstOrDefault(a => a.ID == d.ID); if (vital == null) { var vitToAdd = new Vital { ID = d.ID, BaseValue = d.DefaultValue }; selectedCharInfo.Vitals.Add(vitToAdd); } } for (int index = 0; index < selectedCharInfo.Vitals.Count; index++) { var v = selectedCharInfo.Vitals[index]; var stillExists = Rm_RPGHandler.Instance.ASVT.VitalDefinitions.FirstOrDefault( a => a.ID == v.ID); if (stillExists == null) { selectedCharInfo.Vitals.Remove(v); index--; } } //Update statistics foreach (var d in Rm_RPGHandler.Instance.ASVT.StatisticDefinitions) { var stat = selectedCharInfo.Stats.FirstOrDefault(a => a.ID == d.ID); if (stat == null) { var statToAdd = new Statistic() { ID = d.ID, BaseValue = d.DefaultValue }; selectedCharInfo.Stats.Add(statToAdd); } } for (int index = 0; index < selectedCharInfo.Stats.Count; index++) { var v = selectedCharInfo.Stats[index]; var stillExists = Rm_RPGHandler.Instance.ASVT.StatisticDefinitions.FirstOrDefault( a => a.ID == v.ID); if (stillExists == null) { selectedCharInfo.Stats.Remove(v); index--; } } //Update Immunities for (int index = 0; index < selectedCharInfo.SkillMetaImmunitiesID.Count; index++) { var v = selectedCharInfo.SkillMetaImmunitiesID[index]; if (string.IsNullOrEmpty(v.ID)) { continue; } var stillExists = Rm_RPGHandler.Instance.Combat.SkillMeta.FirstOrDefault( a => a.ID == v.ID); if (stillExists == null) { selectedCharInfo.SkillMetaImmunitiesID.Remove(v); index--; } } //Update Susceptibilities for (int index = 0; index < selectedCharInfo.SkillMetaSusceptibilities.Count; index++) { var v = selectedCharInfo.SkillMetaSusceptibilities[index]; if (string.IsNullOrEmpty(v.ID)) { continue; } var stillExists = Rm_RPGHandler.Instance.Combat.SkillMeta.FirstOrDefault( a => a.ID == v.ID); if (stillExists == null) { selectedCharInfo.SkillMetaSusceptibilities.Remove(v); index--; } } //Update skills for (int index = 0; index < selectedCharInfo.EnemySkills.Count; index++) { var v = selectedCharInfo.EnemySkills[index]; if (string.IsNullOrEmpty(v.SkillID)) { continue; } var stillExists = Rm_RPGHandler.Instance.Repositories.Skills.AllSkills.FirstOrDefault( a => a.ID == v.SkillID); if (stillExists == null) { selectedCharInfo.EnemySkills.Remove(v); index--; } } //Update damages var dmgList = selectedCharInfo.NpcDamage.ElementalDamages; foreach (var d in Rm_RPGHandler.Instance.ASVT.ElementalDamageDefinitions) { var tier = dmgList.FirstOrDefault(t => t.ElementID == d.ID); if (tier == null) { var tierToAdd = new ElementalDamage() { ElementID = d.ID }; dmgList.Add(tierToAdd); } } for (int index = 0; index < dmgList.Count; index++) { var v = dmgList[index]; var stillExists = Rm_RPGHandler.Instance.ASVT.ElementalDamageDefinitions.FirstOrDefault( t => t.ID == v.ElementID); if (stillExists == null) { dmgList.Remove(v); index--; } } //Update LootTables for (int index = 0; index < selectedCharInfo.LootTables.Count; index++) { var v = selectedCharInfo.LootTables[index]; if (string.IsNullOrEmpty(v.LootTableID)) { continue; } var stillExists = Rm_RPGHandler.Instance.Repositories.LootTables.AllTables.FirstOrDefault( a => a.ID == v.LootTableID); if (stillExists == null) { selectedCharInfo.LootTables.Remove(v); index--; } } //Update Loot for (int index = 0; index < selectedCharInfo.GuaranteedLoot.Count; index++) { var v = selectedCharInfo.GuaranteedLoot[index]; if (string.IsNullOrEmpty(v.ItemID)) { continue; } var stillExists = Rm_RPGHandler.Instance.Repositories.Items.AllItems.FirstOrDefault( a => a.ID == v.ItemID); if (stillExists == null) { selectedCharInfo.GuaranteedLoot.Remove(v); index--; } } } }
public void OnCollisionEnter(Collision collision) { if (CanAttack) { if (collision.gameObject.tag == "Player") { Player playerRef = collision.gameObject.GetComponent <Player>(); if (playerRef != null) { playerRef.photonView.RPC("TakeDamage", PhotonTargets.All, DiveDamage, transform.position, ElementalDamage.ToArray()); } } if (collision.gameObject.tag != "Enemy" | collision.gameObject.tag != "Projectile") { if (PhotonNetwork.isMasterClient) { rigidbody.velocity = Vector3.zero; } } if (PhotonNetwork.isMasterClient) { SetIsKinematic(true); SetNavMeshAgent(true); } photonView.RPC("SetCanAttack", PhotonTargets.All, false); } }
private void OnCollisionEnter(Collision collision) { if (!PhotonNetwork.isMasterClient) { return; } if (collision.gameObject.tag == "Player") { Player player = collision.gameObject.GetComponent <Player>(); if (player != null) { player.photonView.RPC("TakeDamage", PhotonTargets.All, TouchDamage, transform.position, ElementalDamage.ToArray()); SetActive(false); } } }