using System; using System.Collections.Generic; using UnityEngine; // Token: 0x0200007B RID: 123 public class GatherEmeraldsXP : MonoBehaviour { // Token: 0x06000C16 RID: 3094 RVA: 0x000ED20C File Offset: 0x000EB40C private void Start() { SceneItem[] array = Object.FindObjectsByType(FindObjectsSortMode.None); BreakableActions[] array2 = Object.FindObjectsByType(FindObjectsSortMode.None); ChestActions[] array3 = Object.FindObjectsByType(FindObjectsSortMode.None); int num = 0; int num2 = 0; int num3 = 0; List list = new List(); foreach (SceneItem sceneItem in array) { int num4 = num; if (sceneItem && !sceneItem.forSale) { string text = sceneItem.item.ToString(); if (text == "Emerald") { num += sceneItem.amount; } else { Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName(text); if (!invRowFromName._NeedFullStack) { int num5 = sceneItem.amount; if (num5 < 1) { num5 = 1; } if (!invRowFromName._Stackable) { num5 = 1; } num += invRowFromName._SellPrice * num5; } } Debug.Log(text + " ems from item " + (num - num4).ToString()); } } foreach (ChestActions chestActions in array3) { int num6 = num3; if (chestActions) { List list2 = new List(); List list3 = new List(); if (chestActions.chest.item1 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item1); list3.Add(chestActions.chest.itemStack1); } if (chestActions.chest.item2 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item2); list3.Add(chestActions.chest.itemStack2); } if (chestActions.chest.item3 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item3); list3.Add(chestActions.chest.itemStack3); } if (chestActions.chest.item4 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item4); list3.Add(chestActions.chest.itemStack4); } if (chestActions.chest.item5 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item5); list3.Add(chestActions.chest.itemStack5); } if (chestActions.chest.item6 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item6); list3.Add(chestActions.chest.itemStack6); } if (chestActions.chest.item7 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item7); list3.Add(chestActions.chest.itemStack7); } if (chestActions.chest.item8 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item8); list3.Add(chestActions.chest.itemStack8); } if (chestActions.chest.item9 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item9); list3.Add(chestActions.chest.itemStack9); } if (chestActions.chest.item10 != SceneItem.xmlNames.None) { list2.Add(chestActions.chest.item10); list3.Add(chestActions.chest.itemStack10); } for (int j = 0; j < list2.Count; j++) { string text2 = list2[j].ToString(); Library.Inventory invRowFromName2 = Links.x.library.GetInvRowFromName(text2); if (invRowFromName2 != null && !invRowFromName2._NeedFullStack) { int num7 = list3[j]; if (num7 < 1) { num7 = 1; } if (!invRowFromName2._Stackable) { num7 = 1; } num3 += invRowFromName2._SellPrice * num7; } if (text2 == "Emerald") { num3 += list3[j]; } } ChestActions chestActions2 = chestActions; Debug.Log(((chestActions2 != null) ? chestActions2.ToString() : null) + " ems from item " + (num3 - num6).ToString()); } } foreach (BreakableActions breakableActions in array2) { int num8 = num2; if (breakableActions.resourceLocation == -1) { string text3 = ""; string text4 = ""; string text5 = ""; string text6 = ""; if (breakableActions.breakable.itemA != SceneItem.xmlNames.None) { text3 = breakableActions.breakable.itemA.ToString(); } if (breakableActions.breakable.itemB != SceneItem.xmlNames.None) { text4 = breakableActions.breakable.itemB.ToString(); } if (breakableActions.breakable.itemC != SceneItem.xmlNames.None) { text5 = breakableActions.breakable.itemC.ToString(); } if (breakableActions.breakable.itemD != SceneItem.xmlNames.None) { text6 = breakableActions.breakable.itemD.ToString(); } if (text3 != "" && text3 != "None") { Library.Inventory inventory = Links.x.library.GetInvRowFromName(text3); if (inventory != null && !inventory._NeedFullStack) { int num9 = breakableActions.breakable.itemStackA; if (num9 < 1) { num9 = 1; } if (!inventory._Stackable) { num9 = 1; } num2 += inventory._SellPrice * num9; } if (text3 == "Emerald") { num2 += breakableActions.breakable.itemStackA; } } if (text4 != "" && text4 != "None") { Library.Inventory inventory = Links.x.library.GetInvRowFromName(text4); if (inventory != null && !inventory._NeedFullStack) { int num10 = breakableActions.breakable.itemStackB; if (num10 < 1) { num10 = 1; } if (!inventory._Stackable) { num10 = 1; } num2 += inventory._SellPrice * num10; } if (text4 == "Emerald") { num2 += breakableActions.breakable.itemStackB; } } if (text5 != "" && text5 != "None") { Library.Inventory inventory = Links.x.library.GetInvRowFromName(text5); if (inventory != null && !inventory._NeedFullStack) { int num11 = breakableActions.breakable.itemStackC; if (num11 < 1) { num11 = 1; } if (!inventory._Stackable) { num11 = 1; } num2 += inventory._SellPrice * num11; } if (text5 == "Emerald") { num2 += breakableActions.breakable.itemStackC; } } if (text6 != "" && text6 != "None") { Library.Inventory inventory = Links.x.library.GetInvRowFromName(text6); if (inventory != null && !inventory._NeedFullStack) { int num12 = breakableActions.breakable.itemStackD; if (num12 < 1) { num12 = 1; } if (!inventory._Stackable) { num12 = 1; } num2 += inventory._SellPrice * num12; } if (text6 == "Emerald") { num2 += breakableActions.breakable.itemStackD; } } if (num2 - num8 > 0) { BreakableActions breakableActions2 = breakableActions; Debug.Log(((breakableActions2 != null) ? breakableActions2.ToString() : null) + " ems from breakie " + (num2 - num8).ToString()); } } else if (breakableActions.breakable.component != Breakable.ComponentTypes.Acorn && breakableActions.breakable.component != Breakable.ComponentTypes.Berry && breakableActions.breakable.component != Breakable.ComponentTypes.Frog && breakableActions.breakable.component != Breakable.ComponentTypes.Mushroom && breakableActions.breakable.component != Breakable.ComponentTypes.Rock && breakableActions.breakable.component != Breakable.ComponentTypes.Stick) { Breakable.ComponentTypes component = breakableActions.breakable.component; } } int num13 = 0; int num14 = 0; CreatureActions[] array7 = Object.FindObjectsByType(FindObjectsSortMode.None); foreach (CreatureActions creatureActions in array7) { int num15 = num13; if (creatureActions.creatures.temperament != Creatures.temperamentState.AttacksOnSight) { List characters = creatureActions.characters; foreach (Character character in characters) { if (character && character.hostility < 2) { num13 += character.stats.characterRow._XP; int num16 = character.HasItem(2); int num17 = 0; if (num16 > 0) { num17 = character.GetInvNum(num16 + 1); num14 += num17; } int num18 = character.SellPriceOfDrops(); num14 += num18; string[] array9 = new string[5]; int num19 = 0; Character character2 = character; array9[num19] = ((character2 != null) ? character2.ToString() : null); array9[1] = " sell price of drops "; array9[2] = num18.ToString(); array9[3] = " "; array9[4] = num17.ToString(); Debug.Log(string.Concat(array9)); } } if (characters.Count == 0) { list.Add(creatureActions); } } CreatureActions creatureActions2 = creatureActions; Debug.Log(((creatureActions2 != null) ? creatureActions2.ToString() : null) + " xp " + (num13 - num15).ToString()); } int num20 = 0; int num21 = 0; int num22 = 0; foreach (CreatureActions creatureActions3 in array7) { if (creatureActions3.creatures.temperament == Creatures.temperamentState.AttacksOnSight) { int num23 = num20; int num24 = num22; List characters2 = creatureActions3.characters; int number = creatureActions3.creatures.number; for (int k = 0; k < number; k++) { string text7 = creatureActions3.creatures.characterName.ToString(); Library.Characters pcrowFromName = Links.x.library.GetPCRowFromName(text7); num20 += pcrowFromName._XP; } foreach (Character character3 in characters2) { if (character3) { int num25 = character3.HasItem(2); int num26 = 0; if (num25 > 0) { num26 = character3.GetInvNum(num25 + 1); num21 += num26; } int num27 = character3.SellPriceOfDrops(); num21 += num27; string[] array10 = new string[5]; int num28 = 0; Character character4 = character3; array10[num28] = ((character4 != null) ? character4.ToString() : null); array10[1] = " sell price of drops "; array10[2] = num27.ToString(); array10[3] = " "; array10[4] = num26.ToString(); Debug.Log(string.Concat(array10)); } } if (characters2.Count == 0) { list.Add(creatureActions3); } CreatureActions creatureActions4 = creatureActions3; Debug.Log(((creatureActions4 != null) ? creatureActions4.ToString() : null) + " xp " + (num20 - num23).ToString()); if (creatureActions3.creatures.wipeOutBehavior == Creatures.wipeOutState.RespawnTowerWithHostileCreature || creatureActions3.creatures.wipeOutBehavior == Creatures.wipeOutState.RespawnTowerWithPeacefulCreature) { string text8 = creatureActions3.creatures.afterDeathSpawns.ToString(); Library.Characters pcrowFromName2 = Links.x.library.GetPCRowFromName(text8); num22 += pcrowFromName2._XP * number; } CreatureActions creatureActions5 = creatureActions3; Debug.Log(((creatureActions5 != null) ? creatureActions5.ToString() : null) + " wipeout " + (num22 - num24).ToString()); } } Debug.Log("-------------------"); Debug.Log("XP from NPCs " + num20.ToString()); Debug.Log("XP from Friendlies " + num13.ToString()); Debug.Log("XP from respawns (need to multiply x .75, .5 and .25 " + num22.ToString()); Debug.Log("-------------------"); Debug.Log("Emeralds from chests " + num3.ToString()); Debug.Log("Emeralds from breakables " + num2.ToString()); Debug.Log("Emeralds from items " + num.ToString()); Debug.Log("Emeralds from Friendlies " + num14.ToString()); Debug.Log("Emeralds from NPCs " + num21.ToString()); Debug.Log("-------------------"); string text9 = ""; text9 += "Manually add emeralds from : "; for (int l = 0; l < list.Count; l++) { if (l > 0) { text9 += ", "; } string text10 = text9; CreatureActions creatureActions6 = list[l]; text9 = text10 + ((creatureActions6 != null) ? creatureActions6.ToString() : null); } Debug.Log(text9); } }