void Awake()
 {
     if (!enemy)
         enemy = GetComponent<Enemy> ();
     Weapon = new Item_Weapon ("", minDmg, maxDmg, range, knockback, hitCooldown);
     if (!enemyMovement)
         enemyMovement = GetComponentInChildren<EnemyTargetting> ();
 }
Example #2
0
	// Update is called once per frame
	void Update () {
		if (weapon == null) {
			weapon = GetComponent<WeaponInfo> ().weapon;
		}

		totalLS = LS;
		totalMS = LS;
	}
 public List<SpellCast> GetAvailableSpells(Item_Weapon.WeaponType weaponType)
 {
     if (weaponType == Item_Weapon.WeaponType.DAGGER)
         return DaggerSpells;
     else if (weaponType == Item_Weapon.WeaponType.SPEAR)
         return SpearSpells;
     else if (weaponType == Item_Weapon.WeaponType.WAND)
         return WandSpells;
     else if (weaponType == Item_Weapon.WeaponType.SPOON)
         return SpoonSpells;
     else
         return null;
 }
 public override IEnumerator CastSpell(Item_Weapon Weapon)
 {
     doneCasting = false;
     adjustedWeapon = new Item_Weapon (Weapon.name, (int) Mathf.Clamp (Mathf.RoundToInt(Weapon.dmgMin * dmgMult), 1, Mathf.Infinity), (int) Mathf.Clamp (Mathf.RoundToInt(Weapon.dmgMax * dmgMult), 1, Mathf.Infinity), Weapon.range, 0, 1);
     foreach (Transform spawnPos in spawnPoses) {
         GameObject smokeBomb = (GameObject)Instantiate (bomb, spawnPos.position, spawnPos.rotation);
         spawnBomb = smokeBomb.GetComponent<SpawnProj> ();
         spawnBomb.firedVel = spawnVel * spawnPos.forward;
         spawnBomb.smokeBombCast = this;
     }
     doneCasting = true;
     yield return null;
 }
