Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
更新: Economics.Projectile 实现弹幕AI 与 持续时间
  • Loading branch information
Controllerdestiny committed Jun 30, 2024
commit 6d30f47ae89212de5ff8d26f56935b52efdfbd28
8 changes: 7 additions & 1 deletion Economics.Projectile/Internet/ProjectileReplace.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,14 @@ public class ProjectileReplace
public float KnockBack = 0f;

[JsonProperty("弹幕射速")]
public float speed = 0f;
public float Speed = 0f;

[JsonProperty("持续时间")]
public int TimeLeft = -1;

[JsonProperty("限制等级")]
public List<string> Limit { get; set; } = new();

[JsonProperty("弹幕AI")]
public float[] AI { get; set; } = new float[3];
}
18 changes: 9 additions & 9 deletions Economics.Projectile/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ private void Projectile_Minion_FindTargetInRange(On.Terraria.Projectile.orig_Min
NPC npc = Main.npc[attackTarget];
self.Distance(npc.Center);
var speed = self.DirectionTo(npc.Center).SafeNormalize(-Vector2.UnitY) * self.velocity.Length();
int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(Terraria.Projectile.GetNoneSource(), self.Center, speed.ToLenOf(proj.speed), proj.ID, (int)damage, knockback, self.owner);
int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(Terraria.Projectile.GetNoneSource(), self.Center, speed.ToLenOf(proj.Speed), proj.ID, (int)damage, knockback, self.owner, proj.AI[0], proj.AI[1], proj.AI[2], proj.TimeLeft);
TSPlayer.All.SendData(PacketTypes.ProjectileNew, "", index);
MiniCD[self.identity] += data.CD;
}
Expand Down Expand Up @@ -152,9 +152,9 @@ private void OnDate(object? sender, GetDataHandlers.PlayerUpdateEventArgs e)
//击退
float knockback = proj.KnockBack;
//速度
var speed = e.Player.TPlayer.ItemOffSet().ToLenOf(proj.speed);
var speed = e.Player.TPlayer.ItemOffSet().ToLenOf(proj.Speed);

int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(e.Player.TPlayer.GetItemSource_OpenItem(e.Player.SelectedItem.netID), e.Player.TPlayer.position, speed, proj.ID, (int)damage, knockback, e.PlayerId);
int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(e.Player.TPlayer.GetItemSource_OpenItem(e.Player.SelectedItem.netID), e.Player.TPlayer.position, speed, proj.ID, (int)damage, knockback, e.PlayerId, proj.AI[0], proj.AI[1], proj.AI[2], proj.TimeLeft);
Main.projectile[index].active = true;
Main.projectile[index].type = proj.ID;
TSPlayer.All.SendData(PacketTypes.ProjectileNew, null, index);
Expand Down Expand Up @@ -184,9 +184,9 @@ private void OnProj(object? sender, GetDataHandlers.NewProjectileEventArgs e)
//击退
float knockback = proj.KnockBackFollow ? (e.Knockback - e.Player.SelectedItem.knockBack) / e.Knockback * proj.KnockBack : proj.KnockBack;
//速度
var speed = proj.speed > 0f ? e.Velocity.ToLenOf(proj.speed) : e.Velocity;
var speed = proj.Speed > 0f ? e.Velocity.ToLenOf(proj.Speed) : e.Velocity;

int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(e.Player.TPlayer.GetItemSource_OpenItem(e.Player.SelectedItem.netID), e.Position, speed, proj.ID, (int)damage, knockback, e.Owner);
int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(e.Player.TPlayer.GetItemSource_OpenItem(e.Player.SelectedItem.netID), e.Position, speed, proj.ID, (int)damage, knockback, e.Owner, proj.AI[0], proj.AI[1], proj.AI[2], proj.TimeLeft);

e.Player.SendData(PacketTypes.ProjectileNew, "", index);

Expand Down Expand Up @@ -214,9 +214,9 @@ private void OnProj(object? sender, GetDataHandlers.NewProjectileEventArgs e)
float knockback = proj.KnockBackFollow ? (e.Knockback - e.Player.SelectedItem.knockBack) / e.Knockback * proj.KnockBack : proj.KnockBack;
//速度

var speed = proj.speed > 0f ? e.Velocity.ToLenOf(proj.speed) : e.Velocity;
var speed = proj.Speed > 0f ? e.Velocity.ToLenOf(proj.Speed) : e.Velocity;

int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(e.Player.TPlayer.GetItemSource_OpenItem(e.Player.SelectedItem.netID), e.Position, speed, proj.ID, (int)damage, knockback, e.Owner);
int index = EconomicsAPI.Utils.SpawnProjectile.NewProjectile(e.Player.TPlayer.GetItemSource_OpenItem(e.Player.SelectedItem.netID), e.Position, speed, proj.ID, (int)damage, knockback, e.Owner, proj.AI[0], proj.AI[1], proj.AI[2], proj.TimeLeft);

e.Player.SendData(PacketTypes.ProjectileNew, "", index);

Expand All @@ -242,7 +242,7 @@ public void LoadConfig()
new()
{
ID = 132,
speed = 15,
Speed = 15,
Damage=80,
KnockBack = 10,
Limit = new()
Expand All @@ -257,7 +257,7 @@ public void LoadConfig()
new()
{
ID = 132,
speed = 15,
Speed = 15,
Damage=80,
KnockBack = 10,
Limit = new()
Expand Down