void Awake() { if (!enemy) enemy = GetComponent<Enemy> (); Weapon = new Item_Weapon ("", minDmg, maxDmg, range, knockback, hitCooldown); if (!enemyMovement) enemyMovement = GetComponentInChildren<EnemyTargetting> (); }
// 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; }
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); } }
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); }
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); } }
public virtual IEnumerator CastSpell(Item_Weapon Weapon) { yield return null; }