Example #5
0
	public static void GetAllWeapons(bool logItems = true, bool clearLog = true) {
		droppedItem = Resources.Load<GameObject> ("Data/Items/DroppedItem");
		Weapons.Clear ();
		if(clearLog && Application.isEditor)
			System.Type.GetType("UnityEditorInternal.LogEntries,UnityEditor.dll").GetMethod("Clear", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public).Invoke (null,null);
		WeaponLines = (Resources.Load ("Data/Items/Weapons") as TextAsset).text.Split ('\n');
		for (int i = 9; i < WeaponLines.Length;) {
			Item_Weapon weapon = new Item_Weapon();
			weapon.name = WeaponLines[i++];
			weapon.maxStack = 1;
			string weaponType = WeaponLines[i++];
			if(weaponType == "Dagger")
				weapon.Type = Item_Weapon.WeaponType.DAGGER;
			else if (weaponType == "Spear")
				weapon.Type = Item_Weapon.WeaponType.SPEAR;
			else if (weaponType == "Wand")
				weapon.Type = Item_Weapon.WeaponType.WAND;
			else if (weaponType == "Spoon")
				weapon.Type = Item_Weapon.WeaponType.SPOON;
			else
				weapon.Type = Item_Weapon.WeaponType.OTHER;

			weapon.lvlMin = int.Parse (WeaponLines[i++]);
			weapon.dmgMin = int.Parse(WeaponLines[i++]);
			weapon.dmgMax = int.Parse (WeaponLines[i++]);
			weapon.range = float.Parse (WeaponLines[i++]);
			weapon.knockback = float.Parse (WeaponLines[i++]);
			weapon.hitCooldown = float.Parse (WeaponLines[i++]);
			weapon.model = (GameObject) Resources.Load (WeaponLines[i++]);
			weapon.invIcon = Resources.Load<Sprite> (WeaponLines[i++]);
			Weapons.Add (weapon);
			i++;
			if(logItems)
				Debug.Log (weapon.name + " {MinDmg: " + weapon.dmgMin +
				           ", MaxDmg: " + weapon.dmgMax +
				           ", range: " + weapon.range +
				           ", knockback: " + weapon.knockback +
				           ", hitCooldown: " + weapon.hitCooldown + "}");
		}
		GetAllArmour ();
		GetAllOthers ();
		GetAllConsumables ();
	}
 public override IEnumerator CastSpell(Item_Weapon Weapon)
 {
     doneCasting = false;
     updatedHits.Clear ();
     GetComponent<Collider> ().enabled = true;
     yield return new WaitForFixedUpdate ();
     ChargeMults.x = Random.Range (ChargeMultsMin.x, ChargeMultsMax.x);
     ChargeMults.y = Random.Range (ChargeMultsMin.y, ChargeMultsMax.y);
     Item_Weapon adjustedWeapon = new Item_Weapon (Weapon.name, (int) Mathf.Clamp (Mathf.RoundToInt(Weapon.dmgMin * dmgMult), 1, Mathf.Infinity), (int) Mathf.Clamp (Mathf.RoundToInt(Weapon.dmgMax * dmgMult), 1, Mathf.Infinity), Weapon.range, knockback, 0);
     List<Health> hitObjs = new List<Health> ();
     hitbox.GetComponent<Rigidbody> ().AddRelativeForce (Vector3.up*ChargeMults.y * ChargeSpeed, ForceMode.VelocityChange);
     yield return new WaitForSeconds (0.075f);
     FX.Play ();
     if(transform.root.GetComponent<Enemy> ())
         transform.root.GetComponent<Enemy> ().disableWalk = true;
     hitbox.GetComponent<Rigidbody> ().AddRelativeForce (Vector3.forward*ChargeMults.x * ChargeSpeed, ForceMode.VelocityChange);
     yield return new WaitForSeconds (0.05f);
     if (transform.root.GetComponent<Enemy> ())
         transform.root.GetComponent<Enemy> ().disableWalk = true;
     while (!hitbox.CollidingWithSolids) {
         if (transform.root.GetComponent<Enemy> ())
         transform.root.GetComponent<Enemy> ().disableWalk = true;
         foreach (Health hit in updatedHits) {
             if (hit != health && hit.health != 0 && !hitObjs.Contains (hit)) {
                 if(hit && transform.root.GetComponent<Enemy>() && !hit.transform.root.GetComponent<Enemy>() ||
                    hit && !transform.root.GetComponent<Enemy>() && hit.transform.root.GetComponent<Enemy>())
                 {
                     adjustedWeapon.DealDamage (hit, transform, knockMultipliers, Weapon.IDs);
                     hitObjs.Add (hit);
                 }
             }
         }
         yield return new WaitForEndOfFrame();
     }
     FX.Stop ();
     health.invulnerable = false;
     doneCasting = true;
     GetComponent<Collider> ().enabled = false;
 }
 public override IEnumerator CastSpell(Item_Weapon Weapon)
 {
     doneCasting = false;
     updatedHits.Clear ();
     GetComponent<Collider> ().enabled = true;
     yield return new WaitForFixedUpdate ();
     CastFX.Play ();
     Item_Weapon adjustedWeapon = new Item_Weapon (Weapon.name, Mathf.Clamp (Weapon.dmgMin * dmgPerHit, 0, Mathf.Infinity), Mathf.Clamp (Weapon.dmgMax * dmgPerHit, 0, Mathf.Infinity), Weapon.range, knockback, 0);
     List<Health> Hits = new List<Health> (updatedHits);
     hitting.AddRange (Hits);
     for(int i = 0; i < hitAmount; i++)
     {
         foreach (Health hit in Hits) {
             if(hit != health && hit.health != 0)
             {
                 if(hit && transform.root.GetComponent<Enemy>() && !hit.transform.root.GetComponent<Enemy>() ||
                    hit && !transform.root.GetComponent<Enemy>() && hit.transform.root.GetComponent<Enemy>()){
                     Instantiate (ExplosionFX, hit.transform.position - Vector3.up*1.375f, transform.rotation);
                     adjustedWeapon.knockback = Random.Range (knockback, knockbackMax);
                     adjustedWeapon.DealDamage(hit, transform, knockMultipliers, Weapon.IDs);
                 }
             }
         }
         if(Hits.Count > 0)
         {
             yield return new WaitForSeconds(hitDelay);
         }
         GameObject[] tempFX = GameObject.FindGameObjectsWithTag ("TempFX_MH");
         foreach(GameObject PS in tempFX) {
             Destroy (PS);
         }
     }
     if(Hits.Count > 0)
         yield return new WaitForSeconds (finalHitDelay);
     adjustedWeapon.dmgMin = Weapon.dmgMin;
     adjustedWeapon.dmgMax = Weapon.dmgMax;
     adjustedWeapon.knockback = finalKnockback;
     foreach (Health hit in Hits) {
         if(hit != health && hit.health != 0)
         {
             if(hit && hit.transform && transform.root.GetComponent<Enemy>() && !hit.transform.root.GetComponent<Enemy>() ||
                hit && hit.transform && !transform.root.GetComponent<Enemy>() && hit.transform.root.GetComponent<Enemy>()){
                 Instantiate (ExplosionFX, hit.transform.position - Vector3.up*1.375f, transform.rotation);
                 Vector2 tempKMF = knockMultipliersFinal;
                 if (DynamicFinalXKnock != 0) {
                     knockMultipliersFinal.x = transform.InverseTransformDirection(hit.GetComponent<Rigidbody>().velocity).z*-DynamicFinalXKnock;
                     knockMultipliersFinal.y *= adjustedWeapon.knockback;
                     adjustedWeapon.knockback = 1;
                 }
                 adjustedWeapon.DealDamage(hit, transform, knockMultipliersFinal, Weapon.IDs);
                 if (DynamicFinalXKnock != 0) {
                     knockMultipliersFinal.x = tempKMF.x;
                     knockMultipliersFinal.y = tempKMF.y;
                     adjustedWeapon.knockback = finalKnockback;
                 }
             }
         }
     }
     doneCasting = true;
     yield return new WaitForSeconds (hitDelay);
     GameObject[] tempFX2 = GameObject.FindGameObjectsWithTag ("TempFX_MH");
     foreach(GameObject PS in tempFX2) {
         Destroy (PS);
     }
     GetComponent<Collider> ().enabled = false;
     foreach (Health hit in Hits) {
         if(hitting.Contains (hit))
             hitting.Remove (hit);
     }
 }
