Ejemplo n.º 1
0
 protected virtual void ReceiveElementalDamage(ElementalDamage damage)
 {
     if (damage.type != elementalType)
     {
         Hp -= damage.amount;
     }
     else
     {
         Hp += damage.amount;
     }
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 // 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);
         }
     }
 }
Ejemplo n.º 4
0
 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);
         }
     }
 }
Ejemplo n.º 5
0
    private void BulletShoot()
    {
        Damage damage = null;

        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            damage = new ElementalDamage(ElementalDamageType.Fire, 20);
        }

        if (damage != null)
        {
            //Instantiate(Weapon);
        }
    }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
 /*
 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);
         }
     }
 }
Ejemplo n.º 8
0
        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--;
                    }
                }
            }
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
        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);
                }
            }
        }