Skip to content
This repository has been archived by the owner on Feb 2, 2024. It is now read-only.

Commit

Permalink
#33 Removed requirement for orbital coins to have an orbital explosio…
Browse files Browse the repository at this point in the history
…n flag

Added extra damage property for orbital strikes
  • Loading branch information
eternalUnion committed May 24, 2023
1 parent b93fd5e commit 45f2ebc
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
4 changes: 4 additions & 0 deletions Ultrapain/ConfigManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ public static void AddMissingPresets()
public static IntField grenadeBoostStylePoints;

public static BoolField orbStrikeToggle;
public static FloatField orbStrikeMinDistance;
public static FloatField orbStrikeExtraDamage;

// REVOLVER BEAM ORBITAL
public static FormattedStringField orbStrikeRevolverStyleText;
Expand Down Expand Up @@ -587,6 +589,8 @@ public static void Initialize()
dirtyField = true;
};
orbStrikeToggle.TriggerValueChangeEvent();
orbStrikeMinDistance = new FloatField(orbStrikeDiv, "Min trigger distance", "orbStrikeMinDistance", 50f, 0f, float.MaxValue);
orbStrikeExtraDamage = new FloatField(orbStrikeDiv, "Max extra bonus damage", "orbStrikeExtraDamage", 3f, 0f, float.MaxValue);

new ConfigHeader(orbStrikeDiv, "Revolver Beam", 22);
FormattedStringBuilder orbStrikeRevolverBuilder = new FormattedStringBuilder();
Expand Down
30 changes: 25 additions & 5 deletions Ultrapain/Patches/OrbitalStrike.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ public class OrbitalStrikeFlag : MonoBehaviour
public CoinChainList chainList;
public bool isOrbitalRay = false;
public bool exploded = false;
public float activasionDistance;
}

public class CoinChainList : MonoBehaviour
{
public List<Coin> chainList = new List<Coin>();
public bool isOrbitalStrike = false;
public float activasionDistance;
}

class Punch_BlastCheck
Expand All @@ -43,7 +45,7 @@ class Explosion_Collide
{
static bool Prefix(Explosion __instance, Collider __0, List<Collider> ___hitColliders)
{
if (___hitColliders.Contains(__0) || __instance.transform.parent.GetComponent<OrbitalStrikeFlag>() == null)
if (___hitColliders.Contains(__0)/* || __instance.transform.parent.GetComponent<OrbitalStrikeFlag>() == null*/)
return true;

Coin coin = __0.GetComponent<Coin>();
Expand Down Expand Up @@ -103,11 +105,15 @@ static void Postfix(Coin __instance, GameObject ___altBeam)
{
Coin lastCoin = flag.chainList.LastOrDefault();
float distance = Vector3.Distance(__instance.transform.position, lastCoin.transform.position);
if (distance >= 20f)
if (distance >= ConfigManager.orbStrikeMinDistance.value)
{
flag.isOrbitalStrike = true;
flag.activasionDistance = distance;
if (orbitalBeamFlag != null)
{
orbitalBeamFlag.isOrbitalRay = true;
orbitalBeamFlag.activasionDistance = distance;
}
Debug.Log("Coin valid for orbital strike");
}
}
Expand Down Expand Up @@ -472,7 +478,14 @@ class StateInfo
public OrbitalExplosionInfo info = null;
}

static bool Prefix(EnemyIdentifier __instance, out StateInfo __state, Vector3 __2)
static float CalculateExtraDamage(float distance)
{
float deltaDistance = (distance - ConfigManager.orbStrikeMinDistance.value) * 0.002f;
float additionalDamage = ConfigManager.orbStrikeExtraDamage.value * (deltaDistance / (deltaDistance + 1f));
return Mathf.Max(0, additionalDamage);
}

static bool Prefix(EnemyIdentifier __instance, out StateInfo __state, Vector3 __2, ref float __3)
{
//if (Coin_ReflectRevolver.shootingCoin == lastExplosiveCoin)
// return true;
Expand All @@ -499,11 +512,18 @@ static bool Prefix(EnemyIdentifier __instance, out StateInfo __state, Vector3 __
{
causeExplosion = true;
}

__3 += CalculateExtraDamage(list.activasionDistance);
Debug.Log("Extra damage from orbital: " + CalculateExtraDamage(list.activasionDistance));
}
else if(RevolverBeam_ExecuteHits.isOrbitalRay && RevolverBeam_ExecuteHits.orbitalBeam != null)
else if (RevolverBeam_ExecuteHits.isOrbitalRay && RevolverBeam_ExecuteHits.orbitalBeam != null)
{
if(RevolverBeam_ExecuteHits.orbitalBeamFlag != null && !RevolverBeam_ExecuteHits.orbitalBeamFlag.exploded)
if (RevolverBeam_ExecuteHits.orbitalBeamFlag != null && !RevolverBeam_ExecuteHits.orbitalBeamFlag.exploded)
{
causeExplosion = true;
__3 += CalculateExtraDamage(RevolverBeam_ExecuteHits.orbitalBeamFlag.activasionDistance);
Debug.Log("Extra damage from orbital: " + CalculateExtraDamage(RevolverBeam_ExecuteHits.orbitalBeamFlag.activasionDistance));
}
}

if(causeExplosion)
Expand Down

0 comments on commit 45f2ebc

Please sign in to comment.