mirror of
https://github.com/YouHaveTrouble/YHTMod.git
synced 2026-05-11 21:56:54 +00:00
perforators bonus
This commit is contained in:
@@ -10,33 +10,13 @@ public class SummonerOnHitEffects : GlobalProjectile {
|
|||||||
public override void OnHitNPC(Projectile projectile, NPC target, NPC.HitInfo hit, int damageDone) {
|
public override void OnHitNPC(Projectile projectile, NPC target, NPC.HitInfo hit, int damageDone) {
|
||||||
Player player = Main.player[projectile.owner];
|
Player player = Main.player[projectile.owner];
|
||||||
YhtPlayer modPlayer = player.GetModPlayer<YhtPlayer>();
|
YhtPlayer modPlayer = player.GetModPlayer<YhtPlayer>();
|
||||||
|
|
||||||
// Player's own minions
|
// Player's own minions
|
||||||
if (projectile.minion && Main.myPlayer == projectile.owner) {
|
if (projectile.minion && Main.myPlayer == projectile.owner) {
|
||||||
if (modPlayer.SummonerAmbition) {
|
if (modPlayer.SummonerAmbition) {
|
||||||
if (
|
HandleDeerclopsEffect(modPlayer, target, projectile);
|
||||||
modPlayer.SummonerAmbitions.Contains("deerclops")
|
HandleQueenBeeEffect(modPlayer, target);
|
||||||
&& modPlayer.SummonerAmbitionDeerclopsCooldown == 0
|
HandlePerforatorsEffect(modPlayer, target, projectile);
|
||||||
&& Main.rand.NextBool(10)
|
|
||||||
) {
|
|
||||||
modPlayer.SummonerAmbitionDeerclopsCooldown = 5 * 60;
|
|
||||||
Vector2 direction = new(Main.rand.NextFloat(-1f, 1f), Main.rand.NextFloat(-1f, 1f));
|
|
||||||
direction.Normalize();
|
|
||||||
direction *= Main.rand.NextFloat(4f, 8f);
|
|
||||||
Projectile.NewProjectile(
|
|
||||||
player.GetSource_OnHit(target),
|
|
||||||
target.Center,
|
|
||||||
direction,
|
|
||||||
ProjectileID.InsanityShadowFriendly,
|
|
||||||
projectile.damage / 2,
|
|
||||||
0f,
|
|
||||||
projectile.owner
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (modPlayer.SummonerAmbitions.Contains("queen_bee") && Main.rand.NextBool(4)) {
|
|
||||||
target.AddBuff(BuffID.Poisoned, 5 * 60);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,4 +35,57 @@ public class SummonerOnHitEffects : GlobalProjectile {
|
|||||||
|
|
||||||
base.OnHitNPC(projectile, target, hit, damageDone);
|
base.OnHitNPC(projectile, target, hit, damageDone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void HandleDeerclopsEffect(YhtPlayer modPlayer, NPC target, Projectile projectile) {
|
||||||
|
Player player = modPlayer.Player;
|
||||||
|
if (!modPlayer.SummonerAmbitions.Contains("deerclops")) return;
|
||||||
|
if (modPlayer.SummonerAmbitionDeerclopsCooldown != 0) return;
|
||||||
|
if (!Main.rand.NextBool(10)) return;
|
||||||
|
|
||||||
|
modPlayer.SummonerAmbitionDeerclopsCooldown = 5 * 60;
|
||||||
|
Vector2 direction = new(Main.rand.NextFloat(-1f, 1f), Main.rand.NextFloat(-1f, 1f));
|
||||||
|
direction.Normalize();
|
||||||
|
direction *= Main.rand.NextFloat(4f, 8f);
|
||||||
|
Projectile.NewProjectile(
|
||||||
|
player.GetSource_OnHit(target),
|
||||||
|
target.Center,
|
||||||
|
direction,
|
||||||
|
ProjectileID.InsanityShadowFriendly,
|
||||||
|
(int) (projectile.damage * 0.5),
|
||||||
|
0f,
|
||||||
|
projectile.owner
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void HandleQueenBeeEffect(YhtPlayer modPlayer, NPC target) {
|
||||||
|
if (!modPlayer.SummonerAmbitions.Contains("queen_bee")) return;
|
||||||
|
if (!Main.rand.NextBool(4)) return;
|
||||||
|
target.AddBuff(BuffID.Poisoned, 5 * 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void HandlePerforatorsEffect(YhtPlayer modPlayer, NPC target, Projectile projectile) {
|
||||||
|
if (!ModLoader.HasMod("CalamityMod")) return;
|
||||||
|
if (!modPlayer.SummonerAmbitions.Contains("perforators")) return;
|
||||||
|
if (modPlayer.SummonerAmbitionPerforatorsCooldown != 0) return;
|
||||||
|
if (!Main.rand.NextBool(10)) return;
|
||||||
|
modPlayer.SummonerAmbitionPerforatorsCooldown = 3 * 60;
|
||||||
|
Vector2 direction = new(Main.rand.NextFloat(-1f, 1f), Main.rand.NextFloat(-1f, 1f));
|
||||||
|
direction.Normalize();
|
||||||
|
direction *= Main.rand.NextFloat(4f, 5f);
|
||||||
|
int projectileType = ModContent.ProjectileType<CalamityMod.Projectiles.Boss.IchorBlob>();
|
||||||
|
int projectileId = Projectile.NewProjectile(
|
||||||
|
modPlayer.Player.GetSource_OnHit(target),
|
||||||
|
target.Center,
|
||||||
|
direction,
|
||||||
|
projectileType,
|
||||||
|
(int) (projectile.damage * 0.75f),
|
||||||
|
0f,
|
||||||
|
projectile.owner
|
||||||
|
);
|
||||||
|
Projectile blob = Main.projectile[projectileId];
|
||||||
|
blob.friendly = true;
|
||||||
|
blob.hostile = false;
|
||||||
|
blob.DamageType = DamageClass.Summon;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
using Terraria.GameContent.Creative;
|
using Terraria.GameContent.Creative;
|
||||||
using Terraria.ID;
|
using Terraria.ID;
|
||||||
@@ -76,6 +77,18 @@ public class SummonersAmbition : ModItem {
|
|||||||
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.BrainOfCthulhu")));
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.BrainOfCthulhu")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("perforators")) {
|
||||||
|
int id = ModContent.ItemType<CalamityMod.Items.LoreItems.LorePerforators>();
|
||||||
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionPerforators",
|
||||||
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.Perforators", "[i:" + id + "]")));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("hive_mind")) {
|
||||||
|
int id = ModContent.ItemType<CalamityMod.Items.LoreItems.LoreHiveMind>();
|
||||||
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionHiveMind",
|
||||||
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.HiveMind", "[i:" + id + "]")));
|
||||||
|
}
|
||||||
|
|
||||||
if (player.SummonerAmbitions.Contains("queen_bee")) {
|
if (player.SummonerAmbitions.Contains("queen_bee")) {
|
||||||
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionQueenBee",
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionQueenBee",
|
||||||
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.QueenBee")));
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.QueenBee")));
|
||||||
@@ -109,13 +122,26 @@ public class SummonersAmbition : ModItem {
|
|||||||
|
|
||||||
public static bool IsPreHardmodeRealized(Player player) {
|
public static bool IsPreHardmodeRealized(Player player) {
|
||||||
YhtPlayer modPlayer = player.GetModPlayer<YhtPlayer>();
|
YhtPlayer modPlayer = player.GetModPlayer<YhtPlayer>();
|
||||||
return modPlayer.SummonerAmbitions.Contains("king_slime")
|
|
||||||
&& modPlayer.SummonerAmbitions.Contains("eye_of_cthulhu")
|
HashSet<string> bossesToCheck = [
|
||||||
&& modPlayer.SummonerAmbitions.Contains("deerclops")
|
"king_slime",
|
||||||
&& (modPlayer.SummonerAmbitions.Contains("eater_of_worlds") ||
|
"eye_of_cthulhu",
|
||||||
modPlayer.SummonerAmbitions.Contains("brain_of_cthulhu"))
|
"deerclops",
|
||||||
&& modPlayer.SummonerAmbitions.Contains("queen_bee")
|
"eater_of_worlds",
|
||||||
&& modPlayer.SummonerAmbitions.Contains("skeletron")
|
"brain_of_cthulhu",
|
||||||
&& modPlayer.SummonerAmbitions.Contains("wall_of_flesh");
|
"queen_bee",
|
||||||
|
"skeletron",
|
||||||
|
"wall_of_flesh"
|
||||||
|
];
|
||||||
|
|
||||||
|
if (ModLoader.HasMod("CalamityMod")) {
|
||||||
|
bossesToCheck.Add("desert_scourge");
|
||||||
|
bossesToCheck.Add("crabulon");
|
||||||
|
bossesToCheck.Add("perforators");
|
||||||
|
bossesToCheck.Add("hive_mind");
|
||||||
|
bossesToCheck.Add("slime_god");
|
||||||
|
}
|
||||||
|
|
||||||
|
return bossesToCheck.All(boss => modPlayer.SummonerAmbitions.Contains(boss));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ public class YhtPlayer : ModPlayer {
|
|||||||
public int ArcaneMissile = 0;
|
public int ArcaneMissile = 0;
|
||||||
public int KatanaTeleportCooldown = 0;
|
public int KatanaTeleportCooldown = 0;
|
||||||
public int SummonerAmbitionDeerclopsCooldown = 0;
|
public int SummonerAmbitionDeerclopsCooldown = 0;
|
||||||
|
public int SummonerAmbitionPerforatorsCooldown = 0;
|
||||||
|
|
||||||
|
|
||||||
public bool SummonerAmbition = false;
|
public bool SummonerAmbition = false;
|
||||||
@@ -22,6 +23,7 @@ public class YhtPlayer : ModPlayer {
|
|||||||
public override void PreUpdate() {
|
public override void PreUpdate() {
|
||||||
KatanaTeleportCooldown = Math.Max(KatanaTeleportCooldown - 1, 0);
|
KatanaTeleportCooldown = Math.Max(KatanaTeleportCooldown - 1, 0);
|
||||||
SummonerAmbitionDeerclopsCooldown = Math.Max(SummonerAmbitionDeerclopsCooldown - 1, 0);
|
SummonerAmbitionDeerclopsCooldown = Math.Max(SummonerAmbitionDeerclopsCooldown - 1, 0);
|
||||||
|
SummonerAmbitionPerforatorsCooldown = Math.Max(SummonerAmbitionPerforatorsCooldown - 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void PostUpdateEquips() {
|
public override void PostUpdateEquips() {
|
||||||
|
|||||||
Reference in New Issue
Block a user