public override void AddRecipeGroups() { // I'm using this as a PostPostSetupContent so all mods are loaded before I access bannerToItem Tiles.BannerRackTE.itemToBanner.Clear(); FieldInfo bannerToItemField = typeof(NPCLoader).GetField("bannerToItem", BindingFlags.NonPublic | BindingFlags.Static); Dictionary <int, int> bannerToItem = (Dictionary <int, int>)bannerToItemField.GetValue(null); foreach (var item in bannerToItem) { if (Tiles.BannerRackTE.itemToBanner.ContainsKey(item.Value)) { Logger.Warn($"BannerBonanza: Warning, multiple BannerIDs pointing to same ItemID: Banners:{Lang.GetNPCNameValue(item.Key)},{Lang.GetNPCNameValue(BannerRackTE.itemToBanner[item.Value])} Item:{Lang.GetItemNameValue(item.Value)}"); } else { Tiles.BannerRackTE.itemToBanner.Add(item.Value, item.Key); } } for (int i = -10; i < NPCID.Count; i++) { int vanillaBannerID = Terraria.Item.NPCtoBanner(i); if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(i)]) { int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID); if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled) { if (!Tiles.BannerRackTE.itemToBanner.ContainsKey(vanillaBannerItemID)) { Tiles.BannerRackTE.itemToBanner.Add(vanillaBannerItemID, vanillaBannerID); } } } } }
//// private bool CustomLoad(int npcType, int bossHeadIndex, string bossNpcUid, string displayName) { if (npcType == 0 || npcType == -1) // -1 for legacy support { return(false); } var npc = new NPC(); npc.SetDefaults(npcType); if (NPCID.GetUniqueKey(npc) != bossNpcUid) { npcType = NPCID.TypeFromUniqueKey(bossNpcUid); if (npcType > 0) { npc.SetDefaults(npcType); return(this.CustomLoad(npcType, npc.GetBossHeadTextureIndex(), bossNpcUid, npc.GivenName)); } this.mod.Logger.Info("Could not find boss head of custom boss mask for npc " + bossNpcUid); return(false); } this.BossNpcType = npcType; this.BossHeadIndex = bossHeadIndex; this.BossUid = bossNpcUid; this.BossDisplayName = displayName; return(true); }
public override void AI() { NPCID npcid = new NPCID(); if (npcid.Equals(17)) { projectile.damage = 1; } else { projectile.damage = 1; } projectile.rotation += 90f; if (projectile.alpha > 70) { projectile.alpha -= 15; if (projectile.alpha < 70) { projectile.alpha = 70; } } if (projectile.localAI[0] == 0f) { AdjustMagnitude(ref projectile.velocity); projectile.localAI[0] = 1f; } Vector2 move = Vector2.Zero; float distance = 400f; bool target = false; for (int k = 0; k < 200; k++) { if (Main.npc[k].active && !Main.npc[k].dontTakeDamage && !Main.npc[k].friendly && Main.npc[k].lifeMax > 5) { Vector2 newMove = Main.npc[k].Center - projectile.Center; float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); if (distanceTo < distance) { move = newMove; distance = distanceTo; target = true; } } } if (target) { AdjustMagnitude(ref move); projectile.velocity = (10 * projectile.velocity + move) / 11f; AdjustMagnitude(ref projectile.velocity); } if (projectile.alpha <= 100) { int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, mod.DustType("SpectreDust")); Main.dust[dust].velocity /= 2f; } }
public override int WriteTo(byte[] Buffer, int StartIndex = 0) { int cursor = StartIndex; cursor += base.WriteTo(Buffer, cursor); cursor += NPCID.WriteTo(Buffer, cursor); cursor += QuestID.WriteTo(Buffer, cursor); return(cursor - StartIndex); }
//////////////// public bool SetBoss(int npcType) { NPC npc = new NPC(); npc.SetDefaults(npcType); int idx = npc.GetBossHeadTextureIndex(); if (idx < 0 || idx >= Main.npcHeadBossTexture.Length || Main.npcHeadBossTexture[idx] == null) { return(false); } if (this.CustomLoad(npcType, idx, NPCID.GetUniqueKey(npc), npc.GivenName)) { this.item.SetNameOverride(npc.GivenName + " Mask"); } /*if( Main.netMode != 2 ) { * var tex = Main.npcHeadBossTexture[info.BossHeadIndex]; * //var old_tex = Main.armorHeadTexture[this.item.headSlot]; * if( tex == null ) { return; } * //if( old_tex == null ) { return; } * * Main.itemTexture[this.item.type] = tex; * * try { * var graDev = Main.graphics.GraphicsDevice; * var newTex = new RenderTarget2D( graDev, oldTex.Width, oldTex.Height, false, graDev.PresentationParameters.BackBufferFormat, DepthFormat.Depth24 ); * var old_ren_tar = graDev.GetRenderTargets(); * * graDev.SetRenderTarget( newTex ); * graDev.DepthStencilState = new DepthStencilState() { DepthBufferEnable = true }; * * graDev.Clear( Color.Transparent ); * var sb = new SpriteBatch( graDev ); * sb.Begin( SpriteSortMode.Deferred, BlendState.AlphaBlend ); * for( int i = 0; i <= 20; i++ ) { * var rect = new Rectangle( 0, 4 + (i * oldTex.Height), oldTex.Width, oldTex.Height / 20 ); * sb.Draw( tex, rect, Color.White ); * } * sb.End(); * * graDev.SetRenderTargets( old_ren_tar ); * * Main.armorHeadTexture[this.item.headSlot] = newTex; * } catch( Exception e ) { * ErrorLogger.Log( e.ToString() ); * } * }*/ return(true); }
public void addID(NPCID toAdd) //add checks for serialization and load from data if so { if (idsInWorld == null) { idsInWorld = new List <NPCID>(); } idsInWorld.Add(toAdd); List <string> data = LoadingDataStore.me.doesNPCExist(toAdd); if (data == null) { } else { toAdd.deserializeNPC(data[0]); } }
//// public static void ModifyHitIf(NPC npc, ref int damage, ref float knockback) { var mymod = EnragedMod.Instance; string uid = NPCID.GetUniqueKey(npc.type); if (mymod.EnragedNpcHooks.ContainsKey(uid)) { (bool _, bool isDamageResist)? behavior = mymod.EnragedNpcHooks[uid].Invoke(npc.whoAmI); if (behavior.HasValue && !behavior.Value.isDamageResist) { return; } } // damage = Math.Max((damage / 2) - 10, 1); knockback = 0; }
private void OnTriggerEnter2D(Collider2D collision) { NPCController controller; if (collision.CompareTag("NPC")) { // check for nearby NPC's controller = collision.gameObject.GetComponentInParent <NPCController>(); if (controller.isLiving()) { controller.kill(weapon); Debug.Log("Intersection With NPC from Weapon of type: " + weapon); NPCID id = collision.gameObject.GetComponentInParent <DialogueTrigger>().npcid; if (id != NPCID.CHESSMASTER && id != NPCID.GRANNY && id != NPCID.SPICEVENDOR && id != NPCID.PECULIARBOY) { Debug.Log("INNOCENT KILLED"); StoryManager.instance.SetConditional(Conditional.INNOCENT_KILLED, true); } } } }
public void Load(TagCompound tag) { type = (Type)tag.Get <int>("Type"); uniqueKey = tag.GetString("UniqueKey"); switch (type) { case Type.Item: id = ItemID.TypeFromUniqueKey(uniqueKey); break; case Type.NPC: id = NPCID.TypeFromUniqueKey(uniqueKey); break; case Type.Projectile: id = ProjectileID.TypeFromUniqueKey(uniqueKey); break; } animation = new DrawAnimationVertical(tag.Get <int>("TicksPerFrame"), tag.Get <int>("FrameCount")); }
//change back to string public string GetDialoguePath(NPCID npcid) { //DOES NOT CHANGE int time = TimeManager.instance.getInterval(); Debug.Log("time is " + time.ToString()); var jsonTextFile = Resources.Load <TextAsset>("Dialogues/Schedule/" + npcid.ToString()); // JsonData schedule = JsonMapper.ToObject(jsonTextFile.text); string option = ""; int index = 0; //test JsonData line = schedule[index]; foreach (JsonData key in line.Keys) { option = key.ToString(); } if (option == "?") { JsonData beginningTime = line[0]; //IDK schedule = beginningTime[0][0]; index = 1; //This part finds the time in the schedule for (int noOfTime = 0; noOfTime < beginningTime.Count; noOfTime++) { JsonData choice = beginningTime[noOfTime]; if (Convert.ToInt32(choice[0][0].ToString()) <= time) { schedule = choice[0]; } } } return(Path(schedule)); }
public static void ApplyExternalEffectsIf(NPC npc) { if (Main.netMode == NetmodeID.MultiplayerClient) { return; } // var mymod = EnragedMod.Instance; string uid = NPCID.GetUniqueKey(npc.type); if (mymod.EnragedNpcHooks.ContainsKey(uid)) { (bool isBramble, bool _)? behavior = mymod.EnragedNpcHooks[uid].Invoke(npc.whoAmI); if (behavior.HasValue && !behavior.Value.isBramble) { return; } } // var config = EnragedConfig.Instance; int thickness = config.Get <int>(nameof(EnragedConfig.EnragedBrambleTrailThickness)); float density = config.Get <float>(nameof(EnragedConfig.EnragedBrambleTrailDensity)); if (thickness > 0 && density > 0f) { int created = CursedBrambleTile.CreateBramblePatchAt( tileX: (int)npc.Center.X / 16, tileY: (int)npc.Center.Y / 16, radius: thickness, densityPercent: density, sync: true ); } }
public IconData(Type type, int id) { this.type = type; this.id = id; switch (type) { case Type.Item: uniqueKey = ItemID.GetUniqueKey(id); animation = Main.itemAnimations[id] as DrawAnimationVertical ?? new DrawAnimationVertical(0, 1); break; case Type.NPC: uniqueKey = NPCID.GetUniqueKey(id); animation = new DrawAnimationVertical(5, Main.npcFrameCount[id]); break; case Type.Projectile: uniqueKey = ProjectileID.GetUniqueKey(id); animation = new DrawAnimationVertical(5, Main.projFrames[id]); break; } }
//////////////// public void RegisterReceiptOfMask(Player givingPlayer, int maskType, int bossNpcType) { var mymod = TheLunaticMod.Instance; if (maskType == ModContent.ItemType <CustomBossMaskItem>() && bossNpcType != 0 && bossNpcType != -1) // -1 for legacy support { NPC npc = new NPC(); npc.SetDefaults(bossNpcType); this.GivenCustomMasksByBossUid.Add(NPCID.GetUniqueKey(npc)); } else { this.GivenVanillaMasksByType.Add(maskType); } if (mymod.Config.DebugModeInfo) { LogHelpers.Log("DEBUG Registering mask. " + givingPlayer.name + ", " + maskType); } // Buy time before the end comes if (this.GivenVanillaMasksByType.Count < (MaskLogic.AvailableMaskCount)) { var modworld = ModContent.GetInstance <TheLunaticWorld>(); int recovered = mymod.Config.HalfDaysRecoveredPerMask; switch (maskType) { case ItemID.FleshMask: recovered = (int)((float)recovered * mymod.Config.WallOfFleshMultiplier); break; case ItemID.DestroyerMask: case ItemID.TwinMask: case ItemID.SkeletronPrimeMask: case ItemID.PlanteraMask: case ItemID.GolemMask: case ItemID.DukeFishronMask: case ItemID.BossMaskBetsy: case ItemID.BossMaskCultist: case ItemID.BossMaskMoonlord: if (maskType == ItemID.BossMaskMoonlord && mymod.Config.MoonLordMaskWins) { this.GiveAllVanillaMasks(); } recovered = (int)((float)recovered * mymod.Config.HardModeMultiplier); break; } if (WorldStateHelpers.GetDayOrNightPercentDone() > 0.5f) { recovered += 1; } modworld.GameLogic.SetTime(modworld.GameLogic.HalfDaysElapsed - recovered); } // Sky flash for all if (!Main.dedServ && Main.netMode != 2) // Not server { Player currentPlayer = Main.player[Main.myPlayer]; var modplayer = currentPlayer.GetModPlayer <TheLunaticPlayer>(); modplayer.FlashMe(); } }
private void PutItemsInSuperBannerTE(BannerRackTE superBannerTE, List <int> indexes, Player player) { if (Main.netMode == NetmodeID.MultiplayerClient) { // uh oh return; } bool added = false; foreach (int invIndex in indexes) { Item item = player.inventory[invIndex]; if (!item.IsAir && BannerRackTE.itemToBanner.ContainsKey(item.type)) { if (!superBannerTE.bannerItems.Any(x => x.type == item.type)) { added = true; string message = $"Banner for {item.Name} added to Banner Rack"; NetMessage.BroadcastChatMessage(NetworkText.FromLiteral(message), Color.White); //Main.NewText($"Banner for {item.Name} added to Banner Rack"); Item clone = item.Clone(); clone.stack = 1; item.stack--; if (item.IsAir) { item.SetDefaults(0); } //bool updateNeeded = superBannerTE.bannerItems.Count < 1; superBannerTE.bannerItems.Add(clone); //superBannerTE.stringUpToDate = false; //if(updateNeeded) // superBannerTE.UpdateDrawItemIndexes(); } } } if (!added) { string message = $"No new Banners to add to Banner Rack"; //Main.NewText($"No new Banners to add to Banner Rack"); NetMessage.SendChatMessageToClient(NetworkText.FromLiteral(message), Color.White, player.whoAmI); // find closest npc that I don't have banner for. //player.NPCBannerBuff int nextNPCToKill = -1; int nextNPCToKillLeft = 9999; for (int npctype = -10; npctype < NPCLoader.NPCCount; npctype++) { int vanillaBannerID = Terraria.Item.NPCtoBanner(npctype); if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(npctype)]) { int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID); if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled) { int killsToBanner = ItemID.Sets.KillsToBanner[vanillaBannerItemID]; int killsLeft = killsToBanner - (NPC.killCount[vanillaBannerID] % killsToBanner); if (killsLeft < nextNPCToKillLeft && !superBannerTE.bannerItems.Any(x => x.type == vanillaBannerItemID)) { nextNPCToKillLeft = killsLeft; nextNPCToKill = npctype; } } } } if (nextNPCToKill != -1) { message = $"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}"; NetMessage.SendChatMessageToClient(NetworkText.FromLiteral(message), Color.White, player.whoAmI); //Main.NewText($"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}"); } } else { superBannerTE.updateNeeded = true; } }
public static void SetEnragedNpcBehaviorHook(int npcType, EnrangedBehaviorHook callback) { EnragedMod.Instance.EnragedNpcHooks[NPCID.GetUniqueKey(npcType)] = callback; }
public NPCDefinition(int type) : base(NPCID.GetUniqueKey(type)) { }
public override void RightClick(int i, int j) { Player player = Main.LocalPlayer; Tile tile = Main.tile[i, j]; int left = i - (tile.frameX % 54 / 18); int top = j - (tile.frameY / 18); int index = GetInstance <BannerRackTE>().Find(left, top); if (index == -1) { return; } BannerRackTE bannerRackTE = (BannerRackTE)TileEntity.ByID[index]; // if Client, not SP, ask server to move items for you. if (Main.netMode == NetmodeID.MultiplayerClient) { var packet = mod.GetPacket(); packet.Write((byte)BannerBonanzaMessageType.RequestSuperBannerStealBanners); packet.Write(index); List <int> indexes = new List <int>(); for (int itemIndex = 0; itemIndex < 50; itemIndex++) { Item item = player.inventory[itemIndex]; if (!item.IsAir && !player.inventory[itemIndex].favorited && BannerRackTE.itemToBanner.ContainsKey(item.type)) { // Inform Server of current item (just to be safe?) // TODO: I think NetMessage 5 doesn't sync mod data. NetMessage.SendData(MessageID.SyncEquipment, -1, -1, null, player.whoAmI, (float)itemIndex, (float)player.inventory[itemIndex].prefix, 0f, 0, 0, 0); // Mimicing QuickStackAllChests: NetMessage.SendData(85, -1, -1, null, itemIndex, 0f, 0f, 0f, 0, 0, 0); indexes.Add(itemIndex); // Prevents some moving items in ui while waiting for server response. player.inventoryChestStack[itemIndex] = true; } } packet.Write(indexes.Count); foreach (var itemIndex in indexes) { packet.Write(itemIndex); } packet.Send(); return; } else // Single Player { // foreach item in inventory, if bool added = false; for (int invIndex = 0; invIndex < 54; invIndex++) { Item item = player.inventory[invIndex]; if (!item.IsAir && BannerRackTE.itemToBanner.ContainsKey(item.type)) { if (!bannerRackTE.bannerItems.Any(x => x.type == item.type)) { added = true; Main.NewText($"Banner for {item.Name} added to Banner Rack"); Item clone = item.Clone(); clone.stack = 1; item.stack--; if (item.IsAir) { item.SetDefaults(0); } //bool updateNeeded = superBannerTE.bannerItems.Count < 1; bannerRackTE.bannerItems.Add(clone); bannerRackTE.stringUpToDate = false; //if(updateNeeded) // superBannerTE.UpdateDrawItemIndexes(); } } } if (!added) { Main.NewText($"No new Banners to add to Banner Rack"); // find closest npc that I don't have banner for. //player.NPCBannerBuff int nextNPCToKill = -1; int nextNPCToKillLeft = 9999; for (int npctype = -10; npctype < NPCLoader.NPCCount; npctype++) { int vanillaBannerID = Terraria.Item.NPCtoBanner(npctype); if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(npctype)]) { int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID); if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled) { int killsToBanner = ItemID.Sets.KillsToBanner[vanillaBannerItemID]; int killsLeft = killsToBanner - (NPC.killCount[vanillaBannerID] % killsToBanner); if (killsLeft < nextNPCToKillLeft && !bannerRackTE.bannerItems.Any(x => x.type == vanillaBannerItemID)) { nextNPCToKillLeft = killsLeft; nextNPCToKill = npctype; } } } } if (nextNPCToKill != -1) { Main.NewText($"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}"); } } } }
public static EnrangedBehaviorHook GetEnragedNpcBehaviorHook(int npcType) { EnragedMod.Instance.EnragedNpcHooks.TryGetValue(NPCID.GetUniqueKey(npcType), out EnrangedBehaviorHook callback); return(callback); }
void OnSceneGUI() { pos = Event.current.mousePosition; pos.y = SceneView.currentDrawingSceneView.camera.pixelHeight - pos.y; pos = SceneView.currentDrawingSceneView.camera.ScreenToWorldPoint(pos); pos.z = 0; Selection.selectionChanged += OnDeselect; if (im == null) { im = FindObjectOfType <IDManager>(); } if (c == null) { c = FindObjectOfType <CommonObjectsStore>(); } if (id == null) { id = FindObjectOfType <ItemDatabase>(); } Handles.BeginGUI(); /* string[] options = System.Enum.GetNames(typeof( uniqueNPCSetting)); * GUILayout.BeginHorizontal(); * * foreach(string st in options) * { * if (button(st)) * { * mySetting = getSettingFromString(st) ; * } * } * GUILayout.EndHorizontal();*/ if (mySetting == uniqueNPCSetting.menu) { //draw buttons on each of the NPCID's found in the level, if (npcsInWorld == null || npcsInWorld.Length == 0) { refreshNPCS(); } foreach (NPCID npc in npcsInWorld) { inworldLabel(npc.transform.position, npc.firstName + " " + npc.lastName); if (inworldButton(npc.gameObject.transform.position, Color.cyan)) { npcEditing = npc.gameObject; controllerEditing = npcEditing.GetComponent <NPCController>(); clothesEditing = npcEditing.GetComponent <PersonClothesController>(); deciderEditing = npcEditing.GetComponent <NPCBehaviourDecider>(); inventoryEditing = npcEditing.GetComponent <Inventory>(); idEditing = npc; npcItems = npcEditing.GetComponent <NPCItemInitialiser>(); mySetting = uniqueNPCSetting.editing; } } if (button("New Unique NPC")) { GameObject g = (GameObject)Instantiate(c.civilian, new Vector3(SceneView.currentDrawingSceneView.camera.transform.position.x, SceneView.currentDrawingSceneView.camera.transform.position.y, 0), Quaternion.Euler(0, 0, 0)); NPCID createdID = g.AddComponent <NPCID>(); createdID.myId = im.getNPCID(); g.GetComponent <NPCBehaviourDecider>().myType = AIType.neutral; g.GetComponent <NPCController>().myType = AIType.neutral; refreshNPCS(); EditorUtility.SetDirty(id); EditorUtility.SetDirty(createdID); } } else if (mySetting == uniqueNPCSetting.editing) { if (button("Menu")) { EditorUtility.SetDirty(npcEditing); EditorUtility.SetDirty(controllerEditing); EditorUtility.SetDirty(clothesEditing); EditorUtility.SetDirty(deciderEditing); EditorUtility.SetDirty(idEditing); EditorUtility.SetDirty(inventoryEditing); EditorUtility.SetDirty(npcItems); npcEditing = null; controllerEditing = null; clothesEditing = null; deciderEditing = null; mySetting = uniqueNPCSetting.menu; } string[] editOptions = System.Enum.GetNames(typeof(editingTask)); string info = "Editing NPC with the ID " + idEditing.myId; label(info, info.Length * 8, 30); taskScroll = GUILayout.BeginScrollView(taskScroll, GUILayout.Width(500), GUILayout.Height(50)); GUILayout.BeginHorizontal(); foreach (string st in editOptions) { if (button(st)) { currentTask = getTaskFromString(st); } } GUILayout.EndScrollView(); GUILayout.EndHorizontal(); GUILayout.Label(currentTask.ToString()); if (currentTask == editingTask.name) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); GUILayout.BeginHorizontal(); string st = "Name: " + idEditing.firstName + " " + idEditing.lastName; label(st, st.Length * 8, 30); idEditing.firstName = textInput(idEditing.firstName); idEditing.lastName = textInput(idEditing.lastName); EditorUtility.SetDirty(idEditing); EditorUtility.SetDirty(npcEditing); GUILayout.EndHorizontal(); if (button("NPC Always Active" + idEditing.alwaysActive.ToString())) { idEditing.alwaysActive = !idEditing.alwaysActive; } GUILayout.EndScrollView(); } else if (currentTask == editingTask.position) { if (editRotation == false) { if (button("Change Rotation")) { editRotation = true; } drawPositionHandle(ref npcEditing); EditorUtility.SetDirty(npcEditing); } else { if (button("Change Position")) { editRotation = false; } drawRotationHandle(ref npcEditing); EditorUtility.SetDirty(npcEditing); } } else if (currentTask == editingTask.items) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); label("Items To add:"); string item = getItems(); if (item != "None") { if (npcItems.itemsToAdd == null) { npcItems.itemsToAdd = new List <string>(); } npcItems.itemsToAdd.Add(item); EditorUtility.SetDirty(npcItems); } label("Add random item:"); string randItem = getItems(); if (randItem != "None") { if (npcItems.randomItems == null) { npcItems.randomItems = new List <string>(); } npcItems.randomItems.Add(randItem); EditorUtility.SetDirty(npcItems); } label("Items Being Given"); foreach (string st in npcItems.itemsToAdd) { GUILayout.BeginHorizontal(); label(st, st.Length * 8, 30); if (button("X")) { npcItems.itemsToAdd.Remove(st); EditorUtility.SetDirty(npcItems); return; } GUILayout.EndHorizontal(); } label("Items that may be given"); foreach (string st in npcItems.randomItems) { GUILayout.BeginHorizontal(); label(st, st.Length * 8, 30); if (button("X")) { npcItems.randomItems.Remove(st); EditorUtility.SetDirty(npcItems); return; } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); } else if (currentTask == editingTask.aesthetics) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); if (clothesEditing.clothesToWearAtStart == null) { clothesEditing.clothesToWearAtStart = new List <string>(); } if (button("Random Clothes " + clothesEditing.getRandomClothes.ToString())) { clothesEditing.getRandomClothes = !clothesEditing.getRandomClothes; } label("Clothes you could add:"); if (clothesEditing.getRandomClothes == false) { string st = getClothes(); if (st != "None") { if (clothesEditing.clothesToWearAtStart.Contains(st) == false) { clothesEditing.clothesToWearAtStart.Add(st); } } } foreach (string st in clothesEditing.clothesToWearAtStart) { GUILayout.BeginHorizontal(); label(st, st.Length * 8, 30); if (button("X")) { clothesEditing.clothesToWearAtStart.Remove(st); return; } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); } else if (currentTask == editingTask.whenToActivate) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); label("Activate NPC:"); /* label("On Mission Start"); * string missionStart = getMission(); * if(missionStart!="None") * { * if (idEditing.started_missionsToActivateOn == null) * { * idEditing.started_missionsToActivateOn = new List<string>(); * } * if (idEditing.started_missionsToActivateOn.Contains(missionStart) == false) * { * idEditing.started_missionsToActivateOn.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * } * * label("On Mission Finish"); * string missionEnd = getMission(); * if(missionEnd!="None") * { * if (idEditing.finished_missionsToActivateOn == null) * { * idEditing.finished_missionsToActivateOn = new List<string>(); * } * if (idEditing.finished_missionsToActivateOn.Contains(missionStart) == false) * { * idEditing.finished_missionsToActivateOn.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * } */ label("Unique NPC's Dead"); int val = getUniquieNPCID(); if (val != -1) { if (idEditing.idsToActivateOnIfDead == null) { idEditing.idsToActivateOnIfDead = new List <int>(); } if (idEditing.idsToActivateOnIfDead.Contains(val) == false) { idEditing.idsToActivateOnIfDead.Add(val); } } label("------------------------"); GUILayout.EndScrollView(); } else if (currentTask == editingTask.whenToDeactivate) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); label("Deactivate NPC:"); /* label("On Mission Start"); * string missionStart = getMission(); * if (missionStart != "None") * { * if (idEditing.started_missionsToDeactivateOn == null) * { * idEditing.started_missionsToDeactivateOn = new List<string>(); * } * if (idEditing.started_missionsToDeactivateOn.Contains(missionStart) == false) * { * idEditing.started_missionsToDeactivateOn.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * } * * label("On Mission Finish"); * string missionEnd = getMission(); * if (missionEnd != "None") * { * if (idEditing.finished_missionsToDeactivateOn == null) * { * idEditing.finished_missionsToDeactivateOn = new List<string>(); * } * if (idEditing.finished_missionsToDeactivateOn.Contains(missionStart) == false) * { * idEditing.finished_missionsToDeactivateOn.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * }*/ label("Unique NPC's Dead"); int val = getUniquieNPCID(); if (val != -1) { if (idEditing.idsToDeactivateOnIfDead == null) { idEditing.idsToDeactivateOnIfDead = new List <int>(); } if (idEditing.idsToDeactivateOnIfDead.Contains(val) == false) { idEditing.idsToDeactivateOnIfDead.Add(val); EditorUtility.SetDirty(idEditing); } } GUILayout.EndScrollView(); } else if (currentTask == editingTask.peacefulConditions) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); label("Make NPC Peaceful:"); /*label("On Mission Start"); * string missionStart = getMission(); * if (missionStart != "None") * { * if (idEditing.started_missionsToMakeNotHostile == null) * { * idEditing.started_missionsToMakeNotHostile = new List<string>(); * } * if (idEditing.started_missionsToMakeNotHostile.Contains(missionStart) == false) * { * idEditing.started_missionsToMakeNotHostile.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * } * * label("On Mission Finish"); * string missionEnd = getMission(); * if (missionEnd != "None") * { * if (idEditing.finished_missionsToMakeNotHostile == null) * { * idEditing.finished_missionsToMakeNotHostile = new List<string>(); * } * if (idEditing.finished_missionsToMakeNotHostile.Contains(missionStart) == false) * { * idEditing.finished_missionsToMakeNotHostile.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * } */ label("Unique NPC's Dead"); int val = getUniquieNPCID(); if (val != -1) { if (idEditing.idsThatMakeNotHostileOnDeath == null) { idEditing.idsThatMakeNotHostileOnDeath = new List <int>(); } if (idEditing.idsThatMakeNotHostileOnDeath.Contains(val) == false) { idEditing.idsThatMakeNotHostileOnDeath.Add(val); EditorUtility.SetDirty(idEditing); } } GUILayout.EndScrollView(); } else if (currentTask == editingTask.hostileConditions) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); label("Make NPC Hostile:"); /* label("On Mission Start"); * string missionStart = getMission(); * if (missionStart != "None") * { * if (idEditing.started_missionsToMakeHostile == null) * { * idEditing.started_missionsToMakeHostile = new List<string>(); * } * if (idEditing.started_missionsToMakeHostile.Contains(missionStart) == false) * { * idEditing.started_missionsToMakeHostile.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * } * * label("On Mission Finish"); * string missionEnd = getMission(); * if (missionEnd != "None") * { * if (idEditing.finished_missionsToMakeHostile == null) * { * idEditing.finished_missionsToMakeHostile = new List<string>(); * } * if (idEditing.finished_missionsToMakeHostile.Contains(missionStart) == false) * { * idEditing.finished_missionsToMakeHostile.Add(missionStart); * EditorUtility.SetDirty(idEditing); * return; * } * }*/ label("Unique NPC's Dead"); int val = getUniquieNPCID(); if (val != -1) { if (idEditing.idsThatMakeHostileOnDeath == null) { idEditing.idsThatMakeHostileOnDeath = new List <int>(); } if (idEditing.idsThatMakeHostileOnDeath.Contains(val) == false) { idEditing.idsThatMakeHostileOnDeath.Add(val); EditorUtility.SetDirty(idEditing); } } GUILayout.EndScrollView(); } else if (currentTask == editingTask.whenToEnable) { } else if (currentTask == editingTask.whenToDisable) { } else if (currentTask == editingTask.editLists) { viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400)); label("Hostile Conditions:"); //hostile if (idEditing.idsThatMakeHostileOnDeath != null) { foreach (int i in idEditing.idsThatMakeHostileOnDeath) { if (button("Remove " + i.ToString())) { idEditing.idsThatMakeHostileOnDeath.Remove(i); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.started_missionsToMakeHostile != null) { foreach (string st in idEditing.started_missionsToMakeHostile) { if (button("Remove " + st)) { idEditing.started_missionsToMakeHostile.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.finished_missionsToMakeHostile != null) { foreach (string st in idEditing.finished_missionsToMakeHostile) { if (button("Remove " + st)) { idEditing.finished_missionsToMakeHostile.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } label("Peaceful Conditions:"); //not hostile if (idEditing.idsThatMakeNotHostileOnDeath != null) { foreach (int i in idEditing.idsThatMakeNotHostileOnDeath) { if (button("Remove " + i.ToString())) { idEditing.idsThatMakeNotHostileOnDeath.Remove(i); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.started_missionsToMakeNotHostile != null) { foreach (string st in idEditing.started_missionsToMakeNotHostile) { if (button("Remove " + st)) { idEditing.started_missionsToMakeNotHostile.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.finished_missionsToMakeNotHostile != null) { foreach (string st in idEditing.finished_missionsToMakeNotHostile) { if (button("Remove " + st)) { idEditing.finished_missionsToMakeNotHostile.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } label("Activate Conditions:"); //activate NPC if (idEditing.idsToActivateOnIfDead != null) { foreach (int i in idEditing.idsToActivateOnIfDead) { if (button("Remove " + i.ToString())) { idEditing.idsToActivateOnIfDead.Remove(i); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.started_missionsToActivateOn != null) { foreach (string st in idEditing.started_missionsToActivateOn) { if (button("Remove " + st)) { idEditing.started_missionsToActivateOn.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.finished_missionsToActivateOn != null) { foreach (string st in idEditing.finished_missionsToActivateOn) { if (button("Remove " + st)) { idEditing.finished_missionsToActivateOn.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } label("Deactivate Conditions:"); //deactivate NPC if (idEditing.idsToDeactivateOnIfDead != null) { foreach (int i in idEditing.idsToDeactivateOnIfDead) { if (button("Remove " + i.ToString())) { idEditing.idsToDeactivateOnIfDead.Remove(i); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.started_missionsToDeactivateOn != null) { foreach (string st in idEditing.finished_missionsToDeactivateOn) { if (button("Remove " + st)) { idEditing.finished_missionsToDeactivateOn.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } if (idEditing.finished_missionsToDeactivateOn != null) { foreach (string st in idEditing.finished_missionsToDeactivateOn) { if (button("Remove " + st)) { idEditing.finished_missionsToDeactivateOn.Remove(st); EditorUtility.SetDirty(idEditing); return; } } } GUILayout.EndScrollView(); } displayGlobalNPCData(); //name //aesthetics (clothes, skin color) //Items //when to enable (What conditions have to be met for the NPC to start appearing in the world). (Mission done etc..) //when to disable (what conditions cause the NPC to stop beign displayed in the world) (not available at that time, mission done etc...) //hostile conditions (What conditions would cause the NPC to become hostile) (been attacked by player, at war with faction, wanted...) //peaceful conditions (what conditions would cause the NPC to become peaceful after turning hostile) (Mission complete, time passed) //stopping conditions (What conditions cause the NPC to stop existing in the world)(dead,mission done etc...) } Handles.EndGUI(); }
public static void InitializeLegacyLocalization() { FillNameCacheArray <PrefixID, int>("Prefix", prefix); for (int i = 0; i < gen.Length; i++) { gen[i] = Language.GetText("LegacyWorldGen." + i); } for (int j = 0; j < menu.Length; j++) { menu[j] = Language.GetText("LegacyMenu." + j); } for (int k = 0; k < inter.Length; k++) { inter[k] = Language.GetText("LegacyInterface." + k); } for (int l = 0; l < misc.Length; l++) { misc[l] = Language.GetText("LegacyMisc." + l); } for (int m = 0; m < mp.Length; m++) { mp[m] = Language.GetText("LegacyMultiplayer." + m); } for (int n = 0; n < tip.Length; n++) { tip[n] = Language.GetText("LegacyTooltip." + n); } for (int num = 0; num < chestType.Length; num++) { chestType[num] = Language.GetText("LegacyChestType." + num); } for (int num2 = 0; num2 < dresserType.Length; num2++) { dresserType[num2] = Language.GetText("LegacyDresserType." + num2); } FillNameCacheArray <ItemID, short>("ItemName", _itemNameCache); FillNameCacheArray <MobileLangID, short>("Mobile", mobile); for (int num3 = 0; num3 < _negativeItemNameCache.Length; num3++) { _negativeItemNameCache[num3] = LocalizedText.Empty; } _negativeItemNameCache[23] = Language.GetText("ItemName.YellowPhasesaber"); _negativeItemNameCache[22] = Language.GetText("ItemName.WhitePhasesaber"); _negativeItemNameCache[21] = Language.GetText("ItemName.PurplePhasesaber"); _negativeItemNameCache[20] = Language.GetText("ItemName.GreenPhasesaber"); _negativeItemNameCache[19] = Language.GetText("ItemName.RedPhasesaber"); _negativeItemNameCache[18] = Language.GetText("ItemName.BluePhasesaber"); FillNameCacheArray <ProjectileID, short>("ProjectileName", _projectileNameCache); FillNameCacheArray <NPCID, short>("NPCName", _npcNameCache); FillNameCacheArray <BuffID, int>("BuffName", _buffNameCache); FillNameCacheArray <BuffID, int>("BuffDescription", _buffDescriptionCache); for (int num4 = -65; num4 < 0; num4++) { _negativeNpcNameCache[-num4 - 1] = _npcNameCache[NPCID.FromNetId(num4)]; } _negativeNpcNameCache[0] = Language.GetText("NPCName.Slimeling"); _negativeNpcNameCache[1] = Language.GetText("NPCName.Slimer2"); _negativeNpcNameCache[2] = Language.GetText("NPCName.GreenSlime"); _negativeNpcNameCache[3] = Language.GetText("NPCName.Pinky"); _negativeNpcNameCache[4] = Language.GetText("NPCName.BabySlime"); _negativeNpcNameCache[5] = Language.GetText("NPCName.BlackSlime"); _negativeNpcNameCache[6] = Language.GetText("NPCName.PurpleSlime"); _negativeNpcNameCache[7] = Language.GetText("NPCName.RedSlime"); _negativeNpcNameCache[8] = Language.GetText("NPCName.YellowSlime"); _negativeNpcNameCache[9] = Language.GetText("NPCName.JungleSlime"); _negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie"); _negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie"); ItemTooltip.AddGlobalProcessor(delegate(string tooltip) { if (tooltip.Contains("<right>")) { tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick")); } return(tooltip); }); for (int num5 = 0; num5 < _itemTooltipCache.Length; num5++) { _itemTooltipCache[num5] = ItemTooltip.None; } for (int num6 = 0; num6 < _negativeItemTooltipCache.Length; num6++) { _negativeItemTooltipCache[num6] = ItemTooltip.None; } (from f in typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public) where f.FieldType == typeof(short) select f).ToList().ForEach(delegate(FieldInfo field) { short num8 = (short)field.GetValue(null); if (num8 > 0 && num8 < _itemTooltipCache.Length) { _itemTooltipCache[num8] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name); } }); _negativeItemTooltipCache[23] = ItemTooltip.FromLanguageKey("ItemTooltip.YellowPhasesaber"); _negativeItemTooltipCache[22] = ItemTooltip.FromLanguageKey("ItemTooltip.WhitePhasesaber"); _negativeItemTooltipCache[21] = ItemTooltip.FromLanguageKey("ItemTooltip.PurplePhasesaber"); _negativeItemTooltipCache[20] = ItemTooltip.FromLanguageKey("ItemTooltip.GreenPhasesaber"); _negativeItemTooltipCache[19] = ItemTooltip.FromLanguageKey("ItemTooltip.RedPhasesaber"); _negativeItemTooltipCache[18] = ItemTooltip.FromLanguageKey("ItemTooltip.BluePhasesaber"); for (int num7 = 0; num7 < Recipe.numRecipes; num7++) { Main.recipe[num7].createItem.RebuildTooltip(); } }
public static void InitializeLegacyLocalization() { FillNameCacheArray <PrefixID, int>("Prefix", prefix); for (int i = 0; i < gen.Length; i++) { gen[i] = Language.GetText("LegacyWorldGen." + i); } for (int j = 0; j < menu.Length; j++) { menu[j] = Language.GetText("LegacyMenu." + j); } for (int k = 0; k < inter.Length; k++) { inter[k] = Language.GetText("LegacyInterface." + k); } for (int l = 0; l < misc.Length; l++) { misc[l] = Language.GetText("LegacyMisc." + l); } for (int m = 0; m < mp.Length; m++) { mp[m] = Language.GetText("LegacyMultiplayer." + m); } for (int n = 0; n < tip.Length; n++) { tip[n] = Language.GetText("LegacyTooltip." + n); } for (int num = 0; num < chestType.Length; num++) { chestType[num] = Language.GetText("LegacyChestType." + num); } for (int num2 = 0; num2 < chestType2.Length; num2++) { chestType2[num2] = Language.GetText("LegacyChestType2." + num2); } for (int num3 = 0; num3 < dresserType.Length; num3++) { dresserType[num3] = Language.GetText("LegacyDresserType." + num3); } FillNameCacheArray <ItemID, short>("ItemName", _itemNameCache); FillNameCacheArray <ProjectileID, short>("ProjectileName", _projectileNameCache); FillNameCacheArray <NPCID, short>("NPCName", _npcNameCache); FillNameCacheArray <BuffID, int>("BuffName", _buffNameCache); FillNameCacheArray <BuffID, int>("BuffDescription", _buffDescriptionCache); FillNameCacheArray <EmoteID, int>("EmojiName", _emojiNameCache, leaveMissingEntriesBlank: true); for (int num4 = -65; num4 < 0; num4++) { _negativeNpcNameCache[-num4 - 1] = _npcNameCache[NPCID.FromNetId(num4)]; } _negativeNpcNameCache[0] = Language.GetText("NPCName.Slimeling"); _negativeNpcNameCache[1] = Language.GetText("NPCName.Slimer2"); _negativeNpcNameCache[2] = Language.GetText("NPCName.GreenSlime"); _negativeNpcNameCache[3] = Language.GetText("NPCName.Pinky"); _negativeNpcNameCache[4] = Language.GetText("NPCName.BabySlime"); _negativeNpcNameCache[5] = Language.GetText("NPCName.BlackSlime"); _negativeNpcNameCache[6] = Language.GetText("NPCName.PurpleSlime"); _negativeNpcNameCache[7] = Language.GetText("NPCName.RedSlime"); _negativeNpcNameCache[8] = Language.GetText("NPCName.YellowSlime"); _negativeNpcNameCache[9] = Language.GetText("NPCName.JungleSlime"); _negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie"); _negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie"); ItemTooltip.AddGlobalProcessor(delegate(string tooltip) { if (tooltip.Contains("<right>")) { InputMode inputMode = InputMode.XBoxGamepad; if (PlayerInput.UsingGamepad) { inputMode = InputMode.XBoxGamepadUI; } if (inputMode == InputMode.XBoxGamepadUI) { KeyConfiguration keyConfiguration = PlayerInput.CurrentProfile.InputModes[inputMode]; string text = PlayerInput.BuildCommand("", true, keyConfiguration.KeyStatus["MouseRight"]); text = text.Replace(": ", ""); tooltip = tooltip.Replace("<right>", text); } else { tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick")); } } if (tooltip.Contains("<left>")) { InputMode inputMode2 = InputMode.XBoxGamepad; if (PlayerInput.UsingGamepad) { inputMode2 = InputMode.XBoxGamepadUI; } if (inputMode2 == InputMode.XBoxGamepadUI) { KeyConfiguration keyConfiguration2 = PlayerInput.CurrentProfile.InputModes[inputMode2]; string text2 = PlayerInput.BuildCommand("", true, keyConfiguration2.KeyStatus["MouseLeft"]); text2 = text2.Replace(": ", ""); tooltip = tooltip.Replace("<left>", text2); } else { tooltip = tooltip.Replace("<left>", Language.GetTextValue("Controls.LeftClick")); } } return(tooltip); }); for (int num5 = 0; num5 < _itemTooltipCache.Length; num5++) { _itemTooltipCache[num5] = ItemTooltip.None; } (from f in typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public) where f.FieldType == typeof(short) select f).ToList().ForEach(delegate(FieldInfo field) { short num6 = (short)field.GetValue(null); if (num6 > 0 && num6 < _itemTooltipCache.Length) { _itemTooltipCache[num6] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name); } }); }
public override void NPCLoot(NPC npc) { if (npc == null) { return; } var mymod = (TheLunaticMod)this.mod; if (!mymod.Config.Enabled) { return; } if (!npc.boss && npc.type != 551 && npc.type != 398) { return; } // Betsy isn't a boss? var myworld = ModContent.GetInstance <TheLunaticWorld>(); if (!myworld.GameLogic.HaveWeHopeToWin()) { return; } Item item = null; int maskType = MaskLogic.GetMaskTypeOfNpc(npc.type); if (maskType == -1) { return; } // Already given this mask? bool isVanilla = MaskLogic.AllVanillaMasks.Contains(maskType); if (!myworld.MaskLogic.GivenVanillaMasksByType.Contains(maskType)) { if (!isVanilla && myworld.MaskLogic.GivenCustomMasksByBossUid.Contains(NPCID.GetUniqueKey(npc))) { return; } } // No modded masks allowed? if (!isVanilla && mymod.Config.OnlyVanillaBossesDropMasks) { return; } int which = ItemHelpers.CreateItem(npc.position, maskType, 1, 15, 15); item = Main.item[which]; if (item != null && !item.IsAir) { if (maskType == ModContent.ItemType <CustomBossMaskItem>()) { var moditem = (CustomBossMaskItem)item.modItem; if (!moditem.SetBoss(npc.type)) { ItemHelpers.DestroyWorldItem(which); } } else { /*if( !modworld.MaskLogic.GivenVanillaMasks.Contains( mask_type ) ) { * // Does this mask already exist in the world? * for( int i = 0; i < Main.item.Length; i++ ) { * if( Main.item[i] != null && Main.item[i].active && Main.item[i].type == mask_type ) { * item = Main.item[i]; * break; * } * } * }*/ } } else { LogHelpers.Log("Could not spawn a mask of type " + maskType); } }
public static void InitializeLegacyLocalization() { Lang.FillNameCacheArray <PrefixID, int>("Prefix", Lang.prefix, false); for (int index = 0; index < Lang.gen.Length; ++index) { Lang.gen[index] = Language.GetText("LegacyWorldGen." + (object)index); } for (int index = 0; index < Lang.menu.Length; ++index) { Lang.menu[index] = Language.GetText("LegacyMenu." + (object)index); } for (int index = 0; index < Lang.inter.Length; ++index) { Lang.inter[index] = Language.GetText("LegacyInterface." + (object)index); } for (int index = 0; index < Lang.misc.Length; ++index) { Lang.misc[index] = Language.GetText("LegacyMisc." + (object)index); } for (int index = 0; index < Lang.mp.Length; ++index) { Lang.mp[index] = Language.GetText("LegacyMultiplayer." + (object)index); } for (int index = 0; index < Lang.tip.Length; ++index) { Lang.tip[index] = Language.GetText("LegacyTooltip." + (object)index); } for (int index = 0; index < Lang.chestType.Length; ++index) { Lang.chestType[index] = Language.GetText("LegacyChestType." + (object)index); } for (int index = 0; index < Lang.chestType2.Length; ++index) { Lang.chestType2[index] = Language.GetText("LegacyChestType2." + (object)index); } for (int index = 0; index < Lang.dresserType.Length; ++index) { Lang.dresserType[index] = Language.GetText("LegacyDresserType." + (object)index); } Lang.FillNameCacheArray <ItemID, short>("ItemName", Lang._itemNameCache, false); Lang.FillNameCacheArray <ProjectileID, short>("ProjectileName", Lang._projectileNameCache, false); Lang.FillNameCacheArray <NPCID, short>("NPCName", Lang._npcNameCache, false); Lang.FillNameCacheArray <BuffID, int>("BuffName", Lang._buffNameCache, false); Lang.FillNameCacheArray <BuffID, int>("BuffDescription", Lang._buffDescriptionCache, false); for (int id = -65; id < 0; ++id) { Lang._negativeNpcNameCache[-id - 1] = Lang._npcNameCache[NPCID.FromNetId(id)]; } Lang._negativeNpcNameCache[0] = Language.GetText("NPCName.Slimeling"); Lang._negativeNpcNameCache[1] = Language.GetText("NPCName.Slimer2"); Lang._negativeNpcNameCache[2] = Language.GetText("NPCName.GreenSlime"); Lang._negativeNpcNameCache[3] = Language.GetText("NPCName.Pinky"); Lang._negativeNpcNameCache[4] = Language.GetText("NPCName.BabySlime"); Lang._negativeNpcNameCache[5] = Language.GetText("NPCName.BlackSlime"); Lang._negativeNpcNameCache[6] = Language.GetText("NPCName.PurpleSlime"); Lang._negativeNpcNameCache[7] = Language.GetText("NPCName.RedSlime"); Lang._negativeNpcNameCache[8] = Language.GetText("NPCName.YellowSlime"); Lang._negativeNpcNameCache[9] = Language.GetText("NPCName.JungleSlime"); Lang._negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie"); Lang._negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie"); ItemTooltip.AddGlobalProcessor((TooltipProcessor)(tooltip => { if (tooltip.Contains("<right>")) { InputMode index = InputMode.XBoxGamepad; if (PlayerInput.UsingGamepad) { index = InputMode.XBoxGamepadUI; } if (index == InputMode.XBoxGamepadUI) { string newValue = PlayerInput.BuildCommand("", true, PlayerInput.CurrentProfile.InputModes[index].KeyStatus["MouseRight"]).Replace(": ", ""); tooltip = tooltip.Replace("<right>", newValue); } else { tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick")); } } return(tooltip); })); for (int index = 0; index < Lang._itemTooltipCache.Length; ++index) { Lang._itemTooltipCache[index] = ItemTooltip.None; } ((IEnumerable <FieldInfo>) typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public)).Where <FieldInfo>((Func <FieldInfo, bool>)(f => f.FieldType == typeof(short))).ToList <FieldInfo>().ForEach((Action <FieldInfo>)(field => { short num = (short)field.GetValue((object)null); if ((int)num <= 0 || (int)num >= Lang._itemTooltipCache.Length) { return; } Lang._itemTooltipCache[(int)num] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name); })); }
public override void SetDefaults(NPC npc) { if (npc.townNPC && npc.type < NPCID.Count && npc.type != NPCID.OldMan) { Main.npcCatchable[npc.type] = true; npc.catchItem = npc.type == NPCID.DD2Bartender ? (short)mod.ItemType("Tavernkeep") : (short)mod.ItemType(NPCID.GetUniqueKey(npc.type).Replace("Terraria ", string.Empty)); } if (npc.type == NPCID.SkeletonMerchant) { Main.npcCatchable[npc.type] = true; npc.catchItem = (short)mod.ItemType("SkeletonMerchant"); } }