public GuidedMissileLauncher(WeaponTargeting weapon) { m_weaponTarget = weapon; m_relayPart = RelayClient.GetOrCreateRelayPart(m_weaponTarget.CubeBlock); this._initialTarget = NoTarget.Instance; MyWeaponBlockDefinition defn = (MyWeaponBlockDefinition)CubeBlock.GetCubeBlockDefinition(); Vector3[] points = new Vector3[3]; Vector3 forwardAdjust = Vector3.Forward * WeaponDescription.GetFor(CubeBlock).MissileSpawnForward; points[0] = CubeBlock.LocalAABB.Min + forwardAdjust; points[1] = CubeBlock.LocalAABB.Max + forwardAdjust; points[2] = CubeBlock.LocalAABB.Min + Vector3.Up * defn.Size.Y * CubeBlock.CubeGrid.GridSize + forwardAdjust; MissileSpawnBox = BoundingBox.CreateFromPoints(points); if (m_weaponTarget.myTurret != null) { Log.TraceLog("original box: " + MissileSpawnBox); MissileSpawnBox.Inflate(CubeBlock.CubeGrid.GridSize * 2f); } Log.TraceLog("MissileSpawnBox: " + MissileSpawnBox); myInventory = ((MyEntity)CubeBlock).GetInventoryBase(0); Registrar.Add(weapon.CubeBlock, this); m_weaponTarget.GuidedLauncher = true; m_gameCooldownTime = TimeSpan.FromSeconds(60d / MyDefinitionManager.Static.GetWeaponDefinition(defn.WeaponDefinitionId).WeaponAmmoDatas[(int)MyAmmoType.Missile].RateOfFire); Log.TraceLog("m_gameCooldownTime: " + m_gameCooldownTime); CubeBlock.AppendingCustomInfo += CubeBlock_AppendingCustomInfo; }
public void OnShoot(Vector2 forward, float speed, WeaponDescription weapon) { // suppress unity warnings // todo: reserve for other use if(hasShot) return; hasShot = true; if(forward.sqrMagnitude < .001f) return; forward.Normalize(); // local right is pointing at forward(param) rb.AddForce(forward * speed, ForceMode2D.Impulse); // todo: set ui rotation // todo: use SO if(bms.Remove(BulletModifier.Xiandan)) { const int shotnum = 5; const float spreadDeg = 15; for(var i = 0; i < shotnum; ++i) { var rot = Quaternion.AngleAxis(Random.Range(-spreadDeg, spreadDeg), Vector3.forward); BulletUtils.ShootBullet(gameObject, transform, rot * forward, weapon, bms); } } }
public override void Initialize() { base.Initialize(); _primaryWeaponDescription = Registry.WeaponDescriptions[(int)_player.PrimaryWeaponType]; _secondaryWeaponDescription = Registry.WeaponDescriptions[(int)_player.SecondaryWeaponType]; _shootTimer.Completed += () => _canShoot = true; }
public WeaponDescription spawnWeaponDescription() { GameObject instance = Instantiate(m_WeaponDescriptionPrefab, Vector3.zero, Quaternion.identity) as GameObject; instance.transform.SetParent(m_WeaponDescriptionParent, false); WeaponDescription script = instance.GetComponent <WeaponDescription> (); script.init(); return(script); }
public PrimaryWeapon(WeaponDescription description, Rectangle playerRectangle, int index) { _index = index; _description = description; PlayerRectangle = playerRectangle; Speed = (int)description.Speed; Interval = description.Interval; Damage = description.Damage; Acceleration = description.Acceleration; AssetName = description.AssetName; }
public void initDescription() { m_Description = UiManager.Instance.spawnWeaponDescription (); m_Description.setDamage (m_WeaponFeatures.m_Damage,m_WeaponFeatures.m_ShotNumber); m_Description.setEnergy (m_WeaponFeatures.m_EnergyCost); if (m_WeaponFeatures.m_IsPiercing) { m_Description.addPassive ("PiercePassive"); } foreach (WeaponEffect effect in m_WeaponFeatures.m_WeaponEffects) { m_Description.addPassive (effect.getPassiveName (), effect.getPassiveValue ()); } m_Description.gameObject.SetActive (false); }
private static void ItemDefinitionCopyBuilder(ItemDefinition sourceItemDefinition, string name, string weaponType, List <string> weaponTags) { Guid newGuid = GuidHelper.Create(ModGuidNamespace, name); ItemDefinition builtItemDefinition = ScriptableObject.CreateInstance <ItemDefinition>(); Traverse.Create(builtItemDefinition).Field("name").SetValue(name); WeaponDescription sourceWeaponDescription = (WeaponDescription)Traverse.Create(sourceItemDefinition).Field("weaponDefinition").GetValue(); Traverse.Create(sourceWeaponDescription).Field("weaponType").SetValue(weaponType); Traverse.Create(sourceWeaponDescription).Field("weaponTags").SetValue(weaponTags); builtItemDefinition.name = name; Traverse.Create(builtItemDefinition).Field("inDungeonEditor").SetValue(sourceItemDefinition.InDungeonEditor); Traverse.Create(builtItemDefinition).Field("merchantCategory").SetValue(sourceItemDefinition.MerchantCategory); Traverse.Create(builtItemDefinition).Field("weight").SetValue(sourceItemDefinition.Weight); Traverse.Create(builtItemDefinition).Field("slotTypes").SetValue(sourceItemDefinition.SlotTypes); Traverse.Create(builtItemDefinition).Field("slotsWhereActive").SetValue(sourceItemDefinition.SlotsWhereActive); Traverse.Create(builtItemDefinition).Field("forceEquipSlot").SetValue(sourceItemDefinition.ForceEquipSlot); Traverse.Create(builtItemDefinition).Field("stackSize").SetValue(sourceItemDefinition.StackSize); Traverse.Create(builtItemDefinition).Field("defaultStackCount").SetValue(sourceItemDefinition.DefaultStackCount); Traverse.Create(builtItemDefinition).Field("costs").SetValue(sourceItemDefinition.Costs); Traverse.Create(builtItemDefinition).Field("itemTags").SetValue(sourceItemDefinition.ItemTags); Traverse.Create(builtItemDefinition).Field("activeTags").SetValue(sourceItemDefinition.ActiveTags); Traverse.Create(builtItemDefinition).Field("inactiveTags").SetValue(sourceItemDefinition.InactiveTags); Traverse.Create(builtItemDefinition).Field("requiredAttunementClasses").SetValue(sourceItemDefinition.RequiredAttunementClasses); Traverse.Create(builtItemDefinition).Field("staticProperties").SetValue(sourceItemDefinition.StaticProperties); Traverse.Create(builtItemDefinition).Field("armorDefinition").SetValue(sourceItemDefinition.ArmorDescription); Traverse.Create(builtItemDefinition).Field("isWeapon").SetValue(sourceItemDefinition.IsWeapon); Traverse.Create(builtItemDefinition).Field("ammunitionDefinition").SetValue(sourceItemDefinition.AmmunitionDescription); Traverse.Create(builtItemDefinition).Field("usableDeviceDescription").SetValue(sourceItemDefinition.UsableDeviceDescription); Traverse.Create(builtItemDefinition).Field("toolDefinition").SetValue(sourceItemDefinition.ToolDescription); Traverse.Create(builtItemDefinition).Field("starterPackDefinition").SetValue(sourceItemDefinition.StarterPackDescription); Traverse.Create(builtItemDefinition).Field("containerItemDefinition").SetValue(sourceItemDefinition.ContainerItemDescription); Traverse.Create(builtItemDefinition).Field("lightSourceItemDefinition").SetValue(sourceItemDefinition.LightSourceItemDescription); Traverse.Create(builtItemDefinition).Field("focusItemDefinition").SetValue(sourceItemDefinition.FocusItemDescription); Traverse.Create(builtItemDefinition).Field("wealthPileDefinition").SetValue(sourceItemDefinition.WealthPileDescription); Traverse.Create(builtItemDefinition).Field("spellbookDefinition").SetValue(sourceItemDefinition.SpellbookDescription); Traverse.Create(builtItemDefinition).Field("documentDescription").SetValue(sourceItemDefinition.DocumentDescription); Traverse.Create(builtItemDefinition).Field("foodDescription").SetValue(sourceItemDefinition.FoodDescription); Traverse.Create(builtItemDefinition).Field("factionRelicDescription").SetValue(sourceItemDefinition.FactionRelicDescription); Traverse.Create(builtItemDefinition).Field("personalityFlagOccurences").SetValue(sourceItemDefinition.PersonalityFlagOccurences); Traverse.Create(builtItemDefinition).Field("soundEffectDescriptionOverride").SetValue(sourceItemDefinition.SoundEffectDescription); Traverse.Create(builtItemDefinition).Field("soundEffectOnHitDescriptionOverride").SetValue(sourceItemDefinition.SoundEffectOnHitDescription); Traverse.Create(builtItemDefinition).Field("itemPresentation").SetValue(sourceItemDefinition.ItemPresentation); Traverse.Create(builtItemDefinition).Field("guiPresentation").SetValue(sourceItemDefinition.GuiPresentation); Traverse.Create(builtItemDefinition).Field("guid").SetValue(newGuid.ToString()); DatabaseRepository.GetDatabase <ItemDefinition>().Add(builtItemDefinition); }
private static WeaponDescription InitWeaponDescription(WeaponType type, string color, int id) { WeaponDescription desc = new WeaponDescription(); desc.Id = id; desc.SoundAsset = ""; switch (type) { case WeaponType.Burst: desc.AssetName = "Weapons/Burst/burst_blue"; desc.WeaponType = type; desc.Interval = 45; desc.Damage = 15; desc.Speed = 6; desc.Acceleration = new Vector2(2.0f, 2.0f); break; case WeaponType.Laser: desc.AssetName = "Weapons/Lasers/laser_green"; desc.WeaponType = type; desc.Interval = 250; desc.Damage = 55; desc.Speed = 6; desc.Acceleration = new Vector2(0, 2.0f); break; case WeaponType.Missile: desc.AssetName = "Weapons/Missile/missile"; desc.WeaponType = type; desc.Interval = 1500; desc.Damage = 105; desc.Speed = 6; desc.Acceleration = new Vector2(0, 2.0f); break; case WeaponType.Sphere: desc.AssetName = "Weapons/Sphere/sphere_blue"; desc.WeaponType = type; desc.Interval = 75; desc.Damage = 15; desc.Speed = 8; desc.Acceleration = new Vector2(2.0f, 2.0f); break; } return(desc); }
public static BulletMove ShootBullet(GameObject bulletPrefab, Transform bulletGenPoint, Vector2 forward, WeaponDescription currWeapon, HashSet <BulletModifier> overrideModifiers = null) { var bullet = GameObject.Instantiate(bulletPrefab, bulletGenPoint.position, bulletGenPoint.rotation); SetDebugTint(bullet, currWeapon.bulletTint); var bulletMove = bullet.GetComponent <BulletMove>(); bulletMove.SetBulletModifiers(overrideModifiers ?? BulletModifierUI.Instance.BulletModifiers); bulletMove.OnShoot(forward, 10, currWeapon); return(bulletMove); }
public static bool IsGuidedMissileLauncher(IMyCubeBlock block) { return(block is IMyUserControllableGun && WeaponDescription.GetFor(block).GuidedMissileLauncher); }
/// <summary> /// Saves the weapon. /// </summary> /// <returns>Weapon Object</returns> public Weapon SaveWeapon() { SqlDataReader result; DatabaseConnection dbconn = new DatabaseConnection(); SqlCommand command = new SqlCommand(); SqlConnection connection = new SqlConnection(dbconn.SQLSEVERConnString); try { connection.Open(); command.Connection = connection; command.CommandType = CommandType.StoredProcedure; command.CommandText = "InsertUpdate_Weapon"; command.Parameters.Add(dbconn.GenerateParameterObj("@WeaponID", SqlDbType.Int, WeaponID.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@WeaponName", SqlDbType.VarChar, WeaponName.ToString(), 50)); command.Parameters.Add(dbconn.GenerateParameterObj("@WeaponTypeID", SqlDbType.Int, WeaponTypeID.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@WeaponSizeID", SqlDbType.Int, WeaponSizeID.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@Cost", SqlDbType.Int, Cost.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@RateOfFire", SqlDbType.VarChar, RateOfFire.ToString(), 3)); command.Parameters.Add(dbconn.GenerateParameterObj("@DamageDieNumber", SqlDbType.Int, DamageDieNumber.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@DamageDieType", SqlDbType.Int, DamageDieType.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@Stun", SqlDbType.Bit, Stun.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@StunDieNumber", SqlDbType.Int, DamageDieNumber.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@StunDieType", SqlDbType.Int, DamageDieType.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@WeaponDescription", SqlDbType.Text, WeaponDescription.ToString(), 4000)); command.Parameters.Add(dbconn.GenerateParameterObj("@Weight", SqlDbType.Decimal, Weight.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@BookID", SqlDbType.Int, BookID.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@WeaponProficiencyFeatID", SqlDbType.Int, WeaponProficiencyFeatID.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@EmplacementPoints", SqlDbType.Int, EmplacementPoints.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@DoubleWeapon", SqlDbType.Bit, DoubleWeapon.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@AreaOfAttack", SqlDbType.Bit, AreaOfAttack.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@Accurate", SqlDbType.Bit, AreaOfAttack.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@Inaccurate", SqlDbType.Bit, AreaOfAttack.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@Slugthrower", SqlDbType.Bit, Slugthrower.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@RequiresSeperateAmmo", SqlDbType.Bit, RequiresSeperateAmmo.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@ExtraDamage", SqlDbType.Bit, ExtraDamage.ToString(), 0)); command.Parameters.Add(dbconn.GenerateParameterObj("@ExtraStunDamage", SqlDbType.Bit, ExtraStunDamage.ToString(), 0)); result = command.ExecuteReader(); result.Read(); SetReaderToObject(ref result); } catch { Exception e = new Exception(); this._insertUpdateOK = false; this._insertUpdateMessage.Append(e.Message + " Inner Exception= " + e.InnerException); throw e; } finally { command.Dispose(); connection.Close(); } return(this); }
private void UpdateImage(WeaponDescription desc) { weaponImage.sprite = desc.onHandSprite; }
public static void CreateAsset() { WeaponDescription desc = ScriptableObjectUtil.CreateAsset <WeaponDescription>(); desc.type = ItemTypes.Weapon; }
static void Postfix(RulesetCharacterHero __instance, ref RulesetAttackMode __result, ref WeaponDescription weaponDescription) { DamageForm firstDamageForm = __result.EffectDescription.FindFirstDamageForm(); WeaponTypeDefinition element = DatabaseRepository.GetDatabase <WeaponTypeDefinition>().GetElement(weaponDescription.WeaponType); int originalAbilityScoreModifier = AttributeDefinitions.ComputeAbilityScoreModifier(__instance.Attributes[__result.AbilityScore].CurrentValue); __result.AbilityScore = element.WeaponProximity == RuleDefinitions.AttackProximity.Melee ? "Strength" : "Dexterity"; if (weaponDescription.WeaponTags.Contains("Finesse") && __instance.GetAttribute("Dexterity").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue) { __result.AbilityScore = "Dexterity"; } if (weaponDescription.WeaponTags.Contains("Knowledge") && __instance.GetAttribute("Intelligence").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue) { __result.AbilityScore = "Intelligence"; } if (weaponDescription.WeaponTags.Contains("Intuition") && __instance.GetAttribute("Wisdom").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue) { __result.AbilityScore = "Wisdom"; } if (weaponDescription.WeaponTags.Contains("Vigor") && __instance.GetAttribute("Constitution").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue) { __result.AbilityScore = "Constitution"; } if (weaponDescription.WeaponTags.Contains("Influence") && __instance.GetAttribute("Charisma").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue) { __result.AbilityScore = "Charisma"; } int abilityScoreModifier = AttributeDefinitions.ComputeAbilityScoreModifier(__instance.Attributes[__result.AbilityScore].CurrentValue); Predicate <RuleDefinitions.TrendInfo> predicate = FindAbilityScoreTrend; int ability_score_to_hit_trend_index = __result.ToHitBonusTrends.FindIndex(predicate); int ability_score_damage_bonus_trend_index = firstDamageForm.DamageBonusTrends.FindIndex(predicate); if (ability_score_to_hit_trend_index >= 0) { __result.ToHitBonus -= originalAbilityScoreModifier; __result.ToHitBonus += abilityScoreModifier; __result.ToHitBonusTrends.RemoveAt(ability_score_to_hit_trend_index); __result.ToHitBonusTrends.Add(new RuleDefinitions.TrendInfo(abilityScoreModifier, RuleDefinitions.FeatureSourceType.AbilityScore, __result.AbilityScore, (object)null)); } if (ability_score_damage_bonus_trend_index >= 0) { firstDamageForm.DamageBonusTrends.RemoveAt(ability_score_damage_bonus_trend_index); firstDamageForm.BonusDamage -= originalAbilityScoreModifier; firstDamageForm.BonusDamage += abilityScoreModifier; firstDamageForm.DamageBonusTrends.Add(new RuleDefinitions.TrendInfo(abilityScoreModifier, RuleDefinitions.FeatureSourceType.AbilityScore, __result.AbilityScore, (object)null)); } }
/// <summary> /// Initializes a new instance of the <see cref="BaseWeapon"/> class. /// </summary> /// <param name="game">The game to spawn this weapon in.</param> /// <param name="weaponDescription">The weapon description.</param> /// <param name="name">The name of the weapon</param> public BaseWeapon(ICanyonShooterGame game, WeaponHolderType weaponHolderType, string weaponDescription, WeaponManager weaponManager, string name) : base(game, name) { this.game = game; manager = weaponManager; WeaponHolderType = weaponHolderType; if (weaponDescription == String.Empty) { return; } // Load Weapon Description desc = game.Content.Load <WeaponDescription>("Content\\Weapons\\" + weaponDescription); // Load Model if (desc.Model != String.Empty) #pragma warning disable DoNotCallOverridableMethodsInConstructor { SetModel(desc.Model); } #pragma warning restore DoNotCallOverridableMethodsInConstructor // Load AmmoType ammoType = (AmmoType)Enum.Parse(typeof(AmmoType), desc.AmmoType); // Load Ammo Ammo += desc.DefaultAmmo; //if (desc.AmmoReloadCount > desc.DefaultAmmo) //{ // ammoInMagazine = desc.DefaultAmmo; // Ammo = 0; //} //else //{ // ammoInMagazine = desc.AmmoReloadCount; // Ammo += desc.DefaultAmmo - desc.AmmoReloadCount; //} // Load Sounds: if (desc.SoundFiring != String.Empty) { soundFiring = game.Sounds.CreateSound(desc.SoundFiring); soundFiring.Parent = this; } if (desc.SoundStartFire != String.Empty) { soundStartFire = game.Sounds.CreateSound(desc.SoundStartFire); soundStartFire.Parent = this; } if (desc.SoundStopFire != String.Empty) { soundStopFire = game.Sounds.CreateSound(desc.SoundStopFire); soundStopFire.Parent = this; } if (desc.SoundReload != String.Empty) { soundReload = game.Sounds.CreateSound(desc.SoundReload); soundReload.Parent = this; } if (desc.SoundAmmoEmpty != String.Empty) { soundAmmoEmpty = game.Sounds.CreateSound(desc.SoundAmmoEmpty); soundAmmoEmpty.Parent = this; } state = WeaponState.NOTHING; }