private void InitialiseStats() { IActorTracker actorTracker = GameManager.Instance.sceneController.ActorTracker; IAssignSceneActorTracker assignTracker = this.GetComponent <IAssignSceneActorTracker>(); assignTracker.SetSceneActorTracker(actorTracker); EnemyInfo enemyInfo = GameManager.Instance.enemySettings.enemyList.Where(x => x.instanceID == referenceID).First().ConvertToEnemyInfo(); shipData = enemyInfo.GetShipData(); EnemyStatHandler statHandler = this.GetComponent <EnemyStatHandler>(); statHandler.InitialiseStats(enemyInfo); RegisterToTracker(); }
public static GameObject DropItem(EnemyStatHandler statHandler, float dropChance) { if (_collectableItem == null) { _collectableItem = Resources.Load <GameObject>("Prefabs/Items/Interactible"); } if (_healItem == null) { _healItem = Resources.Load <GameObject>("Prefabs/Items/HealOrb"); } float value = UnityEngine.Random.Range(0, 1f); Debug.Log("DropChance " + value); if (value > dropChance) { return(null); } float healChance = 0.2f; float itemDecision = UnityEngine.Random.Range(0, 1f); GameObject interactible; if (itemDecision > healChance) { interactible = GameObject.Instantiate(_collectableItem, statHandler.transform.position, statHandler.transform.rotation); interactible.GetComponent <CollectableItem>().Item = GetItemToDrop(statHandler); } else { interactible = GameObject.Instantiate(_healItem, statHandler.transform.position, statHandler.transform.rotation); } if (interactible) { GameObject.Destroy(interactible, Item.TIME_TO_LIVE); //deletes Item after 1 minute } return(interactible); }
public static Item GetItemToDrop(EnemyStatHandler statHandler) { int random = UnityEngine.Random.Range(1, 11); int value = 10 - random; if (value > 8) { return(new WildcardItem(1, AbilityUtil.GetRandomWildcard())); } if (value > 6) { if (statHandler.sword != null) { return(new WeaponItem(1, WeaponEnum.blade)); } if (statHandler.shield != null) { return(new WeaponItem(1, WeaponEnum.magiccore)); } return(new WeaponItem(1, WeaponEnum.barrel)); } return(new ElementItem(1, statHandler.Element)); }
// Start is called before the first frame update void Awake() { enemyStatHandler = GetComponent <EnemyStatHandler>(); navMeshAgent = GetComponent <NavMeshAgent>(); enemyAnimationHandler = GetComponent <EnemyAnimationHandler>(); }