5267 lines
195 KiB
C#
5267 lines
195 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Terraria.Projectile
|
|
// Assembly: Terraria, Version=1.0.4.0, Culture=neutral, PublicKeyToken=null
|
|
// MVID: FF258283-FE37-4E8A-A035-CB1E6DC74C3C
|
|
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
|
|
|
|
using Microsoft.Xna.Framework;
|
|
using System;
|
|
|
|
namespace Terraria
|
|
{
|
|
public class Projectile
|
|
{
|
|
public bool wet;
|
|
public byte wetCount;
|
|
public bool lavaWet;
|
|
public int whoAmI;
|
|
public static int maxAI = 2;
|
|
public Vector2 position;
|
|
public Vector2 lastPosition;
|
|
public Vector2 velocity;
|
|
public int width;
|
|
public int height;
|
|
public float scale = 1f;
|
|
public float rotation;
|
|
public int type;
|
|
public int alpha;
|
|
public int owner = (int) byte.MaxValue;
|
|
public bool active;
|
|
public string name = "";
|
|
public float[] ai = new float[Projectile.maxAI];
|
|
public float[] localAI = new float[Projectile.maxAI];
|
|
public int aiStyle;
|
|
public int timeLeft;
|
|
public int soundDelay;
|
|
public int damage;
|
|
public int direction;
|
|
public int spriteDirection = 1;
|
|
public bool hostile;
|
|
public float knockBack;
|
|
public bool friendly;
|
|
public int penetrate = 1;
|
|
public int identity;
|
|
public float light;
|
|
public bool netUpdate;
|
|
public bool netUpdate2;
|
|
public int netSpam;
|
|
public Vector2[] oldPos = new Vector2[10];
|
|
public int restrikeDelay;
|
|
public bool tileCollide;
|
|
public int maxUpdates;
|
|
public int numUpdates;
|
|
public bool ignoreWater;
|
|
public bool hide;
|
|
public bool ownerHitCheck;
|
|
public int[] playerImmune = new int[(int) byte.MaxValue];
|
|
public string miscText = "";
|
|
public bool melee;
|
|
public bool ranged;
|
|
public bool magic;
|
|
public int frameCounter;
|
|
public int frame;
|
|
|
|
public void SetDefaults(int Type)
|
|
{
|
|
for (int index = 0; index < this.oldPos.Length; ++index)
|
|
{
|
|
this.oldPos[index].X = 0.0f;
|
|
this.oldPos[index].Y = 0.0f;
|
|
}
|
|
for (int index = 0; index < Projectile.maxAI; ++index)
|
|
{
|
|
this.ai[index] = 0.0f;
|
|
this.localAI[index] = 0.0f;
|
|
}
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
this.playerImmune[index] = 0;
|
|
this.soundDelay = 0;
|
|
this.spriteDirection = 1;
|
|
this.melee = false;
|
|
this.ranged = false;
|
|
this.magic = false;
|
|
this.ownerHitCheck = false;
|
|
this.hide = false;
|
|
this.lavaWet = false;
|
|
this.wetCount = (byte) 0;
|
|
this.wet = false;
|
|
this.ignoreWater = false;
|
|
this.hostile = false;
|
|
this.netUpdate = false;
|
|
this.netUpdate2 = false;
|
|
this.netSpam = 0;
|
|
this.numUpdates = 0;
|
|
this.maxUpdates = 0;
|
|
this.identity = 0;
|
|
this.restrikeDelay = 0;
|
|
this.light = 0.0f;
|
|
this.penetrate = 1;
|
|
this.tileCollide = true;
|
|
this.position = new Vector2();
|
|
this.velocity = new Vector2();
|
|
this.aiStyle = 0;
|
|
this.alpha = 0;
|
|
this.type = Type;
|
|
this.active = true;
|
|
this.rotation = 0.0f;
|
|
this.scale = 1f;
|
|
this.owner = (int) byte.MaxValue;
|
|
this.timeLeft = 3600;
|
|
this.name = "";
|
|
this.friendly = false;
|
|
this.damage = 0;
|
|
this.knockBack = 0.0f;
|
|
this.miscText = "";
|
|
if (this.type == 1)
|
|
{
|
|
this.name = "Wooden Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 2)
|
|
{
|
|
this.name = "Fire Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.light = 1f;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 3)
|
|
{
|
|
this.name = "Shuriken";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 2;
|
|
this.friendly = true;
|
|
this.penetrate = 4;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 4)
|
|
{
|
|
this.name = "Unholy Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.light = 0.35f;
|
|
this.penetrate = 5;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
this.name = "Jester's Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.light = 0.4f;
|
|
this.penetrate = -1;
|
|
this.timeLeft = 40;
|
|
this.alpha = 100;
|
|
this.ignoreWater = true;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 6)
|
|
{
|
|
this.name = "Enchanted Boomerang";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 3;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
this.light = 0.4f;
|
|
}
|
|
else if (this.type == 7 || this.type == 8)
|
|
{
|
|
this.name = "Vilethorn";
|
|
this.width = 28;
|
|
this.height = 28;
|
|
this.aiStyle = 4;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.ignoreWater = true;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 9)
|
|
{
|
|
this.name = "Starfury";
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 5;
|
|
this.friendly = true;
|
|
this.penetrate = 2;
|
|
this.alpha = 50;
|
|
this.scale = 0.8f;
|
|
this.tileCollide = false;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 10)
|
|
{
|
|
this.name = "Purification Powder";
|
|
this.width = 64;
|
|
this.height = 64;
|
|
this.aiStyle = 6;
|
|
this.friendly = true;
|
|
this.tileCollide = false;
|
|
this.penetrate = -1;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.ignoreWater = true;
|
|
}
|
|
else if (this.type == 11)
|
|
{
|
|
this.name = "Vile Powder";
|
|
this.width = 48;
|
|
this.height = 48;
|
|
this.aiStyle = 6;
|
|
this.friendly = true;
|
|
this.tileCollide = false;
|
|
this.penetrate = -1;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.ignoreWater = true;
|
|
}
|
|
else if (this.type == 12)
|
|
{
|
|
this.name = "Falling Star";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 5;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.alpha = 50;
|
|
this.light = 1f;
|
|
}
|
|
else if (this.type == 13)
|
|
{
|
|
this.name = "Hook";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 7;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.timeLeft *= 10;
|
|
}
|
|
else if (this.type == 14)
|
|
{
|
|
this.name = "Bullet";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.penetrate = 1;
|
|
this.light = 0.5f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 1;
|
|
this.scale = 1.2f;
|
|
this.timeLeft = 600;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 15)
|
|
{
|
|
this.name = "Ball of Fire";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 8;
|
|
this.friendly = true;
|
|
this.light = 0.8f;
|
|
this.alpha = 100;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 16)
|
|
{
|
|
this.name = "Magic Missile";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 9;
|
|
this.friendly = true;
|
|
this.light = 0.8f;
|
|
this.alpha = 100;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 17)
|
|
{
|
|
this.name = "Dirt Ball";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
this.name = "Orb of Light";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 11;
|
|
this.friendly = true;
|
|
this.light = 0.45f;
|
|
this.alpha = 150;
|
|
this.tileCollide = false;
|
|
this.penetrate = -1;
|
|
this.timeLeft *= 5;
|
|
this.ignoreWater = true;
|
|
this.scale = 0.8f;
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
this.name = "Flamarang";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 3;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.light = 1f;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
this.name = "Green Laser";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.penetrate = 3;
|
|
this.light = 0.75f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 2;
|
|
this.scale = 1.4f;
|
|
this.timeLeft = 600;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 21)
|
|
{
|
|
this.name = "Bone";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 2;
|
|
this.scale = 1.2f;
|
|
this.friendly = true;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 22)
|
|
{
|
|
this.name = "Water Stream";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 12;
|
|
this.friendly = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.penetrate = -1;
|
|
this.maxUpdates = 2;
|
|
this.ignoreWater = true;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 23)
|
|
{
|
|
this.name = "Harpoon";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 13;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 24)
|
|
{
|
|
this.name = "Spiky Ball";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 14;
|
|
this.friendly = true;
|
|
this.penetrate = 6;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 25)
|
|
{
|
|
this.name = "Ball 'O Hurt";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 15;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
this.scale = 0.8f;
|
|
}
|
|
else if (this.type == 26)
|
|
{
|
|
this.name = "Blue Moon";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 15;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
this.scale = 0.8f;
|
|
}
|
|
else if (this.type == 27)
|
|
{
|
|
this.name = "Water Bolt";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 8;
|
|
this.friendly = true;
|
|
this.light = 0.8f;
|
|
this.alpha = 200;
|
|
this.timeLeft /= 2;
|
|
this.penetrate = 10;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 28)
|
|
{
|
|
this.name = "Bomb";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 16;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 29)
|
|
{
|
|
this.name = "Dynamite";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 16;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 30)
|
|
{
|
|
this.name = "Grenade";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 16;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 31)
|
|
{
|
|
this.name = "Sand Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 32)
|
|
{
|
|
this.name = "Ivy Whip";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 7;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.timeLeft *= 10;
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
this.name = "Thorn Chakrum";
|
|
this.width = 28;
|
|
this.height = 28;
|
|
this.aiStyle = 3;
|
|
this.friendly = true;
|
|
this.scale = 0.9f;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 34)
|
|
{
|
|
this.name = "Flamelash";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 9;
|
|
this.friendly = true;
|
|
this.light = 0.8f;
|
|
this.alpha = 100;
|
|
this.penetrate = 1;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 35)
|
|
{
|
|
this.name = "Sunfury";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 15;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
this.scale = 0.8f;
|
|
}
|
|
else if (this.type == 36)
|
|
{
|
|
this.name = "Meteor Shot";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.penetrate = 2;
|
|
this.light = 0.6f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 1;
|
|
this.scale = 1.4f;
|
|
this.timeLeft = 600;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 37)
|
|
{
|
|
this.name = "Sticky Bomb";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 16;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
}
|
|
else if (this.type == 38)
|
|
{
|
|
this.name = "Harpy Feather";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 0;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
this.aiStyle = 1;
|
|
this.tileCollide = true;
|
|
}
|
|
else if (this.type == 39)
|
|
{
|
|
this.name = "Mud Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 40)
|
|
{
|
|
this.name = "Ash Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 41)
|
|
{
|
|
this.name = "Hellfire Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.ranged = true;
|
|
this.light = 0.3f;
|
|
}
|
|
else if (this.type == 42)
|
|
{
|
|
this.name = "Sand Ball";
|
|
this.knockBack = 8f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.maxUpdates = 1;
|
|
}
|
|
else if (this.type == 43)
|
|
{
|
|
this.name = "Tombstone";
|
|
this.knockBack = 12f;
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 17;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 44)
|
|
{
|
|
this.name = "Demon Sickle";
|
|
this.width = 48;
|
|
this.height = 48;
|
|
this.alpha = 100;
|
|
this.light = 0.2f;
|
|
this.aiStyle = 18;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = true;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 45)
|
|
{
|
|
this.name = "Demon Scythe";
|
|
this.width = 48;
|
|
this.height = 48;
|
|
this.alpha = 100;
|
|
this.light = 0.2f;
|
|
this.aiStyle = 18;
|
|
this.friendly = true;
|
|
this.penetrate = 5;
|
|
this.tileCollide = true;
|
|
this.scale = 0.9f;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 46)
|
|
{
|
|
this.name = "Dark Lance";
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 19;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.scale = 1.1f;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 47)
|
|
{
|
|
this.name = "Trident";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 19;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.scale = 1.1f;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 48)
|
|
{
|
|
this.name = "Throwing Knife";
|
|
this.width = 12;
|
|
this.height = 12;
|
|
this.aiStyle = 2;
|
|
this.friendly = true;
|
|
this.penetrate = 2;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 49)
|
|
{
|
|
this.name = "Spear";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 19;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.scale = 1.2f;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 50)
|
|
{
|
|
this.name = "Glowstick";
|
|
this.width = 6;
|
|
this.height = 6;
|
|
this.aiStyle = 14;
|
|
this.penetrate = -1;
|
|
this.alpha = 75;
|
|
this.light = 1f;
|
|
this.timeLeft *= 5;
|
|
}
|
|
else if (this.type == 51)
|
|
{
|
|
this.name = "Seed";
|
|
this.width = 8;
|
|
this.height = 8;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
}
|
|
else if (this.type == 52)
|
|
{
|
|
this.name = "Wooden Boomerang";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 3;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 53)
|
|
{
|
|
this.name = "Sticky Glowstick";
|
|
this.width = 6;
|
|
this.height = 6;
|
|
this.aiStyle = 14;
|
|
this.penetrate = -1;
|
|
this.alpha = 75;
|
|
this.light = 1f;
|
|
this.timeLeft *= 5;
|
|
this.tileCollide = false;
|
|
}
|
|
else if (this.type == 54)
|
|
{
|
|
this.name = "Poisoned Knife";
|
|
this.width = 12;
|
|
this.height = 12;
|
|
this.aiStyle = 2;
|
|
this.friendly = true;
|
|
this.penetrate = 2;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 55)
|
|
{
|
|
this.name = "Stinger";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 0;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
this.aiStyle = 1;
|
|
this.tileCollide = true;
|
|
}
|
|
else if (this.type == 56)
|
|
{
|
|
this.name = "Ebonsand Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 57)
|
|
{
|
|
this.name = "Cobalt Chainsaw";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 20;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 58)
|
|
{
|
|
this.name = "Mythril Chainsaw";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 20;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
this.scale = 1.08f;
|
|
}
|
|
else if (this.type == 59)
|
|
{
|
|
this.name = "Cobalt Drill";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 20;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 60)
|
|
{
|
|
this.name = "Mythril Drill";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 20;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 61)
|
|
{
|
|
this.name = "Adamantite Chainsaw";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 20;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
this.scale = 1.16f;
|
|
}
|
|
else if (this.type == 62)
|
|
{
|
|
this.name = "Adamantite Drill";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 20;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 63)
|
|
{
|
|
this.name = "The Dao of Pow";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 15;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 64)
|
|
{
|
|
this.name = "Mythril Halberd";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 19;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.scale = 1.25f;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 65)
|
|
{
|
|
this.name = "Ebonsand Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.maxUpdates = 1;
|
|
}
|
|
else if (this.type == 66)
|
|
{
|
|
this.name = "Adamantite Glaive";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 19;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.scale = 1.27f;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 67)
|
|
{
|
|
this.name = "Pearl Sand Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 68)
|
|
{
|
|
this.name = "Pearl Sand Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.maxUpdates = 1;
|
|
}
|
|
else if (this.type == 69)
|
|
{
|
|
this.name = "Holy Water";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 2;
|
|
this.friendly = true;
|
|
this.penetrate = 1;
|
|
}
|
|
else if (this.type == 70)
|
|
{
|
|
this.name = "Unholy Water";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 2;
|
|
this.friendly = true;
|
|
this.penetrate = 1;
|
|
}
|
|
else if (this.type == 71)
|
|
{
|
|
this.name = "Gravel Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 72)
|
|
{
|
|
this.name = "Blue Fairy";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 11;
|
|
this.friendly = true;
|
|
this.light = 0.9f;
|
|
this.tileCollide = false;
|
|
this.penetrate = -1;
|
|
this.timeLeft *= 5;
|
|
this.ignoreWater = true;
|
|
this.scale = 0.8f;
|
|
}
|
|
else if (this.type == 73 || this.type == 74)
|
|
{
|
|
this.name = "Hook";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 7;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.timeLeft *= 10;
|
|
this.light = 0.4f;
|
|
}
|
|
else if (this.type == 75)
|
|
{
|
|
this.name = "Happy Bomb";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 16;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 76 || this.type == 77 || this.type == 78)
|
|
{
|
|
if (this.type == 76)
|
|
{
|
|
this.width = 10;
|
|
this.height = 22;
|
|
}
|
|
else if (this.type == 77)
|
|
{
|
|
this.width = 18;
|
|
this.height = 24;
|
|
}
|
|
else
|
|
{
|
|
this.width = 22;
|
|
this.height = 24;
|
|
}
|
|
this.name = "Note";
|
|
this.aiStyle = 21;
|
|
this.friendly = true;
|
|
this.ranged = true;
|
|
this.alpha = 100;
|
|
this.light = 0.3f;
|
|
this.penetrate = -1;
|
|
this.timeLeft = 180;
|
|
}
|
|
else if (this.type == 79)
|
|
{
|
|
this.name = "Rainbow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 9;
|
|
this.friendly = true;
|
|
this.light = 0.8f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 80)
|
|
{
|
|
this.name = "Ice Block";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 22;
|
|
this.friendly = true;
|
|
this.magic = true;
|
|
this.tileCollide = false;
|
|
this.light = 0.5f;
|
|
}
|
|
else if (this.type == 81)
|
|
{
|
|
this.name = "Wooden Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.hostile = true;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 82)
|
|
{
|
|
this.name = "Flaming Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.hostile = true;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 83)
|
|
{
|
|
this.name = "Eye Laser";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.hostile = true;
|
|
this.penetrate = 3;
|
|
this.light = 0.75f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 2;
|
|
this.scale = 1.7f;
|
|
this.timeLeft = 600;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 84)
|
|
{
|
|
this.name = "Pink Laser";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.hostile = true;
|
|
this.penetrate = 3;
|
|
this.light = 0.75f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 2;
|
|
this.scale = 1.2f;
|
|
this.timeLeft = 600;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 85)
|
|
{
|
|
this.name = "Flames";
|
|
this.width = 6;
|
|
this.height = 6;
|
|
this.aiStyle = 23;
|
|
this.friendly = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.penetrate = 3;
|
|
this.maxUpdates = 2;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 86)
|
|
{
|
|
this.name = "Pink Fairy";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 11;
|
|
this.friendly = true;
|
|
this.light = 0.9f;
|
|
this.tileCollide = false;
|
|
this.penetrate = -1;
|
|
this.timeLeft *= 5;
|
|
this.ignoreWater = true;
|
|
this.scale = 0.8f;
|
|
}
|
|
else if (this.type == 87)
|
|
{
|
|
this.name = "Pink Fairy";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 11;
|
|
this.friendly = true;
|
|
this.light = 0.9f;
|
|
this.tileCollide = false;
|
|
this.penetrate = -1;
|
|
this.timeLeft *= 5;
|
|
this.ignoreWater = true;
|
|
this.scale = 0.8f;
|
|
}
|
|
else if (this.type == 88)
|
|
{
|
|
this.name = "Purple Laser";
|
|
this.width = 6;
|
|
this.height = 6;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.penetrate = 3;
|
|
this.light = 0.75f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 4;
|
|
this.scale = 1.4f;
|
|
this.timeLeft = 600;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 89)
|
|
{
|
|
this.name = "Crystal Bullet";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.penetrate = 1;
|
|
this.light = 0.5f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 1;
|
|
this.scale = 1.2f;
|
|
this.timeLeft = 600;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 90)
|
|
{
|
|
this.name = "Crystal Shard";
|
|
this.width = 6;
|
|
this.height = 6;
|
|
this.aiStyle = 24;
|
|
this.friendly = true;
|
|
this.penetrate = 1;
|
|
this.light = 0.5f;
|
|
this.alpha = 50;
|
|
this.scale = 1.2f;
|
|
this.timeLeft = 600;
|
|
this.ranged = true;
|
|
this.tileCollide = false;
|
|
}
|
|
else if (this.type == 91)
|
|
{
|
|
this.name = "Holy Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 92)
|
|
{
|
|
this.name = "Hallow Star";
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 5;
|
|
this.friendly = true;
|
|
this.penetrate = 2;
|
|
this.alpha = 50;
|
|
this.scale = 0.8f;
|
|
this.tileCollide = false;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 93)
|
|
{
|
|
this.light = 0.15f;
|
|
this.name = "Magic Dagger";
|
|
this.width = 12;
|
|
this.height = 12;
|
|
this.aiStyle = 2;
|
|
this.friendly = true;
|
|
this.penetrate = 2;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 94)
|
|
{
|
|
this.ignoreWater = true;
|
|
this.name = "Crystal Storm";
|
|
this.width = 8;
|
|
this.height = 8;
|
|
this.aiStyle = 24;
|
|
this.friendly = true;
|
|
this.light = 0.5f;
|
|
this.alpha = 50;
|
|
this.scale = 1.2f;
|
|
this.timeLeft = 600;
|
|
this.magic = true;
|
|
this.tileCollide = true;
|
|
this.penetrate = 1;
|
|
}
|
|
else if (this.type == 95)
|
|
{
|
|
this.name = "Cursed Flame";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 8;
|
|
this.friendly = true;
|
|
this.light = 0.8f;
|
|
this.alpha = 100;
|
|
this.magic = true;
|
|
this.penetrate = 2;
|
|
}
|
|
else if (this.type == 96)
|
|
{
|
|
this.name = "Cursed Flame";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 8;
|
|
this.hostile = true;
|
|
this.light = 0.8f;
|
|
this.alpha = 100;
|
|
this.magic = true;
|
|
this.penetrate = -1;
|
|
this.scale = 0.9f;
|
|
this.scale = 1.3f;
|
|
}
|
|
else if (this.type == 97)
|
|
{
|
|
this.name = "Cobalt Naginata";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 19;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.scale = 1.1f;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 98)
|
|
{
|
|
this.name = "Poison Dart";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.ranged = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 99)
|
|
{
|
|
this.name = "Boulder";
|
|
this.width = 31;
|
|
this.height = 31;
|
|
this.aiStyle = 25;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.ranged = true;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 100)
|
|
{
|
|
this.name = "Death Laser";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.hostile = true;
|
|
this.penetrate = 3;
|
|
this.light = 0.75f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 2;
|
|
this.scale = 1.8f;
|
|
this.timeLeft = 1200;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 101)
|
|
{
|
|
this.name = "Eye Fire";
|
|
this.width = 6;
|
|
this.height = 6;
|
|
this.aiStyle = 23;
|
|
this.hostile = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.penetrate = -1;
|
|
this.maxUpdates = 3;
|
|
this.magic = true;
|
|
}
|
|
else if (this.type == 102)
|
|
{
|
|
this.name = "Bomb";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 16;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 103)
|
|
{
|
|
this.name = "Cursed Arrow";
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.light = 1f;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 104)
|
|
{
|
|
this.name = "Cursed Bullet";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.friendly = true;
|
|
this.penetrate = 1;
|
|
this.light = 0.5f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 1;
|
|
this.scale = 1.2f;
|
|
this.timeLeft = 600;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 105)
|
|
{
|
|
this.name = "Gungnir";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 19;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.scale = 1.3f;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
}
|
|
else if (this.type == 106)
|
|
{
|
|
this.name = "Light Disc";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 3;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.melee = true;
|
|
this.light = 0.4f;
|
|
}
|
|
else if (this.type == 107)
|
|
{
|
|
this.name = "Hamdrax";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 20;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.hide = true;
|
|
this.ownerHitCheck = true;
|
|
this.melee = true;
|
|
this.scale = 1.1f;
|
|
}
|
|
else if (this.type == 108)
|
|
{
|
|
this.name = "Explosives";
|
|
this.width = 260;
|
|
this.height = 260;
|
|
this.aiStyle = 16;
|
|
this.friendly = true;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
this.tileCollide = false;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.timeLeft = 2;
|
|
}
|
|
else if (this.type == 109)
|
|
{
|
|
this.name = "Snow Ball";
|
|
this.knockBack = 6f;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 10;
|
|
this.hostile = true;
|
|
this.scale = 0.9f;
|
|
this.penetrate = -1;
|
|
}
|
|
else if (this.type == 110)
|
|
{
|
|
this.name = "Bullet";
|
|
this.width = 4;
|
|
this.height = 4;
|
|
this.aiStyle = 1;
|
|
this.hostile = true;
|
|
this.penetrate = -1;
|
|
this.light = 0.5f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.maxUpdates = 1;
|
|
this.scale = 1.2f;
|
|
this.timeLeft = 600;
|
|
this.ranged = true;
|
|
}
|
|
else if (this.type == 111)
|
|
{
|
|
this.name = "Bunny";
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 26;
|
|
this.friendly = true;
|
|
this.penetrate = -1;
|
|
this.timeLeft *= 5;
|
|
}
|
|
else
|
|
this.active = false;
|
|
this.width = (int) ((double) this.width * (double) this.scale);
|
|
this.height = (int) ((double) this.height * (double) this.scale);
|
|
}
|
|
|
|
public static int NewProjectile(
|
|
float X,
|
|
float Y,
|
|
float SpeedX,
|
|
float SpeedY,
|
|
int Type,
|
|
int Damage,
|
|
float KnockBack,
|
|
int Owner = 255)
|
|
{
|
|
int number = 1000;
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
if (!Main.projectile[index].active)
|
|
{
|
|
number = index;
|
|
break;
|
|
}
|
|
}
|
|
if (number == 1000)
|
|
return number;
|
|
Main.projectile[number].SetDefaults(Type);
|
|
Main.projectile[number].position.X = X - (float) Main.projectile[number].width * 0.5f;
|
|
Main.projectile[number].position.Y = Y - (float) Main.projectile[number].height * 0.5f;
|
|
Main.projectile[number].owner = Owner;
|
|
Main.projectile[number].velocity.X = SpeedX;
|
|
Main.projectile[number].velocity.Y = SpeedY;
|
|
Main.projectile[number].damage = Damage;
|
|
Main.projectile[number].knockBack = KnockBack;
|
|
Main.projectile[number].identity = number;
|
|
Main.projectile[number].wet = Collision.WetCollision(Main.projectile[number].position, Main.projectile[number].width, Main.projectile[number].height);
|
|
if (Main.netMode != 0 && Owner == Main.myPlayer)
|
|
NetMessage.SendData(27, number: number);
|
|
if (Owner == Main.myPlayer)
|
|
{
|
|
if (Type == 28)
|
|
Main.projectile[number].timeLeft = 180;
|
|
if (Type == 29)
|
|
Main.projectile[number].timeLeft = 300;
|
|
if (Type == 30)
|
|
Main.projectile[number].timeLeft = 180;
|
|
if (Type == 37)
|
|
Main.projectile[number].timeLeft = 180;
|
|
if (Type == 75)
|
|
Main.projectile[number].timeLeft = 180;
|
|
}
|
|
return number;
|
|
}
|
|
|
|
public void StatusNPC(int i)
|
|
{
|
|
if (this.type == 2)
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
return;
|
|
Main.npc[i].AddBuff(24, 180);
|
|
}
|
|
else if (this.type == 15)
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
Main.npc[i].AddBuff(24, 300);
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
if (Main.rand.Next(5) != 0)
|
|
return;
|
|
Main.npc[i].AddBuff(24, 180);
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
if (Main.rand.Next(5) != 0)
|
|
return;
|
|
Main.npc[i].AddBuff(20, 420);
|
|
}
|
|
else if (this.type == 34)
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
Main.npc[i].AddBuff(24, 240);
|
|
}
|
|
else if (this.type == 35)
|
|
{
|
|
if (Main.rand.Next(4) != 0)
|
|
return;
|
|
Main.npc[i].AddBuff(24, 180);
|
|
}
|
|
else if (this.type == 54)
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
Main.npc[i].AddBuff(20, 600);
|
|
}
|
|
else if (this.type == 63)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
return;
|
|
Main.npc[i].AddBuff(31, 120);
|
|
}
|
|
else if (this.type == 85)
|
|
Main.npc[i].AddBuff(24, 1200);
|
|
else if (this.type == 95 || this.type == 103 || this.type == 104)
|
|
{
|
|
Main.npc[i].AddBuff(39, 420);
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 98)
|
|
return;
|
|
Main.npc[i].AddBuff(20, 600);
|
|
}
|
|
}
|
|
|
|
public void StatusPvP(int i)
|
|
{
|
|
if (this.type == 2)
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
return;
|
|
Main.player[i].AddBuff(24, 180, false);
|
|
}
|
|
else if (this.type == 15)
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
Main.player[i].AddBuff(24, 300, false);
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
if (Main.rand.Next(5) != 0)
|
|
return;
|
|
Main.player[i].AddBuff(24, 180, false);
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
if (Main.rand.Next(5) != 0)
|
|
return;
|
|
Main.player[i].AddBuff(20, 420, false);
|
|
}
|
|
else if (this.type == 34)
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
Main.player[i].AddBuff(24, 240, false);
|
|
}
|
|
else if (this.type == 35)
|
|
{
|
|
if (Main.rand.Next(4) != 0)
|
|
return;
|
|
Main.player[i].AddBuff(24, 180, false);
|
|
}
|
|
else if (this.type == 54)
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
Main.player[i].AddBuff(20, 600, false);
|
|
}
|
|
else if (this.type == 63)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
return;
|
|
Main.player[i].AddBuff(31, 120);
|
|
}
|
|
else if (this.type == 85)
|
|
{
|
|
Main.player[i].AddBuff(24, 1200, false);
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 95 && this.type != 103 && this.type != 104)
|
|
return;
|
|
Main.player[i].AddBuff(39, 420);
|
|
}
|
|
}
|
|
|
|
public void StatusPlayer(int i)
|
|
{
|
|
if (this.type == 55 && Main.rand.Next(3) == 0)
|
|
Main.player[i].AddBuff(20, 600);
|
|
if (this.type == 44 && Main.rand.Next(3) == 0)
|
|
Main.player[i].AddBuff(22, 900);
|
|
if (this.type == 82 && Main.rand.Next(3) == 0)
|
|
Main.player[i].AddBuff(24, 420);
|
|
if ((this.type == 96 || this.type == 101) && Main.rand.Next(3) == 0)
|
|
Main.player[i].AddBuff(39, 480);
|
|
if (this.type != 98)
|
|
return;
|
|
Main.player[i].AddBuff(20, 600);
|
|
}
|
|
|
|
public void Damage()
|
|
{
|
|
if (this.type == 18 || this.type == 72 || this.type == 86 || this.type == 87 || this.type == 111)
|
|
return;
|
|
Rectangle rectangle1 = new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height);
|
|
if (this.type == 85 || this.type == 101)
|
|
{
|
|
int num = 30;
|
|
rectangle1.X -= num;
|
|
rectangle1.Y -= num;
|
|
rectangle1.Width += num * 2;
|
|
rectangle1.Height += num * 2;
|
|
}
|
|
if (this.friendly && this.owner == Main.myPlayer)
|
|
{
|
|
if ((this.aiStyle == 16 || this.type == 41) && (this.timeLeft <= 1 || this.type == 108))
|
|
{
|
|
int player = Main.myPlayer;
|
|
if (Main.player[player].active && !Main.player[player].dead && !Main.player[player].immune && (!this.ownerHitCheck || Collision.CanHit(Main.player[this.owner].position, Main.player[this.owner].width, Main.player[this.owner].height, Main.player[player].position, Main.player[player].width, Main.player[player].height)))
|
|
{
|
|
Rectangle rectangle2 = new Rectangle((int) Main.player[player].position.X, (int) Main.player[player].position.Y, Main.player[player].width, Main.player[player].height);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
this.direction = (double) Main.player[player].position.X + (double) (Main.player[player].width / 2) >= (double) this.position.X + (double) (this.width / 2) ? 1 : -1;
|
|
int Damage = Main.DamageVar((float) this.damage);
|
|
this.StatusPlayer(player);
|
|
Main.player[player].Hurt(Damage, this.direction, true, deathText: Lang.deathMsg(this.owner, proj: this.whoAmI));
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(26, text: Lang.deathMsg(this.owner, proj: this.whoAmI), number: player, number2: ((float) this.direction), number3: ((float) Damage), number4: 1f);
|
|
}
|
|
}
|
|
}
|
|
if (this.type != 69 && this.type != 70 && this.type != 10 && this.type != 11)
|
|
{
|
|
int num1 = (int) ((double) this.position.X / 16.0);
|
|
int num2 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 1;
|
|
int num3 = (int) ((double) this.position.Y / 16.0);
|
|
int num4 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 1;
|
|
if (num1 < 0)
|
|
num1 = 0;
|
|
if (num2 > Main.maxTilesX)
|
|
num2 = Main.maxTilesX;
|
|
if (num3 < 0)
|
|
num3 = 0;
|
|
if (num4 > Main.maxTilesY)
|
|
num4 = Main.maxTilesY;
|
|
for (int i = num1; i < num2; ++i)
|
|
{
|
|
for (int j = num3; j < num4; ++j)
|
|
{
|
|
if (Main.tile[i, j] != null && Main.tileCut[(int) Main.tile[i, j].type] && Main.tile[i, j + 1] != null && Main.tile[i, j + 1].type != (byte) 78)
|
|
{
|
|
WorldGen.KillTile(i, j);
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(17, number2: ((float) i), number3: ((float) j));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.owner == Main.myPlayer)
|
|
{
|
|
if (this.damage > 0)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && !Main.npc[index].dontTakeDamage && ((!Main.npc[index].friendly || Main.npc[index].type == 22 && this.owner < (int) byte.MaxValue && Main.player[this.owner].killGuide) && this.friendly || Main.npc[index].friendly && this.hostile) && (this.owner < 0 || Main.npc[index].immune[this.owner] == 0))
|
|
{
|
|
bool flag = false;
|
|
if (this.type == 11 && (Main.npc[index].type == 47 || Main.npc[index].type == 57))
|
|
flag = true;
|
|
else if (this.type == 31 && Main.npc[index].type == 69)
|
|
flag = true;
|
|
if (!flag && (Main.npc[index].noTileCollide || !this.ownerHitCheck || Collision.CanHit(Main.player[this.owner].position, Main.player[this.owner].width, Main.player[this.owner].height, Main.npc[index].position, Main.npc[index].width, Main.npc[index].height)))
|
|
{
|
|
Rectangle rectangle3 = new Rectangle((int) Main.npc[index].position.X, (int) Main.npc[index].position.Y, Main.npc[index].width, Main.npc[index].height);
|
|
if (rectangle1.Intersects(rectangle3))
|
|
{
|
|
if (this.aiStyle == 3)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.velocity.X = -this.velocity.X;
|
|
this.velocity.Y = -this.velocity.Y;
|
|
this.netUpdate = true;
|
|
}
|
|
this.ai[0] = 1f;
|
|
}
|
|
else if (this.aiStyle == 16)
|
|
{
|
|
if (this.timeLeft > 3)
|
|
this.timeLeft = 3;
|
|
this.direction = (double) Main.npc[index].position.X + (double) (Main.npc[index].width / 2) >= (double) this.position.X + (double) (this.width / 2) ? 1 : -1;
|
|
}
|
|
if (this.type == 41 && this.timeLeft > 1)
|
|
this.timeLeft = 1;
|
|
bool crit = false;
|
|
if (this.melee && Main.rand.Next(1, 101) <= Main.player[this.owner].meleeCrit)
|
|
crit = true;
|
|
if (this.ranged && Main.rand.Next(1, 101) <= Main.player[this.owner].rangedCrit)
|
|
crit = true;
|
|
if (this.magic && Main.rand.Next(1, 101) <= Main.player[this.owner].magicCrit)
|
|
crit = true;
|
|
int Damage = Main.DamageVar((float) this.damage);
|
|
this.StatusNPC(index);
|
|
Main.npc[index].StrikeNPC(Damage, this.knockBack, this.direction, crit);
|
|
if (Main.netMode != 0)
|
|
{
|
|
if (crit)
|
|
NetMessage.SendData(28, number: index, number2: ((float) Damage), number3: this.knockBack, number4: ((float) this.direction), number5: 1);
|
|
else
|
|
NetMessage.SendData(28, number: index, number2: ((float) Damage), number3: this.knockBack, number4: ((float) this.direction));
|
|
}
|
|
if (this.penetrate != 1)
|
|
Main.npc[index].immune[this.owner] = 10;
|
|
if (this.penetrate > 0)
|
|
{
|
|
--this.penetrate;
|
|
if (this.penetrate == 0)
|
|
break;
|
|
}
|
|
if (this.aiStyle == 7)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.damage = 0;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.aiStyle == 13)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.damage > 0 && Main.player[Main.myPlayer].hostile)
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (index != this.owner && Main.player[index].active && !Main.player[index].dead && !Main.player[index].immune && Main.player[index].hostile && this.playerImmune[index] <= 0 && (Main.player[Main.myPlayer].team == 0 || Main.player[Main.myPlayer].team != Main.player[index].team) && (!this.ownerHitCheck || Collision.CanHit(Main.player[this.owner].position, Main.player[this.owner].width, Main.player[this.owner].height, Main.player[index].position, Main.player[index].width, Main.player[index].height)))
|
|
{
|
|
Rectangle rectangle4 = new Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height);
|
|
if (rectangle1.Intersects(rectangle4))
|
|
{
|
|
if (this.aiStyle == 3)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.velocity.X = -this.velocity.X;
|
|
this.velocity.Y = -this.velocity.Y;
|
|
this.netUpdate = true;
|
|
}
|
|
this.ai[0] = 1f;
|
|
}
|
|
else if (this.aiStyle == 16)
|
|
{
|
|
if (this.timeLeft > 3)
|
|
this.timeLeft = 3;
|
|
this.direction = (double) Main.player[index].position.X + (double) (Main.player[index].width / 2) >= (double) this.position.X + (double) (this.width / 2) ? 1 : -1;
|
|
}
|
|
if (this.type == 41 && this.timeLeft > 1)
|
|
this.timeLeft = 1;
|
|
bool Crit = false;
|
|
if (this.melee && Main.rand.Next(1, 101) <= Main.player[this.owner].meleeCrit)
|
|
Crit = true;
|
|
int Damage = Main.DamageVar((float) this.damage);
|
|
if (!Main.player[index].immune)
|
|
this.StatusPvP(index);
|
|
Main.player[index].Hurt(Damage, this.direction, true, deathText: Lang.deathMsg(this.owner, proj: this.whoAmI), Crit: Crit);
|
|
if (Main.netMode != 0)
|
|
{
|
|
if (Crit)
|
|
NetMessage.SendData(26, text: Lang.deathMsg(this.owner, proj: this.whoAmI), number: index, number2: ((float) this.direction), number3: ((float) Damage), number4: 1f, number5: 1);
|
|
else
|
|
NetMessage.SendData(26, text: Lang.deathMsg(this.owner, proj: this.whoAmI), number: index, number2: ((float) this.direction), number3: ((float) Damage), number4: 1f);
|
|
}
|
|
this.playerImmune[index] = 40;
|
|
if (this.penetrate > 0)
|
|
{
|
|
--this.penetrate;
|
|
if (this.penetrate == 0)
|
|
break;
|
|
}
|
|
if (this.aiStyle == 7)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.damage = 0;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.aiStyle == 13)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 11 && Main.netMode != 1)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active)
|
|
{
|
|
if (Main.npc[index].type == 46)
|
|
{
|
|
Rectangle rectangle5 = new Rectangle((int) Main.npc[index].position.X, (int) Main.npc[index].position.Y, Main.npc[index].width, Main.npc[index].height);
|
|
if (rectangle1.Intersects(rectangle5))
|
|
Main.npc[index].Transform(47);
|
|
}
|
|
else if (Main.npc[index].type == 55)
|
|
{
|
|
Rectangle rectangle6 = new Rectangle((int) Main.npc[index].position.X, (int) Main.npc[index].position.Y, Main.npc[index].width, Main.npc[index].height);
|
|
if (rectangle1.Intersects(rectangle6))
|
|
Main.npc[index].Transform(57);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode == 2 || !this.hostile || Main.myPlayer >= (int) byte.MaxValue || this.damage <= 0)
|
|
return;
|
|
int player1 = Main.myPlayer;
|
|
if (!Main.player[player1].active || Main.player[player1].dead || Main.player[player1].immune)
|
|
return;
|
|
Rectangle rectangle7 = new Rectangle((int) Main.player[player1].position.X, (int) Main.player[player1].position.Y, Main.player[player1].width, Main.player[player1].height);
|
|
if (!rectangle1.Intersects(rectangle7))
|
|
return;
|
|
int direction = this.direction;
|
|
int hitDirection = (double) Main.player[player1].position.X + (double) (Main.player[player1].width / 2) >= (double) this.position.X + (double) (this.width / 2) ? 1 : -1;
|
|
int num5 = Main.DamageVar((float) this.damage);
|
|
if (!Main.player[player1].immune)
|
|
this.StatusPlayer(player1);
|
|
Main.player[player1].Hurt(num5 * 2, hitDirection, deathText: Lang.deathMsg(proj: this.whoAmI));
|
|
}
|
|
|
|
public void Update(int i)
|
|
{
|
|
if (!this.active)
|
|
return;
|
|
Vector2 vector2 = this.velocity;
|
|
if ((double) this.position.X <= (double) Main.leftWorld || (double) this.position.X + (double) this.width >= (double) Main.rightWorld || (double) this.position.Y <= (double) Main.topWorld || (double) this.position.Y + (double) this.height >= (double) Main.bottomWorld)
|
|
{
|
|
this.active = false;
|
|
}
|
|
else
|
|
{
|
|
this.whoAmI = i;
|
|
if (this.soundDelay > 0)
|
|
--this.soundDelay;
|
|
this.netUpdate = false;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (this.playerImmune[index] > 0)
|
|
--this.playerImmune[index];
|
|
}
|
|
this.AI();
|
|
if (this.owner < (int) byte.MaxValue && !Main.player[this.owner].active)
|
|
this.Kill();
|
|
if (!this.ignoreWater)
|
|
{
|
|
bool flag1;
|
|
bool flag2;
|
|
try
|
|
{
|
|
flag1 = Collision.LavaCollision(this.position, this.width, this.height);
|
|
flag2 = Collision.WetCollision(this.position, this.width, this.height);
|
|
if (flag1)
|
|
this.lavaWet = true;
|
|
}
|
|
catch
|
|
{
|
|
this.active = false;
|
|
return;
|
|
}
|
|
if (this.wet && !this.lavaWet)
|
|
{
|
|
if (this.type == 85 || this.type == 15 || this.type == 34)
|
|
this.Kill();
|
|
if (this.type == 2)
|
|
{
|
|
this.type = 1;
|
|
this.light = 0.0f;
|
|
}
|
|
}
|
|
if (this.type == 80)
|
|
{
|
|
flag2 = false;
|
|
this.wet = false;
|
|
if (flag1 && (double) this.ai[0] >= 0.0)
|
|
this.Kill();
|
|
}
|
|
if (flag2)
|
|
{
|
|
if (this.wetCount == (byte) 0)
|
|
{
|
|
this.wetCount = (byte) 10;
|
|
if (!this.wet)
|
|
{
|
|
if (!flag1)
|
|
{
|
|
for (int index1 = 0; index1 < 10; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 33);
|
|
Main.dust[index2].velocity.Y -= 4f;
|
|
Main.dust[index2].velocity.X *= 2.5f;
|
|
Main.dust[index2].scale = 1.3f;
|
|
Main.dust[index2].alpha = 100;
|
|
Main.dust[index2].noGravity = true;
|
|
}
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else
|
|
{
|
|
for (int index3 = 0; index3 < 10; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 35);
|
|
Main.dust[index4].velocity.Y -= 1.5f;
|
|
Main.dust[index4].velocity.X *= 2.5f;
|
|
Main.dust[index4].scale = 1.3f;
|
|
Main.dust[index4].alpha = 100;
|
|
Main.dust[index4].noGravity = true;
|
|
}
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
}
|
|
this.wet = true;
|
|
}
|
|
}
|
|
else if (this.wet)
|
|
{
|
|
this.wet = false;
|
|
if (this.wetCount == (byte) 0)
|
|
{
|
|
this.wetCount = (byte) 10;
|
|
if (!this.lavaWet)
|
|
{
|
|
for (int index5 = 0; index5 < 10; ++index5)
|
|
{
|
|
int index6 = Dust.NewDust(new Vector2(this.position.X - 6f, this.position.Y + (float) (this.height / 2)), this.width + 12, 24, 33);
|
|
Main.dust[index6].velocity.Y -= 4f;
|
|
Main.dust[index6].velocity.X *= 2.5f;
|
|
Main.dust[index6].scale = 1.3f;
|
|
Main.dust[index6].alpha = 100;
|
|
Main.dust[index6].noGravity = true;
|
|
}
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else
|
|
{
|
|
for (int index7 = 0; index7 < 10; ++index7)
|
|
{
|
|
int index8 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 35);
|
|
Main.dust[index8].velocity.Y -= 1.5f;
|
|
Main.dust[index8].velocity.X *= 2.5f;
|
|
Main.dust[index8].scale = 1.3f;
|
|
Main.dust[index8].alpha = 100;
|
|
Main.dust[index8].noGravity = true;
|
|
}
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
}
|
|
}
|
|
if (!this.wet)
|
|
this.lavaWet = false;
|
|
if (this.wetCount > (byte) 0)
|
|
--this.wetCount;
|
|
}
|
|
this.lastPosition = this.position;
|
|
if (this.tileCollide)
|
|
{
|
|
Vector2 velocity1 = this.velocity;
|
|
bool flag3 = true;
|
|
if (this.type == 9 || this.type == 12 || this.type == 15 || this.type == 13 || this.type == 31 || this.type == 39 || this.type == 40)
|
|
flag3 = false;
|
|
if (this.aiStyle == 10)
|
|
this.velocity = this.type == 42 || this.type == 65 || this.type == 68 || this.type == 31 && (double) this.ai[0] == 2.0 ? Collision.TileCollision(this.position, this.velocity, this.width, this.height, flag3, flag3) : Collision.AnyCollision(this.position, this.velocity, this.width, this.height);
|
|
else if (this.aiStyle == 18)
|
|
{
|
|
int Width = this.width - 36;
|
|
int Height = this.height - 36;
|
|
this.velocity = Collision.TileCollision(new Vector2(this.position.X + (float) (this.width / 2) - (float) (Width / 2), this.position.Y + (float) (this.height / 2) - (float) (Height / 2)), this.velocity, Width, Height, flag3, flag3);
|
|
}
|
|
else if (this.wet)
|
|
{
|
|
Vector2 velocity2 = this.velocity;
|
|
this.velocity = Collision.TileCollision(this.position, this.velocity, this.width, this.height, flag3, flag3);
|
|
vector2 = this.velocity * 0.5f;
|
|
if ((double) this.velocity.X != (double) velocity2.X)
|
|
vector2.X = this.velocity.X;
|
|
if ((double) this.velocity.Y != (double) velocity2.Y)
|
|
vector2.Y = this.velocity.Y;
|
|
}
|
|
else
|
|
this.velocity = Collision.TileCollision(this.position, this.velocity, this.width, this.height, flag3, flag3);
|
|
if (velocity1 != this.velocity && this.type != 111)
|
|
{
|
|
if (this.type == 94)
|
|
{
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = -velocity1.X;
|
|
if ((double) this.velocity.Y != (double) velocity1.Y)
|
|
this.velocity.Y = -velocity1.Y;
|
|
}
|
|
else if (this.type == 99)
|
|
{
|
|
if ((double) this.velocity.Y != (double) velocity1.Y && (double) velocity1.Y > 5.0)
|
|
{
|
|
Collision.HitTiles(this.position, this.velocity, this.width, this.height);
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
this.velocity.Y = (float) (-(double) velocity1.Y * 0.200000002980232);
|
|
}
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.Kill();
|
|
}
|
|
else if (this.type == 36)
|
|
{
|
|
if (this.penetrate > 1)
|
|
{
|
|
Collision.HitTiles(this.position, this.velocity, this.width, this.height);
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
--this.penetrate;
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = -velocity1.X;
|
|
if ((double) this.velocity.Y != (double) velocity1.Y)
|
|
this.velocity.Y = -velocity1.Y;
|
|
}
|
|
else
|
|
this.Kill();
|
|
}
|
|
else if (this.aiStyle == 21)
|
|
{
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = -velocity1.X;
|
|
if ((double) this.velocity.Y != (double) velocity1.Y)
|
|
this.velocity.Y = -velocity1.Y;
|
|
}
|
|
else if (this.aiStyle == 17)
|
|
{
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = velocity1.X * -0.75f;
|
|
if ((double) this.velocity.Y != (double) velocity1.Y && (double) velocity1.Y > 1.5)
|
|
this.velocity.Y = velocity1.Y * -0.7f;
|
|
}
|
|
else if (this.aiStyle == 15)
|
|
{
|
|
bool flag4 = false;
|
|
if ((double) velocity1.X != (double) this.velocity.X)
|
|
{
|
|
if ((double) Math.Abs(velocity1.X) > 4.0)
|
|
flag4 = true;
|
|
this.position.X += this.velocity.X;
|
|
this.velocity.X = (float) (-(double) velocity1.X * 0.200000002980232);
|
|
}
|
|
if ((double) velocity1.Y != (double) this.velocity.Y)
|
|
{
|
|
if ((double) Math.Abs(velocity1.Y) > 4.0)
|
|
flag4 = true;
|
|
this.position.Y += this.velocity.Y;
|
|
this.velocity.Y = (float) (-(double) velocity1.Y * 0.200000002980232);
|
|
}
|
|
this.ai[0] = 1f;
|
|
if (flag4)
|
|
{
|
|
this.netUpdate = true;
|
|
Collision.HitTiles(this.position, this.velocity, this.width, this.height);
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
}
|
|
else if (this.aiStyle == 3 || this.aiStyle == 13)
|
|
{
|
|
Collision.HitTiles(this.position, this.velocity, this.width, this.height);
|
|
if (this.type == 33 || this.type == 106)
|
|
{
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = -velocity1.X;
|
|
if ((double) this.velocity.Y != (double) velocity1.Y)
|
|
this.velocity.Y = -velocity1.Y;
|
|
}
|
|
else
|
|
{
|
|
this.ai[0] = 1f;
|
|
if (this.aiStyle == 3)
|
|
{
|
|
this.velocity.X = -velocity1.X;
|
|
this.velocity.Y = -velocity1.Y;
|
|
}
|
|
}
|
|
this.netUpdate = true;
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else if (this.aiStyle == 8 && this.type != 96)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] >= 5.0)
|
|
{
|
|
this.position += this.velocity;
|
|
this.Kill();
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 15 && (double) this.velocity.Y > 4.0)
|
|
{
|
|
if ((double) this.velocity.Y != (double) velocity1.Y)
|
|
this.velocity.Y = (float) (-(double) velocity1.Y * 0.800000011920929);
|
|
}
|
|
else if ((double) this.velocity.Y != (double) velocity1.Y)
|
|
this.velocity.Y = -velocity1.Y;
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = -velocity1.X;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 14)
|
|
{
|
|
if (this.type == 50)
|
|
{
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = velocity1.X * -0.2f;
|
|
if ((double) this.velocity.Y != (double) velocity1.Y && (double) velocity1.Y > 1.5)
|
|
this.velocity.Y = velocity1.Y * -0.2f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
this.velocity.X = velocity1.X * -0.5f;
|
|
if ((double) this.velocity.Y != (double) velocity1.Y && (double) velocity1.Y > 1.0)
|
|
this.velocity.Y = velocity1.Y * -0.5f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 16)
|
|
{
|
|
if ((double) this.velocity.X != (double) velocity1.X)
|
|
{
|
|
this.velocity.X = velocity1.X * -0.4f;
|
|
if (this.type == 29)
|
|
this.velocity.X *= 0.8f;
|
|
}
|
|
if ((double) this.velocity.Y != (double) velocity1.Y && (double) velocity1.Y > 0.7 && this.type != 102)
|
|
{
|
|
this.velocity.Y = velocity1.Y * -0.4f;
|
|
if (this.type == 29)
|
|
this.velocity.Y *= 0.8f;
|
|
}
|
|
}
|
|
else if (this.aiStyle != 9 || this.owner == Main.myPlayer)
|
|
{
|
|
this.position += this.velocity;
|
|
this.Kill();
|
|
}
|
|
}
|
|
}
|
|
if (this.type != 7 && this.type != 8)
|
|
{
|
|
if (this.wet)
|
|
this.position += vector2;
|
|
else
|
|
this.position += this.velocity;
|
|
}
|
|
if ((this.aiStyle != 3 || (double) this.ai[0] != 1.0) && (this.aiStyle != 7 || (double) this.ai[0] != 1.0) && (this.aiStyle != 13 || (double) this.ai[0] != 1.0) && (this.aiStyle != 15 || (double) this.ai[0] != 1.0) && this.aiStyle != 15 && this.aiStyle != 26)
|
|
this.direction = (double) this.velocity.X >= 0.0 ? 1 : -1;
|
|
if (!this.active)
|
|
return;
|
|
if ((double) this.light > 0.0)
|
|
{
|
|
float R = this.light;
|
|
float G = this.light;
|
|
float B = this.light;
|
|
if (this.type == 2 || this.type == 82)
|
|
{
|
|
G *= 0.75f;
|
|
B *= 0.55f;
|
|
}
|
|
else if (this.type == 94)
|
|
{
|
|
R *= 0.5f;
|
|
G *= 0.0f;
|
|
}
|
|
else if (this.type == 95 || this.type == 96 || this.type == 103 || this.type == 104)
|
|
{
|
|
R *= 0.35f;
|
|
G *= 1f;
|
|
B *= 0.0f;
|
|
}
|
|
else if (this.type == 4)
|
|
{
|
|
G *= 0.1f;
|
|
R *= 0.5f;
|
|
}
|
|
else if (this.type == 9)
|
|
{
|
|
G *= 0.1f;
|
|
B *= 0.6f;
|
|
}
|
|
else if (this.type == 92)
|
|
{
|
|
G *= 0.6f;
|
|
R *= 0.8f;
|
|
}
|
|
else if (this.type == 93)
|
|
{
|
|
G *= 1f;
|
|
R *= 1f;
|
|
B *= 0.01f;
|
|
}
|
|
else if (this.type == 12)
|
|
{
|
|
R *= 0.9f;
|
|
G *= 0.8f;
|
|
B *= 0.1f;
|
|
}
|
|
else if (this.type == 14 || this.type == 110)
|
|
{
|
|
G *= 0.7f;
|
|
B *= 0.1f;
|
|
}
|
|
else if (this.type == 15)
|
|
{
|
|
G *= 0.4f;
|
|
B *= 0.1f;
|
|
R = 1f;
|
|
}
|
|
else if (this.type == 16)
|
|
{
|
|
R *= 0.1f;
|
|
G *= 0.4f;
|
|
B = 1f;
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
G *= 0.7f;
|
|
B *= 0.3f;
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
G *= 0.5f;
|
|
B *= 0.1f;
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
R *= 0.1f;
|
|
B *= 0.3f;
|
|
}
|
|
else if (this.type == 22)
|
|
{
|
|
R = 0.0f;
|
|
G = 0.0f;
|
|
}
|
|
else if (this.type == 27)
|
|
{
|
|
R *= 0.0f;
|
|
G *= 0.3f;
|
|
B = 1f;
|
|
}
|
|
else if (this.type == 34)
|
|
{
|
|
G *= 0.1f;
|
|
B *= 0.1f;
|
|
}
|
|
else if (this.type == 36)
|
|
{
|
|
R = 0.8f;
|
|
G *= 0.2f;
|
|
B *= 0.6f;
|
|
}
|
|
else if (this.type == 41)
|
|
{
|
|
G *= 0.8f;
|
|
B *= 0.6f;
|
|
}
|
|
else if (this.type == 44 || this.type == 45)
|
|
{
|
|
B = 1f;
|
|
R *= 0.6f;
|
|
G *= 0.1f;
|
|
}
|
|
else if (this.type == 50)
|
|
{
|
|
R *= 0.7f;
|
|
B *= 0.8f;
|
|
}
|
|
else if (this.type == 53)
|
|
{
|
|
R *= 0.7f;
|
|
G *= 0.8f;
|
|
}
|
|
else if (this.type == 72)
|
|
{
|
|
R *= 0.45f;
|
|
G *= 0.75f;
|
|
B = 1f;
|
|
}
|
|
else if (this.type == 86)
|
|
{
|
|
R *= 1f;
|
|
G *= 0.45f;
|
|
B = 0.75f;
|
|
}
|
|
else if (this.type == 87)
|
|
{
|
|
R *= 0.45f;
|
|
G = 1f;
|
|
B *= 0.75f;
|
|
}
|
|
else if (this.type == 73)
|
|
{
|
|
R *= 0.4f;
|
|
G *= 0.6f;
|
|
B *= 1f;
|
|
}
|
|
else if (this.type == 74)
|
|
{
|
|
R *= 1f;
|
|
G *= 0.4f;
|
|
B *= 0.6f;
|
|
}
|
|
else if (this.type == 76 || this.type == 77 || this.type == 78)
|
|
{
|
|
R *= 1f;
|
|
G *= 0.3f;
|
|
B *= 0.6f;
|
|
}
|
|
else if (this.type == 79)
|
|
{
|
|
R = (float) Main.DiscoR / (float) byte.MaxValue;
|
|
G = (float) Main.DiscoG / (float) byte.MaxValue;
|
|
B = (float) Main.DiscoB / (float) byte.MaxValue;
|
|
}
|
|
else if (this.type == 80)
|
|
{
|
|
R *= 0.0f;
|
|
G *= 0.8f;
|
|
B *= 1f;
|
|
}
|
|
else if (this.type == 83 || this.type == 88)
|
|
{
|
|
R *= 0.7f;
|
|
G *= 0.0f;
|
|
B *= 1f;
|
|
}
|
|
else if (this.type == 100)
|
|
{
|
|
R *= 1f;
|
|
G *= 0.5f;
|
|
B *= 0.0f;
|
|
}
|
|
else if (this.type == 84)
|
|
{
|
|
R *= 0.8f;
|
|
G *= 0.0f;
|
|
B *= 0.5f;
|
|
}
|
|
else if (this.type == 89 || this.type == 90)
|
|
{
|
|
G *= 0.2f;
|
|
B *= 1f;
|
|
R *= 0.05f;
|
|
}
|
|
else if (this.type == 106)
|
|
{
|
|
R *= 0.0f;
|
|
G *= 0.5f;
|
|
B *= 1f;
|
|
}
|
|
Lighting.addLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), R, G, B);
|
|
}
|
|
if (this.type == 2 || this.type == 82)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100);
|
|
else if (this.type == 103)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 75, Alpha: 100);
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].scale *= 2f;
|
|
}
|
|
}
|
|
else if (this.type == 4)
|
|
{
|
|
if (Main.rand.Next(5) == 0)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 14, Alpha: 150, Scale: 1.1f);
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
int Type;
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Type = 15;
|
|
break;
|
|
case 1:
|
|
Type = 57;
|
|
break;
|
|
default:
|
|
Type = 58;
|
|
break;
|
|
}
|
|
Dust.NewDust(this.position, this.width, this.height, Type, this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 150, Scale: 1.2f);
|
|
}
|
|
this.Damage();
|
|
if (Main.netMode != 1 && this.type == 99)
|
|
Collision.SwitchTiles(this.position, this.width, this.height, this.lastPosition);
|
|
if (this.type == 94)
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldPos[0] = this.position;
|
|
}
|
|
--this.timeLeft;
|
|
if (this.timeLeft <= 0)
|
|
this.Kill();
|
|
if (this.penetrate == 0)
|
|
this.Kill();
|
|
if (this.active && this.owner == Main.myPlayer)
|
|
{
|
|
if (this.netUpdate2)
|
|
this.netUpdate = true;
|
|
if (!this.active)
|
|
this.netSpam = 0;
|
|
if (this.netUpdate)
|
|
{
|
|
if (this.netSpam < 60)
|
|
{
|
|
this.netSpam += 5;
|
|
NetMessage.SendData(27, number: i);
|
|
this.netUpdate2 = false;
|
|
}
|
|
else
|
|
this.netUpdate2 = true;
|
|
}
|
|
if (this.netSpam > 0)
|
|
--this.netSpam;
|
|
}
|
|
if (this.active && this.maxUpdates > 0)
|
|
{
|
|
--this.numUpdates;
|
|
if (this.numUpdates >= 0)
|
|
this.Update(i);
|
|
else
|
|
this.numUpdates = this.maxUpdates;
|
|
}
|
|
this.netUpdate = false;
|
|
}
|
|
}
|
|
|
|
public void AI()
|
|
{
|
|
if (this.aiStyle == 1)
|
|
{
|
|
if (this.type == 83 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 33);
|
|
}
|
|
if (this.type == 110 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 11);
|
|
}
|
|
if (this.type == 84 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 12);
|
|
}
|
|
if (this.type == 100 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 33);
|
|
}
|
|
if (this.type == 98 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 17);
|
|
}
|
|
if ((this.type == 81 || this.type == 82) && (double) this.ai[1] == 0.0)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 5);
|
|
this.ai[1] = 1f;
|
|
}
|
|
if (this.type == 41)
|
|
{
|
|
int index1 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.6f);
|
|
Main.dust[index1].noGravity = true;
|
|
int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2f);
|
|
Main.dust[index2].noGravity = true;
|
|
}
|
|
else if (this.type == 55)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 18, Scale: 0.9f);
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
else if (this.type == 91 && Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, Main.rand.Next(2) != 0 ? 58 : 15, this.velocity.X * 0.25f, this.velocity.Y * 0.25f, 150, Scale: 0.9f);
|
|
Main.dust[index].velocity *= 0.25f;
|
|
}
|
|
if (this.type == 20 || this.type == 14 || this.type == 36 || this.type == 83 || this.type == 84 || this.type == 89 || this.type == 100 || this.type == 104 || this.type == 110)
|
|
{
|
|
if (this.alpha > 0)
|
|
this.alpha -= 15;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
if (this.type == 88)
|
|
{
|
|
if (this.alpha > 0)
|
|
this.alpha -= 10;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
if (this.type != 5 && this.type != 14 && this.type != 20 && this.type != 36 && this.type != 38 && this.type != 55 && this.type != 83 && this.type != 84 && this.type != 88 && this.type != 89 && this.type != 98 && this.type != 100 && this.type != 104 && this.type != 110)
|
|
++this.ai[0];
|
|
if (this.type == 81 || this.type == 91)
|
|
{
|
|
if ((double) this.ai[0] >= 20.0)
|
|
{
|
|
this.ai[0] = 20f;
|
|
this.velocity.Y += 0.07f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] >= 15.0)
|
|
{
|
|
this.ai[0] = 15f;
|
|
this.velocity.Y += 0.1f;
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
if ((double) this.velocity.Y <= 16.0)
|
|
return;
|
|
this.velocity.Y = 16f;
|
|
}
|
|
else if (this.aiStyle == 2)
|
|
{
|
|
if (this.type == 93 && Main.rand.Next(5) == 0)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 57, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, 100, Scale: 0.3f);
|
|
Main.dust[index].velocity.X *= 0.3f;
|
|
Main.dust[index].velocity.Y *= 0.3f;
|
|
}
|
|
this.rotation += (float) (((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y)) * 0.0299999993294477) * (float) this.direction;
|
|
if (this.type == 69 || this.type == 70)
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] >= 10.0)
|
|
{
|
|
this.velocity.Y += 0.25f;
|
|
this.velocity.X *= 0.99f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] >= 20.0)
|
|
{
|
|
this.velocity.Y += 0.4f;
|
|
this.velocity.X *= 0.97f;
|
|
}
|
|
else if (this.type == 48 || this.type == 54 || this.type == 93)
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
}
|
|
if ((double) this.velocity.Y > 16.0)
|
|
this.velocity.Y = 16f;
|
|
if (this.type != 54 || Main.rand.Next(20) != 0)
|
|
return;
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 40, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, Scale: 0.75f);
|
|
}
|
|
else if (this.aiStyle == 3)
|
|
{
|
|
if (this.soundDelay == 0)
|
|
{
|
|
this.soundDelay = 8;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 7);
|
|
}
|
|
if (this.type == 19)
|
|
{
|
|
for (int index3 = 0; index3 < 2; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index4].noGravity = true;
|
|
Main.dust[index4].velocity.X *= 0.3f;
|
|
Main.dust[index4].velocity.Y *= 0.3f;
|
|
}
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
if (Main.rand.Next(1) == 0)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 40, this.velocity.X * 0.25f, this.velocity.Y * 0.25f, Scale: 1.4f);
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
}
|
|
else if (this.type == 6 && Main.rand.Next(5) == 0)
|
|
{
|
|
int Type;
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Type = 15;
|
|
break;
|
|
case 1:
|
|
Type = 57;
|
|
break;
|
|
default:
|
|
Type = 58;
|
|
break;
|
|
}
|
|
Dust.NewDust(this.position, this.width, this.height, Type, this.velocity.X * 0.25f, this.velocity.Y * 0.25f, 150, Scale: 0.7f);
|
|
}
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
++this.ai[1];
|
|
if (this.type == 106)
|
|
{
|
|
if ((double) this.ai[1] >= 45.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] >= 30.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.tileCollide = false;
|
|
float num1 = 9f;
|
|
float num2 = 0.4f;
|
|
if (this.type == 19)
|
|
{
|
|
num1 = 13f;
|
|
num2 = 0.6f;
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
num1 = 15f;
|
|
num2 = 0.8f;
|
|
}
|
|
else if (this.type == 106)
|
|
{
|
|
num1 = 16f;
|
|
num2 = 1.2f;
|
|
}
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num3 = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - vector2.X;
|
|
float num4 = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - vector2.Y;
|
|
float num5 = (float) Math.Sqrt((double) num3 * (double) num3 + (double) num4 * (double) num4);
|
|
if ((double) num5 > 3000.0)
|
|
this.Kill();
|
|
float num6 = num1 / num5;
|
|
float num7 = num3 * num6;
|
|
float num8 = num4 * num6;
|
|
if ((double) this.velocity.X < (double) num7)
|
|
{
|
|
this.velocity.X += num2;
|
|
if ((double) this.velocity.X < 0.0 && (double) num7 > 0.0)
|
|
this.velocity.X += num2;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num7)
|
|
{
|
|
this.velocity.X -= num2;
|
|
if ((double) this.velocity.X > 0.0 && (double) num7 < 0.0)
|
|
this.velocity.X -= num2;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num8)
|
|
{
|
|
this.velocity.Y += num2;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num8 > 0.0)
|
|
this.velocity.Y += num2;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num8)
|
|
{
|
|
this.velocity.Y -= num2;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num8 < 0.0)
|
|
this.velocity.Y -= num2;
|
|
}
|
|
if (Main.myPlayer == this.owner && new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height).Intersects(new Rectangle((int) Main.player[this.owner].position.X, (int) Main.player[this.owner].position.Y, Main.player[this.owner].width, Main.player[this.owner].height)))
|
|
this.Kill();
|
|
}
|
|
if (this.type == 106)
|
|
this.rotation += 0.3f * (float) this.direction;
|
|
else
|
|
this.rotation += 0.4f * (float) this.direction;
|
|
}
|
|
else if (this.aiStyle == 4)
|
|
{
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.alpha -= 50;
|
|
if (this.alpha > 0)
|
|
return;
|
|
this.alpha = 0;
|
|
this.ai[0] = 1f;
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
++this.ai[1];
|
|
this.position += this.velocity * 1f;
|
|
}
|
|
if (this.type != 7 || Main.myPlayer != this.owner)
|
|
return;
|
|
int type = this.type;
|
|
if ((double) this.ai[1] >= 6.0)
|
|
++type;
|
|
int number = Projectile.NewProjectile(this.position.X + this.velocity.X + (float) (this.width / 2), this.position.Y + this.velocity.Y + (float) (this.height / 2), this.velocity.X, this.velocity.Y, type, this.damage, this.knockBack, this.owner);
|
|
Main.projectile[number].damage = this.damage;
|
|
Main.projectile[number].ai[1] = this.ai[1] + 1f;
|
|
NetMessage.SendData(27, number: number);
|
|
}
|
|
else
|
|
{
|
|
if (this.alpha < 170 && this.alpha + 5 >= 170)
|
|
{
|
|
for (int index = 0; index < 3; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, this.velocity.X * 0.025f, this.velocity.Y * 0.025f, 170, Scale: 1.2f);
|
|
Dust.NewDust(this.position, this.width, this.height, 14, Alpha: 170, Scale: 1.1f);
|
|
}
|
|
this.alpha += 5;
|
|
if (this.alpha < (int) byte.MaxValue)
|
|
return;
|
|
this.Kill();
|
|
}
|
|
}
|
|
else if (this.aiStyle == 5)
|
|
{
|
|
if (this.type == 92)
|
|
{
|
|
if ((double) this.position.Y > (double) this.ai[1])
|
|
this.tileCollide = true;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[1] == 0.0 && !Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[1] != 0.0)
|
|
this.tileCollide = true;
|
|
}
|
|
if (this.soundDelay == 0)
|
|
{
|
|
this.soundDelay = 20 + Main.rand.Next(40);
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 9);
|
|
}
|
|
if ((double) this.localAI[0] == 0.0)
|
|
this.localAI[0] = 1f;
|
|
this.alpha += (int) (25.0 * (double) this.localAI[0]);
|
|
if (this.alpha > 200)
|
|
{
|
|
this.alpha = 200;
|
|
this.localAI[0] = -1f;
|
|
}
|
|
if (this.alpha < 0)
|
|
{
|
|
this.alpha = 0;
|
|
this.localAI[0] = 1f;
|
|
}
|
|
this.rotation += (float) (((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y)) * 0.00999999977648258) * (float) this.direction;
|
|
if ((double) this.ai[1] != 1.0 && this.type != 92)
|
|
return;
|
|
this.light = 0.9f;
|
|
if (Main.rand.Next(10) == 0)
|
|
Dust.NewDust(this.position, this.width, this.height, 58, this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 150, Scale: 1.2f);
|
|
if (Main.rand.Next(20) != 0)
|
|
return;
|
|
Gore.NewGore(this.position, new Vector2(this.velocity.X * 0.2f, this.velocity.Y * 0.2f), Main.rand.Next(16, 18));
|
|
}
|
|
else if (this.aiStyle == 6)
|
|
{
|
|
this.velocity *= 0.95f;
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] == 180.0)
|
|
this.Kill();
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
for (int index = 0; index < 30; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 10 + this.type, this.velocity.X, this.velocity.Y, 50);
|
|
}
|
|
if (this.type != 10 && this.type != 11)
|
|
return;
|
|
int num9 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num10 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num11 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num12 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num9 < 0)
|
|
num9 = 0;
|
|
if (num10 > Main.maxTilesX)
|
|
num10 = Main.maxTilesX;
|
|
if (num11 < 0)
|
|
num11 = 0;
|
|
if (num12 > Main.maxTilesY)
|
|
num12 = Main.maxTilesY;
|
|
for (int index5 = num9; index5 < num10; ++index5)
|
|
{
|
|
for (int index6 = num11; index6 < num12; ++index6)
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (index5 * 16);
|
|
vector2.Y = (float) (index6 * 16);
|
|
if ((double) this.position.X + (double) this.width > (double) vector2.X && (double) this.position.X < (double) vector2.X + 16.0 && (double) this.position.Y + (double) this.height > (double) vector2.Y && (double) this.position.Y < (double) vector2.Y + 16.0 && Main.myPlayer == this.owner && Main.tile[index5, index6].active)
|
|
{
|
|
if (this.type == 10)
|
|
{
|
|
if (Main.tile[index5, index6].type == (byte) 23)
|
|
{
|
|
Main.tile[index5, index6].type = (byte) 2;
|
|
WorldGen.SquareTileFrame(index5, index6);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendTileSquare(-1, index5, index6, 1);
|
|
}
|
|
if (Main.tile[index5, index6].type == (byte) 25)
|
|
{
|
|
Main.tile[index5, index6].type = (byte) 1;
|
|
WorldGen.SquareTileFrame(index5, index6);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendTileSquare(-1, index5, index6, 1);
|
|
}
|
|
if (Main.tile[index5, index6].type == (byte) 112)
|
|
{
|
|
Main.tile[index5, index6].type = (byte) 53;
|
|
WorldGen.SquareTileFrame(index5, index6);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendTileSquare(-1, index5, index6, 1);
|
|
}
|
|
}
|
|
else if (this.type == 11)
|
|
{
|
|
if (Main.tile[index5, index6].type == (byte) 109)
|
|
{
|
|
Main.tile[index5, index6].type = (byte) 2;
|
|
WorldGen.SquareTileFrame(index5, index6);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendTileSquare(-1, index5, index6, 1);
|
|
}
|
|
if (Main.tile[index5, index6].type == (byte) 116)
|
|
{
|
|
Main.tile[index5, index6].type = (byte) 53;
|
|
WorldGen.SquareTileFrame(index5, index6);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendTileSquare(-1, index5, index6, 1);
|
|
}
|
|
if (Main.tile[index5, index6].type == (byte) 117)
|
|
{
|
|
Main.tile[index5, index6].type = (byte) 1;
|
|
WorldGen.SquareTileFrame(index5, index6);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendTileSquare(-1, index5, index6, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 7)
|
|
{
|
|
if (Main.player[this.owner].dead)
|
|
{
|
|
this.Kill();
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num13 = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - vector2_1.X;
|
|
float num14 = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - vector2_1.Y;
|
|
float num15 = (float) Math.Sqrt((double) num13 * (double) num13 + (double) num14 * (double) num14);
|
|
this.rotation = (float) Math.Atan2((double) num14, (double) num13) - 1.57f;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) num15 > 300.0 && this.type == 13 || (double) num15 > 400.0 && this.type == 32 || (double) num15 > 440.0 && this.type == 73 || (double) num15 > 440.0 && this.type == 74)
|
|
this.ai[0] = 1f;
|
|
int num16 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num17 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num18 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num19 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num16 < 0)
|
|
num16 = 0;
|
|
if (num17 > Main.maxTilesX)
|
|
num17 = Main.maxTilesX;
|
|
if (num18 < 0)
|
|
num18 = 0;
|
|
if (num19 > Main.maxTilesY)
|
|
num19 = Main.maxTilesY;
|
|
for (int i = num16; i < num17; ++i)
|
|
{
|
|
for (int j = num18; j < num19; ++j)
|
|
{
|
|
if (Main.tile[i, j] == null)
|
|
Main.tile[i, j] = new Tile();
|
|
Vector2 vector2_2;
|
|
vector2_2.X = (float) (i * 16);
|
|
vector2_2.Y = (float) (j * 16);
|
|
if ((double) this.position.X + (double) this.width > (double) vector2_2.X && (double) this.position.X < (double) vector2_2.X + 16.0 && (double) this.position.Y + (double) this.height > (double) vector2_2.Y && (double) this.position.Y < (double) vector2_2.Y + 16.0 && Main.tile[i, j].active && Main.tileSolid[(int) Main.tile[i, j].type])
|
|
{
|
|
if (Main.player[this.owner].grapCount < 10)
|
|
{
|
|
Main.player[this.owner].grappling[Main.player[this.owner].grapCount] = this.whoAmI;
|
|
++Main.player[this.owner].grapCount;
|
|
}
|
|
if (Main.myPlayer == this.owner)
|
|
{
|
|
int num20 = 0;
|
|
int index7 = -1;
|
|
int num21 = 100000;
|
|
if (this.type == 73 || this.type == 74)
|
|
{
|
|
for (int index8 = 0; index8 < 1000; ++index8)
|
|
{
|
|
if (index8 != this.whoAmI && Main.projectile[index8].active && Main.projectile[index8].owner == this.owner && Main.projectile[index8].aiStyle == 7 && (double) Main.projectile[index8].ai[0] == 2.0)
|
|
Main.projectile[index8].Kill();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index9 = 0; index9 < 1000; ++index9)
|
|
{
|
|
if (Main.projectile[index9].active && Main.projectile[index9].owner == this.owner && Main.projectile[index9].aiStyle == 7)
|
|
{
|
|
if (Main.projectile[index9].timeLeft < num21)
|
|
{
|
|
index7 = index9;
|
|
num21 = Main.projectile[index9].timeLeft;
|
|
}
|
|
++num20;
|
|
}
|
|
}
|
|
if (num20 > 3)
|
|
Main.projectile[index7].Kill();
|
|
}
|
|
}
|
|
WorldGen.KillTile(i, j, true, true);
|
|
Main.PlaySound(0, i * 16, j * 16);
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
this.ai[0] = 2f;
|
|
this.position.X = (float) (i * 16 + 8 - this.width / 2);
|
|
this.position.Y = (float) (j * 16 + 8 - this.height / 2);
|
|
this.damage = 0;
|
|
this.netUpdate = true;
|
|
if (Main.myPlayer == this.owner)
|
|
{
|
|
NetMessage.SendData(13, number: this.owner);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] == 2.0)
|
|
break;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
float num22 = 11f;
|
|
if (this.type == 32)
|
|
num22 = 15f;
|
|
if (this.type == 73 || this.type == 74)
|
|
num22 = 17f;
|
|
if ((double) num15 < 24.0)
|
|
this.Kill();
|
|
float num23 = num22 / num15;
|
|
float num24 = num13 * num23;
|
|
float num25 = num14 * num23;
|
|
this.velocity.X = num24;
|
|
this.velocity.Y = num25;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] != 2.0)
|
|
return;
|
|
int num26 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num27 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num28 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num29 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num26 < 0)
|
|
num26 = 0;
|
|
if (num27 > Main.maxTilesX)
|
|
num27 = Main.maxTilesX;
|
|
if (num28 < 0)
|
|
num28 = 0;
|
|
if (num29 > Main.maxTilesY)
|
|
num29 = Main.maxTilesY;
|
|
bool flag = true;
|
|
for (int index10 = num26; index10 < num27; ++index10)
|
|
{
|
|
for (int index11 = num28; index11 < num29; ++index11)
|
|
{
|
|
if (Main.tile[index10, index11] == null)
|
|
Main.tile[index10, index11] = new Tile();
|
|
Vector2 vector2_3;
|
|
vector2_3.X = (float) (index10 * 16);
|
|
vector2_3.Y = (float) (index11 * 16);
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) vector2_3.X && (double) this.position.X + (double) (this.width / 2) < (double) vector2_3.X + 16.0 && (double) this.position.Y + (double) (this.height / 2) > (double) vector2_3.Y && (double) this.position.Y + (double) (this.height / 2) < (double) vector2_3.Y + 16.0 && Main.tile[index10, index11].active && Main.tileSolid[(int) Main.tile[index10, index11].type])
|
|
flag = false;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.ai[0] = 1f;
|
|
}
|
|
else
|
|
{
|
|
if (Main.player[this.owner].grapCount >= 10)
|
|
return;
|
|
Main.player[this.owner].grappling[Main.player[this.owner].grapCount] = this.whoAmI;
|
|
++Main.player[this.owner].grapCount;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 8)
|
|
{
|
|
if (this.type == 96 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 20);
|
|
}
|
|
if (this.type == 27)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X + this.velocity.X, this.position.Y + this.velocity.Y), this.width, this.height, 29, this.velocity.X, this.velocity.Y, 100, Scale: 3f);
|
|
Main.dust[index].noGravity = true;
|
|
if (Main.rand.Next(10) == 0)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, this.velocity.X, this.velocity.Y, 100, Scale: 1.4f);
|
|
}
|
|
else if (this.type == 95 || this.type == 96)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X + this.velocity.X, this.position.Y + this.velocity.Y), this.width, this.height, 75, this.velocity.X, this.velocity.Y, 100, Scale: (3f * this.scale));
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
else
|
|
{
|
|
for (int index12 = 0; index12 < 2; ++index12)
|
|
{
|
|
int index13 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index13].noGravity = true;
|
|
Main.dust[index13].velocity.X *= 0.3f;
|
|
Main.dust[index13].velocity.Y *= 0.3f;
|
|
}
|
|
}
|
|
if (this.type != 27 && this.type != 96)
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 20.0)
|
|
this.velocity.Y += 0.2f;
|
|
this.rotation += 0.3f * (float) this.direction;
|
|
if ((double) this.velocity.Y <= 16.0)
|
|
return;
|
|
this.velocity.Y = 16f;
|
|
}
|
|
else if (this.aiStyle == 9)
|
|
{
|
|
if (this.type == 34)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 3.5f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 1.4f;
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 1.5f);
|
|
}
|
|
else if (this.type == 79)
|
|
{
|
|
if (this.soundDelay == 0 && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > 2.0)
|
|
{
|
|
this.soundDelay = 10;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 9);
|
|
}
|
|
for (int index14 = 0; index14 < 1; ++index14)
|
|
{
|
|
int index15 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 66, Alpha: 100, newColor: new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB), Scale: 2.5f);
|
|
Main.dust[index15].velocity *= 0.1f;
|
|
Main.dust[index15].velocity += this.velocity * 0.2f;
|
|
Main.dust[index15].position.X = (float) ((double) this.position.X + (double) (this.width / 2) + 4.0) + (float) Main.rand.Next(-2, 3);
|
|
Main.dust[index15].position.Y = this.position.Y + (float) (this.height / 2) + (float) Main.rand.Next(-2, 3);
|
|
Main.dust[index15].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.soundDelay == 0 && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > 2.0)
|
|
{
|
|
this.soundDelay = 10;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 9);
|
|
}
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 15, Alpha: 100, Scale: 2f);
|
|
Main.dust[index].velocity *= 0.3f;
|
|
Main.dust[index].position.X = (float) ((double) this.position.X + (double) (this.width / 2) + 4.0) + (float) Main.rand.Next(-4, 5);
|
|
Main.dust[index].position.Y = this.position.Y + (float) (this.height / 2) + (float) Main.rand.Next(-4, 5);
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
if (Main.myPlayer == this.owner && (double) this.ai[0] == 0.0)
|
|
{
|
|
if (Main.player[this.owner].channel)
|
|
{
|
|
float num30 = 12f;
|
|
if (this.type == 16)
|
|
num30 = 15f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num31 = (float) Main.mouseX + Main.screenPosition.X - vector2.X;
|
|
float num32 = (float) Main.mouseY + Main.screenPosition.Y - vector2.Y;
|
|
float num33 = (float) Math.Sqrt((double) num31 * (double) num31 + (double) num32 * (double) num32);
|
|
float num34 = (float) Math.Sqrt((double) num31 * (double) num31 + (double) num32 * (double) num32);
|
|
if ((double) num34 > (double) num30)
|
|
{
|
|
float num35 = num30 / num34;
|
|
float num36 = num31 * num35;
|
|
float num37 = num32 * num35;
|
|
int num38 = (int) ((double) num36 * 1000.0);
|
|
int num39 = (int) ((double) this.velocity.X * 1000.0);
|
|
int num40 = (int) ((double) num37 * 1000.0);
|
|
int num41 = (int) ((double) this.velocity.Y * 1000.0);
|
|
if (num38 != num39 || num40 != num41)
|
|
this.netUpdate = true;
|
|
this.velocity.X = num36;
|
|
this.velocity.Y = num37;
|
|
}
|
|
else
|
|
{
|
|
int num42 = (int) ((double) num31 * 1000.0);
|
|
int num43 = (int) ((double) this.velocity.X * 1000.0);
|
|
int num44 = (int) ((double) num32 * 1000.0);
|
|
int num45 = (int) ((double) this.velocity.Y * 1000.0);
|
|
if (num42 != num43 || num44 != num45)
|
|
this.netUpdate = true;
|
|
this.velocity.X = num31;
|
|
this.velocity.Y = num32;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
float num46 = 12f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num47 = (float) Main.mouseX + Main.screenPosition.X - vector2.X;
|
|
float num48 = (float) Main.mouseY + Main.screenPosition.Y - vector2.Y;
|
|
float num49 = (float) Math.Sqrt((double) num47 * (double) num47 + (double) num48 * (double) num48);
|
|
if ((double) num49 == 0.0)
|
|
{
|
|
vector2 = new Vector2(Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2), Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2));
|
|
num47 = this.position.X + (float) this.width * 0.5f - vector2.X;
|
|
num48 = this.position.Y + (float) this.height * 0.5f - vector2.Y;
|
|
num49 = (float) Math.Sqrt((double) num47 * (double) num47 + (double) num48 * (double) num48);
|
|
}
|
|
float num50 = num46 / num49;
|
|
float num51 = num47 * num50;
|
|
float num52 = num48 * num50;
|
|
this.velocity.X = num51;
|
|
this.velocity.Y = num52;
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
this.Kill();
|
|
}
|
|
}
|
|
if (this.type == 34)
|
|
this.rotation += 0.3f * (float) this.direction;
|
|
else if ((double) this.velocity.X != 0.0 || (double) this.velocity.Y != 0.0)
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 2.355f;
|
|
if ((double) this.velocity.Y <= 16.0)
|
|
return;
|
|
this.velocity.Y = 16f;
|
|
}
|
|
else if (this.aiStyle == 10)
|
|
{
|
|
if (this.type == 31 && (double) this.ai[0] != 2.0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 32, SpeedY: (this.velocity.Y / 2f));
|
|
Main.dust[index].velocity.X *= 0.4f;
|
|
}
|
|
}
|
|
else if (this.type == 39)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 38, SpeedY: (this.velocity.Y / 2f));
|
|
Main.dust[index].velocity.X *= 0.4f;
|
|
}
|
|
}
|
|
else if (this.type == 40)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 36, SpeedY: (this.velocity.Y / 2f));
|
|
Main.dust[index].velocity *= 0.4f;
|
|
}
|
|
}
|
|
else if (this.type == 42 || this.type == 31)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 32);
|
|
Main.dust[index].velocity.X *= 0.4f;
|
|
}
|
|
}
|
|
else if (this.type == 56 || this.type == 65)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 14);
|
|
Main.dust[index].velocity.X *= 0.4f;
|
|
}
|
|
}
|
|
else if (this.type == 67 || this.type == 68)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 51);
|
|
Main.dust[index].velocity.X *= 0.4f;
|
|
}
|
|
}
|
|
else if (this.type == 71)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 53);
|
|
Main.dust[index].velocity.X *= 0.4f;
|
|
}
|
|
}
|
|
else if (this.type != 109 && Main.rand.Next(20) == 0)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 0);
|
|
if (Main.myPlayer == this.owner && (double) this.ai[0] == 0.0)
|
|
{
|
|
if (Main.player[this.owner].channel)
|
|
{
|
|
float num53 = 12f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num54 = (float) Main.mouseX + Main.screenPosition.X - vector2.X;
|
|
float num55 = (float) Main.mouseY + Main.screenPosition.Y - vector2.Y;
|
|
float num56 = (float) Math.Sqrt((double) num54 * (double) num54 + (double) num55 * (double) num55);
|
|
float num57 = (float) Math.Sqrt((double) num54 * (double) num54 + (double) num55 * (double) num55);
|
|
if ((double) num57 > (double) num53)
|
|
{
|
|
float num58 = num53 / num57;
|
|
float num59 = num54 * num58;
|
|
float num60 = num55 * num58;
|
|
if ((double) num59 != (double) this.velocity.X || (double) num60 != (double) this.velocity.Y)
|
|
this.netUpdate = true;
|
|
this.velocity.X = num59;
|
|
this.velocity.Y = num60;
|
|
}
|
|
else
|
|
{
|
|
if ((double) num54 != (double) this.velocity.X || (double) num55 != (double) this.velocity.Y)
|
|
this.netUpdate = true;
|
|
this.velocity.X = num54;
|
|
this.velocity.Y = num55;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] == 1.0 && this.type != 109)
|
|
{
|
|
if (this.type == 42 || this.type == 65 || this.type == 68)
|
|
{
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 60.0)
|
|
{
|
|
this.ai[1] = 60f;
|
|
this.velocity.Y += 0.2f;
|
|
}
|
|
}
|
|
else
|
|
this.velocity.Y += 0.41f;
|
|
}
|
|
else if ((double) this.ai[0] == 2.0 && this.type != 109)
|
|
{
|
|
this.velocity.Y += 0.2f;
|
|
if ((double) this.velocity.X < -0.04)
|
|
this.velocity.X += 0.04f;
|
|
else if ((double) this.velocity.X > 0.04)
|
|
this.velocity.X -= 0.04f;
|
|
else
|
|
this.velocity.X = 0.0f;
|
|
}
|
|
this.rotation += 0.1f;
|
|
if ((double) this.velocity.Y <= 10.0)
|
|
return;
|
|
this.velocity.Y = 10f;
|
|
}
|
|
else if (this.aiStyle == 11)
|
|
{
|
|
if (this.type == 72 || this.type == 86 || this.type == 87)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.spriteDirection = -1;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.spriteDirection = 1;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4)
|
|
{
|
|
++this.frame;
|
|
this.frameCounter = 0;
|
|
}
|
|
if (this.frame >= 4)
|
|
this.frame = 0;
|
|
if (Main.rand.Next(6) == 0)
|
|
{
|
|
int Type = 56;
|
|
if (this.type == 86)
|
|
Type = 73;
|
|
else if (this.type == 87)
|
|
Type = 74;
|
|
int index = Dust.NewDust(this.position, this.width, this.height, Type, Alpha: 200, Scale: 0.8f);
|
|
Main.dust[index].velocity *= 0.3f;
|
|
}
|
|
}
|
|
else
|
|
this.rotation += 0.02f;
|
|
if (Main.myPlayer == this.owner)
|
|
{
|
|
if (this.type == 72 || this.type == 86 || this.type == 87)
|
|
{
|
|
if (Main.player[Main.myPlayer].fairy)
|
|
this.timeLeft = 2;
|
|
}
|
|
else if (Main.player[Main.myPlayer].lightOrb)
|
|
this.timeLeft = 2;
|
|
}
|
|
if (!Main.player[this.owner].dead)
|
|
{
|
|
float num61 = 2.5f;
|
|
if (this.type == 72 || this.type == 86 || this.type == 87)
|
|
num61 = 3.5f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num62 = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - vector2.X;
|
|
float num63 = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - vector2.Y;
|
|
float num64 = (float) Math.Sqrt((double) num62 * (double) num62 + (double) num63 * (double) num63);
|
|
float num65 = (float) Math.Sqrt((double) num62 * (double) num62 + (double) num63 * (double) num63);
|
|
int num66 = 70;
|
|
if (this.type == 72 || this.type == 86 || this.type == 87)
|
|
num66 = 40;
|
|
if ((double) num65 > 800.0)
|
|
{
|
|
this.position.X = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - (float) (this.width / 2);
|
|
this.position.Y = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - (float) (this.height / 2);
|
|
}
|
|
else if ((double) num65 > (double) num66)
|
|
{
|
|
float num67 = num61 / num65;
|
|
float num68 = num62 * num67;
|
|
float num69 = num63 * num67;
|
|
this.velocity.X = num68;
|
|
this.velocity.Y = num69;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
}
|
|
else
|
|
this.Kill();
|
|
}
|
|
else if (this.aiStyle == 12)
|
|
{
|
|
this.scale -= 0.04f;
|
|
if ((double) this.scale <= 0.0)
|
|
this.Kill();
|
|
if ((double) this.ai[0] > 4.0)
|
|
{
|
|
this.alpha = 150;
|
|
this.light = 0.8f;
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, this.velocity.X, this.velocity.Y, 100, Scale: 2.5f);
|
|
Main.dust[index].noGravity = true;
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, this.velocity.X, this.velocity.Y, 100, Scale: 1.5f);
|
|
}
|
|
else
|
|
++this.ai[0];
|
|
this.rotation += 0.3f * (float) this.direction;
|
|
}
|
|
else if (this.aiStyle == 13)
|
|
{
|
|
if (Main.player[this.owner].dead)
|
|
{
|
|
this.Kill();
|
|
}
|
|
else
|
|
{
|
|
Main.player[this.owner].itemAnimation = 5;
|
|
Main.player[this.owner].itemTime = 5;
|
|
Main.player[this.owner].direction = (double) this.position.X + (double) (this.width / 2) <= (double) Main.player[this.owner].position.X + (double) (Main.player[this.owner].width / 2) ? -1 : 1;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num70 = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - vector2.X;
|
|
float num71 = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - vector2.Y;
|
|
float num72 = (float) Math.Sqrt((double) num70 * (double) num70 + (double) num71 * (double) num71);
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) num72 > 700.0)
|
|
this.ai[0] = 1f;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] > 2.0)
|
|
this.alpha = 0;
|
|
if ((double) this.ai[1] < 10.0)
|
|
return;
|
|
this.ai[1] = 15f;
|
|
this.velocity.Y += 0.3f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] != 1.0)
|
|
return;
|
|
this.tileCollide = false;
|
|
this.rotation = (float) Math.Atan2((double) num71, (double) num70) - 1.57f;
|
|
float num73 = 20f;
|
|
if ((double) num72 < 50.0)
|
|
this.Kill();
|
|
float num74 = num73 / num72;
|
|
float num75 = num70 * num74;
|
|
float num76 = num71 * num74;
|
|
this.velocity.X = num75;
|
|
this.velocity.Y = num76;
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 14)
|
|
{
|
|
if (this.type == 53)
|
|
{
|
|
try
|
|
{
|
|
int num77 = this.velocity != Collision.TileCollision(this.position, this.velocity, this.width, this.height) ? 1 : 0;
|
|
int num78 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num79 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num80 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num81 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num78 < 0)
|
|
num78 = 0;
|
|
if (num79 > Main.maxTilesX)
|
|
num79 = Main.maxTilesX;
|
|
if (num80 < 0)
|
|
num80 = 0;
|
|
if (num81 > Main.maxTilesY)
|
|
num81 = Main.maxTilesY;
|
|
for (int index16 = num78; index16 < num79; ++index16)
|
|
{
|
|
for (int index17 = num80; index17 < num81; ++index17)
|
|
{
|
|
if (Main.tile[index16, index17] != null && Main.tile[index16, index17].active && (Main.tileSolid[(int) Main.tile[index16, index17].type] || Main.tileSolidTop[(int) Main.tile[index16, index17].type] && Main.tile[index16, index17].frameY == (short) 0))
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (index16 * 16);
|
|
vector2.Y = (float) (index17 * 16);
|
|
if ((double) this.position.X + (double) this.width > (double) vector2.X && (double) this.position.X < (double) vector2.X + 16.0 && (double) this.position.Y + (double) this.height > (double) vector2.Y && (double) this.position.Y < (double) vector2.Y + 16.0)
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = -0.2f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] > 5.0)
|
|
{
|
|
this.ai[0] = 5f;
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X != 0.0)
|
|
{
|
|
this.velocity.X *= 0.97f;
|
|
if ((double) this.velocity.X > -0.01 && (double) this.velocity.X < 0.01)
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
this.velocity.Y += 0.2f;
|
|
}
|
|
this.rotation += this.velocity.X * 0.1f;
|
|
if ((double) this.velocity.Y <= 16.0)
|
|
return;
|
|
this.velocity.Y = 16f;
|
|
}
|
|
else if (this.aiStyle == 15)
|
|
{
|
|
if (this.type == 25)
|
|
{
|
|
if (Main.rand.Next(15) == 0)
|
|
Dust.NewDust(this.position, this.width, this.height, 14, Alpha: 150, Scale: 1.3f);
|
|
}
|
|
else if (this.type == 26)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 29, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 2.5f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity.X /= 2f;
|
|
Main.dust[index].velocity.Y /= 2f;
|
|
}
|
|
else if (this.type == 35)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 6, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 3f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity.X *= 2f;
|
|
Main.dust[index].velocity.Y *= 2f;
|
|
}
|
|
if (Main.player[this.owner].dead)
|
|
{
|
|
this.Kill();
|
|
}
|
|
else
|
|
{
|
|
Main.player[this.owner].itemAnimation = 10;
|
|
Main.player[this.owner].itemTime = 10;
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.player[this.owner].position.X + (double) (Main.player[this.owner].width / 2))
|
|
{
|
|
Main.player[this.owner].direction = 1;
|
|
this.direction = 1;
|
|
}
|
|
else
|
|
{
|
|
Main.player[this.owner].direction = -1;
|
|
this.direction = -1;
|
|
}
|
|
Vector2 vector2_4 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num82 = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - vector2_4.X;
|
|
float num83 = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - vector2_4.Y;
|
|
float num84 = (float) Math.Sqrt((double) num82 * (double) num82 + (double) num83 * (double) num83);
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
float num85 = 160f;
|
|
if (this.type == 63)
|
|
num85 *= 1.5f;
|
|
this.tileCollide = true;
|
|
if ((double) num84 > (double) num85)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (!Main.player[this.owner].channel)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
++this.velocity.Y;
|
|
this.velocity.X *= 0.9f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
float num86 = 14f / Main.player[this.owner].meleeSpeed;
|
|
float num87 = 0.9f / Main.player[this.owner].meleeSpeed;
|
|
float num88 = 300f;
|
|
if (this.type == 63)
|
|
{
|
|
num88 *= 1.5f;
|
|
num86 *= 1.5f;
|
|
num87 *= 1.5f;
|
|
}
|
|
double num89 = (double) Math.Abs(num82);
|
|
double num90 = (double) Math.Abs(num83);
|
|
if ((double) this.ai[1] == 1.0)
|
|
this.tileCollide = false;
|
|
if (!Main.player[this.owner].channel || (double) num84 > (double) num88 || !this.tileCollide)
|
|
{
|
|
this.ai[1] = 1f;
|
|
if (this.tileCollide)
|
|
this.netUpdate = true;
|
|
this.tileCollide = false;
|
|
if ((double) num84 < 20.0)
|
|
this.Kill();
|
|
}
|
|
if (!this.tileCollide)
|
|
num87 *= 2f;
|
|
if ((double) num84 > 60.0 || !this.tileCollide)
|
|
{
|
|
float num91 = num86 / num84;
|
|
num82 *= num91;
|
|
num83 *= num91;
|
|
Vector2 vector2_5 = new Vector2(this.velocity.X, this.velocity.Y);
|
|
float num92 = num82 - this.velocity.X;
|
|
float num93 = num83 - this.velocity.Y;
|
|
float num94 = (float) Math.Sqrt((double) num92 * (double) num92 + (double) num93 * (double) num93);
|
|
float num95 = num87 / num94;
|
|
float num96 = num92 * num95;
|
|
float num97 = num93 * num95;
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.Y *= 0.98f;
|
|
this.velocity.X += num96;
|
|
this.velocity.Y += num97;
|
|
}
|
|
else
|
|
{
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < 6.0)
|
|
{
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.Y += 0.2f;
|
|
}
|
|
if ((double) Main.player[this.owner].velocity.X == 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
}
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) num83, (double) num82) - this.velocity.X * 0.1f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 16)
|
|
{
|
|
if (this.type == 108)
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] > 3.0)
|
|
this.Kill();
|
|
}
|
|
if (this.type == 37)
|
|
{
|
|
try
|
|
{
|
|
int num98 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num99 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num100 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num101 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num98 < 0)
|
|
num98 = 0;
|
|
if (num99 > Main.maxTilesX)
|
|
num99 = Main.maxTilesX;
|
|
if (num100 < 0)
|
|
num100 = 0;
|
|
if (num101 > Main.maxTilesY)
|
|
num101 = Main.maxTilesY;
|
|
for (int index18 = num98; index18 < num99; ++index18)
|
|
{
|
|
for (int index19 = num100; index19 < num101; ++index19)
|
|
{
|
|
if (Main.tile[index18, index19] != null && Main.tile[index18, index19].active && (Main.tileSolid[(int) Main.tile[index18, index19].type] || Main.tileSolidTop[(int) Main.tile[index18, index19].type] && Main.tile[index18, index19].frameY == (short) 0))
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (index18 * 16);
|
|
vector2.Y = (float) (index19 * 16);
|
|
if ((double) this.position.X + (double) this.width - 4.0 > (double) vector2.X && (double) this.position.X + 4.0 < (double) vector2.X + 16.0 && (double) this.position.Y + (double) this.height - 4.0 > (double) vector2.Y && (double) this.position.Y + 4.0 < (double) vector2.Y + 16.0)
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = -0.2f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
if (this.type == 102)
|
|
{
|
|
if ((double) this.velocity.Y > 10.0)
|
|
this.velocity.Y = 10f;
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 3)
|
|
{
|
|
++this.frame;
|
|
this.frameCounter = 0;
|
|
}
|
|
if (this.frame > 1)
|
|
this.frame = 0;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 128;
|
|
this.height = 128;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
this.damage = 40;
|
|
this.knockBack = 8f;
|
|
this.timeLeft = 3;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (this.owner == Main.myPlayer && this.timeLeft <= 3)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
if (this.type == 28 || this.type == 37 || this.type == 75)
|
|
{
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 128;
|
|
this.height = 128;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
this.damage = 100;
|
|
this.knockBack = 8f;
|
|
}
|
|
else if (this.type == 29)
|
|
{
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 250;
|
|
this.height = 250;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
this.damage = 250;
|
|
this.knockBack = 10f;
|
|
}
|
|
else if (this.type == 30)
|
|
{
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 128;
|
|
this.height = 128;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
this.knockBack = 8f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 30 && this.type != 108)
|
|
this.damage = 0;
|
|
if (this.type != 30 && Main.rand.Next(4) == 0)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100);
|
|
}
|
|
++this.ai[0];
|
|
if (this.type == 30 && (double) this.ai[0] > 10.0 || this.type != 30 && (double) this.ai[0] > 5.0)
|
|
{
|
|
this.ai[0] = 10f;
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X != 0.0)
|
|
{
|
|
this.velocity.X *= 0.97f;
|
|
if (this.type == 29)
|
|
this.velocity.X *= 0.99f;
|
|
if ((double) this.velocity.X > -0.01 && (double) this.velocity.X < 0.01)
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
this.velocity.Y += 0.2f;
|
|
}
|
|
this.rotation += this.velocity.X * 0.1f;
|
|
}
|
|
else if (this.aiStyle == 17)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
this.rotation += this.velocity.X * 0.1f;
|
|
this.velocity.Y += 0.2f;
|
|
if (this.owner != Main.myPlayer)
|
|
return;
|
|
int i1 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0);
|
|
int j = (int) (((double) this.position.Y + (double) this.height - 4.0) / 16.0);
|
|
if (Main.tile[i1, j] == null || Main.tile[i1, j].active)
|
|
return;
|
|
WorldGen.PlaceTile(i1, j, 85);
|
|
if (!Main.tile[i1, j].active)
|
|
return;
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(17, number: 1, number2: ((float) i1), number3: ((float) j), number4: 85f);
|
|
int i2 = Sign.ReadSign(i1, j);
|
|
if (i2 >= 0)
|
|
Sign.TextSign(i2, this.miscText);
|
|
this.Kill();
|
|
}
|
|
else if (this.aiStyle == 18)
|
|
{
|
|
if ((double) this.ai[1] == 0.0 && this.type == 44)
|
|
{
|
|
this.ai[1] = 1f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 8);
|
|
}
|
|
this.rotation += (float) this.direction * 0.8f;
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] >= 30.0)
|
|
{
|
|
if ((double) this.ai[0] < 100.0)
|
|
this.velocity *= 1.06f;
|
|
else
|
|
this.ai[0] = 200f;
|
|
}
|
|
for (int index20 = 0; index20 < 2; ++index20)
|
|
{
|
|
int index21 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 27, Alpha: 100);
|
|
Main.dust[index21].noGravity = true;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 19)
|
|
{
|
|
this.direction = Main.player[this.owner].direction;
|
|
Main.player[this.owner].heldProj = this.whoAmI;
|
|
Main.player[this.owner].itemTime = Main.player[this.owner].itemAnimation;
|
|
this.position.X = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - (float) (this.width / 2);
|
|
this.position.Y = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - (float) (this.height / 2);
|
|
if (this.type == 46)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.player[this.owner].itemAnimation < Main.player[this.owner].itemAnimationMax / 3)
|
|
this.ai[0] -= 1.6f;
|
|
else
|
|
this.ai[0] += 1.4f;
|
|
}
|
|
else if (this.type == 105)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.player[this.owner].itemAnimation < Main.player[this.owner].itemAnimationMax / 3)
|
|
this.ai[0] -= 2.4f;
|
|
else
|
|
this.ai[0] += 2.1f;
|
|
}
|
|
else if (this.type == 47)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 4f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.player[this.owner].itemAnimation < Main.player[this.owner].itemAnimationMax / 3)
|
|
this.ai[0] -= 1.2f;
|
|
else
|
|
this.ai[0] += 0.9f;
|
|
}
|
|
else if (this.type == 49)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 4f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.player[this.owner].itemAnimation < Main.player[this.owner].itemAnimationMax / 3)
|
|
this.ai[0] -= 1.1f;
|
|
else
|
|
this.ai[0] += 0.85f;
|
|
}
|
|
else if (this.type == 64)
|
|
{
|
|
this.spriteDirection = -this.direction;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.player[this.owner].itemAnimation < Main.player[this.owner].itemAnimationMax / 3)
|
|
this.ai[0] -= 1.9f;
|
|
else
|
|
this.ai[0] += 1.7f;
|
|
}
|
|
else if (this.type == 66 || this.type == 97)
|
|
{
|
|
this.spriteDirection = -this.direction;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.player[this.owner].itemAnimation < Main.player[this.owner].itemAnimationMax / 3)
|
|
this.ai[0] -= 2.1f;
|
|
else
|
|
this.ai[0] += 1.9f;
|
|
}
|
|
else if (this.type == 97)
|
|
{
|
|
this.spriteDirection = -this.direction;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.player[this.owner].itemAnimation < Main.player[this.owner].itemAnimationMax / 3)
|
|
this.ai[0] -= 1.6f;
|
|
else
|
|
this.ai[0] += 1.4f;
|
|
}
|
|
this.position += this.velocity * this.ai[0];
|
|
if (Main.player[this.owner].itemAnimation == 0)
|
|
this.Kill();
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 2.355f;
|
|
if (this.spriteDirection == -1)
|
|
this.rotation -= 1.57f;
|
|
if (this.type == 46)
|
|
{
|
|
if (Main.rand.Next(5) == 0)
|
|
Dust.NewDust(this.position, this.width, this.height, 14, Alpha: 150, Scale: 1.4f);
|
|
int index22 = Dust.NewDust(this.position, this.width, this.height, 27, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, 100, Scale: 1.2f);
|
|
Main.dust[index22].noGravity = true;
|
|
Main.dust[index22].velocity.X /= 2f;
|
|
Main.dust[index22].velocity.Y /= 2f;
|
|
int index23 = Dust.NewDust(this.position - this.velocity * 2f, this.width, this.height, 27, Alpha: 150, Scale: 1.4f);
|
|
Main.dust[index23].velocity.X /= 5f;
|
|
Main.dust[index23].velocity.Y /= 5f;
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 105)
|
|
return;
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 57, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 200, Scale: 1.2f);
|
|
Main.dust[index].velocity += this.velocity * 0.3f;
|
|
Main.dust[index].velocity *= 0.2f;
|
|
}
|
|
if (Main.rand.Next(4) != 0)
|
|
return;
|
|
int index24 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 43, Alpha: 254, Scale: 0.3f);
|
|
Main.dust[index24].velocity += this.velocity * 0.5f;
|
|
Main.dust[index24].velocity *= 0.5f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 20)
|
|
{
|
|
if (this.soundDelay <= 0)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 22);
|
|
this.soundDelay = 30;
|
|
}
|
|
if (Main.myPlayer == this.owner)
|
|
{
|
|
if (Main.player[this.owner].channel)
|
|
{
|
|
float num102 = Main.player[this.owner].inventory[Main.player[this.owner].selectedItem].shootSpeed * this.scale;
|
|
Vector2 vector2 = new Vector2(Main.player[this.owner].position.X + (float) Main.player[this.owner].width * 0.5f, Main.player[this.owner].position.Y + (float) Main.player[this.owner].height * 0.5f);
|
|
float num103 = (float) Main.mouseX + Main.screenPosition.X - vector2.X;
|
|
float num104 = (float) Main.mouseY + Main.screenPosition.Y - vector2.Y;
|
|
float num105 = (float) Math.Sqrt((double) num103 * (double) num103 + (double) num104 * (double) num104);
|
|
float num106 = (float) Math.Sqrt((double) num103 * (double) num103 + (double) num104 * (double) num104);
|
|
float num107 = num102 / num106;
|
|
float num108 = num103 * num107;
|
|
float num109 = num104 * num107;
|
|
if ((double) num108 != (double) this.velocity.X || (double) num109 != (double) this.velocity.Y)
|
|
this.netUpdate = true;
|
|
this.velocity.X = num108;
|
|
this.velocity.Y = num109;
|
|
}
|
|
else
|
|
this.Kill();
|
|
}
|
|
if ((double) this.velocity.X > 0.0)
|
|
Main.player[this.owner].direction = 1;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
Main.player[this.owner].direction = -1;
|
|
this.spriteDirection = this.direction;
|
|
Main.player[this.owner].direction = this.direction;
|
|
Main.player[this.owner].heldProj = this.whoAmI;
|
|
Main.player[this.owner].itemTime = 2;
|
|
Main.player[this.owner].itemAnimation = 2;
|
|
this.position.X = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - (float) (this.width / 2);
|
|
this.position.Y = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - (float) (this.height / 2);
|
|
this.rotation = (float) (Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57000005245209);
|
|
Main.player[this.owner].itemRotation = Main.player[this.owner].direction != 1 ? (float) Math.Atan2((double) this.velocity.Y * (double) this.direction, (double) this.velocity.X * (double) this.direction) : (float) Math.Atan2((double) this.velocity.Y * (double) this.direction, (double) this.velocity.X * (double) this.direction);
|
|
this.velocity.X *= (float) (1.0 + (double) Main.rand.Next(-3, 4) * 0.00999999977648258);
|
|
if (Main.rand.Next(6) != 0)
|
|
return;
|
|
int index = Dust.NewDust(this.position + this.velocity * (float) Main.rand.Next(6, 10) * 0.1f, this.width, this.height, 31, Alpha: 80, Scale: 1.4f);
|
|
Main.dust[index].position.X -= 4f;
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.2f;
|
|
Main.dust[index].velocity.Y = (float) -Main.rand.Next(7, 13) * 0.15f;
|
|
}
|
|
else if (this.aiStyle == 21)
|
|
{
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
this.spriteDirection = -this.direction;
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 27, Alpha: 80);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.2f;
|
|
}
|
|
if ((double) this.ai[1] != 1.0)
|
|
return;
|
|
this.ai[1] = 0.0f;
|
|
Main.harpNote = this.ai[0];
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 26);
|
|
}
|
|
else if (this.aiStyle == 22)
|
|
{
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
this.alpha = (int) byte.MaxValue;
|
|
if ((double) this.ai[1] < 0.0)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.rotation += 0.3f;
|
|
else
|
|
this.rotation -= 0.3f;
|
|
int num110 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num111 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num112 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num113 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num110 < 0)
|
|
num110 = 0;
|
|
if (num111 > Main.maxTilesX)
|
|
num111 = Main.maxTilesX;
|
|
if (num112 < 0)
|
|
num112 = 0;
|
|
if (num113 > Main.maxTilesY)
|
|
num113 = Main.maxTilesY;
|
|
int num114 = (int) this.position.X + 4;
|
|
int num115 = (int) this.position.Y + 4;
|
|
for (int index25 = num110; index25 < num111; ++index25)
|
|
{
|
|
for (int index26 = num112; index26 < num113; ++index26)
|
|
{
|
|
if (Main.tile[index25, index26] != null && Main.tile[index25, index26].active && Main.tile[index25, index26].type != (byte) 127 && Main.tileSolid[(int) Main.tile[index25, index26].type] && !Main.tileSolidTop[(int) Main.tile[index25, index26].type])
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (index25 * 16);
|
|
vector2.Y = (float) (index26 * 16);
|
|
if ((double) (num114 + 8) > (double) vector2.X && (double) num114 < (double) vector2.X + 16.0 && (double) (num115 + 8) > (double) vector2.Y && (double) num115 < (double) vector2.Y + 16.0)
|
|
this.Kill();
|
|
}
|
|
}
|
|
}
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 67);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.3f;
|
|
}
|
|
else if ((double) this.ai[0] < 0.0)
|
|
{
|
|
if ((double) this.ai[0] == -1.0)
|
|
{
|
|
for (int index27 = 0; index27 < 10; ++index27)
|
|
{
|
|
int index28 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 67, Scale: 1.1f);
|
|
Main.dust[index28].noGravity = true;
|
|
Main.dust[index28].velocity *= 1.3f;
|
|
}
|
|
}
|
|
else if (Main.rand.Next(30) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 67, Alpha: 100);
|
|
Main.dust[index].velocity *= 0.2f;
|
|
}
|
|
int i = (int) this.position.X / 16;
|
|
int j = (int) this.position.Y / 16;
|
|
if (Main.tile[i, j] == null || !Main.tile[i, j].active)
|
|
this.Kill();
|
|
--this.ai[0];
|
|
if ((double) this.ai[0] > -300.0 || Main.myPlayer != this.owner && Main.netMode != 2 || !Main.tile[i, j].active || Main.tile[i, j].type != (byte) 127)
|
|
return;
|
|
WorldGen.KillTile(i, j);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(17, number2: ((float) i), number3: ((float) j));
|
|
this.Kill();
|
|
}
|
|
else
|
|
{
|
|
int num116 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num117 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num118 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num119 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num116 < 0)
|
|
num116 = 0;
|
|
if (num117 > Main.maxTilesX)
|
|
num117 = Main.maxTilesX;
|
|
if (num118 < 0)
|
|
num118 = 0;
|
|
if (num119 > Main.maxTilesY)
|
|
num119 = Main.maxTilesY;
|
|
int num120 = (int) this.position.X + 4;
|
|
int num121 = (int) this.position.Y + 4;
|
|
for (int index29 = num116; index29 < num117; ++index29)
|
|
{
|
|
for (int index30 = num118; index30 < num119; ++index30)
|
|
{
|
|
if (Main.tile[index29, index30] != null && Main.tile[index29, index30].active && Main.tile[index29, index30].type != (byte) 127 && Main.tileSolid[(int) Main.tile[index29, index30].type] && !Main.tileSolidTop[(int) Main.tile[index29, index30].type])
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (index29 * 16);
|
|
vector2.Y = (float) (index30 * 16);
|
|
if ((double) (num120 + 8) > (double) vector2.X && (double) num120 < (double) vector2.X + 16.0 && (double) (num121 + 8) > (double) vector2.Y && (double) num121 < (double) vector2.Y + 16.0)
|
|
this.Kill();
|
|
}
|
|
}
|
|
}
|
|
if (this.lavaWet)
|
|
this.Kill();
|
|
if (!this.active)
|
|
return;
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 67);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.3f;
|
|
int i = (int) this.ai[0];
|
|
int j = (int) this.ai[1];
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.rotation += 0.3f;
|
|
else
|
|
this.rotation -= 0.3f;
|
|
if (Main.myPlayer != this.owner)
|
|
return;
|
|
int num122 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0);
|
|
int num123 = (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0);
|
|
bool flag = false;
|
|
if (num122 == i && num123 == j)
|
|
flag = true;
|
|
if (((double) this.velocity.X <= 0.0 && num122 <= i || (double) this.velocity.X >= 0.0 && num122 >= i) && ((double) this.velocity.Y <= 0.0 && num123 <= j || (double) this.velocity.Y >= 0.0 && num123 >= j))
|
|
flag = true;
|
|
if (!flag)
|
|
return;
|
|
if (WorldGen.PlaceTile(i, j, (int) sbyte.MaxValue, plr: this.owner))
|
|
{
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(17, number: 1, number2: ((float) (int) this.ai[0]), number3: ((float) (int) this.ai[1]), number4: ((float) sbyte.MaxValue));
|
|
this.damage = 0;
|
|
this.ai[0] = -1f;
|
|
this.velocity *= 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.position.X = (float) (i * 16);
|
|
this.position.Y = (float) (j * 16);
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
this.ai[1] = -1f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 23)
|
|
{
|
|
if (this.timeLeft > 60)
|
|
this.timeLeft = 60;
|
|
if ((double) this.ai[0] > 7.0)
|
|
{
|
|
float num = 1f;
|
|
if ((double) this.ai[0] == 8.0)
|
|
num = 0.25f;
|
|
else if ((double) this.ai[0] == 9.0)
|
|
num = 0.5f;
|
|
else if ((double) this.ai[0] == 10.0)
|
|
num = 0.75f;
|
|
++this.ai[0];
|
|
int Type = 6;
|
|
if (this.type == 101)
|
|
Type = 75;
|
|
if (Type == 6 || Main.rand.Next(2) == 0)
|
|
{
|
|
for (int index31 = 0; index31 < 1; ++index31)
|
|
{
|
|
int index32 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, Type, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100);
|
|
if (Main.rand.Next(3) != 0 || Type == 75 && Main.rand.Next(3) == 0)
|
|
{
|
|
Main.dust[index32].noGravity = true;
|
|
Main.dust[index32].scale *= 3f;
|
|
Main.dust[index32].velocity.X *= 2f;
|
|
Main.dust[index32].velocity.Y *= 2f;
|
|
}
|
|
Main.dust[index32].scale *= 1.5f;
|
|
Main.dust[index32].velocity.X *= 1.2f;
|
|
Main.dust[index32].velocity.Y *= 1.2f;
|
|
Main.dust[index32].scale *= num;
|
|
if (Type == 75)
|
|
{
|
|
Main.dust[index32].velocity += this.velocity;
|
|
if (!Main.dust[index32].noGravity)
|
|
Main.dust[index32].velocity *= 0.5f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
++this.ai[0];
|
|
this.rotation += 0.3f * (float) this.direction;
|
|
}
|
|
else if (this.aiStyle == 24)
|
|
{
|
|
this.light = this.scale * 0.5f;
|
|
this.rotation += this.velocity.X * 0.2f;
|
|
++this.ai[1];
|
|
if (this.type == 94)
|
|
{
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 70);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.5f;
|
|
Main.dust[index].scale *= 0.9f;
|
|
}
|
|
this.velocity *= 0.985f;
|
|
if ((double) this.ai[1] <= 130.0)
|
|
return;
|
|
this.scale -= 0.05f;
|
|
if ((double) this.scale > 0.2)
|
|
return;
|
|
this.scale = 0.2f;
|
|
this.Kill();
|
|
}
|
|
else
|
|
{
|
|
this.velocity *= 0.96f;
|
|
if ((double) this.ai[1] <= 15.0)
|
|
return;
|
|
this.scale -= 0.05f;
|
|
if ((double) this.scale > 0.2)
|
|
return;
|
|
this.scale = 0.2f;
|
|
this.Kill();
|
|
}
|
|
}
|
|
else if (this.aiStyle == 25)
|
|
{
|
|
if ((double) this.ai[0] != 0.0 && (double) this.velocity.Y <= 0.0 && (double) this.velocity.X == 0.0)
|
|
{
|
|
float num = 0.5f;
|
|
int i3 = (int) (((double) this.position.X - 8.0) / 16.0);
|
|
int j1 = (int) ((double) this.position.Y / 16.0);
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
if (WorldGen.SolidTile(i3, j1) || WorldGen.SolidTile(i3, j1 + 1))
|
|
flag1 = true;
|
|
int i4 = (int) (((double) this.position.X + (double) this.width + 8.0) / 16.0);
|
|
if (WorldGen.SolidTile(i4, j1) || WorldGen.SolidTile(i4, j1 + 1))
|
|
flag2 = true;
|
|
if (flag1)
|
|
this.velocity.X = num;
|
|
else if (flag2)
|
|
{
|
|
this.velocity.X = -num;
|
|
}
|
|
else
|
|
{
|
|
int i5 = (int) (((double) this.position.X - 8.0 - 16.0) / 16.0);
|
|
int j2 = (int) ((double) this.position.Y / 16.0);
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
if (WorldGen.SolidTile(i5, j2) || WorldGen.SolidTile(i5, j2 + 1))
|
|
flag3 = true;
|
|
int i6 = (int) (((double) this.position.X + (double) this.width + 8.0 + 16.0) / 16.0);
|
|
if (WorldGen.SolidTile(i6, j2) || WorldGen.SolidTile(i6, j2 + 1))
|
|
flag4 = true;
|
|
if (flag3)
|
|
this.velocity.X = num;
|
|
else if (flag4)
|
|
{
|
|
this.velocity.X = -num;
|
|
}
|
|
else
|
|
{
|
|
int i7 = (int) (((double) this.position.X + 4.0) / 16.0);
|
|
int j3 = (int) (((double) this.position.Y + (double) this.height + 8.0) / 16.0);
|
|
if (WorldGen.SolidTile(i7, j3) || WorldGen.SolidTile(i7, j3 + 1))
|
|
flag3 = true;
|
|
this.velocity.X = flag3 ? -num : num;
|
|
}
|
|
}
|
|
}
|
|
this.rotation += this.velocity.X * 0.06f;
|
|
this.ai[0] = 1f;
|
|
if ((double) this.velocity.Y > 16.0)
|
|
this.velocity.Y = 16f;
|
|
if ((double) this.velocity.Y <= 6.0)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && (double) this.velocity.X < 7.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < 0.0 && (double) this.velocity.X > -7.0)
|
|
this.velocity.X -= 0.05f;
|
|
}
|
|
this.velocity.Y += 0.3f;
|
|
}
|
|
else
|
|
{
|
|
if (this.aiStyle != 26)
|
|
return;
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
bool flag8 = false;
|
|
int num124 = 60;
|
|
if (Main.myPlayer == this.owner)
|
|
{
|
|
if (Main.player[Main.myPlayer].dead)
|
|
Main.player[Main.myPlayer].bunny = false;
|
|
if (Main.player[Main.myPlayer].bunny)
|
|
this.timeLeft = 2;
|
|
}
|
|
if ((double) Main.player[this.owner].position.X + (double) (Main.player[this.owner].width / 2) < (double) this.position.X + (double) (this.width / 2) - (double) num124)
|
|
flag5 = true;
|
|
else if ((double) Main.player[this.owner].position.X + (double) (Main.player[this.owner].width / 2) > (double) this.position.X + (double) (this.width / 2) + (double) num124)
|
|
flag6 = true;
|
|
if (Main.player[this.owner].rocketDelay2 > 0)
|
|
this.ai[0] = 1f;
|
|
Vector2 vector2_6 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num125 = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - vector2_6.X;
|
|
float num126 = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - vector2_6.Y;
|
|
float num127 = (float) Math.Sqrt((double) num125 * (double) num125 + (double) num126 * (double) num126);
|
|
if ((double) num127 > 2000.0)
|
|
{
|
|
this.position.X = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - (float) (this.width / 2);
|
|
this.position.Y = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - (float) (this.height / 2);
|
|
}
|
|
else if ((double) num127 > 500.0 || (double) Math.Abs(num126) > 300.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
if ((double) num126 > 0.0 && (double) this.velocity.Y < 0.0)
|
|
this.velocity.Y = 0.0f;
|
|
if ((double) num126 < 0.0 && (double) this.velocity.Y > 0.0)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
if ((double) this.ai[0] != 0.0)
|
|
{
|
|
this.tileCollide = false;
|
|
Vector2 vector2_7 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num128 = Main.player[this.owner].position.X + (float) (Main.player[this.owner].width / 2) - vector2_7.X;
|
|
float num129 = Main.player[this.owner].position.Y + (float) (Main.player[this.owner].height / 2) - vector2_7.Y;
|
|
float num130 = (float) Math.Sqrt((double) num128 * (double) num128 + (double) num129 * (double) num129);
|
|
float num131 = 10f;
|
|
if ((double) num130 < 200.0 && (double) Main.player[this.owner].velocity.Y == 0.0 && (double) this.position.Y + (double) this.height <= (double) Main.player[this.owner].position.Y + (double) Main.player[this.owner].height && !Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
if ((double) this.velocity.Y < -6.0)
|
|
this.velocity.Y = -6f;
|
|
}
|
|
float num132;
|
|
float num133;
|
|
if ((double) num130 < 60.0)
|
|
{
|
|
num132 = this.velocity.X;
|
|
num133 = this.velocity.Y;
|
|
}
|
|
else
|
|
{
|
|
float num134 = num131 / num130;
|
|
num132 = num128 * num134;
|
|
num133 = num129 * num134;
|
|
}
|
|
if ((double) this.velocity.X < (double) num132)
|
|
{
|
|
this.velocity.X += 0.2f;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += 0.3f;
|
|
}
|
|
if ((double) this.velocity.X > (double) num132)
|
|
{
|
|
this.velocity.X -= 0.2f;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X -= 0.3f;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num133)
|
|
{
|
|
this.velocity.Y += 0.2f;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y += 0.3f;
|
|
}
|
|
if ((double) this.velocity.Y > (double) num133)
|
|
{
|
|
this.velocity.Y -= 0.2f;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y -= 0.3f;
|
|
}
|
|
this.frame = 7;
|
|
if ((double) this.velocity.X > 0.5)
|
|
this.spriteDirection = -1;
|
|
else if ((double) this.velocity.X < -0.5)
|
|
this.spriteDirection = 1;
|
|
this.rotation = this.spriteDirection != -1 ? (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 3.14f : (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
int index = Dust.NewDust(new Vector2((float) ((double) this.position.X + (double) (this.width / 2) - 4.0), (float) ((double) this.position.Y + (double) (this.height / 2) - 4.0)) - this.velocity, 8, 8, 16, (float) (-(double) this.velocity.X * 0.5), this.velocity.Y * 0.5f, 50, Scale: 1.7f);
|
|
Main.dust[index].velocity.X *= 0.2f;
|
|
Main.dust[index].velocity.Y *= 0.2f;
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
else
|
|
{
|
|
this.rotation = 0.0f;
|
|
this.tileCollide = true;
|
|
if (flag5)
|
|
{
|
|
if ((double) this.velocity.X > -3.5)
|
|
this.velocity.X -= 0.08f;
|
|
else
|
|
this.velocity.X -= 0.02f;
|
|
}
|
|
else if (flag6)
|
|
{
|
|
if ((double) this.velocity.X < 3.5)
|
|
this.velocity.X += 0.08f;
|
|
else
|
|
this.velocity.X += 0.02f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) this.velocity.X >= -0.08 && (double) this.velocity.X <= 0.08)
|
|
this.velocity.X = 0.0f;
|
|
}
|
|
if (flag5 || flag6)
|
|
{
|
|
int num135 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int j = (int) ((double) this.position.Y + (double) (this.width / 2)) / 16;
|
|
if (flag5)
|
|
--num135;
|
|
if (flag6)
|
|
++num135;
|
|
if (WorldGen.SolidTile(num135 + (int) this.velocity.X, j))
|
|
flag8 = true;
|
|
}
|
|
if ((double) Main.player[this.owner].position.Y + (double) Main.player[this.owner].height > (double) this.position.Y + (double) this.height)
|
|
flag7 = true;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (!flag7 && ((double) this.velocity.X < 0.0 || (double) this.velocity.X > 0.0))
|
|
{
|
|
int i = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int j = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16 + 1;
|
|
if (flag5)
|
|
--i;
|
|
if (flag6)
|
|
++i;
|
|
if (!WorldGen.SolidTile(i, j))
|
|
flag8 = true;
|
|
}
|
|
if (flag8 && WorldGen.SolidTile((int) ((double) this.position.X + (double) (this.width / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16 + 1))
|
|
this.velocity.Y = -9.1f;
|
|
}
|
|
if ((double) this.velocity.X > 6.5)
|
|
this.velocity.X = 6.5f;
|
|
if ((double) this.velocity.X < -6.5)
|
|
this.velocity.X = -6.5f;
|
|
if ((double) this.velocity.X > 0.07 && flag6)
|
|
this.direction = 1;
|
|
if ((double) this.velocity.X < -0.07 && flag5)
|
|
this.direction = -1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == 1)
|
|
this.spriteDirection = -1;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame = 0;
|
|
this.frameCounter = 0;
|
|
}
|
|
else if ((double) this.velocity.X < -0.8 || (double) this.velocity.X > 0.8)
|
|
{
|
|
this.frameCounter += (int) Math.Abs(this.velocity.X);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6)
|
|
{
|
|
++this.frame;
|
|
this.frameCounter = 0;
|
|
}
|
|
if (this.frame >= 7)
|
|
this.frame = 0;
|
|
}
|
|
else
|
|
{
|
|
this.frame = 0;
|
|
this.frameCounter = 0;
|
|
}
|
|
}
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frameCounter = 0;
|
|
this.frame = 4;
|
|
}
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.frameCounter = 0;
|
|
this.frame = 6;
|
|
}
|
|
this.velocity.Y += 0.4f;
|
|
if ((double) this.velocity.Y <= 10.0)
|
|
return;
|
|
this.velocity.Y = 10f;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Kill()
|
|
{
|
|
if (!this.active)
|
|
return;
|
|
this.timeLeft = 0;
|
|
if (this.type == 1 || this.type == 81 || this.type == 98)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 7);
|
|
}
|
|
else if (this.type == 111)
|
|
{
|
|
int index = Gore.NewGore(new Vector2(this.position.X - (float) (this.width / 2), this.position.Y - (float) (this.height / 2)), new Vector2(0.0f, 0.0f), Main.rand.Next(11, 14), this.scale);
|
|
Main.gore[index].velocity *= 0.1f;
|
|
}
|
|
else if (this.type == 93)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index1 = 0; index1 < 10; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(this.position, this.width, this.height, 57, Alpha: 100, Scale: 0.5f);
|
|
Main.dust[index2].velocity.X *= 2f;
|
|
Main.dust[index2].velocity.Y *= 2f;
|
|
}
|
|
}
|
|
else if (this.type == 99)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index3 = 0; index3 < 30; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(this.position, this.width, this.height, 1);
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.dust[index4].scale *= 1.4f;
|
|
this.velocity *= 1.9f;
|
|
}
|
|
}
|
|
else if (this.type == 91 || this.type == 92)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 58, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, 150, Scale: 1.2f);
|
|
for (int index = 0; index < 3; ++index)
|
|
Gore.NewGore(this.position, new Vector2(this.velocity.X * 0.05f, this.velocity.Y * 0.05f), Main.rand.Next(16, 18));
|
|
if (this.type == 12 && this.damage < 500)
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 57, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, 150, Scale: 1.2f);
|
|
for (int index = 0; index < 3; ++index)
|
|
Gore.NewGore(this.position, new Vector2(this.velocity.X * 0.05f, this.velocity.Y * 0.05f), Main.rand.Next(16, 18));
|
|
}
|
|
if ((this.type == 91 || this.type == 92 && (double) this.ai[0] > 0.0) && this.owner == Main.myPlayer)
|
|
{
|
|
float num1 = this.position.X + (float) Main.rand.Next(-400, 400);
|
|
float num2 = this.position.Y - (float) Main.rand.Next(600, 900);
|
|
Vector2 vector2 = new Vector2(num1, num2);
|
|
float num3 = this.position.X + (float) (this.width / 2) - vector2.X;
|
|
float num4 = this.position.Y + (float) (this.height / 2) - vector2.Y;
|
|
float num5 = 22f / (float) Math.Sqrt((double) num3 * (double) num3 + (double) num4 * (double) num4);
|
|
float SpeedX = num3 * num5;
|
|
float SpeedY = num4 * num5;
|
|
int Damage = this.damage;
|
|
if (this.type == 91)
|
|
Damage = (int) ((double) Damage * 0.5);
|
|
int index = Projectile.NewProjectile(num1, num2, SpeedX, SpeedY, 92, Damage, this.knockBack, this.owner);
|
|
if (this.type == 91)
|
|
{
|
|
Main.projectile[index].ai[1] = this.position.Y;
|
|
Main.projectile[index].ai[0] = 1f;
|
|
}
|
|
else
|
|
Main.projectile[index].ai[1] = this.position.Y;
|
|
}
|
|
}
|
|
else if (this.type == 89)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index5 = 0; index5 < 5; ++index5)
|
|
{
|
|
int index6 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 68);
|
|
Main.dust[index6].noGravity = true;
|
|
Main.dust[index6].velocity *= 1.5f;
|
|
Main.dust[index6].scale *= 0.9f;
|
|
}
|
|
if (this.type == 89 && this.owner == Main.myPlayer)
|
|
{
|
|
for (int index = 0; index < 3; ++index)
|
|
{
|
|
float SpeedX = (float) (-(double) this.velocity.X * (double) Main.rand.Next(40, 70) * 0.00999999977648258 + (double) Main.rand.Next(-20, 21) * 0.400000005960464);
|
|
float SpeedY = (float) (-(double) this.velocity.Y * (double) Main.rand.Next(40, 70) * 0.00999999977648258 + (double) Main.rand.Next(-20, 21) * 0.400000005960464);
|
|
Projectile.NewProjectile(this.position.X + SpeedX, this.position.Y + SpeedY, SpeedX, SpeedY, 90, (int) ((double) this.damage * 0.6), 0.0f, this.owner);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 80)
|
|
{
|
|
if ((double) this.ai[0] >= 0.0)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 27);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 67);
|
|
}
|
|
int i = (int) this.position.X / 16;
|
|
int j = (int) this.position.Y / 16;
|
|
if (Main.tile[i, j] == null)
|
|
Main.tile[i, j] = new Tile();
|
|
if (Main.tile[i, j].type == (byte) 127 && Main.tile[i, j].active)
|
|
WorldGen.KillTile(i, j);
|
|
}
|
|
else if (this.type == 76 || this.type == 77 || this.type == 78)
|
|
{
|
|
for (int index7 = 0; index7 < 5; ++index7)
|
|
{
|
|
int index8 = Dust.NewDust(this.position, this.width, this.height, 27, Alpha: 80, Scale: 1.5f);
|
|
Main.dust[index8].noGravity = true;
|
|
}
|
|
}
|
|
else if (this.type == 55)
|
|
{
|
|
for (int index9 = 0; index9 < 5; ++index9)
|
|
{
|
|
int index10 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 18, Scale: 1.5f);
|
|
Main.dust[index10].noGravity = true;
|
|
}
|
|
}
|
|
else if (this.type == 51)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 5; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 0, Scale: 0.7f);
|
|
}
|
|
else if (this.type == 2 || this.type == 82)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100);
|
|
}
|
|
else if (this.type == 103)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index11 = 0; index11 < 20; ++index11)
|
|
{
|
|
int index12 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 75, Alpha: 100);
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.dust[index12].scale *= 2.5f;
|
|
Main.dust[index12].noGravity = true;
|
|
Main.dust[index12].velocity *= 5f;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 3 || this.type == 48 || this.type == 54)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 1, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, Scale: 0.75f);
|
|
}
|
|
else if (this.type == 4)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 14, Alpha: 150, Scale: 1.1f);
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index = 0; index < 60; ++index)
|
|
{
|
|
int Type;
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Type = 15;
|
|
break;
|
|
case 1:
|
|
Type = 57;
|
|
break;
|
|
default:
|
|
Type = 58;
|
|
break;
|
|
}
|
|
Dust.NewDust(this.position, this.width, this.height, Type, this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 150, Scale: 1.5f);
|
|
}
|
|
}
|
|
else if (this.type == 9 || this.type == 12)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 58, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, 150, Scale: 1.2f);
|
|
for (int index = 0; index < 3; ++index)
|
|
Gore.NewGore(this.position, new Vector2(this.velocity.X * 0.05f, this.velocity.Y * 0.05f), Main.rand.Next(16, 18));
|
|
if (this.type == 12 && this.damage < 100)
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 57, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, 150, Scale: 1.2f);
|
|
for (int index = 0; index < 3; ++index)
|
|
Gore.NewGore(this.position, new Vector2(this.velocity.X * 0.05f, this.velocity.Y * 0.05f), Main.rand.Next(16, 18));
|
|
}
|
|
}
|
|
else if (this.type == 14 || this.type == 20 || this.type == 36 || this.type == 83 || this.type == 84 || this.type == 100 || this.type == 110)
|
|
{
|
|
Collision.HitTiles(this.position, this.velocity, this.width, this.height);
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
}
|
|
else if (this.type == 15 || this.type == 34)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index13 = 0; index13 < 20; ++index13)
|
|
{
|
|
int index14 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100, Scale: 2f);
|
|
Main.dust[index14].noGravity = true;
|
|
Main.dust[index14].velocity *= 2f;
|
|
int index15 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100);
|
|
Main.dust[index15].velocity *= 2f;
|
|
}
|
|
}
|
|
else if (this.type == 95 || this.type == 96)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index16 = 0; index16 < 20; ++index16)
|
|
{
|
|
int index17 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 75, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100, Scale: (2f * this.scale));
|
|
Main.dust[index17].noGravity = true;
|
|
Main.dust[index17].velocity *= 2f;
|
|
int index18 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 75, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100, Scale: (1f * this.scale));
|
|
Main.dust[index18].velocity *= 2f;
|
|
}
|
|
}
|
|
else if (this.type == 79)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index19 = 0; index19 < 20; ++index19)
|
|
{
|
|
int index20 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 66, Alpha: 100, newColor: new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB), Scale: 2f);
|
|
Main.dust[index20].noGravity = true;
|
|
Main.dust[index20].velocity *= 4f;
|
|
}
|
|
}
|
|
else if (this.type == 16)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index21 = 0; index21 < 20; ++index21)
|
|
{
|
|
int index22 = Dust.NewDust(new Vector2(this.position.X - this.velocity.X, this.position.Y - this.velocity.Y), this.width, this.height, 15, Alpha: 100, Scale: 2f);
|
|
Main.dust[index22].noGravity = true;
|
|
Main.dust[index22].velocity *= 2f;
|
|
Dust.NewDust(new Vector2(this.position.X - this.velocity.X, this.position.Y - this.velocity.Y), this.width, this.height, 15, Alpha: 100);
|
|
}
|
|
}
|
|
else if (this.type == 17)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 5; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 0);
|
|
}
|
|
else if (this.type == 31 || this.type == 42)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index23 = 0; index23 < 5; ++index23)
|
|
{
|
|
int index24 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 32);
|
|
Main.dust[index24].velocity *= 0.6f;
|
|
}
|
|
}
|
|
else if (this.type == 109)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index25 = 0; index25 < 5; ++index25)
|
|
{
|
|
int index26 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 51, Scale: 0.6f);
|
|
Main.dust[index26].velocity *= 0.6f;
|
|
}
|
|
}
|
|
else if (this.type == 39)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index27 = 0; index27 < 5; ++index27)
|
|
{
|
|
int index28 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 38);
|
|
Main.dust[index28].velocity *= 0.6f;
|
|
}
|
|
}
|
|
else if (this.type == 71)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index29 = 0; index29 < 5; ++index29)
|
|
{
|
|
int index30 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 53);
|
|
Main.dust[index30].velocity *= 0.6f;
|
|
}
|
|
}
|
|
else if (this.type == 40)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index31 = 0; index31 < 5; ++index31)
|
|
{
|
|
int index32 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 36);
|
|
Main.dust[index32].velocity *= 0.6f;
|
|
}
|
|
}
|
|
else if (this.type == 21)
|
|
{
|
|
Main.PlaySound(0, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 26, Scale: 0.8f);
|
|
}
|
|
else if (this.type == 24)
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 1, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, Scale: 0.75f);
|
|
}
|
|
else if (this.type == 27)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index33 = 0; index33 < 30; ++index33)
|
|
{
|
|
int index34 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, 100, Scale: 3f);
|
|
Main.dust[index34].noGravity = true;
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, 100, Scale: 2f);
|
|
}
|
|
}
|
|
else if (this.type == 38)
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 42, this.velocity.X * 0.1f, this.velocity.Y * 0.1f);
|
|
}
|
|
else if (this.type == 44 || this.type == 45)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index35 = 0; index35 < 30; ++index35)
|
|
{
|
|
int index36 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 27, this.velocity.X, this.velocity.Y, 100, Scale: 1.7f);
|
|
Main.dust[index36].noGravity = true;
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 27, this.velocity.X, this.velocity.Y, 100);
|
|
}
|
|
}
|
|
else if (this.type == 41)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 14);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
for (int index37 = 0; index37 < 5; ++index37)
|
|
{
|
|
int index38 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index38].noGravity = true;
|
|
Main.dust[index38].velocity *= 3f;
|
|
int index39 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index39].velocity *= 2f;
|
|
}
|
|
int index40 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index40].velocity *= 0.4f;
|
|
Main.gore[index40].velocity.X += (float) Main.rand.Next(-10, 11) * 0.1f;
|
|
Main.gore[index40].velocity.Y += (float) Main.rand.Next(-10, 11) * 0.1f;
|
|
int index41 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index41].velocity *= 0.4f;
|
|
Main.gore[index41].velocity.X += (float) Main.rand.Next(-10, 11) * 0.1f;
|
|
Main.gore[index41].velocity.Y += (float) Main.rand.Next(-10, 11) * 0.1f;
|
|
if (this.owner == Main.myPlayer)
|
|
{
|
|
this.penetrate = -1;
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 64;
|
|
this.height = 64;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
this.Damage();
|
|
}
|
|
}
|
|
else if (this.type == 28 || this.type == 30 || this.type == 37 || this.type == 75 || this.type == 102)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 14);
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
for (int index42 = 0; index42 < 20; ++index42)
|
|
{
|
|
int index43 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index43].velocity *= 1.4f;
|
|
}
|
|
for (int index44 = 0; index44 < 10; ++index44)
|
|
{
|
|
int index45 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index45].noGravity = true;
|
|
Main.dust[index45].velocity *= 5f;
|
|
int index46 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index46].velocity *= 3f;
|
|
}
|
|
int index47 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index47].velocity *= 0.4f;
|
|
++Main.gore[index47].velocity.X;
|
|
++Main.gore[index47].velocity.Y;
|
|
int index48 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index48].velocity *= 0.4f;
|
|
--Main.gore[index48].velocity.X;
|
|
++Main.gore[index48].velocity.Y;
|
|
int index49 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index49].velocity *= 0.4f;
|
|
++Main.gore[index49].velocity.X;
|
|
--Main.gore[index49].velocity.Y;
|
|
int index50 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index50].velocity *= 0.4f;
|
|
--Main.gore[index50].velocity.X;
|
|
--Main.gore[index50].velocity.Y;
|
|
}
|
|
else if (this.type == 29 || this.type == 108)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 14);
|
|
if (this.type == 29)
|
|
{
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 200;
|
|
this.height = 200;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
}
|
|
for (int index51 = 0; index51 < 50; ++index51)
|
|
{
|
|
int index52 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 2f);
|
|
Main.dust[index52].velocity *= 1.4f;
|
|
}
|
|
for (int index53 = 0; index53 < 80; ++index53)
|
|
{
|
|
int index54 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 3f);
|
|
Main.dust[index54].noGravity = true;
|
|
Main.dust[index54].velocity *= 5f;
|
|
int index55 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2f);
|
|
Main.dust[index55].velocity *= 3f;
|
|
}
|
|
for (int index56 = 0; index56 < 2; ++index56)
|
|
{
|
|
int index57 = Gore.NewGore(new Vector2((float) ((double) this.position.X + (double) (this.width / 2) - 24.0), (float) ((double) this.position.Y + (double) (this.height / 2) - 24.0)), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index57].scale = 1.5f;
|
|
Main.gore[index57].velocity.X += 1.5f;
|
|
Main.gore[index57].velocity.Y += 1.5f;
|
|
int index58 = Gore.NewGore(new Vector2((float) ((double) this.position.X + (double) (this.width / 2) - 24.0), (float) ((double) this.position.Y + (double) (this.height / 2) - 24.0)), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index58].scale = 1.5f;
|
|
Main.gore[index58].velocity.X -= 1.5f;
|
|
Main.gore[index58].velocity.Y += 1.5f;
|
|
int index59 = Gore.NewGore(new Vector2((float) ((double) this.position.X + (double) (this.width / 2) - 24.0), (float) ((double) this.position.Y + (double) (this.height / 2) - 24.0)), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index59].scale = 1.5f;
|
|
Main.gore[index59].velocity.X += 1.5f;
|
|
Main.gore[index59].velocity.Y -= 1.5f;
|
|
int index60 = Gore.NewGore(new Vector2((float) ((double) this.position.X + (double) (this.width / 2) - 24.0), (float) ((double) this.position.Y + (double) (this.height / 2) - 24.0)), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index60].scale = 1.5f;
|
|
Main.gore[index60].velocity.X -= 1.5f;
|
|
Main.gore[index60].velocity.Y -= 1.5f;
|
|
}
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) (this.height / 2);
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
}
|
|
else if (this.type == 69)
|
|
{
|
|
Main.PlaySound(13, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 5; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 13);
|
|
for (int index61 = 0; index61 < 30; ++index61)
|
|
{
|
|
int index62 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 33, SpeedY: -2f, Scale: 1.1f);
|
|
Main.dust[index62].alpha = 100;
|
|
Main.dust[index62].velocity.X *= 1.5f;
|
|
Main.dust[index62].velocity *= 3f;
|
|
}
|
|
}
|
|
else if (this.type == 70)
|
|
{
|
|
Main.PlaySound(13, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 5; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 13);
|
|
for (int index63 = 0; index63 < 30; ++index63)
|
|
{
|
|
int index64 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 52, SpeedY: -2f, Scale: 1.1f);
|
|
Main.dust[index64].alpha = 100;
|
|
Main.dust[index64].velocity.X *= 1.5f;
|
|
Main.dust[index64].velocity *= 3f;
|
|
}
|
|
}
|
|
if (this.owner == Main.myPlayer)
|
|
{
|
|
if (this.type == 28 || this.type == 29 || this.type == 37 || this.type == 75 || this.type == 108)
|
|
{
|
|
int num6 = 3;
|
|
if (this.type == 29)
|
|
num6 = 7;
|
|
if (this.type == 108)
|
|
num6 = 10;
|
|
int num7 = (int) ((double) this.position.X / 16.0 - (double) num6);
|
|
int num8 = (int) ((double) this.position.X / 16.0 + (double) num6);
|
|
int num9 = (int) ((double) this.position.Y / 16.0 - (double) num6);
|
|
int num10 = (int) ((double) this.position.Y / 16.0 + (double) num6);
|
|
if (num7 < 0)
|
|
num7 = 0;
|
|
if (num8 > Main.maxTilesX)
|
|
num8 = Main.maxTilesX;
|
|
if (num9 < 0)
|
|
num9 = 0;
|
|
if (num10 > Main.maxTilesY)
|
|
num10 = Main.maxTilesY;
|
|
bool flag1 = false;
|
|
for (int index65 = num7; index65 <= num8; ++index65)
|
|
{
|
|
for (int index66 = num9; index66 <= num10; ++index66)
|
|
{
|
|
float num11 = Math.Abs((float) index65 - this.position.X / 16f);
|
|
float num12 = Math.Abs((float) index66 - this.position.Y / 16f);
|
|
if (Math.Sqrt((double) num11 * (double) num11 + (double) num12 * (double) num12) < (double) num6 && Main.tile[index65, index66] != null && Main.tile[index65, index66].wall == (byte) 0)
|
|
{
|
|
flag1 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
for (int i1 = num7; i1 <= num8; ++i1)
|
|
{
|
|
for (int j1 = num9; j1 <= num10; ++j1)
|
|
{
|
|
float num13 = Math.Abs((float) i1 - this.position.X / 16f);
|
|
float num14 = Math.Abs((float) j1 - this.position.Y / 16f);
|
|
if (Math.Sqrt((double) num13 * (double) num13 + (double) num14 * (double) num14) < (double) num6)
|
|
{
|
|
bool flag2 = true;
|
|
if (Main.tile[i1, j1] != null && Main.tile[i1, j1].active)
|
|
{
|
|
flag2 = true;
|
|
if (Main.tileDungeon[(int) Main.tile[i1, j1].type] || Main.tile[i1, j1].type == (byte) 21 || Main.tile[i1, j1].type == (byte) 26 || Main.tile[i1, j1].type == (byte) 107 || Main.tile[i1, j1].type == (byte) 108 || Main.tile[i1, j1].type == (byte) 111)
|
|
flag2 = false;
|
|
if (!Main.hardMode && Main.tile[i1, j1].type == (byte) 58)
|
|
flag2 = false;
|
|
if (flag2)
|
|
{
|
|
WorldGen.KillTile(i1, j1);
|
|
if (!Main.tile[i1, j1].active && Main.netMode != 0)
|
|
NetMessage.SendData(17, number2: ((float) i1), number3: ((float) j1));
|
|
}
|
|
}
|
|
if (flag2)
|
|
{
|
|
for (int i2 = i1 - 1; i2 <= i1 + 1; ++i2)
|
|
{
|
|
for (int j2 = j1 - 1; j2 <= j1 + 1; ++j2)
|
|
{
|
|
if (Main.tile[i2, j2] != null && Main.tile[i2, j2].wall > (byte) 0 && flag1)
|
|
{
|
|
WorldGen.KillWall(i2, j2);
|
|
if (Main.tile[i2, j2].wall == (byte) 0 && Main.netMode != 0)
|
|
NetMessage.SendData(17, number: 2, number2: ((float) i2), number3: ((float) j2));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(29, number: this.identity, number2: ((float) this.owner));
|
|
int number = -1;
|
|
if (this.aiStyle == 10)
|
|
{
|
|
int i = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int j = (int) ((double) this.position.Y + (double) (this.width / 2)) / 16;
|
|
int type = 0;
|
|
int Type = 2;
|
|
if (this.type == 109)
|
|
{
|
|
type = 147;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 31)
|
|
{
|
|
type = 53;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 42)
|
|
{
|
|
type = 53;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 56)
|
|
{
|
|
type = 112;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 65)
|
|
{
|
|
type = 112;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 67)
|
|
{
|
|
type = 116;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 68)
|
|
{
|
|
type = 116;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 71)
|
|
{
|
|
type = 123;
|
|
Type = 0;
|
|
}
|
|
if (this.type == 39)
|
|
{
|
|
type = 59;
|
|
Type = 176;
|
|
}
|
|
if (this.type == 40)
|
|
{
|
|
type = 57;
|
|
Type = 172;
|
|
}
|
|
if (!Main.tile[i, j].active)
|
|
{
|
|
WorldGen.PlaceTile(i, j, type, forced: true);
|
|
if (Main.tile[i, j].active && (int) Main.tile[i, j].type == type)
|
|
NetMessage.SendData(17, number: 1, number2: ((float) i), number3: ((float) j), number4: ((float) type));
|
|
else if (Type > 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type);
|
|
}
|
|
else if (Type > 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type);
|
|
}
|
|
if (this.type == 1 && Main.rand.Next(3) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 40);
|
|
if (this.type == 103 && Main.rand.Next(6) == 0)
|
|
number = Main.rand.Next(3) != 0 ? Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 40) : Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 545);
|
|
if (this.type == 2 && Main.rand.Next(3) == 0)
|
|
number = Main.rand.Next(3) != 0 ? Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 40) : Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 41);
|
|
if (this.type == 91 && Main.rand.Next(6) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 516);
|
|
if (this.type == 50 && Main.rand.Next(3) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 282);
|
|
if (this.type == 53 && Main.rand.Next(3) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 286);
|
|
if (this.type == 48 && Main.rand.Next(2) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 279);
|
|
if (this.type == 54 && Main.rand.Next(2) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 287);
|
|
if (this.type == 3 && Main.rand.Next(2) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 42);
|
|
if (this.type == 4 && Main.rand.Next(4) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 47);
|
|
if (this.type == 12 && this.damage > 100)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 75);
|
|
if (this.type == 69 || this.type == 70)
|
|
{
|
|
int num15 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int num16 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
for (int index67 = num15 - 4; index67 <= num15 + 4; ++index67)
|
|
{
|
|
for (int index68 = num16 - 4; index68 <= num16 + 4; ++index68)
|
|
{
|
|
if (Math.Abs(index67 - num15) + Math.Abs(index68 - num16) < 6)
|
|
{
|
|
if (this.type == 69)
|
|
{
|
|
if (Main.tile[index67, index68].type == (byte) 2)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 109;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 1)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 117;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 53)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 116;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 23)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 109;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 25)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 117;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 112)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 116;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 2)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 23;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 1)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 25;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 53)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 112;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 109)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 23;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 117)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 25;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
else if (Main.tile[index67, index68].type == (byte) 116)
|
|
{
|
|
Main.tile[index67, index68].type = (byte) 112;
|
|
WorldGen.SquareTileFrame(index67, index68);
|
|
NetMessage.SendTileSquare(-1, index67, index68, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 21 && Main.rand.Next(2) == 0)
|
|
number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 154);
|
|
if (Main.netMode == 1 && number >= 0)
|
|
NetMessage.SendData(21, number: number);
|
|
}
|
|
this.active = false;
|
|
}
|
|
|
|
public Color GetAlpha(Color newColor)
|
|
{
|
|
if (this.type == 34 || this.type == 15 || this.type == 93 || this.type == 94 || this.type == 95 || this.type == 96 || this.type == 102 && this.alpha < (int) byte.MaxValue)
|
|
return new Color(200, 200, 200, 25);
|
|
if (this.type == 83 || this.type == 88 || this.type == 89 || this.type == 90 || this.type == 100 || this.type == 104)
|
|
return this.alpha < 200 ? new Color((int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, 0) : new Color(0, 0, 0, 0);
|
|
if (this.type == 34 || this.type == 35 || this.type == 15 || this.type == 19 || this.type == 44 || this.type == 45)
|
|
return Color.White;
|
|
if (this.type == 79)
|
|
{
|
|
int discoR = Main.DiscoR;
|
|
int discoG = Main.DiscoG;
|
|
int discoB = Main.DiscoB;
|
|
return new Color();
|
|
}
|
|
int r;
|
|
int g;
|
|
int b;
|
|
if (this.type == 9 || this.type == 15 || this.type == 34 || this.type == 50 || this.type == 53 || this.type == 76 || this.type == 77 || this.type == 78 || this.type == 92 || this.type == 91)
|
|
{
|
|
r = (int) newColor.R - this.alpha / 3;
|
|
g = (int) newColor.G - this.alpha / 3;
|
|
b = (int) newColor.B - this.alpha / 3;
|
|
}
|
|
else if (this.type == 16 || this.type == 18 || this.type == 44 || this.type == 45)
|
|
{
|
|
r = (int) newColor.R;
|
|
g = (int) newColor.G;
|
|
b = (int) newColor.B;
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 12 || this.type == 72 || this.type == 86 || this.type == 87)
|
|
return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) newColor.A - this.alpha);
|
|
r = (int) newColor.R - this.alpha;
|
|
g = (int) newColor.G - this.alpha;
|
|
b = (int) newColor.B - this.alpha;
|
|
}
|
|
int a = (int) newColor.A - this.alpha;
|
|
if (a < 0)
|
|
a = 0;
|
|
if (a > (int) byte.MaxValue)
|
|
a = (int) byte.MaxValue;
|
|
return new Color(r, g, b, a);
|
|
}
|
|
}
|
|
}
|