//public void OnEnemyDied(EventData eventData) { // spawnTime = 3.0f; //} private void ProcessLootTables(LootTableType lootTableType, Transform target) { foreach (LootTable lootTable in lootTables) { //Debug.LogFormat(" Processing loot table: " + lootTable.name ); if (lootTable.name == lootTableType.ToString()) { foreach (Loot loot in lootTable.lootCollection) { //Debug.LogFormat(" Processing loot : table " + lootTable.name + " loot: " + loot.gameObject); float lootChance = Random.Range(0, 100); Debug.LogFormat(" Loot chance roll: " + loot.gameObject + " (" + lootChance.ToString() + ")"); if (lootChance <= loot.chance) { // drop loot for (int i = 1; i <= loot.quantity; i++) { Debug.LogFormat(" Dropping loot: " + i + " " + loot.gameObject); GameObject lootDrop = (GameObject)Resources.Load(loot.gameObject); spawnTarget = target.position + new Vector3(Random.Range(-2, 2), 0, Random.Range(-2, 2)); GameObject.Instantiate(lootDrop, spawnTarget, Quaternion.identity); } } } } } }
public LootTable(LootTable another) { this.Items = new List <LootTableItem>(); this.Type = another.Type; for (int i = 0; i < another.Items.Count; i++) { this.Items.Add(new LootTableItem(another.Items[i])); } this.initializeOriginalWeights(); }
public void QueueLoot(Transform target) { //spawnTime = Time.time; //spawnTarget = target.position + new Vector3(10, 0, 10); LootTableType lootTableType = ((EnemyCharacter)target.gameObject.GetComponent("EnemyCharacter")).lootTableType; //Debug.LogFormat("(EnemyCharacter)target.gameObject " + lootTableType.ToString()); ProcessLootTables(lootTableType, target); }