public override void PostUpdateBuffs() { if (Calamity != null) { ModPlayer calPlayer = player.GetModPlayer(Calamity, "CalamityPlayer"); FieldInfo field = calPlayer.GetType().GetField("ZoneSunkenSea"); var zoneSunkenSea = field.GetValue(calPlayer); // for getting the value of the field if ((bool)zoneSunkenSea && player.wet) { player.AddBuff(Main.hardMode ? ModContent.BuffType <ForcedZen>() : ModContent.BuffType <ForcedPeace>(), 2); } } if (Thorium != null) { ModPlayer thoriumPlayer = player.GetModPlayer(Thorium, "ThoriumPlayer"); FieldInfo field = thoriumPlayer.GetType().GetField("ZoneAqua"); var zoneAquaticDepths = field.GetValue(thoriumPlayer); // for getting the value of the field if ((bool)zoneAquaticDepths && !ThorWorldBools.DownedJellyfishJam) { player.AddBuff(ModContent.BuffType <DontGoIntoTheFuckingAquaticDepthsBeforeQueen>(), 2); //hahayes player.AddBuff(BuffID.NoBuilding, 2); } if (player.ZoneJungle && !ThorWorldBools.DownedCoolBloomFacts) { player.AddBuff(ThorBuffIDs.TaintedHearts, 2); } } }
internal void RestoreData(Player player) { int k = 0; while (k < data.Count) { Mod mod = ModLoader.GetMod(data[k].modName); ModPlayer modPlayer = mod == null ? null : player.GetModPlayer(mod, data[k].name); if (modPlayer == null) { k++; } else { using (MemoryStream memoryStream = new MemoryStream(data[k].data)) { using (BinaryReader reader = new BinaryReader(memoryStream)) { modPlayer.LoadCustomData(reader); } } data.RemoveAt(k); } } }
public override void SendClientChanges(ModPlayer clientPlayer) { if (clientPlayer is GradiusModPlayer clone) { ModPacket packet = mod.GetPacket(); if (clone.isFreezing != isFreezing) { packet.Write((byte)ChensGradiusMod.PacketMessageType.ClientChangesFreezeOption); packet.Write((byte)player.whoAmI); packet.Write(isFreezing); packet.Send(); } if (clone.rotateMode != rotateMode) { packet.Write((byte)ChensGradiusMod.PacketMessageType.ClientChangesRotateOption); packet.Write((byte)player.whoAmI); packet.Write(rotateMode); packet.Write(revolveDirection); packet.Write(wasHolding); packet.Send(); } } }
public override void clientClone(ModPlayer clone) { base.clientClone(clone); var myclone = (CapitalismPlayer)clone; myclone.Logic = this.Logic; }
public override void clientClone(ModPlayer clientClone) { ShieldPlayer clone = clientClone as ShieldPlayer; // Here we would make a backup clone of values that are only correct on the local players Player instance. clone.barrierDyeItem = barrierDyeItem; }
public override void clientClone(ModPlayer clientClone) { GradiusModPlayer clone = clientClone as GradiusModPlayer; clone.isFreezing = isFreezing; clone.rotateMode = rotateMode; }
public override void SendClientChanges(ModPlayer clientPlayer) { UniqueItemsPlayer clone = clientPlayer as UniqueItemsPlayer; if (clone.SoulEffect != SoulEffect) { var packet = mod.GetPacket(); packet.Write(SoulEffect); packet.Write(SoulCharge); packet.Send(); } if (clone.ManaVampirism != ManaVampirism) { var packet = mod.GetPacket(); packet.Write(ManaVampirism); packet.Send(); } if (clone.ManaShield != ManaShield) { var packet = mod.GetPacket(); packet.Write(ManaShield); packet.Send(); } }
public void Broadcaster_Msg(Il2CppStructArray <byte> messageBytes) { var msg = Deserialize <JSRM_Message>(messageBytes); var player = SessionData.playersWithMod.FirstOrDefault(p => p.PeerID == msg.PeerID); if (player == null) { var newPlayer = new ModPlayer() { PeerID = msg.PeerID.Value, PlayerName = msg.PlayerName }; SessionData.playersWithMod.Add(newPlayer); if (!string.IsNullOrEmpty(newPlayer.PlayerName)) { SessionData.Chat.UpdateChatLog($"{newPlayer.PlayerName} has joined as Player {newPlayer.PeerID}!", "Notification"); } else { SessionData.Chat.UpdateChatLog($"Player {newPlayer.PeerID} has joined!", "Notification"); } JSRM_Msg(); return; } //SessionData.Chat.UpdateChatLog($"{player.PlayerName} has joined as Player {player.PeerID}!", "Notification"); }
public override void SendClientChanges(ModPlayer clientPlayer) { // Here we would sync something like an RPG stat whenever the player changes it. LPlayer clone = clientPlayer as LPlayer; bool send = false; for (int i = 0; i < LansToggleableBuffs.instance.getBuffLength(); i++) { if (clone.boughtbuffsavail[i] != boughtbuffsavail[i]) { send = true; break; } if (clone.buffsavail[i] != buffsavail[i]) { send = true; break; } } if (send) { var packet = mod.GetPacket(); packet.Write((byte)ModMessageType.Change); packet.Write((byte)player.whoAmI); for (int i = 0; i < LansToggleableBuffs.instance.getBuffLength(); i++) { packet.Write(boughtbuffsavail[i]); packet.Write(buffsavail[i]); } packet.Send(); } }
protected override bool PreReceive(BinaryReader reader, int fromWho) { bool result = base.PreReceive(reader, fromWho); if (!ModPlayer.Initialized) { ModPlayer.Init(); } for (int i = 1; i < ModPlayer.Inventory.Page.Length; i += 1) { for (int j = 0; j < ModPlayer.Inventory.Page[i].item.Length; j += 1) { ModPlayer.Inventory.Page[i].item[j] = ItemIO.Receive(reader, true, true); } } foreach (AlignmentStat stat in ModPlayer.Character.AlignmentStats.Values) { if (stat.DoSave) { stat.BaseAmount = reader.ReadInt32(); } } foreach (MinorStat stat in ModPlayer.Character.MinorStats.Values) { if (stat.DoSave) { stat.BaseAmount = reader.ReadSingle(); } } return(result); }
public override void NPCLoot(NPC npc) { Player player = Main.player[Main.myPlayer]; ModPlayer mplayer = (ModPlayer)player.GetModPlayer(mod, "mplayer"); if (npc.lifeMax >= 10 && npc.lifeMax < 20) { Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 6; } else if (npc.lifeMax >= 20 && npc.lifeMax < 30) { Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 10; } else if (npc.lifeMax >= 30 && npc.lifeMax < 40) { Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 14; } else if (npc.lifeMax >= 40 && npc.lifeMax < 50) { Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 20; } else if (npc.lifeMax >= 50 && npc.lifeMax < 60) { Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 28; } base.NPCLoot(npc); }
public override void clientClone(ModPlayer clone) { var myclone = (BetterBuffsPlayer)clone; myclone.MaxBuffTimes = this.MaxBuffTimes; myclone.BuffLocks = this.BuffLocks; }
public override void clientClone(ModPlayer clientClone) { AlchemistNPCPlayer clone = clientClone as AlchemistNPCPlayer; clone.BBP = BBP; clone.SnatcherCounter = SnatcherCounter; }
private void gridView_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex != 3 || e.RowIndex == -1) { return; } DataGridViewRow item = this.gridView.Rows[e.RowIndex]; string fileName = ModsSelector.GetFileName(item); ModPack selectedPack = ModsSelector.GetSelectedPack(item); try { if (!this.IsDisabled(item)) { ModPlayer.Play(selectedPack.Files.FindByName(fileName)); } else { ModPlayer.Play(GlobalData.ElswordFilesInfo.FindByName(fileName)); } } catch (Exception exception) { MsgBox.Error(exception.Message); } }
//////////////// private static void RemoveWingSlotProperty(ModPlayer mywingplayer, string propName) { object wingEquipSlot; if (ReflectionLibraries.Get(mywingplayer, propName, out wingEquipSlot) && wingEquipSlot != null) { Item wingItem; if (ReflectionLibraries.Get(wingEquipSlot, "Item", out wingItem)) { if (wingItem != null && !wingItem.IsAir) { ReflectionLibraries.Set(wingEquipSlot, "Item", new Item()); ReflectionLibraries.Set(mywingplayer, propName, wingEquipSlot); } } else { LogLibraries.Warn("Invalid Wing Mod item slot for " + propName); } } else { LogLibraries.Log("No Wing Mod item slot recognized for " + propName); } }
public override void clientClone(ModPlayer clientClone) { SoulPlayer clone = clientClone as SoulPlayer; for (int i = 0; i < this.activeSouls.GetLength(0); ++i) { for (int j = 0; j < this.activeSouls.GetLength(1); ++j) { if (this.activeSouls[i, j] == null) { this.activeSouls[i, j] = new NetSoulData(); } clone.activeSouls[i, j].stack = this.activeSouls[i, j].stack; clone.activeSouls[i, j].soulNPC = this.activeSouls[i, j].soulNPC; } } clone.seaSnailSoul = seaSnailSoul; clone.lacBeetleSoul = lacBeetleSoul; clone.cyanBeetleSoul = cyanBeetleSoul; clone.cochinealBeetleSoul = cochinealBeetleSoul; clone.iceTortoiseSoul = iceTortoiseSoul; clone.eocSoulDash = eocSoulDash; }
private void CloseApp_Click(object sender, EventArgs e) { ModPlayer.Player_Stop(); ModDriver.MikMod_Exit(); this.Close(); }
internal void RestoreData(Player player) { int k = 0; while (k < data.Count) { Mod mod = ModLoader.GetMod(data[k].modName); ModPlayer modPlayer = mod == null ? null : player.GetModPlayer(mod, data[k].name); if (modPlayer == null) { k++; } else { using (MemoryStream memoryStream = new MemoryStream(data[k].data)) { using (BinaryReader reader = new BinaryReader(memoryStream)) { try { modPlayer.LoadCustomData(reader); } catch (Exception e) { throw new CustomModDataException(mod, "Error in loading custom player data for " + mod.Name, e); } } } data.RemoveAt(k); } } }
internal static void ReadCustomData(Player player, BinaryReader reader) { int count = reader.ReadUInt16(); for (int k = 0; k < count; k++) { string modName = reader.ReadString(); string name = reader.ReadString(); byte[] data = reader.ReadBytes(reader.ReadUInt16()); Mod mod = ModLoader.GetMod(modName); ModPlayer modPlayer = mod == null ? null : player.GetModPlayer(mod, name); if (modPlayer != null) { using (MemoryStream stream = new MemoryStream(data)) { using (BinaryReader customReader = new BinaryReader(stream)) { modPlayer.LoadCustomData(customReader); } } if (modName == "ModLoader" && name == "MysteryPlayer") { ((MysteryPlayer)modPlayer).RestoreData(player); } } else { ModPlayer mystery = player.GetModPlayer(ModLoader.GetMod("ModLoader"), "MysteryPlayer"); ((MysteryPlayer)mystery).AddData(modName, name, data); } } }
// In MP, other clients need accurate information about your player or else bugs happen. // clientClone, SyncPlayer, and SendClientChanges, ensure that information is correct. // We only need to do this for data that is changed by code not executed by all clients, // or data that needs to be shared while joining a world. // For example, examplePet doesn't need to be synced because all clients know that the player is wearing the ExamplePet item in an equipment slot. // The examplePet bool is set for that player on every clients computer independently (via the Buff.Update), keeping that data in sync. // ExampleLifeFruits, however might be out of sync. For example, when joining a server, we need to share the exampleLifeFruits variable with all other clients. public override void clientClone(ModPlayer clientClone) { PlayerModded clone = clientClone as PlayerModded; // Here we would make a backup clone of values that are only correct on the local players Player instance. // Some examples would be RPG stats from a GUI, Hotkey states, and Extra Item Slots // clone.someLocalVariable = someLocalVariable; }
public override void UpdateAccessory(Player player, bool hideVisual) { ACCPlayer accPlayer = Main.player[player.whoAmI].GetModPlayer <ACCPlayer>(); if (ExpSentriesMod != null) { player.GetModPlayer <ApacchiisClassesMod.MyPlayer>().hasEquippedClass = true; accPlayer.hasDefender = true; //Reflection for cross-mod compatability without hard references ModPlayer esPlayer = player.GetModPlayer(ExpSentriesMod, "ESPlayer"); Type esPlayerType = esPlayer.GetType(); // Sentry Damage FieldInfo sentryDamage = esPlayerType.GetField("sentryDamage", BindingFlags.Instance | BindingFlags.Public); float oldSentryDamage = (float)sentryDamage.GetValue(esPlayer); sentryDamage.SetValue(esPlayer, oldSentryDamage + .09f); // Sentry Range FieldInfo sentryRange = esPlayerType.GetField("sentryRange", BindingFlags.Instance | BindingFlags.Public); float oldSentryRange = (float)sentryRange.GetValue(esPlayer); sentryRange.SetValue(esPlayer, oldSentryRange + .15f); // Sentry Speed FieldInfo sentrySpeed = esPlayerType.GetField("sentrySpeed", BindingFlags.Instance | BindingFlags.Public); float oldSentrySpeed = (float)sentrySpeed.GetValue(esPlayer); sentrySpeed.SetValue(esPlayer, oldSentrySpeed + .075f); player.maxTurrets += 2; accPlayer.defenderAbility1Damage = 250; } }
public static object GetModPlayerConditions(string modname, Player player, string playername, string ConditionName, bool nopub = false, bool sta = false) { object condition = null; if (ModLoader.GetMod(modname) != null) { Mod mod = ModLoader.GetMod(modname); try { ModPlayer modplayer = player.GetModPlayer(mod, playername); if (player != null) { BindingFlags binding = (sta? BindingFlags.Static : BindingFlags.Instance) | (nopub? BindingFlags.NonPublic : BindingFlags.Public); return(modplayer.GetType().GetField(ConditionName, binding).GetValue(modplayer)); } } catch { return(null); throw new Exception("Error in reading modplayer data."); } } return(condition); }
public override void UpdateAccessory(Player player, bool hideVisual) { ACCPlayer accPlayer = Main.player[player.whoAmI].GetModPlayer <ACCPlayer>(); if (EsperClassMod != null) { player.GetModPlayer <ApacchiisClassesMod.MyPlayer>().hasEquippedClass = true; accPlayer.hasEsper = true; accPlayer.hasClassPath2 = true; //Reflection for cross-mod compatability without hard references ModPlayer ECPlayer = player.GetModPlayer(EsperClassMod, "ECPlayer"); Type ECPlayerType = ECPlayer.GetType(); // Telekinetic Damage FieldInfo tkDamage = ECPlayerType.GetField("tkDamage", BindingFlags.Instance | BindingFlags.Public); float oldtkDamage = (float)tkDamage.GetValue(ECPlayer); tkDamage.SetValue(ECPlayer, oldtkDamage + 0.245f); // Telekinetic Crit FieldInfo tkCrit = ECPlayerType.GetField("tkCrit", BindingFlags.Instance | BindingFlags.Public); int oldtkCrit = (int)tkCrit.GetValue(ECPlayer); tkCrit.SetValue(ECPlayer, oldtkCrit + 14); // Telekinetic Velocity FieldInfo tkVel = ECPlayerType.GetField("tkVel", BindingFlags.Instance | BindingFlags.Public); float oldtkVel = (float)tkVel.GetValue(ECPlayer); tkVel.SetValue(ECPlayer, oldtkVel + 0.7f); // Max Psychosis FieldInfo maxPsychosis2 = ECPlayerType.GetField("maxPsychosis2", BindingFlags.Instance | BindingFlags.Public); int oldmaxPsychosis2 = (int)maxPsychosis2.GetValue(ECPlayer); maxPsychosis2.SetValue(ECPlayer, oldmaxPsychosis2 + 5); } }
public override void clientClone(ModPlayer clientClone) { PlayerAssist clone = clientClone as PlayerAssist; clone.BossTrophies = BossTrophies; clone.AllBossRecords = AllBossRecords; }
public override void clientClone(ModPlayer clientClone) { TLPlayer clone = (TLPlayer)clientClone; clone.Level = Level; clone.Experience = Experience; }
private void PlayPauseMod_Click(object sender, EventArgs e) { if (m_Playing) { m_Playing = false; m_WasPlaying = true; PlayPauseMod.Image = global::SharpMikTester.Properties.Resources.PlayHS; ModPlayer.Player_TogglePause(); } else { m_Playing = true; PlayPauseMod.Image = global::SharpMikTester.Properties.Resources.PauseHS; if (m_WasPlaying) { ModPlayer.Player_TogglePause(); } else { m_Player.Play(m_Mod); StopMod.Enabled = true; OpenMod.Enabled = false; } } }
protected int speed_to_finetune(uint speed, int sample) { int ctmp = 0, tmp, note = 1, finetune = 0; speed >>= 1; while ((tmp = (int)(ModPlayer.getfrequency(m_Module.flags, (uint)ModPlayer.getlinearperiod((ushort)(note << 1), (uint)0)))) < speed) { ctmp = tmp; note++; } if (tmp != speed) { if ((tmp - speed) < (speed - ctmp)) { while (tmp > speed) { tmp = (int)(ModPlayer.getfrequency(m_Module.flags, (uint)ModPlayer.getlinearperiod((ushort)(note << 1), (uint)(--finetune)))); } } else { note--; while (ctmp < speed) { ctmp = (int)(ModPlayer.getfrequency(m_Module.flags, (uint)ModPlayer.getlinearperiod((ushort)(note << 1), (uint)(++finetune)))); } } } noteindex[sample] = note - 4 * SharpMikCommon.Octave; return(finetune); }
private static void TimeStateChanged(ModPlayer modPlayer, int duration, bool stopped) { new TimeStateChangedPacket { Duration = !stopped ? 0 : duration, Stopped = stopped }.Send(); }
internal static void StopTime(ModPlayer modPlayer, int duration) { MainTime = Main.time; MainRainTimer = Main.rainTime; for (int i = 0; i < Main.npc.Length; i++) { NPC npc = Main.npc[i]; if (!npc.active || IsNPCImmune(npc)) { continue; } RegisterStoppedNPC(npc); } for (int i = 0; i < Main.projectile.Length - 1; i++) { Projectile projectile = Main.projectile[i]; if (TBAMod.Instance.TimeStopImmuneProjectiles.Contains(projectile.type)) { continue; } if (!projectile.active || projectile.modProjectile is IProjectileHasImmunityToTimeStop phitts && phitts.IsNativelyImmuneToTimeStop()) { continue; } ModProjectile modProjectile = projectile.modProjectile as Stand; if (modProjectile != null && modProjectile.projectile.owner == modPlayer.player.whoAmI) { continue; } RegisterStoppedProjectile(projectile); } for (int i = 0; i < Main.item.Length; i++) { Item item = Main.item[i]; if (!item.active || IsImmune(item)) { continue; } RegisterStoppedItem(item); } TimeStopper = modPlayer; TimeStoppedFor = duration; }
public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) { knockback = 5f; target.stepSpeed -= 3; ModPlayer player = mod.GetPlayer("MainPlayer"); player.player.AddBuff(mod.BuffType("StandAsideCD"), 300); }
public Notifier(ModPlayer.Achievement ac) { this.ac = ac; }
internal static bool WriteCustomData(ModPlayer modPlayer, BinaryWriter writer) { byte[] data; using (MemoryStream stream = new MemoryStream()) { using (BinaryWriter customWriter = new BinaryWriter(stream)) { modPlayer.SaveCustomData(customWriter); customWriter.Flush(); data = stream.ToArray(); } } if (data.Length > 0) { writer.Write(modPlayer.mod.Name); writer.Write(modPlayer.Name); writer.Write((ushort)data.Length); writer.Write(data); return true; } return false; }