public void GainXP(int amount, bool first = true) { if (XPToLevel() == -1) { return; } if (first) { K2Player.SendIfLocal(new GainXPPacket(amount)); } XP += amount; if (XP >= XPToLevel()) { XP -= XPToLevel(); LevelUp(); GainXP(0, false); } if (first) { CombatText.NewText(Player.getRect(), new Color(127, 159, 255), amount + " XP"); } }
public override void NPCLoot(NPC npc) { if (npc.lifeMax < 10) { return; } if (npc.friendly) { return; } if (npc.townNPC) { return; } RPGCharacter character = K2Player.Get().Character; int baseExp = (int)Math.Round(Level * Math.Pow(OriginalLife, 0.5) / 4 + 3); Prefix.NPCLoot(npc, character, ref baseExp); character.GainXP(baseExp * 2 / (Main.expertMode ? 3 : 2)); if (npc.boss) { Main.player.DoActive(player => { K2Player k2player = K2Player.Get(player); if (npc.type == NPCID.WallofFlesh && k2player.Inventory.Unlocked < 2) { k2player.Inventory.Unlocked = 2; } else if (k2player.Inventory.Unlocked < 1) { k2player.Inventory.Unlocked = 1; } }); } foreach (KeyValuePair <Predicate <NPC>, int> kvp in LevelLocks.levelPlateaus) { if (kvp.Key(npc)) { character.SetLevel(kvp.Value + 1); } } }
public InventoryHandler(K2Player k2player) { K2Player = k2player; lootLogic = new ItemLootLogic(this, k2player); }
protected override void Click() { K2Player.OpenStatAllocationGUI(); }
internal ItemLootLogic(InventoryHandler inventory, K2Player k2player) { this.inventory = inventory; this.k2player = k2player; }