Example #8
0
 void Start()
 {
     if(lifeTime != -1)
         destroyTime = Time.time + lifeTime;
     if (!Collider)
         Collider = GetComponent<Collider> ();
     Collider.enabled = false;
     if (!FX)
         FX = GetComponentInChildren<ParticleSystemRenderer> ();
     if (damageInfo == null)
         damageInfo = new Item_Weapon ("DoT Area", 600, 670, 0, 0, 0.5f);
 }
Example #9
0
    void Hit()
    {
        RaycastHit hit;
        if (heldItem is Item_Weapon) {
            Item_Weapon heldWeapon = (Item_Weapon)heldItem;
            if (Physics.Raycast (Camera.main.transform.position, Camera.main.transform.forward, out hit, heldWeapon.range, hittableLayers)) {
                if (hit.transform != transform) {
                    if(hit.transform.GetComponent<Health>()) {
                        if (!walk.moving) {
                            knockMult = 1;
                        } else if (walk.speed == walk.baseSpeed)
                            knockMult = WalkKnockbackMult;
                        else if (walk.speed == walk.sprintSpeed)
                            knockMult = SprintKnockbackMult;
                        if (hit.transform.GetComponent<Enemy> ()) {
                            hit.transform.GetComponent<Enemy> ().disableWalk = true;
                        }
                        heldWeapon.DealDamage (hit.transform.GetComponent<Health>(), transform, knockDirectionMult, heldWeapon.IDs);

                    }
                }
            }
        } else if (Physics.Raycast (Camera.main.transform.position, Camera.main.transform.forward, out hit, Itemrange, hittableLayers)) {
            if (hit.transform != transform) {
                if(hit.transform.GetComponent<Health> () && hit.transform.GetComponent<Health> ().health != 0) {
                    if (!walk.moving) {
                        knockMult = 1;
                    } else if (walk.speed == walk.baseSpeed)
                        knockMult = WalkKnockbackMult;
                    else if (walk.speed == walk.sprintSpeed)
                        knockMult = SprintKnockbackMult;
                    if (hit.transform.GetComponent<Enemy> ()) {
                        hit.transform.GetComponent<Enemy> ().disableWalk = true;
                    }
                    Item_Weapon heldWeapon = new Item_Weapon("", 1, 1, 0, 1, 1);
                    heldWeapon.DealDamage (hit.transform.GetComponent<Health>(), transform, knockDirectionMult, null);

                }
            }
        }
    }
        private void CreateNew_Pickables()
        {
            WorldObjectScript worldObjectScript = target as WorldObjectScript;
            PickableScript    pickableScript    = target as PickableScript;
            ActorScript       actorScript       = target as ActorScript;

            var dir  = NewFolder(target.gameObject.name);
            var path = $"{dir}/{target.gameObject.name}.prefab";

            var prefab1 = PrefabUtility.SaveAsPrefabAssetAndConnect(target.gameObject, path, InteractionMode.UserAction);

            ItemData_Type itemType = MainUtility.Convert_ObjectToItemType(pickableScript.Get_Pickable_Data().formID.ObjectType);

            if (itemType == ItemData_Type.Ammo)
            {
                Item_Ammo item = new Item_Ammo();
                item.ID        = pickableScript.Get_ObjectRefData().formID.BaseID;
                item.gameModel = prefab1;

                objectDatabase.Data.allItemAmmo.Add(item);
            }
            else if (itemType == ItemData_Type.Armor)
            {
                Item_Armor item = new Item_Armor();
                item.ID        = pickableScript.Get_ObjectRefData().formID.BaseID;
                item.gameModel = prefab1;

                objectDatabase.Data.allItemArmors.Add(item);
            }
            else if (itemType == ItemData_Type.Consume)
            {
                Item_Consumables item = new Item_Consumables();
                item.ID        = pickableScript.Get_ObjectRefData().formID.BaseID;
                item.gameModel = prefab1;

                objectDatabase.Data.allItemConsumables.Add(item);
            }
            else if (itemType == ItemData_Type.Junk)
            {
                Item_Junk item = new Item_Junk();
                item.ID        = pickableScript.Get_ObjectRefData().formID.BaseID;
                item.gameModel = prefab1;

                objectDatabase.Data.allItemJunk.Add(item);
            }
            else if (itemType == ItemData_Type.Key)
            {
                Item_Key item = new Item_Key();
                item.ID        = pickableScript.Get_ObjectRefData().formID.BaseID;
                item.gameModel = prefab1;

                objectDatabase.Data.allItemKey.Add(item);
            }
            else if (itemType == ItemData_Type.Misc)
            {
                Item_Misc item = new Item_Misc();
                item.ID        = pickableScript.Get_ObjectRefData().formID.BaseID;
                item.gameModel = prefab1;

                objectDatabase.Data.allItemMiscs.Add(item);
            }
            else if (itemType == ItemData_Type.Weapon)
            {
                Item_Weapon item = new Item_Weapon();
                item.ID        = pickableScript.Get_ObjectRefData().formID.BaseID;
                item.gameModel = prefab1;

                objectDatabase.Data.allItemWeapon.Add(item);
            }
        }
Example #11
0
	public virtual IEnumerator CastSpell(Item_Weapon Weapon) {
		yield return null;
	}