Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added more squire special compatibility #27

Open
wants to merge 10 commits into
base: feature/summoners-shine-compat
Choose a base branch
from
Open
10 changes: 2 additions & 8 deletions CrossMod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -597,18 +597,12 @@ public static object[] CombatPetReceiveCrossModData(BinaryReader reader)
public static void HookBuffToItemCrossMod(int BuffType, params int[] ItemTypes)
{
const int MODIFYCONFIGS = 0;
const int HOOKBUFFTOITEM = 9;
const int HOOKBUFFTOITEM = 11;
const int HOOKBUFFCONSTS = 17;
const int DISPLAYOVERRIDE = 1;
if (ModLoader.TryGetMod("SummonersShine", out Mod summonersShine))
{
if(ItemTypes.Length == 1)
{
int ItemType = ItemTypes[0];
summonersShine.Call(MODIFYCONFIGS, HOOKBUFFTOITEM, BuffType, ItemType);
}
else
summonersShine.Call(HOOKBUFFCONSTS, BuffType, DISPLAYOVERRIDE, (int i) => ItemTypes);
summonersShine.Call(MODIFYCONFIGS, HOOKBUFFTOITEM, BuffType, ItemTypes);
}
}

Expand Down
52 changes: 51 additions & 1 deletion Localization/en-US.hjson
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
Mods: {
AmuletOfManyMinions: {

SummonSpecial: {
AdamantiteSquireMinionItem:
'''
Expand All @@ -26,6 +25,57 @@ Mods: {
'''
Special Ability Imp Fireballs have {1}% velocity
'''
GoldenRogueSquireMinionItem:
'''
Cloud of Knives pierce {1} armor
'''
GuideSquireMinionItem:
'''
Fire arrows have {1} second duration
'''
}

SummonSpecialCompressed: {
AdamantiteSquireMinionItem:
'''
{1}x jousting damage
'''
AncientCobaltSquireMinionItem:
'''
{1}% Magic Shotblast distance
'''
ArmoredBoneSquireMinionItem:
'''
{1}% wisp spawn rate
'''
BoneSquireMinionItem:
'''
{1} blocks flail length
'''
CrimsonSquireMinionItem:
'''
{1} second Ichor Flask Ichor duration
'''
DemonSquireMinionItem:
'''
{1}% Imp Assistants fireball velocity
'''
GoldenRogueSquireMinionItem:
'''
{1} Cloud of Knives armor piercing
'''
GuideSquireMinionItem:
'''
{1} second arrow fire duration
'''
MushroomSquireMinionItem:
'''
{1}% special ability mushroom travel distance
'''
PottedPalMinionItem:
'''
{1} Potted Pal Jr. reach length
'''
}
}
}
5 changes: 4 additions & 1 deletion Projectiles/Squires/GoldenRogueSquire/GoldenRogueSquire.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ public override void SetStaticDefaults()

public override void ApplyCrossModChanges()
{
CrossMod.SummonersShineMinionPowerCollection minionCollection = new CrossMod.SummonersShineMinionPowerCollection();
minionCollection.AddMinionPower(20);
CrossMod.BakeSummonersShineMinionPower_NoHooks(Item.type, minionCollection);
CrossMod.WhitelistSummonersShineMinionDefaultSpecialAbility(Item.type, CrossMod.SummonersShineDefaultSpecialWhitelistType.RANGEDNOINSTASTRIKE);
}

Expand Down Expand Up @@ -101,7 +104,7 @@ public override void ModifyHitNPC(NPC target, ref int damage, ref float knockbac
{
// manually bypass defense
// this may not be wholly correct
int defenseBypass = 20;
int defenseBypass = (int)CrossMod.ApplyCrossModScaling(20f, Projectile, 0);
int defense = Math.Min(target.defense, defenseBypass);
damage += defense / 2;
}
Expand Down
9 changes: 8 additions & 1 deletion Projectiles/Squires/GuideSquire/GuideSquire.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@ public override void SetStaticDefaults()
DisplayName.SetDefault("Guide Friendship Bracelet");
Tooltip.SetDefault("Summons a squire\nClick and hold to guide its attacks!\n'Maybe you're not such a terrible person...'");
}

public override void ApplyCrossModChanges()
{
CrossMod.SummonersShineMinionPowerCollection minionCollection = new CrossMod.SummonersShineMinionPowerCollection();
minionCollection.AddMinionPower(3);
CrossMod.BakeSummonersShineMinionPower_NoHooks(Item.type, minionCollection);
}

public override void SetDefaults()
{
Expand Down Expand Up @@ -105,7 +112,7 @@ public override void OnHitNPC(NPC target, int damage, float knockback, bool crit
{
if (Main.rand.NextBool(3))
{
target.AddBuff(BuffID.OnFire, 180);
target.AddBuff(BuffID.OnFire, (int)CrossMod.ApplyCrossModScaling(180, Projectile, 0));
}
}
}
Expand Down
11 changes: 9 additions & 2 deletions Projectiles/Squires/MushroomSquire/MushroomSquire.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,13 @@ public override void SetStaticDefaults()
DisplayName.SetDefault("Crest of the Forest");
Tooltip.SetDefault("Summons a squire\nA mushroom squire will fight for you!\nClick and hold to guide its attacks");
}

public override void ApplyCrossModChanges()
{
CrossMod.SummonersShineMinionPowerCollection minionCollection = new CrossMod.SummonersShineMinionPowerCollection();
minionCollection.AddMinionPower(100);
CrossMod.BakeSummonersShineMinionPower_NoHooks(Item.type, minionCollection);
}

public override void SetDefaults()
{
Expand Down Expand Up @@ -67,7 +74,7 @@ public override void SetDefaults()
Projectile.penetrate = 1;
Projectile.width = 12;
Projectile.height = 12;
Projectile.timeLeft = TimeToLive;
Projectile.timeLeft = CrossMod.ApplyCrossModScaling(TimeToLive, Projectile, 0);
Projectile.friendly = true;
Projectile.tileCollide = true;
//Projectile.minion = true; //TODO 1.4
Expand All @@ -77,7 +84,7 @@ public override void SetDefaults()
public override void AI()
{
base.AI();
if(Projectile.timeLeft < TimeLeftToStartFalling && Projectile.velocity.Y < 16)
if(Projectile.timeLeft < CrossMod.ApplyCrossModScaling(TimeLeftToStartFalling, Projectile, 0) && Projectile.velocity.Y < 16)
{
Projectile.velocity.Y += 0.5f;
Projectile.velocity.X *= 0.99f;
Expand Down
13 changes: 11 additions & 2 deletions Projectiles/Squires/PottedPal/PottedPal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ public override void SetStaticDefaults()
DisplayName.SetDefault("Potted Pal");
Tooltip.SetDefault("Summons a squire\nA friendly plant will fight for you!\nClick and hold to guide its attacks");
}

public override void ApplyCrossModChanges()
{
CrossMod.SummonersShineMinionPowerCollection minionCollection = new CrossMod.SummonersShineMinionPowerCollection();
minionCollection.AddMinionPower(25);
CrossMod.BakeSummonersShineMinionPower_NoHooks(Item.type, minionCollection);
}

public override void SetDefaults()
{
Expand Down Expand Up @@ -153,8 +160,10 @@ public override Vector2 IdleBehavior()

public override Vector2? FindTarget()
{
if(GetClosestEnemyToPosition(Projectile.Center, 400f, true) is NPC targetNPC &&
Vector2.DistanceSquared(targetNPC.Center, spawnPos) < 600 * 600)
float maxDist = CrossMod.ApplyCrossModScaling(600, Projectile, 0)
float findRange = CrossMod.ApplyCrossModScaling(400, Projectile, 0)
if(GetClosestEnemyToPosition(Projectile.Center, findRange, true) is NPC targetNPC &&
Vector2.DistanceSquared(targetNPC.Center, spawnPos) < maxDist * maxDist)
{
return targetNPC.Center - Projectile.Center;
} else
Expand Down