public static PLTrackerMissile CreateMissile(int Subtype, int level, int inSubTypeData = 0) { PLTrackerMissile InMissile; if (Subtype >= Instance.VanillaMissileMaxType) { InMissile = new PLTrackerMissile(ETrackerMissileType.MAX, level, inSubTypeData); int subtypeformodded = Subtype - Instance.VanillaMissileMaxType; if (Global.DebugLogging) { Logger.Info($"Subtype for modded is {subtypeformodded}"); } if (subtypeformodded <= Instance.MissileTypes.Count && subtypeformodded > -1) { if (Global.DebugLogging) { Logger.Info("Creating Missile from list info"); } MissilePlugin MissileType = Instance.MissileTypes[Subtype - Instance.VanillaMissileMaxType]; InMissile.SubType = Subtype; InMissile.Name = MissileType.Name; InMissile.Desc = MissileType.Description; InMissile.GetType().GetField("m_IconTexture", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InMissile, MissileType.IconTexture); InMissile.Damage = MissileType.Damage; InMissile.Speed = MissileType.Speed; InMissile.DamageType = MissileType.DamageType; InMissile.MissileRefillPrice = MissileType.MissileRefillPrice; InMissile.AmmoCapacity = MissileType.AmmoCapacity; InMissile.PrefabID = MissileType.PrefabID; InMissile.GetType().GetField("m_MarketPrice", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InMissile, (ObscuredInt)MissileType.MarketPrice); InMissile.CargoVisualPrefabID = MissileType.CargoVisualID; InMissile.CanBeDroppedOnShipDeath = MissileType.CanBeDroppedOnShipDeath; InMissile.Experimental = MissileType.Experimental; InMissile.Unstable = MissileType.Unstable; InMissile.Contraband = MissileType.Contraband; InMissile.GetType().GetField("Price_LevelMultiplierExponent", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InMissile, (ObscuredFloat)MissileType.Price_LevelMultiplierExponent); if (PhotonNetwork.isMasterClient) { InMissile.SubTypeData = (short)InMissile.AmmoCapacity; } } } else { InMissile = new PLTrackerMissile((ETrackerMissileType)Subtype, level, inSubTypeData); } return(InMissile); }
public static PLTrackerMissile CreateMissile(int Subtype, int level, int inSubTypeData = 0) { PLTrackerMissile InMissile; if (Subtype >= Instance.VanillaMissileMaxType) { InMissile = new PLTrackerMissile(ETrackerMissileType.MAX, level, inSubTypeData); int subtypeformodded = Subtype - Instance.VanillaMissileMaxType; if (subtypeformodded <= Instance.MissileTypes.Count && subtypeformodded > -1) { MissileMod MissileType = Instance.MissileTypes[Subtype - Instance.VanillaMissileMaxType]; InMissile.SubType = Subtype; InMissile.Name = MissileType.Name; InMissile.Desc = MissileType.Description; InMissile.m_IconTexture = MissileType.IconTexture; InMissile.Damage = MissileType.Damage; InMissile.Speed = MissileType.Speed; InMissile.DamageType = MissileType.DamageType; InMissile.MissileRefillPrice = MissileType.MissileRefillPrice; InMissile.AmmoCapacity = MissileType.AmmoCapacity; InMissile.PrefabID = MissileType.PrefabID; InMissile.m_MarketPrice = MissileType.MarketPrice; InMissile.CargoVisualPrefabID = MissileType.CargoVisualID; InMissile.CanBeDroppedOnShipDeath = MissileType.CanBeDroppedOnShipDeath; InMissile.Experimental = MissileType.Experimental; InMissile.Unstable = MissileType.Unstable; InMissile.Contraband = MissileType.Contraband; InMissile.Price_LevelMultiplierExponent = MissileType.Price_LevelMultiplierExponent; if (PhotonNetwork.isMasterClient) { InMissile.SubTypeData = (short)InMissile.AmmoCapacity; } } } else { InMissile = new PLTrackerMissile((ETrackerMissileType)Subtype, level, inSubTypeData); } return(InMissile); }