-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
319 additions
and
20 deletions.
There are no files selected for viewing
57 changes: 57 additions & 0 deletions
57
Starstorm 2/Components/Projectiles/ShootableProjectileComponent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
using R2API; | ||
using RoR2; | ||
using RoR2.Projectile; | ||
using UnityEngine; | ||
using UnityEngine.Networking; | ||
|
||
namespace Starstorm2.Components.Projectiles | ||
{ | ||
public class ShootableProjectileComponent : MonoBehaviour | ||
{ | ||
public DamageAPI.ModdedDamageType targetDamageType; //DamageType that detonates the projectile | ||
private bool hasFired = false; | ||
|
||
private void OnShootActionsInternal(DamageInfo damageInfo) | ||
{ | ||
if (hasFired) return; | ||
hasFired = true; | ||
OnShootActions(damageInfo); | ||
} | ||
|
||
public virtual void OnShootActions(DamageInfo damageInfo) { } | ||
|
||
private void Start() | ||
{ | ||
if (NetworkServer.active) | ||
{ | ||
TeamComponent teamComponent = base.GetComponent<TeamComponent>(); | ||
if (teamComponent) teamComponent.teamIndex = TeamIndex.None; | ||
} | ||
} | ||
|
||
internal static void AddHooks() | ||
{ | ||
On.RoR2.HealthComponent.TakeDamage += ShootableProjectileHook; | ||
} | ||
|
||
private static void ShootableProjectileHook(On.RoR2.HealthComponent.orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) | ||
{ | ||
if (NetworkServer.active) | ||
{ | ||
ShootableProjectileComponent sp = self.GetComponent<ShootableProjectileComponent>(); | ||
if (sp) | ||
{ | ||
if (damageInfo.HasModdedDamageType(sp.targetDamageType)) | ||
{ | ||
sp.OnShootActionsInternal(damageInfo); | ||
} | ||
else | ||
{ | ||
damageInfo.rejected = true; | ||
} | ||
} | ||
} | ||
orig(self, damageInfo); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
44 changes: 44 additions & 0 deletions
44
Starstorm 2/Survivors/Cyborg/Components/ShockCoreProjectile/ShootableShockCore.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
using R2API; | ||
using RoR2; | ||
using RoR2.Projectile; | ||
using Starstorm2.Components.Projectiles; | ||
using UnityEngine; | ||
using UnityEngine.AddressableAssets; | ||
|
||
namespace Starstorm2.Survivors.Cyborg.Components.ShockCoreProjectile | ||
{ | ||
public class ShootableShockCore : ShootableProjectileComponent | ||
{ | ||
public static GameObject explosionEffectPrefab; | ||
|
||
public override void OnShootActions(DamageInfo damageInfo) | ||
{ | ||
base.OnShootActions(damageInfo); | ||
|
||
damageInfo.crit = true; | ||
damageInfo.procCoefficient = 0f; | ||
damageInfo.force = Vector3.zero; | ||
|
||
ProjectileDamage pd = base.gameObject.GetComponent<ProjectileDamage>(); | ||
if (pd) | ||
{ | ||
pd.damage *= 4f; | ||
} | ||
|
||
DamageAPI.ModdedDamageTypeHolderComponent mdc = base.gameObject.GetComponent<DamageAPI.ModdedDamageTypeHolderComponent>(); | ||
if (!mdc) mdc = base.gameObject.AddComponent<DamageAPI.ModdedDamageTypeHolderComponent>(); | ||
mdc.Add(this.targetDamageType); | ||
|
||
ProjectileImpactExplosion pie = base.gameObject.GetComponent<ProjectileImpactExplosion>(); | ||
if (pie) | ||
{ | ||
pie.blastRadius = 14f; | ||
pie.falloffModel = BlastAttack.FalloffModel.None; | ||
pie.explosionEffect = ShootableShockCore.explosionEffectPrefab; | ||
|
||
//Why doesn't BanditDynamite need to call this? | ||
pie.Detonate(); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.