16603 lines
632 KiB
C#
16603 lines
632 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Terraria.NPC
|
|
// 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 NPC
|
|
{
|
|
public const int maxBuffs = 5;
|
|
public static int immuneTime = 20;
|
|
public static int maxAI = 4;
|
|
public int netSpam;
|
|
private static int spawnSpaceX = 3;
|
|
private static int spawnSpaceY = 3;
|
|
private static int maxAttack = 20;
|
|
private static int[] attackNPC = new int[NPC.maxAttack];
|
|
public Vector2[] oldPos = new Vector2[10];
|
|
public int netSkip;
|
|
public bool netAlways;
|
|
public int realLife = -1;
|
|
public static int sWidth = 1920;
|
|
public static int sHeight = 1080;
|
|
private static int spawnRangeX = (int) ((double) (NPC.sWidth / 16) * 0.7);
|
|
private static int spawnRangeY = (int) ((double) (NPC.sHeight / 16) * 0.7);
|
|
public static int safeRangeX = (int) ((double) (NPC.sWidth / 16) * 0.52);
|
|
public static int safeRangeY = (int) ((double) (NPC.sHeight / 16) * 0.52);
|
|
private static int activeRangeX = (int) ((double) NPC.sWidth * 1.7);
|
|
private static int activeRangeY = (int) ((double) NPC.sHeight * 1.7);
|
|
private static int townRangeX = NPC.sWidth;
|
|
private static int townRangeY = NPC.sHeight;
|
|
public float npcSlots = 1f;
|
|
private static bool noSpawnCycle = false;
|
|
private static int activeTime = 750;
|
|
private static int defaultSpawnRate = 600;
|
|
private static int defaultMaxSpawns = 5;
|
|
public bool wet;
|
|
public byte wetCount;
|
|
public bool lavaWet;
|
|
public int[] buffType = new int[5];
|
|
public int[] buffTime = new int[5];
|
|
public bool[] buffImmune = new bool[41];
|
|
public bool onFire;
|
|
public bool onFire2;
|
|
public bool poisoned;
|
|
public int lifeRegen;
|
|
public int lifeRegenCount;
|
|
public bool confused;
|
|
public static bool downedBoss1 = false;
|
|
public static bool downedBoss2 = false;
|
|
public static bool downedBoss3 = false;
|
|
public static bool savedGoblin = false;
|
|
public static bool savedWizard = false;
|
|
public static bool savedMech = false;
|
|
public static bool downedGoblins = false;
|
|
public static bool downedFrost = false;
|
|
public static bool downedClown = false;
|
|
private static int spawnRate = NPC.defaultSpawnRate;
|
|
private static int maxSpawns = NPC.defaultMaxSpawns;
|
|
public int soundDelay;
|
|
public Vector2 position;
|
|
public Vector2 velocity;
|
|
public Vector2 oldPosition;
|
|
public Vector2 oldVelocity;
|
|
public int width;
|
|
public int height;
|
|
public bool active;
|
|
public int[] immune = new int[256];
|
|
public int direction = 1;
|
|
public int directionY = 1;
|
|
public int type;
|
|
public float[] ai = new float[NPC.maxAI];
|
|
public float[] localAI = new float[NPC.maxAI];
|
|
public int aiAction;
|
|
public int aiStyle;
|
|
public bool justHit;
|
|
public int timeLeft;
|
|
public int target = -1;
|
|
public int damage;
|
|
public int defense;
|
|
public int defDamage;
|
|
public int defDefense;
|
|
public int soundHit;
|
|
public int soundKilled;
|
|
public int life;
|
|
public int lifeMax;
|
|
public Rectangle targetRect;
|
|
public double frameCounter;
|
|
public Rectangle frame;
|
|
public string name;
|
|
public string displayName;
|
|
public Color color;
|
|
public int alpha;
|
|
public float scale = 1f;
|
|
public float knockBackResist = 1f;
|
|
public int oldDirection;
|
|
public int oldDirectionY;
|
|
public int oldTarget;
|
|
public int whoAmI;
|
|
public float rotation;
|
|
public bool noGravity;
|
|
public bool noTileCollide;
|
|
public bool netUpdate;
|
|
public bool netUpdate2;
|
|
public bool collideX;
|
|
public bool collideY;
|
|
public bool boss;
|
|
public int spriteDirection = -1;
|
|
public bool behindTiles;
|
|
public bool lavaImmune;
|
|
public float value;
|
|
public bool dontTakeDamage;
|
|
public int netID;
|
|
public bool townNPC;
|
|
public bool homeless;
|
|
public int homeTileX = -1;
|
|
public int homeTileY = -1;
|
|
public bool oldHomeless;
|
|
public int oldHomeTileX = -1;
|
|
public int oldHomeTileY = -1;
|
|
public bool friendly;
|
|
public bool closeDoor;
|
|
public int doorX;
|
|
public int doorY;
|
|
public int friendlyRegen;
|
|
|
|
public static void clrNames()
|
|
{
|
|
for (int index = 0; index < 147; ++index)
|
|
Main.chrName[index] = "";
|
|
}
|
|
|
|
public static void setNames()
|
|
{
|
|
if (WorldGen.genRand == null)
|
|
WorldGen.genRand = new Random();
|
|
int num1 = WorldGen.genRand.Next(23);
|
|
string str1 = "";
|
|
string str2;
|
|
switch (num1)
|
|
{
|
|
case 0:
|
|
str2 = "Molly";
|
|
break;
|
|
case 1:
|
|
str2 = "Amy";
|
|
break;
|
|
case 2:
|
|
str2 = "Claire";
|
|
break;
|
|
case 3:
|
|
str2 = "Emily";
|
|
break;
|
|
case 4:
|
|
str2 = "Katie";
|
|
break;
|
|
case 5:
|
|
str2 = "Madeline";
|
|
break;
|
|
case 6:
|
|
str2 = "Katelyn";
|
|
break;
|
|
case 7:
|
|
str2 = "Emma";
|
|
break;
|
|
case 8:
|
|
str2 = "Abigail";
|
|
break;
|
|
case 9:
|
|
str2 = "Carly";
|
|
break;
|
|
case 10:
|
|
str2 = "Jenna";
|
|
break;
|
|
case 11:
|
|
str2 = "Heather";
|
|
break;
|
|
case 12:
|
|
str2 = "Katherine";
|
|
break;
|
|
case 13:
|
|
str2 = "Caitlin";
|
|
break;
|
|
case 14:
|
|
str2 = "Kaitlin";
|
|
break;
|
|
case 15:
|
|
str2 = "Holly";
|
|
break;
|
|
case 16:
|
|
str2 = "Kaitlyn";
|
|
break;
|
|
case 17:
|
|
str2 = "Hannah";
|
|
break;
|
|
case 18:
|
|
str2 = "Kathryn";
|
|
break;
|
|
case 19:
|
|
str2 = "Lorraine";
|
|
break;
|
|
case 20:
|
|
str2 = "Helen";
|
|
break;
|
|
case 21:
|
|
str2 = "Kayla";
|
|
break;
|
|
default:
|
|
str2 = "Allison";
|
|
break;
|
|
}
|
|
if (Main.chrName[18] == "")
|
|
Main.chrName[18] = str2;
|
|
int num2 = WorldGen.genRand.Next(24);
|
|
str1 = "";
|
|
string str3;
|
|
switch (num2)
|
|
{
|
|
case 0:
|
|
str3 = "Shayna";
|
|
break;
|
|
case 1:
|
|
str3 = "Korrie";
|
|
break;
|
|
case 2:
|
|
str3 = "Ginger";
|
|
break;
|
|
case 3:
|
|
str3 = "Brooke";
|
|
break;
|
|
case 4:
|
|
str3 = "Jenny";
|
|
break;
|
|
case 5:
|
|
str3 = "Autumn";
|
|
break;
|
|
case 6:
|
|
str3 = "Nancy";
|
|
break;
|
|
case 7:
|
|
str3 = "Ella";
|
|
break;
|
|
case 8:
|
|
str3 = "Kayla";
|
|
break;
|
|
case 9:
|
|
str3 = "Beth";
|
|
break;
|
|
case 10:
|
|
str3 = "Sophia";
|
|
break;
|
|
case 11:
|
|
str3 = "Marshanna";
|
|
break;
|
|
case 12:
|
|
str3 = "Lauren";
|
|
break;
|
|
case 13:
|
|
str3 = "Trisha";
|
|
break;
|
|
case 14:
|
|
str3 = "Shirlena";
|
|
break;
|
|
case 15:
|
|
str3 = "Sheena";
|
|
break;
|
|
case 16:
|
|
str3 = "Ellen";
|
|
break;
|
|
case 17:
|
|
str3 = "Amy";
|
|
break;
|
|
case 18:
|
|
str3 = "Dawn";
|
|
break;
|
|
case 19:
|
|
str3 = "Susana";
|
|
break;
|
|
case 20:
|
|
str3 = "Meredith";
|
|
break;
|
|
case 21:
|
|
str3 = "Selene";
|
|
break;
|
|
case 22:
|
|
str3 = "Terra";
|
|
break;
|
|
default:
|
|
str3 = "Sally";
|
|
break;
|
|
}
|
|
if (Main.chrName[124] == "")
|
|
Main.chrName[124] = str3;
|
|
int num3 = WorldGen.genRand.Next(23);
|
|
str1 = "";
|
|
string str4;
|
|
switch (num3)
|
|
{
|
|
case 0:
|
|
str4 = "DeShawn";
|
|
break;
|
|
case 1:
|
|
str4 = "DeAndre";
|
|
break;
|
|
case 2:
|
|
str4 = "Marquis";
|
|
break;
|
|
case 3:
|
|
str4 = "Darnell";
|
|
break;
|
|
case 4:
|
|
str4 = "Terrell";
|
|
break;
|
|
case 5:
|
|
str4 = "Malik";
|
|
break;
|
|
case 6:
|
|
str4 = "Trevon";
|
|
break;
|
|
case 7:
|
|
str4 = "Tyrone";
|
|
break;
|
|
case 8:
|
|
str4 = "Willie";
|
|
break;
|
|
case 9:
|
|
str4 = "Dominique";
|
|
break;
|
|
case 10:
|
|
str4 = "Demetrius";
|
|
break;
|
|
case 11:
|
|
str4 = "Reginald";
|
|
break;
|
|
case 12:
|
|
str4 = "Jamal";
|
|
break;
|
|
case 13:
|
|
str4 = "Maurice";
|
|
break;
|
|
case 14:
|
|
str4 = "Jalen";
|
|
break;
|
|
case 15:
|
|
str4 = "Darius";
|
|
break;
|
|
case 16:
|
|
str4 = "Xavier";
|
|
break;
|
|
case 17:
|
|
str4 = "Terrance";
|
|
break;
|
|
case 18:
|
|
str4 = "Andre";
|
|
break;
|
|
case 19:
|
|
str4 = "Dante";
|
|
break;
|
|
case 20:
|
|
str4 = "Brimst";
|
|
break;
|
|
case 21:
|
|
str4 = "Bronson";
|
|
break;
|
|
default:
|
|
str4 = "Darryl";
|
|
break;
|
|
}
|
|
if (Main.chrName[19] == "")
|
|
Main.chrName[19] = str4;
|
|
int num4 = WorldGen.genRand.Next(35);
|
|
str1 = "";
|
|
string str5;
|
|
switch (num4)
|
|
{
|
|
case 0:
|
|
str5 = "Jake";
|
|
break;
|
|
case 1:
|
|
str5 = "Connor";
|
|
break;
|
|
case 2:
|
|
str5 = "Tanner";
|
|
break;
|
|
case 3:
|
|
str5 = "Wyatt";
|
|
break;
|
|
case 4:
|
|
str5 = "Cody";
|
|
break;
|
|
case 5:
|
|
str5 = "Dustin";
|
|
break;
|
|
case 6:
|
|
str5 = "Luke";
|
|
break;
|
|
case 7:
|
|
str5 = "Jack";
|
|
break;
|
|
case 8:
|
|
str5 = "Scott";
|
|
break;
|
|
case 9:
|
|
str5 = "Logan";
|
|
break;
|
|
case 10:
|
|
str5 = "Cole";
|
|
break;
|
|
case 11:
|
|
str5 = "Lucas";
|
|
break;
|
|
case 12:
|
|
str5 = "Bradley";
|
|
break;
|
|
case 13:
|
|
str5 = "Jacob";
|
|
break;
|
|
case 14:
|
|
str5 = "Garrett";
|
|
break;
|
|
case 15:
|
|
str5 = "Dylan";
|
|
break;
|
|
case 16:
|
|
str5 = "Maxwell";
|
|
break;
|
|
case 17:
|
|
str5 = "Steve";
|
|
break;
|
|
case 18:
|
|
str5 = "Brett";
|
|
break;
|
|
case 19:
|
|
str5 = "Andrew";
|
|
break;
|
|
case 20:
|
|
str5 = "Harley";
|
|
break;
|
|
case 21:
|
|
str5 = "Kyle";
|
|
break;
|
|
case 22:
|
|
str5 = "Jake";
|
|
break;
|
|
case 23:
|
|
str5 = "Ryan";
|
|
break;
|
|
case 24:
|
|
str5 = "Jeffrey";
|
|
break;
|
|
case 25:
|
|
str5 = "Seth";
|
|
break;
|
|
case 26:
|
|
str5 = "Marty";
|
|
break;
|
|
case 27:
|
|
str5 = "Brandon";
|
|
break;
|
|
case 28:
|
|
str5 = "Zach";
|
|
break;
|
|
case 29:
|
|
str5 = "Jeff";
|
|
break;
|
|
case 30:
|
|
str5 = "Daniel";
|
|
break;
|
|
case 31:
|
|
str5 = "Trent";
|
|
break;
|
|
case 32:
|
|
str5 = "Kevin";
|
|
break;
|
|
case 33:
|
|
str5 = "Brian";
|
|
break;
|
|
default:
|
|
str5 = "Colin";
|
|
break;
|
|
}
|
|
if (Main.chrName[22] == "")
|
|
Main.chrName[22] = str5;
|
|
int num5 = WorldGen.genRand.Next(22);
|
|
str1 = "";
|
|
string str6;
|
|
switch (num5)
|
|
{
|
|
case 0:
|
|
str6 = "Alalia";
|
|
break;
|
|
case 1:
|
|
str6 = "Alalia";
|
|
break;
|
|
case 2:
|
|
str6 = "Alura";
|
|
break;
|
|
case 3:
|
|
str6 = "Ariella";
|
|
break;
|
|
case 4:
|
|
str6 = "Caelia";
|
|
break;
|
|
case 5:
|
|
str6 = "Calista";
|
|
break;
|
|
case 6:
|
|
str6 = "Chryseis";
|
|
break;
|
|
case 7:
|
|
str6 = "Emerenta";
|
|
break;
|
|
case 8:
|
|
str6 = "Elysia";
|
|
break;
|
|
case 9:
|
|
str6 = "Evvie";
|
|
break;
|
|
case 10:
|
|
str6 = "Faye";
|
|
break;
|
|
case 11:
|
|
str6 = "Felicitae";
|
|
break;
|
|
case 12:
|
|
str6 = "Lunette";
|
|
break;
|
|
case 13:
|
|
str6 = "Nata";
|
|
break;
|
|
case 14:
|
|
str6 = "Nissa";
|
|
break;
|
|
case 15:
|
|
str6 = "Tatiana";
|
|
break;
|
|
case 16:
|
|
str6 = "Rosalva";
|
|
break;
|
|
case 17:
|
|
str6 = "Shea";
|
|
break;
|
|
case 18:
|
|
str6 = "Tania";
|
|
break;
|
|
case 19:
|
|
str6 = "Isis";
|
|
break;
|
|
case 20:
|
|
str6 = "Celestia";
|
|
break;
|
|
default:
|
|
str6 = "Xylia";
|
|
break;
|
|
}
|
|
if (Main.chrName[20] == "")
|
|
Main.chrName[20] = str6;
|
|
int num6 = WorldGen.genRand.Next(22);
|
|
str1 = "";
|
|
string str7;
|
|
switch (num6)
|
|
{
|
|
case 0:
|
|
str7 = "Dolbere";
|
|
break;
|
|
case 1:
|
|
str7 = "Bazdin";
|
|
break;
|
|
case 2:
|
|
str7 = "Durim";
|
|
break;
|
|
case 3:
|
|
str7 = "Tordak";
|
|
break;
|
|
case 4:
|
|
str7 = "Garval";
|
|
break;
|
|
case 5:
|
|
str7 = "Morthal";
|
|
break;
|
|
case 6:
|
|
str7 = "Oten";
|
|
break;
|
|
case 7:
|
|
str7 = "Dolgen";
|
|
break;
|
|
case 8:
|
|
str7 = "Gimli";
|
|
break;
|
|
case 9:
|
|
str7 = "Gimut";
|
|
break;
|
|
case 10:
|
|
str7 = "Duerthen";
|
|
break;
|
|
case 11:
|
|
str7 = "Beldin";
|
|
break;
|
|
case 12:
|
|
str7 = "Jarut";
|
|
break;
|
|
case 13:
|
|
str7 = "Ovbere";
|
|
break;
|
|
case 14:
|
|
str7 = "Norkas";
|
|
break;
|
|
case 15:
|
|
str7 = "Dolgrim";
|
|
break;
|
|
case 16:
|
|
str7 = "Boften";
|
|
break;
|
|
case 17:
|
|
str7 = "Norsun";
|
|
break;
|
|
case 18:
|
|
str7 = "Dias";
|
|
break;
|
|
case 19:
|
|
str7 = "Fikod";
|
|
break;
|
|
case 20:
|
|
str7 = "Urist";
|
|
break;
|
|
default:
|
|
str7 = "Darur";
|
|
break;
|
|
}
|
|
if (Main.chrName[38] == "")
|
|
Main.chrName[38] = str7;
|
|
int num7 = WorldGen.genRand.Next(21);
|
|
str1 = "";
|
|
string str8;
|
|
switch (num7)
|
|
{
|
|
case 0:
|
|
str8 = "Dalamar";
|
|
break;
|
|
case 1:
|
|
str8 = "Dulais";
|
|
break;
|
|
case 2:
|
|
str8 = "Elric";
|
|
break;
|
|
case 3:
|
|
str8 = "Arddun";
|
|
break;
|
|
case 4:
|
|
str8 = "Maelor";
|
|
break;
|
|
case 5:
|
|
str8 = "Leomund";
|
|
break;
|
|
case 6:
|
|
str8 = "Hirael";
|
|
break;
|
|
case 7:
|
|
str8 = "Gwentor";
|
|
break;
|
|
case 8:
|
|
str8 = "Greum";
|
|
break;
|
|
case 9:
|
|
str8 = "Gearroid";
|
|
break;
|
|
case 10:
|
|
str8 = "Fizban";
|
|
break;
|
|
case 11:
|
|
str8 = "Ningauble";
|
|
break;
|
|
case 12:
|
|
str8 = "Seonag";
|
|
break;
|
|
case 13:
|
|
str8 = "Sargon";
|
|
break;
|
|
case 14:
|
|
str8 = "Merlyn";
|
|
break;
|
|
case 15:
|
|
str8 = "Magius";
|
|
break;
|
|
case 16:
|
|
str8 = "Berwyn";
|
|
break;
|
|
case 17:
|
|
str8 = "Arwyn";
|
|
break;
|
|
case 18:
|
|
str8 = "Alasdair";
|
|
break;
|
|
case 19:
|
|
str8 = "Tagar";
|
|
break;
|
|
default:
|
|
str8 = "Xanadu";
|
|
break;
|
|
}
|
|
if (Main.chrName[108] == "")
|
|
Main.chrName[108] = str8;
|
|
int num8 = WorldGen.genRand.Next(23);
|
|
str1 = "";
|
|
string str9;
|
|
switch (num8)
|
|
{
|
|
case 0:
|
|
str9 = "Alfred";
|
|
break;
|
|
case 1:
|
|
str9 = "Barney";
|
|
break;
|
|
case 2:
|
|
str9 = "Calvin";
|
|
break;
|
|
case 3:
|
|
str9 = "Edmund";
|
|
break;
|
|
case 4:
|
|
str9 = "Edwin";
|
|
break;
|
|
case 5:
|
|
str9 = "Eugene";
|
|
break;
|
|
case 6:
|
|
str9 = "Frank";
|
|
break;
|
|
case 7:
|
|
str9 = "Frederick";
|
|
break;
|
|
case 8:
|
|
str9 = "Gilbert";
|
|
break;
|
|
case 9:
|
|
str9 = "Gus";
|
|
break;
|
|
case 10:
|
|
str9 = "Wilbur";
|
|
break;
|
|
case 11:
|
|
str9 = "Seymour";
|
|
break;
|
|
case 12:
|
|
str9 = "Louis";
|
|
break;
|
|
case 13:
|
|
str9 = "Humphrey";
|
|
break;
|
|
case 14:
|
|
str9 = "Harold";
|
|
break;
|
|
case 15:
|
|
str9 = "Milton";
|
|
break;
|
|
case 16:
|
|
str9 = "Mortimer";
|
|
break;
|
|
case 17:
|
|
str9 = "Howard";
|
|
break;
|
|
case 18:
|
|
str9 = "Walter";
|
|
break;
|
|
case 19:
|
|
str9 = "Finn";
|
|
break;
|
|
case 20:
|
|
str9 = "Isacc";
|
|
break;
|
|
case 21:
|
|
str9 = "Joseph";
|
|
break;
|
|
default:
|
|
str9 = "Ralph";
|
|
break;
|
|
}
|
|
if (Main.chrName[17] == "")
|
|
Main.chrName[17] = str9;
|
|
int num9 = WorldGen.genRand.Next(24);
|
|
str1 = "";
|
|
string str10;
|
|
switch (num9)
|
|
{
|
|
case 0:
|
|
str10 = "Sebastian";
|
|
break;
|
|
case 1:
|
|
str10 = "Rupert";
|
|
break;
|
|
case 2:
|
|
str10 = "Clive";
|
|
break;
|
|
case 3:
|
|
str10 = "Nigel";
|
|
break;
|
|
case 4:
|
|
str10 = "Mervyn";
|
|
break;
|
|
case 5:
|
|
str10 = "Cedric";
|
|
break;
|
|
case 6:
|
|
str10 = "Pip";
|
|
break;
|
|
case 7:
|
|
str10 = "Cyril";
|
|
break;
|
|
case 8:
|
|
str10 = "Fitz";
|
|
break;
|
|
case 9:
|
|
str10 = "Lloyd";
|
|
break;
|
|
case 10:
|
|
str10 = "Arthur";
|
|
break;
|
|
case 11:
|
|
str10 = "Rodney";
|
|
break;
|
|
case 12:
|
|
str10 = "Graham";
|
|
break;
|
|
case 13:
|
|
str10 = "Edward";
|
|
break;
|
|
case 14:
|
|
str10 = "Alfred";
|
|
break;
|
|
case 15:
|
|
str10 = "Edmund";
|
|
break;
|
|
case 16:
|
|
str10 = "Henry";
|
|
break;
|
|
case 17:
|
|
str10 = "Herald";
|
|
break;
|
|
case 18:
|
|
str10 = "Roland";
|
|
break;
|
|
case 19:
|
|
str10 = "Lincoln";
|
|
break;
|
|
case 20:
|
|
str10 = "Lloyd";
|
|
break;
|
|
case 21:
|
|
str10 = "Edgar";
|
|
break;
|
|
case 22:
|
|
str10 = "Eustace";
|
|
break;
|
|
default:
|
|
str10 = "Rodrick";
|
|
break;
|
|
}
|
|
if (Main.chrName[54] == "")
|
|
Main.chrName[54] = str10;
|
|
int num10 = WorldGen.genRand.Next(25);
|
|
str1 = "";
|
|
string str11;
|
|
switch (num10)
|
|
{
|
|
case 0:
|
|
str11 = "Grodax";
|
|
break;
|
|
case 1:
|
|
str11 = "Sarx";
|
|
break;
|
|
case 2:
|
|
str11 = "Xon";
|
|
break;
|
|
case 3:
|
|
str11 = "Mrunok";
|
|
break;
|
|
case 4:
|
|
str11 = "Nuxatk";
|
|
break;
|
|
case 5:
|
|
str11 = "Tgerd";
|
|
break;
|
|
case 6:
|
|
str11 = "Darz";
|
|
break;
|
|
case 7:
|
|
str11 = "Smador";
|
|
break;
|
|
case 8:
|
|
str11 = "Stazen";
|
|
break;
|
|
case 9:
|
|
str11 = "Mobart";
|
|
break;
|
|
case 10:
|
|
str11 = "Knogs";
|
|
break;
|
|
case 11:
|
|
str11 = "Tkanus";
|
|
break;
|
|
case 12:
|
|
str11 = "Negurk";
|
|
break;
|
|
case 13:
|
|
str11 = "Nort";
|
|
break;
|
|
case 14:
|
|
str11 = "Durnok";
|
|
break;
|
|
case 15:
|
|
str11 = "Trogem";
|
|
break;
|
|
case 16:
|
|
str11 = "Stezom";
|
|
break;
|
|
case 17:
|
|
str11 = "Gnudar";
|
|
break;
|
|
case 18:
|
|
str11 = "Ragz";
|
|
break;
|
|
case 19:
|
|
str11 = "Fahd";
|
|
break;
|
|
case 20:
|
|
str11 = "Xanos";
|
|
break;
|
|
case 21:
|
|
str11 = "Arback";
|
|
break;
|
|
case 22:
|
|
str11 = "Fjell";
|
|
break;
|
|
case 23:
|
|
str11 = "Dalek";
|
|
break;
|
|
default:
|
|
str11 = "Knub";
|
|
break;
|
|
}
|
|
if (!(Main.chrName[107] == ""))
|
|
return;
|
|
Main.chrName[107] = str11;
|
|
}
|
|
|
|
public void netDefaults(int type)
|
|
{
|
|
if (type < 0)
|
|
{
|
|
switch (type)
|
|
{
|
|
case -17:
|
|
this.SetDefaults("Big Stinger");
|
|
break;
|
|
case -16:
|
|
this.SetDefaults("Little Stinger");
|
|
break;
|
|
case -15:
|
|
this.SetDefaults("Heavy Skeleton");
|
|
break;
|
|
case -14:
|
|
this.SetDefaults("Big Boned");
|
|
break;
|
|
case -13:
|
|
this.SetDefaults("Short Bones");
|
|
break;
|
|
case -12:
|
|
this.SetDefaults("Big Eater");
|
|
break;
|
|
case -11:
|
|
this.SetDefaults("Little Eater");
|
|
break;
|
|
case -10:
|
|
this.SetDefaults("Jungle Slime");
|
|
break;
|
|
case -9:
|
|
this.SetDefaults("Yellow Slime");
|
|
break;
|
|
case -8:
|
|
this.SetDefaults("Red Slime");
|
|
break;
|
|
case -7:
|
|
this.SetDefaults("Purple Slime");
|
|
break;
|
|
case -6:
|
|
this.SetDefaults("Black Slime");
|
|
break;
|
|
case -5:
|
|
this.SetDefaults("Baby Slime");
|
|
break;
|
|
case -4:
|
|
this.SetDefaults("Pinky");
|
|
break;
|
|
case -3:
|
|
this.SetDefaults("Green Slime");
|
|
break;
|
|
case -2:
|
|
this.SetDefaults("Slimer2");
|
|
break;
|
|
case -1:
|
|
this.SetDefaults("Slimeling");
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
this.SetDefaults(type);
|
|
}
|
|
|
|
public void SetDefaults(string Name)
|
|
{
|
|
this.SetDefaults(0);
|
|
if (Name == "Slimeling")
|
|
{
|
|
this.SetDefaults(81, 0.6f);
|
|
this.name = Name;
|
|
this.damage = 45;
|
|
this.defense = 10;
|
|
this.life = 90;
|
|
this.knockBackResist = 1.2f;
|
|
this.value = 100f;
|
|
this.netID = -1;
|
|
}
|
|
else if (Name == "Slimer2")
|
|
{
|
|
this.SetDefaults(81, 0.9f);
|
|
this.displayName = "Slimer";
|
|
this.name = Name;
|
|
this.damage = 45;
|
|
this.defense = 20;
|
|
this.life = 90;
|
|
this.knockBackResist = 1.2f;
|
|
this.value = 100f;
|
|
this.netID = -2;
|
|
}
|
|
else if (Name == "Green Slime")
|
|
{
|
|
this.SetDefaults(1, 0.9f);
|
|
this.name = Name;
|
|
this.damage = 6;
|
|
this.defense = 0;
|
|
this.life = 14;
|
|
this.knockBackResist = 1.2f;
|
|
this.color = new Color(0, 220, 40, 100);
|
|
this.value = 3f;
|
|
this.netID = -3;
|
|
}
|
|
else if (Name == "Pinky")
|
|
{
|
|
this.SetDefaults(1, 0.6f);
|
|
this.name = Name;
|
|
this.damage = 5;
|
|
this.defense = 5;
|
|
this.life = 150;
|
|
this.knockBackResist = 1.4f;
|
|
this.color = new Color(250, 30, 90, 90);
|
|
this.value = 10000f;
|
|
this.netID = -4;
|
|
}
|
|
else if (Name == "Baby Slime")
|
|
{
|
|
this.SetDefaults(1, 0.9f);
|
|
this.name = Name;
|
|
this.damage = 13;
|
|
this.defense = 4;
|
|
this.life = 30;
|
|
this.knockBackResist = 0.95f;
|
|
this.alpha = 120;
|
|
this.color = new Color(0, 0, 0, 50);
|
|
this.value = 10f;
|
|
this.netID = -5;
|
|
}
|
|
else if (Name == "Black Slime")
|
|
{
|
|
this.SetDefaults(1);
|
|
this.name = Name;
|
|
this.damage = 15;
|
|
this.defense = 4;
|
|
this.life = 45;
|
|
this.color = new Color(0, 0, 0, 50);
|
|
this.value = 20f;
|
|
this.netID = -6;
|
|
}
|
|
else if (Name == "Purple Slime")
|
|
{
|
|
this.SetDefaults(1, 1.2f);
|
|
this.name = Name;
|
|
this.damage = 12;
|
|
this.defense = 6;
|
|
this.life = 40;
|
|
this.knockBackResist = 0.9f;
|
|
this.color = new Color(200, 0, (int) byte.MaxValue, 150);
|
|
this.value = 10f;
|
|
this.netID = -7;
|
|
}
|
|
else if (Name == "Red Slime")
|
|
{
|
|
this.SetDefaults(1);
|
|
this.name = Name;
|
|
this.damage = 12;
|
|
this.defense = 4;
|
|
this.life = 35;
|
|
this.color = new Color((int) byte.MaxValue, 30, 0, 100);
|
|
this.value = 8f;
|
|
this.netID = -8;
|
|
}
|
|
else if (Name == "Yellow Slime")
|
|
{
|
|
this.SetDefaults(1, 1.2f);
|
|
this.name = Name;
|
|
this.damage = 15;
|
|
this.defense = 7;
|
|
this.life = 45;
|
|
this.color = new Color((int) byte.MaxValue, (int) byte.MaxValue, 0, 100);
|
|
this.value = 10f;
|
|
this.netID = -9;
|
|
}
|
|
else if (Name == "Jungle Slime")
|
|
{
|
|
this.SetDefaults(1, 1.1f);
|
|
this.name = Name;
|
|
this.damage = 18;
|
|
this.defense = 6;
|
|
this.life = 60;
|
|
this.color = new Color(143, 215, 93, 100);
|
|
this.value = 500f;
|
|
this.netID = -10;
|
|
}
|
|
else if (Name == "Little Eater")
|
|
{
|
|
this.SetDefaults(6, 0.85f);
|
|
this.name = Name;
|
|
this.defense = (int) ((double) this.defense * (double) this.scale);
|
|
this.damage = (int) ((double) this.damage * (double) this.scale);
|
|
this.life = (int) ((double) this.life * (double) this.scale);
|
|
this.value = (float) (int) ((double) this.value * (double) this.scale);
|
|
this.npcSlots *= this.scale;
|
|
this.knockBackResist *= 2f - this.scale;
|
|
this.netID = -11;
|
|
}
|
|
else if (Name == "Big Eater")
|
|
{
|
|
this.SetDefaults(6, 1.15f);
|
|
this.name = Name;
|
|
this.defense = (int) ((double) this.defense * (double) this.scale);
|
|
this.damage = (int) ((double) this.damage * (double) this.scale);
|
|
this.life = (int) ((double) this.life * (double) this.scale);
|
|
this.value = (float) (int) ((double) this.value * (double) this.scale);
|
|
this.npcSlots *= this.scale;
|
|
this.knockBackResist *= 2f - this.scale;
|
|
this.netID = -12;
|
|
}
|
|
else if (Name == "Short Bones")
|
|
{
|
|
this.SetDefaults(31, 0.9f);
|
|
this.name = Name;
|
|
this.defense = (int) ((double) this.defense * (double) this.scale);
|
|
this.damage = (int) ((double) this.damage * (double) this.scale);
|
|
this.life = (int) ((double) this.life * (double) this.scale);
|
|
this.value = (float) (int) ((double) this.value * (double) this.scale);
|
|
this.netID = -13;
|
|
}
|
|
else if (Name == "Big Boned")
|
|
{
|
|
this.SetDefaults(31, 1.15f);
|
|
this.name = Name;
|
|
this.defense = (int) ((double) this.defense * (double) this.scale);
|
|
this.damage = (int) ((double) this.damage * (double) this.scale * 1.1);
|
|
this.life = (int) ((double) this.life * (double) this.scale * 1.1);
|
|
this.value = (float) (int) ((double) this.value * (double) this.scale);
|
|
this.npcSlots = 2f;
|
|
this.knockBackResist *= 2f - this.scale;
|
|
this.netID = -14;
|
|
}
|
|
else if (Name == "Heavy Skeleton")
|
|
{
|
|
this.SetDefaults(77, 1.15f);
|
|
this.name = Name;
|
|
this.defense = (int) ((double) this.defense * (double) this.scale);
|
|
this.damage = (int) ((double) this.damage * (double) this.scale * 1.1);
|
|
this.life = 400;
|
|
this.value = (float) (int) ((double) this.value * (double) this.scale);
|
|
this.npcSlots = 2f;
|
|
this.knockBackResist *= 2f - this.scale;
|
|
this.height = 44;
|
|
this.netID = -15;
|
|
}
|
|
else if (Name == "Little Stinger")
|
|
{
|
|
this.SetDefaults(42, 0.85f);
|
|
this.name = Name;
|
|
this.defense = (int) ((double) this.defense * (double) this.scale);
|
|
this.damage = (int) ((double) this.damage * (double) this.scale);
|
|
this.life = (int) ((double) this.life * (double) this.scale);
|
|
this.value = (float) (int) ((double) this.value * (double) this.scale);
|
|
this.npcSlots *= this.scale;
|
|
this.knockBackResist *= 2f - this.scale;
|
|
this.netID = -16;
|
|
}
|
|
else if (Name == "Big Stinger")
|
|
{
|
|
this.SetDefaults(42, 1.2f);
|
|
this.name = Name;
|
|
this.defense = (int) ((double) this.defense * (double) this.scale);
|
|
this.damage = (int) ((double) this.damage * (double) this.scale);
|
|
this.life = (int) ((double) this.life * (double) this.scale);
|
|
this.value = (float) (int) ((double) this.value * (double) this.scale);
|
|
this.npcSlots *= this.scale;
|
|
this.knockBackResist *= 2f - this.scale;
|
|
this.netID = -17;
|
|
}
|
|
else if (Name != "")
|
|
{
|
|
for (int Type = 1; Type < 147; ++Type)
|
|
{
|
|
if (Main.npcName[Type] == Name)
|
|
{
|
|
this.SetDefaults(Type);
|
|
return;
|
|
}
|
|
}
|
|
this.SetDefaults(0);
|
|
this.active = false;
|
|
}
|
|
else
|
|
this.active = false;
|
|
this.displayName = Lang.npcName(this.netID);
|
|
this.lifeMax = this.life;
|
|
this.defDamage = this.damage;
|
|
this.defDefense = this.defense;
|
|
}
|
|
|
|
public static bool MechSpawn(float x, float y, int type)
|
|
{
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == type)
|
|
{
|
|
++num1;
|
|
Vector2 vector2 = new Vector2(x, y);
|
|
float num4 = Main.npc[index].position.X - vector2.X;
|
|
float num5 = Main.npc[index].position.Y - vector2.Y;
|
|
float num6 = (float) Math.Sqrt((double) num4 * (double) num4 + (double) num5 * (double) num5);
|
|
if ((double) num6 < 200.0)
|
|
++num2;
|
|
if ((double) num6 < 600.0)
|
|
++num3;
|
|
}
|
|
}
|
|
return num2 < 3 && num3 < 6 && num1 < 10;
|
|
}
|
|
|
|
public static int TypeToNum(int type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case 17:
|
|
return 2;
|
|
case 18:
|
|
return 3;
|
|
case 19:
|
|
return 6;
|
|
case 20:
|
|
return 5;
|
|
case 22:
|
|
return 1;
|
|
case 38:
|
|
return 4;
|
|
case 54:
|
|
return 7;
|
|
case 107:
|
|
return 9;
|
|
case 108:
|
|
return 10;
|
|
case 124:
|
|
return 8;
|
|
case 142:
|
|
return 11;
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
public static int NumToType(int type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case 1:
|
|
return 22;
|
|
case 2:
|
|
return 17;
|
|
case 3:
|
|
return 18;
|
|
case 4:
|
|
return 38;
|
|
case 5:
|
|
return 20;
|
|
case 6:
|
|
return 19;
|
|
case 7:
|
|
return 54;
|
|
case 8:
|
|
return 124;
|
|
case 9:
|
|
return 107;
|
|
case 10:
|
|
return 108;
|
|
case 11:
|
|
return 142;
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
public void SetDefaults(int Type, float scaleOverride = -1f)
|
|
{
|
|
this.netID = 0;
|
|
this.netAlways = false;
|
|
this.netSpam = 0;
|
|
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 < 5; ++index)
|
|
{
|
|
this.buffTime[index] = 0;
|
|
this.buffType[index] = 0;
|
|
}
|
|
for (int index = 0; index < 41; ++index)
|
|
this.buffImmune[index] = false;
|
|
this.buffImmune[31] = true;
|
|
this.netSkip = -2;
|
|
this.realLife = -1;
|
|
this.lifeRegen = 0;
|
|
this.lifeRegenCount = 0;
|
|
this.poisoned = false;
|
|
this.onFire = false;
|
|
this.confused = false;
|
|
this.onFire2 = false;
|
|
this.justHit = false;
|
|
this.dontTakeDamage = false;
|
|
this.npcSlots = 1f;
|
|
this.lavaImmune = false;
|
|
this.lavaWet = false;
|
|
this.wetCount = (byte) 0;
|
|
this.wet = false;
|
|
this.townNPC = false;
|
|
this.homeless = false;
|
|
this.homeTileX = -1;
|
|
this.homeTileY = -1;
|
|
this.friendly = false;
|
|
this.behindTiles = false;
|
|
this.boss = false;
|
|
this.noTileCollide = false;
|
|
this.rotation = 0.0f;
|
|
this.active = true;
|
|
this.alpha = 0;
|
|
this.color = new Color();
|
|
this.collideX = false;
|
|
this.collideY = false;
|
|
this.direction = 0;
|
|
this.oldDirection = this.direction;
|
|
this.frameCounter = 0.0;
|
|
this.netUpdate = true;
|
|
this.netUpdate2 = false;
|
|
this.knockBackResist = 1f;
|
|
this.name = "";
|
|
this.displayName = "";
|
|
this.noGravity = false;
|
|
this.scale = 1f;
|
|
this.soundHit = 0;
|
|
this.soundKilled = 0;
|
|
this.spriteDirection = -1;
|
|
this.target = (int) byte.MaxValue;
|
|
this.oldTarget = this.target;
|
|
this.targetRect = new Rectangle();
|
|
this.timeLeft = NPC.activeTime;
|
|
this.type = Type;
|
|
this.value = 0.0f;
|
|
for (int index = 0; index < NPC.maxAI; ++index)
|
|
this.ai[index] = 0.0f;
|
|
for (int index = 0; index < NPC.maxAI; ++index)
|
|
this.localAI[index] = 0.0f;
|
|
if (this.type == 1)
|
|
{
|
|
this.name = "Blue Slime";
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 7;
|
|
this.defense = 2;
|
|
this.lifeMax = 25;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.alpha = 175;
|
|
this.color = new Color(0, 80, (int) byte.MaxValue, 100);
|
|
this.value = 25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 2)
|
|
{
|
|
this.name = "Demon Eye";
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 18;
|
|
this.defense = 2;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 1;
|
|
this.value = 75f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 3)
|
|
{
|
|
this.name = "Zombie";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 4)
|
|
{
|
|
this.name = "Eye of Cthulhu";
|
|
this.width = 100;
|
|
this.height = 110;
|
|
this.aiStyle = 4;
|
|
this.damage = 15;
|
|
this.defense = 12;
|
|
this.lifeMax = 2800;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.timeLeft = NPC.activeTime * 30;
|
|
this.boss = true;
|
|
this.value = 30000f;
|
|
this.npcSlots = 5f;
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
this.name = "Servant of Cthulhu";
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 5;
|
|
this.damage = 12;
|
|
this.defense = 0;
|
|
this.lifeMax = 8;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
}
|
|
else if (this.type == 6)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.name = "Eater of Souls";
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 5;
|
|
this.damage = 22;
|
|
this.defense = 8;
|
|
this.lifeMax = 40;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 90f;
|
|
}
|
|
else if (this.type == 7)
|
|
{
|
|
this.displayName = "Devourer";
|
|
this.npcSlots = 3.5f;
|
|
this.name = "Devourer Head";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.damage = 31;
|
|
this.defense = 2;
|
|
this.lifeMax = 100;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 140f;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 8)
|
|
{
|
|
this.displayName = "Devourer";
|
|
this.name = "Devourer Body";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 16;
|
|
this.defense = 6;
|
|
this.lifeMax = 100;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 140f;
|
|
}
|
|
else if (this.type == 9)
|
|
{
|
|
this.displayName = "Devourer";
|
|
this.name = "Devourer Tail";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 13;
|
|
this.defense = 10;
|
|
this.lifeMax = 100;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 140f;
|
|
}
|
|
else if (this.type == 10)
|
|
{
|
|
this.displayName = "Giant Worm";
|
|
this.name = "Giant Worm Head";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 8;
|
|
this.defense = 0;
|
|
this.lifeMax = 30;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 40f;
|
|
}
|
|
else if (this.type == 11)
|
|
{
|
|
this.displayName = "Giant Worm";
|
|
this.name = "Giant Worm Body";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 4;
|
|
this.defense = 4;
|
|
this.lifeMax = 30;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 40f;
|
|
}
|
|
else if (this.type == 12)
|
|
{
|
|
this.displayName = "Giant Worm";
|
|
this.name = "Giant Worm Tail";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 4;
|
|
this.defense = 6;
|
|
this.lifeMax = 30;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 40f;
|
|
}
|
|
else if (this.type == 13)
|
|
{
|
|
this.displayName = "Eater of Worlds";
|
|
this.npcSlots = 5f;
|
|
this.name = "Eater of Worlds Head";
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 22;
|
|
this.defense = 2;
|
|
this.lifeMax = 65;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 300f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 14)
|
|
{
|
|
this.displayName = "Eater of Worlds";
|
|
this.name = "Eater of Worlds Body";
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 13;
|
|
this.defense = 4;
|
|
this.lifeMax = 150;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 300f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 15)
|
|
{
|
|
this.displayName = "Eater of Worlds";
|
|
this.name = "Eater of Worlds Tail";
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 11;
|
|
this.defense = 8;
|
|
this.lifeMax = 220;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 300f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 16)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.name = "Mother Slime";
|
|
this.width = 36;
|
|
this.height = 24;
|
|
this.aiStyle = 1;
|
|
this.damage = 20;
|
|
this.defense = 7;
|
|
this.lifeMax = 90;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.alpha = 120;
|
|
this.color = new Color(0, 0, 0, 50);
|
|
this.value = 75f;
|
|
this.scale = 1.25f;
|
|
this.knockBackResist = 0.6f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 17)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Merchant";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Nurse";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Arms Dealer";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Dryad";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 21)
|
|
{
|
|
this.name = "Skeleton";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 100f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 22)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Guide";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 23)
|
|
{
|
|
this.name = "Meteor Head";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 5;
|
|
this.damage = 40;
|
|
this.defense = 6;
|
|
this.lifeMax = 26;
|
|
this.soundHit = 3;
|
|
this.soundKilled = 3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.value = 80f;
|
|
this.knockBackResist = 0.4f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 24)
|
|
{
|
|
this.npcSlots = 3f;
|
|
this.name = "Fire Imp";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 30;
|
|
this.defense = 16;
|
|
this.lifeMax = 70;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
this.lavaImmune = true;
|
|
this.value = 350f;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 25)
|
|
{
|
|
this.name = "Burning Sphere";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 30;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.soundHit = 3;
|
|
this.soundKilled = 3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.alpha = 100;
|
|
}
|
|
else if (this.type == 26)
|
|
{
|
|
this.name = "Goblin Peon";
|
|
this.scale = 0.9f;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 12;
|
|
this.defense = 4;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.value = 100f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 27)
|
|
{
|
|
this.name = "Goblin Thief";
|
|
this.scale = 0.95f;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 200f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 28)
|
|
{
|
|
this.name = "Goblin Warrior";
|
|
this.scale = 1.1f;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 25;
|
|
this.defense = 8;
|
|
this.lifeMax = 110;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 150f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 29)
|
|
{
|
|
this.name = "Goblin Sorcerer";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 20;
|
|
this.defense = 2;
|
|
this.lifeMax = 40;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 200f;
|
|
}
|
|
else if (this.type == 30)
|
|
{
|
|
this.name = "Chaos Ball";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 20;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.soundHit = 3;
|
|
this.soundKilled = 3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.alpha = 100;
|
|
this.knockBackResist = 0.0f;
|
|
}
|
|
else if (this.type == 31)
|
|
{
|
|
this.name = "Angry Bones";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 26;
|
|
this.defense = 8;
|
|
this.lifeMax = 80;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.8f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 32)
|
|
{
|
|
this.name = "Dark Caster";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 20;
|
|
this.defense = 2;
|
|
this.lifeMax = 50;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 140f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
this.name = "Water Sphere";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 20;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.soundHit = 3;
|
|
this.soundKilled = 3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.alpha = 100;
|
|
this.knockBackResist = 0.0f;
|
|
}
|
|
else if (this.type == 34)
|
|
{
|
|
this.name = "Cursed Skull";
|
|
this.width = 26;
|
|
this.height = 28;
|
|
this.aiStyle = 10;
|
|
this.damage = 35;
|
|
this.defense = 6;
|
|
this.lifeMax = 40;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.value = 150f;
|
|
this.knockBackResist = 0.2f;
|
|
this.npcSlots = 0.75f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 35)
|
|
{
|
|
this.displayName = "Skeletron";
|
|
this.name = "Skeletron Head";
|
|
this.width = 80;
|
|
this.height = 102;
|
|
this.aiStyle = 11;
|
|
this.damage = 32;
|
|
this.defense = 10;
|
|
this.lifeMax = 4400;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.value = 50000f;
|
|
this.knockBackResist = 0.0f;
|
|
this.boss = true;
|
|
this.npcSlots = 6f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 36)
|
|
{
|
|
this.displayName = "Skeletron";
|
|
this.name = "Skeletron Hand";
|
|
this.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 12;
|
|
this.damage = 20;
|
|
this.defense = 14;
|
|
this.lifeMax = 600;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 37)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Old Man";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 38)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Demolitionist";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 39)
|
|
{
|
|
this.npcSlots = 6f;
|
|
this.name = "Bone Serpent Head";
|
|
this.displayName = "Bone Serpent";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 30;
|
|
this.defense = 10;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 5;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 1200f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 40)
|
|
{
|
|
this.name = "Bone Serpent Body";
|
|
this.displayName = "Bone Serpent";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 15;
|
|
this.defense = 12;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 5;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 1200f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 41)
|
|
{
|
|
this.name = "Bone Serpent Tail";
|
|
this.displayName = "Bone Serpent";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 10;
|
|
this.defense = 18;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 5;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 1200f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 42)
|
|
{
|
|
this.name = "Hornet";
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 34;
|
|
this.defense = 12;
|
|
this.lifeMax = 50;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.5f;
|
|
this.soundKilled = 1;
|
|
this.value = 200f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 43)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.name = "Man Eater";
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 13;
|
|
this.damage = 42;
|
|
this.defense = 14;
|
|
this.lifeMax = 130;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.0f;
|
|
this.soundKilled = 1;
|
|
this.value = 350f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 44)
|
|
{
|
|
this.name = "Undead Miner";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 22;
|
|
this.defense = 9;
|
|
this.lifeMax = 70;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 250f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 45)
|
|
{
|
|
this.name = "Tim";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 5000f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 46)
|
|
{
|
|
this.name = "Bunny";
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
}
|
|
else if (this.type == 47)
|
|
{
|
|
this.name = "Corrupt Bunny";
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 70;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 48)
|
|
{
|
|
this.name = "Harpy";
|
|
this.width = 24;
|
|
this.height = 34;
|
|
this.aiStyle = 14;
|
|
this.damage = 25;
|
|
this.defense = 8;
|
|
this.lifeMax = 100;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.6f;
|
|
this.soundKilled = 1;
|
|
this.value = 300f;
|
|
}
|
|
else if (this.type == 49)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.name = "Cave Bat";
|
|
this.width = 22;
|
|
this.height = 18;
|
|
this.aiStyle = 14;
|
|
this.damage = 13;
|
|
this.defense = 2;
|
|
this.lifeMax = 16;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 4;
|
|
this.value = 90f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 50)
|
|
{
|
|
this.boss = true;
|
|
this.name = "King Slime";
|
|
this.width = 98;
|
|
this.height = 92;
|
|
this.aiStyle = 15;
|
|
this.damage = 40;
|
|
this.defense = 10;
|
|
this.lifeMax = 2000;
|
|
this.knockBackResist = 0.0f;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.alpha = 30;
|
|
this.value = 10000f;
|
|
this.scale = 1.25f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 51)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.name = "Jungle Bat";
|
|
this.width = 22;
|
|
this.height = 18;
|
|
this.aiStyle = 14;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 34;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 4;
|
|
this.value = 80f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 52)
|
|
{
|
|
this.name = "Doctor Bones";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 500;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 53)
|
|
{
|
|
this.name = "The Groom";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 8;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 54)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Clothier";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 55)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Goldfish";
|
|
this.width = 20;
|
|
this.height = 18;
|
|
this.aiStyle = 16;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 56)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.name = "Snatcher";
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 13;
|
|
this.damage = 25;
|
|
this.defense = 10;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.0f;
|
|
this.soundKilled = 1;
|
|
this.value = 90f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 57)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Corrupt Goldfish";
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 30;
|
|
this.defense = 6;
|
|
this.lifeMax = 100;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 58)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.name = "Piranha";
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 25;
|
|
this.defense = 2;
|
|
this.lifeMax = 30;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 50f;
|
|
}
|
|
else if (this.type == 59)
|
|
{
|
|
this.name = "Lava Slime";
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 15;
|
|
this.defense = 10;
|
|
this.lifeMax = 50;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.scale = 1.1f;
|
|
this.alpha = 50;
|
|
this.lavaImmune = true;
|
|
this.value = 120f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 60)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.name = "Hellbat";
|
|
this.width = 22;
|
|
this.height = 18;
|
|
this.aiStyle = 14;
|
|
this.damage = 35;
|
|
this.defense = 8;
|
|
this.lifeMax = 46;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 4;
|
|
this.value = 120f;
|
|
this.scale = 1.1f;
|
|
this.lavaImmune = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 61)
|
|
{
|
|
this.name = "Vulture";
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 17;
|
|
this.damage = 15;
|
|
this.defense = 4;
|
|
this.lifeMax = 40;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 1;
|
|
this.value = 60f;
|
|
}
|
|
else if (this.type == 62)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.name = "Demon";
|
|
this.width = 28;
|
|
this.height = 48;
|
|
this.aiStyle = 14;
|
|
this.damage = 32;
|
|
this.defense = 8;
|
|
this.lifeMax = 120;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 1;
|
|
this.value = 300f;
|
|
this.lavaImmune = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 63)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Blue Jellyfish";
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 20;
|
|
this.defense = 2;
|
|
this.lifeMax = 30;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 100f;
|
|
this.alpha = 20;
|
|
}
|
|
else if (this.type == 64)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Pink Jellyfish";
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 30;
|
|
this.defense = 6;
|
|
this.lifeMax = 70;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 100f;
|
|
this.alpha = 20;
|
|
}
|
|
else if (this.type == 65)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Shark";
|
|
this.width = 100;
|
|
this.height = 24;
|
|
this.aiStyle = 16;
|
|
this.damage = 40;
|
|
this.defense = 2;
|
|
this.lifeMax = 300;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 400f;
|
|
this.knockBackResist = 0.7f;
|
|
}
|
|
else if (this.type == 66)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.name = "Voodoo Demon";
|
|
this.width = 28;
|
|
this.height = 48;
|
|
this.aiStyle = 14;
|
|
this.damage = 32;
|
|
this.defense = 8;
|
|
this.lifeMax = 140;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 1;
|
|
this.value = 1000f;
|
|
this.lavaImmune = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 67)
|
|
{
|
|
this.name = "Crab";
|
|
this.width = 28;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 40;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 60f;
|
|
}
|
|
else if (this.type == 68)
|
|
{
|
|
this.name = "Dungeon Guardian";
|
|
this.width = 80;
|
|
this.height = 102;
|
|
this.aiStyle = 11;
|
|
this.damage = 9000;
|
|
this.defense = 9000;
|
|
this.lifeMax = 9999;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 69)
|
|
{
|
|
this.name = "Antlion";
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 19;
|
|
this.damage = 10;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 60f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 70)
|
|
{
|
|
this.npcSlots = 0.3f;
|
|
this.name = "Spike Ball";
|
|
this.width = 34;
|
|
this.height = 34;
|
|
this.aiStyle = 20;
|
|
this.damage = 32;
|
|
this.defense = 100;
|
|
this.lifeMax = 100;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.dontTakeDamage = true;
|
|
this.scale = 1.5f;
|
|
}
|
|
else if (this.type == 71)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.name = "Dungeon Slime";
|
|
this.width = 36;
|
|
this.height = 24;
|
|
this.aiStyle = 1;
|
|
this.damage = 30;
|
|
this.defense = 7;
|
|
this.lifeMax = 150;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.alpha = 60;
|
|
this.value = 150f;
|
|
this.scale = 1.25f;
|
|
this.knockBackResist = 0.6f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 72)
|
|
{
|
|
this.npcSlots = 0.3f;
|
|
this.name = "Blazing Wheel";
|
|
this.width = 34;
|
|
this.height = 34;
|
|
this.aiStyle = 21;
|
|
this.damage = 24;
|
|
this.defense = 100;
|
|
this.lifeMax = 100;
|
|
this.alpha = 100;
|
|
this.behindTiles = true;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.dontTakeDamage = true;
|
|
this.scale = 1.2f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 73)
|
|
{
|
|
this.name = "Goblin Scout";
|
|
this.scale = 0.95f;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 200f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 74)
|
|
{
|
|
this.name = "Bird";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 24;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 1;
|
|
}
|
|
else if (this.type == 75)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Pixie";
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 22;
|
|
this.damage = 55;
|
|
this.defense = 20;
|
|
this.lifeMax = 150;
|
|
this.soundHit = 5;
|
|
this.knockBackResist = 0.6f;
|
|
this.soundKilled = 7;
|
|
this.value = 350f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 77)
|
|
{
|
|
this.name = "Armored Skeleton";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 36;
|
|
this.lifeMax = 340;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 78)
|
|
{
|
|
this.name = "Mummy";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 16;
|
|
this.lifeMax = 130;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 6;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 600f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 79)
|
|
{
|
|
this.name = "Dark Mummy";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 18;
|
|
this.lifeMax = 180;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 6;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 700f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 80)
|
|
{
|
|
this.name = "Light Mummy";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 55;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 6;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 700f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 81)
|
|
{
|
|
this.name = "Corrupt Slime";
|
|
this.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 1;
|
|
this.damage = 55;
|
|
this.defense = 20;
|
|
this.lifeMax = 170;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.alpha = 55;
|
|
this.value = 400f;
|
|
this.scale = 1.1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 82)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.name = "Wraith";
|
|
this.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 22;
|
|
this.damage = 75;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 6;
|
|
this.alpha = 100;
|
|
this.value = 500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.7f;
|
|
}
|
|
else if (this.type == 83)
|
|
{
|
|
this.name = "Cursed Hammer";
|
|
this.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 23;
|
|
this.damage = 80;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 6;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 84)
|
|
{
|
|
this.name = "Enchanted Sword";
|
|
this.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 23;
|
|
this.damage = 80;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 6;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 85)
|
|
{
|
|
this.name = "Mimic";
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 25;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 500;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 6;
|
|
this.value = 100000f;
|
|
this.knockBackResist = 0.3f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 86)
|
|
{
|
|
this.name = "Unicorn";
|
|
this.width = 46;
|
|
this.height = 42;
|
|
this.aiStyle = 26;
|
|
this.damage = 65;
|
|
this.defense = 30;
|
|
this.lifeMax = 400;
|
|
this.soundHit = 10;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 87)
|
|
{
|
|
this.displayName = "Wyvern";
|
|
this.noTileCollide = true;
|
|
this.npcSlots = 5f;
|
|
this.name = "Wyvern Head";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 80;
|
|
this.defense = 10;
|
|
this.lifeMax = 4000;
|
|
this.soundHit = 7;
|
|
this.soundKilled = 8;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 88)
|
|
{
|
|
this.displayName = "Wyvern";
|
|
this.noTileCollide = true;
|
|
this.name = "Wyvern Legs";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.soundHit = 7;
|
|
this.soundKilled = 8;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 89)
|
|
{
|
|
this.displayName = "Wyvern";
|
|
this.noTileCollide = true;
|
|
this.name = "Wyvern Body";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.soundHit = 7;
|
|
this.soundKilled = 8;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 2000f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 90)
|
|
{
|
|
this.displayName = "Wyvern";
|
|
this.noTileCollide = true;
|
|
this.name = "Wyvern Body 2";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.soundHit = 7;
|
|
this.soundKilled = 8;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 91)
|
|
{
|
|
this.displayName = "Wyvern";
|
|
this.noTileCollide = true;
|
|
this.name = "Wyvern Body 3";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.soundHit = 7;
|
|
this.soundKilled = 8;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 92)
|
|
{
|
|
this.displayName = "Wyvern";
|
|
this.noTileCollide = true;
|
|
this.name = "Wyvern Tail";
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.soundHit = 7;
|
|
this.soundKilled = 8;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 93)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.name = "Giant Bat";
|
|
this.width = 26;
|
|
this.height = 20;
|
|
this.aiStyle = 14;
|
|
this.damage = 70;
|
|
this.defense = 20;
|
|
this.lifeMax = 160;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.75f;
|
|
this.soundKilled = 4;
|
|
this.value = 400f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 94)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.name = "Corruptor";
|
|
this.width = 44;
|
|
this.height = 44;
|
|
this.aiStyle = 5;
|
|
this.damage = 60;
|
|
this.defense = 32;
|
|
this.lifeMax = 230;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 95)
|
|
{
|
|
this.displayName = "Digger";
|
|
this.name = "Digger Head";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 45;
|
|
this.defense = 10;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.scale = 0.9f;
|
|
this.value = 300f;
|
|
}
|
|
else if (this.type == 96)
|
|
{
|
|
this.displayName = "Digger";
|
|
this.name = "Digger Body";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 28;
|
|
this.defense = 20;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.scale = 0.9f;
|
|
this.value = 300f;
|
|
}
|
|
else if (this.type == 97)
|
|
{
|
|
this.displayName = "Digger";
|
|
this.name = "Digger Tail";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 26;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.scale = 0.9f;
|
|
this.value = 300f;
|
|
}
|
|
else if (this.type == 98)
|
|
{
|
|
this.displayName = "World Feeder";
|
|
this.npcSlots = 3.5f;
|
|
this.name = "Seeker Head";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 70;
|
|
this.defense = 36;
|
|
this.lifeMax = 500;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
}
|
|
else if (this.type == 99)
|
|
{
|
|
this.displayName = "World Feeder";
|
|
this.name = "Seeker Body";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 55;
|
|
this.defense = 40;
|
|
this.lifeMax = 500;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
}
|
|
else if (this.type == 100)
|
|
{
|
|
this.displayName = "World Feeder";
|
|
this.name = "Seeker Tail";
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 44;
|
|
this.lifeMax = 500;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
}
|
|
else if (this.type == 101)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.behindTiles = true;
|
|
this.name = "Clinger";
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 13;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 320;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.2f;
|
|
this.soundKilled = 1;
|
|
this.value = 600f;
|
|
}
|
|
else if (this.type == 102)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.name = "Angler Fish";
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 80;
|
|
this.defense = 22;
|
|
this.lifeMax = 90;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 103)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Green Jellyfish";
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 120;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.value = 800f;
|
|
this.alpha = 20;
|
|
}
|
|
else if (this.type == 104)
|
|
{
|
|
this.name = "Werewolf";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 40;
|
|
this.lifeMax = 400;
|
|
this.soundHit = 6;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 105)
|
|
{
|
|
this.friendly = true;
|
|
this.name = "Bound Goblin";
|
|
this.width = 18;
|
|
this.height = 34;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 106)
|
|
{
|
|
this.friendly = true;
|
|
this.name = "Bound Wizard";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 107)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Goblin Tinkerer";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 108)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Wizard";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 109)
|
|
{
|
|
this.name = "Clown";
|
|
this.width = 34;
|
|
this.height = 78;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 20;
|
|
this.lifeMax = 400;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 8000f;
|
|
}
|
|
else if (this.type == 110)
|
|
{
|
|
this.name = "Skeleton Archer";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 55;
|
|
this.defense = 28;
|
|
this.lifeMax = 260;
|
|
this.soundHit = 2;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 111)
|
|
{
|
|
this.name = "Goblin Archer";
|
|
this.scale = 0.95f;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 200f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 112)
|
|
{
|
|
this.name = "Vile Spit";
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 65;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.soundHit = 0;
|
|
this.soundKilled = 9;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.scale = 0.9f;
|
|
this.alpha = 80;
|
|
}
|
|
else if (this.type == 113)
|
|
{
|
|
this.npcSlots = 10f;
|
|
this.name = "Wall of Flesh";
|
|
this.width = 100;
|
|
this.height = 100;
|
|
this.aiStyle = 27;
|
|
this.damage = 50;
|
|
this.defense = 12;
|
|
this.lifeMax = 8000;
|
|
this.soundHit = 8;
|
|
this.soundKilled = 10;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.behindTiles = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.scale = 1.2f;
|
|
this.boss = true;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.value = 80000f;
|
|
}
|
|
else if (this.type == 114)
|
|
{
|
|
this.name = "Wall of Flesh Eye";
|
|
this.displayName = "Wall of Flesh";
|
|
this.width = 100;
|
|
this.height = 100;
|
|
this.aiStyle = 28;
|
|
this.damage = 50;
|
|
this.defense = 0;
|
|
this.lifeMax = 8000;
|
|
this.soundHit = 8;
|
|
this.soundKilled = 10;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.behindTiles = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.scale = 1.2f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.value = 80000f;
|
|
}
|
|
else if (this.type == 115)
|
|
{
|
|
this.name = "The Hungry";
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 29;
|
|
this.damage = 30;
|
|
this.defense = 10;
|
|
this.lifeMax = 240;
|
|
this.soundHit = 9;
|
|
this.soundKilled = 11;
|
|
this.noGravity = true;
|
|
this.behindTiles = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 1.1f;
|
|
}
|
|
else if (this.type == 116)
|
|
{
|
|
this.name = "The Hungry II";
|
|
this.displayName = "The Hungry";
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 30;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.soundHit = 9;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 12;
|
|
}
|
|
else if (this.type == 117)
|
|
{
|
|
this.displayName = "Leech";
|
|
this.name = "Leech Head";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 26;
|
|
this.defense = 2;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 9;
|
|
this.soundKilled = 12;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 118)
|
|
{
|
|
this.displayName = "Leech";
|
|
this.name = "Leech Body";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 22;
|
|
this.defense = 6;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 9;
|
|
this.soundKilled = 12;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 119)
|
|
{
|
|
this.displayName = "Leech";
|
|
this.name = "Leech Tail";
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 18;
|
|
this.defense = 10;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 9;
|
|
this.soundKilled = 12;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 120)
|
|
{
|
|
this.name = "Chaos Elemental";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 40;
|
|
this.defense = 30;
|
|
this.lifeMax = 370;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 6;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 600f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 121)
|
|
{
|
|
this.name = "Slimer";
|
|
this.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 14;
|
|
this.damage = 45;
|
|
this.defense = 20;
|
|
this.lifeMax = 60;
|
|
this.soundHit = 1;
|
|
this.alpha = 55;
|
|
this.knockBackResist = 0.8f;
|
|
this.scale = 1.1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 122)
|
|
{
|
|
this.noGravity = true;
|
|
this.name = "Gastropod";
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 22;
|
|
this.damage = 60;
|
|
this.defense = 22;
|
|
this.lifeMax = 220;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 1;
|
|
this.value = 600f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 123)
|
|
{
|
|
this.friendly = true;
|
|
this.name = "Bound Mechanic";
|
|
this.width = 18;
|
|
this.height = 34;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 124)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Mechanic";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 125)
|
|
{
|
|
this.name = "Retinazer";
|
|
this.width = 100;
|
|
this.height = 110;
|
|
this.aiStyle = 30;
|
|
this.damage = 50;
|
|
this.defense = 10;
|
|
this.lifeMax = 24000;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 14;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.timeLeft = NPC.activeTime * 30;
|
|
this.boss = true;
|
|
this.value = 120000f;
|
|
this.npcSlots = 5f;
|
|
this.boss = true;
|
|
}
|
|
else if (this.type == 126)
|
|
{
|
|
this.name = "Spazmatism";
|
|
this.width = 100;
|
|
this.height = 110;
|
|
this.aiStyle = 31;
|
|
this.damage = 50;
|
|
this.defense = 10;
|
|
this.lifeMax = 24000;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 14;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.timeLeft = NPC.activeTime * 30;
|
|
this.boss = true;
|
|
this.value = 120000f;
|
|
this.npcSlots = 5f;
|
|
this.boss = true;
|
|
}
|
|
else if (this.type == (int) sbyte.MaxValue)
|
|
{
|
|
this.name = "Skeletron Prime";
|
|
this.width = 80;
|
|
this.height = 102;
|
|
this.aiStyle = 32;
|
|
this.damage = 50;
|
|
this.defense = 25;
|
|
this.lifeMax = 30000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.value = 120000f;
|
|
this.knockBackResist = 0.0f;
|
|
this.boss = true;
|
|
this.npcSlots = 6f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.boss = true;
|
|
}
|
|
else if (this.type == 128)
|
|
{
|
|
this.name = "Prime Cannon";
|
|
this.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 35;
|
|
this.damage = 30;
|
|
this.defense = 25;
|
|
this.lifeMax = 7000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 129)
|
|
{
|
|
this.name = "Prime Saw";
|
|
this.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 33;
|
|
this.damage = 52;
|
|
this.defense = 40;
|
|
this.lifeMax = 10000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 130)
|
|
{
|
|
this.name = "Prime Vice";
|
|
this.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 34;
|
|
this.damage = 45;
|
|
this.defense = 35;
|
|
this.lifeMax = 10000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 131)
|
|
{
|
|
this.name = "Prime Laser";
|
|
this.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 36;
|
|
this.damage = 29;
|
|
this.defense = 20;
|
|
this.lifeMax = 6000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 132)
|
|
{
|
|
this.displayName = "Zombie";
|
|
this.name = "Bald Zombie";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 133)
|
|
{
|
|
this.name = "Wandering Eye";
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 300;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.8f;
|
|
this.soundKilled = 1;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 134)
|
|
{
|
|
this.displayName = "The Destroyer";
|
|
this.npcSlots = 5f;
|
|
this.name = "The Destroyer";
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 37;
|
|
this.damage = 60;
|
|
this.defense = 0;
|
|
this.lifeMax = 80000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 120000f;
|
|
this.scale = 1.25f;
|
|
this.boss = true;
|
|
this.netAlways = true;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 135)
|
|
{
|
|
this.displayName = "The Destroyer";
|
|
this.npcSlots = 5f;
|
|
this.name = "The Destroyer Body";
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 37;
|
|
this.damage = 40;
|
|
this.defense = 30;
|
|
this.lifeMax = 80000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.netAlways = true;
|
|
this.scale = 1.25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 136)
|
|
{
|
|
this.displayName = "The Destroyer";
|
|
this.npcSlots = 5f;
|
|
this.name = "The Destroyer Tail";
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 37;
|
|
this.damage = 20;
|
|
this.defense = 35;
|
|
this.lifeMax = 80000;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.scale = 1.25f;
|
|
this.netAlways = true;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 137)
|
|
{
|
|
this.name = "Illuminant Bat";
|
|
this.width = 26;
|
|
this.height = 20;
|
|
this.aiStyle = 14;
|
|
this.damage = 75;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 1;
|
|
this.knockBackResist = 0.75f;
|
|
this.soundKilled = 6;
|
|
this.value = 500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 138)
|
|
{
|
|
this.name = "Illuminant Slime";
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 180;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 6;
|
|
this.alpha = 100;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.85f;
|
|
this.scale = 1.05f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 139)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.name = "Probe";
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 5;
|
|
this.damage = 50;
|
|
this.defense = 20;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 14;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.8f;
|
|
this.noTileCollide = true;
|
|
}
|
|
else if (this.type == 140)
|
|
{
|
|
this.name = "Possessed Armor";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 55;
|
|
this.defense = 28;
|
|
this.lifeMax = 260;
|
|
this.soundHit = 4;
|
|
this.soundKilled = 6;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 141)
|
|
{
|
|
this.name = "Toxic Sludge";
|
|
this.width = 34;
|
|
this.height = 28;
|
|
this.aiStyle = 1;
|
|
this.damage = 50;
|
|
this.defense = 18;
|
|
this.lifeMax = 150;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.alpha = 55;
|
|
this.value = 400f;
|
|
this.scale = 1.1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.knockBackResist = 0.8f;
|
|
}
|
|
else if (this.type == 142)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.name = "Santa Claus";
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.soundHit = 1;
|
|
this.soundKilled = 1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 143)
|
|
{
|
|
this.name = "Snowman Gangsta";
|
|
this.width = 26;
|
|
this.height = 40;
|
|
this.aiStyle = 38;
|
|
this.damage = 50;
|
|
this.defense = 20;
|
|
this.lifeMax = 200;
|
|
this.soundHit = 11;
|
|
this.soundKilled = 15;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 144)
|
|
{
|
|
this.name = "Mister Stabby";
|
|
this.width = 26;
|
|
this.height = 40;
|
|
this.aiStyle = 38;
|
|
this.damage = 65;
|
|
this.defense = 26;
|
|
this.lifeMax = 240;
|
|
this.soundHit = 11;
|
|
this.soundKilled = 15;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 145)
|
|
{
|
|
this.name = "Snow Balla";
|
|
this.width = 26;
|
|
this.height = 40;
|
|
this.aiStyle = 38;
|
|
this.damage = 55;
|
|
this.defense = 22;
|
|
this.lifeMax = 220;
|
|
this.soundHit = 11;
|
|
this.soundKilled = 15;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
this.frame = !Main.dedServ ? new Rectangle(0, 0, Main.npcTexture[this.type].Width, Main.npcTexture[this.type].Height / Main.npcFrameCount[this.type]) : new Rectangle();
|
|
if ((double) scaleOverride > 0.0)
|
|
{
|
|
int num1 = (int) ((double) this.width * (double) this.scale);
|
|
int num2 = (int) ((double) this.height * (double) this.scale);
|
|
this.position.X += (float) (num1 / 2);
|
|
this.position.Y += (float) num2;
|
|
this.scale = scaleOverride;
|
|
this.width = (int) ((double) this.width * (double) this.scale);
|
|
this.height = (int) ((double) this.height * (double) this.scale);
|
|
if (this.height == 16 || this.height == 32)
|
|
++this.height;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) this.height;
|
|
}
|
|
else
|
|
{
|
|
this.width = (int) ((double) this.width * (double) this.scale);
|
|
this.height = (int) ((double) this.height * (double) this.scale);
|
|
}
|
|
this.life = this.lifeMax;
|
|
this.defDamage = this.damage;
|
|
this.defDefense = this.defense;
|
|
this.netID = this.type;
|
|
this.displayName = Lang.npcName(this.netID);
|
|
}
|
|
|
|
public void AI()
|
|
{
|
|
if (this.aiStyle == 0)
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].talkNPC == this.whoAmI)
|
|
{
|
|
if (this.type == 105)
|
|
{
|
|
this.Transform(107);
|
|
return;
|
|
}
|
|
if (this.type == 106)
|
|
{
|
|
this.Transform(108);
|
|
return;
|
|
}
|
|
if (this.type == 123)
|
|
{
|
|
this.Transform(124);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
this.velocity.X *= 0.93f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
this.TargetClosest();
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
else if (this.aiStyle == 1)
|
|
{
|
|
bool flag = false;
|
|
if (!Main.dayTime || this.life != this.lifeMax || (double) this.position.Y > Main.worldSurface * 16.0)
|
|
flag = true;
|
|
if (this.type == 81)
|
|
{
|
|
flag = true;
|
|
if (Main.rand.Next(30) == 0)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 14, Alpha: this.alpha, newColor: this.color);
|
|
Main.dust[index].velocity *= 0.3f;
|
|
}
|
|
}
|
|
if (this.type == 59)
|
|
{
|
|
Lighting.addLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 1f, 0.3f, 0.1f);
|
|
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: 1.7f);
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
if ((double) this.ai[2] > 1.0)
|
|
--this.ai[2];
|
|
if (this.wet)
|
|
{
|
|
if (this.collideY)
|
|
this.velocity.Y = -2f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.ai[3] == (double) this.position.X)
|
|
{
|
|
this.direction *= -1;
|
|
this.ai[2] = 200f;
|
|
}
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.ai[3] = this.position.X;
|
|
if (this.type == 59)
|
|
{
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y *= 0.9f;
|
|
else if (this.directionY < 0)
|
|
this.velocity.Y -= 0.8f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -10.0)
|
|
this.velocity.Y = -10f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
if ((double) this.ai[2] == 1.0 && flag)
|
|
this.TargetClosest();
|
|
}
|
|
this.aiAction = 0;
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
this.ai[0] = -100f;
|
|
this.ai[2] = 1f;
|
|
this.TargetClosest();
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if ((double) this.ai[3] == (double) this.position.X)
|
|
{
|
|
this.direction *= -1;
|
|
this.ai[2] = 200f;
|
|
}
|
|
this.ai[3] = 0.0f;
|
|
this.velocity.X *= 0.8f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if (flag)
|
|
++this.ai[0];
|
|
++this.ai[0];
|
|
if (this.type == 59)
|
|
this.ai[0] += 2f;
|
|
if (this.type == 71)
|
|
this.ai[0] += 3f;
|
|
if (this.type == 138)
|
|
this.ai[0] += 2f;
|
|
if (this.type == 81)
|
|
{
|
|
if ((double) this.scale >= 0.0)
|
|
this.ai[0] += 4f;
|
|
else
|
|
++this.ai[0];
|
|
}
|
|
if ((double) this.ai[0] >= 0.0)
|
|
{
|
|
this.netUpdate = true;
|
|
if (flag && (double) this.ai[2] == 1.0)
|
|
this.TargetClosest();
|
|
if ((double) this.ai[1] == 2.0)
|
|
{
|
|
this.velocity.Y = -8f;
|
|
if (this.type == 59)
|
|
this.velocity.Y -= 2f;
|
|
this.velocity.X += (float) (3 * this.direction);
|
|
if (this.type == 59)
|
|
this.velocity.X += 0.5f * (float) this.direction;
|
|
this.ai[0] = -200f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[3] = this.position.X;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.velocity.X += (float) (2 * this.direction);
|
|
if (this.type == 59)
|
|
this.velocity.X += (float) (2 * this.direction);
|
|
this.ai[0] = -120f;
|
|
++this.ai[1];
|
|
}
|
|
if (this.type != 141)
|
|
return;
|
|
this.velocity.Y *= 1.3f;
|
|
this.velocity.X *= 1.2f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] < -30.0)
|
|
return;
|
|
this.aiAction = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.target >= (int) byte.MaxValue || (this.direction != 1 || (double) this.velocity.X >= 3.0) && (this.direction != -1 || (double) this.velocity.X <= -3.0))
|
|
return;
|
|
if (this.direction == -1 && (double) this.velocity.X < 0.1 || this.direction == 1 && (double) this.velocity.X > -0.1)
|
|
this.velocity.X += 0.2f * (float) this.direction;
|
|
else
|
|
this.velocity.X *= 0.93f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 2)
|
|
{
|
|
this.noGravity = true;
|
|
if (this.collideX)
|
|
{
|
|
this.velocity.X = this.oldVelocity.X * -0.5f;
|
|
if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0)
|
|
this.velocity.X = 2f;
|
|
if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.velocity.Y = this.oldVelocity.Y * -0.5f;
|
|
if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.0)
|
|
this.velocity.Y = 1f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.0)
|
|
this.velocity.Y = -1f;
|
|
}
|
|
if (Main.dayTime && (double) this.position.Y <= Main.worldSurface * 16.0 && (this.type == 2 || this.type == 133))
|
|
{
|
|
if (this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
this.directionY = -1;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.direction = 1;
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
}
|
|
else
|
|
this.TargetClosest();
|
|
if (this.type == 116)
|
|
{
|
|
this.TargetClosest();
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.width / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16, 0.3f, 0.2f, 0.1f);
|
|
if (this.direction == -1 && (double) this.velocity.X > -6.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X -= 0.2f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X = -6f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 6.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += 0.2f;
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X = 6f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -2.5)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 2.5)
|
|
this.velocity.Y -= 0.05f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y -= 0.15f;
|
|
if ((double) this.velocity.Y < -2.5)
|
|
this.velocity.Y = -2.5f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 1.5)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -2.5)
|
|
this.velocity.Y += 0.05f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y += 0.15f;
|
|
if ((double) this.velocity.Y > 2.5)
|
|
this.velocity.Y = 2.5f;
|
|
}
|
|
if (Main.rand.Next(40) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
}
|
|
else if (this.type == 133)
|
|
{
|
|
if ((double) this.life < (double) this.lifeMax * 0.5)
|
|
{
|
|
if (this.direction == -1 && (double) this.velocity.X > -6.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X = -6f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 6.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X = 6f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -4.0)
|
|
{
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y > 4.0)
|
|
this.velocity.Y -= 0.1f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.05f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 4.0)
|
|
{
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y += 0.1f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.05f;
|
|
if ((double) this.velocity.Y > 4.0)
|
|
this.velocity.Y = 4f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.direction == -1 && (double) this.velocity.X > -4.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 4.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -1.5)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y -= 0.05f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.03f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y = -1.5f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 1.5)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y += 0.05f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.03f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y = 1.5f;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.direction == -1 && (double) this.velocity.X > -4.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 4.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -1.5)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y -= 0.05f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.03f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y = -1.5f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 1.5)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y += 0.05f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.03f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y = 1.5f;
|
|
}
|
|
}
|
|
if ((this.type == 2 || this.type == 133) && Main.rand.Next(40) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
if (!this.wet)
|
|
return;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
this.TargetClosest();
|
|
}
|
|
else if (this.aiStyle == 3)
|
|
{
|
|
int num1 = 60;
|
|
if (this.type == 120)
|
|
{
|
|
num1 = 20;
|
|
if ((double) this.ai[3] == -120.0)
|
|
{
|
|
this.velocity *= 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 8);
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num2 = this.oldPos[2].X + (float) this.width * 0.5f - vector2.X;
|
|
float num3 = this.oldPos[2].Y + (float) this.height * 0.5f - vector2.Y;
|
|
float num4 = 2f / (float) Math.Sqrt((double) num2 * (double) num2 + (double) num3 * (double) num3);
|
|
float SpeedX = num2 * num4;
|
|
float SpeedY = num3 * num4;
|
|
for (int index1 = 0; index1 < 20; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(this.position, this.width, this.height, 71, SpeedX, SpeedY, 200, Scale: 2f);
|
|
Main.dust[index2].noGravity = true;
|
|
Main.dust[index2].velocity.X *= 2f;
|
|
}
|
|
for (int index3 = 0; index3 < 20; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(this.oldPos[2], this.width, this.height, 71, -SpeedX, -SpeedY, 200, Scale: 2f);
|
|
Main.dust[index4].noGravity = true;
|
|
Main.dust[index4].velocity.X *= 2f;
|
|
}
|
|
}
|
|
}
|
|
bool flag1 = false;
|
|
bool flag2 = true;
|
|
if (this.type == 47 || this.type == 67 || this.type == 109 || this.type == 110 || this.type == 111 || this.type == 120)
|
|
flag2 = false;
|
|
if (this.type != 110 && this.type != 111 || (double) this.ai[2] <= 0.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && ((double) this.velocity.X > 0.0 && this.direction < 0 || (double) this.velocity.X < 0.0 && this.direction > 0))
|
|
flag1 = true;
|
|
if ((double) this.position.X == (double) this.oldPosition.X || (double) this.ai[3] >= (double) num1 || flag1)
|
|
++this.ai[3];
|
|
else if ((double) Math.Abs(this.velocity.X) > 0.9 && (double) this.ai[3] > 0.0)
|
|
--this.ai[3];
|
|
if ((double) this.ai[3] > (double) (num1 * 10))
|
|
this.ai[3] = 0.0f;
|
|
if (this.justHit)
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[3] == (double) num1)
|
|
this.netUpdate = true;
|
|
}
|
|
if ((!Main.dayTime || (double) this.position.Y > Main.worldSurface * 16.0 || this.type == 26 || this.type == 27 || this.type == 28 || this.type == 31 || this.type == 47 || this.type == 67 || this.type == 73 || this.type == 77 || this.type == 78 || this.type == 79 || this.type == 80 || this.type == 110 || this.type == 111 || this.type == 120) && (double) this.ai[3] < (double) num1)
|
|
{
|
|
if ((this.type == 3 || this.type == 21 || this.type == 31 || this.type == 77 || this.type == 110 || this.type == 132) && Main.rand.Next(1000) == 0)
|
|
Main.PlaySound(14, (int) this.position.X, (int) this.position.Y);
|
|
if ((this.type == 78 || this.type == 79 || this.type == 80) && Main.rand.Next(500) == 0)
|
|
Main.PlaySound(26, (int) this.position.X, (int) this.position.Y);
|
|
this.TargetClosest();
|
|
}
|
|
else if (this.type != 110 && this.type != 111 || (double) this.ai[2] <= 0.0)
|
|
{
|
|
if (Main.dayTime && (double) this.position.Y / 16.0 < Main.worldSurface && this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] >= 2.0)
|
|
{
|
|
this.direction *= -1;
|
|
this.spriteDirection = this.direction;
|
|
this.ai[0] = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
this.ai[0] = 0.0f;
|
|
if (this.direction == 0)
|
|
this.direction = 1;
|
|
}
|
|
if (this.type == 120)
|
|
{
|
|
if ((double) this.velocity.X < -3.0 || (double) this.velocity.X > 3.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 3.0 && this.direction == 1)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.99f;
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X = 3f;
|
|
}
|
|
else if ((double) this.velocity.X > -3.0 && this.direction == -1)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.99f;
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X = -3f;
|
|
}
|
|
}
|
|
else if (this.type == 27 || this.type == 77 || this.type == 104)
|
|
{
|
|
if ((double) this.velocity.X < -2.0 || (double) this.velocity.X > 2.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 2.0 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > 2.0)
|
|
this.velocity.X = 2f;
|
|
}
|
|
else if ((double) this.velocity.X > -2.0 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
}
|
|
else if (this.type == 109)
|
|
{
|
|
if ((double) this.velocity.X < -2.0 || (double) this.velocity.X > 2.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 2.0 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.04f;
|
|
if ((double) this.velocity.X > 2.0)
|
|
this.velocity.X = 2f;
|
|
}
|
|
else if ((double) this.velocity.X > -2.0 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.04f;
|
|
if ((double) this.velocity.X < -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
}
|
|
else if (this.type == 21 || this.type == 26 || this.type == 31 || this.type == 47 || this.type == 73 || this.type == 140)
|
|
{
|
|
if ((double) this.velocity.X < -1.5 || (double) this.velocity.X > 1.5)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 1.5 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > 1.5)
|
|
this.velocity.X = 1.5f;
|
|
}
|
|
else if ((double) this.velocity.X > -1.5 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -1.5)
|
|
this.velocity.X = -1.5f;
|
|
}
|
|
}
|
|
else if (this.type == 67)
|
|
{
|
|
if ((double) this.velocity.X < -0.5 || (double) this.velocity.X > 0.5)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < 0.5 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.03f;
|
|
if ((double) this.velocity.X > 0.5)
|
|
this.velocity.X = 0.5f;
|
|
}
|
|
else if ((double) this.velocity.X > -0.5 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.03f;
|
|
if ((double) this.velocity.X < -0.5)
|
|
this.velocity.X = -0.5f;
|
|
}
|
|
}
|
|
else if (this.type == 78 || this.type == 79 || this.type == 80)
|
|
{
|
|
float num5 = 1f;
|
|
float num6 = 0.05f;
|
|
if (this.life < this.lifeMax / 2)
|
|
{
|
|
num5 = 2f;
|
|
num6 = 0.1f;
|
|
}
|
|
if (this.type == 79)
|
|
num5 *= 1.5f;
|
|
if ((double) this.velocity.X < -(double) num5 || (double) this.velocity.X > (double) num5)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num5 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num6;
|
|
if ((double) this.velocity.X > (double) num5)
|
|
this.velocity.X = num5;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num5 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num6;
|
|
if ((double) this.velocity.X < -(double) num5)
|
|
this.velocity.X = -num5;
|
|
}
|
|
}
|
|
else if (this.type != 110 && this.type != 111)
|
|
{
|
|
if ((double) this.velocity.X < -1.0 || (double) this.velocity.X > 1.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 1.0 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > 1.0)
|
|
this.velocity.X = 1f;
|
|
}
|
|
else if ((double) this.velocity.X > -1.0 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -1.0)
|
|
this.velocity.X = -1f;
|
|
}
|
|
}
|
|
if (this.type == 110 || this.type == 111)
|
|
{
|
|
if (this.confused)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[1] > 0.0)
|
|
--this.ai[1];
|
|
if (this.justHit)
|
|
{
|
|
this.ai[1] = 30f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
int num7 = 70;
|
|
if (this.type == 111)
|
|
num7 = 180;
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
if ((double) this.ai[1] == (double) (num7 / 2))
|
|
{
|
|
float num8 = 11f;
|
|
if (this.type == 111)
|
|
num8 = 9f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num9 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num10 = Math.Abs(num9) * 0.1f;
|
|
float num11 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y - num10;
|
|
float num12 = num9 + (float) Main.rand.Next(-40, 41);
|
|
float num13 = num11 + (float) Main.rand.Next(-40, 41);
|
|
float num14 = (float) Math.Sqrt((double) num12 * (double) num12 + (double) num13 * (double) num13);
|
|
this.netUpdate = true;
|
|
float num15 = num8 / num14;
|
|
float SpeedX = num12 * num15;
|
|
float SpeedY = num13 * num15;
|
|
int Damage = 35;
|
|
if (this.type == 111)
|
|
Damage = 11;
|
|
int Type = 82;
|
|
if (this.type == 111)
|
|
Type = 81;
|
|
vector2.X += SpeedX;
|
|
vector2.Y += SpeedY;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
this.ai[2] = (double) Math.Abs(SpeedY) <= (double) Math.Abs(SpeedX) * 2.0 ? ((double) Math.Abs(SpeedX) <= (double) Math.Abs(SpeedY) * 2.0 ? ((double) SpeedY <= 0.0 ? 4f : 2f) : 3f) : ((double) SpeedY <= 0.0 ? 5f : 1f);
|
|
}
|
|
if ((double) this.velocity.Y != 0.0 || (double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
}
|
|
if ((double) this.ai[2] <= 0.0 && (double) this.velocity.Y == 0.0 && (double) this.ai[1] <= 0.0 && !Main.player[this.target].dead && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
float num16 = 10f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num17 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num18 = Math.Abs(num17) * 0.1f;
|
|
float num19 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y - num18;
|
|
float num20 = num17 + (float) Main.rand.Next(-40, 41);
|
|
float num21 = num19 + (float) Main.rand.Next(-40, 41);
|
|
float num22 = (float) Math.Sqrt((double) num20 * (double) num20 + (double) num21 * (double) num21);
|
|
if ((double) num22 < 700.0)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.X *= 0.5f;
|
|
float num23 = num16 / num22;
|
|
float num24 = num20 * num23;
|
|
float num25 = num21 * num23;
|
|
this.ai[2] = 3f;
|
|
this.ai[1] = (float) num7;
|
|
this.ai[2] = (double) Math.Abs(num25) <= (double) Math.Abs(num24) * 2.0 ? ((double) Math.Abs(num24) <= (double) Math.Abs(num25) * 2.0 ? ((double) num25 <= 0.0 ? 4f : 2f) : 3f) : ((double) num25 <= 0.0 ? 5f : 1f);
|
|
}
|
|
}
|
|
if ((double) this.ai[2] <= 0.0)
|
|
{
|
|
if ((double) this.velocity.X < -1.0 || (double) this.velocity.X > 1.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 1.0 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > 1.0)
|
|
this.velocity.X = 1f;
|
|
}
|
|
else if ((double) this.velocity.X > -1.0 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -1.0)
|
|
this.velocity.X = -1f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 109 && Main.netMode != 1 && !Main.player[this.target].dead)
|
|
{
|
|
if (this.justHit)
|
|
this.ai[2] = 0.0f;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] > 450.0)
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f - (float) (this.direction * 24), this.position.Y + 4f);
|
|
int num26 = 3 * this.direction;
|
|
int num27 = -5;
|
|
int index = Projectile.NewProjectile(vector2.X, vector2.Y, (float) num26, (float) num27, 75, 0, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
bool flag3 = false;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
int index5 = (int) ((double) this.position.Y + (double) this.height + 8.0) / 16;
|
|
int num28 = (int) this.position.X / 16;
|
|
int num29 = (int) ((double) this.position.X + (double) this.width) / 16;
|
|
for (int index6 = num28; index6 <= num29; ++index6)
|
|
{
|
|
if (Main.tile[index6, index5] == null)
|
|
return;
|
|
if (Main.tile[index6, index5].active && Main.tileSolid[(int) Main.tile[index6, index5].type])
|
|
{
|
|
flag3 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag3)
|
|
{
|
|
int i = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0);
|
|
int j = (int) (((double) this.position.Y + (double) this.height - 15.0) / 16.0);
|
|
if (this.type == 109)
|
|
i = (int) (((double) this.position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 16) * this.direction)) / 16.0);
|
|
if (Main.tile[i, j] == null)
|
|
Main.tile[i, j] = new Tile();
|
|
if (Main.tile[i, j - 1] == null)
|
|
Main.tile[i, j - 1] = new Tile();
|
|
if (Main.tile[i, j - 2] == null)
|
|
Main.tile[i, j - 2] = new Tile();
|
|
if (Main.tile[i, j - 3] == null)
|
|
Main.tile[i, j - 3] = new Tile();
|
|
if (Main.tile[i, j + 1] == null)
|
|
Main.tile[i, j + 1] = new Tile();
|
|
if (Main.tile[i + this.direction, j - 1] == null)
|
|
Main.tile[i + this.direction, j - 1] = new Tile();
|
|
if (Main.tile[i + this.direction, j + 1] == null)
|
|
Main.tile[i + this.direction, j + 1] = new Tile();
|
|
if (Main.tile[i, j - 1].active && Main.tile[i, j - 1].type == (byte) 10 && flag2)
|
|
{
|
|
++this.ai[2];
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[2] >= 60.0)
|
|
{
|
|
if (!Main.bloodMoon && (this.type == 3 || this.type == 132))
|
|
this.ai[1] = 0.0f;
|
|
this.velocity.X = 0.5f * (float) -this.direction;
|
|
++this.ai[1];
|
|
if (this.type == 27)
|
|
++this.ai[1];
|
|
if (this.type == 31)
|
|
this.ai[1] += 6f;
|
|
this.ai[2] = 0.0f;
|
|
bool flag4 = false;
|
|
if ((double) this.ai[1] >= 10.0)
|
|
{
|
|
flag4 = true;
|
|
this.ai[1] = 10f;
|
|
}
|
|
WorldGen.KillTile(i, j - 1, true);
|
|
if ((Main.netMode != 1 || !flag4) && flag4 && Main.netMode != 1)
|
|
{
|
|
if (this.type == 26)
|
|
{
|
|
WorldGen.KillTile(i, j - 1);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(17, number2: ((float) i), number3: ((float) (j - 1)));
|
|
}
|
|
else
|
|
{
|
|
bool flag5 = WorldGen.OpenDoor(i, j, this.direction);
|
|
if (!flag5)
|
|
{
|
|
this.ai[3] = (float) num1;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.netMode == 2 && flag5)
|
|
NetMessage.SendData(19, number2: ((float) i), number3: ((float) j), number4: ((float) this.direction));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X < 0.0 && this.spriteDirection == -1 || (double) this.velocity.X > 0.0 && this.spriteDirection == 1)
|
|
{
|
|
if (Main.tile[i, j - 2].active && Main.tileSolid[(int) Main.tile[i, j - 2].type])
|
|
{
|
|
if (Main.tile[i, j - 3].active && Main.tileSolid[(int) Main.tile[i, j - 3].type])
|
|
{
|
|
this.velocity.Y = -8f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = -7f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (Main.tile[i, j - 1].active && Main.tileSolid[(int) Main.tile[i, j - 1].type])
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (Main.tile[i, j].active && Main.tileSolid[(int) Main.tile[i, j].type])
|
|
{
|
|
this.velocity.Y = -5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.directionY < 0 && this.type != 67 && (!Main.tile[i, j + 1].active || !Main.tileSolid[(int) Main.tile[i, j + 1].type]) && (!Main.tile[i + this.direction, j + 1].active || !Main.tileSolid[(int) Main.tile[i + this.direction, j + 1].type]))
|
|
{
|
|
this.velocity.Y = -8f;
|
|
this.velocity.X *= 1.5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag2)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
if ((this.type == 31 || this.type == 47 || this.type == 77 || this.type == 104) && (double) this.velocity.Y == 0.0 && (double) Math.Abs((float) ((double) this.position.X + (double) (this.width / 2) - ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2)))) < 100.0 && (double) Math.Abs((float) ((double) this.position.Y + (double) (this.height / 2) - ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2)))) < 50.0 && (this.direction > 0 && (double) this.velocity.X >= 1.0 || this.direction < 0 && (double) this.velocity.X <= -1.0))
|
|
{
|
|
this.velocity.X *= 2f;
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X = 3f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X = -3f;
|
|
this.velocity.Y = -4f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.type == 120 && (double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 1.1f;
|
|
}
|
|
}
|
|
else if (flag2)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
if (Main.netMode == 1 || this.type != 120 || (double) this.ai[3] < (double) num1)
|
|
return;
|
|
int num30 = (int) Main.player[this.target].position.X / 16;
|
|
int num31 = (int) Main.player[this.target].position.Y / 16;
|
|
int num32 = (int) this.position.X / 16;
|
|
int num33 = (int) this.position.Y / 16;
|
|
int num34 = 20;
|
|
int num35 = 0;
|
|
bool flag6 = false;
|
|
if ((double) Math.Abs(this.position.X - Main.player[this.target].position.X) + (double) Math.Abs(this.position.Y - Main.player[this.target].position.Y) > 2000.0)
|
|
{
|
|
num35 = 100;
|
|
flag6 = true;
|
|
}
|
|
while (!flag6 && num35 < 100)
|
|
{
|
|
++num35;
|
|
int index7 = Main.rand.Next(num30 - num34, num30 + num34);
|
|
for (int index8 = Main.rand.Next(num31 - num34, num31 + num34); index8 < num31 + num34; ++index8)
|
|
{
|
|
if ((index8 < num31 - 4 || index8 > num31 + 4 || index7 < num30 - 4 || index7 > num30 + 4) && (index8 < num33 - 1 || index8 > num33 + 1 || index7 < num32 - 1 || index7 > num32 + 1) && Main.tile[index7, index8].active)
|
|
{
|
|
bool flag7 = true;
|
|
if (this.type == 32 && Main.tile[index7, index8 - 1].wall == (byte) 0)
|
|
flag7 = false;
|
|
else if (Main.tile[index7, index8 - 1].lava)
|
|
flag7 = false;
|
|
if (flag7 && Main.tileSolid[(int) Main.tile[index7, index8].type] && !Collision.SolidTiles(index7 - 1, index7 + 1, index8 - 4, index8 - 1))
|
|
{
|
|
this.position.X = (float) (index7 * 16 - this.width / 2);
|
|
this.position.Y = (float) (index8 * 16 - this.height);
|
|
this.netUpdate = true;
|
|
this.ai[3] = -120f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 4)
|
|
{
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead || !Main.player[this.target].active)
|
|
this.TargetClosest();
|
|
bool dead = Main.player[this.target].dead;
|
|
float num36 = this.position.X + (float) (this.width / 2) - Main.player[this.target].position.X - (float) (Main.player[this.target].width / 2);
|
|
float num37 = (float) Math.Atan2((double) ((float) ((double) this.position.Y + (double) this.height - 59.0) - Main.player[this.target].position.Y - (float) (Main.player[this.target].height / 2)), (double) num36) + 1.57f;
|
|
if ((double) num37 < 0.0)
|
|
num37 += 6.283f;
|
|
else if ((double) num37 > 6.283)
|
|
num37 -= 6.283f;
|
|
float num38 = 0.0f;
|
|
if ((double) this.ai[0] == 0.0 && (double) this.ai[1] == 0.0)
|
|
num38 = 0.02f;
|
|
if ((double) this.ai[0] == 0.0 && (double) this.ai[1] == 2.0 && (double) this.ai[2] > 40.0)
|
|
num38 = 0.05f;
|
|
if ((double) this.ai[0] == 3.0 && (double) this.ai[1] == 0.0)
|
|
num38 = 0.05f;
|
|
if ((double) this.ai[0] == 3.0 && (double) this.ai[1] == 2.0 && (double) this.ai[2] > 40.0)
|
|
num38 = 0.08f;
|
|
if ((double) this.rotation < (double) num37)
|
|
{
|
|
if ((double) num37 - (double) this.rotation > 3.1415)
|
|
this.rotation -= num38;
|
|
else
|
|
this.rotation += num38;
|
|
}
|
|
else if ((double) this.rotation > (double) num37)
|
|
{
|
|
if ((double) this.rotation - (double) num37 > 3.1415)
|
|
this.rotation += num38;
|
|
else
|
|
this.rotation -= num38;
|
|
}
|
|
if ((double) this.rotation > (double) num37 - (double) num38 && (double) this.rotation < (double) num37 + (double) num38)
|
|
this.rotation = num37;
|
|
if ((double) this.rotation < 0.0)
|
|
this.rotation += 6.283f;
|
|
else if ((double) this.rotation > 6.283)
|
|
this.rotation -= 6.283f;
|
|
if ((double) this.rotation > (double) num37 - (double) num38 && (double) this.rotation < (double) num37 + (double) num38)
|
|
this.rotation = num37;
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
if (Main.dayTime || dead)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if (this.timeLeft <= 10)
|
|
return;
|
|
this.timeLeft = 10;
|
|
}
|
|
else if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
float num39 = 5f;
|
|
float num40 = 0.04f;
|
|
Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num41 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_1.X;
|
|
float num42 = (float) ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2) - 200.0) - vector2_1.Y;
|
|
float num43 = (float) Math.Sqrt((double) num41 * (double) num41 + (double) num42 * (double) num42);
|
|
float num44 = num43;
|
|
float num45 = num39 / num43;
|
|
float num46 = num41 * num45;
|
|
float num47 = num42 * num45;
|
|
if ((double) this.velocity.X < (double) num46)
|
|
{
|
|
this.velocity.X += num40;
|
|
if ((double) this.velocity.X < 0.0 && (double) num46 > 0.0)
|
|
this.velocity.X += num40;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num46)
|
|
{
|
|
this.velocity.X -= num40;
|
|
if ((double) this.velocity.X > 0.0 && (double) num46 < 0.0)
|
|
this.velocity.X -= num40;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num47)
|
|
{
|
|
this.velocity.Y += num40;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num47 > 0.0)
|
|
this.velocity.Y += num40;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num47)
|
|
{
|
|
this.velocity.Y -= num40;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num47 < 0.0)
|
|
this.velocity.Y -= num40;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 600.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.position.Y + (double) this.height < (double) Main.player[this.target].position.Y && (double) num44 < 500.0)
|
|
{
|
|
if (!Main.player[this.target].dead)
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 110.0)
|
|
{
|
|
this.ai[3] = 0.0f;
|
|
this.rotation = num37;
|
|
float num48 = 5f;
|
|
float num49 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_1.X;
|
|
float num50 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2_1.Y;
|
|
float num51 = (float) Math.Sqrt((double) num49 * (double) num49 + (double) num50 * (double) num50);
|
|
float num52 = num48 / num51;
|
|
Vector2 Position = vector2_1;
|
|
Vector2 vector2_2;
|
|
vector2_2.X = num49 * num52;
|
|
vector2_2.Y = num50 * num52;
|
|
Position.X += vector2_2.X * 10f;
|
|
Position.Y += vector2_2.Y * 10f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
int number = NPC.NewNPC((int) Position.X, (int) Position.Y, 5);
|
|
Main.npc[number].velocity.X = vector2_2.X;
|
|
Main.npc[number].velocity.Y = vector2_2.Y;
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
Main.PlaySound(3, (int) Position.X, (int) Position.Y);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(Position, 20, 20, 5, vector2_2.X * 0.4f, vector2_2.Y * 0.4f);
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] == 1.0)
|
|
{
|
|
this.rotation = num37;
|
|
float num53 = 6f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num54 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num55 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num56 = (float) Math.Sqrt((double) num54 * (double) num54 + (double) num55 * (double) num55);
|
|
float num57 = num53 / num56;
|
|
this.velocity.X = num54 * num57;
|
|
this.velocity.Y = num55 * num57;
|
|
this.ai[1] = 2f;
|
|
}
|
|
else if ((double) this.ai[1] == 2.0)
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 40.0)
|
|
{
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.Y *= 0.98f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y > -0.1 && (double) this.velocity.Y < 0.1)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f;
|
|
if ((double) this.ai[2] >= 150.0)
|
|
{
|
|
++this.ai[3];
|
|
this.ai[2] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.rotation = num37;
|
|
if ((double) this.ai[3] >= 3.0)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
this.ai[1] = 1f;
|
|
}
|
|
}
|
|
if ((double) this.life >= (double) this.lifeMax * 0.5)
|
|
return;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 1.0 || (double) this.ai[0] == 2.0)
|
|
{
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.ai[2] += 0.005f;
|
|
if ((double) this.ai[2] > 0.5)
|
|
this.ai[2] = 0.5f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[2] -= 0.005f;
|
|
if ((double) this.ai[2] < 0.0)
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
this.rotation += this.ai[2];
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] == 100.0)
|
|
{
|
|
++this.ai[0];
|
|
this.ai[1] = 0.0f;
|
|
if ((double) this.ai[0] == 3.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
Main.PlaySound(3, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 8);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 7);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 6);
|
|
}
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f);
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
}
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f);
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.Y *= 0.98f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y <= -0.1 || (double) this.velocity.Y >= 0.1)
|
|
return;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.damage = 23;
|
|
this.defense = 0;
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
float num58 = 6f;
|
|
float num59 = 0.07f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num60 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num61 = (float) ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2) - 120.0) - vector2.Y;
|
|
float num62 = (float) Math.Sqrt((double) num60 * (double) num60 + (double) num61 * (double) num61);
|
|
float num63 = num58 / num62;
|
|
float num64 = num60 * num63;
|
|
float num65 = num61 * num63;
|
|
if ((double) this.velocity.X < (double) num64)
|
|
{
|
|
this.velocity.X += num59;
|
|
if ((double) this.velocity.X < 0.0 && (double) num64 > 0.0)
|
|
this.velocity.X += num59;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num64)
|
|
{
|
|
this.velocity.X -= num59;
|
|
if ((double) this.velocity.X > 0.0 && (double) num64 < 0.0)
|
|
this.velocity.X -= num59;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num65)
|
|
{
|
|
this.velocity.Y += num59;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num65 > 0.0)
|
|
this.velocity.Y += num59;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num65)
|
|
{
|
|
this.velocity.Y -= num59;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num65 < 0.0)
|
|
this.velocity.Y -= num59;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < 200.0)
|
|
return;
|
|
this.ai[1] = 1f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[1] == 1.0)
|
|
{
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
this.rotation = num37;
|
|
float num66 = 6.8f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num67 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num68 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num69 = (float) Math.Sqrt((double) num67 * (double) num67 + (double) num68 * (double) num68);
|
|
float num70 = num66 / num69;
|
|
this.velocity.X = num67 * num70;
|
|
this.velocity.Y = num68 * num70;
|
|
this.ai[1] = 2f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[1] != 2.0)
|
|
return;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 40.0)
|
|
{
|
|
this.velocity.X *= 0.97f;
|
|
this.velocity.Y *= 0.97f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y > -0.1 && (double) this.velocity.Y < 0.1)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f;
|
|
if ((double) this.ai[2] < 130.0)
|
|
return;
|
|
++this.ai[3];
|
|
this.ai[2] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.rotation = num37;
|
|
if ((double) this.ai[3] >= 3.0)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
this.ai[1] = 1f;
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 5)
|
|
{
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead)
|
|
this.TargetClosest();
|
|
float num71 = 6f;
|
|
float num72 = 0.05f;
|
|
if (this.type == 6)
|
|
{
|
|
num71 = 4f;
|
|
num72 = 0.02f;
|
|
}
|
|
else if (this.type == 94)
|
|
{
|
|
num71 = 4.2f;
|
|
num72 = 0.022f;
|
|
}
|
|
else if (this.type == 42)
|
|
{
|
|
num71 = 3.5f;
|
|
num72 = 0.021f;
|
|
}
|
|
else if (this.type == 23)
|
|
{
|
|
num71 = 1f;
|
|
num72 = 0.03f;
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
num71 = 5f;
|
|
num72 = 0.03f;
|
|
}
|
|
Vector2 vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num73 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2);
|
|
float num74 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2);
|
|
float num75 = (float) ((int) ((double) num73 / 8.0) * 8);
|
|
float num76 = (float) ((int) ((double) num74 / 8.0) * 8);
|
|
vector2_3.X = (float) ((int) ((double) vector2_3.X / 8.0) * 8);
|
|
vector2_3.Y = (float) ((int) ((double) vector2_3.Y / 8.0) * 8);
|
|
float num77 = num75 - vector2_3.X;
|
|
float num78 = num76 - vector2_3.Y;
|
|
float num79 = (float) Math.Sqrt((double) num77 * (double) num77 + (double) num78 * (double) num78);
|
|
float num80 = num79;
|
|
bool flag = false;
|
|
if ((double) num79 > 600.0)
|
|
flag = true;
|
|
float SpeedX1;
|
|
float SpeedY1;
|
|
if ((double) num79 == 0.0)
|
|
{
|
|
SpeedX1 = this.velocity.X;
|
|
SpeedY1 = this.velocity.Y;
|
|
}
|
|
else
|
|
{
|
|
float num81 = num71 / num79;
|
|
SpeedX1 = num77 * num81;
|
|
SpeedY1 = num78 * num81;
|
|
}
|
|
if (this.type == 6 || this.type == 42 || this.type == 94 || this.type == 139)
|
|
{
|
|
if ((double) num80 > 100.0 || this.type == 42 || this.type == 94)
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] > 0.0)
|
|
this.velocity.Y += 23f / 1000f;
|
|
else
|
|
this.velocity.Y -= 23f / 1000f;
|
|
if ((double) this.ai[0] < -100.0 || (double) this.ai[0] > 100.0)
|
|
this.velocity.X += 23f / 1000f;
|
|
else
|
|
this.velocity.X -= 23f / 1000f;
|
|
if ((double) this.ai[0] > 200.0)
|
|
this.ai[0] = -200f;
|
|
}
|
|
if ((double) num80 < 150.0 && (this.type == 6 || this.type == 94))
|
|
{
|
|
this.velocity.X += SpeedX1 * 0.007f;
|
|
this.velocity.Y += SpeedY1 * 0.007f;
|
|
}
|
|
}
|
|
if (Main.player[this.target].dead)
|
|
{
|
|
SpeedX1 = (float) ((double) this.direction * (double) num71 / 2.0);
|
|
SpeedY1 = (float) (-(double) num71 / 2.0);
|
|
}
|
|
if ((double) this.velocity.X < (double) SpeedX1)
|
|
{
|
|
this.velocity.X += num72;
|
|
if (this.type != 6 && this.type != 42 && this.type != 94 && this.type != 139 && (double) this.velocity.X < 0.0 && (double) SpeedX1 > 0.0)
|
|
this.velocity.X += num72;
|
|
}
|
|
else if ((double) this.velocity.X > (double) SpeedX1)
|
|
{
|
|
this.velocity.X -= num72;
|
|
if (this.type != 6 && this.type != 42 && this.type != 94 && this.type != 139 && (double) this.velocity.X > 0.0 && (double) SpeedX1 < 0.0)
|
|
this.velocity.X -= num72;
|
|
}
|
|
if ((double) this.velocity.Y < (double) SpeedY1)
|
|
{
|
|
this.velocity.Y += num72;
|
|
if (this.type != 6 && this.type != 42 && this.type != 94 && this.type != 139 && (double) this.velocity.Y < 0.0 && (double) SpeedY1 > 0.0)
|
|
this.velocity.Y += num72;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) SpeedY1)
|
|
{
|
|
this.velocity.Y -= num72;
|
|
if (this.type != 6 && this.type != 42 && this.type != 94 && this.type != 139 && (double) this.velocity.Y > 0.0 && (double) SpeedY1 < 0.0)
|
|
this.velocity.Y -= num72;
|
|
}
|
|
if (this.type == 23)
|
|
{
|
|
if ((double) SpeedX1 > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1);
|
|
}
|
|
else if ((double) SpeedX1 < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1) + 3.14f;
|
|
}
|
|
}
|
|
else if (this.type == 139)
|
|
{
|
|
++this.localAI[0];
|
|
if (this.justHit)
|
|
this.localAI[0] = 0.0f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] >= 120.0)
|
|
{
|
|
this.localAI[0] = 0.0f;
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
int Damage = 25;
|
|
int Type = 84;
|
|
Projectile.NewProjectile(vector2_3.X, vector2_3.Y, SpeedX1, SpeedY1, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
if (!WorldGen.SolidTile(((int) this.position.X + this.width / 2) / 16, ((int) this.position.Y + this.height / 2) / 16))
|
|
Lighting.addLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 0.3f, 0.1f, 0.05f);
|
|
if ((double) SpeedX1 > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1);
|
|
}
|
|
if ((double) SpeedX1 < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1) + 3.14f;
|
|
}
|
|
}
|
|
else if (this.type == 6 || this.type == 94)
|
|
this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1) - 1.57f;
|
|
else if (this.type == 42)
|
|
{
|
|
if ((double) SpeedX1 > 0.0)
|
|
this.spriteDirection = 1;
|
|
if ((double) SpeedX1 < 0.0)
|
|
this.spriteDirection = -1;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
}
|
|
else
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f;
|
|
if (this.type == 6 || this.type == 23 || this.type == 42 || this.type == 94 || this.type == 139)
|
|
{
|
|
float num82 = 0.7f;
|
|
if (this.type == 6)
|
|
num82 = 0.4f;
|
|
if (this.collideX)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.X = this.oldVelocity.X * -num82;
|
|
if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0)
|
|
this.velocity.X = 2f;
|
|
if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.Y = this.oldVelocity.Y * -num82;
|
|
if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.5)
|
|
this.velocity.Y = 2f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.5)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
if (this.type == 23)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X - this.velocity.X, this.position.Y - this.velocity.Y), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity.X *= 0.3f;
|
|
Main.dust[index].velocity.Y *= 0.3f;
|
|
}
|
|
else if (this.type != 42 && this.type != 139 && Main.rand.Next(20) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 18, this.velocity.X, 2f, 75, this.color, this.scale);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
}
|
|
else if (Main.rand.Next(40) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
if ((this.type == 6 || this.type == 94) && this.wet)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.Y -= 0.3f;
|
|
if ((double) this.velocity.Y < -2.0)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
if (this.type == 42)
|
|
{
|
|
if (this.wet)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
this.TargetClosest();
|
|
}
|
|
if ((double) this.ai[1] == 101.0)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 17);
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.ai[1] += (float) Main.rand.Next(5, 20) * 0.1f * this.scale;
|
|
if ((double) this.ai[1] >= 130.0)
|
|
{
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
float num83 = 8f;
|
|
Vector2 vector2_4 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) (this.height / 2));
|
|
float num84 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_4.X + (float) Main.rand.Next(-20, 21);
|
|
float num85 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2_4.Y + (float) Main.rand.Next(-20, 21);
|
|
if ((double) num84 < 0.0 && (double) this.velocity.X < 0.0 || (double) num84 > 0.0 && (double) this.velocity.X > 0.0)
|
|
{
|
|
float num86 = (float) Math.Sqrt((double) num84 * (double) num84 + (double) num85 * (double) num85);
|
|
float num87 = num83 / num86;
|
|
float SpeedX2 = num84 * num87;
|
|
float SpeedY2 = num85 * num87;
|
|
int Damage = (int) (13.0 * (double) this.scale);
|
|
int Type = 55;
|
|
int index = Projectile.NewProjectile(vector2_4.X, vector2_4.Y, SpeedX2, SpeedY2, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
this.ai[1] = 101f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 139 && flag)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && (double) SpeedX1 > 0.0 || (double) this.velocity.X < 0.0 && (double) SpeedX1 < 0.0)
|
|
{
|
|
if ((double) Math.Abs(this.velocity.X) < 12.0)
|
|
this.velocity.X *= 1.05f;
|
|
}
|
|
else
|
|
this.velocity.X *= 0.9f;
|
|
}
|
|
if (Main.netMode != 1 && this.type == 94 && !Main.player[this.target].dead)
|
|
{
|
|
if (this.justHit)
|
|
this.localAI[0] = 0.0f;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] == 180.0)
|
|
{
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2) + (double) this.velocity.X), (int) ((double) this.position.Y + (double) (this.height / 2) + (double) this.velocity.Y), 112);
|
|
this.localAI[0] = 0.0f;
|
|
}
|
|
}
|
|
if (Main.dayTime && this.type != 6 && this.type != 23 && this.type != 42 && this.type != 94 || Main.player[this.target].dead)
|
|
{
|
|
this.velocity.Y -= num72 * 2f;
|
|
if (this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
}
|
|
if (((double) this.velocity.X <= 0.0 || (double) this.oldVelocity.X >= 0.0) && ((double) this.velocity.X >= 0.0 || (double) this.oldVelocity.X <= 0.0) && ((double) this.velocity.Y <= 0.0 || (double) this.oldVelocity.Y >= 0.0) && ((double) this.velocity.Y >= 0.0 || (double) this.oldVelocity.Y <= 0.0) || this.justHit)
|
|
return;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.aiStyle == 6)
|
|
{
|
|
if (this.type == 117 && (double) this.localAI[1] == 0.0)
|
|
{
|
|
this.localAI[1] = 1f;
|
|
Main.PlaySound(4, (int) this.position.X, (int) this.position.Y, 13);
|
|
int num = 1;
|
|
if ((double) this.velocity.X < 0.0)
|
|
num = -1;
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(new Vector2(this.position.X - 20f, this.position.Y - 20f), this.width + 40, this.height + 40, 5, (float) (num * 8), -1f);
|
|
}
|
|
if (this.type >= 13 && this.type <= 15)
|
|
this.realLife = -1;
|
|
else if ((double) this.ai[3] > 0.0)
|
|
this.realLife = (int) this.ai[3];
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead)
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead && this.timeLeft > 300)
|
|
this.timeLeft = 300;
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (this.type == 87 && (double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
int index9 = this.whoAmI;
|
|
for (int index10 = 0; index10 < 14; ++index10)
|
|
{
|
|
int Type = 89;
|
|
if (index10 == 1 || index10 == 8)
|
|
{
|
|
Type = 88;
|
|
}
|
|
else
|
|
{
|
|
switch (index10)
|
|
{
|
|
case 11:
|
|
Type = 90;
|
|
break;
|
|
case 12:
|
|
Type = 91;
|
|
break;
|
|
case 13:
|
|
Type = 92;
|
|
break;
|
|
}
|
|
}
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI);
|
|
Main.npc[number].ai[3] = (float) this.whoAmI;
|
|
Main.npc[number].realLife = this.whoAmI;
|
|
Main.npc[number].ai[1] = (float) index9;
|
|
Main.npc[index9].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index9 = number;
|
|
}
|
|
}
|
|
if ((this.type == 7 || this.type == 8 || this.type == 10 || this.type == 11 || this.type == 13 || this.type == 14 || this.type == 39 || this.type == 40 || this.type == 95 || this.type == 96 || this.type == 98 || this.type == 99 || this.type == 117 || this.type == 118) && (double) this.ai[0] == 0.0)
|
|
{
|
|
if (this.type == 7 || this.type == 10 || this.type == 13 || this.type == 39 || this.type == 95 || this.type == 98 || this.type == 117)
|
|
{
|
|
if (this.type < 13 || this.type > 15)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
}
|
|
this.ai[2] = (float) Main.rand.Next(8, 13);
|
|
if (this.type == 10)
|
|
this.ai[2] = (float) Main.rand.Next(4, 7);
|
|
if (this.type == 13)
|
|
this.ai[2] = (float) Main.rand.Next(45, 56);
|
|
if (this.type == 39)
|
|
this.ai[2] = (float) Main.rand.Next(12, 19);
|
|
if (this.type == 95)
|
|
this.ai[2] = (float) Main.rand.Next(6, 12);
|
|
if (this.type == 98)
|
|
this.ai[2] = (float) Main.rand.Next(20, 26);
|
|
if (this.type == 117)
|
|
this.ai[2] = (float) Main.rand.Next(3, 6);
|
|
this.ai[0] = (float) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), this.type + 1, this.whoAmI);
|
|
}
|
|
else
|
|
this.ai[0] = this.type != 8 && this.type != 11 && this.type != 14 && this.type != 40 && this.type != 96 && this.type != 99 && this.type != 118 || (double) this.ai[2] <= 0.0 ? (float) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), this.type + 1, this.whoAmI) : (float) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), this.type, this.whoAmI);
|
|
if (this.type < 13 || this.type > 15)
|
|
{
|
|
Main.npc[(int) this.ai[0]].ai[3] = this.ai[3];
|
|
Main.npc[(int) this.ai[0]].realLife = this.realLife;
|
|
}
|
|
Main.npc[(int) this.ai[0]].ai[1] = (float) this.whoAmI;
|
|
Main.npc[(int) this.ai[0]].ai[2] = this.ai[2] - 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((this.type == 8 || this.type == 9 || this.type == 11 || this.type == 12 || this.type == 40 || this.type == 41 || this.type == 96 || this.type == 97 || this.type == 99 || this.type == 100 || this.type > 87 && this.type <= 92 || this.type == 118 || this.type == 119) && (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != this.aiStyle))
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
if ((this.type == 7 || this.type == 8 || this.type == 10 || this.type == 11 || this.type == 39 || this.type == 40 || this.type == 95 || this.type == 96 || this.type == 98 || this.type == 99 || this.type >= 87 && this.type < 92 || this.type == 117 || this.type == 118) && (!Main.npc[(int) this.ai[0]].active || Main.npc[(int) this.ai[0]].aiStyle != this.aiStyle))
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
{
|
|
if (!Main.npc[(int) this.ai[1]].active && !Main.npc[(int) this.ai[0]].active)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
if (this.type == 13 && !Main.npc[(int) this.ai[0]].active)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
if (this.type == 15 && !Main.npc[(int) this.ai[1]].active)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
if (this.type == 14 && (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != this.aiStyle))
|
|
{
|
|
this.type = 13;
|
|
int whoAmI = this.whoAmI;
|
|
float num88 = (float) this.life / (float) this.lifeMax;
|
|
float num89 = this.ai[0];
|
|
this.SetDefaults(this.type);
|
|
this.life = (int) ((double) this.lifeMax * (double) num88);
|
|
this.ai[0] = num89;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
this.whoAmI = whoAmI;
|
|
}
|
|
if (this.type == 14 && (!Main.npc[(int) this.ai[0]].active || Main.npc[(int) this.ai[0]].aiStyle != this.aiStyle))
|
|
{
|
|
int whoAmI = this.whoAmI;
|
|
float num90 = (float) this.life / (float) this.lifeMax;
|
|
float num91 = this.ai[1];
|
|
this.SetDefaults(this.type);
|
|
this.life = (int) ((double) this.lifeMax * (double) num90);
|
|
this.ai[1] = num91;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
this.whoAmI = whoAmI;
|
|
}
|
|
if (this.life == 0)
|
|
{
|
|
bool flag = true;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && (Main.npc[index].type == 13 || Main.npc[index].type == 14 || Main.npc[index].type == 15))
|
|
{
|
|
flag = false;
|
|
break;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.boss = true;
|
|
this.NPCLoot();
|
|
}
|
|
}
|
|
}
|
|
if (!this.active && Main.netMode == 2)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
}
|
|
int num92 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num93 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num94 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num95 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num92 < 0)
|
|
num92 = 0;
|
|
if (num93 > Main.maxTilesX)
|
|
num93 = Main.maxTilesX;
|
|
if (num94 < 0)
|
|
num94 = 0;
|
|
if (num95 > Main.maxTilesY)
|
|
num95 = Main.maxTilesY;
|
|
bool flag8 = false;
|
|
if (this.type >= 87 && this.type <= 92)
|
|
flag8 = true;
|
|
if (!flag8)
|
|
{
|
|
for (int i = num92; i < num93; ++i)
|
|
{
|
|
for (int j = num94; j < num95; ++j)
|
|
{
|
|
if (Main.tile[i, j] != null && (Main.tile[i, j].active && (Main.tileSolid[(int) Main.tile[i, j].type] || Main.tileSolidTop[(int) Main.tile[i, j].type] && Main.tile[i, j].frameY == (short) 0) || Main.tile[i, j].liquid > (byte) 64))
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (i * 16);
|
|
vector2.Y = (float) (j * 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)
|
|
{
|
|
flag8 = true;
|
|
if (Main.rand.Next(100) == 0 && this.type != 117 && Main.tile[i, j].active)
|
|
WorldGen.KillTile(i, j, true, true);
|
|
if (Main.netMode != 1 && Main.tile[i, j].type == (byte) 2)
|
|
{
|
|
int type = (int) Main.tile[i, j - 1].type;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!flag8 && (this.type == 7 || this.type == 10 || this.type == 13 || this.type == 39 || this.type == 95 || this.type == 98 || this.type == 117))
|
|
{
|
|
Rectangle rectangle1 = new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height);
|
|
int num96 = 1000;
|
|
bool flag9 = true;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
{
|
|
Rectangle rectangle2 = new Rectangle((int) Main.player[index].position.X - num96, (int) Main.player[index].position.Y - num96, num96 * 2, num96 * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
flag9 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag9)
|
|
flag8 = true;
|
|
}
|
|
if (this.type >= 87 && this.type <= 92)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.spriteDirection = 1;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.spriteDirection = -1;
|
|
}
|
|
float num97 = 8f;
|
|
float num98 = 0.07f;
|
|
if (this.type == 95)
|
|
{
|
|
num97 = 5.5f;
|
|
num98 = 0.045f;
|
|
}
|
|
if (this.type == 10)
|
|
{
|
|
num97 = 6f;
|
|
num98 = 0.05f;
|
|
}
|
|
if (this.type == 13)
|
|
{
|
|
num97 = 10f;
|
|
num98 = 0.07f;
|
|
}
|
|
if (this.type == 87)
|
|
{
|
|
num97 = 11f;
|
|
num98 = 0.25f;
|
|
}
|
|
if (this.type == 117 && Main.wof >= 0)
|
|
{
|
|
float num99 = (float) Main.npc[Main.wof].life / (float) Main.npc[Main.wof].lifeMax;
|
|
if ((double) num99 < 0.5)
|
|
{
|
|
++num97;
|
|
num98 += 0.1f;
|
|
}
|
|
if ((double) num99 < 0.25)
|
|
{
|
|
++num97;
|
|
num98 += 0.1f;
|
|
}
|
|
if ((double) num99 < 0.1)
|
|
{
|
|
num97 += 2f;
|
|
num98 += 0.1f;
|
|
}
|
|
}
|
|
Vector2 vector2_5 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num100 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2);
|
|
float num101 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2);
|
|
float num102 = (float) ((int) ((double) num100 / 16.0) * 16);
|
|
float num103 = (float) ((int) ((double) num101 / 16.0) * 16);
|
|
vector2_5.X = (float) ((int) ((double) vector2_5.X / 16.0) * 16);
|
|
vector2_5.Y = (float) ((int) ((double) vector2_5.Y / 16.0) * 16);
|
|
float num104 = num102 - vector2_5.X;
|
|
float num105 = num103 - vector2_5.Y;
|
|
float num106 = (float) Math.Sqrt((double) num104 * (double) num104 + (double) num105 * (double) num105);
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
if ((double) this.ai[1] < (double) Main.npc.Length)
|
|
{
|
|
try
|
|
{
|
|
vector2_5 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
num104 = Main.npc[(int) this.ai[1]].position.X + (float) (Main.npc[(int) this.ai[1]].width / 2) - vector2_5.X;
|
|
num105 = Main.npc[(int) this.ai[1]].position.Y + (float) (Main.npc[(int) this.ai[1]].height / 2) - vector2_5.Y;
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) num105, (double) num104) + 1.57f;
|
|
float num107 = (float) Math.Sqrt((double) num104 * (double) num104 + (double) num105 * (double) num105);
|
|
int num108 = this.width;
|
|
if (this.type >= 87 && this.type <= 92)
|
|
num108 = 42;
|
|
float num109 = (num107 - (float) num108) / num107;
|
|
float num110 = num104 * num109;
|
|
float num111 = num105 * num109;
|
|
this.velocity = new Vector2();
|
|
this.position.X += num110;
|
|
this.position.Y += num111;
|
|
if (this.type < 87 || this.type > 92)
|
|
return;
|
|
if ((double) num110 < 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
return;
|
|
}
|
|
if ((double) num110 <= 0.0)
|
|
return;
|
|
this.spriteDirection = -1;
|
|
return;
|
|
}
|
|
}
|
|
if (!flag8)
|
|
{
|
|
this.TargetClosest();
|
|
this.velocity.Y += 0.11f;
|
|
if ((double) this.velocity.Y > (double) num97)
|
|
this.velocity.Y = num97;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num97 * 0.4)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= num98 * 1.1f;
|
|
else
|
|
this.velocity.X += num98 * 1.1f;
|
|
}
|
|
else if ((double) this.velocity.Y == (double) num97)
|
|
{
|
|
if ((double) this.velocity.X < (double) num104)
|
|
this.velocity.X += num98;
|
|
else if ((double) this.velocity.X > (double) num104)
|
|
this.velocity.X -= num98;
|
|
}
|
|
else if ((double) this.velocity.Y > 4.0)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += num98 * 0.9f;
|
|
else
|
|
this.velocity.X -= num98 * 0.9f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 87 && this.type != 117 && this.soundDelay == 0)
|
|
{
|
|
float num112 = num106 / 40f;
|
|
if ((double) num112 < 10.0)
|
|
num112 = 10f;
|
|
if ((double) num112 > 20.0)
|
|
num112 = 20f;
|
|
this.soundDelay = (int) num112;
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
float num113 = (float) Math.Sqrt((double) num104 * (double) num104 + (double) num105 * (double) num105);
|
|
float num114 = Math.Abs(num104);
|
|
float num115 = Math.Abs(num105);
|
|
float num116 = num97 / num113;
|
|
float num117 = num104 * num116;
|
|
float num118 = num105 * num116;
|
|
if ((this.type == 13 || this.type == 7) && !Main.player[this.target].zoneEvil)
|
|
{
|
|
bool flag10 = true;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && !Main.player[index].dead && Main.player[index].zoneEvil)
|
|
flag10 = false;
|
|
}
|
|
if (flag10)
|
|
{
|
|
if (Main.netMode != 1 && (double) this.position.Y / 16.0 > (Main.rockLayer + (double) Main.maxTilesY) / 2.0)
|
|
{
|
|
this.active = false;
|
|
int num119;
|
|
for (int number = (int) this.ai[0]; number > 0 && number < 200 && Main.npc[number].active && Main.npc[number].aiStyle == this.aiStyle; number = num119)
|
|
{
|
|
num119 = (int) Main.npc[number].ai[0];
|
|
Main.npc[number].active = false;
|
|
this.life = 0;
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
}
|
|
num117 = 0.0f;
|
|
num118 = num97;
|
|
}
|
|
}
|
|
bool flag11 = false;
|
|
if (this.type == 87)
|
|
{
|
|
if (((double) this.velocity.X > 0.0 && (double) num117 < 0.0 || (double) this.velocity.X < 0.0 && (double) num117 > 0.0 || (double) this.velocity.Y > 0.0 && (double) num118 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num118 > 0.0) && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > (double) num98 / 2.0 && (double) num113 < 300.0)
|
|
{
|
|
flag11 = true;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num97)
|
|
this.velocity *= 1.1f;
|
|
}
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y || (double) Main.player[this.target].position.Y / 16.0 > Main.worldSurface || Main.player[this.target].dead)
|
|
{
|
|
flag11 = true;
|
|
if ((double) Math.Abs(this.velocity.X) < (double) num97 / 2.0)
|
|
{
|
|
if ((double) this.velocity.X == 0.0)
|
|
this.velocity.X -= (float) this.direction;
|
|
this.velocity.X *= 1.1f;
|
|
}
|
|
else if ((double) this.velocity.Y > -(double) num97)
|
|
this.velocity.Y -= num98;
|
|
}
|
|
}
|
|
if (!flag11)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && (double) num117 > 0.0 || (double) this.velocity.X < 0.0 && (double) num117 < 0.0 || (double) this.velocity.Y > 0.0 && (double) num118 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num118 < 0.0)
|
|
{
|
|
if ((double) this.velocity.X < (double) num117)
|
|
this.velocity.X += num98;
|
|
else if ((double) this.velocity.X > (double) num117)
|
|
this.velocity.X -= num98;
|
|
if ((double) this.velocity.Y < (double) num118)
|
|
this.velocity.Y += num98;
|
|
else if ((double) this.velocity.Y > (double) num118)
|
|
this.velocity.Y -= num98;
|
|
if ((double) Math.Abs(num118) < (double) num97 * 0.2 && ((double) this.velocity.X > 0.0 && (double) num117 < 0.0 || (double) this.velocity.X < 0.0 && (double) num117 > 0.0))
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num98 * 2f;
|
|
else
|
|
this.velocity.Y -= num98 * 2f;
|
|
}
|
|
if ((double) Math.Abs(num117) < (double) num97 * 0.2 && ((double) this.velocity.Y > 0.0 && (double) num118 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num118 > 0.0))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num98 * 2f;
|
|
else
|
|
this.velocity.X -= num98 * 2f;
|
|
}
|
|
}
|
|
else if ((double) num114 > (double) num115)
|
|
{
|
|
if ((double) this.velocity.X < (double) num117)
|
|
this.velocity.X += num98 * 1.1f;
|
|
else if ((double) this.velocity.X > (double) num117)
|
|
this.velocity.X -= num98 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num97 * 0.5)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num98;
|
|
else
|
|
this.velocity.Y -= num98;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y < (double) num118)
|
|
this.velocity.Y += num98 * 1.1f;
|
|
else if ((double) this.velocity.Y > (double) num118)
|
|
this.velocity.Y -= num98 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num97 * 0.5)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num98;
|
|
else
|
|
this.velocity.X -= num98;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
if (this.type != 7 && this.type != 10 && this.type != 13 && this.type != 39 && this.type != 95 && this.type != 98 && this.type != 117)
|
|
return;
|
|
if (flag8)
|
|
{
|
|
if ((double) this.localAI[0] != 1.0)
|
|
this.netUpdate = true;
|
|
this.localAI[0] = 1f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.localAI[0] != 0.0)
|
|
this.netUpdate = true;
|
|
this.localAI[0] = 0.0f;
|
|
}
|
|
if (((double) this.velocity.X <= 0.0 || (double) this.oldVelocity.X >= 0.0) && ((double) this.velocity.X >= 0.0 || (double) this.oldVelocity.X <= 0.0) && ((double) this.velocity.Y <= 0.0 || (double) this.oldVelocity.Y >= 0.0) && ((double) this.velocity.Y >= 0.0 || (double) this.oldVelocity.Y <= 0.0) || this.justHit)
|
|
return;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.aiStyle == 7)
|
|
{
|
|
if (this.type == 142 && Main.netMode != 1 && !Main.xMas)
|
|
{
|
|
this.StrikeNPC(9999, 0.0f, 0);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: 9999f);
|
|
}
|
|
int index11 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int index12 = (int) ((double) this.position.Y + (double) this.height + 1.0) / 16;
|
|
if (this.type == 107)
|
|
NPC.savedGoblin = true;
|
|
if (this.type == 108)
|
|
NPC.savedWizard = true;
|
|
if (this.type == 124)
|
|
NPC.savedMech = true;
|
|
if (this.type == 46 && this.target == (int) byte.MaxValue)
|
|
this.TargetClosest();
|
|
bool flag12 = false;
|
|
this.directionY = -1;
|
|
if (this.direction == 0)
|
|
this.direction = 1;
|
|
for (int index13 = 0; index13 < (int) byte.MaxValue; ++index13)
|
|
{
|
|
if (Main.player[index13].active && Main.player[index13].talkNPC == this.whoAmI)
|
|
{
|
|
flag12 = true;
|
|
if ((double) this.ai[0] != 0.0)
|
|
this.netUpdate = true;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 300f;
|
|
this.ai[2] = 100f;
|
|
this.direction = (double) Main.player[index13].position.X + (double) (Main.player[index13].width / 2) >= (double) this.position.X + (double) (this.width / 2) ? 1 : -1;
|
|
}
|
|
}
|
|
if ((double) this.ai[3] > 0.0)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
if (this.type == 37)
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
if (this.type == 37 && Main.netMode != 1)
|
|
{
|
|
this.homeless = false;
|
|
this.homeTileX = Main.dungeonX;
|
|
this.homeTileY = Main.dungeonY;
|
|
if (NPC.downedBoss3)
|
|
{
|
|
this.ai[3] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
int homeTileY = this.homeTileY;
|
|
if (Main.netMode != 1 && this.homeTileY > 0)
|
|
{
|
|
while (!WorldGen.SolidTile(this.homeTileX, homeTileY) && homeTileY < Main.maxTilesY - 20)
|
|
++homeTileY;
|
|
}
|
|
if (Main.netMode != 1 && this.townNPC && (!Main.dayTime || Main.tileDungeon[(int) Main.tile[index11, index12].type]) && (index11 != this.homeTileX || index12 != homeTileY) && !this.homeless)
|
|
{
|
|
bool flag13 = true;
|
|
for (int index14 = 0; index14 < 2; ++index14)
|
|
{
|
|
Rectangle rectangle = new Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
|
|
if (index14 == 1)
|
|
rectangle = new Rectangle(this.homeTileX * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, homeTileY * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
|
|
for (int index15 = 0; index15 < (int) byte.MaxValue; ++index15)
|
|
{
|
|
if (Main.player[index15].active && new Rectangle((int) Main.player[index15].position.X, (int) Main.player[index15].position.Y, Main.player[index15].width, Main.player[index15].height).Intersects(rectangle))
|
|
{
|
|
flag13 = false;
|
|
break;
|
|
}
|
|
if (!flag13)
|
|
break;
|
|
}
|
|
}
|
|
if (flag13)
|
|
{
|
|
if (this.type == 37 || !Collision.SolidTiles(this.homeTileX - 1, this.homeTileX + 1, homeTileY - 3, homeTileY - 1))
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
this.position.X = (float) (this.homeTileX * 16 + 8 - this.width / 2);
|
|
this.position.Y = (float) (homeTileY * 16 - this.height) - 0.1f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.homeless = true;
|
|
WorldGen.QuickFindHome(this.whoAmI);
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) this.ai[2] > 0.0)
|
|
--this.ai[2];
|
|
if (!Main.dayTime && !flag12 && this.type != 46)
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (index11 == this.homeTileX && index12 == homeTileY)
|
|
{
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.netUpdate = true;
|
|
if ((double) this.velocity.X > 0.1)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X < -0.1)
|
|
this.velocity.X += 0.1f;
|
|
else
|
|
this.velocity.X = 0.0f;
|
|
}
|
|
else if (!flag12)
|
|
{
|
|
this.direction = index11 <= this.homeTileX ? 1 : -1;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (200 + Main.rand.Next(200));
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X > 0.1)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X < -0.1)
|
|
this.velocity.X += 0.1f;
|
|
else
|
|
this.velocity.X = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
if ((double) this.ai[1] > 0.0)
|
|
--this.ai[1];
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (200 + Main.rand.Next(200));
|
|
if (this.type == 46)
|
|
this.ai[1] += (float) Main.rand.Next(200, 400);
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode == 1 || !Main.dayTime && (index11 != this.homeTileX || index12 != homeTileY))
|
|
return;
|
|
if (index11 < this.homeTileX - 25 || index11 > this.homeTileX + 25)
|
|
{
|
|
if ((double) this.ai[2] != 0.0)
|
|
return;
|
|
if (index11 < this.homeTileX - 50 && this.direction == -1)
|
|
{
|
|
this.direction = 1;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if (index11 <= this.homeTileX + 50 || this.direction != 1)
|
|
return;
|
|
this.direction = -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (Main.rand.Next(80) != 0 || (double) this.ai[2] != 0.0)
|
|
return;
|
|
this.ai[2] = 200f;
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] != 1.0)
|
|
return;
|
|
if (Main.netMode != 1 && !Main.dayTime && index11 == this.homeTileX && index12 == this.homeTileY && this.type != 46)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (200 + Main.rand.Next(200));
|
|
this.ai[2] = 60f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 1 && !this.homeless && !Main.tileDungeon[(int) Main.tile[index11, index12].type] && (index11 < this.homeTileX - 35 || index11 > this.homeTileX + 35))
|
|
{
|
|
if ((double) this.position.X < (double) (this.homeTileX * 16) && this.direction == -1)
|
|
this.ai[1] -= 5f;
|
|
else if ((double) this.position.X > (double) (this.homeTileX * 16) && this.direction == 1)
|
|
this.ai[1] -= 5f;
|
|
}
|
|
--this.ai[1];
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (300 + Main.rand.Next(300));
|
|
if (this.type == 46)
|
|
this.ai[1] -= (float) Main.rand.Next(100);
|
|
this.ai[2] = 60f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.closeDoor && (((double) this.position.X + (double) (this.width / 2)) / 16.0 > (double) (this.doorX + 2) || ((double) this.position.X + (double) (this.width / 2)) / 16.0 < (double) (this.doorX - 2)))
|
|
{
|
|
if (WorldGen.CloseDoor(this.doorX, this.doorY))
|
|
{
|
|
this.closeDoor = false;
|
|
NetMessage.SendData(19, number: 1, number2: ((float) this.doorX), number3: ((float) this.doorY), number4: ((float) this.direction));
|
|
}
|
|
if (((double) this.position.X + (double) (this.width / 2)) / 16.0 > (double) (this.doorX + 4) || ((double) this.position.X + (double) (this.width / 2)) / 16.0 < (double) (this.doorX - 4) || ((double) this.position.Y + (double) (this.height / 2)) / 16.0 > (double) (this.doorY + 4) || ((double) this.position.Y + (double) (this.height / 2)) / 16.0 < (double) (this.doorY - 4))
|
|
this.closeDoor = false;
|
|
}
|
|
if ((double) this.velocity.X < -1.0 || (double) this.velocity.X > 1.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 1.15 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > 1.0)
|
|
this.velocity.X = 1f;
|
|
}
|
|
else if ((double) this.velocity.X > -1.0 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X > 1.0)
|
|
this.velocity.X = 1f;
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
return;
|
|
if ((double) this.position.X == (double) this.ai[2])
|
|
this.direction *= -1;
|
|
this.ai[2] = -1f;
|
|
int index16 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0);
|
|
int index17 = (int) (((double) this.position.Y + (double) this.height - 16.0) / 16.0);
|
|
if (Main.tile[index16, index17] == null)
|
|
Main.tile[index16, index17] = new Tile();
|
|
if (Main.tile[index16, index17 - 1] == null)
|
|
Main.tile[index16, index17 - 1] = new Tile();
|
|
if (Main.tile[index16, index17 - 2] == null)
|
|
Main.tile[index16, index17 - 2] = new Tile();
|
|
if (Main.tile[index16, index17 - 3] == null)
|
|
Main.tile[index16, index17 - 3] = new Tile();
|
|
if (Main.tile[index16, index17 + 1] == null)
|
|
Main.tile[index16, index17 + 1] = new Tile();
|
|
if (Main.tile[index16 + this.direction, index17 - 1] == null)
|
|
Main.tile[index16 + this.direction, index17 - 1] = new Tile();
|
|
if (Main.tile[index16 + this.direction, index17 + 1] == null)
|
|
Main.tile[index16 + this.direction, index17 + 1] = new Tile();
|
|
if (this.townNPC && Main.tile[index16, index17 - 2].active && Main.tile[index16, index17 - 2].type == (byte) 10 && (Main.rand.Next(10) == 0 || !Main.dayTime))
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
if (WorldGen.OpenDoor(index16, index17 - 2, this.direction))
|
|
{
|
|
this.closeDoor = true;
|
|
this.doorX = index16;
|
|
this.doorY = index17 - 2;
|
|
NetMessage.SendData(19, number2: ((float) index16), number3: ((float) (index17 - 2)), number4: ((float) this.direction));
|
|
this.netUpdate = true;
|
|
this.ai[1] += 80f;
|
|
}
|
|
else if (WorldGen.OpenDoor(index16, index17 - 2, -this.direction))
|
|
{
|
|
this.closeDoor = true;
|
|
this.doorX = index16;
|
|
this.doorY = index17 - 2;
|
|
NetMessage.SendData(19, number2: ((float) index16), number3: ((float) (index17 - 2)), number4: ((float) -this.direction));
|
|
this.netUpdate = true;
|
|
this.ai[1] += 80f;
|
|
}
|
|
else
|
|
{
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X < 0.0 && this.spriteDirection == -1 || (double) this.velocity.X > 0.0 && this.spriteDirection == 1)
|
|
{
|
|
if (Main.tile[index16, index17 - 2].active && Main.tileSolid[(int) Main.tile[index16, index17 - 2].type] && !Main.tileSolidTop[(int) Main.tile[index16, index17 - 2].type])
|
|
{
|
|
if (this.direction == 1 && !Collision.SolidTiles(index16 - 2, index16 - 1, index17 - 5, index17 - 1) || this.direction == -1 && !Collision.SolidTiles(index16 + 1, index16 + 2, index17 - 5, index17 - 1))
|
|
{
|
|
if (!Collision.SolidTiles(index16, index16, index17 - 5, index17 - 3))
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (Main.tile[index16, index17 - 1].active && Main.tileSolid[(int) Main.tile[index16, index17 - 1].type] && !Main.tileSolidTop[(int) Main.tile[index16, index17 - 1].type])
|
|
{
|
|
if (this.direction == 1 && !Collision.SolidTiles(index16 - 2, index16 - 1, index17 - 4, index17 - 1) || this.direction == -1 && !Collision.SolidTiles(index16 + 1, index16 + 2, index17 - 4, index17 - 1))
|
|
{
|
|
if (!Collision.SolidTiles(index16, index16, index17 - 4, index17 - 2))
|
|
{
|
|
this.velocity.Y = -5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (Main.tile[index16, index17].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16, index17].type])
|
|
{
|
|
if (!Main.tileSolidTop[(int) Main.tile[index16, index17].type])
|
|
{
|
|
if (this.direction == 1 && !Collision.SolidTiles(index16 - 2, index16, index17 - 3, index17 - 1) || this.direction == -1 && !Collision.SolidTiles(index16, index16 + 2, index17 - 3, index17 - 1))
|
|
{
|
|
this.velocity.Y = -3.6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
try
|
|
{
|
|
if (Main.tile[index16, index17 + 1] == null)
|
|
Main.tile[index16, index17 + 1] = new Tile();
|
|
if (Main.tile[index16 - this.direction, index17 + 1] == null)
|
|
Main.tile[index16 - this.direction, index17 + 1] = new Tile();
|
|
if (Main.tile[index16, index17 + 2] == null)
|
|
Main.tile[index16, index17 + 2] = new Tile();
|
|
if (Main.tile[index16 - this.direction, index17 + 2] == null)
|
|
Main.tile[index16 - this.direction, index17 + 2] = new Tile();
|
|
if (Main.tile[index16, index17 + 3] == null)
|
|
Main.tile[index16, index17 + 3] = new Tile();
|
|
if (Main.tile[index16 - this.direction, index17 + 3] == null)
|
|
Main.tile[index16 - this.direction, index17 + 3] = new Tile();
|
|
if (Main.tile[index16, index17 + 4] == null)
|
|
Main.tile[index16, index17 + 4] = new Tile();
|
|
if (Main.tile[index16 - this.direction, index17 + 4] == null)
|
|
Main.tile[index16 - this.direction, index17 + 4] = new Tile();
|
|
else if (index11 >= this.homeTileX - 35)
|
|
{
|
|
if (index11 <= this.homeTileX + 35)
|
|
{
|
|
if (Main.tile[index16, index17 + 1].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16, index17 + 1].type])
|
|
goto label_1136;
|
|
}
|
|
if (Main.tile[index16 - this.direction, index17 + 1].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16 - this.direction, index17 + 1].type])
|
|
goto label_1136;
|
|
}
|
|
if (Main.tile[index16, index17 + 2].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16, index17 + 2].type])
|
|
goto label_1136;
|
|
}
|
|
if (Main.tile[index16 - this.direction, index17 + 2].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16 - this.direction, index17 + 2].type])
|
|
goto label_1136;
|
|
}
|
|
if (Main.tile[index16, index17 + 3].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16, index17 + 3].type])
|
|
goto label_1136;
|
|
}
|
|
if (Main.tile[index16 - this.direction, index17 + 3].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16 - this.direction, index17 + 3].type])
|
|
goto label_1136;
|
|
}
|
|
if (Main.tile[index16, index17 + 4].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16, index17 + 4].type])
|
|
goto label_1136;
|
|
}
|
|
if (Main.tile[index16 - this.direction, index17 + 4].active)
|
|
{
|
|
if (Main.tileSolid[(int) Main.tile[index16 - this.direction, index17 + 4].type])
|
|
goto label_1136;
|
|
}
|
|
if (this.type != 46)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X *= -1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
label_1136:
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.ai[2] = this.position.X;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0 && this.wet)
|
|
this.velocity.Y *= 1.2f;
|
|
if ((double) this.velocity.Y >= 0.0 || this.type != 46)
|
|
return;
|
|
this.velocity.Y *= 1.2f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 8)
|
|
{
|
|
this.TargetClosest();
|
|
this.velocity.X *= 0.93f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.ai[0] == 0.0)
|
|
this.ai[0] = 500f;
|
|
if ((double) this.ai[2] != 0.0 && (double) this.ai[3] != 0.0)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 8);
|
|
for (int index18 = 0; index18 < 50; ++index18)
|
|
{
|
|
if (this.type == 29 || this.type == 45)
|
|
{
|
|
int index19 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 27, Alpha: 100, Scale: ((float) Main.rand.Next(1, 3)));
|
|
Main.dust[index19].velocity *= 3f;
|
|
if ((double) Main.dust[index19].scale > 1.0)
|
|
Main.dust[index19].noGravity = true;
|
|
}
|
|
else if (this.type == 32)
|
|
{
|
|
int index20 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index20].velocity *= 3f;
|
|
Main.dust[index20].noGravity = true;
|
|
}
|
|
else
|
|
{
|
|
int index21 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index21].velocity *= 3f;
|
|
Main.dust[index21].noGravity = true;
|
|
}
|
|
}
|
|
this.position.X = (float) ((double) this.ai[2] * 16.0 - (double) (this.width / 2) + 8.0);
|
|
this.position.Y = this.ai[3] * 16f - (float) this.height;
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 8);
|
|
for (int index22 = 0; index22 < 50; ++index22)
|
|
{
|
|
if (this.type == 29 || this.type == 45)
|
|
{
|
|
int index23 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 27, Alpha: 100, Scale: ((float) Main.rand.Next(1, 3)));
|
|
Main.dust[index23].velocity *= 3f;
|
|
if ((double) Main.dust[index23].scale > 1.0)
|
|
Main.dust[index23].noGravity = true;
|
|
}
|
|
else if (this.type == 32)
|
|
{
|
|
int index24 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index24].velocity *= 3f;
|
|
Main.dust[index24].noGravity = true;
|
|
}
|
|
else
|
|
{
|
|
int index25 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index25].velocity *= 3f;
|
|
Main.dust[index25].noGravity = true;
|
|
}
|
|
}
|
|
}
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] == 100.0 || (double) this.ai[0] == 200.0 || (double) this.ai[0] == 300.0)
|
|
{
|
|
this.ai[1] = 30f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] >= 650.0 && Main.netMode != 1)
|
|
{
|
|
this.ai[0] = 1f;
|
|
int num120 = (int) Main.player[this.target].position.X / 16;
|
|
int num121 = (int) Main.player[this.target].position.Y / 16;
|
|
int num122 = (int) this.position.X / 16;
|
|
int num123 = (int) this.position.Y / 16;
|
|
int num124 = 20;
|
|
int num125 = 0;
|
|
bool flag14 = false;
|
|
if ((double) Math.Abs(this.position.X - Main.player[this.target].position.X) + (double) Math.Abs(this.position.Y - Main.player[this.target].position.Y) > 2000.0)
|
|
{
|
|
num125 = 100;
|
|
flag14 = true;
|
|
}
|
|
while (!flag14 && num125 < 100)
|
|
{
|
|
++num125;
|
|
int index26 = Main.rand.Next(num120 - num124, num120 + num124);
|
|
for (int index27 = Main.rand.Next(num121 - num124, num121 + num124); index27 < num121 + num124; ++index27)
|
|
{
|
|
if ((index27 < num121 - 4 || index27 > num121 + 4 || index26 < num120 - 4 || index26 > num120 + 4) && (index27 < num123 - 1 || index27 > num123 + 1 || index26 < num122 - 1 || index26 > num122 + 1) && Main.tile[index26, index27].active)
|
|
{
|
|
bool flag15 = true;
|
|
if (this.type == 32 && Main.tile[index26, index27 - 1].wall == (byte) 0)
|
|
flag15 = false;
|
|
else if (Main.tile[index26, index27 - 1].lava)
|
|
flag15 = false;
|
|
if (flag15 && Main.tileSolid[(int) Main.tile[index26, index27].type] && !Collision.SolidTiles(index26 - 1, index26 + 1, index27 - 4, index27 - 1))
|
|
{
|
|
this.ai[1] = 20f;
|
|
this.ai[2] = (float) index26;
|
|
this.ai[3] = (float) index27;
|
|
flag14 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
--this.ai[1];
|
|
if ((double) this.ai[1] == 25.0)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 8);
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (this.type == 29 || this.type == 45)
|
|
NPC.NewNPC((int) this.position.X + this.width / 2, (int) this.position.Y - 8, 30);
|
|
else if (this.type == 32)
|
|
NPC.NewNPC((int) this.position.X + this.width / 2, (int) this.position.Y - 8, 33);
|
|
else
|
|
NPC.NewNPC((int) this.position.X + this.width / 2 + this.direction * 8, (int) this.position.Y + 20, 25);
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 29 || this.type == 45)
|
|
{
|
|
if (Main.rand.Next(5) != 0)
|
|
return;
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 27, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 1.5f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y = -2f;
|
|
}
|
|
else if (this.type == 32)
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 29, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity.X *= 1f;
|
|
Main.dust[index].velocity.Y *= 1f;
|
|
}
|
|
else
|
|
{
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity.X *= 1f;
|
|
Main.dust[index].velocity.Y *= 1f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 9)
|
|
{
|
|
if (this.target == (int) byte.MaxValue)
|
|
{
|
|
this.TargetClosest();
|
|
float num126 = 6f;
|
|
if (this.type == 25)
|
|
num126 = 5f;
|
|
if (this.type == 112)
|
|
num126 = 7f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num127 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num128 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num129 = (float) Math.Sqrt((double) num127 * (double) num127 + (double) num128 * (double) num128);
|
|
float num130 = num126 / num129;
|
|
this.velocity.X = num127 * num130;
|
|
this.velocity.Y = num128 * num130;
|
|
}
|
|
if (this.type == 112)
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] > 3.0)
|
|
this.ai[0] = 3f;
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
this.position += this.velocity;
|
|
Main.PlaySound(4, (int) this.position.X, (int) this.position.Y, 9);
|
|
for (int index28 = 0; index28 < 20; ++index28)
|
|
{
|
|
int index29 = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 18, Alpha: 100, Scale: 1.8f);
|
|
Main.dust[index29].velocity *= 1.3f;
|
|
Main.dust[index29].velocity += this.velocity;
|
|
Main.dust[index29].noGravity = true;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 112 && Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num131 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int num132 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
int num133 = 8;
|
|
for (int index30 = num131 - num133; index30 <= num131 + num133; ++index30)
|
|
{
|
|
for (int index31 = num132 - num133; index31 < num132 + num133; ++index31)
|
|
{
|
|
if ((double) (Math.Abs(index30 - num131) + Math.Abs(index31 - num132)) < (double) num133 * 0.5)
|
|
{
|
|
if (Main.tile[index30, index31].type == (byte) 2)
|
|
{
|
|
Main.tile[index30, index31].type = (byte) 23;
|
|
WorldGen.SquareTileFrame(index30, index31);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, index30, index31, 1);
|
|
}
|
|
else if (Main.tile[index30, index31].type == (byte) 1)
|
|
{
|
|
Main.tile[index30, index31].type = (byte) 25;
|
|
WorldGen.SquareTileFrame(index30, index31);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, index30, index31, 1);
|
|
}
|
|
else if (Main.tile[index30, index31].type == (byte) 53)
|
|
{
|
|
Main.tile[index30, index31].type = (byte) 112;
|
|
WorldGen.SquareTileFrame(index30, index31);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, index30, index31, 1);
|
|
}
|
|
else if (Main.tile[index30, index31].type == (byte) 109)
|
|
{
|
|
Main.tile[index30, index31].type = (byte) 23;
|
|
WorldGen.SquareTileFrame(index30, index31);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, index30, index31, 1);
|
|
}
|
|
else if (Main.tile[index30, index31].type == (byte) 117)
|
|
{
|
|
Main.tile[index30, index31].type = (byte) 25;
|
|
WorldGen.SquareTileFrame(index30, index31);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, index30, index31, 1);
|
|
}
|
|
else if (Main.tile[index30, index31].type == (byte) 116)
|
|
{
|
|
Main.tile[index30, index31].type = (byte) 112;
|
|
WorldGen.SquareTileFrame(index30, index31);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, index30, index31, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.StrikeNPC(999, 0.0f, 0);
|
|
}
|
|
if (this.timeLeft > 100)
|
|
this.timeLeft = 100;
|
|
for (int index32 = 0; index32 < 2; ++index32)
|
|
{
|
|
if (this.type == 30)
|
|
{
|
|
int index33 = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 27, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index33].noGravity = true;
|
|
Main.dust[index33].velocity *= 0.3f;
|
|
Main.dust[index33].velocity.X -= this.velocity.X * 0.2f;
|
|
Main.dust[index33].velocity.Y -= this.velocity.Y * 0.2f;
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
int index34 = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 29, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index34].noGravity = true;
|
|
Main.dust[index34].velocity.X *= 0.3f;
|
|
Main.dust[index34].velocity.Y *= 0.3f;
|
|
}
|
|
else if (this.type == 112)
|
|
{
|
|
int index35 = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 18, this.velocity.X * 0.1f, this.velocity.Y * 0.1f, 80, Scale: 1.3f);
|
|
Main.dust[index35].velocity *= 0.3f;
|
|
Main.dust[index35].noGravity = true;
|
|
}
|
|
else
|
|
{
|
|
Lighting.addLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 1f, 0.3f, 0.1f);
|
|
int index36 = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f);
|
|
Main.dust[index36].noGravity = true;
|
|
Main.dust[index36].velocity.X *= 0.3f;
|
|
Main.dust[index36].velocity.Y *= 0.3f;
|
|
}
|
|
}
|
|
this.rotation += 0.4f * (float) this.direction;
|
|
}
|
|
else if (this.aiStyle == 10)
|
|
{
|
|
float num134 = 1f;
|
|
float num135 = 11f / 1000f;
|
|
this.TargetClosest();
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num136 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num137 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num138 = (float) Math.Sqrt((double) num136 * (double) num136 + (double) num137 * (double) num137);
|
|
float num139 = num138;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] > 600.0)
|
|
{
|
|
num135 *= 8f;
|
|
num134 = 4f;
|
|
if ((double) this.ai[1] > 650.0)
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else if ((double) num139 < 250.0)
|
|
{
|
|
this.ai[0] += 0.9f;
|
|
if ((double) this.ai[0] > 0.0)
|
|
this.velocity.Y += 0.019f;
|
|
else
|
|
this.velocity.Y -= 0.019f;
|
|
if ((double) this.ai[0] < -100.0 || (double) this.ai[0] > 100.0)
|
|
this.velocity.X += 0.019f;
|
|
else
|
|
this.velocity.X -= 0.019f;
|
|
if ((double) this.ai[0] > 200.0)
|
|
this.ai[0] = -200f;
|
|
}
|
|
if ((double) num139 > 350.0)
|
|
{
|
|
num134 = 5f;
|
|
num135 = 0.3f;
|
|
}
|
|
else if ((double) num139 > 300.0)
|
|
{
|
|
num134 = 3f;
|
|
num135 = 0.2f;
|
|
}
|
|
else if ((double) num139 > 250.0)
|
|
{
|
|
num134 = 1.5f;
|
|
num135 = 0.1f;
|
|
}
|
|
float num140 = num134 / num138;
|
|
float num141 = num136 * num140;
|
|
float num142 = num137 * num140;
|
|
if (Main.player[this.target].dead)
|
|
{
|
|
num141 = (float) ((double) this.direction * (double) num134 / 2.0);
|
|
num142 = (float) (-(double) num134 / 2.0);
|
|
}
|
|
if ((double) this.velocity.X < (double) num141)
|
|
this.velocity.X += num135;
|
|
else if ((double) this.velocity.X > (double) num141)
|
|
this.velocity.X -= num135;
|
|
if ((double) this.velocity.Y < (double) num142)
|
|
this.velocity.Y += num135;
|
|
else if ((double) this.velocity.Y > (double) num142)
|
|
this.velocity.Y -= num135;
|
|
if ((double) num141 > 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) num142, (double) num141);
|
|
}
|
|
if ((double) num141 >= 0.0)
|
|
return;
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) num142, (double) num141) + 3.14f;
|
|
}
|
|
else if (this.aiStyle == 11)
|
|
{
|
|
if ((double) this.ai[0] == 0.0 && Main.netMode != 1)
|
|
{
|
|
this.TargetClosest();
|
|
this.ai[0] = 1f;
|
|
if (this.type != 68)
|
|
{
|
|
int index37 = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) this.position.Y + this.height / 2, 36, this.whoAmI);
|
|
Main.npc[index37].ai[0] = -1f;
|
|
Main.npc[index37].ai[1] = (float) this.whoAmI;
|
|
Main.npc[index37].target = this.target;
|
|
Main.npc[index37].netUpdate = true;
|
|
int index38 = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) this.position.Y + this.height / 2, 36, this.whoAmI);
|
|
Main.npc[index38].ai[0] = 1f;
|
|
Main.npc[index38].ai[1] = (float) this.whoAmI;
|
|
Main.npc[index38].ai[3] = 150f;
|
|
Main.npc[index38].target = this.target;
|
|
Main.npc[index38].netUpdate = true;
|
|
}
|
|
}
|
|
if (this.type == 68 && (double) this.ai[1] != 3.0 && (double) this.ai[1] != 2.0)
|
|
{
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
this.ai[1] = 2f;
|
|
}
|
|
if (Main.player[this.target].dead || (double) Math.Abs(this.position.X - Main.player[this.target].position.X) > 2000.0 || (double) Math.Abs(this.position.Y - Main.player[this.target].position.Y) > 2000.0)
|
|
{
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead || (double) Math.Abs(this.position.X - Main.player[this.target].position.X) > 2000.0 || (double) Math.Abs(this.position.Y - Main.player[this.target].position.Y) > 2000.0)
|
|
this.ai[1] = 3f;
|
|
}
|
|
if (Main.dayTime && (double) this.ai[1] != 3.0 && (double) this.ai[1] != 2.0)
|
|
{
|
|
this.ai[1] = 2f;
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.defense = 10;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 800.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 1f;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
}
|
|
this.rotation = this.velocity.X / 15f;
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y - 250.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.98f;
|
|
this.velocity.Y -= 0.02f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.player[this.target].position.Y - 250.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.98f;
|
|
this.velocity.Y += 0.02f;
|
|
if ((double) this.velocity.Y < -2.0)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2))
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] == 1.0)
|
|
{
|
|
this.defense = 0;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] == 2.0)
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
if ((double) this.ai[2] >= 400.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
this.rotation += (float) this.direction * 0.3f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num143 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num144 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num145 = 1.5f / (float) Math.Sqrt((double) num143 * (double) num143 + (double) num144 * (double) num144);
|
|
this.velocity.X = num143 * num145;
|
|
this.velocity.Y = num144 * num145;
|
|
}
|
|
else if ((double) this.ai[1] == 2.0)
|
|
{
|
|
this.damage = 9999;
|
|
this.defense = 9999;
|
|
this.rotation += (float) this.direction * 0.3f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num146 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num147 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num148 = 8f / (float) Math.Sqrt((double) num146 * (double) num146 + (double) num147 * (double) num147);
|
|
this.velocity.X = num146 * num148;
|
|
this.velocity.Y = num147 * num148;
|
|
}
|
|
else if ((double) this.ai[1] == 3.0)
|
|
{
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.X *= 0.95f;
|
|
if (this.timeLeft > 500)
|
|
this.timeLeft = 500;
|
|
}
|
|
if ((double) this.ai[1] == 2.0 || (double) this.ai[1] == 3.0 || this.type == 68)
|
|
return;
|
|
int index39 = Dust.NewDust(new Vector2((float) ((double) this.position.X + (double) (this.width / 2) - 15.0 - (double) this.velocity.X * 5.0), (float) ((double) this.position.Y + (double) this.height - 2.0)), 30, 10, 5, (float) (-(double) this.velocity.X * 0.200000002980232), 3f, Scale: 2f);
|
|
Main.dust[index39].noGravity = true;
|
|
Main.dust[index39].velocity.X *= 1.3f;
|
|
Main.dust[index39].velocity.X += this.velocity.X * 0.4f;
|
|
Main.dust[index39].velocity.Y += 2f + this.velocity.Y;
|
|
for (int index40 = 0; index40 < 2; ++index40)
|
|
{
|
|
int index41 = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 120f), this.width, 60, 5, this.velocity.X, this.velocity.Y, Scale: 2f);
|
|
Main.dust[index41].noGravity = true;
|
|
Main.dust[index41].velocity -= this.velocity;
|
|
Main.dust[index41].velocity.Y += 5f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 12)
|
|
{
|
|
this.spriteDirection = -(int) this.ai[0];
|
|
if (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != 11)
|
|
{
|
|
this.ai[2] += 10f;
|
|
if ((double) this.ai[2] > 50.0 || Main.netMode != 2)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
}
|
|
if ((double) this.ai[2] == 0.0 || (double) this.ai[2] == 3.0)
|
|
{
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] == 3.0 && this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] != 0.0)
|
|
{
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.07f;
|
|
if ((double) this.velocity.Y > 6.0)
|
|
this.velocity.Y = 6f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.07f;
|
|
if ((double) this.velocity.Y < -6.0)
|
|
this.velocity.Y = -6f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 120.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 120.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 300.0)
|
|
{
|
|
++this.ai[2];
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y + 230.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y + 230.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num149 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2.X;
|
|
float num150 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2.Y;
|
|
Math.Sqrt((double) num149 * (double) num149 + (double) num150 * (double) num150);
|
|
this.rotation = (float) Math.Atan2((double) num150, (double) num149) + 1.57f;
|
|
}
|
|
else if ((double) this.ai[2] == 1.0)
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num151 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2.X;
|
|
float num152 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2.Y;
|
|
float num153 = (float) Math.Sqrt((double) num151 * (double) num151 + (double) num152 * (double) num152);
|
|
this.rotation = (float) Math.Atan2((double) num152, (double) num151) + 1.57f;
|
|
this.velocity.X *= 0.95f;
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y < -8.0)
|
|
this.velocity.Y = -8f;
|
|
if ((double) this.position.Y >= (double) Main.npc[(int) this.ai[1]].position.Y - 200.0)
|
|
return;
|
|
this.TargetClosest();
|
|
this.ai[2] = 2f;
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num154 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num155 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num156 = 18f / (float) Math.Sqrt((double) num154 * (double) num154 + (double) num155 * (double) num155);
|
|
this.velocity.X = num154 * num156;
|
|
this.velocity.Y = num155 * num156;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[2] == 2.0)
|
|
{
|
|
if ((double) this.position.Y <= (double) Main.player[this.target].position.Y && (double) this.velocity.Y >= 0.0)
|
|
return;
|
|
this.ai[2] = 3f;
|
|
}
|
|
else if ((double) this.ai[2] == 4.0)
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num157 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2.X;
|
|
float num158 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2.Y;
|
|
float num159 = (float) Math.Sqrt((double) num157 * (double) num157 + (double) num158 * (double) num158);
|
|
this.rotation = (float) Math.Atan2((double) num158, (double) num157) + 1.57f;
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.X += (float) (0.100000001490116 * -(double) this.ai[0]);
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
if ((double) this.position.X + (double) (this.width / 2) >= (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 500.0 && (double) this.position.X + (double) (this.width / 2) <= (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) + 500.0)
|
|
return;
|
|
this.TargetClosest();
|
|
this.ai[2] = 5f;
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num160 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num161 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num162 = 17f / (float) Math.Sqrt((double) num160 * (double) num160 + (double) num161 * (double) num161);
|
|
this.velocity.X = num160 * num162;
|
|
this.velocity.Y = num161 * num162;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] != 5.0 || ((double) this.velocity.X <= 0.0 || (double) this.position.X + (double) (this.width / 2) <= (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2)) && ((double) this.velocity.X >= 0.0 || (double) this.position.X + (double) (this.width / 2) >= (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2)))
|
|
return;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 13)
|
|
{
|
|
if (Main.tile[(int) this.ai[0], (int) this.ai[1]] == null)
|
|
Main.tile[(int) this.ai[0], (int) this.ai[1]] = new Tile();
|
|
if (!Main.tile[(int) this.ai[0], (int) this.ai[1]].active)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
else
|
|
{
|
|
this.TargetClosest();
|
|
float num163 = 0.035f;
|
|
float num164 = 150f;
|
|
if (this.type == 43)
|
|
num164 = 250f;
|
|
if (this.type == 101)
|
|
num164 = 175f;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] > 300.0)
|
|
{
|
|
num164 = (float) (int) ((double) num164 * 1.3);
|
|
if ((double) this.ai[2] > 450.0)
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
Vector2 vector2 = new Vector2((float) ((double) this.ai[0] * 16.0 + 8.0), (float) ((double) this.ai[1] * 16.0 + 8.0));
|
|
float num165 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - (float) (this.width / 2) - vector2.X;
|
|
float num166 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - (float) (this.height / 2) - vector2.Y;
|
|
float num167 = (float) Math.Sqrt((double) num165 * (double) num165 + (double) num166 * (double) num166);
|
|
if ((double) num167 > (double) num164)
|
|
{
|
|
float num168 = num164 / num167;
|
|
num165 *= num168;
|
|
num166 *= num168;
|
|
}
|
|
if ((double) this.position.X < (double) this.ai[0] * 16.0 + 8.0 + (double) num165)
|
|
{
|
|
this.velocity.X += num163;
|
|
if ((double) this.velocity.X < 0.0 && (double) num165 > 0.0)
|
|
this.velocity.X += num163 * 1.5f;
|
|
}
|
|
else if ((double) this.position.X > (double) this.ai[0] * 16.0 + 8.0 + (double) num165)
|
|
{
|
|
this.velocity.X -= num163;
|
|
if ((double) this.velocity.X > 0.0 && (double) num165 < 0.0)
|
|
this.velocity.X -= num163 * 1.5f;
|
|
}
|
|
if ((double) this.position.Y < (double) this.ai[1] * 16.0 + 8.0 + (double) num166)
|
|
{
|
|
this.velocity.Y += num163;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num166 > 0.0)
|
|
this.velocity.Y += num163 * 1.5f;
|
|
}
|
|
else if ((double) this.position.Y > (double) this.ai[1] * 16.0 + 8.0 + (double) num166)
|
|
{
|
|
this.velocity.Y -= num163;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num166 < 0.0)
|
|
this.velocity.Y -= num163 * 1.5f;
|
|
}
|
|
if (this.type == 43)
|
|
{
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X = 3f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X = -3f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X > 2.0)
|
|
this.velocity.X = 2f;
|
|
if ((double) this.velocity.X < -2.0)
|
|
this.velocity.X = -2f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
if ((double) this.velocity.Y < -2.0)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
if ((double) num165 > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) num166, (double) num165);
|
|
}
|
|
if ((double) num165 < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) num166, (double) num165) + 3.14f;
|
|
}
|
|
if (this.collideX)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.X = this.oldVelocity.X * -0.7f;
|
|
if ((double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0)
|
|
this.velocity.X = 2f;
|
|
if ((double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.Y = this.oldVelocity.Y * -0.7f;
|
|
if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 2.0)
|
|
this.velocity.Y = 2f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -2.0)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
if (Main.netMode == 1 || this.type != 101 || Main.player[this.target].dead)
|
|
return;
|
|
if (this.justHit)
|
|
this.localAI[0] = 0.0f;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] < 120.0)
|
|
return;
|
|
if (!Collision.SolidCollision(this.position, this.width, this.height) && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
float num169 = 10f;
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num170 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X + (float) Main.rand.Next(-10, 11);
|
|
float num171 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y + (float) Main.rand.Next(-10, 11);
|
|
float num172 = (float) Math.Sqrt((double) num170 * (double) num170 + (double) num171 * (double) num171);
|
|
float num173 = num169 / num172;
|
|
float SpeedX = num170 * num173;
|
|
float SpeedY = num171 * num173;
|
|
int Damage = 22;
|
|
int Type = 96;
|
|
int index = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
this.localAI[0] = 0.0f;
|
|
}
|
|
else
|
|
this.localAI[0] = 100f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 14)
|
|
{
|
|
if (this.type == 60)
|
|
{
|
|
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: 2f);
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
this.noGravity = true;
|
|
if (this.collideX)
|
|
{
|
|
this.velocity.X = this.oldVelocity.X * -0.5f;
|
|
if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0)
|
|
this.velocity.X = 2f;
|
|
if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.velocity.Y = this.oldVelocity.Y * -0.5f;
|
|
if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.0)
|
|
this.velocity.Y = 1f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.0)
|
|
this.velocity.Y = -1f;
|
|
}
|
|
this.TargetClosest();
|
|
if (this.direction == -1 && (double) this.velocity.X > -4.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 4.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -1.5)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y -= 0.05f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.03f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y = -1.5f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 1.5)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y += 0.05f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.03f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y = 1.5f;
|
|
}
|
|
if (this.type == 49 || this.type == 51 || this.type == 60 || this.type == 62 || this.type == 66 || this.type == 93 || this.type == 137)
|
|
{
|
|
if (this.wet)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
this.TargetClosest();
|
|
}
|
|
if (this.type == 60)
|
|
{
|
|
if (this.direction == -1 && (double) this.velocity.X > -4.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X -= 0.07f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.03f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 4.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X += 0.07f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.03f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -1.5)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y -= 0.03f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.02f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y = -1.5f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 1.5)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y += 0.03f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.02f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y = 1.5f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.direction == -1 && (double) this.velocity.X > -4.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 4.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -1.5)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y -= 0.05f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.03f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y = -1.5f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 1.5)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y += 0.05f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.03f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y = 1.5f;
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] > 200.0)
|
|
{
|
|
if (!Main.player[this.target].wet && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
this.ai[1] = 0.0f;
|
|
float num174 = 0.2f;
|
|
float num175 = 0.1f;
|
|
float num176 = 4f;
|
|
float num177 = 1.5f;
|
|
if (this.type == 48 || this.type == 62 || this.type == 66)
|
|
{
|
|
num174 = 0.12f;
|
|
num175 = 0.07f;
|
|
num176 = 3f;
|
|
num177 = 1.25f;
|
|
}
|
|
if ((double) this.ai[1] > 1000.0)
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
if ((double) this.velocity.Y < (double) num177)
|
|
this.velocity.Y += num175;
|
|
}
|
|
else if ((double) this.velocity.Y > -(double) num177)
|
|
this.velocity.Y -= num175;
|
|
if ((double) this.ai[2] < -150.0 || (double) this.ai[2] > 150.0)
|
|
{
|
|
if ((double) this.velocity.X < (double) num176)
|
|
this.velocity.X += num174;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num176)
|
|
this.velocity.X -= num174;
|
|
if ((double) this.ai[2] > 300.0)
|
|
this.ai[2] = -300f;
|
|
}
|
|
if (Main.netMode == 1)
|
|
return;
|
|
if (this.type == 48)
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] == 30.0 || (double) this.ai[0] == 60.0 || (double) this.ai[0] == 90.0)
|
|
{
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
float num178 = 6f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num179 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X + (float) Main.rand.Next(-100, 101);
|
|
float num180 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y + (float) Main.rand.Next(-100, 101);
|
|
float num181 = (float) Math.Sqrt((double) num179 * (double) num179 + (double) num180 * (double) num180);
|
|
float num182 = num178 / num181;
|
|
float SpeedX = num179 * num182;
|
|
float SpeedY = num180 * num182;
|
|
int Damage = 15;
|
|
int Type = 38;
|
|
int index = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] >= (double) (400 + Main.rand.Next(400)))
|
|
this.ai[0] = 0.0f;
|
|
}
|
|
if (this.type != 62 && this.type != 66)
|
|
return;
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] == 20.0 || (double) this.ai[0] == 40.0 || (double) this.ai[0] == 60.0 || (double) this.ai[0] == 80.0)
|
|
{
|
|
if (!Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
return;
|
|
float num183 = 0.2f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num184 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X + (float) Main.rand.Next(-100, 101);
|
|
float num185 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y + (float) Main.rand.Next(-100, 101);
|
|
float num186 = (float) Math.Sqrt((double) num184 * (double) num184 + (double) num185 * (double) num185);
|
|
float num187 = num183 / num186;
|
|
float SpeedX = num184 * num187;
|
|
float SpeedY = num185 * num187;
|
|
int Damage = 21;
|
|
int Type = 44;
|
|
int index = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] < (double) (300 + Main.rand.Next(300)))
|
|
return;
|
|
this.ai[0] = 0.0f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 15)
|
|
{
|
|
this.aiAction = 0;
|
|
if ((double) this.ai[3] == 0.0 && this.life > 0)
|
|
this.ai[3] = (float) this.lifeMax;
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
this.ai[0] = -100f;
|
|
this.ai[2] = 1f;
|
|
this.TargetClosest();
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.velocity.X *= 0.8f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
this.ai[0] += 2f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.8)
|
|
++this.ai[0];
|
|
if ((double) this.life < (double) this.lifeMax * 0.6)
|
|
++this.ai[0];
|
|
if ((double) this.life < (double) this.lifeMax * 0.4)
|
|
this.ai[0] += 2f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.2)
|
|
this.ai[0] += 3f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.1)
|
|
this.ai[0] += 4f;
|
|
if ((double) this.ai[0] >= 0.0)
|
|
{
|
|
this.netUpdate = true;
|
|
this.TargetClosest();
|
|
if ((double) this.ai[1] == 3.0)
|
|
{
|
|
this.velocity.Y = -13f;
|
|
this.velocity.X += 3.5f * (float) this.direction;
|
|
this.ai[0] = -200f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else if ((double) this.ai[1] == 2.0)
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.velocity.X += 4.5f * (float) this.direction;
|
|
this.ai[0] = -120f;
|
|
++this.ai[1];
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = -8f;
|
|
this.velocity.X += 4f * (float) this.direction;
|
|
this.ai[0] = -120f;
|
|
++this.ai[1];
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] >= -30.0)
|
|
this.aiAction = 1;
|
|
}
|
|
else if (this.target < (int) byte.MaxValue && (this.direction == 1 && (double) this.velocity.X < 3.0 || this.direction == -1 && (double) this.velocity.X > -3.0))
|
|
{
|
|
if (this.direction == -1 && (double) this.velocity.X < 0.1 || this.direction == 1 && (double) this.velocity.X > -0.1)
|
|
this.velocity.X += 0.2f * (float) this.direction;
|
|
else
|
|
this.velocity.X *= 0.93f;
|
|
}
|
|
int index42 = Dust.NewDust(this.position, this.width, this.height, 4, this.velocity.X, this.velocity.Y, (int) byte.MaxValue, new Color(0, 80, (int) byte.MaxValue, 80), this.scale * 1.2f);
|
|
Main.dust[index42].noGravity = true;
|
|
Main.dust[index42].velocity *= 0.5f;
|
|
if (this.life <= 0)
|
|
return;
|
|
float num188 = (float) ((double) ((float) this.life / (float) this.lifeMax) * 0.5 + 0.75);
|
|
if ((double) num188 != (double) this.scale)
|
|
{
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) this.height;
|
|
this.scale = num188;
|
|
this.width = (int) (98.0 * (double) this.scale);
|
|
this.height = (int) (92.0 * (double) this.scale);
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) this.height;
|
|
}
|
|
if (Main.netMode == 1 || (double) (this.life + (int) ((double) this.lifeMax * 0.05)) >= (double) this.ai[3])
|
|
return;
|
|
this.ai[3] = (float) this.life;
|
|
int num189 = Main.rand.Next(1, 4);
|
|
for (int index43 = 0; index43 < num189; ++index43)
|
|
{
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) Main.rand.Next(this.width - 32)), (int) ((double) this.position.Y + (double) Main.rand.Next(this.height - 32)), 1);
|
|
Main.npc[number].SetDefaults(1);
|
|
Main.npc[number].velocity.X = (float) Main.rand.Next(-15, 16) * 0.1f;
|
|
Main.npc[number].velocity.Y = (float) Main.rand.Next(-30, 1) * 0.1f;
|
|
Main.npc[number].ai[1] = (float) Main.rand.Next(3);
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
else if (this.aiStyle == 16)
|
|
{
|
|
if (this.direction == 0)
|
|
this.TargetClosest();
|
|
if (this.wet)
|
|
{
|
|
bool flag = false;
|
|
if (this.type != 55)
|
|
{
|
|
this.TargetClosest(false);
|
|
if (Main.player[this.target].wet && !Main.player[this.target].dead)
|
|
flag = true;
|
|
}
|
|
if (!flag)
|
|
{
|
|
if (this.collideX)
|
|
{
|
|
this.velocity.X *= -1f;
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.netUpdate = true;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.velocity.Y = Math.Abs(this.velocity.Y) * -1f;
|
|
this.directionY = -1;
|
|
this.ai[0] = -1f;
|
|
}
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.velocity.Y = Math.Abs(this.velocity.Y);
|
|
this.directionY = 1;
|
|
this.ai[0] = 1f;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 102)
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.width / 2) + (double) (this.direction * (this.width + 8))) / 16, (int) ((double) this.position.Y + 2.0) / 16, 0.07f, 0.04f, 0.025f);
|
|
if (flag)
|
|
{
|
|
this.TargetClosest();
|
|
if (this.type == 65 || this.type == 102)
|
|
{
|
|
this.velocity.X += (float) this.direction * 0.15f;
|
|
this.velocity.Y += (float) this.directionY * 0.15f;
|
|
if ((double) this.velocity.X > 5.0)
|
|
this.velocity.X = 5f;
|
|
if ((double) this.velocity.X < -5.0)
|
|
this.velocity.X = -5f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X += (float) this.direction * 0.1f;
|
|
this.velocity.Y += (float) this.directionY * 0.1f;
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X = 3f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X = -3f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
if ((double) this.velocity.Y < -2.0)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X += (float) this.direction * 0.1f;
|
|
if ((double) this.velocity.X < -1.0 || (double) this.velocity.X > 1.0)
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) this.ai[0] == -1.0)
|
|
{
|
|
this.velocity.Y -= 0.01f;
|
|
if ((double) this.velocity.Y < -0.3)
|
|
this.ai[0] = 1f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y += 0.01f;
|
|
if ((double) this.velocity.Y > 0.3)
|
|
this.ai[0] = -1f;
|
|
}
|
|
int index = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int num = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
if (Main.tile[index, num - 1] == null)
|
|
Main.tile[index, num - 1] = new Tile();
|
|
if (Main.tile[index, num + 1] == null)
|
|
Main.tile[index, num + 1] = new Tile();
|
|
if (Main.tile[index, num + 2] == null)
|
|
Main.tile[index, num + 2] = new Tile();
|
|
if (Main.tile[index, num - 1].liquid > (byte) 128)
|
|
{
|
|
if (Main.tile[index, num + 1].active)
|
|
this.ai[0] = -1f;
|
|
else if (Main.tile[index, num + 2].active)
|
|
this.ai[0] = -1f;
|
|
}
|
|
if ((double) this.velocity.Y > 0.4 || (double) this.velocity.Y < -0.4)
|
|
this.velocity.Y *= 0.95f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.type == 65)
|
|
{
|
|
this.velocity.X *= 0.94f;
|
|
if ((double) this.velocity.X > -0.2 && (double) this.velocity.X < 0.2)
|
|
this.velocity.X = 0.0f;
|
|
}
|
|
else if (Main.netMode != 1)
|
|
{
|
|
this.velocity.Y = (float) Main.rand.Next(-50, -20) * 0.1f;
|
|
this.velocity.X = (float) Main.rand.Next(-20, 20) * 0.1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
this.velocity.Y += 0.3f;
|
|
if ((double) this.velocity.Y > 10.0)
|
|
this.velocity.Y = 10f;
|
|
this.ai[0] = 1f;
|
|
}
|
|
this.rotation = (float) ((double) this.velocity.Y * (double) this.direction * 0.100000001490116);
|
|
if ((double) this.rotation < -0.2)
|
|
this.rotation = -0.2f;
|
|
if ((double) this.rotation <= 0.2)
|
|
return;
|
|
this.rotation = 0.2f;
|
|
}
|
|
else if (this.aiStyle == 17)
|
|
{
|
|
this.noGravity = true;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.noGravity = false;
|
|
this.TargetClosest();
|
|
if (Main.netMode != 1)
|
|
{
|
|
if ((double) this.velocity.X != 0.0 || (double) this.velocity.Y < 0.0 || (double) this.velocity.Y > 0.3)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (new Rectangle((int) this.position.X - 100, (int) this.position.Y - 100, this.width + 200, this.height + 200).Intersects(new Rectangle((int) Main.player[this.target].position.X, (int) Main.player[this.target].position.Y, Main.player[this.target].width, Main.player[this.target].height)) || this.life < this.lifeMax)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.velocity.Y -= 6f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else if (!Main.player[this.target].dead)
|
|
{
|
|
if (this.collideX)
|
|
{
|
|
this.velocity.X = this.oldVelocity.X * -0.5f;
|
|
if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0)
|
|
this.velocity.X = 2f;
|
|
if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.velocity.Y = this.oldVelocity.Y * -0.5f;
|
|
if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.0)
|
|
this.velocity.Y = 1f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.0)
|
|
this.velocity.Y = -1f;
|
|
}
|
|
this.TargetClosest();
|
|
if (this.direction == -1 && (double) this.velocity.X > -3.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X = -3f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 3.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X = 3f;
|
|
}
|
|
float num190 = Math.Abs((float) ((double) this.position.X + (double) (this.width / 2) - ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2))));
|
|
float num191 = Main.player[this.target].position.Y - (float) (this.height / 2);
|
|
if ((double) num190 > 50.0)
|
|
num191 -= 100f;
|
|
if ((double) this.position.Y < (double) num191)
|
|
{
|
|
this.velocity.Y += 0.05f;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y += 0.01f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y -= 0.05f;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y -= 0.01f;
|
|
}
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
if (!this.wet)
|
|
return;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
this.TargetClosest();
|
|
}
|
|
else if (this.aiStyle == 18)
|
|
{
|
|
if (this.type == 63)
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.height / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16, 0.05f, 0.15f, 0.4f);
|
|
else if (this.type == 103)
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.height / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16, 0.05f, 0.45f, 0.1f);
|
|
else
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.height / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16, 0.35f, 0.05f, 0.2f);
|
|
if (this.direction == 0)
|
|
this.TargetClosest();
|
|
if (this.wet)
|
|
{
|
|
if (this.collideX)
|
|
{
|
|
this.velocity.X *= -1f;
|
|
this.direction *= -1;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.velocity.Y = Math.Abs(this.velocity.Y) * -1f;
|
|
this.directionY = -1;
|
|
this.ai[0] = -1f;
|
|
}
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.velocity.Y = Math.Abs(this.velocity.Y);
|
|
this.directionY = 1;
|
|
this.ai[0] = 1f;
|
|
}
|
|
}
|
|
bool flag = false;
|
|
if (!this.friendly)
|
|
{
|
|
this.TargetClosest(false);
|
|
if (Main.player[this.target].wet && !Main.player[this.target].dead)
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
this.velocity *= 0.98f;
|
|
float num192 = 0.2f;
|
|
if (this.type == 103)
|
|
{
|
|
this.velocity *= 0.98f;
|
|
num192 = 0.6f;
|
|
}
|
|
if ((double) this.velocity.X <= -(double) num192 || (double) this.velocity.X >= (double) num192 || (double) this.velocity.Y <= -(double) num192 || (double) this.velocity.Y >= (double) num192)
|
|
return;
|
|
this.TargetClosest();
|
|
float num193 = 7f;
|
|
if (this.type == 103)
|
|
num193 = 9f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num194 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num195 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num196 = (float) Math.Sqrt((double) num194 * (double) num194 + (double) num195 * (double) num195);
|
|
float num197 = num193 / num196;
|
|
float num198 = num194 * num197;
|
|
float num199 = num195 * num197;
|
|
this.velocity.X = num198;
|
|
this.velocity.Y = num199;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X += (float) this.direction * 0.02f;
|
|
this.rotation = this.velocity.X * 0.4f;
|
|
if ((double) this.velocity.X < -1.0 || (double) this.velocity.X > 1.0)
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) this.ai[0] == -1.0)
|
|
{
|
|
this.velocity.Y -= 0.01f;
|
|
if ((double) this.velocity.Y < -1.0)
|
|
this.ai[0] = 1f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y += 0.01f;
|
|
if ((double) this.velocity.Y > 1.0)
|
|
this.ai[0] = -1f;
|
|
}
|
|
int index = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int num = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
if (Main.tile[index, num - 1] == null)
|
|
Main.tile[index, num - 1] = new Tile();
|
|
if (Main.tile[index, num + 1] == null)
|
|
Main.tile[index, num + 1] = new Tile();
|
|
if (Main.tile[index, num + 2] == null)
|
|
Main.tile[index, num + 2] = new Tile();
|
|
if (Main.tile[index, num - 1].liquid > (byte) 128)
|
|
{
|
|
if (Main.tile[index, num + 1].active)
|
|
this.ai[0] = -1f;
|
|
else if (Main.tile[index, num + 2].active)
|
|
this.ai[0] = -1f;
|
|
}
|
|
else
|
|
this.ai[0] = 1f;
|
|
if ((double) this.velocity.Y <= 1.2 && (double) this.velocity.Y >= -1.2)
|
|
return;
|
|
this.velocity.Y *= 0.99f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.rotation += this.velocity.X * 0.1f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.velocity.X *= 0.98f;
|
|
if ((double) this.velocity.X > -0.01 && (double) this.velocity.X < 0.01)
|
|
this.velocity.X = 0.0f;
|
|
}
|
|
this.velocity.Y += 0.2f;
|
|
if ((double) this.velocity.Y > 10.0)
|
|
this.velocity.Y = 10f;
|
|
this.ai[0] = 1f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 19)
|
|
{
|
|
this.TargetClosest();
|
|
float num200 = 12f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num201 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num202 = Main.player[this.target].position.Y - vector2.Y;
|
|
float num203 = (float) Math.Sqrt((double) num201 * (double) num201 + (double) num202 * (double) num202);
|
|
float num204 = num200 / num203;
|
|
float SpeedX = num201 * num204;
|
|
float SpeedY = num202 * num204;
|
|
bool flag16 = false;
|
|
if (this.directionY < 0)
|
|
{
|
|
this.rotation = (float) (Math.Atan2((double) SpeedY, (double) SpeedX) + 1.57);
|
|
flag16 = (double) this.rotation >= -1.2 && (double) this.rotation <= 1.2;
|
|
if ((double) this.rotation < -0.8)
|
|
this.rotation = -0.8f;
|
|
else if ((double) this.rotation > 0.8)
|
|
this.rotation = 0.8f;
|
|
if ((double) this.velocity.X != 0.0)
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) this.velocity.X > -0.1 || (double) this.velocity.X < 0.1)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.X = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
if ((double) this.ai[0] == 200.0)
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 5);
|
|
--this.ai[0];
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (flag16)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
this.ai[0] = 200f;
|
|
int Damage = 10;
|
|
int Type = 31;
|
|
int number = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[number].ai[0] = 2f;
|
|
Main.projectile[number].timeLeft = 300;
|
|
Main.projectile[number].friendly = false;
|
|
NetMessage.SendData(27, number: number);
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
try
|
|
{
|
|
int index44 = (int) this.position.X / 16;
|
|
int index45 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int index46 = (int) ((double) this.position.X + (double) this.width) / 16;
|
|
int index47 = (int) ((double) this.position.Y + (double) this.height) / 16;
|
|
bool flag17 = false;
|
|
if (Main.tile[index44, index47] == null)
|
|
Main.tile[index44, index47] = new Tile();
|
|
if (Main.tile[index45, index47] == null)
|
|
Main.tile[index44, index47] = new Tile();
|
|
if (Main.tile[index46, index47] == null)
|
|
Main.tile[index44, index47] = new Tile();
|
|
if (Main.tile[index44, index47].active && Main.tileSolid[(int) Main.tile[index44, index47].type] || Main.tile[index45, index47].active && Main.tileSolid[(int) Main.tile[index45, index47].type] || Main.tile[index46, index47].active && Main.tileSolid[(int) Main.tile[index46, index47].type])
|
|
flag17 = true;
|
|
if (flag17)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.velocity.Y = -0.2f;
|
|
}
|
|
else
|
|
{
|
|
this.noGravity = false;
|
|
this.noTileCollide = false;
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
int index48 = Dust.NewDust(new Vector2(this.position.X - 4f, (float) ((double) this.position.Y + (double) this.height - 8.0)), this.width + 8, 24, 32, SpeedY: (this.velocity.Y / 2f));
|
|
Main.dust[index48].velocity.X *= 0.4f;
|
|
Main.dust[index48].velocity.Y *= -1f;
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
Main.dust[index48].noGravity = true;
|
|
Main.dust[index48].scale += 0.2f;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
else if (this.aiStyle == 20)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.TargetClosest();
|
|
this.direction *= -1;
|
|
this.directionY *= -1;
|
|
this.position.Y += (float) (this.height / 2 + 8);
|
|
this.ai[1] = this.position.X + (float) (this.width / 2);
|
|
this.ai[2] = this.position.Y + (float) (this.height / 2);
|
|
if (this.direction == 0)
|
|
this.direction = 1;
|
|
if (this.directionY == 0)
|
|
this.directionY = 1;
|
|
this.ai[3] = (float) (1.0 + (double) Main.rand.Next(15) * 0.100000001490116);
|
|
this.velocity.Y = (float) (this.directionY * 6) * this.ai[3];
|
|
++this.ai[0];
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.ai[1] = this.position.X + (float) (this.width / 2);
|
|
this.ai[2] = this.position.Y + (float) (this.height / 2);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
float num205 = 6f * this.ai[3];
|
|
float num206 = 0.2f * this.ai[3];
|
|
float num207 = (float) ((double) num205 / (double) num206 / 2.0);
|
|
if ((double) this.ai[0] >= 1.0 && (double) this.ai[0] < (double) (int) num207)
|
|
{
|
|
this.velocity.Y = (float) this.directionY * num205;
|
|
++this.ai[0];
|
|
}
|
|
else if ((double) this.ai[0] >= (double) (int) num207)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.Y = 0.0f;
|
|
this.directionY *= -1;
|
|
this.velocity.X = num205 * (float) this.direction;
|
|
this.ai[0] = -1f;
|
|
}
|
|
else
|
|
{
|
|
if (this.directionY > 0)
|
|
{
|
|
if ((double) this.velocity.Y >= (double) num205)
|
|
{
|
|
this.netUpdate = true;
|
|
this.directionY *= -1;
|
|
this.velocity.Y = num205;
|
|
}
|
|
}
|
|
else if (this.directionY < 0 && (double) this.velocity.Y <= -(double) num205)
|
|
{
|
|
this.directionY *= -1;
|
|
this.velocity.Y = -num205;
|
|
}
|
|
if (this.direction > 0)
|
|
{
|
|
if ((double) this.velocity.X >= (double) num205)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X = num205;
|
|
}
|
|
}
|
|
else if (this.direction < 0 && (double) this.velocity.X <= -(double) num205)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X = -num205;
|
|
}
|
|
this.velocity.X += num206 * (float) this.direction;
|
|
this.velocity.Y += num206 * (float) this.directionY;
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 21)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.directionY = 1;
|
|
this.ai[0] = 1f;
|
|
}
|
|
int num = 6;
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.rotation += (float) (this.direction * this.directionY) * 0.13f;
|
|
if (this.collideY)
|
|
this.ai[0] = 2f;
|
|
if (!this.collideY && (double) this.ai[0] == 2.0)
|
|
{
|
|
this.direction = -this.direction;
|
|
this.ai[1] = 1f;
|
|
this.ai[0] = 1f;
|
|
}
|
|
if (this.collideX)
|
|
{
|
|
this.directionY = -this.directionY;
|
|
this.ai[1] = 1f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.rotation -= (float) (this.direction * this.directionY) * 0.13f;
|
|
if (this.collideX)
|
|
this.ai[0] = 2f;
|
|
if (!this.collideX && (double) this.ai[0] == 2.0)
|
|
{
|
|
this.directionY = -this.directionY;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[0] = 1f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.direction = -this.direction;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
}
|
|
this.velocity.X = (float) (num * this.direction);
|
|
this.velocity.Y = (float) (num * this.directionY);
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.width / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16, 0.9f, 0.3f + (float) (270 - (int) Main.mouseTextColor) / 400f, 0.2f);
|
|
}
|
|
else if (this.aiStyle == 22)
|
|
{
|
|
bool flag18 = false;
|
|
if (this.justHit)
|
|
this.ai[2] = 0.0f;
|
|
if ((double) this.ai[2] >= 0.0)
|
|
{
|
|
int num208 = 16;
|
|
bool flag19 = false;
|
|
bool flag20 = false;
|
|
if ((double) this.position.X > (double) this.ai[0] - (double) num208 && (double) this.position.X < (double) this.ai[0] + (double) num208)
|
|
flag19 = true;
|
|
else if ((double) this.velocity.X < 0.0 && this.direction > 0 || (double) this.velocity.X > 0.0 && this.direction < 0)
|
|
flag19 = true;
|
|
int num209 = num208 + 24;
|
|
if ((double) this.position.Y > (double) this.ai[1] - (double) num209 && (double) this.position.Y < (double) this.ai[1] + (double) num209)
|
|
flag20 = true;
|
|
if (flag19 && flag20)
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 30.0 && num209 == 16)
|
|
flag18 = true;
|
|
if ((double) this.ai[2] >= 60.0)
|
|
{
|
|
this.ai[2] = -200f;
|
|
this.direction *= -1;
|
|
this.velocity.X *= -1f;
|
|
this.collideX = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.ai[0] = this.position.X;
|
|
this.ai[1] = this.position.Y;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
this.TargetClosest();
|
|
}
|
|
else
|
|
{
|
|
++this.ai[2];
|
|
this.direction = (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) <= (double) this.position.X + (double) (this.width / 2) ? 1 : -1;
|
|
}
|
|
int index49 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0) + this.direction * 2;
|
|
int num210 = (int) (((double) this.position.Y + (double) this.height) / 16.0);
|
|
bool flag21 = true;
|
|
bool flag22 = false;
|
|
int num211 = 3;
|
|
if (this.type == 122)
|
|
{
|
|
if (this.justHit)
|
|
{
|
|
this.ai[3] = 0.0f;
|
|
this.localAI[1] = 0.0f;
|
|
}
|
|
float num212 = 7f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num213 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num214 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num215 = (float) Math.Sqrt((double) num213 * (double) num213 + (double) num214 * (double) num214);
|
|
float num216 = num212 / num215;
|
|
float SpeedX = num213 * num216;
|
|
float SpeedY = num214 * num216;
|
|
if (Main.netMode != 1 && (double) this.ai[3] == 32.0)
|
|
{
|
|
int Damage = 25;
|
|
int Type = 84;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
num211 = 8;
|
|
if ((double) this.ai[3] > 0.0)
|
|
{
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 64.0)
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
if (Main.netMode != 1 && (double) this.ai[3] == 0.0)
|
|
{
|
|
++this.localAI[1];
|
|
if ((double) this.localAI[1] > 120.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
this.localAI[1] = 0.0f;
|
|
this.ai[3] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 75)
|
|
{
|
|
num211 = 4;
|
|
if (Main.rand.Next(6) == 0)
|
|
{
|
|
int index50 = Dust.NewDust(this.position, this.width, this.height, 55, Alpha: 200, newColor: this.color);
|
|
Main.dust[index50].velocity *= 0.3f;
|
|
}
|
|
if (Main.rand.Next(40) == 0)
|
|
Main.PlaySound(27, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
for (int index51 = num210; index51 < num210 + num211; ++index51)
|
|
{
|
|
if (Main.tile[index49, index51] == null)
|
|
Main.tile[index49, index51] = new Tile();
|
|
if (Main.tile[index49, index51].active && Main.tileSolid[(int) Main.tile[index49, index51].type] || Main.tile[index49, index51].liquid > (byte) 0)
|
|
{
|
|
if (index51 <= num210 + 1)
|
|
flag22 = true;
|
|
flag21 = false;
|
|
break;
|
|
}
|
|
}
|
|
if (flag18)
|
|
{
|
|
flag22 = false;
|
|
flag21 = true;
|
|
}
|
|
if (flag21)
|
|
{
|
|
if (this.type == 75)
|
|
{
|
|
this.velocity.Y += 0.2f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 75)
|
|
{
|
|
if (this.directionY < 0 && (double) this.velocity.Y > 0.0 || flag22)
|
|
this.velocity.Y -= 0.2f;
|
|
}
|
|
else if (this.directionY < 0 && (double) this.velocity.Y > 0.0)
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
if (this.type == 75 && this.wet)
|
|
{
|
|
this.velocity.Y -= 0.2f;
|
|
if ((double) this.velocity.Y < -2.0)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
if (this.collideX)
|
|
{
|
|
this.velocity.X = this.oldVelocity.X * -0.4f;
|
|
if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 1.0)
|
|
this.velocity.X = 1f;
|
|
if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -1.0)
|
|
this.velocity.X = -1f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.velocity.Y = this.oldVelocity.Y * -0.25f;
|
|
if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.0)
|
|
this.velocity.Y = 1f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.0)
|
|
this.velocity.Y = -1f;
|
|
}
|
|
float num217 = 2f;
|
|
if (this.type == 75)
|
|
num217 = 3f;
|
|
if (this.direction == -1 && (double) this.velocity.X > -(double) num217)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > (double) num217)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -(double) num217)
|
|
this.velocity.X = -num217;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < (double) num217)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -(double) num217)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > (double) num217)
|
|
this.velocity.X = num217;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -1.5)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y -= 0.05f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.03f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y = -1.5f;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < 1.5)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -1.5)
|
|
this.velocity.Y += 0.05f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.03f;
|
|
if ((double) this.velocity.Y > 1.5)
|
|
this.velocity.Y = 1.5f;
|
|
}
|
|
if (this.type != 122)
|
|
return;
|
|
Lighting.addLight((int) this.position.X / 16, (int) this.position.Y / 16, 0.4f, 0.0f, 0.25f);
|
|
}
|
|
else if (this.aiStyle == 23)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
if (this.type == 83)
|
|
Lighting.addLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 0.2f, 0.05f, 0.3f);
|
|
else
|
|
Lighting.addLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 0.05f, 0.2f, 0.3f);
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead)
|
|
this.TargetClosest();
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
float num218 = 9f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num219 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num220 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num221 = (float) Math.Sqrt((double) num219 * (double) num219 + (double) num220 * (double) num220);
|
|
float num222 = num218 / num221;
|
|
float num223 = num219 * num222;
|
|
float num224 = num220 * num222;
|
|
this.velocity.X = num223;
|
|
this.velocity.Y = num224;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 0.785f;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
if (this.justHit)
|
|
{
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
this.velocity *= 0.99f;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] < 100.0)
|
|
return;
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = 0.0f;
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
if (this.justHit)
|
|
{
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
this.velocity *= 0.96f;
|
|
++this.ai[1];
|
|
this.rotation += (float) (0.100000001490116 + (double) (this.ai[1] / 120f) * 0.400000005960464) * (float) this.direction;
|
|
if ((double) this.ai[1] < 120.0)
|
|
return;
|
|
this.netUpdate = true;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 24)
|
|
{
|
|
this.noGravity = true;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.noGravity = false;
|
|
this.TargetClosest();
|
|
if (Main.netMode != 1)
|
|
{
|
|
if ((double) this.velocity.X != 0.0 || (double) this.velocity.Y < 0.0 || (double) this.velocity.Y > 0.3)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
this.direction = -this.direction;
|
|
}
|
|
else if (new Rectangle((int) this.position.X - 100, (int) this.position.Y - 100, this.width + 200, this.height + 200).Intersects(new Rectangle((int) Main.player[this.target].position.X, (int) Main.player[this.target].position.Y, Main.player[this.target].width, Main.player[this.target].height)) || this.life < this.lifeMax)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.velocity.Y -= 6f;
|
|
this.netUpdate = true;
|
|
this.direction = -this.direction;
|
|
}
|
|
}
|
|
}
|
|
else if (!Main.player[this.target].dead)
|
|
{
|
|
if (this.collideX)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X = this.oldVelocity.X * -0.5f;
|
|
if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0)
|
|
this.velocity.X = 2f;
|
|
if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0)
|
|
this.velocity.X = -2f;
|
|
}
|
|
if (this.collideY)
|
|
{
|
|
this.velocity.Y = this.oldVelocity.Y * -0.5f;
|
|
if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.0)
|
|
this.velocity.Y = 1f;
|
|
if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.0)
|
|
this.velocity.Y = -1f;
|
|
}
|
|
if (this.direction == -1 && (double) this.velocity.X > -3.0)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X = -3f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 3.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -3.0)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X > 3.0)
|
|
this.velocity.X = 3f;
|
|
}
|
|
int index52 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0) + this.direction;
|
|
int num225 = (int) (((double) this.position.Y + (double) this.height) / 16.0);
|
|
bool flag23 = true;
|
|
int num226 = 15;
|
|
bool flag24 = false;
|
|
for (int index53 = num225; index53 < num225 + num226; ++index53)
|
|
{
|
|
if (Main.tile[index52, index53] == null)
|
|
Main.tile[index52, index53] = new Tile();
|
|
if (Main.tile[index52, index53].active && Main.tileSolid[(int) Main.tile[index52, index53].type] || Main.tile[index52, index53].liquid > (byte) 0)
|
|
{
|
|
if (index53 < num225 + 5)
|
|
flag24 = true;
|
|
flag23 = false;
|
|
break;
|
|
}
|
|
}
|
|
if (flag23)
|
|
this.velocity.Y += 0.1f;
|
|
else
|
|
this.velocity.Y -= 0.1f;
|
|
if (flag24)
|
|
this.velocity.Y -= 0.2f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
if (!this.wet)
|
|
return;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
this.TargetClosest();
|
|
}
|
|
else if (this.aiStyle == 25)
|
|
{
|
|
if ((double) this.ai[3] == 0.0)
|
|
{
|
|
this.position.X += 8f;
|
|
this.ai[3] = (double) this.position.Y / 16.0 <= (double) (Main.maxTilesY - 200) ? ((double) this.position.Y / 16.0 <= Main.worldSurface ? 1f : 2f) : 3f;
|
|
}
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
if (Main.netMode == 1)
|
|
return;
|
|
if ((double) this.velocity.X != 0.0 || (double) this.velocity.Y < 0.0 || (double) this.velocity.Y > 0.3)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if (!new Rectangle((int) this.position.X - 100, (int) this.position.Y - 100, this.width + 200, this.height + 200).Intersects(new Rectangle((int) Main.player[this.target].position.X, (int) Main.player[this.target].position.Y, Main.player[this.target].width, Main.player[this.target].height)) && this.life >= this.lifeMax)
|
|
return;
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
++this.ai[2];
|
|
int num = 20;
|
|
if ((double) this.ai[1] == 0.0)
|
|
num = 12;
|
|
if ((double) this.ai[2] < (double) num)
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.TargetClosest();
|
|
this.spriteDirection = this.direction;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] == 2.0)
|
|
{
|
|
this.velocity.X = (float) this.direction * 2.5f;
|
|
this.velocity.Y = -8f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X = (float) this.direction * 3.5f;
|
|
this.velocity.Y = -4f;
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 1.0)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
}
|
|
else
|
|
{
|
|
if (this.direction != -1 || (double) this.velocity.X <= -1.0)
|
|
return;
|
|
this.velocity.X -= 0.1f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 26)
|
|
{
|
|
int num227 = 30;
|
|
bool flag = false;
|
|
if ((double) this.velocity.Y == 0.0 && ((double) this.velocity.X > 0.0 && this.direction < 0 || (double) this.velocity.X < 0.0 && this.direction > 0))
|
|
{
|
|
flag = true;
|
|
++this.ai[3];
|
|
}
|
|
if ((double) this.position.X == (double) this.oldPosition.X || (double) this.ai[3] >= (double) num227 || flag)
|
|
++this.ai[3];
|
|
else if ((double) this.ai[3] > 0.0)
|
|
--this.ai[3];
|
|
if ((double) this.ai[3] > (double) (num227 * 10))
|
|
this.ai[3] = 0.0f;
|
|
if (this.justHit)
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[3] == (double) num227)
|
|
this.netUpdate = true;
|
|
if ((double) this.ai[3] < (double) num227)
|
|
{
|
|
this.TargetClosest();
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] >= 2.0)
|
|
{
|
|
this.direction *= -1;
|
|
this.spriteDirection = this.direction;
|
|
this.ai[0] = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
this.ai[0] = 0.0f;
|
|
this.directionY = -1;
|
|
if (this.direction == 0)
|
|
this.direction = 1;
|
|
}
|
|
float num228 = 6f;
|
|
if ((double) this.velocity.Y == 0.0 || this.wet || (double) this.velocity.X <= 0.0 && this.direction < 0 || (double) this.velocity.X >= 0.0 && this.direction > 0)
|
|
{
|
|
if ((double) this.velocity.X < -(double) num228 || (double) this.velocity.X > (double) num228)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity *= 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num228 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > (double) num228)
|
|
this.velocity.X = num228;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num228 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -(double) num228)
|
|
this.velocity.X = -num228;
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
return;
|
|
int index54 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 2) * this.direction) + (double) this.velocity.X * 5.0) / 16.0);
|
|
int index55 = (int) (((double) this.position.Y + (double) this.height - 15.0) / 16.0);
|
|
if (Main.tile[index54, index55] == null)
|
|
Main.tile[index54, index55] = new Tile();
|
|
if (Main.tile[index54, index55 - 1] == null)
|
|
Main.tile[index54, index55 - 1] = new Tile();
|
|
if (Main.tile[index54, index55 - 2] == null)
|
|
Main.tile[index54, index55 - 2] = new Tile();
|
|
if (Main.tile[index54, index55 - 3] == null)
|
|
Main.tile[index54, index55 - 3] = new Tile();
|
|
if (Main.tile[index54, index55 + 1] == null)
|
|
Main.tile[index54, index55 + 1] = new Tile();
|
|
if (Main.tile[index54 + this.direction, index55 - 1] == null)
|
|
Main.tile[index54 + this.direction, index55 - 1] = new Tile();
|
|
if (Main.tile[index54 + this.direction, index55 + 1] == null)
|
|
Main.tile[index54 + this.direction, index55 + 1] = new Tile();
|
|
if (((double) this.velocity.X >= 0.0 || this.spriteDirection != -1) && ((double) this.velocity.X <= 0.0 || this.spriteDirection != 1))
|
|
return;
|
|
if (Main.tile[index54, index55 - 2].active && Main.tileSolid[(int) Main.tile[index54, index55 - 2].type])
|
|
{
|
|
if (Main.tile[index54, index55 - 3].active && Main.tileSolid[(int) Main.tile[index54, index55 - 3].type])
|
|
{
|
|
this.velocity.Y = -8.5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = -7.5f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (Main.tile[index54, index55 - 1].active && Main.tileSolid[(int) Main.tile[index54, index55 - 1].type])
|
|
{
|
|
this.velocity.Y = -7f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (Main.tile[index54, index55].active && Main.tileSolid[(int) Main.tile[index54, index55].type])
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if (this.directionY >= 0 && (double) Math.Abs(this.velocity.X) <= 3.0 || Main.tile[index54, index55 + 1].active && Main.tileSolid[(int) Main.tile[index54, index55 + 1].type] || Main.tile[index54 + this.direction, index55 + 1].active && Main.tileSolid[(int) Main.tile[index54 + this.direction, index55 + 1].type])
|
|
return;
|
|
this.velocity.Y = -8f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 27)
|
|
{
|
|
if ((double) this.position.X < 160.0 || (double) this.position.X > (double) ((Main.maxTilesX - 10) * 16))
|
|
this.active = false;
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
Main.wofB = -1;
|
|
Main.wofT = -1;
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
if ((double) this.life < (double) this.lifeMax * 0.5)
|
|
++this.ai[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.2)
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] > 2700.0)
|
|
this.ai[2] = 1f;
|
|
}
|
|
if ((double) this.ai[2] > 0.0 && (double) this.ai[1] > 60.0)
|
|
{
|
|
int num = 3;
|
|
if ((double) this.life < (double) this.lifeMax * 0.3)
|
|
++num;
|
|
++this.ai[2];
|
|
this.ai[1] = 0.0f;
|
|
if ((double) this.ai[2] > (double) num)
|
|
this.ai[2] = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
int index = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) (this.height / 2) + 20.0), 117, 1);
|
|
Main.npc[index].velocity.X = (float) (this.direction * 8);
|
|
}
|
|
}
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] >= (double) (600 + Main.rand.Next(1000)))
|
|
{
|
|
this.localAI[3] = (float) -Main.rand.Next(200);
|
|
Main.PlaySound(4, (int) this.position.X, (int) this.position.Y, 10);
|
|
}
|
|
Main.wof = this.whoAmI;
|
|
int num229 = (int) ((double) this.position.X / 16.0);
|
|
int num230 = (int) (((double) this.position.X + (double) this.width) / 16.0);
|
|
int num231 = (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0);
|
|
int num232 = 0;
|
|
int j1 = num231 + 7;
|
|
while (num232 < 15 && j1 > Main.maxTilesY - 200)
|
|
{
|
|
++j1;
|
|
for (int i = num229; i <= num230; ++i)
|
|
{
|
|
try
|
|
{
|
|
if (!WorldGen.SolidTile(i, j1))
|
|
{
|
|
if (Main.tile[i, j1].liquid <= (byte) 0)
|
|
continue;
|
|
}
|
|
++num232;
|
|
}
|
|
catch
|
|
{
|
|
num232 += 15;
|
|
}
|
|
}
|
|
}
|
|
int num233 = j1 + 4;
|
|
if (Main.wofB == -1)
|
|
Main.wofB = num233 * 16;
|
|
else if (Main.wofB > num233 * 16)
|
|
{
|
|
--Main.wofB;
|
|
if (Main.wofB < num233 * 16)
|
|
Main.wofB = num233 * 16;
|
|
}
|
|
else if (Main.wofB < num233 * 16)
|
|
{
|
|
++Main.wofB;
|
|
if (Main.wofB > num233 * 16)
|
|
Main.wofB = num233 * 16;
|
|
}
|
|
int num234 = 0;
|
|
int j2 = num231 - 7;
|
|
while (num234 < 15 && j2 < Main.maxTilesY - 10)
|
|
{
|
|
--j2;
|
|
for (int i = num229; i <= num230; ++i)
|
|
{
|
|
try
|
|
{
|
|
if (!WorldGen.SolidTile(i, j2))
|
|
{
|
|
if (Main.tile[i, j2].liquid <= (byte) 0)
|
|
continue;
|
|
}
|
|
++num234;
|
|
}
|
|
catch
|
|
{
|
|
num234 += 15;
|
|
}
|
|
}
|
|
}
|
|
int num235 = j2 - 4;
|
|
if (Main.wofT == -1)
|
|
Main.wofT = num235 * 16;
|
|
else if (Main.wofT > num235 * 16)
|
|
{
|
|
--Main.wofT;
|
|
if (Main.wofT < num235 * 16)
|
|
Main.wofT = num235 * 16;
|
|
}
|
|
else if (Main.wofT < num235 * 16)
|
|
{
|
|
++Main.wofT;
|
|
if (Main.wofT > num235 * 16)
|
|
Main.wofT = num235 * 16;
|
|
}
|
|
float num236 = (float) ((Main.wofB + Main.wofT) / 2 - this.height / 2);
|
|
if ((double) this.position.Y > (double) num236 + 1.0)
|
|
this.velocity.Y = -1f;
|
|
else if ((double) this.position.Y < (double) num236 - 1.0)
|
|
this.velocity.Y = 1f;
|
|
this.velocity.Y = 0.0f;
|
|
this.position.Y = num236;
|
|
float num237 = 1.5f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.75)
|
|
num237 += 0.25f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.5)
|
|
num237 += 0.4f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.25)
|
|
num237 += 0.5f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.1)
|
|
num237 += 0.6f;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.velocity.X = (float) this.direction;
|
|
}
|
|
if ((double) this.velocity.X < 0.0)
|
|
{
|
|
this.velocity.X = -num237;
|
|
this.direction = -1;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X = num237;
|
|
this.direction = 1;
|
|
}
|
|
this.spriteDirection = this.direction;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num238 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num239 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num240 = (float) Math.Sqrt((double) num238 * (double) num238 + (double) num239 * (double) num239);
|
|
float num241 = num238 * num240;
|
|
float num242 = num239 * num240;
|
|
this.rotation = this.direction <= 0 ? ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) >= (double) this.position.X + (double) (this.width / 2) ? 0.0f : (float) Math.Atan2((double) num242, (double) num241) + 3.14f) : ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) <= (double) this.position.X + (double) (this.width / 2) ? 0.0f : (float) Math.Atan2(-(double) num242, -(double) num241) + 3.14f);
|
|
if ((double) this.localAI[0] != 1.0 || Main.netMode == 1)
|
|
return;
|
|
this.localAI[0] = 2f;
|
|
int index56 = NPC.NewNPC((int) this.position.X, (int) (float) (((double) ((Main.wofB + Main.wofT) / 2) + (double) Main.wofT) / 2.0), 114, this.whoAmI);
|
|
Main.npc[index56].ai[0] = 1f;
|
|
int index57 = NPC.NewNPC((int) this.position.X, (int) (float) (((double) ((Main.wofB + Main.wofT) / 2) + (double) Main.wofB) / 2.0), 114, this.whoAmI);
|
|
Main.npc[index57].ai[0] = -1f;
|
|
float num243 = (float) (((double) ((Main.wofB + Main.wofT) / 2) + (double) Main.wofB) / 2.0);
|
|
for (int index58 = 0; index58 < 11; ++index58)
|
|
{
|
|
int index59 = NPC.NewNPC((int) this.position.X, (int) num243, 115, this.whoAmI);
|
|
Main.npc[index59].ai[0] = (float) ((double) index58 * 0.100000001490116 - 0.0500000007450581);
|
|
}
|
|
}
|
|
else if (this.aiStyle == 28)
|
|
{
|
|
if (Main.wof < 0)
|
|
{
|
|
this.active = false;
|
|
}
|
|
else
|
|
{
|
|
this.realLife = Main.wof;
|
|
this.TargetClosest();
|
|
this.position.X = Main.npc[Main.wof].position.X;
|
|
this.direction = Main.npc[Main.wof].direction;
|
|
this.spriteDirection = this.direction;
|
|
float num244 = (float) ((Main.wofB + Main.wofT) / 2);
|
|
float num245 = ((double) this.ai[0] <= 0.0 ? (float) (((double) num244 + (double) Main.wofB) / 2.0) : (float) (((double) num244 + (double) Main.wofT) / 2.0)) - (float) (this.height / 2);
|
|
if ((double) this.position.Y > (double) num245 + 1.0)
|
|
this.velocity.Y = -1f;
|
|
else if ((double) this.position.Y < (double) num245 - 1.0)
|
|
{
|
|
this.velocity.Y = 1f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = 0.0f;
|
|
this.position.Y = num245;
|
|
}
|
|
if ((double) this.velocity.Y > 5.0)
|
|
this.velocity.Y = 5f;
|
|
if ((double) this.velocity.Y < -5.0)
|
|
this.velocity.Y = -5f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num246 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num247 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num248 = (float) Math.Sqrt((double) num246 * (double) num246 + (double) num247 * (double) num247);
|
|
float num249 = num246 * num248;
|
|
float num250 = num247 * num248;
|
|
bool flag = true;
|
|
if (this.direction > 0)
|
|
{
|
|
if ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) > (double) this.position.X + (double) (this.width / 2))
|
|
{
|
|
this.rotation = (float) Math.Atan2(-(double) num250, -(double) num249) + 3.14f;
|
|
}
|
|
else
|
|
{
|
|
this.rotation = 0.0f;
|
|
flag = false;
|
|
}
|
|
}
|
|
else if ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) < (double) this.position.X + (double) (this.width / 2))
|
|
{
|
|
this.rotation = (float) Math.Atan2((double) num250, (double) num249) + 3.14f;
|
|
}
|
|
else
|
|
{
|
|
this.rotation = 0.0f;
|
|
flag = false;
|
|
}
|
|
if (Main.netMode == 1)
|
|
return;
|
|
int num251 = 4;
|
|
++this.localAI[1];
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.75)
|
|
{
|
|
++this.localAI[1];
|
|
++num251;
|
|
}
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.5)
|
|
{
|
|
++this.localAI[1];
|
|
++num251;
|
|
}
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.25)
|
|
{
|
|
++this.localAI[1];
|
|
num251 += 2;
|
|
}
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.1)
|
|
{
|
|
this.localAI[1] += 2f;
|
|
num251 += 3;
|
|
}
|
|
if ((double) this.localAI[2] == 0.0)
|
|
{
|
|
if ((double) this.localAI[1] <= 600.0)
|
|
return;
|
|
this.localAI[2] = 1f;
|
|
this.localAI[1] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.localAI[1] <= 45.0 || !Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
return;
|
|
this.localAI[1] = 0.0f;
|
|
++this.localAI[2];
|
|
if ((double) this.localAI[2] >= (double) num251)
|
|
this.localAI[2] = 0.0f;
|
|
if (!flag)
|
|
return;
|
|
float num252 = 9f;
|
|
int Damage = 11;
|
|
int Type = 83;
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.5)
|
|
{
|
|
++Damage;
|
|
++num252;
|
|
}
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.25)
|
|
{
|
|
++Damage;
|
|
++num252;
|
|
}
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.1)
|
|
{
|
|
Damage += 2;
|
|
num252 += 2f;
|
|
}
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num253 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num254 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y;
|
|
float num255 = (float) Math.Sqrt((double) num253 * (double) num253 + (double) num254 * (double) num254);
|
|
float num256 = num252 / num255;
|
|
float SpeedX = num253 * num256;
|
|
float SpeedY = num254 * num256;
|
|
vector2.X += SpeedX;
|
|
vector2.Y += SpeedY;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 29)
|
|
{
|
|
if (this.justHit)
|
|
this.ai[1] = 10f;
|
|
if (Main.wof < 0)
|
|
{
|
|
this.active = false;
|
|
}
|
|
else
|
|
{
|
|
this.TargetClosest();
|
|
float num257 = 0.1f;
|
|
float num258 = 300f;
|
|
if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.25)
|
|
{
|
|
this.damage = 75;
|
|
this.defense = 40;
|
|
num258 = 900f;
|
|
}
|
|
else if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.5)
|
|
{
|
|
this.damage = 60;
|
|
this.defense = 30;
|
|
num258 = 700f;
|
|
}
|
|
else if ((double) Main.npc[Main.wof].life < (double) Main.npc[Main.wof].lifeMax * 0.75)
|
|
{
|
|
this.damage = 45;
|
|
this.defense = 20;
|
|
num258 = 500f;
|
|
}
|
|
float x = Main.npc[Main.wof].position.X + (float) (Main.npc[Main.wof].width / 2);
|
|
float y1 = Main.npc[Main.wof].position.Y;
|
|
float num259 = (float) (Main.wofB - Main.wofT);
|
|
float y2 = (float) Main.wofT + num259 * this.ai[0];
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] > 100.0)
|
|
{
|
|
num258 = (float) (int) ((double) num258 * 1.29999995231628);
|
|
if ((double) this.ai[2] > 200.0)
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
Vector2 vector2 = new Vector2(x, y2);
|
|
float num260 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - (float) (this.width / 2) - vector2.X;
|
|
float num261 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - (float) (this.height / 2) - vector2.Y;
|
|
float num262 = (float) Math.Sqrt((double) num260 * (double) num260 + (double) num261 * (double) num261);
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
if ((double) num262 > (double) num258)
|
|
{
|
|
float num263 = num258 / num262;
|
|
num260 *= num263;
|
|
num261 *= num263;
|
|
}
|
|
if ((double) this.position.X < (double) x + (double) num260)
|
|
{
|
|
this.velocity.X += num257;
|
|
if ((double) this.velocity.X < 0.0 && (double) num260 > 0.0)
|
|
this.velocity.X += num257 * 2.5f;
|
|
}
|
|
else if ((double) this.position.X > (double) x + (double) num260)
|
|
{
|
|
this.velocity.X -= num257;
|
|
if ((double) this.velocity.X > 0.0 && (double) num260 < 0.0)
|
|
this.velocity.X -= num257 * 2.5f;
|
|
}
|
|
if ((double) this.position.Y < (double) y2 + (double) num261)
|
|
{
|
|
this.velocity.Y += num257;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num261 > 0.0)
|
|
this.velocity.Y += num257 * 2.5f;
|
|
}
|
|
else if ((double) this.position.Y > (double) y2 + (double) num261)
|
|
{
|
|
this.velocity.Y -= num257;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num261 < 0.0)
|
|
this.velocity.Y -= num257 * 2.5f;
|
|
}
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
if ((double) this.velocity.Y > 4.0)
|
|
this.velocity.Y = 4f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
else if ((double) this.ai[1] > 0.0)
|
|
--this.ai[1];
|
|
else
|
|
this.ai[1] = 0.0f;
|
|
if ((double) num260 > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) num261, (double) num260);
|
|
}
|
|
if ((double) num260 < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) num261, (double) num260) + 3.14f;
|
|
}
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.width / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16, 0.3f, 0.2f, 0.1f);
|
|
}
|
|
}
|
|
else if (this.aiStyle == 30)
|
|
{
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead || !Main.player[this.target].active)
|
|
this.TargetClosest();
|
|
bool dead = Main.player[this.target].dead;
|
|
float num264 = this.position.X + (float) (this.width / 2) - Main.player[this.target].position.X - (float) (Main.player[this.target].width / 2);
|
|
float num265 = (float) Math.Atan2((double) ((float) ((double) this.position.Y + (double) this.height - 59.0) - Main.player[this.target].position.Y - (float) (Main.player[this.target].height / 2)), (double) num264) + 1.57f;
|
|
if ((double) num265 < 0.0)
|
|
num265 += 6.283f;
|
|
else if ((double) num265 > 6.283)
|
|
num265 -= 6.283f;
|
|
float num266 = 0.1f;
|
|
if ((double) this.rotation < (double) num265)
|
|
{
|
|
if ((double) num265 - (double) this.rotation > 3.1415)
|
|
this.rotation -= num266;
|
|
else
|
|
this.rotation += num266;
|
|
}
|
|
else if ((double) this.rotation > (double) num265)
|
|
{
|
|
if ((double) this.rotation - (double) num265 > 3.1415)
|
|
this.rotation += num266;
|
|
else
|
|
this.rotation -= num266;
|
|
}
|
|
if ((double) this.rotation > (double) num265 - (double) num266 && (double) this.rotation < (double) num265 + (double) num266)
|
|
this.rotation = num265;
|
|
if ((double) this.rotation < 0.0)
|
|
this.rotation += 6.283f;
|
|
else if ((double) this.rotation > 6.283)
|
|
this.rotation -= 6.283f;
|
|
if ((double) this.rotation > (double) num265 - (double) num266 && (double) this.rotation < (double) num265 + (double) num266)
|
|
this.rotation = num265;
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
if (Main.dayTime || dead)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if (this.timeLeft <= 10)
|
|
return;
|
|
this.timeLeft = 10;
|
|
}
|
|
else if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
float num267 = 7f;
|
|
float num268 = 0.1f;
|
|
int num269 = 1;
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.player[this.target].position.X + (double) Main.player[this.target].width)
|
|
num269 = -1;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num270 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) + (float) (num269 * 300) - vector2.X;
|
|
float num271 = (float) ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2) - 300.0) - vector2.Y;
|
|
float num272 = (float) Math.Sqrt((double) num270 * (double) num270 + (double) num271 * (double) num271);
|
|
float num273 = num272;
|
|
float num274 = num267 / num272;
|
|
float num275 = num270 * num274;
|
|
float num276 = num271 * num274;
|
|
if ((double) this.velocity.X < (double) num275)
|
|
{
|
|
this.velocity.X += num268;
|
|
if ((double) this.velocity.X < 0.0 && (double) num275 > 0.0)
|
|
this.velocity.X += num268;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num275)
|
|
{
|
|
this.velocity.X -= num268;
|
|
if ((double) this.velocity.X > 0.0 && (double) num275 < 0.0)
|
|
this.velocity.X -= num268;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num276)
|
|
{
|
|
this.velocity.Y += num268;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num276 > 0.0)
|
|
this.velocity.Y += num268;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num276)
|
|
{
|
|
this.velocity.Y -= num268;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num276 < 0.0)
|
|
this.velocity.Y -= num268;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 600.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.position.Y + (double) this.height < (double) Main.player[this.target].position.Y && (double) num273 < 400.0)
|
|
{
|
|
if (!Main.player[this.target].dead)
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 60.0)
|
|
{
|
|
this.ai[3] = 0.0f;
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num277 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num278 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
if (Main.netMode != 1)
|
|
{
|
|
float num279 = 9f;
|
|
int Damage = 20;
|
|
int Type = 83;
|
|
float num280 = (float) Math.Sqrt((double) num277 * (double) num277 + (double) num278 * (double) num278);
|
|
float num281 = num279 / num280;
|
|
float num282 = num277 * num281;
|
|
float num283 = num278 * num281;
|
|
float SpeedX = num282 + (float) Main.rand.Next(-40, 41) * 0.08f;
|
|
float SpeedY = num283 + (float) Main.rand.Next(-40, 41) * 0.08f;
|
|
vector2.X += SpeedX * 15f;
|
|
vector2.Y += SpeedY * 15f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] == 1.0)
|
|
{
|
|
this.rotation = num265;
|
|
float num284 = 12f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num285 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num286 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num287 = (float) Math.Sqrt((double) num285 * (double) num285 + (double) num286 * (double) num286);
|
|
float num288 = num284 / num287;
|
|
this.velocity.X = num285 * num288;
|
|
this.velocity.Y = num286 * num288;
|
|
this.ai[1] = 2f;
|
|
}
|
|
else if ((double) this.ai[1] == 2.0)
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 25.0)
|
|
{
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.Y *= 0.96f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y > -0.1 && (double) this.velocity.Y < 0.1)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f;
|
|
if ((double) this.ai[2] >= 70.0)
|
|
{
|
|
++this.ai[3];
|
|
this.ai[2] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.rotation = num265;
|
|
if ((double) this.ai[3] >= 4.0)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
this.ai[1] = 1f;
|
|
}
|
|
}
|
|
if ((double) this.life >= (double) this.lifeMax * 0.5)
|
|
return;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 1.0 || (double) this.ai[0] == 2.0)
|
|
{
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.ai[2] += 0.005f;
|
|
if ((double) this.ai[2] > 0.5)
|
|
this.ai[2] = 0.5f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[2] -= 0.005f;
|
|
if ((double) this.ai[2] < 0.0)
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
this.rotation += this.ai[2];
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] == 100.0)
|
|
{
|
|
++this.ai[0];
|
|
this.ai[1] = 0.0f;
|
|
if ((double) this.ai[0] == 3.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
Main.PlaySound(3, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 143);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 7);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 6);
|
|
}
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f);
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
}
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f);
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.Y *= 0.98f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y <= -0.1 || (double) this.velocity.Y >= 0.1)
|
|
return;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.damage = (int) ((double) this.defDamage * 1.5);
|
|
this.defense = this.defDefense + 15;
|
|
this.soundHit = 4;
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
float num289 = 8f;
|
|
float num290 = 0.15f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num291 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num292 = (float) ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2) - 300.0) - vector2.Y;
|
|
float num293 = (float) Math.Sqrt((double) num291 * (double) num291 + (double) num292 * (double) num292);
|
|
float num294 = num289 / num293;
|
|
float num295 = num291 * num294;
|
|
float num296 = num292 * num294;
|
|
if ((double) this.velocity.X < (double) num295)
|
|
{
|
|
this.velocity.X += num290;
|
|
if ((double) this.velocity.X < 0.0 && (double) num295 > 0.0)
|
|
this.velocity.X += num290;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num295)
|
|
{
|
|
this.velocity.X -= num290;
|
|
if ((double) this.velocity.X > 0.0 && (double) num295 < 0.0)
|
|
this.velocity.X -= num290;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num296)
|
|
{
|
|
this.velocity.Y += num290;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num296 > 0.0)
|
|
this.velocity.Y += num290;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num296)
|
|
{
|
|
this.velocity.Y -= num290;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num296 < 0.0)
|
|
this.velocity.Y -= num290;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 300.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
}
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num297 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num298 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
this.rotation = (float) Math.Atan2((double) num298, (double) num297) - 1.57f;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.75)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.5)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.25)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.1)
|
|
this.localAI[1] += 2f;
|
|
if ((double) this.localAI[1] <= 140.0 || !Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
return;
|
|
this.localAI[1] = 0.0f;
|
|
float num299 = 9f;
|
|
int Damage = 25;
|
|
int Type = 100;
|
|
float num300 = (float) Math.Sqrt((double) num297 * (double) num297 + (double) num298 * (double) num298);
|
|
float num301 = num299 / num300;
|
|
float SpeedX = num297 * num301;
|
|
float SpeedY = num298 * num301;
|
|
vector2.X += SpeedX * 15f;
|
|
vector2.Y += SpeedY * 15f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
else
|
|
{
|
|
int num302 = 1;
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.player[this.target].position.X + (double) Main.player[this.target].width)
|
|
num302 = -1;
|
|
float num303 = 8f;
|
|
float num304 = 0.2f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num305 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) + (float) (num302 * 340) - vector2.X;
|
|
float num306 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num307 = (float) Math.Sqrt((double) num305 * (double) num305 + (double) num306 * (double) num306);
|
|
float num308 = num303 / num307;
|
|
float num309 = num305 * num308;
|
|
float num310 = num306 * num308;
|
|
if ((double) this.velocity.X < (double) num309)
|
|
{
|
|
this.velocity.X += num304;
|
|
if ((double) this.velocity.X < 0.0 && (double) num309 > 0.0)
|
|
this.velocity.X += num304;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num309)
|
|
{
|
|
this.velocity.X -= num304;
|
|
if ((double) this.velocity.X > 0.0 && (double) num309 < 0.0)
|
|
this.velocity.X -= num304;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num310)
|
|
{
|
|
this.velocity.Y += num304;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num310 > 0.0)
|
|
this.velocity.Y += num304;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num310)
|
|
{
|
|
this.velocity.Y -= num304;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num310 < 0.0)
|
|
this.velocity.Y -= num304;
|
|
}
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num311 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num312 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
this.rotation = (float) Math.Atan2((double) num312, (double) num311) - 1.57f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.75)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.5)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.25)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.1)
|
|
this.localAI[1] += 2f;
|
|
if ((double) this.localAI[1] > 45.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
this.localAI[1] = 0.0f;
|
|
float num313 = 9f;
|
|
int Damage = 20;
|
|
int Type = 100;
|
|
float num314 = (float) Math.Sqrt((double) num311 * (double) num311 + (double) num312 * (double) num312);
|
|
float num315 = num313 / num314;
|
|
float SpeedX = num311 * num315;
|
|
float SpeedY = num312 * num315;
|
|
vector2.X += SpeedX * 15f;
|
|
vector2.Y += SpeedY * 15f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < 200.0)
|
|
return;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 31)
|
|
{
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead || !Main.player[this.target].active)
|
|
this.TargetClosest();
|
|
bool dead = Main.player[this.target].dead;
|
|
float num316 = this.position.X + (float) (this.width / 2) - Main.player[this.target].position.X - (float) (Main.player[this.target].width / 2);
|
|
float num317 = (float) Math.Atan2((double) ((float) ((double) this.position.Y + (double) this.height - 59.0) - Main.player[this.target].position.Y - (float) (Main.player[this.target].height / 2)), (double) num316) + 1.57f;
|
|
if ((double) num317 < 0.0)
|
|
num317 += 6.283f;
|
|
else if ((double) num317 > 6.283)
|
|
num317 -= 6.283f;
|
|
float num318 = 0.15f;
|
|
if ((double) this.rotation < (double) num317)
|
|
{
|
|
if ((double) num317 - (double) this.rotation > 3.1415)
|
|
this.rotation -= num318;
|
|
else
|
|
this.rotation += num318;
|
|
}
|
|
else if ((double) this.rotation > (double) num317)
|
|
{
|
|
if ((double) this.rotation - (double) num317 > 3.1415)
|
|
this.rotation += num318;
|
|
else
|
|
this.rotation -= num318;
|
|
}
|
|
if ((double) this.rotation > (double) num317 - (double) num318 && (double) this.rotation < (double) num317 + (double) num318)
|
|
this.rotation = num317;
|
|
if ((double) this.rotation < 0.0)
|
|
this.rotation += 6.283f;
|
|
else if ((double) this.rotation > 6.283)
|
|
this.rotation -= 6.283f;
|
|
if ((double) this.rotation > (double) num317 - (double) num318 && (double) this.rotation < (double) num317 + (double) num318)
|
|
this.rotation = num317;
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
if (Main.dayTime || dead)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if (this.timeLeft <= 10)
|
|
return;
|
|
this.timeLeft = 10;
|
|
}
|
|
else if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
float num319 = 12f;
|
|
float num320 = 0.4f;
|
|
int num321 = 1;
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.player[this.target].position.X + (double) Main.player[this.target].width)
|
|
num321 = -1;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num322 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) + (float) (num321 * 400) - vector2.X;
|
|
float num323 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num324 = (float) Math.Sqrt((double) num322 * (double) num322 + (double) num323 * (double) num323);
|
|
float num325 = num319 / num324;
|
|
float num326 = num322 * num325;
|
|
float num327 = num323 * num325;
|
|
if ((double) this.velocity.X < (double) num326)
|
|
{
|
|
this.velocity.X += num320;
|
|
if ((double) this.velocity.X < 0.0 && (double) num326 > 0.0)
|
|
this.velocity.X += num320;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num326)
|
|
{
|
|
this.velocity.X -= num320;
|
|
if ((double) this.velocity.X > 0.0 && (double) num326 < 0.0)
|
|
this.velocity.X -= num320;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num327)
|
|
{
|
|
this.velocity.Y += num320;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num327 > 0.0)
|
|
this.velocity.Y += num320;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num327)
|
|
{
|
|
this.velocity.Y -= num320;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num327 < 0.0)
|
|
this.velocity.Y -= num320;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 600.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if (!Main.player[this.target].dead)
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 60.0)
|
|
{
|
|
this.ai[3] = 0.0f;
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num328 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num329 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
if (Main.netMode != 1)
|
|
{
|
|
float num330 = 12f;
|
|
int Damage = 25;
|
|
int Type = 96;
|
|
float num331 = (float) Math.Sqrt((double) num328 * (double) num328 + (double) num329 * (double) num329);
|
|
float num332 = num330 / num331;
|
|
float num333 = num328 * num332;
|
|
float num334 = num329 * num332;
|
|
float SpeedX = num333 + (float) Main.rand.Next(-40, 41) * 0.05f;
|
|
float SpeedY = num334 + (float) Main.rand.Next(-40, 41) * 0.05f;
|
|
vector2.X += SpeedX * 4f;
|
|
vector2.Y += SpeedY * 4f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] == 1.0)
|
|
{
|
|
this.rotation = num317;
|
|
float num335 = 13f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num336 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num337 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num338 = (float) Math.Sqrt((double) num336 * (double) num336 + (double) num337 * (double) num337);
|
|
float num339 = num335 / num338;
|
|
this.velocity.X = num336 * num339;
|
|
this.velocity.Y = num337 * num339;
|
|
this.ai[1] = 2f;
|
|
}
|
|
else if ((double) this.ai[1] == 2.0)
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 8.0)
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
this.velocity.Y *= 0.9f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y > -0.1 && (double) this.velocity.Y < 0.1)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f;
|
|
if ((double) this.ai[2] >= 42.0)
|
|
{
|
|
++this.ai[3];
|
|
this.ai[2] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.rotation = num317;
|
|
if ((double) this.ai[3] >= 10.0)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
this.ai[1] = 1f;
|
|
}
|
|
}
|
|
if ((double) this.life >= (double) this.lifeMax * 0.5)
|
|
return;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 1.0 || (double) this.ai[0] == 2.0)
|
|
{
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.ai[2] += 0.005f;
|
|
if ((double) this.ai[2] > 0.5)
|
|
this.ai[2] = 0.5f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[2] -= 0.005f;
|
|
if ((double) this.ai[2] < 0.0)
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
this.rotation += this.ai[2];
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] == 100.0)
|
|
{
|
|
++this.ai[0];
|
|
this.ai[1] = 0.0f;
|
|
if ((double) this.ai[0] == 3.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
Main.PlaySound(3, (int) this.position.X, (int) this.position.Y);
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 144);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 7);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 6);
|
|
}
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f);
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
}
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f);
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.Y *= 0.98f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y <= -0.1 || (double) this.velocity.Y >= 0.1)
|
|
return;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.soundHit = 4;
|
|
this.damage = (int) ((double) this.defDamage * 1.5);
|
|
this.defense = this.defDefense + 25;
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
float num340 = 4f;
|
|
float num341 = 0.1f;
|
|
int num342 = 1;
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.player[this.target].position.X + (double) Main.player[this.target].width)
|
|
num342 = -1;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num343 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) + (float) (num342 * 180) - vector2.X;
|
|
float num344 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num345 = (float) Math.Sqrt((double) num343 * (double) num343 + (double) num344 * (double) num344);
|
|
float num346 = num340 / num345;
|
|
float num347 = num343 * num346;
|
|
float num348 = num344 * num346;
|
|
if ((double) this.velocity.X < (double) num347)
|
|
{
|
|
this.velocity.X += num341;
|
|
if ((double) this.velocity.X < 0.0 && (double) num347 > 0.0)
|
|
this.velocity.X += num341;
|
|
}
|
|
else if ((double) this.velocity.X > (double) num347)
|
|
{
|
|
this.velocity.X -= num341;
|
|
if ((double) this.velocity.X > 0.0 && (double) num347 < 0.0)
|
|
this.velocity.X -= num341;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num348)
|
|
{
|
|
this.velocity.Y += num341;
|
|
if ((double) this.velocity.Y < 0.0 && (double) num348 > 0.0)
|
|
this.velocity.Y += num341;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) num348)
|
|
{
|
|
this.velocity.Y -= num341;
|
|
if ((double) this.velocity.Y > 0.0 && (double) num348 < 0.0)
|
|
this.velocity.Y -= num341;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 400.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.netUpdate = true;
|
|
}
|
|
if (!Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
return;
|
|
++this.localAI[2];
|
|
if ((double) this.localAI[2] > 22.0)
|
|
{
|
|
this.localAI[2] = 0.0f;
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 34);
|
|
}
|
|
if (Main.netMode == 1)
|
|
return;
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.75)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.5)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.25)
|
|
++this.localAI[1];
|
|
if ((double) this.life < (double) this.lifeMax * 0.1)
|
|
this.localAI[1] += 2f;
|
|
if ((double) this.localAI[1] <= 8.0)
|
|
return;
|
|
this.localAI[1] = 0.0f;
|
|
float num349 = 6f;
|
|
int Damage = 30;
|
|
int Type = 101;
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num350 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num351 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num352 = (float) Math.Sqrt((double) num350 * (double) num350 + (double) num351 * (double) num351);
|
|
float num353 = num349 / num352;
|
|
float num354 = num350 * num353;
|
|
float num355 = num351 * num353 + (float) Main.rand.Next(-40, 41) * 0.01f;
|
|
float num356 = num354 + (float) Main.rand.Next(-40, 41) * 0.01f;
|
|
float SpeedY = num355 + this.velocity.Y * 0.5f;
|
|
float SpeedX = num356 + this.velocity.X * 0.5f;
|
|
vector2.X -= SpeedX * 1f;
|
|
vector2.Y -= SpeedY * 1f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
else if ((double) this.ai[1] == 1.0)
|
|
{
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
this.rotation = num317;
|
|
float num357 = 14f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num358 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num359 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num360 = (float) Math.Sqrt((double) num358 * (double) num358 + (double) num359 * (double) num359);
|
|
float num361 = num357 / num360;
|
|
this.velocity.X = num358 * num361;
|
|
this.velocity.Y = num359 * num361;
|
|
this.ai[1] = 2f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[1] != 2.0)
|
|
return;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 50.0)
|
|
{
|
|
this.velocity.X *= 0.93f;
|
|
this.velocity.Y *= 0.93f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.velocity.Y > -0.1 && (double) this.velocity.Y < 0.1)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f;
|
|
if ((double) this.ai[2] < 80.0)
|
|
return;
|
|
++this.ai[3];
|
|
this.ai[2] = 0.0f;
|
|
this.target = (int) byte.MaxValue;
|
|
this.rotation = num317;
|
|
if ((double) this.ai[3] >= 6.0)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
this.ai[1] = 1f;
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 32)
|
|
{
|
|
this.damage = this.defDamage;
|
|
this.defense = this.defDefense;
|
|
if ((double) this.ai[0] == 0.0 && Main.netMode != 1)
|
|
{
|
|
this.TargetClosest();
|
|
this.ai[0] = 1f;
|
|
if (this.type != 68)
|
|
{
|
|
int index60 = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) this.position.Y + this.height / 2, 128, this.whoAmI);
|
|
Main.npc[index60].ai[0] = -1f;
|
|
Main.npc[index60].ai[1] = (float) this.whoAmI;
|
|
Main.npc[index60].target = this.target;
|
|
Main.npc[index60].netUpdate = true;
|
|
int index61 = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) this.position.Y + this.height / 2, 129, this.whoAmI);
|
|
Main.npc[index61].ai[0] = 1f;
|
|
Main.npc[index61].ai[1] = (float) this.whoAmI;
|
|
Main.npc[index61].target = this.target;
|
|
Main.npc[index61].netUpdate = true;
|
|
int index62 = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) this.position.Y + this.height / 2, 130, this.whoAmI);
|
|
Main.npc[index62].ai[0] = -1f;
|
|
Main.npc[index62].ai[1] = (float) this.whoAmI;
|
|
Main.npc[index62].target = this.target;
|
|
Main.npc[index62].ai[3] = 150f;
|
|
Main.npc[index62].netUpdate = true;
|
|
int index63 = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) this.position.Y + this.height / 2, 131, this.whoAmI);
|
|
Main.npc[index63].ai[0] = 1f;
|
|
Main.npc[index63].ai[1] = (float) this.whoAmI;
|
|
Main.npc[index63].target = this.target;
|
|
Main.npc[index63].netUpdate = true;
|
|
Main.npc[index63].ai[3] = 150f;
|
|
}
|
|
}
|
|
if (this.type == 68 && (double) this.ai[1] != 3.0 && (double) this.ai[1] != 2.0)
|
|
{
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
this.ai[1] = 2f;
|
|
}
|
|
if (Main.player[this.target].dead || (double) Math.Abs(this.position.X - Main.player[this.target].position.X) > 6000.0 || (double) Math.Abs(this.position.Y - Main.player[this.target].position.Y) > 6000.0)
|
|
{
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead || (double) Math.Abs(this.position.X - Main.player[this.target].position.X) > 6000.0 || (double) Math.Abs(this.position.Y - Main.player[this.target].position.Y) > 6000.0)
|
|
this.ai[1] = 3f;
|
|
}
|
|
if (Main.dayTime && (double) this.ai[1] != 3.0 && (double) this.ai[1] != 2.0)
|
|
{
|
|
this.ai[1] = 2f;
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 600.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 1f;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
}
|
|
this.rotation = this.velocity.X / 15f;
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y - 200.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.98f;
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.player[this.target].position.Y - 500.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.98f;
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < -2.0)
|
|
this.velocity.Y = -2f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) + 100.0)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) >= (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) - 100.0)
|
|
return;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X >= -8.0)
|
|
return;
|
|
this.velocity.X = -8f;
|
|
}
|
|
else if ((double) this.ai[1] == 1.0)
|
|
{
|
|
this.defense *= 2;
|
|
this.damage *= 2;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] == 2.0)
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
if ((double) this.ai[2] >= 400.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
this.rotation += (float) this.direction * 0.3f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num362 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num363 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num364 = 2f / (float) Math.Sqrt((double) num362 * (double) num362 + (double) num363 * (double) num363);
|
|
this.velocity.X = num362 * num364;
|
|
this.velocity.Y = num363 * num364;
|
|
}
|
|
else if ((double) this.ai[1] == 2.0)
|
|
{
|
|
this.damage = 9999;
|
|
this.defense = 9999;
|
|
this.rotation += (float) this.direction * 0.3f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num365 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num366 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num367 = 8f / (float) Math.Sqrt((double) num365 * (double) num365 + (double) num366 * (double) num366);
|
|
this.velocity.X = num365 * num367;
|
|
this.velocity.Y = num366 * num367;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[1] != 3.0)
|
|
return;
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.95f;
|
|
this.velocity.X *= 0.95f;
|
|
if (this.timeLeft <= 500)
|
|
return;
|
|
this.timeLeft = 500;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 33)
|
|
{
|
|
Vector2 vector2_6 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num368 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2_6.X;
|
|
float num369 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_6.Y;
|
|
float num370 = (float) Math.Sqrt((double) num368 * (double) num368 + (double) num369 * (double) num369);
|
|
if ((double) this.ai[2] != 99.0)
|
|
{
|
|
if ((double) num370 > 800.0)
|
|
this.ai[2] = 99f;
|
|
}
|
|
else if ((double) num370 < 400.0)
|
|
this.ai[2] = 0.0f;
|
|
this.spriteDirection = -(int) this.ai[0];
|
|
if (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != 32)
|
|
{
|
|
this.ai[2] += 10f;
|
|
if ((double) this.ai[2] > 50.0 || Main.netMode != 2)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
}
|
|
if ((double) this.ai[2] == 99.0)
|
|
{
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y > 8.0)
|
|
this.velocity.Y = 8f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < -8.0)
|
|
this.velocity.Y = -8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.5f;
|
|
if ((double) this.velocity.X > 12.0)
|
|
this.velocity.X = 12f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) >= (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2))
|
|
return;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.5f;
|
|
if ((double) this.velocity.X >= -12.0)
|
|
return;
|
|
this.velocity.X = -12f;
|
|
}
|
|
else if ((double) this.ai[2] == 0.0 || (double) this.ai[2] == 3.0)
|
|
{
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] == 3.0 && this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] != 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead)
|
|
{
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y > 16.0)
|
|
this.velocity.Y = 16f;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_7 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num371 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_7.X;
|
|
float num372 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2_7.Y;
|
|
float num373 = 7f / (float) Math.Sqrt((double) num371 * (double) num371 + (double) num372 * (double) num372);
|
|
float num374 = num371 * num373;
|
|
float num375 = num372 * num373;
|
|
this.rotation = (float) Math.Atan2((double) num375, (double) num374) - 1.57f;
|
|
if ((double) this.velocity.X > (double) num374)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.97f;
|
|
this.velocity.X -= 0.05f;
|
|
}
|
|
if ((double) this.velocity.X < (double) num374)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.97f;
|
|
this.velocity.X += 0.05f;
|
|
}
|
|
if ((double) this.velocity.Y > (double) num375)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.97f;
|
|
this.velocity.Y -= 0.05f;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num375)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.97f;
|
|
this.velocity.Y += 0.05f;
|
|
}
|
|
}
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 600.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 300.0)
|
|
{
|
|
++this.ai[2];
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y + 320.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y + 260.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.3f;
|
|
if ((double) this.velocity.X > 12.0)
|
|
this.velocity.X = 12f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 250.0)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.3f;
|
|
if ((double) this.velocity.X < -12.0)
|
|
this.velocity.X = -12f;
|
|
}
|
|
}
|
|
Vector2 vector2_8 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num376 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2_8.X;
|
|
float num377 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_8.Y;
|
|
Math.Sqrt((double) num376 * (double) num376 + (double) num377 * (double) num377);
|
|
this.rotation = (float) Math.Atan2((double) num377, (double) num376) + 1.57f;
|
|
}
|
|
else if ((double) this.ai[2] == 1.0)
|
|
{
|
|
Vector2 vector2_9 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num378 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2_9.X;
|
|
float num379 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_9.Y;
|
|
float num380 = (float) Math.Sqrt((double) num378 * (double) num378 + (double) num379 * (double) num379);
|
|
this.rotation = (float) Math.Atan2((double) num379, (double) num378) + 1.57f;
|
|
this.velocity.X *= 0.95f;
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y < -8.0)
|
|
this.velocity.Y = -8f;
|
|
if ((double) this.position.Y >= (double) Main.npc[(int) this.ai[1]].position.Y - 200.0)
|
|
return;
|
|
this.TargetClosest();
|
|
this.ai[2] = 2f;
|
|
vector2_9 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num381 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_9.X;
|
|
float num382 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2_9.Y;
|
|
float num383 = 22f / (float) Math.Sqrt((double) num381 * (double) num381 + (double) num382 * (double) num382);
|
|
this.velocity.X = num381 * num383;
|
|
this.velocity.Y = num382 * num383;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[2] == 2.0)
|
|
{
|
|
if ((double) this.position.Y <= (double) Main.player[this.target].position.Y && (double) this.velocity.Y >= 0.0)
|
|
return;
|
|
this.ai[2] = 3f;
|
|
}
|
|
else if ((double) this.ai[2] == 4.0)
|
|
{
|
|
this.TargetClosest();
|
|
Vector2 vector2_10 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num384 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_10.X;
|
|
float num385 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2_10.Y;
|
|
float num386 = 7f / (float) Math.Sqrt((double) num384 * (double) num384 + (double) num385 * (double) num385);
|
|
float num387 = num384 * num386;
|
|
float num388 = num385 * num386;
|
|
if ((double) this.velocity.X > (double) num387)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.97f;
|
|
this.velocity.X -= 0.05f;
|
|
}
|
|
if ((double) this.velocity.X < (double) num387)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.97f;
|
|
this.velocity.X += 0.05f;
|
|
}
|
|
if ((double) this.velocity.Y > (double) num388)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.97f;
|
|
this.velocity.Y -= 0.05f;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num388)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.97f;
|
|
this.velocity.Y += 0.05f;
|
|
}
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 600.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
vector2_10 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num389 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2_10.X;
|
|
float num390 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_10.Y;
|
|
float num391 = (float) Math.Sqrt((double) num389 * (double) num389 + (double) num390 * (double) num390);
|
|
this.rotation = (float) Math.Atan2((double) num390, (double) num389) + 1.57f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] != 5.0 || ((double) this.velocity.X <= 0.0 || (double) this.position.X + (double) (this.width / 2) <= (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2)) && ((double) this.velocity.X >= 0.0 || (double) this.position.X + (double) (this.width / 2) >= (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2)))
|
|
return;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else if (this.aiStyle == 34)
|
|
{
|
|
this.spriteDirection = -(int) this.ai[0];
|
|
Vector2 vector2_11 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num392 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2_11.X;
|
|
float num393 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_11.Y;
|
|
float num394 = (float) Math.Sqrt((double) num392 * (double) num392 + (double) num393 * (double) num393);
|
|
if ((double) this.ai[2] != 99.0)
|
|
{
|
|
if ((double) num394 > 800.0)
|
|
this.ai[2] = 99f;
|
|
}
|
|
else if ((double) num394 < 400.0)
|
|
this.ai[2] = 0.0f;
|
|
if (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != 32)
|
|
{
|
|
this.ai[2] += 10f;
|
|
if ((double) this.ai[2] > 50.0 || Main.netMode != 2)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
}
|
|
if ((double) this.ai[2] == 99.0)
|
|
{
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y > 8.0)
|
|
this.velocity.Y = 8f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < -8.0)
|
|
this.velocity.Y = -8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.5f;
|
|
if ((double) this.velocity.X > 12.0)
|
|
this.velocity.X = 12f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) >= (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2))
|
|
return;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.5f;
|
|
if ((double) this.velocity.X >= -12.0)
|
|
return;
|
|
this.velocity.X = -12f;
|
|
}
|
|
else if ((double) this.ai[2] == 0.0 || (double) this.ai[2] == 3.0)
|
|
{
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] == 3.0 && this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] != 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead)
|
|
{
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y > 16.0)
|
|
this.velocity.Y = 16f;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_12 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num395 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_12.X;
|
|
float num396 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2_12.Y;
|
|
float num397 = 12f / (float) Math.Sqrt((double) num395 * (double) num395 + (double) num396 * (double) num396);
|
|
float num398 = num395 * num397;
|
|
float num399 = num396 * num397;
|
|
this.rotation = (float) Math.Atan2((double) num399, (double) num398) - 1.57f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < 2.0)
|
|
{
|
|
this.rotation = (float) Math.Atan2((double) num399, (double) num398) - 1.57f;
|
|
this.velocity.X = num398;
|
|
this.velocity.Y = num399;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
this.velocity *= 0.97f;
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 600.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 600.0)
|
|
{
|
|
++this.ai[2];
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y + 300.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y + 230.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) + 250.0)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.94f;
|
|
this.velocity.X -= 0.3f;
|
|
if ((double) this.velocity.X > 9.0)
|
|
this.velocity.X = 9f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2))
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.94f;
|
|
this.velocity.X += 0.2f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
Vector2 vector2_13 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num400 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2_13.X;
|
|
float num401 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_13.Y;
|
|
Math.Sqrt((double) num400 * (double) num400 + (double) num401 * (double) num401);
|
|
this.rotation = (float) Math.Atan2((double) num401, (double) num400) + 1.57f;
|
|
}
|
|
else if ((double) this.ai[2] == 1.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
Vector2 vector2_14 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num402 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 280.0 * (double) this.ai[0]) - vector2_14.X;
|
|
float num403 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_14.Y;
|
|
float num404 = (float) Math.Sqrt((double) num402 * (double) num402 + (double) num403 * (double) num403);
|
|
this.rotation = (float) Math.Atan2((double) num403, (double) num402) + 1.57f;
|
|
this.velocity.X = (float) (((double) this.velocity.X * 5.0 + (double) Main.npc[(int) this.ai[1]].velocity.X) / 6.0);
|
|
this.velocity.X += 0.5f;
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.velocity.Y < -9.0)
|
|
this.velocity.Y = -9f;
|
|
if ((double) this.position.Y >= (double) Main.npc[(int) this.ai[1]].position.Y - 280.0)
|
|
return;
|
|
this.TargetClosest();
|
|
this.ai[2] = 2f;
|
|
vector2_14 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num405 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_14.X;
|
|
float num406 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2_14.Y;
|
|
float num407 = 20f / (float) Math.Sqrt((double) num405 * (double) num405 + (double) num406 * (double) num406);
|
|
this.velocity.X = num405 * num407;
|
|
this.velocity.Y = num406 * num407;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[2] == 2.0)
|
|
{
|
|
if ((double) this.position.Y <= (double) Main.player[this.target].position.Y && (double) this.velocity.Y >= 0.0)
|
|
return;
|
|
if ((double) this.ai[3] >= 4.0)
|
|
{
|
|
this.ai[2] = 3f;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[2] = 1f;
|
|
++this.ai[3];
|
|
}
|
|
}
|
|
else if ((double) this.ai[2] == 4.0)
|
|
{
|
|
Vector2 vector2_15 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num408 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2_15.X;
|
|
float num409 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2_15.Y;
|
|
float num410 = (float) Math.Sqrt((double) num408 * (double) num408 + (double) num409 * (double) num409);
|
|
this.rotation = (float) Math.Atan2((double) num409, (double) num408) + 1.57f;
|
|
this.velocity.Y = (float) (((double) this.velocity.Y * 5.0 + (double) Main.npc[(int) this.ai[1]].velocity.Y) / 6.0);
|
|
this.velocity.X += 0.5f;
|
|
if ((double) this.velocity.X > 12.0)
|
|
this.velocity.X = 12f;
|
|
if ((double) this.position.X + (double) (this.width / 2) >= (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 500.0 && (double) this.position.X + (double) (this.width / 2) <= (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) + 500.0)
|
|
return;
|
|
this.TargetClosest();
|
|
this.ai[2] = 5f;
|
|
vector2_15 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num411 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2_15.X;
|
|
float num412 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2_15.Y;
|
|
float num413 = 17f / (float) Math.Sqrt((double) num411 * (double) num411 + (double) num412 * (double) num412);
|
|
this.velocity.X = num411 * num413;
|
|
this.velocity.Y = num412 * num413;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] != 5.0 || (double) this.position.X + (double) (this.width / 2) >= (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) - 100.0)
|
|
return;
|
|
if ((double) this.ai[3] >= 4.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[2] = 4f;
|
|
++this.ai[3];
|
|
}
|
|
}
|
|
}
|
|
else if (this.aiStyle == 35)
|
|
{
|
|
this.spriteDirection = -(int) this.ai[0];
|
|
if (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != 32)
|
|
{
|
|
this.ai[2] += 10f;
|
|
if ((double) this.ai[2] > 50.0 || Main.netMode != 2)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
}
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] == 3.0 && this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] != 0.0)
|
|
{
|
|
this.localAI[0] += 2f;
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.07f;
|
|
if ((double) this.velocity.Y > 6.0)
|
|
this.velocity.Y = 6f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.07f;
|
|
if ((double) this.velocity.Y < -6.0)
|
|
this.velocity.Y = -6f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 120.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 120.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 1100.0)
|
|
{
|
|
this.localAI[0] = 0.0f;
|
|
this.ai[2] = 1f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y - 150.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y - 150.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) + 200.0)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.2f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) + 160.0)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.2f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num414 = (float) ((double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 200.0 * (double) this.ai[0]) - vector2.X;
|
|
float num415 = Main.npc[(int) this.ai[1]].position.Y + 230f - vector2.Y;
|
|
float num416 = (float) Math.Sqrt((double) num414 * (double) num414 + (double) num415 * (double) num415);
|
|
this.rotation = (float) Math.Atan2((double) num415, (double) num414) + 1.57f;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] <= 140.0)
|
|
return;
|
|
this.localAI[0] = 0.0f;
|
|
float num417 = 12f;
|
|
int Damage = 0;
|
|
int Type = 102;
|
|
float num418 = num417 / num416;
|
|
float num419 = -num414 * num418;
|
|
float num420 = -num415 * num418;
|
|
float SpeedX = num419 + (float) Main.rand.Next(-40, 41) * 0.01f;
|
|
float SpeedY = num420 + (float) Main.rand.Next(-40, 41) * 0.01f;
|
|
vector2.X += SpeedX * 4f;
|
|
vector2.Y += SpeedY * 4f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] != 1.0)
|
|
return;
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 300.0)
|
|
{
|
|
this.localAI[0] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num421 = Main.npc[(int) this.ai[1]].position.X + (float) (Main.npc[(int) this.ai[1]].width / 2) - vector2.X;
|
|
float num422 = Main.npc[(int) this.ai[1]].position.Y - vector2.Y;
|
|
float num423 = (float) ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2) - 80.0) - vector2.Y;
|
|
float num424 = 6f / (float) Math.Sqrt((double) num421 * (double) num421 + (double) num423 * (double) num423);
|
|
float num425 = num421 * num424;
|
|
float num426 = num423 * num424;
|
|
if ((double) this.velocity.X > (double) num425)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
this.velocity.X -= 0.04f;
|
|
}
|
|
if ((double) this.velocity.X < (double) num425)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
this.velocity.X += 0.04f;
|
|
}
|
|
if ((double) this.velocity.Y > (double) num426)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.Y -= 0.08f;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num426)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.Y += 0.08f;
|
|
}
|
|
this.TargetClosest();
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num427 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num428 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num429 = (float) Math.Sqrt((double) num427 * (double) num427 + (double) num428 * (double) num428);
|
|
this.rotation = (float) Math.Atan2((double) num428, (double) num427) - 1.57f;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] <= 40.0)
|
|
return;
|
|
this.localAI[0] = 0.0f;
|
|
float num430 = 10f;
|
|
int Damage = 0;
|
|
int Type = 102;
|
|
float num431 = num430 / num429;
|
|
float num432 = num427 * num431;
|
|
float num433 = num428 * num431;
|
|
float SpeedX = num432 + (float) Main.rand.Next(-40, 41) * 0.01f;
|
|
float SpeedY = num433 + (float) Main.rand.Next(-40, 41) * 0.01f;
|
|
vector2.X += SpeedX * 4f;
|
|
vector2.Y += SpeedY * 4f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
else if (this.aiStyle == 36)
|
|
{
|
|
this.spriteDirection = -(int) this.ai[0];
|
|
if (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != 32)
|
|
{
|
|
this.ai[2] += 10f;
|
|
if ((double) this.ai[2] > 50.0 || Main.netMode != 2)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
}
|
|
if ((double) this.ai[2] == 0.0 || (double) this.ai[2] == 3.0)
|
|
{
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] == 3.0 && this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
if ((double) Main.npc[(int) this.ai[1]].ai[1] != 0.0)
|
|
{
|
|
this.localAI[0] += 3f;
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.07f;
|
|
if ((double) this.velocity.Y > 6.0)
|
|
this.velocity.Y = 6f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.07f;
|
|
if ((double) this.velocity.Y < -6.0)
|
|
this.velocity.Y = -6f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 120.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 120.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 800.0)
|
|
{
|
|
++this.ai[2];
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.position.Y > (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y -= 0.1f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
else if ((double) this.position.Y < (double) Main.npc[(int) this.ai[1]].position.Y - 100.0)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.96f;
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Y < -3.0)
|
|
this.velocity.Y = -3f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) > (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 180.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X -= 0.14f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
}
|
|
if ((double) this.position.X + (double) (this.width / 2) < (double) Main.npc[(int) this.ai[1]].position.X + (double) (Main.npc[(int) this.ai[1]].width / 2) - 180.0 * (double) this.ai[0])
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.96f;
|
|
this.velocity.X += 0.14f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
}
|
|
}
|
|
this.TargetClosest();
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num434 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num435 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num436 = (float) Math.Sqrt((double) num434 * (double) num434 + (double) num435 * (double) num435);
|
|
this.rotation = (float) Math.Atan2((double) num435, (double) num434) - 1.57f;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] <= 200.0)
|
|
return;
|
|
this.localAI[0] = 0.0f;
|
|
float num437 = 8f;
|
|
int Damage = 25;
|
|
int Type = 100;
|
|
float num438 = num437 / num436;
|
|
float num439 = num434 * num438;
|
|
float num440 = num435 * num438;
|
|
float SpeedX = num439 + (float) Main.rand.Next(-40, 41) * 0.05f;
|
|
float SpeedY = num440 + (float) Main.rand.Next(-40, 41) * 0.05f;
|
|
vector2.X += SpeedX * 8f;
|
|
vector2.Y += SpeedY * 8f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] != 1.0)
|
|
return;
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 200.0)
|
|
{
|
|
this.localAI[0] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num441 = (float) ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) - 350.0) - vector2.X;
|
|
float num442 = (float) ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2) - 20.0) - vector2.Y;
|
|
float num443 = 7f / (float) Math.Sqrt((double) num441 * (double) num441 + (double) num442 * (double) num442);
|
|
float num444 = num441 * num443;
|
|
float num445 = num442 * num443;
|
|
if ((double) this.velocity.X > (double) num444)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
this.velocity.X -= 0.1f;
|
|
}
|
|
if ((double) this.velocity.X < (double) num444)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
this.velocity.X += 0.1f;
|
|
}
|
|
if ((double) this.velocity.Y > (double) num445)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.Y -= 0.03f;
|
|
}
|
|
if ((double) this.velocity.Y < (double) num445)
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.Y += 0.03f;
|
|
}
|
|
this.TargetClosest();
|
|
vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num446 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num447 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2) - vector2.Y;
|
|
float num448 = (float) Math.Sqrt((double) num446 * (double) num446 + (double) num447 * (double) num447);
|
|
this.rotation = (float) Math.Atan2((double) num447, (double) num446) - 1.57f;
|
|
if (Main.netMode != 1)
|
|
return;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] <= 80.0)
|
|
return;
|
|
this.localAI[0] = 0.0f;
|
|
float num449 = 10f;
|
|
int Damage = 25;
|
|
int Type = 100;
|
|
float num450 = num449 / num448;
|
|
float num451 = num446 * num450;
|
|
float num452 = num447 * num450;
|
|
float SpeedX = num451 + (float) Main.rand.Next(-40, 41) * 0.05f;
|
|
float SpeedY = num452 + (float) Main.rand.Next(-40, 41) * 0.05f;
|
|
vector2.X += SpeedX * 8f;
|
|
vector2.Y += SpeedY * 8f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
else if (this.aiStyle == 37)
|
|
{
|
|
if ((double) this.ai[3] > 0.0)
|
|
this.realLife = (int) this.ai[3];
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead)
|
|
this.TargetClosest();
|
|
if (this.type > 134)
|
|
{
|
|
bool flag = false;
|
|
if ((double) this.ai[1] <= 0.0)
|
|
flag = true;
|
|
else if (Main.npc[(int) this.ai[1]].life <= 0)
|
|
flag = true;
|
|
if (flag)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.checkDead();
|
|
}
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
if ((double) this.ai[0] == 0.0 && this.type == 134)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
int index64 = this.whoAmI;
|
|
int num = 80;
|
|
for (int index65 = 0; index65 <= num; ++index65)
|
|
{
|
|
int Type = 135;
|
|
if (index65 == num)
|
|
Type = 136;
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI);
|
|
Main.npc[number].ai[3] = (float) this.whoAmI;
|
|
Main.npc[number].realLife = this.whoAmI;
|
|
Main.npc[number].ai[1] = (float) index64;
|
|
Main.npc[index64].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index64 = number;
|
|
}
|
|
}
|
|
if (this.type == 135)
|
|
{
|
|
this.localAI[0] += (float) Main.rand.Next(4);
|
|
if ((double) this.localAI[0] >= (double) Main.rand.Next(1400, 26000))
|
|
{
|
|
this.localAI[0] = 0.0f;
|
|
this.TargetClosest();
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
float num453 = 8f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) (this.height / 2));
|
|
float num454 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X + (float) Main.rand.Next(-20, 21);
|
|
float num455 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y + (float) Main.rand.Next(-20, 21);
|
|
float num456 = (float) Math.Sqrt((double) num454 * (double) num454 + (double) num455 * (double) num455);
|
|
float num457 = num453 / num456;
|
|
float num458 = num454 * num457;
|
|
float num459 = num455 * num457;
|
|
float SpeedX = num458 + (float) Main.rand.Next(-20, 21) * 0.05f;
|
|
float SpeedY = num459 + (float) Main.rand.Next(-20, 21) * 0.05f;
|
|
int Damage = 22;
|
|
int Type = 100;
|
|
vector2.X += SpeedX * 5f;
|
|
vector2.Y += SpeedY * 5f;
|
|
int index = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int num460 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num461 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num462 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num463 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num460 < 0)
|
|
num460 = 0;
|
|
if (num461 > Main.maxTilesX)
|
|
num461 = Main.maxTilesX;
|
|
if (num462 < 0)
|
|
num462 = 0;
|
|
if (num463 > Main.maxTilesY)
|
|
num463 = Main.maxTilesY;
|
|
bool flag25 = false;
|
|
if (!flag25)
|
|
{
|
|
for (int index66 = num460; index66 < num461; ++index66)
|
|
{
|
|
for (int index67 = num462; index67 < num463; ++index67)
|
|
{
|
|
if (Main.tile[index66, index67] != null && (Main.tile[index66, index67].active && (Main.tileSolid[(int) Main.tile[index66, index67].type] || Main.tileSolidTop[(int) Main.tile[index66, index67].type] && Main.tile[index66, index67].frameY == (short) 0) || Main.tile[index66, index67].liquid > (byte) 64))
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (index66 * 16);
|
|
vector2.Y = (float) (index67 * 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)
|
|
{
|
|
flag25 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!flag25)
|
|
{
|
|
if (this.type != 135 || (double) this.ai[2] != 1.0)
|
|
Lighting.addLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 0.3f, 0.1f, 0.05f);
|
|
this.localAI[1] = 1f;
|
|
if (this.type == 134)
|
|
{
|
|
Rectangle rectangle3 = new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height);
|
|
int num464 = 1000;
|
|
bool flag26 = true;
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y)
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
{
|
|
Rectangle rectangle4 = new Rectangle((int) Main.player[index].position.X - num464, (int) Main.player[index].position.Y - num464, num464 * 2, num464 * 2);
|
|
if (rectangle3.Intersects(rectangle4))
|
|
{
|
|
flag26 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag26)
|
|
flag25 = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
this.localAI[1] = 0.0f;
|
|
float num465 = 16f;
|
|
if (Main.dayTime || Main.player[this.target].dead)
|
|
{
|
|
flag25 = false;
|
|
++this.velocity.Y;
|
|
if ((double) this.position.Y > Main.worldSurface * 16.0)
|
|
{
|
|
++this.velocity.Y;
|
|
num465 = 32f;
|
|
}
|
|
if ((double) this.position.Y > Main.rockLayer * 16.0)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].aiStyle == this.aiStyle)
|
|
Main.npc[index].active = false;
|
|
}
|
|
}
|
|
}
|
|
float num466 = 0.1f;
|
|
float num467 = 0.15f;
|
|
Vector2 vector2_16 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num468 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2);
|
|
float num469 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2);
|
|
float num470 = (float) ((int) ((double) num468 / 16.0) * 16);
|
|
float num471 = (float) ((int) ((double) num469 / 16.0) * 16);
|
|
vector2_16.X = (float) ((int) ((double) vector2_16.X / 16.0) * 16);
|
|
vector2_16.Y = (float) ((int) ((double) vector2_16.Y / 16.0) * 16);
|
|
float num472 = num470 - vector2_16.X;
|
|
float num473 = num471 - vector2_16.Y;
|
|
float num474 = (float) Math.Sqrt((double) num472 * (double) num472 + (double) num473 * (double) num473);
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
if ((double) this.ai[1] < (double) Main.npc.Length)
|
|
{
|
|
try
|
|
{
|
|
vector2_16 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
num472 = Main.npc[(int) this.ai[1]].position.X + (float) (Main.npc[(int) this.ai[1]].width / 2) - vector2_16.X;
|
|
num473 = Main.npc[(int) this.ai[1]].position.Y + (float) (Main.npc[(int) this.ai[1]].height / 2) - vector2_16.Y;
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) num473, (double) num472) + 1.57f;
|
|
float num475 = (float) Math.Sqrt((double) num472 * (double) num472 + (double) num473 * (double) num473);
|
|
int num476 = (int) (44.0 * (double) this.scale);
|
|
float num477 = (num475 - (float) num476) / num475;
|
|
float num478 = num472 * num477;
|
|
float num479 = num473 * num477;
|
|
this.velocity = new Vector2();
|
|
this.position.X += num478;
|
|
this.position.Y += num479;
|
|
return;
|
|
}
|
|
}
|
|
if (!flag25)
|
|
{
|
|
this.TargetClosest();
|
|
this.velocity.Y += 0.15f;
|
|
if ((double) this.velocity.Y > (double) num465)
|
|
this.velocity.Y = num465;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num465 * 0.4)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= num466 * 1.1f;
|
|
else
|
|
this.velocity.X += num466 * 1.1f;
|
|
}
|
|
else if ((double) this.velocity.Y == (double) num465)
|
|
{
|
|
if ((double) this.velocity.X < (double) num472)
|
|
this.velocity.X += num466;
|
|
else if ((double) this.velocity.X > (double) num472)
|
|
this.velocity.X -= num466;
|
|
}
|
|
else if ((double) this.velocity.Y > 4.0)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += num466 * 0.9f;
|
|
else
|
|
this.velocity.X -= num466 * 0.9f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.soundDelay == 0)
|
|
{
|
|
float num480 = num474 / 40f;
|
|
if ((double) num480 < 10.0)
|
|
num480 = 10f;
|
|
if ((double) num480 > 20.0)
|
|
num480 = 20f;
|
|
this.soundDelay = (int) num480;
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
float num481 = (float) Math.Sqrt((double) num472 * (double) num472 + (double) num473 * (double) num473);
|
|
float num482 = Math.Abs(num472);
|
|
float num483 = Math.Abs(num473);
|
|
float num484 = num465 / num481;
|
|
float num485 = num472 * num484;
|
|
float num486 = num473 * num484;
|
|
if (((double) this.velocity.X > 0.0 && (double) num485 > 0.0 || (double) this.velocity.X < 0.0 && (double) num485 < 0.0) && ((double) this.velocity.Y > 0.0 && (double) num486 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num486 < 0.0))
|
|
{
|
|
if ((double) this.velocity.X < (double) num485)
|
|
this.velocity.X += num467;
|
|
else if ((double) this.velocity.X > (double) num485)
|
|
this.velocity.X -= num467;
|
|
if ((double) this.velocity.Y < (double) num486)
|
|
this.velocity.Y += num467;
|
|
else if ((double) this.velocity.Y > (double) num486)
|
|
this.velocity.Y -= num467;
|
|
}
|
|
if ((double) this.velocity.X > 0.0 && (double) num485 > 0.0 || (double) this.velocity.X < 0.0 && (double) num485 < 0.0 || (double) this.velocity.Y > 0.0 && (double) num486 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num486 < 0.0)
|
|
{
|
|
if ((double) this.velocity.X < (double) num485)
|
|
this.velocity.X += num466;
|
|
else if ((double) this.velocity.X > (double) num485)
|
|
this.velocity.X -= num466;
|
|
if ((double) this.velocity.Y < (double) num486)
|
|
this.velocity.Y += num466;
|
|
else if ((double) this.velocity.Y > (double) num486)
|
|
this.velocity.Y -= num466;
|
|
if ((double) Math.Abs(num486) < (double) num465 * 0.2 && ((double) this.velocity.X > 0.0 && (double) num485 < 0.0 || (double) this.velocity.X < 0.0 && (double) num485 > 0.0))
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num466 * 2f;
|
|
else
|
|
this.velocity.Y -= num466 * 2f;
|
|
}
|
|
if ((double) Math.Abs(num485) < (double) num465 * 0.2 && ((double) this.velocity.Y > 0.0 && (double) num486 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num486 > 0.0))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num466 * 2f;
|
|
else
|
|
this.velocity.X -= num466 * 2f;
|
|
}
|
|
}
|
|
else if ((double) num482 > (double) num483)
|
|
{
|
|
if ((double) this.velocity.X < (double) num485)
|
|
this.velocity.X += num466 * 1.1f;
|
|
else if ((double) this.velocity.X > (double) num485)
|
|
this.velocity.X -= num466 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num465 * 0.5)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num466;
|
|
else
|
|
this.velocity.Y -= num466;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y < (double) num486)
|
|
this.velocity.Y += num466 * 1.1f;
|
|
else if ((double) this.velocity.Y > (double) num486)
|
|
this.velocity.Y -= num466 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num465 * 0.5)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num466;
|
|
else
|
|
this.velocity.X -= num466;
|
|
}
|
|
}
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
if (this.type != 134)
|
|
return;
|
|
if (flag25)
|
|
{
|
|
if ((double) this.localAI[0] != 1.0)
|
|
this.netUpdate = true;
|
|
this.localAI[0] = 1f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.localAI[0] != 0.0)
|
|
this.netUpdate = true;
|
|
this.localAI[0] = 0.0f;
|
|
}
|
|
if (((double) this.velocity.X <= 0.0 || (double) this.oldVelocity.X >= 0.0) && ((double) this.velocity.X >= 0.0 || (double) this.oldVelocity.X <= 0.0) && ((double) this.velocity.Y <= 0.0 || (double) this.oldVelocity.Y >= 0.0) && ((double) this.velocity.Y >= 0.0 || (double) this.oldVelocity.Y <= 0.0) || this.justHit)
|
|
return;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if (this.aiStyle != 38)
|
|
return;
|
|
float num487 = 4f;
|
|
float num488 = 1f;
|
|
if (this.type == 143)
|
|
{
|
|
num487 = 3f;
|
|
num488 = 0.7f;
|
|
}
|
|
if (this.type == 145)
|
|
{
|
|
num487 = 3.5f;
|
|
num488 = 0.8f;
|
|
}
|
|
if (this.type == 143)
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 120.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f - (float) (this.direction * 12), this.position.Y + (float) this.height * 0.5f);
|
|
float SpeedX = (float) (12 * this.spriteDirection);
|
|
float SpeedY = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
int Damage = 25;
|
|
int Type = 110;
|
|
int number = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[number].ai[0] = 2f;
|
|
Main.projectile[number].timeLeft = 300;
|
|
Main.projectile[number].friendly = false;
|
|
NetMessage.SendData(27, number: number);
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 144 && (double) this.ai[1] >= 3.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
++this.ai[2];
|
|
if ((double) this.velocity.X > -0.3 && (double) this.velocity.X < 0.3)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.ai[2] >= 200.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 145 && (double) this.ai[1] >= 3.0)
|
|
{
|
|
this.TargetClosest();
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
++this.ai[2];
|
|
if ((double) this.velocity.X > -0.3 && (double) this.velocity.X < 0.3)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.ai[2] >= 16.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
}
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0 && (double) this.ai[2] == 8.0)
|
|
{
|
|
float num489 = 10f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f - (float) (this.direction * 12), this.position.Y + (float) this.height * 0.25f);
|
|
float num490 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2) - vector2.X;
|
|
float num491 = Main.player[this.target].position.Y - vector2.Y;
|
|
float num492 = (float) Math.Sqrt((double) num490 * (double) num490 + (double) num491 * (double) num491);
|
|
float num493 = num489 / num492;
|
|
float SpeedX = num490 * num493;
|
|
float SpeedY = num491 * num493;
|
|
if (Main.netMode != 1)
|
|
{
|
|
int Damage = 35;
|
|
int Type = 109;
|
|
int number = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
Main.projectile[number].ai[0] = 2f;
|
|
Main.projectile[number].timeLeft = 300;
|
|
Main.projectile[number].friendly = false;
|
|
NetMessage.SendData(27, number: number);
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if ((double) this.localAI[2] == (double) this.position.X)
|
|
{
|
|
this.direction *= -1;
|
|
this.ai[3] = 60f;
|
|
}
|
|
this.localAI[2] = this.position.X;
|
|
if ((double) this.ai[3] == 0.0)
|
|
this.TargetClosest();
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] > 2.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
++this.ai[1];
|
|
this.velocity.Y = -8.2f;
|
|
this.velocity.X += (float) ((double) this.direction * (double) num488 * 1.10000002384186);
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.velocity.X += (float) ((double) this.direction * (double) num488 * 0.899999976158142);
|
|
}
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
this.velocity.X += (float) ((double) this.direction * (double) num488 * 0.00999999977648258);
|
|
}
|
|
if ((double) this.ai[3] > 0.0)
|
|
--this.ai[3];
|
|
if ((double) this.velocity.X > (double) num487 && this.direction > 0)
|
|
this.velocity.X = 4f;
|
|
if ((double) this.velocity.X >= -(double) num487 || this.direction >= 0)
|
|
return;
|
|
this.velocity.X = -4f;
|
|
}
|
|
}
|
|
|
|
public void FindFrame()
|
|
{
|
|
int num1 = 1;
|
|
if (!Main.dedServ)
|
|
num1 = Main.npcTexture[this.type].Height / Main.npcFrameCount[this.type];
|
|
int num2 = 0;
|
|
if (this.aiAction == 0)
|
|
num2 = (double) this.velocity.Y >= 0.0 ? ((double) this.velocity.Y <= 0.0 ? ((double) this.velocity.X == 0.0 ? 0 : 1) : 3) : 2;
|
|
else if (this.aiAction == 1)
|
|
num2 = 4;
|
|
if (this.type == 1 || this.type == 16 || this.type == 59 || this.type == 71 || this.type == 81 || this.type == 138)
|
|
{
|
|
++this.frameCounter;
|
|
if (num2 > 0)
|
|
++this.frameCounter;
|
|
if (num2 == 4)
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
if (this.type == 141)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 143)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
++this.frameCounter;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
--this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 18.0)
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
if (this.frameCounter > 17.0)
|
|
this.frameCounter = 17.0;
|
|
}
|
|
if (this.type == 144)
|
|
{
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] < 6.0)
|
|
this.frame.Y = 0;
|
|
else if ((double) this.localAI[3] < 12.0)
|
|
this.frame.Y = num1;
|
|
if ((double) this.localAI[3] >= 11.0)
|
|
this.localAI[3] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
++this.frameCounter;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
--this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1 * 3;
|
|
else if (this.frameCounter < 18.0)
|
|
this.frame.Y = num1 * 4;
|
|
if (this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
if (this.frameCounter > 17.0)
|
|
this.frameCounter = 17.0;
|
|
}
|
|
}
|
|
if (this.type == 145)
|
|
{
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
if ((double) this.ai[2] < 4.0)
|
|
this.frame.Y = 0;
|
|
else if ((double) this.ai[2] < 8.0)
|
|
this.frame.Y = num1;
|
|
else if ((double) this.ai[2] < 12.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if ((double) this.ai[2] < 16.0)
|
|
this.frame.Y = num1 * 3;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
++this.frameCounter;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
--this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = num1 * 4;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1 * 5;
|
|
else if (this.frameCounter < 18.0)
|
|
this.frame.Y = num1 * 6;
|
|
if (this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
if (this.frameCounter > 17.0)
|
|
this.frameCounter = 17.0;
|
|
}
|
|
}
|
|
if (this.type == 50)
|
|
{
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (num2 > 0)
|
|
++this.frameCounter;
|
|
if (num2 == 4)
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 4)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 135)
|
|
this.frame.Y = (double) this.ai[2] != 0.0 ? num1 : 0;
|
|
if (this.type == 85)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
int num3 = 3;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
--this.frameCounter;
|
|
else
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
if (this.frameCounter > (double) (num3 * 4))
|
|
this.frameCounter = (double) (num3 * 4);
|
|
if (this.frameCounter < (double) num3)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < (double) (num3 * 2))
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < (double) (num3 * 3))
|
|
this.frame.Y = num1 * 3;
|
|
else if (this.frameCounter < (double) (num3 * 4))
|
|
this.frame.Y = num1 * 4;
|
|
else if (this.frameCounter < (double) (num3 * 5))
|
|
this.frame.Y = num1 * 5;
|
|
else if (this.frameCounter < (double) (num3 * 6))
|
|
this.frame.Y = num1 * 4;
|
|
else if (this.frameCounter < (double) (num3 * 7))
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
if (this.frameCounter >= (double) (num3 * 8))
|
|
this.frameCounter = (double) num3;
|
|
}
|
|
}
|
|
if ((double) this.ai[3] == 2.0)
|
|
this.frame.Y += num1 * 6;
|
|
else if ((double) this.ai[3] == 3.0)
|
|
this.frame.Y += num1 * 12;
|
|
}
|
|
if (this.type == 113 || this.type == 114)
|
|
{
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 12.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = -60.0;
|
|
}
|
|
}
|
|
if (this.type == 61)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 4.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
if (this.frameCounter >= 7.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 122)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = this.velocity.X * 0.05f;
|
|
if ((double) this.ai[3] > 0.0)
|
|
{
|
|
int num4 = (int) ((double) this.ai[3] / 8.0);
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (num4 + 3) * num1;
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 3)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 74)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 62 || this.type == 66)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter >= 11.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
if (this.type == 63 || this.type == 64 || this.type == 103)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frameCounter >= 23.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
if (this.type == 2 || this.type == 23 || this.type == 121)
|
|
{
|
|
if (this.type == 2)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
}
|
|
if ((double) this.velocity.X < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 3.14f;
|
|
}
|
|
}
|
|
else if (this.type == 2 || this.type == 121)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.spriteDirection = 1;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.spriteDirection = -1;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
if (this.type == 133)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
}
|
|
if ((double) this.velocity.X < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 3.14f;
|
|
}
|
|
++this.frameCounter;
|
|
this.frame.Y = this.frameCounter < 8.0 ? 0 : num1;
|
|
if (this.frameCounter >= 16.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if ((double) this.life < (double) this.lifeMax * 0.5)
|
|
this.frame.Y += num1 * 2;
|
|
}
|
|
if (this.type == 116)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
}
|
|
if ((double) this.velocity.X < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 3.14f;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 5.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
if (this.type == 75)
|
|
{
|
|
this.spriteDirection = (double) this.velocity.X <= 0.0 ? -1 : 1;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
if (this.type == 55 || this.type == 57 || this.type == 58 || this.type == 102)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.wet)
|
|
{
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 18.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 24.0)
|
|
this.frame.Y = num1 * 3;
|
|
else
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else if (this.frameCounter < 6.0)
|
|
this.frame.Y = num1 * 4;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1 * 5;
|
|
else
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.type == 69)
|
|
{
|
|
if ((double) this.ai[0] < 190.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1);
|
|
}
|
|
}
|
|
if (this.type == 86)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 || this.wet)
|
|
this.spriteDirection = (double) this.velocity.X >= -2.0 ? ((double) this.velocity.X <= 2.0 ? this.direction : 1) : -1;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = num1 * 15;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
else if ((double) Math.Abs(this.velocity.X) < 3.0)
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= 9)
|
|
this.frame.Y = num1;
|
|
if (this.frame.Y / num1 <= 0)
|
|
this.frame.Y = num1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 10.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= 15)
|
|
this.frame.Y = num1 * 9;
|
|
if (this.frame.Y / num1 <= 8)
|
|
this.frame.Y = num1 * 9;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == (int) sbyte.MaxValue)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 12.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= 2)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
}
|
|
if (this.type == 129)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 2.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 130)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 67)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 109)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && ((double) this.velocity.X <= 0.0 && this.direction < 0 || (double) this.velocity.X >= 0.0 && this.direction > 0))
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 7.0)
|
|
{
|
|
this.frameCounter -= 7.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 83 || this.type == 84)
|
|
{
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 72)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 3.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 65)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.wet)
|
|
{
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 18.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 24.0)
|
|
this.frame.Y = num1 * 3;
|
|
else
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
if (this.type == 48 || this.type == 49 || this.type == 51 || this.type == 60 || this.type == 82 || this.type == 93 || this.type == 137)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.spriteDirection = 1;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.spriteDirection = -1;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 4)
|
|
this.frame.Y = 0;
|
|
}
|
|
if (this.type == 42)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 2.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 4.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 6.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 8.0)
|
|
this.frame.Y = num1;
|
|
else
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.type == 43 || this.type == 56)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 18.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 24.0)
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter == 23.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.type == 115)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 3.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 6.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 15.0)
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter == 15.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.type == 101)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 2)
|
|
this.frame.Y = 0;
|
|
}
|
|
if (this.type == 17 || this.type == 18 || this.type == 19 || this.type == 20 || this.type == 22 || this.type == 142 || this.type == 38 || this.type == 26 || this.type == 27 || this.type == 28 || this.type == 31 || this.type == 21 || this.type == 44 || this.type == 54 || this.type == 37 || this.type == 73 || this.type == 77 || this.type == 78 || this.type == 79 || this.type == 80 || this.type == 104 || this.type == 107 || this.type == 108 || this.type == 120 || this.type == 124 || this.type == 140)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
if (this.type == 140)
|
|
{
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
if (this.type == 21 || this.type == 31 || this.type == 44 || this.type == 77 || this.type == 78 || this.type == 79 || this.type == 80 || this.type == 120 || this.type == 140)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
else if (this.type == 110)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.frame.Y = num1 * (int) this.ai[2];
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
if (this.frame.Y < num1 * 6)
|
|
this.frame.Y = num1 * 6;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
this.frameCounter += (double) this.velocity.X;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = num1 * 6;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
if (this.type == 111)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.frame.Y = num1 * ((int) this.ai[2] - 1);
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
if (this.frame.Y < num1 * 7)
|
|
this.frame.Y = num1 * 7;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
this.frameCounter += (double) this.velocity.X * 1.29999995231628;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = num1 * 7;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 6;
|
|
}
|
|
}
|
|
else if (this.type == 3 || this.type == 52 || this.type == 53 || this.type == 132)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
}
|
|
if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
else if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter < 8.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 16.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 24.0)
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < 32.0)
|
|
this.frame.Y = num1;
|
|
else
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
else if (this.type == 46 || this.type == 47)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 4;
|
|
}
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 6;
|
|
}
|
|
}
|
|
else if (this.type == 4 || this.type == 125 || this.type == 126)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 7.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 14.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 21.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
if ((double) this.ai[0] > 1.0)
|
|
this.frame.Y += num1 * 3;
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
else if (this.type == 94)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 12.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter >= 23.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
else if (this.type == 6)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
this.frame.Y = 0;
|
|
}
|
|
else if (this.type == 24)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
}
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
if (this.frame.Y < 4)
|
|
this.frameCounter = 0.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter <= 4.0)
|
|
this.frame.Y = num1 * 4;
|
|
else if (this.frameCounter <= 8.0)
|
|
this.frame.Y = num1 * 5;
|
|
else if (this.frameCounter <= 12.0)
|
|
this.frame.Y = num1 * 6;
|
|
else if (this.frameCounter <= 16.0)
|
|
this.frame.Y = num1 * 7;
|
|
else if (this.frameCounter <= 20.0)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 9;
|
|
this.frameCounter = 100.0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter <= 4.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter <= 8.0)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter <= 12.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frameCounter >= 16.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 29 || this.type == 32 || this.type == 45)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
}
|
|
this.frame.Y = 0;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
this.frame.Y += num1;
|
|
else if ((double) this.ai[1] > 0.0)
|
|
this.frame.Y += num1 * 2;
|
|
}
|
|
if (this.type != 34)
|
|
return;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y < num1 * Main.npcFrameCount[this.type])
|
|
return;
|
|
this.frame.Y = 0;
|
|
}
|
|
|
|
public void TargetClosest(bool faceTarget = true)
|
|
{
|
|
float num = -1f;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && !Main.player[index].dead && ((double) num == -1.0 || (double) Math.Abs(Main.player[index].position.X + (float) (Main.player[index].width / 2) - this.position.X + (float) (this.width / 2)) + (double) Math.Abs(Main.player[index].position.Y + (float) (Main.player[index].height / 2) - this.position.Y + (float) (this.height / 2)) < (double) num))
|
|
{
|
|
num = Math.Abs(Main.player[index].position.X + (float) (Main.player[index].width / 2) - this.position.X + (float) (this.width / 2)) + Math.Abs(Main.player[index].position.Y + (float) (Main.player[index].height / 2) - this.position.Y + (float) (this.height / 2));
|
|
this.target = index;
|
|
}
|
|
}
|
|
if (this.target < 0 || this.target >= (int) byte.MaxValue)
|
|
this.target = 0;
|
|
this.targetRect = new Rectangle((int) Main.player[this.target].position.X, (int) Main.player[this.target].position.Y, Main.player[this.target].width, Main.player[this.target].height);
|
|
if (Main.player[this.target].dead)
|
|
faceTarget = false;
|
|
if (faceTarget)
|
|
{
|
|
this.direction = 1;
|
|
if ((double) (this.targetRect.X + this.targetRect.Width / 2) < (double) this.position.X + (double) (this.width / 2))
|
|
this.direction = -1;
|
|
this.directionY = 1;
|
|
if ((double) (this.targetRect.Y + this.targetRect.Height / 2) < (double) this.position.Y + (double) (this.height / 2))
|
|
this.directionY = -1;
|
|
}
|
|
if (this.confused)
|
|
this.direction *= -1;
|
|
if (this.direction == this.oldDirection && this.directionY == this.oldDirectionY && this.target == this.oldTarget || this.collideX || this.collideY)
|
|
return;
|
|
this.netUpdate = true;
|
|
}
|
|
|
|
public void CheckActive()
|
|
{
|
|
if (!this.active || this.type == 8 || this.type == 9 || this.type == 11 || this.type == 12 || this.type == 14 || this.type == 15 || this.type == 40 || this.type == 41 || this.type == 96 || this.type == 97 || this.type == 99 || this.type == 100 || this.type > 87 && this.type <= 92 || this.type == 118 || this.type == 119 || this.type == 113 || this.type == 114 || this.type == 115 || this.type >= 134 && this.type <= 136)
|
|
return;
|
|
if (this.townNPC)
|
|
{
|
|
Rectangle rectangle = new Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) NPC.townRangeX), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) NPC.townRangeY), NPC.townRangeX * 2, NPC.townRangeY * 2);
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && rectangle.Intersects(new Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height)))
|
|
Main.player[index].townNPCs += this.npcSlots;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bool flag = false;
|
|
Rectangle rectangle1 = new Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) NPC.activeRangeX), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) NPC.activeRangeY), NPC.activeRangeX * 2, NPC.activeRangeY * 2);
|
|
Rectangle rectangle2 = new Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) NPC.sWidth * 0.5 - (double) this.width), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) NPC.sHeight * 0.5 - (double) this.height), NPC.sWidth + this.width * 2, NPC.sHeight + this.height * 2);
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
{
|
|
if (rectangle1.Intersects(new Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height)))
|
|
{
|
|
flag = true;
|
|
if (this.type != 25 && this.type != 30 && this.type != 33 && this.lifeMax > 0)
|
|
Main.player[index].activeNPCs += this.npcSlots;
|
|
}
|
|
if (rectangle2.Intersects(new Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height)))
|
|
this.timeLeft = NPC.activeTime;
|
|
if (this.type == 7 || this.type == 10 || this.type == 13 || this.type == 39 || this.type == 87)
|
|
flag = true;
|
|
if (this.boss || this.type == 35 || this.type == 36 || this.type == (int) sbyte.MaxValue || this.type == 128 || this.type == 129 || this.type == 130 || this.type == 131)
|
|
flag = true;
|
|
}
|
|
}
|
|
--this.timeLeft;
|
|
if (this.timeLeft <= 0)
|
|
flag = false;
|
|
if (flag || Main.netMode == 1)
|
|
return;
|
|
NPC.noSpawnCycle = true;
|
|
this.active = false;
|
|
if (Main.netMode == 2)
|
|
{
|
|
this.netSkip = -1;
|
|
this.life = 0;
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
}
|
|
if (this.aiStyle != 6)
|
|
return;
|
|
for (int number = (int) this.ai[0]; number > 0; number = (int) Main.npc[number].ai[0])
|
|
{
|
|
if (Main.npc[number].active)
|
|
{
|
|
Main.npc[number].active = false;
|
|
if (Main.netMode == 2)
|
|
{
|
|
Main.npc[number].life = 0;
|
|
Main.npc[number].netSkip = -1;
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void SpawnNPC()
|
|
{
|
|
if (NPC.noSpawnCycle)
|
|
{
|
|
NPC.noSpawnCycle = false;
|
|
}
|
|
else
|
|
{
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
int x = 0;
|
|
int y = 0;
|
|
int num1 = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
++num1;
|
|
}
|
|
for (int index1 = 0; index1 < (int) byte.MaxValue; ++index1)
|
|
{
|
|
if (Main.player[index1].active && !Main.player[index1].dead)
|
|
{
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
if (Main.player[index1].active && Main.invasionType > 0 && Main.invasionDelay == 0 && Main.invasionSize > 0 && (double) Main.player[index1].position.Y < Main.worldSurface * 16.0 + (double) NPC.sHeight)
|
|
{
|
|
int num2 = 3000;
|
|
if ((double) Main.player[index1].position.X > Main.invasionX * 16.0 - (double) num2 && (double) Main.player[index1].position.X < Main.invasionX * 16.0 + (double) num2)
|
|
flag4 = true;
|
|
}
|
|
bool flag6 = false;
|
|
NPC.spawnRate = NPC.defaultSpawnRate;
|
|
NPC.maxSpawns = NPC.defaultMaxSpawns;
|
|
if (Main.hardMode)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.defaultSpawnRate * 0.9);
|
|
NPC.maxSpawns = NPC.defaultMaxSpawns + 1;
|
|
}
|
|
if ((double) Main.player[index1].position.Y > (double) ((Main.maxTilesY - 200) * 16))
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 2.0);
|
|
else if ((double) Main.player[index1].position.Y > Main.rockLayer * 16.0 + (double) NPC.sHeight)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.89999997615814);
|
|
}
|
|
else if ((double) Main.player[index1].position.Y > Main.worldSurface * 16.0 + (double) NPC.sHeight)
|
|
{
|
|
if (Main.hardMode)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.45);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.79999995231628);
|
|
}
|
|
else
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.5);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.70000004768372);
|
|
}
|
|
}
|
|
else if (!Main.dayTime)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.6);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.29999995231628);
|
|
if (Main.bloodMoon)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.3);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.79999995231628);
|
|
}
|
|
}
|
|
if (Main.player[index1].zoneDungeon)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.70000004768372);
|
|
}
|
|
else if (Main.player[index1].zoneJungle)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.5);
|
|
}
|
|
else if (Main.player[index1].zoneEvil)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.65);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.29999995231628);
|
|
}
|
|
else if (Main.player[index1].zoneMeteor)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.10000002384186);
|
|
}
|
|
if (Main.player[index1].zoneHoly && (double) Main.player[index1].position.Y > Main.rockLayer * 16.0 + (double) NPC.sHeight)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.65);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.29999995231628);
|
|
}
|
|
if (Main.wof >= 0 && (double) Main.player[index1].position.Y > (double) ((Main.maxTilesY - 200) * 16))
|
|
{
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.300000011920929);
|
|
NPC.spawnRate *= 3;
|
|
}
|
|
if ((double) Main.player[index1].activeNPCs < (double) NPC.maxSpawns * 0.2)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.600000023841858);
|
|
else if ((double) Main.player[index1].activeNPCs < (double) NPC.maxSpawns * 0.4)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.699999988079071);
|
|
else if ((double) Main.player[index1].activeNPCs < (double) NPC.maxSpawns * 0.6)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.800000011920929);
|
|
else if ((double) Main.player[index1].activeNPCs < (double) NPC.maxSpawns * 0.8)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.899999976158142);
|
|
if ((double) Main.player[index1].position.Y * 16.0 > (Main.worldSurface + Main.rockLayer) / 2.0 || Main.player[index1].zoneEvil)
|
|
{
|
|
if ((double) Main.player[index1].activeNPCs < (double) NPC.maxSpawns * 0.2)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.699999988079071);
|
|
else if ((double) Main.player[index1].activeNPCs < (double) NPC.maxSpawns * 0.4)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.899999976158142);
|
|
}
|
|
if (Main.player[index1].inventory[Main.player[index1].selectedItem].type == 148)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.75);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.5);
|
|
}
|
|
if (Main.player[index1].enemySpawns)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.5);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 2.0);
|
|
}
|
|
if ((double) NPC.spawnRate < (double) NPC.defaultSpawnRate * 0.1)
|
|
NPC.spawnRate = (int) ((double) NPC.defaultSpawnRate * 0.1);
|
|
if (NPC.maxSpawns > NPC.defaultMaxSpawns * 3)
|
|
NPC.maxSpawns = NPC.defaultMaxSpawns * 3;
|
|
if (flag4)
|
|
{
|
|
NPC.maxSpawns = (int) ((double) NPC.defaultMaxSpawns * (2.0 + 0.3 * (double) num1));
|
|
NPC.spawnRate = 20;
|
|
}
|
|
if (Main.player[index1].zoneDungeon && !NPC.downedBoss3)
|
|
NPC.spawnRate = 10;
|
|
bool flag7 = false;
|
|
if (!flag4 && (!Main.bloodMoon || Main.dayTime) && !Main.player[index1].zoneDungeon && !Main.player[index1].zoneEvil && !Main.player[index1].zoneMeteor)
|
|
{
|
|
if ((double) Main.player[index1].townNPCs == 1.0)
|
|
{
|
|
flag3 = true;
|
|
if (Main.rand.Next(3) <= 1)
|
|
{
|
|
flag7 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
else
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 2.0);
|
|
}
|
|
else if ((double) Main.player[index1].townNPCs == 2.0)
|
|
{
|
|
flag3 = true;
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
flag7 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
else
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 3.0);
|
|
}
|
|
else if ((double) Main.player[index1].townNPCs >= 3.0)
|
|
{
|
|
flag3 = true;
|
|
flag7 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
}
|
|
if (Main.player[index1].active && !Main.player[index1].dead && (double) Main.player[index1].activeNPCs < (double) NPC.maxSpawns && Main.rand.Next(NPC.spawnRate) == 0)
|
|
{
|
|
int minValue1 = (int) ((double) Main.player[index1].position.X / 16.0) - NPC.spawnRangeX;
|
|
int maxValue1 = (int) ((double) Main.player[index1].position.X / 16.0) + NPC.spawnRangeX;
|
|
int minValue2 = (int) ((double) Main.player[index1].position.Y / 16.0) - NPC.spawnRangeY;
|
|
int maxValue2 = (int) ((double) Main.player[index1].position.Y / 16.0) + NPC.spawnRangeY;
|
|
int num3 = (int) ((double) Main.player[index1].position.X / 16.0) - NPC.safeRangeX;
|
|
int num4 = (int) ((double) Main.player[index1].position.X / 16.0) + NPC.safeRangeX;
|
|
int num5 = (int) ((double) Main.player[index1].position.Y / 16.0) - NPC.safeRangeY;
|
|
int num6 = (int) ((double) Main.player[index1].position.Y / 16.0) + NPC.safeRangeY;
|
|
if (minValue1 < 0)
|
|
minValue1 = 0;
|
|
if (maxValue1 > Main.maxTilesX)
|
|
maxValue1 = Main.maxTilesX;
|
|
if (minValue2 < 0)
|
|
minValue2 = 0;
|
|
if (maxValue2 > Main.maxTilesY)
|
|
maxValue2 = Main.maxTilesY;
|
|
for (int index2 = 0; index2 < 50; ++index2)
|
|
{
|
|
int index3 = Main.rand.Next(minValue1, maxValue1);
|
|
int index4 = Main.rand.Next(minValue2, maxValue2);
|
|
if (!Main.tile[index3, index4].active || !Main.tileSolid[(int) Main.tile[index3, index4].type])
|
|
{
|
|
if (!Main.wallHouse[(int) Main.tile[index3, index4].wall])
|
|
{
|
|
if (!flag4 && (double) index4 < Main.worldSurface * 0.349999994039536 && !flag7 && ((double) index3 < (double) Main.maxTilesX * 0.45 || (double) index3 > (double) Main.maxTilesX * 0.55 || Main.hardMode))
|
|
{
|
|
int type = (int) Main.tile[index3, index4].type;
|
|
x = index3;
|
|
y = index4;
|
|
flag6 = true;
|
|
flag2 = true;
|
|
}
|
|
else if (!flag4 && (double) index4 < Main.worldSurface * 0.449999988079071 && !flag7 && Main.hardMode && Main.rand.Next(10) == 0)
|
|
{
|
|
int type = (int) Main.tile[index3, index4].type;
|
|
x = index3;
|
|
y = index4;
|
|
flag6 = true;
|
|
flag2 = true;
|
|
}
|
|
else
|
|
{
|
|
for (int index5 = index4; index5 < Main.maxTilesY; ++index5)
|
|
{
|
|
if (Main.tile[index3, index5].active && Main.tileSolid[(int) Main.tile[index3, index5].type])
|
|
{
|
|
if (index3 < num3 || index3 > num4 || index5 < num5 || index5 > num6)
|
|
{
|
|
int type = (int) Main.tile[index3, index5].type;
|
|
x = index3;
|
|
y = index5;
|
|
flag6 = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag6)
|
|
{
|
|
int num7 = x - NPC.spawnSpaceX / 2;
|
|
int num8 = x + NPC.spawnSpaceX / 2;
|
|
int num9 = y - NPC.spawnSpaceY;
|
|
int num10 = y;
|
|
if (num7 < 0)
|
|
flag6 = false;
|
|
if (num8 > Main.maxTilesX)
|
|
flag6 = false;
|
|
if (num9 < 0)
|
|
flag6 = false;
|
|
if (num10 > Main.maxTilesY)
|
|
flag6 = false;
|
|
if (flag6)
|
|
{
|
|
for (int index6 = num7; index6 < num8; ++index6)
|
|
{
|
|
for (int index7 = num9; index7 < num10; ++index7)
|
|
{
|
|
if (Main.tile[index6, index7].active && Main.tileSolid[(int) Main.tile[index6, index7].type])
|
|
{
|
|
flag6 = false;
|
|
break;
|
|
}
|
|
if (Main.tile[index6, index7].lava)
|
|
{
|
|
flag6 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
if (flag6 || flag6)
|
|
break;
|
|
}
|
|
}
|
|
if (flag6)
|
|
{
|
|
Rectangle rectangle1 = new Rectangle(x * 16, y * 16, 16, 16);
|
|
for (int index8 = 0; index8 < (int) byte.MaxValue; ++index8)
|
|
{
|
|
if (Main.player[index8].active)
|
|
{
|
|
Rectangle rectangle2 = new Rectangle((int) ((double) Main.player[index8].position.X + (double) (Main.player[index8].width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) Main.player[index8].position.Y + (double) (Main.player[index8].height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
flag6 = false;
|
|
}
|
|
}
|
|
}
|
|
if (flag6)
|
|
{
|
|
if (Main.player[index1].zoneDungeon && (!Main.tileDungeon[(int) Main.tile[x, y].type] || Main.tile[x, y - 1].wall == (byte) 0))
|
|
flag6 = false;
|
|
if (Main.tile[x, y - 1].liquid > (byte) 0 && Main.tile[x, y - 2].liquid > (byte) 0 && !Main.tile[x, y - 1].lava)
|
|
flag5 = true;
|
|
}
|
|
if (flag6)
|
|
{
|
|
flag1 = false;
|
|
int type = (int) Main.tile[x, y].type;
|
|
int number = 200;
|
|
if (flag2)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(10) == 0 && !NPC.AnyNPCs(87))
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 87, 1);
|
|
else
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 48);
|
|
}
|
|
else if (flag4)
|
|
{
|
|
switch (Main.invasionType)
|
|
{
|
|
case 1:
|
|
if (Main.rand.Next(9) == 0)
|
|
{
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 29);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 26);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 111);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 27);
|
|
break;
|
|
}
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 28);
|
|
break;
|
|
case 2:
|
|
if (Main.rand.Next(7) == 0)
|
|
{
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 145);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 143);
|
|
break;
|
|
}
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 144);
|
|
break;
|
|
}
|
|
}
|
|
else if (flag5 && (x < 250 || x > Main.maxTilesX - 250) && type == 53 && (double) y < Main.rockLayer)
|
|
{
|
|
if (Main.rand.Next(8) == 0)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 65);
|
|
if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 67);
|
|
else
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 64);
|
|
}
|
|
else if (flag5 && ((double) y > Main.rockLayer && Main.rand.Next(2) == 0 || type == 60))
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(3) > 0)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 102);
|
|
else
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 58);
|
|
}
|
|
else if (flag5 && (double) y > Main.worldSurface && Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.hardMode)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 103);
|
|
else
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 63);
|
|
}
|
|
else if (flag5 && Main.rand.Next(4) == 0)
|
|
{
|
|
if (Main.player[index1].zoneEvil)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 57);
|
|
else
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 55);
|
|
}
|
|
else if (NPC.downedGoblins && Main.rand.Next(20) == 0 && !flag5 && (double) y >= Main.rockLayer && y < Main.maxTilesY - 210 && !NPC.savedGoblin && !NPC.AnyNPCs(105))
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 105);
|
|
else if (Main.hardMode && Main.rand.Next(20) == 0 && !flag5 && (double) y >= Main.rockLayer && y < Main.maxTilesY - 210 && !NPC.savedWizard && !NPC.AnyNPCs(106))
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 106);
|
|
else if (flag7)
|
|
{
|
|
if (flag5)
|
|
{
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 55);
|
|
}
|
|
else
|
|
{
|
|
if (type != 2 && type != 109 && type != 147 && (double) y <= Main.worldSurface)
|
|
break;
|
|
if (Main.rand.Next(2) == 0 && (double) y <= Main.worldSurface)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 74);
|
|
else
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 46);
|
|
}
|
|
}
|
|
else if (Main.player[index1].zoneDungeon)
|
|
{
|
|
if (!NPC.downedBoss3)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 68);
|
|
else if (!NPC.savedMech && Main.rand.Next(5) == 0 && !flag5 && !NPC.AnyNPCs(123) && (double) y > Main.rockLayer)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 123);
|
|
else if (Main.rand.Next(37) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 71);
|
|
else if (Main.rand.Next(4) == 0 && !NPC.NearSpikeBall(x, y))
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 70);
|
|
else if (Main.rand.Next(15) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 72);
|
|
else if (Main.rand.Next(9) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 34);
|
|
else if (Main.rand.Next(7) == 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 32);
|
|
}
|
|
else
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 31);
|
|
if (Main.rand.Next(4) == 0)
|
|
Main.npc[number].SetDefaults("Big Boned");
|
|
else if (Main.rand.Next(5) == 0)
|
|
Main.npc[number].SetDefaults("Short Bones");
|
|
}
|
|
}
|
|
else if (Main.player[index1].zoneMeteor)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 23);
|
|
else if (Main.player[index1].zoneEvil && Main.rand.Next(65) == 0)
|
|
number = !Main.hardMode || Main.rand.Next(4) == 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 7, 1) : NPC.NewNPC(x * 16 + 8, y * 16, 98, 1);
|
|
else if (Main.hardMode && (double) y > Main.worldSurface && Main.rand.Next(75) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 85);
|
|
else if (Main.hardMode && Main.tile[x, y - 1].wall == (byte) 2 && Main.rand.Next(20) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 85);
|
|
else if (Main.hardMode && (double) y <= Main.worldSurface && !Main.dayTime && (Main.rand.Next(20) == 0 || Main.rand.Next(5) == 0 && Main.moonPhase == 4))
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 82);
|
|
else if (type == 60 && Main.rand.Next(500) == 0 && !Main.dayTime)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 52);
|
|
else if (type == 60 && (double) y > (Main.worldSurface + Main.rockLayer) / 2.0)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 43);
|
|
Main.npc[number].ai[0] = (float) x;
|
|
Main.npc[number].ai[1] = (float) y;
|
|
Main.npc[number].netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 42);
|
|
if (Main.rand.Next(4) == 0)
|
|
Main.npc[number].SetDefaults("Little Stinger");
|
|
else if (Main.rand.Next(4) == 0)
|
|
Main.npc[number].SetDefaults("Big Stinger");
|
|
}
|
|
}
|
|
else if (type == 60 && Main.rand.Next(4) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 51);
|
|
else if (type == 60 && Main.rand.Next(8) == 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 56);
|
|
Main.npc[number].ai[0] = (float) x;
|
|
Main.npc[number].ai[1] = (float) y;
|
|
Main.npc[number].netUpdate = true;
|
|
}
|
|
else if (Main.hardMode && type == 53 && Main.rand.Next(3) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 78);
|
|
else if (Main.hardMode && type == 112 && Main.rand.Next(2) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 79);
|
|
else if (Main.hardMode && type == 116 && Main.rand.Next(2) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 80);
|
|
else if (Main.hardMode && !flag5 && (double) y < Main.rockLayer && (type == 116 || type == 117 || type == 109))
|
|
number = Main.dayTime || Main.rand.Next(2) != 0 ? (Main.rand.Next(10) != 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 75) : NPC.NewNPC(x * 16 + 8, y * 16, 86)) : NPC.NewNPC(x * 16 + 8, y * 16, 122);
|
|
else if (!flag3 && Main.hardMode && Main.rand.Next(50) == 0 && !flag5 && (double) y >= Main.rockLayer && (type == 116 || type == 117 || type == 109))
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 84);
|
|
else if (type == 22 && Main.player[index1].zoneEvil || type == 23 || type == 25 || type == 112)
|
|
{
|
|
if (Main.hardMode && (double) y >= Main.rockLayer && Main.rand.Next(3) == 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 101);
|
|
Main.npc[number].ai[0] = (float) x;
|
|
Main.npc[number].ai[1] = (float) y;
|
|
Main.npc[number].netUpdate = true;
|
|
}
|
|
else if (Main.hardMode && Main.rand.Next(3) == 0)
|
|
number = Main.rand.Next(3) != 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 81) : NPC.NewNPC(x * 16 + 8, y * 16, 121);
|
|
else if (Main.hardMode && (double) y >= Main.rockLayer && Main.rand.Next(40) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 83);
|
|
else if (Main.hardMode && (Main.rand.Next(2) == 0 || (double) y > Main.rockLayer))
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 94);
|
|
}
|
|
else
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 6);
|
|
if (Main.rand.Next(3) == 0)
|
|
Main.npc[number].SetDefaults("Little Eater");
|
|
else if (Main.rand.Next(3) == 0)
|
|
Main.npc[number].SetDefaults("Big Eater");
|
|
}
|
|
}
|
|
else if ((double) y <= Main.worldSurface)
|
|
{
|
|
if (Main.dayTime)
|
|
{
|
|
int num11 = Math.Abs(x - Main.spawnTileX);
|
|
if (num11 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && (type == 2 || type == 109 || type == 147))
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 46);
|
|
else if (num11 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && (type == 2 || type == 109 || type == 147))
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 74);
|
|
else if (num11 > Main.maxTilesX / 3 && type == 2 && Main.rand.Next(300) == 0 && !NPC.AnyNPCs(50))
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 50);
|
|
else if (type == 53 && Main.rand.Next(5) == 0 && !flag5)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 69);
|
|
else if (type == 53 && !flag5)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 61);
|
|
else if (num11 > Main.maxTilesX / 3 && Main.rand.Next(15) == 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 73);
|
|
}
|
|
else
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 1);
|
|
if (type == 60)
|
|
Main.npc[number].SetDefaults("Jungle Slime");
|
|
else if (Main.rand.Next(3) == 0 || num11 < 200)
|
|
Main.npc[number].SetDefaults("Green Slime");
|
|
else if (Main.rand.Next(10) == 0 && num11 > 400)
|
|
Main.npc[number].SetDefaults("Purple Slime");
|
|
}
|
|
}
|
|
else if (Main.rand.Next(6) == 0 || Main.moonPhase == 4 && Main.rand.Next(2) == 0)
|
|
number = !Main.hardMode || Main.rand.Next(3) != 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 2) : NPC.NewNPC(x * 16 + 8, y * 16, 133);
|
|
else if (Main.hardMode && Main.rand.Next(50) == 0 && Main.bloodMoon && !NPC.AnyNPCs(109))
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 109);
|
|
else if (Main.rand.Next(250) == 0 && Main.bloodMoon)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 53);
|
|
else if (Main.moonPhase == 0 && Main.hardMode && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 104);
|
|
else if (Main.hardMode && Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 140);
|
|
else if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 132);
|
|
else
|
|
NPC.NewNPC(x * 16 + 8, y * 16, 3);
|
|
}
|
|
else if ((double) y <= Main.rockLayer)
|
|
{
|
|
if (!flag3 && Main.rand.Next(50) == 0)
|
|
number = !Main.hardMode ? NPC.NewNPC(x * 16 + 8, y * 16, 10, 1) : NPC.NewNPC(x * 16 + 8, y * 16, 95, 1);
|
|
else if (Main.hardMode && Main.rand.Next(3) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 140);
|
|
else if (Main.hardMode && Main.rand.Next(4) != 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 141);
|
|
}
|
|
else
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 1);
|
|
if (Main.rand.Next(5) == 0)
|
|
Main.npc[number].SetDefaults("Yellow Slime");
|
|
else if (Main.rand.Next(2) == 0)
|
|
Main.npc[number].SetDefaults("Blue Slime");
|
|
else
|
|
Main.npc[number].SetDefaults("Red Slime");
|
|
}
|
|
}
|
|
else if (y > Main.maxTilesY - 190)
|
|
number = Main.rand.Next(40) != 0 || NPC.AnyNPCs(39) ? (Main.rand.Next(14) != 0 ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 60) : NPC.NewNPC(x * 16 + 8, y * 16, 59)) : (Main.rand.Next(7) != 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 62) : NPC.NewNPC(x * 16 + 8, y * 16, 66))) : NPC.NewNPC(x * 16 + 8, y * 16, 24)) : NPC.NewNPC(x * 16 + 8, y * 16, 39, 1);
|
|
else if ((type == 116 || type == 117) && !flag3 && Main.rand.Next(8) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 120);
|
|
else if (!flag3 && Main.rand.Next(75) == 0 && !Main.player[index1].zoneHoly)
|
|
number = !Main.hardMode ? NPC.NewNPC(x * 16 + 8, y * 16, 10, 1) : NPC.NewNPC(x * 16 + 8, y * 16, 95, 1);
|
|
else if (!Main.hardMode && Main.rand.Next(10) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 16);
|
|
else if (!Main.hardMode && Main.rand.Next(4) == 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 1);
|
|
if (Main.player[index1].zoneJungle)
|
|
Main.npc[number].SetDefaults("Jungle Slime");
|
|
else
|
|
Main.npc[number].SetDefaults("Black Slime");
|
|
}
|
|
else if (Main.rand.Next(2) == 0)
|
|
{
|
|
if ((double) y > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && Main.rand.Next(700) == 0)
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 45);
|
|
else if (Main.hardMode && Main.rand.Next(10) != 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 77);
|
|
if ((double) y > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && Main.rand.Next(5) == 0)
|
|
Main.npc[number].SetDefaults("Heavy Skeleton");
|
|
}
|
|
else
|
|
number = NPC.NewNPC(x * 16 + 8, y * 16, 110);
|
|
}
|
|
else
|
|
number = Main.rand.Next(15) != 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 21) : NPC.NewNPC(x * 16 + 8, y * 16, 44);
|
|
}
|
|
else
|
|
number = !Main.hardMode || !(Main.player[index1].zoneHoly & Main.rand.Next(2) == 0) ? (!Main.player[index1].zoneJungle ? (!Main.hardMode || !Main.player[index1].zoneHoly ? (!Main.hardMode || Main.rand.Next(6) <= 0 ? NPC.NewNPC(x * 16 + 8, y * 16, 49) : NPC.NewNPC(x * 16 + 8, y * 16, 93)) : NPC.NewNPC(x * 16 + 8, y * 16, 137)) : NPC.NewNPC(x * 16 + 8, y * 16, 51)) : NPC.NewNPC(x * 16 + 8, y * 16, 138);
|
|
if (Main.npc[number].type == 1 && Main.rand.Next(250) == 0)
|
|
Main.npc[number].SetDefaults("Pinky");
|
|
if (Main.netMode != 2 || number >= 200)
|
|
break;
|
|
NetMessage.SendData(23, number: number);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void SpawnWOF(Vector2 pos)
|
|
{
|
|
if ((double) pos.Y / 16.0 < (double) (Main.maxTilesY - 205) || Main.wof >= 0 || Main.netMode == 1)
|
|
return;
|
|
int closest = (int) Player.FindClosest(pos, 16, 16);
|
|
int num1 = 1;
|
|
if ((double) pos.X / 16.0 > (double) (Main.maxTilesX / 2))
|
|
num1 = -1;
|
|
bool flag = false;
|
|
int x = (int) pos.X;
|
|
while (!flag)
|
|
{
|
|
flag = true;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && (double) Main.player[index].position.X > (double) (x - 1200) && (double) Main.player[index].position.X < (double) (x + 1200))
|
|
{
|
|
x -= num1 * 16;
|
|
flag = false;
|
|
}
|
|
}
|
|
if (x / 16 < 20 || x / 16 > Main.maxTilesX - 20)
|
|
flag = true;
|
|
}
|
|
int y = (int) pos.Y;
|
|
int i = x / 16;
|
|
int num2 = y / 16;
|
|
int num3 = 0;
|
|
try
|
|
{
|
|
for (; WorldGen.SolidTile(i, num2 - num3) || Main.tile[i, num2 - num3].liquid >= (byte) 100; ++num3)
|
|
{
|
|
if (!WorldGen.SolidTile(i, num2 + num3) && Main.tile[i, num2 + num3].liquid < (byte) 100)
|
|
{
|
|
num2 += num3;
|
|
goto label_20;
|
|
}
|
|
}
|
|
num2 -= num3;
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
label_20:
|
|
int Y = num2 * 16;
|
|
int index1 = NPC.NewNPC(x, Y, 113);
|
|
if (Main.npc[index1].displayName == "")
|
|
Main.npc[index1].displayName = Main.npc[index1].name;
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Main.npc[index1].displayName + " " + Lang.misc[16], (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(25, text: (Main.npc[index1].displayName + " " + Lang.misc[16]), number: ((int) byte.MaxValue), number2: 175f, number3: 75f, number4: ((float) byte.MaxValue));
|
|
}
|
|
}
|
|
|
|
public static void SpawnOnPlayer(int plr, int Type)
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
bool flag = false;
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
int minValue1 = (int) ((double) Main.player[plr].position.X / 16.0) - NPC.spawnRangeX * 2;
|
|
int maxValue1 = (int) ((double) Main.player[plr].position.X / 16.0) + NPC.spawnRangeX * 2;
|
|
int minValue2 = (int) ((double) Main.player[plr].position.Y / 16.0) - NPC.spawnRangeY * 2;
|
|
int maxValue2 = (int) ((double) Main.player[plr].position.Y / 16.0) + NPC.spawnRangeY * 2;
|
|
int num3 = (int) ((double) Main.player[plr].position.X / 16.0) - NPC.safeRangeX;
|
|
int num4 = (int) ((double) Main.player[plr].position.X / 16.0) + NPC.safeRangeX;
|
|
int num5 = (int) ((double) Main.player[plr].position.Y / 16.0) - NPC.safeRangeY;
|
|
int num6 = (int) ((double) Main.player[plr].position.Y / 16.0) + NPC.safeRangeY;
|
|
if (minValue1 < 0)
|
|
minValue1 = 0;
|
|
if (maxValue1 > Main.maxTilesX)
|
|
maxValue1 = Main.maxTilesX;
|
|
if (minValue2 < 0)
|
|
minValue2 = 0;
|
|
if (maxValue2 > Main.maxTilesY)
|
|
maxValue2 = Main.maxTilesY;
|
|
for (int index1 = 0; index1 < 1000; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < 100; ++index2)
|
|
{
|
|
int index3 = Main.rand.Next(minValue1, maxValue1);
|
|
int index4 = Main.rand.Next(minValue2, maxValue2);
|
|
if (!Main.tile[index3, index4].active || !Main.tileSolid[(int) Main.tile[index3, index4].type])
|
|
{
|
|
if (!Main.wallHouse[(int) Main.tile[index3, index4].wall] || index1 >= 999)
|
|
{
|
|
for (int index5 = index4; index5 < Main.maxTilesY; ++index5)
|
|
{
|
|
if (Main.tile[index3, index5].active && Main.tileSolid[(int) Main.tile[index3, index5].type])
|
|
{
|
|
if (index3 < num3 || index3 > num4 || index5 < num5 || index5 > num6 || index1 == 999)
|
|
{
|
|
int type = (int) Main.tile[index3, index5].type;
|
|
num1 = index3;
|
|
num2 = index5;
|
|
flag = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (flag && index1 < 999)
|
|
{
|
|
int num7 = num1 - NPC.spawnSpaceX / 2;
|
|
int num8 = num1 + NPC.spawnSpaceX / 2;
|
|
int num9 = num2 - NPC.spawnSpaceY;
|
|
int num10 = num2;
|
|
if (num7 < 0)
|
|
flag = false;
|
|
if (num8 > Main.maxTilesX)
|
|
flag = false;
|
|
if (num9 < 0)
|
|
flag = false;
|
|
if (num10 > Main.maxTilesY)
|
|
flag = false;
|
|
if (flag)
|
|
{
|
|
for (int index6 = num7; index6 < num8; ++index6)
|
|
{
|
|
for (int index7 = num9; index7 < num10; ++index7)
|
|
{
|
|
if (Main.tile[index6, index7].active && Main.tileSolid[(int) Main.tile[index6, index7].type])
|
|
{
|
|
flag = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
if (flag || flag)
|
|
break;
|
|
}
|
|
if (flag && index1 < 999)
|
|
{
|
|
Rectangle rectangle1 = new Rectangle(num1 * 16, num2 * 16, 16, 16);
|
|
for (int index8 = 0; index8 < (int) byte.MaxValue; ++index8)
|
|
{
|
|
if (Main.player[index8].active)
|
|
{
|
|
Rectangle rectangle2 = new Rectangle((int) ((double) Main.player[index8].position.X + (double) (Main.player[index8].width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) Main.player[index8].position.Y + (double) (Main.player[index8].height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
break;
|
|
}
|
|
if (!flag)
|
|
return;
|
|
int number = NPC.NewNPC(num1 * 16 + 8, num2 * 16, Type, 1);
|
|
if (number == 200)
|
|
return;
|
|
Main.npc[number].target = plr;
|
|
Main.npc[number].timeLeft *= 20;
|
|
string str = Main.npc[number].name;
|
|
if (Main.npc[number].displayName != "")
|
|
str = Main.npc[number].displayName;
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
switch (Type)
|
|
{
|
|
case 50:
|
|
break;
|
|
case 82:
|
|
break;
|
|
case 125:
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText("The Twins " + Lang.misc[16], (byte) 175, (byte) 75);
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendData(25, text: ("The Twins " + Lang.misc[16]), number: ((int) byte.MaxValue), number2: 175f, number3: 75f, number4: ((float) byte.MaxValue));
|
|
break;
|
|
case 126:
|
|
break;
|
|
default:
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(str + " " + Lang.misc[16], (byte) 175, (byte) 75);
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendData(25, text: (str + " " + Lang.misc[16]), number: ((int) byte.MaxValue), number2: 175f, number3: 75f, number4: ((float) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static int NewNPC(int X, int Y, int Type, int Start = 0)
|
|
{
|
|
int index1 = -1;
|
|
for (int index2 = Start; index2 < 200; ++index2)
|
|
{
|
|
if (!Main.npc[index2].active)
|
|
{
|
|
index1 = index2;
|
|
break;
|
|
}
|
|
}
|
|
if (index1 < 0)
|
|
return 200;
|
|
Main.npc[index1] = new NPC();
|
|
Main.npc[index1].SetDefaults(Type);
|
|
Main.npc[index1].position.X = (float) (X - Main.npc[index1].width / 2);
|
|
Main.npc[index1].position.Y = (float) (Y - Main.npc[index1].height);
|
|
Main.npc[index1].active = true;
|
|
Main.npc[index1].timeLeft = (int) ((double) NPC.activeTime * 1.25);
|
|
Main.npc[index1].wet = Collision.WetCollision(Main.npc[index1].position, Main.npc[index1].width, Main.npc[index1].height);
|
|
if (Type == 50)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Main.npc[index1].name + " " + Lang.misc[16], (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
NetMessage.SendData(25, text: (Main.npc[index1].name + " " + Lang.misc[16]), number: ((int) byte.MaxValue), number2: 175f, number3: 75f, number4: ((float) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
return index1;
|
|
}
|
|
|
|
public void Transform(int newType)
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
Vector2 velocity = this.velocity;
|
|
this.position.Y += (float) this.height;
|
|
int spriteDirection = this.spriteDirection;
|
|
this.SetDefaults(newType);
|
|
this.spriteDirection = spriteDirection;
|
|
this.TargetClosest();
|
|
this.velocity = velocity;
|
|
this.position.Y -= (float) this.height;
|
|
if (newType == 107 || newType == 108)
|
|
{
|
|
this.homeTileX = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
this.homeTileY = (int) ((double) this.position.Y + (double) this.height) / 16;
|
|
this.homeless = true;
|
|
}
|
|
if (Main.netMode != 2)
|
|
return;
|
|
this.netUpdate = true;
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
}
|
|
|
|
public double StrikeNPC(
|
|
int Damage,
|
|
float knockBack,
|
|
int hitDirection,
|
|
bool crit = false,
|
|
bool noEffect = false)
|
|
{
|
|
if (!this.active || this.life <= 0)
|
|
return 0.0;
|
|
double damage = Main.CalculateDamage((int) (double) Damage, this.defense);
|
|
if (crit)
|
|
damage *= 2.0;
|
|
if (Damage != 9999 && this.lifeMax > 1)
|
|
{
|
|
if (this.friendly)
|
|
CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color((int) byte.MaxValue, 80, 90, (int) byte.MaxValue), string.Concat((object) (int) damage), crit);
|
|
else
|
|
CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color((int) byte.MaxValue, 160, 80, (int) byte.MaxValue), string.Concat((object) (int) damage), crit);
|
|
}
|
|
if (damage < 1.0)
|
|
return 0.0;
|
|
this.justHit = true;
|
|
if (this.townNPC)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (300 + Main.rand.Next(300));
|
|
this.ai[2] = 0.0f;
|
|
this.direction = hitDirection;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.aiStyle == 8 && Main.netMode != 1)
|
|
{
|
|
this.ai[0] = 400f;
|
|
this.TargetClosest();
|
|
}
|
|
if (this.realLife >= 0)
|
|
{
|
|
Main.npc[this.realLife].life -= (int) damage;
|
|
this.life = Main.npc[this.realLife].life;
|
|
this.lifeMax = Main.npc[this.realLife].lifeMax;
|
|
}
|
|
else
|
|
this.life -= (int) damage;
|
|
if ((double) knockBack > 0.0 && (double) this.knockBackResist > 0.0)
|
|
{
|
|
float num1 = knockBack * this.knockBackResist;
|
|
if ((double) num1 > 8.0)
|
|
num1 = 8f;
|
|
if (crit)
|
|
num1 *= 1.4f;
|
|
if (damage * 10.0 < (double) this.lifeMax)
|
|
{
|
|
if (hitDirection < 0 && (double) this.velocity.X > -(double) num1)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X -= num1;
|
|
this.velocity.X -= num1;
|
|
if ((double) this.velocity.X < -(double) num1)
|
|
this.velocity.X = -num1;
|
|
}
|
|
else if (hitDirection > 0 && (double) this.velocity.X < (double) num1)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += num1;
|
|
this.velocity.X += num1;
|
|
if ((double) this.velocity.X > (double) num1)
|
|
this.velocity.X = num1;
|
|
}
|
|
float num2 = this.noGravity ? num1 * -0.5f : num1 * -0.75f;
|
|
if ((double) this.velocity.Y > (double) num2)
|
|
{
|
|
this.velocity.Y += num2;
|
|
if ((double) this.velocity.Y < (double) num2)
|
|
this.velocity.Y = num2;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = this.noGravity ? (float) (-(double) num1 * 0.5) * this.knockBackResist : (float) (-(double) num1 * 0.75) * this.knockBackResist;
|
|
this.velocity.X = num1 * (float) hitDirection * this.knockBackResist;
|
|
}
|
|
}
|
|
if ((this.type == 113 || this.type == 114) && this.life <= 0)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && (Main.npc[index].type == 113 || Main.npc[index].type == 114))
|
|
Main.npc[index].HitEffect(hitDirection, damage);
|
|
}
|
|
}
|
|
else
|
|
this.HitEffect(hitDirection, damage);
|
|
if (this.soundHit > 0)
|
|
Main.PlaySound(3, (int) this.position.X, (int) this.position.Y, this.soundHit);
|
|
if (this.realLife >= 0)
|
|
Main.npc[this.realLife].checkDead();
|
|
else
|
|
this.checkDead();
|
|
return damage;
|
|
}
|
|
|
|
public void checkDead()
|
|
{
|
|
if (!this.active || this.realLife >= 0 && this.realLife != this.whoAmI || this.life > 0)
|
|
return;
|
|
NPC.noSpawnCycle = true;
|
|
if (this.townNPC && this.type != 37)
|
|
{
|
|
string str = this.name;
|
|
if (this.displayName != "")
|
|
str = this.displayName;
|
|
if (Main.netMode == 0)
|
|
Main.NewText(str + Lang.misc[19], G: (byte) 25, B: (byte) 25);
|
|
else if (Main.netMode == 2)
|
|
NetMessage.SendData(25, text: (str + Lang.misc[19]), number: ((int) byte.MaxValue), number2: ((float) byte.MaxValue), number3: 25f, number4: 25f);
|
|
if (Main.netMode != 1)
|
|
{
|
|
Main.chrName[this.type] = "";
|
|
NPC.setNames();
|
|
NetMessage.SendData(56, number: this.type);
|
|
}
|
|
}
|
|
if (this.townNPC && Main.netMode != 1 && this.homeless && WorldGen.spawnNPC == this.type)
|
|
WorldGen.spawnNPC = 0;
|
|
if (this.soundKilled > 0)
|
|
Main.PlaySound(4, (int) this.position.X, (int) this.position.Y, this.soundKilled);
|
|
this.NPCLoot();
|
|
this.active = false;
|
|
if (this.type != 26 && this.type != 27 && this.type != 28 && this.type != 29 && this.type != 111 && this.type != 143 && this.type != 144 && this.type != 145)
|
|
return;
|
|
--Main.invasionSize;
|
|
}
|
|
|
|
public void NPCLoot()
|
|
{
|
|
if (Main.hardMode && this.lifeMax > 1 && this.damage > 0 && !this.friendly && (double) this.position.Y > Main.rockLayer * 16.0 && Main.rand.Next(7) == 0 && this.type != 121 && (double) this.value > 0.0)
|
|
{
|
|
if (Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].zoneEvil)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 521);
|
|
if (Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].zoneHoly)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 520);
|
|
}
|
|
if (Main.xMas && this.lifeMax > 1 && this.damage > 0 && !this.friendly && this.type != 121 && (double) this.value > 0.0 && Main.rand.Next(13) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(599, 602));
|
|
if (this.type == 109 && !NPC.downedClown)
|
|
{
|
|
NPC.downedClown = true;
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
}
|
|
if (this.type == 85 && (double) this.value > 0.0)
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
if (num == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 437, pfix: -1);
|
|
if (num == 1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 517, pfix: -1);
|
|
if (num == 2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 535, pfix: -1);
|
|
if (num == 3)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 536, pfix: -1);
|
|
if (num == 4)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 532, pfix: -1);
|
|
if (num == 5)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 393, pfix: -1);
|
|
if (num == 6)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 554, pfix: -1);
|
|
}
|
|
if (this.type == 87)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 575, Main.rand.Next(5, 11));
|
|
if (this.type == 143 || this.type == 144 || this.type == 145)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 593, Main.rand.Next(5, 11));
|
|
if (this.type == 79)
|
|
{
|
|
if (Main.rand.Next(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527);
|
|
}
|
|
else if (this.type == 80 && Main.rand.Next(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 528);
|
|
if (this.type == 101 || this.type == 98)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 522, Main.rand.Next(2, 6));
|
|
if (this.type == 86)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 526);
|
|
if (this.type == 113)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 367, pfix: -1);
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(489, 492), pfix: -1);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 514, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 426, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 434, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num1 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int num2 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
int num3 = this.width / 2 / 16 + 1;
|
|
for (int index1 = num1 - num3; index1 <= num1 + num3; ++index1)
|
|
{
|
|
for (int index2 = num2 - num3; index2 <= num2 + num3; ++index2)
|
|
{
|
|
if ((index1 == num1 - num3 || index1 == num1 + num3 || index2 == num2 - num3 || index2 == num2 + num3) && !Main.tile[index1, index2].active)
|
|
{
|
|
Main.tile[index1, index2].type = (byte) 140;
|
|
Main.tile[index1, index2].active = true;
|
|
}
|
|
Main.tile[index1, index2].lava = false;
|
|
Main.tile[index1, index2].liquid = (byte) 0;
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, index1, index2, 1);
|
|
else
|
|
WorldGen.SquareTileFrame(index1, index2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 1 || this.type == 16 || this.type == 138 || this.type == 141)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 3));
|
|
if (this.type == 75)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 501, Main.rand.Next(1, 4));
|
|
if (this.type == 81)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(2, 5));
|
|
if (this.type == 122)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(5, 11));
|
|
if (this.type == 71)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 327);
|
|
if (this.type == 2)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 38);
|
|
else if (Main.rand.Next(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 236);
|
|
}
|
|
if (this.type == 104 && Main.rand.Next(60) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 485, pfix: -1);
|
|
if (this.type == 58)
|
|
{
|
|
if (Main.rand.Next(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 263);
|
|
else if (Main.rand.Next(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 118);
|
|
}
|
|
if (this.type == 102 && Main.rand.Next(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 263);
|
|
if ((this.type == 3 || this.type == 132) && Main.rand.Next(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 216, pfix: -1);
|
|
if (this.type == 66)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 267);
|
|
if (this.type == 62 && Main.rand.Next(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 272, pfix: -1);
|
|
if (this.type == 52)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 251);
|
|
if (this.type == 53)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 239);
|
|
if (this.type == 54)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 260);
|
|
if (this.type == 55)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 261);
|
|
if (this.type == 69 && Main.rand.Next(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 323);
|
|
if (this.type == 73)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 362, Main.rand.Next(1, 3));
|
|
if (this.type == 4)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 47, Main.rand.Next(30) + 20);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(20) + 10);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(20) + 10);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(20) + 10);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 59, Main.rand.Next(3) + 1);
|
|
}
|
|
if ((this.type == 6 || this.type == 94) && Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 68);
|
|
if (this.type == 7 || this.type == 8 || this.type == 9)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 68, Main.rand.Next(1, 3));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 69, Main.rand.Next(3, 9));
|
|
}
|
|
if ((this.type == 10 || this.type == 11 || this.type == 12 || this.type == 95 || this.type == 96 || this.type == 97) && Main.rand.Next(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 215);
|
|
if (this.type == 47 && Main.rand.Next(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 243);
|
|
if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
{
|
|
int Stack = Main.rand.Next(1, 3);
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 86, Stack);
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(2, 6));
|
|
if (this.boss)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(10, 30));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(10, 31));
|
|
}
|
|
if (Main.rand.Next(3) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLife < Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLifeMax)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
}
|
|
if (this.type == 116 || this.type == 117 || this.type == 118 || this.type == 119 || this.type == 139)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 63 || this.type == 64 || this.type == 103)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 282, Main.rand.Next(1, 5));
|
|
if (this.type == 21 || this.type == 44)
|
|
{
|
|
if (Main.rand.Next(25) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 118);
|
|
else if (this.type == 44)
|
|
{
|
|
if (Main.rand.Next(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(410, 412));
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 166, Main.rand.Next(1, 4));
|
|
}
|
|
}
|
|
if (this.type == 45)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 238);
|
|
if (this.type == 50)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(256, 259));
|
|
if (this.type == 23 && Main.rand.Next(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 116);
|
|
if (this.type == 24 && Main.rand.Next(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 244);
|
|
if (this.type == 31 || this.type == 32 || this.type == 34)
|
|
{
|
|
if (Main.rand.Next(65) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 327);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 154, Main.rand.Next(1, 4));
|
|
}
|
|
if (this.type == 26 || this.type == 27 || this.type == 28 || this.type == 29 || this.type == 111)
|
|
{
|
|
if (Main.rand.Next(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 160);
|
|
else if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 161, Main.rand.Next(1, 6));
|
|
}
|
|
if (this.type == 42 && Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 209);
|
|
if (this.type == 43 && Main.rand.Next(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 210);
|
|
if (this.type == 65)
|
|
{
|
|
if (Main.rand.Next(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 268);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319);
|
|
}
|
|
if (this.type == 48 && Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 320);
|
|
if (this.type == 125 || this.type == 126)
|
|
{
|
|
int Type = 125;
|
|
if (this.type == 125)
|
|
Type = 126;
|
|
if (!NPC.AnyNPCs(Type))
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 549, Main.rand.Next(20, 31));
|
|
}
|
|
else
|
|
{
|
|
this.value = 0.0f;
|
|
this.boss = false;
|
|
}
|
|
}
|
|
else if (this.type == (int) sbyte.MaxValue)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 547, Main.rand.Next(20, 31));
|
|
else if (this.type == 134)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 548, Main.rand.Next(20, 31));
|
|
if (this.boss)
|
|
{
|
|
if (this.type == 4)
|
|
NPC.downedBoss1 = true;
|
|
else if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
{
|
|
NPC.downedBoss2 = true;
|
|
this.name = "Eater of Worlds";
|
|
}
|
|
else if (this.type == 35)
|
|
{
|
|
NPC.downedBoss3 = true;
|
|
this.name = "Skeletron";
|
|
}
|
|
else
|
|
this.name = this.displayName;
|
|
string str = this.name;
|
|
if (this.displayName != "")
|
|
str = this.displayName;
|
|
int Stack = Main.rand.Next(5, 16);
|
|
int Type = 28;
|
|
if (this.type == 113)
|
|
Type = 188;
|
|
if (this.type > 113)
|
|
Type = 499;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type, Stack);
|
|
int num = Main.rand.Next(5) + 5;
|
|
for (int index = 0; index < num; ++index)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 125 || this.type == 126)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText("The Twins " + Lang.misc[17], (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
NetMessage.SendData(25, text: ("The Twins " + Lang.misc[17]), number: ((int) byte.MaxValue), number2: 175f, number3: 75f, number4: ((float) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(str + " " + Lang.misc[17], (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
NetMessage.SendData(25, text: (str + " " + Lang.misc[17]), number: ((int) byte.MaxValue), number2: 175f, number3: 75f, number4: ((float) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
if (this.type == 113 && Main.netMode != 1)
|
|
WorldGen.StartHardmode();
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
}
|
|
if (Main.rand.Next(6) == 0 && this.lifeMax > 1 && this.damage > 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statMana < Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statManaMax)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 184);
|
|
else if (Main.rand.Next(2) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLife < Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLifeMax)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
}
|
|
if (Main.rand.Next(2) == 0 && this.lifeMax > 1 && this.damage > 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statMana < Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statManaMax)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 184);
|
|
float num4 = this.value * (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00999999977648258);
|
|
if (Main.rand.Next(5) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(5, 11) * 0.00999999977648258);
|
|
if (Main.rand.Next(10) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(10, 21) * 0.00999999977648258);
|
|
if (Main.rand.Next(15) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(15, 31) * 0.00999999977648258);
|
|
if (Main.rand.Next(20) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(20, 41) * 0.00999999977648258);
|
|
while ((int) num4 > 0)
|
|
{
|
|
if ((double) num4 > 1000000.0)
|
|
{
|
|
int Stack = (int) ((double) num4 / 1000000.0);
|
|
if (Stack > 50 && Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(3) + 1;
|
|
if (Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(3) + 1;
|
|
num4 -= (float) (1000000 * Stack);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 74, Stack);
|
|
}
|
|
else if ((double) num4 > 10000.0)
|
|
{
|
|
int Stack = (int) ((double) num4 / 10000.0);
|
|
if (Stack > 50 && Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(3) + 1;
|
|
if (Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(3) + 1;
|
|
num4 -= (float) (10000 * Stack);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 73, Stack);
|
|
}
|
|
else if ((double) num4 > 100.0)
|
|
{
|
|
int Stack = (int) ((double) num4 / 100.0);
|
|
if (Stack > 50 && Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(3) + 1;
|
|
if (Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(3) + 1;
|
|
num4 -= (float) (100 * Stack);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 72, Stack);
|
|
}
|
|
else
|
|
{
|
|
int Stack = (int) num4;
|
|
if (Stack > 50 && Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(3) + 1;
|
|
if (Main.rand.Next(5) == 0)
|
|
Stack /= Main.rand.Next(4) + 1;
|
|
if (Stack < 1)
|
|
Stack = 1;
|
|
num4 -= (float) Stack;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 71, Stack);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void HitEffect(int hitDirection = 0, double dmg = 10.0)
|
|
{
|
|
if (!this.active)
|
|
return;
|
|
if (this.type == 1 || this.type == 16 || this.type == 71)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) hitDirection, -1f, this.alpha, this.color);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) (2 * hitDirection), -2f, this.alpha, this.color);
|
|
if (Main.netMode != 1 && this.type == 16)
|
|
{
|
|
int num = Main.rand.Next(2) + 2;
|
|
for (int index = 0; index < num; ++index)
|
|
{
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), 1);
|
|
Main.npc[number].SetDefaults("Baby Slime");
|
|
Main.npc[number].velocity.X = this.velocity.X * 2f;
|
|
Main.npc[number].velocity.Y = this.velocity.Y;
|
|
Main.npc[number].velocity.X += (float) ((double) Main.rand.Next(-20, 20) * 0.100000001490116 + (double) (index * this.direction) * 0.300000011920929);
|
|
Main.npc[number].velocity.Y -= (float) Main.rand.Next(0, 10) * 0.1f + (float) index;
|
|
Main.npc[number].ai[1] = (float) index;
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 143 || this.type == 144 || this.type == 145)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index1 = 0; (double) index1 < dmg / (double) this.lifeMax * 100.0; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(this.position, this.width, this.height, 76, (float) hitDirection, -1f);
|
|
Main.dust[index2].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index3 = 0; index3 < 50; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(this.position, this.width, this.height, 76, (float) hitDirection, -1f);
|
|
Main.dust[index4].noGravity = true;
|
|
Main.dust[index4].scale *= 1.2f;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 141)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) hitDirection, -1f, this.alpha, new Color(210, 230, 140));
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) (2 * hitDirection), -2f, this.alpha, new Color(210, 230, 140));
|
|
}
|
|
}
|
|
if (this.type == 112)
|
|
{
|
|
for (int index5 = 0; index5 < 20; ++index5)
|
|
{
|
|
int index6 = Dust.NewDust(new Vector2(this.position.X, this.position.Y + 2f), this.width, this.height, 18, Alpha: 100, Scale: 2f);
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.dust[index6].scale *= 0.6f;
|
|
}
|
|
else
|
|
{
|
|
Main.dust[index6].velocity *= 1.4f;
|
|
Main.dust[index6].noGravity = true;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 81 || this.type == 121)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 14, Alpha: this.alpha, newColor: this.color);
|
|
}
|
|
else
|
|
{
|
|
for (int index7 = 0; index7 < 50; ++index7)
|
|
{
|
|
int index8 = Dust.NewDust(this.position, this.width, this.height, 14, (float) hitDirection, Alpha: this.alpha, newColor: this.color);
|
|
Main.dust[index8].velocity *= 2f;
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (this.type == 121)
|
|
{
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), 81);
|
|
Main.npc[number].SetDefaults("Slimer2");
|
|
Main.npc[number].velocity.X = this.velocity.X;
|
|
Main.npc[number].velocity.Y = this.velocity.Y;
|
|
Gore.NewGore(this.position, this.velocity, 94, this.scale);
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
else if ((double) this.scale >= 1.0)
|
|
{
|
|
int num = Main.rand.Next(2) + 2;
|
|
for (int index = 0; index < num; ++index)
|
|
{
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), 1);
|
|
Main.npc[number].SetDefaults("Slimeling");
|
|
Main.npc[number].velocity.X = this.velocity.X * 3f;
|
|
Main.npc[number].velocity.Y = this.velocity.Y;
|
|
Main.npc[number].velocity.X += (float) ((double) Main.rand.Next(-10, 10) * 0.100000001490116 + (double) (index * this.direction) * 0.300000011920929);
|
|
Main.npc[number].velocity.Y -= (float) Main.rand.Next(0, 10) * 0.1f + (float) index;
|
|
Main.npc[number].ai[1] = (float) index;
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 120 || this.type == 137 || this.type == 138)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index9 = 0; (double) index9 < dmg / (double) this.lifeMax * 50.0; ++index9)
|
|
{
|
|
int index10 = Dust.NewDust(this.position, this.width, this.height, 71, Alpha: 200);
|
|
Main.dust[index10].velocity *= 1.5f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index11 = 0; index11 < 50; ++index11)
|
|
{
|
|
int index12 = Dust.NewDust(this.position, this.width, this.height, 71, (float) hitDirection, Alpha: 200);
|
|
Main.dust[index12].velocity *= 1.5f;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 122)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index13 = 0; (double) index13 < dmg / (double) this.lifeMax * 50.0; ++index13)
|
|
{
|
|
int index14 = Dust.NewDust(this.position, this.width, this.height, 72, Alpha: 200);
|
|
Main.dust[index14].velocity *= 1.5f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index15 = 0; index15 < 50; ++index15)
|
|
{
|
|
int index16 = Dust.NewDust(this.position, this.width, this.height, 72, (float) hitDirection, Alpha: 200);
|
|
Main.dust[index16].velocity *= 1.5f;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 75)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 55, Alpha: 200, newColor: this.color);
|
|
}
|
|
else
|
|
{
|
|
for (int index17 = 0; index17 < 50; ++index17)
|
|
{
|
|
int index18 = Dust.NewDust(this.position, this.width, this.height, 55, (float) hitDirection, Alpha: 200, newColor: this.color);
|
|
Main.dust[index18].velocity *= 2f;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 63 || this.type == 64 || this.type == 103)
|
|
{
|
|
Color newColor = new Color(50, 120, (int) byte.MaxValue, 100);
|
|
if (this.type == 64)
|
|
newColor = new Color(225, 70, 140, 100);
|
|
if (this.type == 103)
|
|
newColor = new Color(70, 225, 140, 100);
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) hitDirection, -1f, newColor: newColor);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 25; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) (2 * hitDirection), -2f, newColor: newColor);
|
|
}
|
|
}
|
|
else if (this.type == 59 || this.type == 60)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 80.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 6, (float) (hitDirection * 2), -1f, this.alpha, Scale: 1.5f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 40; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 6, (float) (hitDirection * 2), -1f, this.alpha, Scale: 1.5f);
|
|
}
|
|
}
|
|
else if (this.type == 50)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 300.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) hitDirection, -1f, 175, new Color(0, 80, (int) byte.MaxValue, 100));
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 4, (float) (2 * hitDirection), -2f, 175, new Color(0, 80, (int) byte.MaxValue, 100));
|
|
if (Main.netMode == 1)
|
|
return;
|
|
int num = Main.rand.Next(4) + 4;
|
|
for (int index = 0; index < num; ++index)
|
|
{
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) Main.rand.Next(this.width - 32)), (int) ((double) this.position.Y + (double) Main.rand.Next(this.height - 32)), 1);
|
|
Main.npc[number].SetDefaults(1);
|
|
Main.npc[number].velocity.X = (float) Main.rand.Next(-15, 16) * 0.1f;
|
|
Main.npc[number].velocity.Y = (float) Main.rand.Next(-30, 1) * 0.1f;
|
|
Main.npc[number].ai[1] = (float) Main.rand.Next(3);
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 49 || this.type == 51 || this.type == 93)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 30.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 15; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
if (this.type == 51)
|
|
Gore.NewGore(this.position, this.velocity, 83);
|
|
else if (this.type == 93)
|
|
Gore.NewGore(this.position, this.velocity, 107);
|
|
else
|
|
Gore.NewGore(this.position, this.velocity, 82);
|
|
}
|
|
}
|
|
else if (this.type == 46 || this.type == 55 || this.type == 67 || this.type == 74 || this.type == 102)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 20.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
if (this.type == 46)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 76);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y), this.velocity, 77);
|
|
}
|
|
else if (this.type == 67)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 95);
|
|
Gore.NewGore(this.position, this.velocity, 95);
|
|
Gore.NewGore(this.position, this.velocity, 96);
|
|
}
|
|
else if (this.type == 74)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 100);
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 102)
|
|
return;
|
|
Gore.NewGore(this.position, this.velocity, 116);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 47 || this.type == 57 || this.type == 58)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 20.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
if (this.type == 57)
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y), this.velocity, 84);
|
|
else if (this.type == 58)
|
|
{
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y), this.velocity, 85);
|
|
}
|
|
else
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 78);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y), this.velocity, 79);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 2)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity, 1);
|
|
Gore.NewGore(new Vector2(this.position.X + 14f, this.position.Y), this.velocity, 2);
|
|
}
|
|
}
|
|
else if (this.type == 133)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
if ((double) this.life >= (double) this.lifeMax * 0.5 || (double) this.localAI[0] != 0.0)
|
|
return;
|
|
this.localAI[0] = 1f;
|
|
Gore.NewGore(this.position, this.velocity, 1);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity, 155);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 14f), this.velocity, 155);
|
|
}
|
|
}
|
|
else if (this.type == 69)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity, 97);
|
|
Gore.NewGore(this.position, this.velocity, 98);
|
|
}
|
|
}
|
|
else if (this.type == 61)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity, 86);
|
|
Gore.NewGore(new Vector2(this.position.X + 14f, this.position.Y), this.velocity, 87);
|
|
Gore.NewGore(new Vector2(this.position.X + 14f, this.position.Y), this.velocity, 88);
|
|
}
|
|
}
|
|
else if (this.type == 65)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 150.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 75; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity * 0.8f, 89);
|
|
Gore.NewGore(new Vector2(this.position.X + 14f, this.position.Y), this.velocity * 0.8f, 90);
|
|
Gore.NewGore(new Vector2(this.position.X + 14f, this.position.Y), this.velocity * 0.8f, 91);
|
|
Gore.NewGore(new Vector2(this.position.X + 14f, this.position.Y), this.velocity * 0.8f, 92);
|
|
}
|
|
}
|
|
else if (this.type == 3 || this.type == 52 || this.type == 53 || this.type == 104 || this.type == 109 || this.type == 132)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
if (this.type == 104)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 117);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 118);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 118);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 119);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 119);
|
|
}
|
|
else if (this.type == 109)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 121);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 122);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 122);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 123);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 123);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 46f), this.velocity, 120);
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 132)
|
|
Gore.NewGore(this.position, this.velocity, 154);
|
|
else
|
|
Gore.NewGore(this.position, this.velocity, 3);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 4);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 4);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 5);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 5);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 83 || this.type == 84)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index19 = 0; (double) index19 < dmg / (double) this.lifeMax * 50.0; ++index19)
|
|
{
|
|
int index20 = Dust.NewDust(this.position, this.width, this.height, 31, Scale: 1.5f);
|
|
Main.dust[index20].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index21 = 0; index21 < 20; ++index21)
|
|
{
|
|
int index22 = Dust.NewDust(this.position, this.width, this.height, 31, Scale: 1.5f);
|
|
Main.dust[index22].velocity *= 2f;
|
|
Main.dust[index22].noGravity = true;
|
|
}
|
|
int index23 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), new Vector2((float) Main.rand.Next(-2, 3), (float) Main.rand.Next(-2, 3)), 61, this.scale);
|
|
Main.gore[index23].velocity *= 0.5f;
|
|
int index24 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), new Vector2((float) Main.rand.Next(-2, 3), (float) Main.rand.Next(-2, 3)), 61, this.scale);
|
|
Main.gore[index24].velocity *= 0.5f;
|
|
int index25 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), new Vector2((float) Main.rand.Next(-2, 3), (float) Main.rand.Next(-2, 3)), 61, this.scale);
|
|
Main.gore[index25].velocity *= 0.5f;
|
|
}
|
|
}
|
|
else if (this.type == 4 || this.type == 126 || this.type == 125)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 150; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 2);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 7);
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 9);
|
|
if (this.type == 4)
|
|
{
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 10);
|
|
Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
else if (this.type == 125)
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 146);
|
|
else if (this.type == 126)
|
|
Gore.NewGore(this.position, new Vector2((float) Main.rand.Next(-30, 31) * 0.2f, (float) Main.rand.Next(-30, 31) * 0.2f), 145);
|
|
}
|
|
if (this.type != 125 && this.type != 126)
|
|
return;
|
|
for (int index26 = 0; index26 < 10; ++index26)
|
|
{
|
|
int index27 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index27].velocity *= 1.4f;
|
|
}
|
|
for (int index28 = 0; index28 < 5; ++index28)
|
|
{
|
|
int index29 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index29].noGravity = true;
|
|
Main.dust[index29].velocity *= 5f;
|
|
int index30 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index30].velocity *= 3f;
|
|
}
|
|
int index31 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index31].velocity *= 0.4f;
|
|
++Main.gore[index31].velocity.X;
|
|
++Main.gore[index31].velocity.Y;
|
|
int index32 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index32].velocity *= 0.4f;
|
|
--Main.gore[index32].velocity.X;
|
|
++Main.gore[index32].velocity.Y;
|
|
int index33 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index33].velocity *= 0.4f;
|
|
++Main.gore[index33].velocity.X;
|
|
--Main.gore[index33].velocity.Y;
|
|
int index34 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index34].velocity *= 0.4f;
|
|
--Main.gore[index34].velocity.X;
|
|
--Main.gore[index34].velocity.Y;
|
|
}
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity, 6);
|
|
Gore.NewGore(this.position, this.velocity, 7);
|
|
}
|
|
}
|
|
else if (this.type == 113 || this.type == 114)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -1f);
|
|
if (this.type == 114)
|
|
{
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y), this.velocity, 137, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + (float) (this.height / 2)), this.velocity, 139, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X + (float) (this.width / 2), this.position.Y), this.velocity, 139, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X + (float) (this.width / 2), this.position.Y + (float) (this.height / 2)), this.velocity, 137, this.scale);
|
|
}
|
|
else
|
|
{
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y), this.velocity, 137, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + (float) (this.height / 2)), this.velocity, 138, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X + (float) (this.width / 2), this.position.Y), this.velocity, 138, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X + (float) (this.width / 2), this.position.Y + (float) (this.height / 2)), this.velocity, 137, this.scale);
|
|
if ((double) Main.player[Main.myPlayer].position.Y / 16.0 <= (double) (Main.maxTilesY - 250))
|
|
return;
|
|
int y = (int) Main.screenPosition.Y;
|
|
int num1 = y + Main.screenWidth;
|
|
int x = (int) this.position.X;
|
|
if (this.direction > 0)
|
|
x -= 80;
|
|
int num2 = x + 140;
|
|
int num3 = x;
|
|
for (int index35 = y; index35 < num1; index35 += 50)
|
|
{
|
|
for (; num3 < num2; num3 += 46)
|
|
{
|
|
for (int index36 = 0; index36 < 5; ++index36)
|
|
Dust.NewDust(new Vector2((float) num3, (float) index35), 32, 32, 5, (float) Main.rand.Next(-60, 61) * 0.1f, (float) Main.rand.Next(-60, 61) * 0.1f);
|
|
Vector2 Velocity = new Vector2((float) Main.rand.Next(-80, 81) * 0.1f, (float) Main.rand.Next(-60, 21) * 0.1f);
|
|
Gore.NewGore(new Vector2((float) num3, (float) index35), Velocity, Main.rand.Next(140, 143));
|
|
}
|
|
num3 = x;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 115 || this.type == 116)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; index < 5; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else if (this.type == 115 && Main.netMode != 1)
|
|
{
|
|
NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), 116);
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
Gore.NewGore(this.position, this.velocity, 132, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 133, this.scale);
|
|
}
|
|
}
|
|
else if (this.type >= 117 && this.type <= 119)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; index < 5; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
Gore.NewGore(this.position, this.velocity, 134 + this.type - 117, this.scale);
|
|
}
|
|
}
|
|
else if (this.type == 6 || this.type == 94)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -1f, this.alpha, this.color, this.scale);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -2f, this.alpha, this.color, this.scale);
|
|
if (this.type == 94)
|
|
{
|
|
int num = Gore.NewGore(this.position, this.velocity, 108, this.scale);
|
|
num = Gore.NewGore(this.position, this.velocity, 108, this.scale);
|
|
num = Gore.NewGore(this.position, this.velocity, 109, this.scale);
|
|
num = Gore.NewGore(this.position, this.velocity, 110, this.scale);
|
|
}
|
|
else
|
|
{
|
|
int index37 = Gore.NewGore(this.position, this.velocity, 14, this.scale);
|
|
Main.gore[index37].alpha = this.alpha;
|
|
int index38 = Gore.NewGore(this.position, this.velocity, 15, this.scale);
|
|
Main.gore[index38].alpha = this.alpha;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 101)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -1f, this.alpha, this.color, this.scale);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -2f, this.alpha, this.color, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 110, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 114, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 114, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 115, this.scale);
|
|
}
|
|
}
|
|
else if (this.type == 7 || this.type == 8 || this.type == 9)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -1f, this.alpha, this.color, this.scale);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -2f, this.alpha, this.color, this.scale);
|
|
int index39 = Gore.NewGore(this.position, this.velocity, this.type - 7 + 18);
|
|
Main.gore[index39].alpha = this.alpha;
|
|
}
|
|
}
|
|
else if (this.type == 98 || this.type == 99 || this.type == 100)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -1f, this.alpha, this.color, this.scale);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -2f, this.alpha, this.color, this.scale);
|
|
int index40 = Gore.NewGore(this.position, this.velocity, 110);
|
|
Main.gore[index40].alpha = this.alpha;
|
|
}
|
|
}
|
|
else if (this.type == 10 || this.type == 11 || this.type == 12)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, this.type - 7 + 18);
|
|
}
|
|
}
|
|
else if (this.type == 95 || this.type == 96 || this.type == 97)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, this.type - 95 + 111);
|
|
}
|
|
}
|
|
else if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -1f, this.alpha, this.color, this.scale);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -2f, this.alpha, this.color, this.scale);
|
|
if (this.type == 13)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 24);
|
|
Gore.NewGore(this.position, this.velocity, 25);
|
|
}
|
|
else if (this.type == 14)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 26);
|
|
Gore.NewGore(this.position, this.velocity, 27);
|
|
}
|
|
else
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 28);
|
|
Gore.NewGore(this.position, this.velocity, 29);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 17)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 30);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 31);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 31);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 32);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 32);
|
|
}
|
|
}
|
|
else if (this.type == 86)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 101);
|
|
Gore.NewGore(this.position, this.velocity, 102);
|
|
Gore.NewGore(this.position, this.velocity, 103);
|
|
Gore.NewGore(this.position, this.velocity, 103);
|
|
Gore.NewGore(this.position, this.velocity, 104);
|
|
Gore.NewGore(this.position, this.velocity, 104);
|
|
Gore.NewGore(this.position, this.velocity, 105);
|
|
}
|
|
}
|
|
else if (this.type >= 105 && this.type <= 108)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
if (this.type == 105 || this.type == 107)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 124);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 125);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 125);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 126);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 126);
|
|
}
|
|
else
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, (int) sbyte.MaxValue);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 128);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 128);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 129);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 129);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 123 || this.type == 124)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 151);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 152);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 152);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 153);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 153);
|
|
}
|
|
}
|
|
else if (this.type == 22)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 73);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 74);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 74);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 75);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 75);
|
|
}
|
|
}
|
|
else if (this.type == 142)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 157);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 158);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 158);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 159);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 159);
|
|
}
|
|
}
|
|
else if (this.type == 37 || this.type == 54)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 58);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 59);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 59);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 60);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 60);
|
|
}
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 33);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 34);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 34);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 35);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 35);
|
|
}
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 36);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 37);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 37);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 38);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 38);
|
|
}
|
|
}
|
|
else if (this.type == 38)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 64);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 65);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 65);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 66);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 66);
|
|
}
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 39);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 40);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 40);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 41);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 41);
|
|
}
|
|
}
|
|
else if (this.type == 21 || this.type == 31 || this.type == 32 || this.type == 44 || this.type == 45 || this.type == 77 || this.type == 110)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 26, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 26, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 42, this.scale);
|
|
if (this.type == 77)
|
|
Gore.NewGore(this.position, this.velocity, 106, this.scale);
|
|
if (this.type == 110)
|
|
Gore.NewGore(this.position, this.velocity, 130, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 43, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 43, this.scale);
|
|
if (this.type == 110)
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 131, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 44, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 44, this.scale);
|
|
}
|
|
}
|
|
else if (this.type == 85)
|
|
{
|
|
int Type = 7;
|
|
if ((double) this.ai[3] == 2.0)
|
|
Type = 10;
|
|
if ((double) this.ai[3] == 3.0)
|
|
Type = 37;
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, Type);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, Type);
|
|
int index41 = Gore.NewGore(new Vector2(this.position.X, this.position.Y - 10f), new Vector2((float) hitDirection, 0.0f), 61, this.scale);
|
|
Main.gore[index41].velocity *= 0.3f;
|
|
int index42 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), new Vector2((float) hitDirection, 0.0f), 62, this.scale);
|
|
Main.gore[index42].velocity *= 0.3f;
|
|
int index43 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) this.height - 10.0)), new Vector2((float) hitDirection, 0.0f), 63, this.scale);
|
|
Main.gore[index43].velocity *= 0.3f;
|
|
}
|
|
}
|
|
else if (this.type >= 87 && this.type <= 92)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index44 = 0; (double) index44 < dmg / (double) this.lifeMax * 50.0; ++index44)
|
|
{
|
|
int index45 = Dust.NewDust(this.position, this.width, this.height, 16, Scale: 1.5f);
|
|
Main.dust[index45].velocity *= 1.5f;
|
|
Main.dust[index45].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index46 = 0; index46 < 10; ++index46)
|
|
{
|
|
int index47 = Dust.NewDust(this.position, this.width, this.height, 16, Scale: 1.5f);
|
|
Main.dust[index47].velocity *= 2f;
|
|
Main.dust[index47].noGravity = true;
|
|
}
|
|
int num = Main.rand.Next(1, 4);
|
|
for (int index48 = 0; index48 < num; ++index48)
|
|
{
|
|
int index49 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), new Vector2((float) hitDirection, 0.0f), Main.rand.Next(11, 14), this.scale);
|
|
Main.gore[index49].velocity *= 0.8f;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 78 || this.type == 79 || this.type == 80)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index50 = 0; (double) index50 < dmg / (double) this.lifeMax * 50.0; ++index50)
|
|
{
|
|
int index51 = Dust.NewDust(this.position, this.width, this.height, 31, Scale: 1.5f);
|
|
Main.dust[index51].velocity *= 2f;
|
|
Main.dust[index51].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index52 = 0; index52 < 20; ++index52)
|
|
{
|
|
int index53 = Dust.NewDust(this.position, this.width, this.height, 31, Scale: 1.5f);
|
|
Main.dust[index53].velocity *= 2f;
|
|
Main.dust[index53].noGravity = true;
|
|
}
|
|
int index54 = Gore.NewGore(new Vector2(this.position.X, this.position.Y - 10f), new Vector2((float) hitDirection, 0.0f), 61, this.scale);
|
|
Main.gore[index54].velocity *= 0.3f;
|
|
int index55 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), new Vector2((float) hitDirection, 0.0f), 62, this.scale);
|
|
Main.gore[index55].velocity *= 0.3f;
|
|
int index56 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) this.height - 10.0)), new Vector2((float) hitDirection, 0.0f), 63, this.scale);
|
|
Main.gore[index56].velocity *= 0.3f;
|
|
}
|
|
}
|
|
else if (this.type == 82)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index57 = 0; (double) index57 < dmg / (double) this.lifeMax * 50.0; ++index57)
|
|
{
|
|
int index58 = Dust.NewDust(this.position, this.width, this.height, 54, Alpha: 50, Scale: 1.5f);
|
|
Main.dust[index58].velocity *= 2f;
|
|
Main.dust[index58].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index59 = 0; index59 < 20; ++index59)
|
|
{
|
|
int index60 = Dust.NewDust(this.position, this.width, this.height, 54, Alpha: 50, Scale: 1.5f);
|
|
Main.dust[index60].velocity *= 2f;
|
|
Main.dust[index60].noGravity = true;
|
|
}
|
|
int index61 = Gore.NewGore(new Vector2(this.position.X, this.position.Y - 10f), new Vector2((float) hitDirection, 0.0f), 99, this.scale);
|
|
Main.gore[index61].velocity *= 0.3f;
|
|
int index62 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 15.0)), new Vector2((float) hitDirection, 0.0f), 99, this.scale);
|
|
Main.gore[index62].velocity *= 0.3f;
|
|
int index63 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) this.height - 20.0)), new Vector2((float) hitDirection, 0.0f), 99, this.scale);
|
|
Main.gore[index63].velocity *= 0.3f;
|
|
}
|
|
}
|
|
else if (this.type == 140)
|
|
{
|
|
if (this.life > 0)
|
|
return;
|
|
for (int index64 = 0; index64 < 20; ++index64)
|
|
{
|
|
int index65 = Dust.NewDust(this.position, this.width, this.height, 54, Alpha: 50, Scale: 1.5f);
|
|
Main.dust[index65].velocity *= 2f;
|
|
Main.dust[index65].noGravity = true;
|
|
}
|
|
int index66 = Gore.NewGore(new Vector2(this.position.X, this.position.Y - 10f), new Vector2((float) hitDirection, 0.0f), 99, this.scale);
|
|
Main.gore[index66].velocity *= 0.3f;
|
|
int index67 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 15.0)), new Vector2((float) hitDirection, 0.0f), 99, this.scale);
|
|
Main.gore[index67].velocity *= 0.3f;
|
|
int index68 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) this.height - 20.0)), new Vector2((float) hitDirection, 0.0f), 99, this.scale);
|
|
Main.gore[index68].velocity *= 0.3f;
|
|
}
|
|
else if (this.type == 39 || this.type == 40 || this.type == 41)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 50.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 26, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 26, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, this.type - 39 + 67);
|
|
}
|
|
}
|
|
else if (this.type == 34)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index69 = 0; (double) index69 < dmg / (double) this.lifeMax * 30.0; ++index69)
|
|
{
|
|
int index70 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 15, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100, Scale: 1.8f);
|
|
Main.dust[index70].noLight = true;
|
|
Main.dust[index70].noGravity = true;
|
|
Main.dust[index70].velocity *= 1.3f;
|
|
int index71 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 26, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), Scale: 0.9f);
|
|
Main.dust[index71].noLight = true;
|
|
Main.dust[index71].velocity *= 1.3f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index72 = 0; index72 < 15; ++index72)
|
|
{
|
|
int index73 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 15, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100, Scale: 1.8f);
|
|
Main.dust[index73].noLight = true;
|
|
Main.dust[index73].noGravity = true;
|
|
Main.dust[index73].velocity *= 1.3f;
|
|
int index74 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 26, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), Scale: 0.9f);
|
|
Main.dust[index74].noLight = true;
|
|
Main.dust[index74].velocity *= 1.3f;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 35 || this.type == 36)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 26, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 150; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 26, 2.5f * (float) hitDirection, -2.5f);
|
|
if (this.type == 35)
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 54);
|
|
Gore.NewGore(this.position, this.velocity, 55);
|
|
}
|
|
else
|
|
{
|
|
Gore.NewGore(this.position, this.velocity, 56);
|
|
Gore.NewGore(this.position, this.velocity, 57);
|
|
Gore.NewGore(this.position, this.velocity, 57);
|
|
Gore.NewGore(this.position, this.velocity, 57);
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 139)
|
|
{
|
|
if (this.life > 0)
|
|
return;
|
|
for (int index75 = 0; index75 < 10; ++index75)
|
|
{
|
|
int index76 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index76].velocity *= 1.4f;
|
|
}
|
|
for (int index77 = 0; index77 < 5; ++index77)
|
|
{
|
|
int index78 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index78].noGravity = true;
|
|
Main.dust[index78].velocity *= 5f;
|
|
int index79 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index79].velocity *= 3f;
|
|
}
|
|
int index80 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index80].velocity *= 0.4f;
|
|
++Main.gore[index80].velocity.X;
|
|
++Main.gore[index80].velocity.Y;
|
|
int index81 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index81].velocity *= 0.4f;
|
|
--Main.gore[index81].velocity.X;
|
|
++Main.gore[index81].velocity.Y;
|
|
int index82 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index82].velocity *= 0.4f;
|
|
++Main.gore[index82].velocity.X;
|
|
--Main.gore[index82].velocity.Y;
|
|
int index83 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index83].velocity *= 0.4f;
|
|
--Main.gore[index83].velocity.X;
|
|
--Main.gore[index83].velocity.Y;
|
|
}
|
|
else if (this.type >= 134 && this.type <= 136)
|
|
{
|
|
if (this.type == 135 && this.life > 0 && Main.netMode != 1 && (double) this.ai[2] == 0.0 && Main.rand.Next(25) == 0)
|
|
{
|
|
this.ai[2] = 1f;
|
|
int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), 139);
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.life > 0)
|
|
return;
|
|
Gore.NewGore(this.position, this.velocity, 156);
|
|
if (Main.rand.Next(2) != 0)
|
|
return;
|
|
for (int index84 = 0; index84 < 10; ++index84)
|
|
{
|
|
int index85 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index85].velocity *= 1.4f;
|
|
}
|
|
for (int index86 = 0; index86 < 5; ++index86)
|
|
{
|
|
int index87 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index87].noGravity = true;
|
|
Main.dust[index87].velocity *= 5f;
|
|
int index88 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index88].velocity *= 3f;
|
|
}
|
|
int index89 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index89].velocity *= 0.4f;
|
|
++Main.gore[index89].velocity.X;
|
|
++Main.gore[index89].velocity.Y;
|
|
int index90 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index90].velocity *= 0.4f;
|
|
--Main.gore[index90].velocity.X;
|
|
++Main.gore[index90].velocity.Y;
|
|
int index91 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index91].velocity *= 0.4f;
|
|
++Main.gore[index91].velocity.X;
|
|
--Main.gore[index91].velocity.Y;
|
|
int index92 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index92].velocity *= 0.4f;
|
|
--Main.gore[index92].velocity.X;
|
|
--Main.gore[index92].velocity.Y;
|
|
}
|
|
else if (this.type == (int) sbyte.MaxValue)
|
|
{
|
|
if (this.life > 0)
|
|
return;
|
|
Gore.NewGore(this.position, this.velocity, 149);
|
|
Gore.NewGore(this.position, this.velocity, 150);
|
|
for (int index93 = 0; index93 < 10; ++index93)
|
|
{
|
|
int index94 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index94].velocity *= 1.4f;
|
|
}
|
|
for (int index95 = 0; index95 < 5; ++index95)
|
|
{
|
|
int index96 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index96].noGravity = true;
|
|
Main.dust[index96].velocity *= 5f;
|
|
int index97 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index97].velocity *= 3f;
|
|
}
|
|
int index98 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index98].velocity *= 0.4f;
|
|
++Main.gore[index98].velocity.X;
|
|
++Main.gore[index98].velocity.Y;
|
|
int index99 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index99].velocity *= 0.4f;
|
|
--Main.gore[index99].velocity.X;
|
|
++Main.gore[index99].velocity.Y;
|
|
int index100 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index100].velocity *= 0.4f;
|
|
++Main.gore[index100].velocity.X;
|
|
--Main.gore[index100].velocity.Y;
|
|
int index101 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index101].velocity *= 0.4f;
|
|
--Main.gore[index101].velocity.X;
|
|
--Main.gore[index101].velocity.Y;
|
|
}
|
|
else if (this.type >= 128 && this.type <= 131)
|
|
{
|
|
if (this.life > 0)
|
|
return;
|
|
Gore.NewGore(this.position, this.velocity, 147);
|
|
Gore.NewGore(this.position, this.velocity, 148);
|
|
for (int index102 = 0; index102 < 10; ++index102)
|
|
{
|
|
int index103 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index103].velocity *= 1.4f;
|
|
}
|
|
for (int index104 = 0; index104 < 5; ++index104)
|
|
{
|
|
int index105 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 2.5f);
|
|
Main.dust[index105].noGravity = true;
|
|
Main.dust[index105].velocity *= 5f;
|
|
int index106 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index106].velocity *= 3f;
|
|
}
|
|
int index107 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index107].velocity *= 0.4f;
|
|
++Main.gore[index107].velocity.X;
|
|
++Main.gore[index107].velocity.Y;
|
|
int index108 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index108].velocity *= 0.4f;
|
|
--Main.gore[index108].velocity.X;
|
|
++Main.gore[index108].velocity.Y;
|
|
int index109 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index109].velocity *= 0.4f;
|
|
++Main.gore[index109].velocity.X;
|
|
--Main.gore[index109].velocity.Y;
|
|
int index110 = Gore.NewGore(new Vector2(this.position.X, this.position.Y), new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index110].velocity *= 0.4f;
|
|
--Main.gore[index110].velocity.X;
|
|
--Main.gore[index110].velocity.Y;
|
|
}
|
|
else if (this.type == 23)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index111 = 0; (double) index111 < dmg / (double) this.lifeMax * 100.0; ++index111)
|
|
{
|
|
int Type = 25;
|
|
if (Main.rand.Next(2) == 0)
|
|
Type = 6;
|
|
Dust.NewDust(this.position, this.width, this.height, Type, (float) hitDirection, -1f);
|
|
int index112 = 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[index112].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
{
|
|
int Type = 25;
|
|
if (Main.rand.Next(2) == 0)
|
|
Type = 6;
|
|
Dust.NewDust(this.position, this.width, this.height, Type, (float) (2 * hitDirection), -2f);
|
|
}
|
|
for (int index113 = 0; index113 < 50; ++index113)
|
|
{
|
|
int index114 = 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: 2.5f);
|
|
Main.dust[index114].velocity *= 6f;
|
|
Main.dust[index114].noGravity = true;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 24)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index115 = 0; (double) index115 < dmg / (double) this.lifeMax * 100.0; ++index115)
|
|
{
|
|
int index116 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, this.velocity.X, this.velocity.Y, 100, Scale: 2.5f);
|
|
Main.dust[index116].noGravity = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index117 = 0; index117 < 50; ++index117)
|
|
{
|
|
int index118 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, this.velocity.X, this.velocity.Y, 100, Scale: 2.5f);
|
|
Main.dust[index118].noGravity = true;
|
|
Main.dust[index118].velocity *= 2f;
|
|
}
|
|
Gore.NewGore(this.position, this.velocity, 45);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 46);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 46);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 47);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 47);
|
|
}
|
|
}
|
|
else if (this.type == 25)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index119 = 0; index119 < 20; ++index119)
|
|
{
|
|
int index120 = 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[index120].noGravity = true;
|
|
Main.dust[index120].velocity *= 2f;
|
|
int index121 = 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[index121].velocity *= 2f;
|
|
}
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index122 = 0; index122 < 20; ++index122)
|
|
{
|
|
int index123 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100, Scale: 2f);
|
|
Main.dust[index123].noGravity = true;
|
|
Main.dust[index123].velocity *= 2f;
|
|
int index124 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 29, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100);
|
|
Main.dust[index124].velocity *= 2f;
|
|
}
|
|
}
|
|
else if (this.type == 26 || this.type == 27 || this.type == 28 || this.type == 29 || this.type == 73 || this.type == 111)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, 2.5f * (float) hitDirection, -2.5f);
|
|
Gore.NewGore(this.position, this.velocity, 48, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 49, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 20f), this.velocity, 49, this.scale);
|
|
if (this.type == 111)
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 131, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 50, this.scale);
|
|
Gore.NewGore(new Vector2(this.position.X, this.position.Y + 34f), this.velocity, 50, this.scale);
|
|
}
|
|
}
|
|
else if (this.type == 30)
|
|
{
|
|
Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 10);
|
|
for (int index125 = 0; index125 < 20; ++index125)
|
|
{
|
|
int index126 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 27, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100, Scale: 2f);
|
|
Main.dust[index126].noGravity = true;
|
|
Main.dust[index126].velocity *= 2f;
|
|
int index127 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 27, (float) (-(double) this.velocity.X * 0.200000002980232), (float) (-(double) this.velocity.Y * 0.200000002980232), 100);
|
|
Main.dust[index127].velocity *= 2f;
|
|
}
|
|
}
|
|
else if (this.type == 42)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -1f, this.alpha, this.color, this.scale);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 18, (float) hitDirection, -2f, this.alpha, this.color, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 70, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 71, this.scale);
|
|
}
|
|
}
|
|
else if (this.type == 43 || this.type == 56)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 40, (float) hitDirection, -1f, this.alpha, this.color, 1.2f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 40, (float) hitDirection, -2f, this.alpha, this.color, 1.2f);
|
|
Gore.NewGore(this.position, this.velocity, 72);
|
|
Gore.NewGore(this.position, this.velocity, 72);
|
|
}
|
|
}
|
|
else if (this.type == 48)
|
|
{
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity, 80);
|
|
Gore.NewGore(this.position, this.velocity, 81);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 62 && this.type != 66)
|
|
return;
|
|
if (this.life > 0)
|
|
{
|
|
for (int index = 0; (double) index < dmg / (double) this.lifeMax * 100.0; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) hitDirection, -1f);
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 50; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f);
|
|
Gore.NewGore(this.position, this.velocity, 93);
|
|
Gore.NewGore(this.position, this.velocity, 94);
|
|
Gore.NewGore(this.position, this.velocity, 94);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool AnyNPCs(int Type)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == Type)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static void SpawnSkeletron()
|
|
{
|
|
bool flag1 = true;
|
|
bool flag2 = false;
|
|
Vector2 vector2 = new Vector2();
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 35)
|
|
{
|
|
flag1 = false;
|
|
break;
|
|
}
|
|
}
|
|
for (int number = 0; number < 200; ++number)
|
|
{
|
|
if (Main.npc[number].active && Main.npc[number].type == 37)
|
|
{
|
|
flag2 = true;
|
|
Main.npc[number].ai[3] = 1f;
|
|
vector2 = Main.npc[number].position;
|
|
num1 = Main.npc[number].width;
|
|
num2 = Main.npc[number].height;
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
if (!flag1 || !flag2)
|
|
return;
|
|
int index1 = NPC.NewNPC((int) vector2.X + num1 / 2, (int) vector2.Y + num2 / 2, 35);
|
|
Main.npc[index1].netUpdate = true;
|
|
string str = "Skeletron";
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(str + " " + Lang.misc[16], (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(25, text: (str + " " + Lang.misc[16]), number: ((int) byte.MaxValue), number2: 175f, number3: 75f, number4: ((float) byte.MaxValue));
|
|
}
|
|
}
|
|
|
|
public static bool NearSpikeBall(int x, int y)
|
|
{
|
|
Rectangle rectangle1 = new Rectangle(x * 16 - 300, y * 16 - 300, 600, 600);
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].aiStyle == 20)
|
|
{
|
|
Rectangle rectangle2 = new Rectangle((int) Main.npc[index].ai[1], (int) Main.npc[index].ai[2], 20, 20);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void AddBuff(int type, int time, bool quiet = false)
|
|
{
|
|
if (this.buffImmune[type])
|
|
return;
|
|
if (!quiet)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 1:
|
|
NetMessage.SendData(53, number: this.whoAmI, number2: ((float) type), number3: ((float) time));
|
|
break;
|
|
case 2:
|
|
NetMessage.SendData(54, number: this.whoAmI);
|
|
break;
|
|
}
|
|
}
|
|
int index1 = -1;
|
|
for (int index2 = 0; index2 < 5; ++index2)
|
|
{
|
|
if (this.buffType[index2] == type)
|
|
{
|
|
if (this.buffTime[index2] >= time)
|
|
return;
|
|
this.buffTime[index2] = time;
|
|
return;
|
|
}
|
|
}
|
|
while (index1 == -1)
|
|
{
|
|
int b = -1;
|
|
for (int index3 = 0; index3 < 5; ++index3)
|
|
{
|
|
if (!Main.debuff[this.buffType[index3]])
|
|
{
|
|
b = index3;
|
|
break;
|
|
}
|
|
}
|
|
if (b == -1)
|
|
return;
|
|
for (int index4 = b; index4 < 5; ++index4)
|
|
{
|
|
if (this.buffType[index4] == 0)
|
|
{
|
|
index1 = index4;
|
|
break;
|
|
}
|
|
}
|
|
if (index1 == -1)
|
|
this.DelBuff(b);
|
|
}
|
|
this.buffType[index1] = type;
|
|
this.buffTime[index1] = time;
|
|
}
|
|
|
|
public void DelBuff(int b)
|
|
{
|
|
this.buffTime[b] = 0;
|
|
this.buffType[b] = 0;
|
|
for (int index1 = 0; index1 < 4; ++index1)
|
|
{
|
|
if (this.buffTime[index1] == 0 || this.buffType[index1] == 0)
|
|
{
|
|
for (int index2 = index1 + 1; index2 < 5; ++index2)
|
|
{
|
|
this.buffTime[index2 - 1] = this.buffTime[index2];
|
|
this.buffType[index2 - 1] = this.buffType[index2];
|
|
this.buffTime[index2] = 0;
|
|
this.buffType[index2] = 0;
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(54, number: this.whoAmI);
|
|
}
|
|
|
|
public void UpdateNPC(int i)
|
|
{
|
|
this.whoAmI = i;
|
|
if (!this.active)
|
|
return;
|
|
if (this.displayName == "")
|
|
this.displayName = this.name;
|
|
if (this.townNPC && Main.chrName[this.type] != "")
|
|
this.displayName = Main.chrName[this.type];
|
|
this.lifeRegen = 0;
|
|
this.poisoned = false;
|
|
this.onFire = false;
|
|
this.onFire2 = false;
|
|
this.confused = false;
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
if (this.buffType[index] > 0 && this.buffTime[index] > 0)
|
|
{
|
|
--this.buffTime[index];
|
|
if (this.buffType[index] == 20)
|
|
this.poisoned = true;
|
|
else if (this.buffType[index] == 24)
|
|
this.onFire = true;
|
|
else if (this.buffType[index] == 31)
|
|
this.confused = true;
|
|
else if (this.buffType[index] == 39)
|
|
this.onFire2 = true;
|
|
}
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
for (int b = 0; b < 5; ++b)
|
|
{
|
|
if (this.buffType[b] > 0 && this.buffTime[b] <= 0)
|
|
{
|
|
this.DelBuff(b);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(54, number: this.whoAmI);
|
|
}
|
|
}
|
|
}
|
|
if (!this.dontTakeDamage)
|
|
{
|
|
if (this.poisoned)
|
|
this.lifeRegen = -4;
|
|
if (this.onFire)
|
|
this.lifeRegen = -8;
|
|
if (this.onFire2)
|
|
this.lifeRegen = -12;
|
|
this.lifeRegenCount += this.lifeRegen;
|
|
while (this.lifeRegenCount >= 120)
|
|
{
|
|
this.lifeRegenCount -= 120;
|
|
if (this.life < this.lifeMax)
|
|
++this.life;
|
|
if (this.life > this.lifeMax)
|
|
this.life = this.lifeMax;
|
|
}
|
|
while (this.lifeRegenCount <= -120)
|
|
{
|
|
this.lifeRegenCount += 120;
|
|
int number = this.whoAmI;
|
|
if (this.realLife >= 0)
|
|
number = this.realLife;
|
|
--Main.npc[number].life;
|
|
if (Main.npc[number].life <= 0)
|
|
{
|
|
Main.npc[number].life = 1;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Main.npc[number].StrikeNPC(9999, 0.0f, 0);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(28, number: number, number2: 9999f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode != 1 && Main.bloodMoon)
|
|
{
|
|
if (this.type == 46)
|
|
this.Transform(47);
|
|
else if (this.type == 55)
|
|
this.Transform(57);
|
|
}
|
|
float num1 = 10f;
|
|
float num2 = 0.3f;
|
|
float num3 = (float) (Main.maxTilesX / 4200);
|
|
float num4 = (float) (((double) this.position.Y / 16.0 - (60.0 + 10.0 * (double) (num3 * num3))) / (Main.worldSurface / 6.0));
|
|
if ((double) num4 < 0.25)
|
|
num4 = 0.25f;
|
|
if ((double) num4 > 1.0)
|
|
num4 = 1f;
|
|
float num5 = num2 * num4;
|
|
if (this.wet)
|
|
{
|
|
num5 = 0.2f;
|
|
num1 = 7f;
|
|
}
|
|
if (this.soundDelay > 0)
|
|
--this.soundDelay;
|
|
if (this.life <= 0)
|
|
this.active = false;
|
|
this.oldTarget = this.target;
|
|
this.oldDirection = this.direction;
|
|
this.oldDirectionY = this.directionY;
|
|
this.AI();
|
|
if (this.type == 44)
|
|
Lighting.addLight((int) ((double) this.position.X + (double) (this.width / 2)) / 16, (int) ((double) this.position.Y + 4.0) / 16, 0.9f, 0.75f, 0.5f);
|
|
for (int index = 0; index < 256; ++index)
|
|
{
|
|
if (this.immune[index] > 0)
|
|
--this.immune[index];
|
|
}
|
|
if (!this.noGravity && !this.noTileCollide)
|
|
{
|
|
int index1 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int index2 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
if (Main.tile[index1, index2] == null)
|
|
{
|
|
num5 = 0.0f;
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
}
|
|
if (!this.noGravity)
|
|
{
|
|
this.velocity.Y += num5;
|
|
if ((double) this.velocity.Y > (double) num1)
|
|
this.velocity.Y = num1;
|
|
}
|
|
if ((double) this.velocity.X < 0.005 && (double) this.velocity.X > -0.005)
|
|
this.velocity.X = 0.0f;
|
|
if (Main.netMode != 1 && this.type != 37 && (this.friendly || this.type == 46 || this.type == 55 || this.type == 74))
|
|
{
|
|
if (this.life < this.lifeMax)
|
|
{
|
|
++this.friendlyRegen;
|
|
if (this.friendlyRegen > 300)
|
|
{
|
|
this.friendlyRegen = 0;
|
|
++this.life;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (this.immune[(int) byte.MaxValue] == 0)
|
|
{
|
|
Rectangle rectangle1 = new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height);
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && !Main.npc[index].friendly && Main.npc[index].damage > 0)
|
|
{
|
|
Rectangle rectangle2 = 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(rectangle2))
|
|
{
|
|
int damage = Main.npc[index].damage;
|
|
int num6 = 6;
|
|
int hitDirection = 1;
|
|
if ((double) Main.npc[index].position.X + (double) (Main.npc[index].width / 2) > (double) this.position.X + (double) (this.width / 2))
|
|
hitDirection = -1;
|
|
Main.npc[i].StrikeNPC(damage, (float) num6, hitDirection);
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(28, number: i, number2: ((float) damage), number3: ((float) num6), number4: ((float) hitDirection));
|
|
this.netUpdate = true;
|
|
this.immune[(int) byte.MaxValue] = 30;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!this.noTileCollide)
|
|
{
|
|
bool flag1 = Collision.LavaCollision(this.position, this.width, this.height);
|
|
if (flag1)
|
|
{
|
|
this.lavaWet = true;
|
|
if (!this.lavaImmune && !this.dontTakeDamage && Main.netMode != 1 && this.immune[(int) byte.MaxValue] == 0)
|
|
{
|
|
this.AddBuff(24, 420);
|
|
this.immune[(int) byte.MaxValue] = 30;
|
|
this.StrikeNPC(50, 0.0f, 0);
|
|
if (Main.netMode == 2 && Main.netMode != 0)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: 50f);
|
|
}
|
|
}
|
|
bool flag2;
|
|
if (this.type == 72)
|
|
{
|
|
flag2 = false;
|
|
this.wetCount = (byte) 0;
|
|
flag1 = false;
|
|
}
|
|
else
|
|
flag2 = Collision.WetCollision(this.position, this.width, this.height);
|
|
if (flag2)
|
|
{
|
|
if (this.onFire && !this.lavaWet && Main.netMode != 1)
|
|
{
|
|
for (int b = 0; b < 5; ++b)
|
|
{
|
|
if (this.buffType[b] == 24)
|
|
this.DelBuff(b);
|
|
}
|
|
}
|
|
if (!this.wet && this.wetCount == (byte) 0)
|
|
{
|
|
this.wetCount = (byte) 10;
|
|
if (!flag1)
|
|
{
|
|
for (int index3 = 0; index3 < 30; ++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, 33);
|
|
Main.dust[index4].velocity.Y -= 4f;
|
|
Main.dust[index4].velocity.X *= 2.5f;
|
|
Main.dust[index4].scale = 1.3f;
|
|
Main.dust[index4].alpha = 100;
|
|
Main.dust[index4].noGravity = true;
|
|
}
|
|
if (this.type != 1 && this.type != 59 && !this.noGravity)
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
else
|
|
{
|
|
for (int index5 = 0; index5 < 10; ++index5)
|
|
{
|
|
int index6 = 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[index6].velocity.Y -= 1.5f;
|
|
Main.dust[index6].velocity.X *= 2.5f;
|
|
Main.dust[index6].scale = 1.3f;
|
|
Main.dust[index6].alpha = 100;
|
|
Main.dust[index6].noGravity = true;
|
|
}
|
|
if (this.type != 1 && this.type != 59 && !this.noGravity)
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
}
|
|
this.wet = true;
|
|
}
|
|
else if (this.wet)
|
|
{
|
|
this.velocity.X *= 0.5f;
|
|
this.wet = false;
|
|
if (this.wetCount == (byte) 0)
|
|
{
|
|
this.wetCount = (byte) 10;
|
|
if (!this.lavaWet)
|
|
{
|
|
for (int index7 = 0; index7 < 30; ++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, 33);
|
|
Main.dust[index8].velocity.Y -= 4f;
|
|
Main.dust[index8].velocity.X *= 2.5f;
|
|
Main.dust[index8].scale = 1.3f;
|
|
Main.dust[index8].alpha = 100;
|
|
Main.dust[index8].noGravity = true;
|
|
}
|
|
if (this.type != 1 && this.type != 59 && !this.noGravity)
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
else
|
|
{
|
|
for (int index9 = 0; index9 < 10; ++index9)
|
|
{
|
|
int index10 = 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[index10].velocity.Y -= 1.5f;
|
|
Main.dust[index10].velocity.X *= 2.5f;
|
|
Main.dust[index10].scale = 1.3f;
|
|
Main.dust[index10].alpha = 100;
|
|
Main.dust[index10].noGravity = true;
|
|
}
|
|
if (this.type != 1 && this.type != 59 && !this.noGravity)
|
|
Main.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
}
|
|
}
|
|
if (!this.wet)
|
|
this.lavaWet = false;
|
|
if (this.wetCount > (byte) 0)
|
|
--this.wetCount;
|
|
bool flag3 = false;
|
|
if (this.aiStyle == 10)
|
|
flag3 = true;
|
|
if (this.aiStyle == 14)
|
|
flag3 = true;
|
|
if (this.aiStyle == 3 && this.directionY == 1)
|
|
flag3 = true;
|
|
this.oldVelocity = this.velocity;
|
|
this.collideX = false;
|
|
this.collideY = false;
|
|
if (this.wet)
|
|
{
|
|
Vector2 velocity = this.velocity;
|
|
this.velocity = Collision.TileCollision(this.position, this.velocity, this.width, this.height, flag3, flag3);
|
|
if (Collision.up)
|
|
this.velocity.Y = 0.01f;
|
|
Vector2 vector2 = this.velocity * 0.5f;
|
|
if ((double) this.velocity.X != (double) velocity.X)
|
|
{
|
|
vector2.X = this.velocity.X;
|
|
this.collideX = true;
|
|
}
|
|
if ((double) this.velocity.Y != (double) velocity.Y)
|
|
{
|
|
vector2.Y = this.velocity.Y;
|
|
this.collideY = true;
|
|
}
|
|
this.oldPosition = this.position;
|
|
this.position += vector2;
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 72)
|
|
{
|
|
Vector2 Position = new Vector2(this.position.X + (float) (this.width / 2), this.position.Y + (float) (this.height / 2));
|
|
int Width = 12;
|
|
int Height = 12;
|
|
Position.X -= (float) (Width / 2);
|
|
Position.Y -= (float) (Height / 2);
|
|
this.velocity = Collision.TileCollision(Position, this.velocity, Width, Height, true, true);
|
|
}
|
|
else
|
|
this.velocity = Collision.TileCollision(this.position, this.velocity, this.width, this.height, flag3, flag3);
|
|
if (Collision.up)
|
|
this.velocity.Y = 0.01f;
|
|
if ((double) this.oldVelocity.X != (double) this.velocity.X)
|
|
this.collideX = true;
|
|
if ((double) this.oldVelocity.Y != (double) this.velocity.Y)
|
|
this.collideY = true;
|
|
this.oldPosition = this.position;
|
|
this.position += this.velocity;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.oldPosition = this.position;
|
|
this.position += this.velocity;
|
|
}
|
|
if (Main.netMode != 1 && !this.noTileCollide && this.lifeMax > 1 && Collision.SwitchTiles(this.position, this.width, this.height, this.oldPosition) && this.type == 46)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 400f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
if (!this.active)
|
|
this.netUpdate = true;
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (this.townNPC)
|
|
this.netSpam = 0;
|
|
if (this.netUpdate2)
|
|
this.netUpdate = true;
|
|
if (!this.active)
|
|
this.netSpam = 0;
|
|
if (this.netUpdate)
|
|
{
|
|
if (this.netSpam <= 180)
|
|
{
|
|
this.netSpam += 60;
|
|
NetMessage.SendData(23, number: i);
|
|
this.netUpdate2 = false;
|
|
}
|
|
else
|
|
this.netUpdate2 = true;
|
|
}
|
|
if (this.netSpam > 0)
|
|
--this.netSpam;
|
|
if (this.active && this.townNPC && NPC.TypeToNum(this.type) != -1)
|
|
{
|
|
if (this.homeless != this.oldHomeless || this.homeTileX != this.oldHomeTileX || this.homeTileY != this.oldHomeTileY)
|
|
{
|
|
int num7 = 0;
|
|
if (this.homeless)
|
|
num7 = 1;
|
|
NetMessage.SendData(60, number: i, number2: ((float) Main.npc[i].homeTileX), number3: ((float) Main.npc[i].homeTileY), number4: ((float) num7));
|
|
}
|
|
this.oldHomeless = this.homeless;
|
|
this.oldHomeTileX = this.homeTileX;
|
|
this.oldHomeTileY = this.homeTileY;
|
|
}
|
|
}
|
|
this.FindFrame();
|
|
this.CheckActive();
|
|
this.netUpdate = false;
|
|
this.justHit = false;
|
|
if (this.type == 120 || this.type == 137 || this.type == 138)
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
{
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
Lighting.addLight((int) this.position.X / 16, (int) this.position.Y / 16, 0.3f, 0.0f, 0.2f);
|
|
}
|
|
this.oldPos[0] = this.position;
|
|
}
|
|
else 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;
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 125 && this.type != 126 && this.type != (int) sbyte.MaxValue && this.type != 128 && this.type != 129 && this.type != 130 && this.type != 131 && this.type != 139 && this.type != 140)
|
|
return;
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldPos[0] = this.position;
|
|
}
|
|
}
|
|
|
|
public Color GetAlpha(Color newColor)
|
|
{
|
|
float num = (float) ((int) byte.MaxValue - this.alpha) / (float) byte.MaxValue;
|
|
int r = (int) ((double) newColor.R * (double) num);
|
|
int g = (int) ((double) newColor.G * (double) num);
|
|
int b = (int) ((double) newColor.B * (double) num);
|
|
int a = (int) newColor.A - this.alpha;
|
|
if (this.type == 25 || this.type == 30 || this.type == 33 || this.type == 59 || this.type == 60)
|
|
return new Color(200, 200, 200, 0);
|
|
if (this.type == 72)
|
|
{
|
|
r = (int) newColor.R;
|
|
g = (int) newColor.G;
|
|
b = (int) newColor.B;
|
|
}
|
|
else if (this.type == 64 || this.type == 63 || this.type == 75 || this.type == 103)
|
|
{
|
|
r = (int) ((double) newColor.R * 1.5);
|
|
g = (int) ((double) newColor.G * 1.5);
|
|
b = (int) ((double) newColor.B * 1.5);
|
|
if (r > (int) byte.MaxValue)
|
|
r = (int) byte.MaxValue;
|
|
if (g > (int) byte.MaxValue)
|
|
g = (int) byte.MaxValue;
|
|
if (b > (int) byte.MaxValue)
|
|
b = (int) byte.MaxValue;
|
|
}
|
|
if (a < 0)
|
|
a = 0;
|
|
if (a > (int) byte.MaxValue)
|
|
a = (int) byte.MaxValue;
|
|
return new Color(r, g, b, a);
|
|
}
|
|
|
|
public Color GetColor(Color newColor)
|
|
{
|
|
int r = (int) this.color.R - ((int) byte.MaxValue - (int) newColor.R);
|
|
int g = (int) this.color.G - ((int) byte.MaxValue - (int) newColor.G);
|
|
int b = (int) this.color.B - ((int) byte.MaxValue - (int) newColor.B);
|
|
int a = (int) this.color.A - ((int) byte.MaxValue - (int) newColor.A);
|
|
if (r < 0)
|
|
r = 0;
|
|
if (r > (int) byte.MaxValue)
|
|
r = (int) byte.MaxValue;
|
|
if (g < 0)
|
|
g = 0;
|
|
if (g > (int) byte.MaxValue)
|
|
g = (int) byte.MaxValue;
|
|
if (b < 0)
|
|
b = 0;
|
|
if (b > (int) byte.MaxValue)
|
|
b = (int) byte.MaxValue;
|
|
if (a < 0)
|
|
a = 0;
|
|
if (a > (int) byte.MaxValue)
|
|
a = (int) byte.MaxValue;
|
|
return new Color(r, g, b, a);
|
|
}
|
|
|
|
public string GetChat()
|
|
{
|
|
Recipe.FindRecipes();
|
|
string str1 = Main.chrName[18];
|
|
string str2 = Main.chrName[17];
|
|
string str3 = Main.chrName[19];
|
|
string str4 = Main.chrName[20];
|
|
string str5 = Main.chrName[38];
|
|
string str6 = Main.chrName[54];
|
|
string str7 = Main.chrName[22];
|
|
string str8 = Main.chrName[108];
|
|
string str9 = Main.chrName[107];
|
|
string str10 = Main.chrName[124];
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active)
|
|
{
|
|
if (Main.npc[index].type == 17)
|
|
flag1 = true;
|
|
else if (Main.npc[index].type == 18)
|
|
flag2 = true;
|
|
else if (Main.npc[index].type == 19)
|
|
flag3 = true;
|
|
else if (Main.npc[index].type == 20)
|
|
flag4 = true;
|
|
else if (Main.npc[index].type == 37)
|
|
flag5 = true;
|
|
else if (Main.npc[index].type == 38)
|
|
flag6 = true;
|
|
else if (Main.npc[index].type == 124)
|
|
flag7 = true;
|
|
else if (Main.npc[index].type == 107)
|
|
flag8 = true;
|
|
else if (Main.npc[index].type == 2)
|
|
flag9 = true;
|
|
}
|
|
}
|
|
string str11 = "";
|
|
if (this.type == 17)
|
|
{
|
|
if (!NPC.downedBoss1 && Main.rand.Next(3) == 0)
|
|
str11 = Main.player[Main.myPlayer].statLifeMax >= 200 ? (Main.player[Main.myPlayer].statDefense > 10 ? Lang.dialog(3) : Lang.dialog(2)) : Lang.dialog(1);
|
|
else if (Main.dayTime)
|
|
{
|
|
if (Main.time < 16200.0)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(4);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(5);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(6);
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.time > 37800.0)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(7);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(8);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(9);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(10);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(11);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(12);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.bloodMoon)
|
|
{
|
|
if (flag2 && flag7 && Main.rand.Next(3) == 0)
|
|
{
|
|
str11 = Lang.dialog(13);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(14);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(15);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(16);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(17);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.time < 9720.0)
|
|
str11 = Main.rand.Next(2) != 0 ? Lang.dialog(19) : Lang.dialog(18);
|
|
else if (Main.time > 22680.0)
|
|
{
|
|
str11 = Main.rand.Next(2) != 0 ? Lang.dialog(21) : Lang.dialog(20);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(22);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(23);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(24);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
if (Main.bloodMoon)
|
|
{
|
|
if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax * 0.66)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(25);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(26);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(27);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(28);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(29);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(30);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(31);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.rand.Next(3) == 0 && !NPC.downedBoss3)
|
|
str11 = Lang.dialog(32);
|
|
else if (flag6 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(33);
|
|
else if (flag3 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(34);
|
|
else if (flag9 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(35);
|
|
else if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax * 0.33)
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(36);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(37);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(38);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(39);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(40);
|
|
break;
|
|
}
|
|
}
|
|
else if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax * 0.66)
|
|
{
|
|
switch (Main.rand.Next(7))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(41);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(42);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(43);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(44);
|
|
break;
|
|
case 4:
|
|
str11 = Lang.dialog(45);
|
|
break;
|
|
case 5:
|
|
str11 = Lang.dialog(46);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(47);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(48);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(49);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(50);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(51);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
if (NPC.downedBoss3 && !Main.hardMode)
|
|
str11 = Lang.dialog(58);
|
|
else if (flag2 && Main.rand.Next(5) == 0)
|
|
str11 = Lang.dialog(59);
|
|
else if (flag2 && Main.rand.Next(5) == 0)
|
|
str11 = Lang.dialog(60);
|
|
else if (flag4 && Main.rand.Next(5) == 0)
|
|
str11 = Lang.dialog(61);
|
|
else if (flag6 && Main.rand.Next(5) == 0)
|
|
str11 = Lang.dialog(62);
|
|
else if (flag6 && Main.rand.Next(5) == 0)
|
|
str11 = Lang.dialog(63);
|
|
else if (Main.bloodMoon)
|
|
{
|
|
str11 = Main.rand.Next(2) != 0 ? Lang.dialog(65) : Lang.dialog(64);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(66);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(67);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(68);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
if (!NPC.downedBoss2 && Main.rand.Next(3) == 0)
|
|
str11 = Lang.dialog(69);
|
|
else if (flag3 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(70);
|
|
else if (flag1 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(71);
|
|
else if (flag5 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(72);
|
|
else if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(73);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(74);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(75);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(76);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(77);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(78);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(79);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(80);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(81);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 37)
|
|
{
|
|
if (Main.dayTime)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(82);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(83);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(84);
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.player[Main.myPlayer].statLifeMax < 300 || Main.player[Main.myPlayer].statDefense < 10)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(85);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(86);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(87);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(88);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(89);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(90);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(91);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(92);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 38)
|
|
{
|
|
if (!NPC.downedBoss2 && Main.rand.Next(3) == 0)
|
|
Lang.dialog(93);
|
|
if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(94);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(95);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(96);
|
|
break;
|
|
}
|
|
}
|
|
else if (flag3 && Main.rand.Next(5) == 0)
|
|
str11 = Lang.dialog(97);
|
|
else if (flag3 && Main.rand.Next(5) == 0)
|
|
str11 = Lang.dialog(98);
|
|
else if (flag2 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(99);
|
|
else if (flag4 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(100);
|
|
else if (!Main.dayTime)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(101);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(102);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(103);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(104);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(105);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(106);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(107);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(108);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(109);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 54)
|
|
{
|
|
if (!flag7 && Main.rand.Next(2) == 0)
|
|
str11 = Lang.dialog(110);
|
|
else if (Main.bloodMoon)
|
|
str11 = Lang.dialog(111);
|
|
else if (flag2 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(112);
|
|
else if (Main.player[Main.myPlayer].head == 24)
|
|
{
|
|
str11 = Lang.dialog(113);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(6))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(114);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(115);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(116);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(117);
|
|
break;
|
|
case 4:
|
|
str11 = Lang.dialog(118);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(119);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 105)
|
|
str11 = Lang.dialog(120);
|
|
else if (this.type == 107)
|
|
{
|
|
if (this.homeless)
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(121);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(122);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(123);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(124);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(125);
|
|
break;
|
|
}
|
|
}
|
|
else if (flag7 && Main.rand.Next(4) == 0)
|
|
str11 = Lang.dialog(126);
|
|
else if (!Main.dayTime)
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog((int) sbyte.MaxValue);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(128);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(129);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(130);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(131);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(132);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(133);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(134);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(135);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(136);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 106)
|
|
str11 = Lang.dialog(137);
|
|
else if (this.type == 108)
|
|
{
|
|
if (this.homeless)
|
|
{
|
|
int num = Main.rand.Next(3);
|
|
if (num == 0)
|
|
str11 = Lang.dialog(138);
|
|
else if (num == 1 && !Main.player[Main.myPlayer].male)
|
|
{
|
|
str11 = Lang.dialog(139);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 1:
|
|
str11 = Lang.dialog(140);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(141);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.player[Main.myPlayer].male && flag9 && Main.rand.Next(6) == 0)
|
|
str11 = Lang.dialog(142);
|
|
else if (Main.player[Main.myPlayer].male && flag6 && Main.rand.Next(6) == 0)
|
|
str11 = Lang.dialog(143);
|
|
else if (Main.player[Main.myPlayer].male && flag8 && Main.rand.Next(6) == 0)
|
|
str11 = Lang.dialog(144);
|
|
else if (!Main.player[Main.myPlayer].male && flag2 && Main.rand.Next(6) == 0)
|
|
str11 = Lang.dialog(145);
|
|
else if (!Main.player[Main.myPlayer].male && flag7 && Main.rand.Next(6) == 0)
|
|
str11 = Lang.dialog(146);
|
|
else if (!Main.player[Main.myPlayer].male && flag4 && Main.rand.Next(6) == 0)
|
|
str11 = Lang.dialog(147);
|
|
else if (!Main.dayTime)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(148);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(149);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(150);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(151);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(152);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(153);
|
|
break;
|
|
case 3:
|
|
str11 = Lang.dialog(154);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(155);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 123)
|
|
str11 = Lang.dialog(156);
|
|
else if (this.type == 124)
|
|
{
|
|
if (this.homeless)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(157);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(158);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(159);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(160);
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(161);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(162);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(163);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(164);
|
|
break;
|
|
}
|
|
}
|
|
else if (flag8 && Main.rand.Next(6) == 0)
|
|
str11 = Lang.dialog(165);
|
|
else if (flag3 && Main.rand.Next(6) == 0)
|
|
{
|
|
str11 = Lang.dialog(166);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(167);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(168);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(169);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 22)
|
|
{
|
|
if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(170);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(171);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(172);
|
|
break;
|
|
}
|
|
}
|
|
else if (!Main.dayTime)
|
|
{
|
|
str11 = Lang.dialog(173);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(174);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(175);
|
|
break;
|
|
default:
|
|
str11 = Lang.dialog(176);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 142)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str11 = Lang.dialog(224);
|
|
break;
|
|
case 1:
|
|
str11 = Lang.dialog(225);
|
|
break;
|
|
case 2:
|
|
str11 = Lang.dialog(226);
|
|
break;
|
|
}
|
|
}
|
|
return str11;
|
|
}
|
|
|
|
public object Clone() => this.MemberwiseClone();
|
|
}
|
|
}
|