50859 lines
1.8 MiB
50859 lines
1.8 MiB
// Decompiled with JetBrains decompiler
|
|
// Type: Terraria.NPC
|
|
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
|
|
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
|
|
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
|
|
|
|
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using ReLogic.Utilities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using Terraria.Audio;
|
|
using Terraria.Chat;
|
|
using Terraria.DataStructures;
|
|
using Terraria.Enums;
|
|
using Terraria.GameContent;
|
|
using Terraria.GameContent.Achievements;
|
|
using Terraria.GameContent.Creative;
|
|
using Terraria.GameContent.Drawing;
|
|
using Terraria.GameContent.Events;
|
|
using Terraria.GameContent.ItemDropRules;
|
|
using Terraria.GameContent.RGB;
|
|
using Terraria.GameContent.UI;
|
|
using Terraria.ID;
|
|
using Terraria.Localization;
|
|
using Terraria.Utilities;
|
|
using Terraria.WorldBuilding;
|
|
|
|
namespace Terraria
|
|
{
|
|
public class NPC : Entity
|
|
{
|
|
private const int NPC_TARGETS_START = 300;
|
|
public bool IsABestiaryIconDummy;
|
|
public bool ForcePartyHatOn;
|
|
private float waterMovementSpeed = 0.5f;
|
|
private float lavaMovementSpeed = 0.5f;
|
|
private float honeyMovementSpeed = 0.25f;
|
|
public static readonly int[,,,] MoonLordAttacksArray = NPC.InitializeMoonLordAttacks();
|
|
public static readonly int[,] MoonLordAttacksArray2 = NPC.InitializeMoonLordAttacks2();
|
|
public static int MoonLordFightingDistance = 4500;
|
|
public static int MoonLordCountdown = 0;
|
|
public const int MaxMoonLordCountdown = 3600;
|
|
public int teleportStyle;
|
|
public float teleportTime;
|
|
public static int immuneTime = 20;
|
|
public static int maxAI = 4;
|
|
public int netSpam;
|
|
public static int goldCritterChance = 400;
|
|
public static int[] killCount = new int[663];
|
|
public static float waveKills = 0.0f;
|
|
public static int waveNumber = 0;
|
|
public const float nameOverIncrement = 0.025f;
|
|
public const float nameOverDistance = 350f;
|
|
public float nameOver;
|
|
public bool SpawnedFromStatue;
|
|
public bool dripping;
|
|
public bool drippingSlime;
|
|
public bool drippingSparkleSlime;
|
|
public static readonly int AFKTimeNeededForNoWorms = 300;
|
|
public int altTexture;
|
|
public int townNpcVariationIndex;
|
|
public Vector2 netOffset = Vector2.Zero;
|
|
public short catchItem;
|
|
public short releaseOwner = (short) byte.MaxValue;
|
|
public int rarity;
|
|
public static bool taxCollector = false;
|
|
public bool[] playerInteraction = new bool[256];
|
|
public int lastInteraction = (int) byte.MaxValue;
|
|
public float takenDamageMultiplier = 1f;
|
|
public static bool freeCake = false;
|
|
private static int spawnSpaceX = 3;
|
|
private static int spawnSpaceY = 3;
|
|
public float gfxOffY;
|
|
public float stepSpeed;
|
|
private static float gravity = 0.3f;
|
|
public bool teleporting;
|
|
private static int maxAttack = 20;
|
|
private static int[] attackNPC = new int[NPC.maxAttack];
|
|
public bool stairFall;
|
|
public static int fireFlyFriendly = 0;
|
|
public static int fireFlyChance = 0;
|
|
public static int fireFlyMultiple = 0;
|
|
public static int butterflyChance = 0;
|
|
private byte netStream;
|
|
private byte[] streamPlayer = new byte[(int) byte.MaxValue];
|
|
private bool needsUniqueInfoUpdate = true;
|
|
public Vector2[] oldPos = new Vector2[10];
|
|
public float[] oldRot = new float[10];
|
|
public bool setFrameSize;
|
|
public static int golemBoss = -1;
|
|
public static int plantBoss = -1;
|
|
public static int crimsonBoss = -1;
|
|
public int netSkip;
|
|
public bool netAlways;
|
|
public int realLife = -1;
|
|
private string _givenName = "";
|
|
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 * 2.1);
|
|
private static int activeRangeY = (int) ((double) NPC.sHeight * 2.1);
|
|
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 dontCountMe;
|
|
public const int maxBuffs = 5;
|
|
public int[] buffType = new int[5];
|
|
public int[] buffTime = new int[5];
|
|
public bool[] buffImmune = new bool[323];
|
|
public bool midas;
|
|
public bool ichor;
|
|
public bool onFire;
|
|
public bool onFire2;
|
|
public bool onFrostBurn;
|
|
public bool poisoned;
|
|
public bool markedByScytheWhip;
|
|
public bool markedByThornWhip;
|
|
public bool markedByFireWhip;
|
|
public bool markedByRainbowWhip;
|
|
public bool markedByBlandWhip;
|
|
public bool markedBySwordWhip;
|
|
public bool markedByMaceWhip;
|
|
public bool venom;
|
|
public bool shadowFlame;
|
|
public bool soulDrain;
|
|
public int lifeRegen;
|
|
public int lifeRegenCount;
|
|
public int lifeRegenExpectedLossPerSecond = -1;
|
|
public bool confused;
|
|
public bool loveStruck;
|
|
public bool stinky;
|
|
public bool dryadWard;
|
|
public bool immortal;
|
|
public bool chaseable = true;
|
|
public bool canGhostHeal = true;
|
|
public bool javelined;
|
|
public bool celled;
|
|
public bool dryadBane;
|
|
public bool daybreak;
|
|
public bool dontTakeDamageFromHostiles;
|
|
public bool betsysCurse;
|
|
public bool oiled;
|
|
public static bool savedTaxCollector = false;
|
|
public static bool savedGoblin = false;
|
|
public static bool savedWizard = false;
|
|
public static bool savedMech = false;
|
|
public static bool savedAngler = false;
|
|
public static bool savedStylist = false;
|
|
public static bool savedBartender = false;
|
|
public static bool savedGolfer = false;
|
|
public static bool boughtCat = false;
|
|
public static bool boughtDog = false;
|
|
public static bool boughtBunny = false;
|
|
public static bool combatBookWasUsed = false;
|
|
public static bool downedBoss1 = false;
|
|
public static bool downedBoss2 = false;
|
|
public static bool downedBoss3 = false;
|
|
public static bool downedQueenBee = false;
|
|
public static bool downedSlimeKing = false;
|
|
public static bool downedGoblins = false;
|
|
public static bool downedFrost = false;
|
|
public static bool downedPirates = false;
|
|
public static bool downedClown = false;
|
|
public static bool downedPlantBoss = false;
|
|
public static bool downedGolemBoss = false;
|
|
public static bool downedMartians = false;
|
|
public static bool downedFishron = false;
|
|
public static bool downedHalloweenTree = false;
|
|
public static bool downedHalloweenKing = false;
|
|
public static bool downedChristmasIceQueen = false;
|
|
public static bool downedChristmasTree = false;
|
|
public static bool downedChristmasSantank = false;
|
|
public static bool downedAncientCultist = false;
|
|
public static bool downedMoonlord = false;
|
|
public static bool downedTowerSolar = false;
|
|
public static bool downedTowerVortex = false;
|
|
public static bool downedTowerNebula = false;
|
|
public static bool downedTowerStardust = false;
|
|
public static bool downedEmpressOfLight = false;
|
|
public static bool downedQueenSlime = false;
|
|
public static int ShieldStrengthTowerSolar = 0;
|
|
public static int ShieldStrengthTowerVortex = 0;
|
|
public static int ShieldStrengthTowerNebula = 0;
|
|
public static int ShieldStrengthTowerStardust = 0;
|
|
public static int LunarShieldPowerNormal = 100;
|
|
public static int LunarShieldPowerExpert = 150;
|
|
public static bool TowerActiveSolar = false;
|
|
public static bool TowerActiveVortex = false;
|
|
public static bool TowerActiveNebula = false;
|
|
public static bool TowerActiveStardust = false;
|
|
public static bool LunarApocalypseIsUp = false;
|
|
public static bool downedMechBossAny = false;
|
|
public static bool downedMechBoss1 = false;
|
|
public static bool downedMechBoss2 = false;
|
|
public static bool downedMechBoss3 = false;
|
|
public static bool[] npcsFoundForCheckActive = new bool[663];
|
|
public static int[] lazyNPCOwnedProjectileSearchArray = new int[200];
|
|
private static int spawnRate = NPC.defaultSpawnRate;
|
|
private static int maxSpawns = NPC.defaultMaxSpawns;
|
|
public int soundDelay;
|
|
public static CoinLossRevengeSystem RevengeManager = new CoinLossRevengeSystem();
|
|
public int[] immune = new int[256];
|
|
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 bool coldDamage;
|
|
public bool trapImmune;
|
|
public LegacySoundStyle HitSound;
|
|
public LegacySoundStyle DeathSound;
|
|
public int life;
|
|
public int lifeMax;
|
|
public Microsoft.Xna.Framework.Rectangle targetRect;
|
|
public double frameCounter;
|
|
public Microsoft.Xna.Framework.Rectangle frame;
|
|
public Color color;
|
|
public int alpha;
|
|
public bool hide;
|
|
public float scale = 1f;
|
|
public float knockBackResist = 1f;
|
|
public int oldDirectionY;
|
|
public int oldTarget;
|
|
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 int extraValue;
|
|
public bool dontTakeDamage;
|
|
public int netID;
|
|
public int statsAreScaledForThisManyPlayers;
|
|
public float strengthMultiplier = 1f;
|
|
public bool townNPC;
|
|
public static bool travelNPC = false;
|
|
public bool homeless;
|
|
public int homeTileX = -1;
|
|
public int homeTileY = -1;
|
|
public int housingCategory;
|
|
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 int breath;
|
|
public const int breathMax = 200;
|
|
public int breathCounter;
|
|
public bool reflectsProjectiles;
|
|
public int lastPortalColorIndex;
|
|
public bool despawnEncouraged;
|
|
public static int[,] cavernMonsterType = new int[2, 3];
|
|
private static bool EoCKilledToday;
|
|
private static bool WoFKilledToday;
|
|
public static bool fairyLog = false;
|
|
private static int ignorePlayerInteractions = 0;
|
|
public static int ladyBugGoodLuckTime = 43200;
|
|
public static int ladyBugBadLuckTime = -10800;
|
|
private static int ladyBugRainTime = 1800;
|
|
public static int offSetDelayTime = 60;
|
|
|
|
public bool CanTalk => this.isLikeATownNPC && this.aiStyle == 7 && (double) this.velocity.Y == 0.0 && !NPCID.Sets.IsTownPet[this.type];
|
|
|
|
public bool CanBeTalkedTo => this.isLikeATownNPC && this.aiStyle == 7 && (double) this.velocity.Y == 0.0;
|
|
|
|
public bool HasValidTarget
|
|
{
|
|
get
|
|
{
|
|
if (this.HasPlayerTarget && Main.player[this.target].active && !Main.player[this.target].dead && !Main.player[this.target].ghost)
|
|
return true;
|
|
return this.SupportsNPCTargets && this.HasNPCTarget && Main.npc[this.TranslatedTargetIndex].active;
|
|
}
|
|
}
|
|
|
|
public bool HasPlayerTarget => this.target >= 0 && this.target < (int) byte.MaxValue;
|
|
|
|
public bool HasNPCTarget => this.target >= 300 && this.target < 500;
|
|
|
|
public bool SupportsNPCTargets => NPCID.Sets.UsesNewTargetting[this.type];
|
|
|
|
public int TranslatedTargetIndex => this.HasNPCTarget ? this.target - 300 : this.target;
|
|
|
|
public int WhoAmIToTargettingIndex => this.whoAmI + 300;
|
|
|
|
public NPCAimedTarget GetTargetData(bool ignorePlayerTankPets = true)
|
|
{
|
|
if (!this.HasValidTarget)
|
|
return new NPCAimedTarget();
|
|
return this.SupportsNPCTargets && this.HasNPCTarget ? new NPCAimedTarget(Main.npc[this.TranslatedTargetIndex]) : new NPCAimedTarget(Main.player[this.target], ignorePlayerTankPets);
|
|
}
|
|
|
|
public static int[,,,] InitializeMoonLordAttacks()
|
|
{
|
|
int[,,,] numArray;
|
|
if (NPC.MoonLordAttacksArray != null)
|
|
{
|
|
numArray = NPC.MoonLordAttacksArray;
|
|
for (int index1 = 0; index1 < numArray.GetLength(0); ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < numArray.GetLength(1); ++index2)
|
|
{
|
|
for (int index3 = 0; index3 < numArray.GetLength(2); ++index3)
|
|
{
|
|
for (int index4 = 0; index4 < numArray.GetLength(3); ++index4)
|
|
numArray[index1, index2, index3, index4] = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
numArray = new int[3, 3, 2, 5];
|
|
numArray[0, 0, 0, 0] = 0;
|
|
numArray[0, 0, 1, 0] = 50;
|
|
numArray[0, 0, 0, 1] = 1;
|
|
numArray[0, 0, 1, 1] = 70;
|
|
numArray[0, 0, 0, 2] = 2;
|
|
numArray[0, 0, 1, 2] = 330;
|
|
numArray[0, 0, 0, 3] = 0;
|
|
numArray[0, 0, 1, 3] = 60;
|
|
numArray[0, 0, 0, 4] = 3;
|
|
numArray[0, 0, 1, 4] = 90;
|
|
numArray[0, 1, 0, 0] = 1;
|
|
numArray[0, 1, 1, 0] = 70;
|
|
numArray[0, 1, 0, 1] = 0;
|
|
numArray[0, 1, 1, 1] = 50;
|
|
numArray[0, 1, 0, 2] = 3;
|
|
numArray[0, 1, 1, 2] = 90;
|
|
numArray[0, 1, 0, 3] = 0;
|
|
numArray[0, 1, 1, 3] = 60;
|
|
numArray[0, 1, 0, 4] = 2;
|
|
numArray[0, 1, 1, 4] = 330;
|
|
numArray[0, 2, 0, 0] = 3;
|
|
numArray[0, 2, 1, 0] = 180;
|
|
numArray[0, 2, 0, 1] = 0;
|
|
numArray[0, 2, 1, 1] = 30;
|
|
numArray[0, 2, 0, 2] = 2;
|
|
numArray[0, 2, 1, 2] = 435;
|
|
numArray[0, 2, 0, 3] = 3;
|
|
numArray[0, 2, 1, 3] = 180;
|
|
numArray[0, 2, 0, 4] = 1;
|
|
numArray[0, 2, 1, 4] = 375;
|
|
numArray[1, 0, 0, 0] = 0;
|
|
numArray[1, 0, 1, 0] = 0;
|
|
numArray[1, 0, 0, 1] = 0;
|
|
numArray[1, 0, 1, 1] = 0;
|
|
numArray[1, 0, 0, 2] = 0;
|
|
numArray[1, 0, 1, 2] = 0;
|
|
numArray[1, 0, 0, 3] = 0;
|
|
numArray[1, 0, 1, 3] = 0;
|
|
numArray[1, 0, 0, 4] = 0;
|
|
numArray[1, 0, 1, 4] = 0;
|
|
numArray[1, 1, 0, 0] = 0;
|
|
numArray[1, 1, 1, 0] = 0;
|
|
numArray[1, 1, 0, 1] = 0;
|
|
numArray[1, 1, 1, 1] = 0;
|
|
numArray[1, 1, 0, 2] = 0;
|
|
numArray[1, 1, 1, 2] = 0;
|
|
numArray[1, 1, 0, 3] = 0;
|
|
numArray[1, 1, 1, 3] = 0;
|
|
numArray[1, 1, 0, 4] = 0;
|
|
numArray[1, 1, 1, 4] = 0;
|
|
numArray[1, 2, 0, 0] = 0;
|
|
numArray[1, 2, 1, 0] = 0;
|
|
numArray[1, 2, 0, 1] = 0;
|
|
numArray[1, 2, 1, 1] = 0;
|
|
numArray[1, 2, 0, 2] = 0;
|
|
numArray[1, 2, 1, 2] = 0;
|
|
numArray[1, 2, 0, 3] = 0;
|
|
numArray[1, 2, 1, 3] = 0;
|
|
numArray[1, 2, 0, 4] = 0;
|
|
numArray[1, 2, 1, 4] = 0;
|
|
numArray[2, 0, 0, 0] = 0;
|
|
numArray[2, 0, 1, 0] = 0;
|
|
numArray[2, 0, 0, 1] = 0;
|
|
numArray[2, 0, 1, 1] = 0;
|
|
numArray[2, 0, 0, 2] = 0;
|
|
numArray[2, 0, 1, 2] = 0;
|
|
numArray[2, 0, 0, 3] = 0;
|
|
numArray[2, 0, 1, 3] = 0;
|
|
numArray[2, 0, 0, 4] = 0;
|
|
numArray[2, 0, 1, 4] = 0;
|
|
numArray[2, 1, 0, 0] = 0;
|
|
numArray[2, 1, 1, 0] = 0;
|
|
numArray[2, 1, 0, 1] = 0;
|
|
numArray[2, 1, 1, 1] = 0;
|
|
numArray[2, 1, 0, 2] = 0;
|
|
numArray[2, 1, 1, 2] = 0;
|
|
numArray[2, 1, 0, 3] = 0;
|
|
numArray[2, 1, 1, 3] = 0;
|
|
numArray[2, 1, 0, 4] = 0;
|
|
numArray[2, 1, 1, 4] = 0;
|
|
numArray[2, 2, 0, 0] = 0;
|
|
numArray[2, 2, 1, 0] = 0;
|
|
numArray[2, 2, 0, 1] = 0;
|
|
numArray[2, 2, 1, 1] = 0;
|
|
numArray[2, 2, 0, 2] = 0;
|
|
numArray[2, 2, 1, 2] = 0;
|
|
numArray[2, 2, 0, 3] = 0;
|
|
numArray[2, 2, 1, 3] = 0;
|
|
numArray[2, 2, 0, 4] = 0;
|
|
numArray[2, 2, 1, 4] = 0;
|
|
NPC.InitializeMoonLordAttacks2();
|
|
return numArray;
|
|
}
|
|
|
|
public static int[,] InitializeMoonLordAttacks2()
|
|
{
|
|
int[,] numArray;
|
|
if (NPC.MoonLordAttacksArray2 != null)
|
|
{
|
|
numArray = NPC.MoonLordAttacksArray2;
|
|
for (int index1 = 0; index1 < numArray.GetLength(0); ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < numArray.GetLength(1); ++index2)
|
|
numArray[index1, index2] = 0;
|
|
}
|
|
}
|
|
else
|
|
numArray = new int[2, 10];
|
|
numArray[0, 0] = 0;
|
|
numArray[1, 0] = 90;
|
|
numArray[0, 1] = 1;
|
|
numArray[1, 1] = 90;
|
|
numArray[0, 2] = 0;
|
|
numArray[1, 2] = 90;
|
|
numArray[0, 3] = 2;
|
|
numArray[1, 3] = 135;
|
|
numArray[0, 4] = 0;
|
|
numArray[1, 4] = 90;
|
|
numArray[0, 5] = 3;
|
|
numArray[1, 5] = 200;
|
|
numArray[0, 6] = 0;
|
|
numArray[1, 6] = 90;
|
|
numArray[0, 7] = 4;
|
|
numArray[1, 7] = 375;
|
|
numArray[0, 8] = 0;
|
|
numArray[1, 8] = 90;
|
|
numArray[0, 9] = 2;
|
|
numArray[1, 9] = 135;
|
|
return numArray;
|
|
}
|
|
|
|
public string TypeName => Lang.GetNPCNameValue(this.netID);
|
|
|
|
public string FullName => !this.HasGivenName ? this.TypeName : Language.GetTextValue("Game.NPCTitle", (object) this._givenName, (object) this.TypeName);
|
|
|
|
public bool HasGivenName => (uint) this._givenName.Length > 0U;
|
|
|
|
public string GivenOrTypeName => !this.HasGivenName ? this.TypeName : this._givenName;
|
|
|
|
public string GivenName
|
|
{
|
|
get => this._givenName;
|
|
set => this._givenName = value ?? "";
|
|
}
|
|
|
|
public static string GetFullnameByID(int npcID)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == npcID)
|
|
return Main.npc[index].FullName;
|
|
}
|
|
return Lang.GetNPCNameValue(npcID);
|
|
}
|
|
|
|
public static bool downedTowers => NPC.downedTowerSolar && NPC.downedTowerVortex && NPC.downedTowerNebula && NPC.downedTowerStardust;
|
|
|
|
public static int ShieldStrengthTowerMax => !Main.expertMode ? NPC.LunarShieldPowerNormal : NPC.LunarShieldPowerExpert;
|
|
|
|
public static bool TowersDefeated => NPC.TowerActiveSolar && NPC.TowerActiveVortex && NPC.TowerActiveNebula && NPC.TowerActiveStardust;
|
|
|
|
public static bool BusyWithAnyInvasionOfSorts() => Main.slimeRainTime != 0.0 || Main.bloodMoon || Main.eclipse || Main.snowMoon || Main.pumpkinMoon || Main.invasionType != 0 || DD2Event.Ongoing;
|
|
|
|
public float Opacity
|
|
{
|
|
get => (float) (1.0 - (double) this.alpha / (double) byte.MaxValue);
|
|
set => this.alpha = (int) MathHelper.Clamp((float) ((1.0 - (double) value) * (double) byte.MaxValue), 0.0f, (float) byte.MaxValue);
|
|
}
|
|
|
|
public int GetAttackDamage_ScaledByStrength(float normalDamage) => (int) ((double) normalDamage * (double) Main.GameModeInfo.EnemyDamageMultiplier * (double) this.strengthMultiplier);
|
|
|
|
public float GetAttackDamage_LerpBetweenFinalValuesFloat(float normalDamage, float expertDamage)
|
|
{
|
|
float amount = Main.expertMode ? 1f : 0.0f;
|
|
if (Main.GameModeInfo.IsJourneyMode)
|
|
amount = MathHelper.Clamp(this.strengthMultiplier - 1f, 0.0f, 1f);
|
|
return MathHelper.Lerp(normalDamage, expertDamage, amount);
|
|
}
|
|
|
|
public int GetAttackDamage_LerpBetweenFinalValues(float normalDamage, float expertDamage)
|
|
{
|
|
float amount = Main.expertMode ? 1f : 0.0f;
|
|
if (Main.GameModeInfo.IsJourneyMode)
|
|
amount = MathHelper.Clamp(this.strengthMultiplier - 1f, 0.0f, 1f);
|
|
return (int) MathHelper.Lerp(normalDamage, expertDamage, amount);
|
|
}
|
|
|
|
public int GetAttackDamage_ForProjectiles(float normalDamage, float expertDamage)
|
|
{
|
|
float amount = Main.expertMode ? 1f : 0.0f;
|
|
if (Main.GameModeInfo.IsJourneyMode)
|
|
amount = MathHelper.Clamp(this.strengthMultiplier - 1f, 0.0f, 1f);
|
|
return (int) MathHelper.Lerp(normalDamage, expertDamage, amount);
|
|
}
|
|
|
|
public int GetAttackDamage_ForProjectiles_MultiLerp(
|
|
float normalDamage,
|
|
float expertDamage,
|
|
float masterDamage)
|
|
{
|
|
float percent = Main.masterMode ? 1f : (Main.expertMode ? 0.5f : 0.0f);
|
|
if (Main.GameModeInfo.IsJourneyMode)
|
|
percent = MathHelper.Clamp(this.strengthMultiplier - 1f, 0.0f, 2f) / 2f;
|
|
return (int) Utils.MultiLerp(percent, normalDamage, expertDamage, masterDamage);
|
|
}
|
|
|
|
public bool isLikeATownNPC => this.type == 453 || this.townNPC;
|
|
|
|
public static void ClearFoundActiveNPCs()
|
|
{
|
|
for (int index = 0; index < NPC.npcsFoundForCheckActive.Length; ++index)
|
|
NPC.npcsFoundForCheckActive[index] = false;
|
|
}
|
|
|
|
public static void UpdateFoundActiveNPCs()
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
NPC npc = Main.npc[index];
|
|
if (npc.active && npc.type >= 0 && npc.type < 663)
|
|
NPC.npcsFoundForCheckActive[npc.type] = true;
|
|
}
|
|
NPC.UpdateRGBPeriheralProbe();
|
|
}
|
|
|
|
public static void ClearFoundNPCTypesForBestiary()
|
|
{
|
|
for (int index = 0; index < NPC.npcsFoundForCheckActive.Length; ++index)
|
|
NPC.npcsFoundForCheckActive[index] = false;
|
|
}
|
|
|
|
public static void UpdateRGBPeriheralProbe()
|
|
{
|
|
int num1 = 0;
|
|
int num2 = Main.LocalPlayer.ZoneOverworldHeight ? 1 : 0;
|
|
if (NPC.npcsFoundForCheckActive[4])
|
|
num1 = 4;
|
|
if (NPC.npcsFoundForCheckActive[50])
|
|
num1 = 50;
|
|
if (num2 != 0 && Main.invasionType == 1)
|
|
num1 = -1;
|
|
if (NPC.npcsFoundForCheckActive[13])
|
|
num1 = 13;
|
|
if (NPC.npcsFoundForCheckActive[266])
|
|
num1 = 266;
|
|
if (NPC.npcsFoundForCheckActive[222])
|
|
num1 = 222;
|
|
if (NPC.npcsFoundForCheckActive[35])
|
|
num1 = 35;
|
|
if (NPC.npcsFoundForCheckActive[113])
|
|
num1 = 113;
|
|
if (num2 != 0 && Main.invasionType == 2)
|
|
num1 = -2;
|
|
if (NPC.npcsFoundForCheckActive[657])
|
|
num1 = 657;
|
|
if (NPC.npcsFoundForCheckActive[126] || NPC.npcsFoundForCheckActive[125])
|
|
num1 = 126;
|
|
if (NPC.npcsFoundForCheckActive[134])
|
|
num1 = 134;
|
|
if (NPC.npcsFoundForCheckActive[(int) sbyte.MaxValue])
|
|
num1 = (int) sbyte.MaxValue;
|
|
if (num2 != 0 && Main.invasionType == 3)
|
|
num1 = -3;
|
|
if (NPC.npcsFoundForCheckActive[262])
|
|
num1 = 262;
|
|
if (NPC.npcsFoundForCheckActive[245])
|
|
num1 = 245;
|
|
if (NPC.npcsFoundForCheckActive[636])
|
|
num1 = 636;
|
|
if (DD2Event.Ongoing)
|
|
num1 = -6;
|
|
if (num2 != 0 && Main.invasionType == 4)
|
|
num1 = -4;
|
|
if (NPC.npcsFoundForCheckActive[439])
|
|
num1 = 439;
|
|
if (NPC.npcsFoundForCheckActive[370])
|
|
num1 = 370;
|
|
if (NPC.npcsFoundForCheckActive[398])
|
|
num1 = 398;
|
|
CommonConditions.Boss.HighestTierBossOrEvent = num1;
|
|
}
|
|
|
|
public void SpawnWithHigherTime(int timeMult) => this.timeLeft = NPC.activeTime * timeMult;
|
|
|
|
public void EncourageDespawn(int despawnTime)
|
|
{
|
|
if (this.timeLeft > despawnTime)
|
|
this.timeLeft = despawnTime;
|
|
this.despawnEncouraged = true;
|
|
}
|
|
|
|
public void DiscourageDespawn(int despawnTime)
|
|
{
|
|
if (this.timeLeft < despawnTime)
|
|
this.timeLeft = despawnTime;
|
|
this.despawnEncouraged = false;
|
|
}
|
|
|
|
public static bool WouldBeEncouragedToDespawn(int aistyle, int type) => aistyle == 4 && Main.dayTime;
|
|
|
|
public static string getNewNPCName(int npcType) => NPC.getNewNPCNameInner(npcType);
|
|
|
|
private static string getNewNPCNameInner(int npcType)
|
|
{
|
|
switch (npcType)
|
|
{
|
|
case 17:
|
|
switch (WorldGen.genRand.Next(23))
|
|
{
|
|
case 0:
|
|
return "Alfred";
|
|
case 1:
|
|
return "Barney";
|
|
case 2:
|
|
return "Calvin";
|
|
case 3:
|
|
return "Edmund";
|
|
case 4:
|
|
return "Edwin";
|
|
case 5:
|
|
return "Eugene";
|
|
case 6:
|
|
return "Frank";
|
|
case 7:
|
|
return "Frederick";
|
|
case 8:
|
|
return "Gilbert";
|
|
case 9:
|
|
return "Gus";
|
|
case 10:
|
|
return "Wilbur";
|
|
case 11:
|
|
return "Seymour";
|
|
case 12:
|
|
return "Louis";
|
|
case 13:
|
|
return "Humphrey";
|
|
case 14:
|
|
return "Harold";
|
|
case 15:
|
|
return "Milton";
|
|
case 16:
|
|
return "Mortimer";
|
|
case 17:
|
|
return "Howard";
|
|
case 18:
|
|
return "Walter";
|
|
case 19:
|
|
return "Isaac";
|
|
case 20:
|
|
return "Joseph";
|
|
case 21:
|
|
return "Kristian";
|
|
default:
|
|
return "Ralph";
|
|
}
|
|
case 18:
|
|
switch (WorldGen.genRand.Next(24))
|
|
{
|
|
case 0:
|
|
return "Molly";
|
|
case 1:
|
|
return "Amy";
|
|
case 2:
|
|
return "Claire";
|
|
case 3:
|
|
return "Emily";
|
|
case 4:
|
|
return "Katie";
|
|
case 5:
|
|
return "Madeline";
|
|
case 6:
|
|
return "Katelyn";
|
|
case 7:
|
|
return "Emma";
|
|
case 8:
|
|
return "Abigail";
|
|
case 9:
|
|
return "Carly";
|
|
case 10:
|
|
return "Jenna";
|
|
case 11:
|
|
return "Heather";
|
|
case 12:
|
|
return "Katherine";
|
|
case 13:
|
|
return "Caitlin";
|
|
case 14:
|
|
return "Kaitlin";
|
|
case 15:
|
|
return "Holly";
|
|
case 16:
|
|
return "Kaitlyn";
|
|
case 17:
|
|
return "Hannah";
|
|
case 18:
|
|
return "Kathryn";
|
|
case 19:
|
|
return "Lorraine";
|
|
case 20:
|
|
return "Helen";
|
|
case 21:
|
|
return "Kayla";
|
|
case 22:
|
|
return "Lisa";
|
|
default:
|
|
return "Allison";
|
|
}
|
|
case 19:
|
|
switch (WorldGen.genRand.Next(24))
|
|
{
|
|
case 0:
|
|
return "DeShawn";
|
|
case 1:
|
|
return "DeAndre";
|
|
case 2:
|
|
return "Marquis";
|
|
case 3:
|
|
return "Darnell";
|
|
case 4:
|
|
return "Terrell";
|
|
case 5:
|
|
return "Malik";
|
|
case 6:
|
|
return "Trevon";
|
|
case 7:
|
|
return "Tyrone";
|
|
case 8:
|
|
return "Willie";
|
|
case 9:
|
|
return "Dominique";
|
|
case 10:
|
|
return "Demetrius";
|
|
case 11:
|
|
return "Reginald";
|
|
case 12:
|
|
return "Jamal";
|
|
case 13:
|
|
return "Maurice";
|
|
case 14:
|
|
return "Jalen";
|
|
case 15:
|
|
return "Darius";
|
|
case 16:
|
|
return "Xavier";
|
|
case 17:
|
|
return "Terrance";
|
|
case 18:
|
|
return "Andre";
|
|
case 19:
|
|
return "Dante";
|
|
case 20:
|
|
return "Brimst";
|
|
case 21:
|
|
return "Bronson";
|
|
case 22:
|
|
return "Tony";
|
|
default:
|
|
return "Darryl";
|
|
}
|
|
case 20:
|
|
switch (WorldGen.genRand.Next(22))
|
|
{
|
|
case 0:
|
|
return "Alalia";
|
|
case 1:
|
|
return "Alalia";
|
|
case 2:
|
|
return "Alura";
|
|
case 3:
|
|
return "Ariella";
|
|
case 4:
|
|
return "Caelia";
|
|
case 5:
|
|
return "Calista";
|
|
case 6:
|
|
return "Chryseis";
|
|
case 7:
|
|
return "Emerenta";
|
|
case 8:
|
|
return "Elysia";
|
|
case 9:
|
|
return "Evvie";
|
|
case 10:
|
|
return "Faye";
|
|
case 11:
|
|
return "Felicitae";
|
|
case 12:
|
|
return "Lunette";
|
|
case 13:
|
|
return "Nata";
|
|
case 14:
|
|
return "Nissa";
|
|
case 15:
|
|
return "Tatiana";
|
|
case 16:
|
|
return "Rosalva";
|
|
case 17:
|
|
return "Shea";
|
|
case 18:
|
|
return "Tania";
|
|
case 19:
|
|
return "Isis";
|
|
case 20:
|
|
return "Celestia";
|
|
default:
|
|
return "Xylia";
|
|
}
|
|
case 22:
|
|
switch (WorldGen.genRand.Next(35))
|
|
{
|
|
case 0:
|
|
return "Joe";
|
|
case 1:
|
|
return "Connor";
|
|
case 2:
|
|
return "Tanner";
|
|
case 3:
|
|
return "Wyatt";
|
|
case 4:
|
|
return "Cody";
|
|
case 5:
|
|
return "Levi";
|
|
case 6:
|
|
return "Luke";
|
|
case 7:
|
|
return "Jack";
|
|
case 8:
|
|
return "Scott";
|
|
case 9:
|
|
return "Logan";
|
|
case 10:
|
|
return "Cole";
|
|
case 11:
|
|
return "Asher";
|
|
case 12:
|
|
return "Bradley";
|
|
case 13:
|
|
return "Jacob";
|
|
case 14:
|
|
return "Garrett";
|
|
case 15:
|
|
return "Dylan";
|
|
case 16:
|
|
return "Maxwell";
|
|
case 17:
|
|
return "Steve";
|
|
case 18:
|
|
return "Brett";
|
|
case 19:
|
|
return "Andrew";
|
|
case 20:
|
|
return "Harley";
|
|
case 21:
|
|
return "Kyle";
|
|
case 22:
|
|
return "Jake";
|
|
case 23:
|
|
return "Ryan";
|
|
case 24:
|
|
return "Jeffrey";
|
|
case 25:
|
|
return "Seth";
|
|
case 26:
|
|
return "Marty";
|
|
case 27:
|
|
return "Brandon";
|
|
case 28:
|
|
return "Zach";
|
|
case 29:
|
|
return "Jeff";
|
|
case 30:
|
|
return "Daniel";
|
|
case 31:
|
|
return "Trent";
|
|
case 32:
|
|
return "Kevin";
|
|
case 33:
|
|
return "Brian";
|
|
default:
|
|
return "Colin";
|
|
}
|
|
case 38:
|
|
switch (WorldGen.genRand.Next(22))
|
|
{
|
|
case 0:
|
|
return "Dolbere";
|
|
case 1:
|
|
return "Bazdin";
|
|
case 2:
|
|
return "Durim";
|
|
case 3:
|
|
return "Tordak";
|
|
case 4:
|
|
return "Garval";
|
|
case 5:
|
|
return "Morthal";
|
|
case 6:
|
|
return "Oten";
|
|
case 7:
|
|
return "Dolgen";
|
|
case 8:
|
|
return "Gimli";
|
|
case 9:
|
|
return "Gimut";
|
|
case 10:
|
|
return "Duerthen";
|
|
case 11:
|
|
return "Beldin";
|
|
case 12:
|
|
return "Jarut";
|
|
case 13:
|
|
return "Ovbere";
|
|
case 14:
|
|
return "Norkas";
|
|
case 15:
|
|
return "Dolgrim";
|
|
case 16:
|
|
return "Boften";
|
|
case 17:
|
|
return "Norsun";
|
|
case 18:
|
|
return "Dias";
|
|
case 19:
|
|
return "Fikod";
|
|
case 20:
|
|
return "Urist";
|
|
default:
|
|
return "Darur";
|
|
}
|
|
case 54:
|
|
switch (WorldGen.genRand.Next(27))
|
|
{
|
|
case 0:
|
|
return "Sebastian";
|
|
case 1:
|
|
return "Rupert";
|
|
case 2:
|
|
return "Clive";
|
|
case 3:
|
|
return "Nigel";
|
|
case 4:
|
|
return "Mervyn";
|
|
case 5:
|
|
return "Cedric";
|
|
case 6:
|
|
return "Pip";
|
|
case 7:
|
|
return "Cyril";
|
|
case 8:
|
|
return "Fitz";
|
|
case 9:
|
|
return "Lloyd";
|
|
case 10:
|
|
return "Arthur";
|
|
case 11:
|
|
return "Rodney";
|
|
case 12:
|
|
return "Graham";
|
|
case 13:
|
|
return "Edward";
|
|
case 14:
|
|
return "Alfred";
|
|
case 15:
|
|
return "Edmund";
|
|
case 16:
|
|
return "Henry";
|
|
case 17:
|
|
return "Herald";
|
|
case 18:
|
|
return "Roland";
|
|
case 19:
|
|
return "Lincoln";
|
|
case 20:
|
|
return "Lloyd";
|
|
case 21:
|
|
return "Edgar";
|
|
case 22:
|
|
return "Eustace";
|
|
case 23:
|
|
return "Benjamin";
|
|
case 24:
|
|
return "James";
|
|
default:
|
|
return "Rodrick";
|
|
}
|
|
case 107:
|
|
switch (WorldGen.genRand.Next(25))
|
|
{
|
|
case 0:
|
|
return "Grodax";
|
|
case 1:
|
|
return "Sarx";
|
|
case 2:
|
|
return "Xon";
|
|
case 3:
|
|
return "Mrunok";
|
|
case 4:
|
|
return "Nuxatk";
|
|
case 5:
|
|
return "Tgerd";
|
|
case 6:
|
|
return "Darz";
|
|
case 7:
|
|
return "Smador";
|
|
case 8:
|
|
return "Stazen";
|
|
case 9:
|
|
return "Mobart";
|
|
case 10:
|
|
return "Knogs";
|
|
case 11:
|
|
return "Tkanus";
|
|
case 12:
|
|
return "Negurk";
|
|
case 13:
|
|
return "Nort";
|
|
case 14:
|
|
return "Durnok";
|
|
case 15:
|
|
return "Trogem";
|
|
case 16:
|
|
return "Stezom";
|
|
case 17:
|
|
return "Gnudar";
|
|
case 18:
|
|
return "Ragz";
|
|
case 19:
|
|
return "Fahd";
|
|
case 20:
|
|
return "Xanos";
|
|
case 21:
|
|
return "Arback";
|
|
case 22:
|
|
return "Fjell";
|
|
case 23:
|
|
return "Dalek";
|
|
default:
|
|
return "Knub";
|
|
}
|
|
case 108:
|
|
switch (WorldGen.genRand.Next(22))
|
|
{
|
|
case 0:
|
|
return "Dalamar";
|
|
case 1:
|
|
return "Dulais";
|
|
case 2:
|
|
return "Elric";
|
|
case 3:
|
|
return "Arddun";
|
|
case 4:
|
|
return "Maelor";
|
|
case 5:
|
|
return "Leomund";
|
|
case 6:
|
|
return "Hirael";
|
|
case 7:
|
|
return "Gwentor";
|
|
case 8:
|
|
return "Greum";
|
|
case 9:
|
|
return "Gearroid";
|
|
case 10:
|
|
return "Fizban";
|
|
case 11:
|
|
return "Ningauble";
|
|
case 12:
|
|
return "Seonag";
|
|
case 13:
|
|
return "Sargon";
|
|
case 14:
|
|
return "Merlyn";
|
|
case 15:
|
|
return "Magius";
|
|
case 16:
|
|
return "Berwyn";
|
|
case 17:
|
|
return "Arwyn";
|
|
case 18:
|
|
return "Alasdair";
|
|
case 19:
|
|
return "Tagar";
|
|
case 20:
|
|
return "Abram";
|
|
default:
|
|
return "Xanadu";
|
|
}
|
|
case 124:
|
|
switch (WorldGen.genRand.Next(24))
|
|
{
|
|
case 0:
|
|
return "Shayna";
|
|
case 1:
|
|
return "Korrie";
|
|
case 2:
|
|
return "Ginger";
|
|
case 3:
|
|
return "Brooke";
|
|
case 4:
|
|
return "Jenny";
|
|
case 5:
|
|
return "Autumn";
|
|
case 6:
|
|
return "Nancy";
|
|
case 7:
|
|
return "Ella";
|
|
case 8:
|
|
return "Kayla";
|
|
case 9:
|
|
return "Selah";
|
|
case 10:
|
|
return "Sophia";
|
|
case 11:
|
|
return "Marshanna";
|
|
case 12:
|
|
return "Lauren";
|
|
case 13:
|
|
return "Trisha";
|
|
case 14:
|
|
return "Shirlena";
|
|
case 15:
|
|
return "Sheena";
|
|
case 16:
|
|
return "Ellen";
|
|
case 17:
|
|
return "Amy";
|
|
case 18:
|
|
return "Dawn";
|
|
case 19:
|
|
return "Susana";
|
|
case 20:
|
|
return "Meredith";
|
|
case 21:
|
|
return "Selene";
|
|
case 22:
|
|
return "Terra";
|
|
default:
|
|
return "Sally";
|
|
}
|
|
case 160:
|
|
switch (WorldGen.genRand.Next(12))
|
|
{
|
|
case 0:
|
|
return "Reishi";
|
|
case 1:
|
|
return "Maitake";
|
|
case 2:
|
|
return "Chanterelle";
|
|
case 3:
|
|
return "Porcini";
|
|
case 4:
|
|
return "Shimeji";
|
|
case 5:
|
|
return "Amanita";
|
|
case 6:
|
|
return "Muscaria";
|
|
case 7:
|
|
return "Agaric";
|
|
case 8:
|
|
return "Cremini";
|
|
case 9:
|
|
return "Morel";
|
|
case 10:
|
|
return "Enoki";
|
|
default:
|
|
return "Shiitake";
|
|
}
|
|
case 178:
|
|
switch (WorldGen.genRand.Next(20))
|
|
{
|
|
case 0:
|
|
return "Whitney";
|
|
case 1:
|
|
return "Verity";
|
|
case 2:
|
|
return "Ada";
|
|
case 3:
|
|
return "Cornelia";
|
|
case 4:
|
|
return "Lydia";
|
|
case 5:
|
|
return "Leila";
|
|
case 6:
|
|
return "Minerva";
|
|
case 7:
|
|
return "Emeline";
|
|
case 8:
|
|
return "Cynthia";
|
|
case 9:
|
|
return "Fidelia";
|
|
case 10:
|
|
return "Lilly";
|
|
case 11:
|
|
return "Phoebe";
|
|
case 12:
|
|
return "Zylphia";
|
|
case 13:
|
|
return "Zelda";
|
|
case 14:
|
|
return "Selina";
|
|
case 15:
|
|
return "Hope";
|
|
case 16:
|
|
return "Isabella";
|
|
case 17:
|
|
return "Judith";
|
|
case 18:
|
|
return "Savannah";
|
|
default:
|
|
return "Vivian";
|
|
}
|
|
case 207:
|
|
switch (WorldGen.genRand.Next(16))
|
|
{
|
|
case 0:
|
|
return "Abdosir";
|
|
case 1:
|
|
return "Akbar";
|
|
case 2:
|
|
return "Bodashtart";
|
|
case 3:
|
|
return "Danel";
|
|
case 4:
|
|
return "Hanno";
|
|
case 5:
|
|
return "Hiram";
|
|
case 6:
|
|
return "Kanmi";
|
|
case 7:
|
|
return "Philosir";
|
|
case 8:
|
|
return "Tabnit";
|
|
case 9:
|
|
return "Yutpan";
|
|
case 10:
|
|
return "Ahirom";
|
|
case 11:
|
|
return "Batnoam";
|
|
case 12:
|
|
return "Sikarbaal";
|
|
case 13:
|
|
return "Hannibal";
|
|
case 14:
|
|
return "Yehomilk";
|
|
default:
|
|
return "Ahinadab";
|
|
}
|
|
case 208:
|
|
switch (WorldGen.genRand.Next(17))
|
|
{
|
|
case 0:
|
|
return "Candy";
|
|
case 1:
|
|
return "Isis";
|
|
case 2:
|
|
return "Trixy";
|
|
case 3:
|
|
return "Destiny";
|
|
case 4:
|
|
return "Lexus";
|
|
case 5:
|
|
return "Bambi";
|
|
case 6:
|
|
return "Bailey";
|
|
case 7:
|
|
return "Glitter";
|
|
case 8:
|
|
return "Sparkle";
|
|
case 9:
|
|
return "Paris";
|
|
case 10:
|
|
return "Dazzle";
|
|
case 11:
|
|
return "Fantasy";
|
|
case 12:
|
|
return "Bunny";
|
|
case 13:
|
|
return "Sugar";
|
|
case 14:
|
|
return "Fantasia";
|
|
case 15:
|
|
return "Star";
|
|
default:
|
|
return "Cherry";
|
|
}
|
|
case 209:
|
|
switch (WorldGen.genRand.Next(23))
|
|
{
|
|
case 0:
|
|
return "Alpha";
|
|
case 1:
|
|
return "Beta";
|
|
case 2:
|
|
return "Delta";
|
|
case 3:
|
|
return "Omega";
|
|
case 4:
|
|
return "Gamma";
|
|
case 5:
|
|
return "Theta";
|
|
case 6:
|
|
return "Kappa";
|
|
case 7:
|
|
return "Omicron";
|
|
case 8:
|
|
return "Sigma";
|
|
case 9:
|
|
return "Upsilon";
|
|
case 10:
|
|
return "Phi";
|
|
case 11:
|
|
return "Zeta";
|
|
case 12:
|
|
return "Lambda";
|
|
case 13:
|
|
return "Nu";
|
|
case 14:
|
|
return "Ci";
|
|
case 15:
|
|
return "Rho";
|
|
case 16:
|
|
return "Phi";
|
|
case 17:
|
|
return "Fender";
|
|
case 18:
|
|
return "T-3E0";
|
|
case 19:
|
|
return "Niner-7";
|
|
case 20:
|
|
return "A.N.D.Y";
|
|
case 21:
|
|
return "Syn-X";
|
|
default:
|
|
return "Mu";
|
|
}
|
|
case 227:
|
|
switch (WorldGen.genRand.Next(18))
|
|
{
|
|
case 0:
|
|
return "Marco";
|
|
case 1:
|
|
return "Guido";
|
|
case 2:
|
|
return "Enzo";
|
|
case 3:
|
|
return "Martino";
|
|
case 4:
|
|
return "Mauro";
|
|
case 5:
|
|
return "Lorenzo";
|
|
case 6:
|
|
return "Ludo";
|
|
case 7:
|
|
return "Luciano";
|
|
case 8:
|
|
return "Carlo";
|
|
case 9:
|
|
return "Bruno";
|
|
case 10:
|
|
return "Mario";
|
|
case 11:
|
|
return "Leonardo";
|
|
case 12:
|
|
return "Raphael";
|
|
case 13:
|
|
return "Luigi";
|
|
case 14:
|
|
return "Luca";
|
|
case 15:
|
|
return "Darren";
|
|
case 16:
|
|
return "Esreadel";
|
|
default:
|
|
return "Stefano";
|
|
}
|
|
case 228:
|
|
switch (WorldGen.genRand.Next(10))
|
|
{
|
|
case 0:
|
|
return "Abibe";
|
|
case 1:
|
|
return "Jamundi";
|
|
case 2:
|
|
return "U'wa";
|
|
case 3:
|
|
return "Tairona";
|
|
case 4:
|
|
return "Xirigua";
|
|
case 5:
|
|
return "Zop'a";
|
|
case 6:
|
|
return "Opuni";
|
|
case 7:
|
|
return "Kogi-ghi";
|
|
case 8:
|
|
return "Konah";
|
|
default:
|
|
return "Gboto";
|
|
}
|
|
case 229:
|
|
switch (WorldGen.genRand.Next(11))
|
|
{
|
|
case 0:
|
|
return "David";
|
|
case 1:
|
|
return "Red Beard";
|
|
case 2:
|
|
return "Jack";
|
|
case 3:
|
|
return "Black Beard";
|
|
case 4:
|
|
return "Captain Morgan";
|
|
case 5:
|
|
return "Wet Beard";
|
|
case 6:
|
|
return "James T. Beard";
|
|
case 7:
|
|
return "Gunpowder Garry";
|
|
case 8:
|
|
return "Captain Stoney Dirt";
|
|
case 9:
|
|
return "Jake";
|
|
default:
|
|
return "Captain Bullywort";
|
|
}
|
|
case 353:
|
|
switch (WorldGen.genRand.Next(20))
|
|
{
|
|
case 0:
|
|
return "Bri";
|
|
case 1:
|
|
return "Brianne";
|
|
case 2:
|
|
return "Flora";
|
|
case 3:
|
|
return "Iris";
|
|
case 4:
|
|
return "Scarlett";
|
|
case 5:
|
|
return "Lola";
|
|
case 6:
|
|
return "Hazel";
|
|
case 7:
|
|
return "Stella";
|
|
case 8:
|
|
return "Pearl";
|
|
case 9:
|
|
return "Tallulah";
|
|
case 10:
|
|
return "Ruby";
|
|
case 11:
|
|
return "Esmeralda";
|
|
case 12:
|
|
return "Kylie";
|
|
case 13:
|
|
return "Kati";
|
|
case 14:
|
|
return "Biah";
|
|
case 15:
|
|
return "Meliyah";
|
|
case 16:
|
|
return "Petra";
|
|
case 17:
|
|
return "Rox";
|
|
case 18:
|
|
return "Roxanne";
|
|
default:
|
|
return "Annabel";
|
|
}
|
|
case 368:
|
|
switch (WorldGen.genRand.Next(13))
|
|
{
|
|
case 0:
|
|
return "Abraham";
|
|
case 1:
|
|
return "Bohemas";
|
|
case 2:
|
|
return "Eladon";
|
|
case 3:
|
|
return "Aphraim";
|
|
case 4:
|
|
return "Gallius";
|
|
case 5:
|
|
return "Llewellyn";
|
|
case 6:
|
|
return "Riley";
|
|
case 7:
|
|
return "Rawleigh";
|
|
case 8:
|
|
return "Shipton";
|
|
case 9:
|
|
return "Romeo";
|
|
case 10:
|
|
return "Aedan";
|
|
case 11:
|
|
return "Mercer";
|
|
default:
|
|
return "Willy";
|
|
}
|
|
case 369:
|
|
switch (WorldGen.genRand.Next(21))
|
|
{
|
|
case 0:
|
|
return "Bobby";
|
|
case 1:
|
|
return "Sammy";
|
|
case 2:
|
|
return "Jimmy";
|
|
case 3:
|
|
return "Danny";
|
|
case 4:
|
|
return "Timmy";
|
|
case 5:
|
|
return "Simon";
|
|
case 6:
|
|
return "Johnny";
|
|
case 7:
|
|
return "Billy";
|
|
case 8:
|
|
return "Matty";
|
|
case 9:
|
|
return "Bart";
|
|
case 10:
|
|
return "Phillip";
|
|
case 11:
|
|
return "Spencer";
|
|
case 12:
|
|
return "Nathan";
|
|
case 13:
|
|
return "Grayson";
|
|
case 14:
|
|
return "Miles";
|
|
case 15:
|
|
return "Charles";
|
|
case 16:
|
|
return "Adam";
|
|
case 17:
|
|
return "Tyler";
|
|
case 18:
|
|
return "Jey";
|
|
case 19:
|
|
return "Ivan";
|
|
default:
|
|
return "Izzy";
|
|
}
|
|
case 441:
|
|
switch (WorldGen.genRand.Next(20))
|
|
{
|
|
case 0:
|
|
return "McKinly";
|
|
case 1:
|
|
return "Millard";
|
|
case 2:
|
|
return "Fillmore";
|
|
case 3:
|
|
return "Rutherford";
|
|
case 4:
|
|
return "Chester";
|
|
case 5:
|
|
return "Grover";
|
|
case 6:
|
|
return "Cleveland";
|
|
case 7:
|
|
return "Theodore";
|
|
case 8:
|
|
return "Herbert";
|
|
case 9:
|
|
return "Warren";
|
|
case 10:
|
|
return "Lyndon";
|
|
case 11:
|
|
return "Ronald";
|
|
case 12:
|
|
return "Harrison";
|
|
case 13:
|
|
return "Woodrow";
|
|
case 14:
|
|
return "Tweed";
|
|
case 15:
|
|
return "Blanton";
|
|
case 16:
|
|
return "Dwyer";
|
|
case 17:
|
|
return "Carroll";
|
|
default:
|
|
return "Agnew";
|
|
}
|
|
case 453:
|
|
switch (WorldGen.genRand.Next(10))
|
|
{
|
|
case 0:
|
|
return "Skellington";
|
|
case 1:
|
|
return "Bones McGee";
|
|
case 2:
|
|
return "Gloomy Mays";
|
|
case 3:
|
|
return "Jack Sellington";
|
|
case 4:
|
|
return "Billy Marrows";
|
|
case 5:
|
|
return "Tom";
|
|
case 6:
|
|
return "Rattles Magoo";
|
|
case 7:
|
|
return "Mandible Calavera";
|
|
case 8:
|
|
return "Mika";
|
|
default:
|
|
return "No-Eyed Wiley";
|
|
}
|
|
case 550:
|
|
return Language.RandomFromCategory("BartenderNames", WorldGen.genRand).Value;
|
|
case 588:
|
|
return Language.RandomFromCategory("GolferNames", WorldGen.genRand).Value;
|
|
case 633:
|
|
return Language.RandomFromCategory("BestiaryGirlNames", WorldGen.genRand).Value;
|
|
case 637:
|
|
return Language.RandomFromCategory("CatNames_Siamese", WorldGen.genRand).Value;
|
|
case 638:
|
|
return Language.RandomFromCategory("DogNames_Labrador", WorldGen.genRand).Value;
|
|
case 656:
|
|
return Language.RandomFromCategory("BunnyNames_White", WorldGen.genRand).Value;
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public NetworkText GetTypeNetName() => NetworkText.FromKey(Lang.GetNPCName(this.netID).Key);
|
|
|
|
public void GetLifeStats(out int statLife, out int statLifeMax)
|
|
{
|
|
statLife = this.life;
|
|
statLifeMax = this.lifeMax;
|
|
if (this.realLife == -1)
|
|
return;
|
|
statLife = Main.npc[this.realLife].life;
|
|
statLifeMax = Main.npc[this.realLife].lifeMax;
|
|
}
|
|
|
|
public float GetLifePercent()
|
|
{
|
|
int statLife;
|
|
int statLifeMax;
|
|
this.GetLifeStats(out statLife, out statLifeMax);
|
|
return (float) statLife / (float) statLifeMax;
|
|
}
|
|
|
|
public NetworkText GetFullNetName()
|
|
{
|
|
if (!this.HasGivenName)
|
|
return this.GetTypeNetName();
|
|
return NetworkText.FromKey("Game.NPCTitle", (object) this.GetGivenNetName(), (object) this.GetTypeNetName());
|
|
}
|
|
|
|
public NetworkText GetGivenOrTypeNetName() => !this.HasGivenName ? this.GetTypeNetName() : this.GetGivenNetName();
|
|
|
|
public NetworkText GetGivenNetName() => NetworkText.FromLiteral(this._givenName);
|
|
|
|
public static void setNPCName(string newName, int npcType, bool resetExtras = false)
|
|
{
|
|
bool flag = false;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == npcType)
|
|
{
|
|
if (flag)
|
|
{
|
|
Main.npc[index].GivenName = NPC.getNewNPCName(npcType);
|
|
Main.npc[index].needsUniqueInfoUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
Main.npc[index].GivenName = newName;
|
|
if (!resetExtras)
|
|
break;
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string firstNPCName(int npcType)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == npcType)
|
|
return Main.npc[index].GivenOrTypeName;
|
|
}
|
|
return NPC.getNewNPCName(npcType);
|
|
}
|
|
|
|
public static string GetFirstNPCNameOrNull(int npcType)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == npcType)
|
|
return Main.npc[index].GivenOrTypeName;
|
|
}
|
|
return (string) null;
|
|
}
|
|
|
|
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)
|
|
{
|
|
bool flag = false;
|
|
if (Main.npc[index].type == type)
|
|
{
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
switch (type)
|
|
{
|
|
case 46:
|
|
case 303:
|
|
case 337:
|
|
case 540:
|
|
if (Main.npc[index].type == 46 || Main.npc[index].type == 540 || Main.npc[index].type == 303 || Main.npc[index].type == 337)
|
|
{
|
|
flag = true;
|
|
goto label_19;
|
|
}
|
|
else
|
|
goto label_19;
|
|
case 55:
|
|
if (Main.npc[index].type == 230)
|
|
{
|
|
flag = true;
|
|
goto label_19;
|
|
}
|
|
else
|
|
break;
|
|
case 362:
|
|
case 364:
|
|
if (Main.npc[index].type == 362 || Main.npc[index].type == 363 || Main.npc[index].type == 364 || Main.npc[index].type == 365)
|
|
{
|
|
flag = true;
|
|
goto label_19;
|
|
}
|
|
else
|
|
goto label_19;
|
|
case 602:
|
|
if (Main.npc[index].type == 602 || Main.npc[index].type == 603)
|
|
{
|
|
flag = true;
|
|
goto label_19;
|
|
}
|
|
else
|
|
goto label_19;
|
|
case 608:
|
|
if (Main.npc[index].type == 608 || Main.npc[index].type == 609)
|
|
{
|
|
flag = true;
|
|
goto label_19;
|
|
}
|
|
else
|
|
goto label_19;
|
|
case 616:
|
|
case 617:
|
|
if (Main.npc[index].type == 616 || Main.npc[index].type == 617)
|
|
{
|
|
flag = true;
|
|
goto label_19;
|
|
}
|
|
else
|
|
goto label_19;
|
|
}
|
|
if (NPCID.Sets.IsDragonfly[type] && NPCID.Sets.IsDragonfly[Main.npc[index].type])
|
|
flag = true;
|
|
}
|
|
label_19:
|
|
if (flag)
|
|
{
|
|
++num1;
|
|
Vector2 vector2 = new Vector2(x, y);
|
|
double num4 = (double) Main.npc[index].position.X - (double) vector2.X;
|
|
float num5 = Main.npc[index].position.Y - vector2.Y;
|
|
double num6 = Math.Sqrt(num4 * num4 + (double) num5 * (double) num5);
|
|
if (num6 < 200.0)
|
|
++num2;
|
|
if (num6 < 600.0)
|
|
++num3;
|
|
}
|
|
}
|
|
}
|
|
return num2 < 3 && num3 < 6 && num1 < 10;
|
|
}
|
|
|
|
public static int TypeToDefaultHeadIndex(int type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case 0:
|
|
return 0;
|
|
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;
|
|
case 160:
|
|
return 12;
|
|
case 178:
|
|
return 13;
|
|
case 207:
|
|
return 14;
|
|
case 208:
|
|
return 15;
|
|
case 209:
|
|
return 16;
|
|
case 227:
|
|
return 17;
|
|
case 228:
|
|
return 18;
|
|
case 229:
|
|
return 19;
|
|
case 353:
|
|
return 20;
|
|
case 368:
|
|
return 21;
|
|
case 369:
|
|
return 22;
|
|
case 441:
|
|
return 23;
|
|
case 550:
|
|
return 24;
|
|
case 588:
|
|
return 25;
|
|
case 633:
|
|
return 26;
|
|
case 637:
|
|
return 27;
|
|
case 638:
|
|
return 33;
|
|
case 656:
|
|
return 39;
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
public static int DefaultHeadIndexToType(int headIndex)
|
|
{
|
|
switch (headIndex)
|
|
{
|
|
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;
|
|
case 12:
|
|
return 160;
|
|
case 13:
|
|
return 178;
|
|
case 14:
|
|
return 207;
|
|
case 15:
|
|
return 208;
|
|
case 16:
|
|
return 209;
|
|
case 17:
|
|
return 227;
|
|
case 18:
|
|
return 228;
|
|
case 19:
|
|
return 229;
|
|
case 20:
|
|
return 353;
|
|
case 21:
|
|
return 368;
|
|
case 22:
|
|
return 369;
|
|
case 23:
|
|
return 441;
|
|
case 24:
|
|
return 550;
|
|
case 25:
|
|
return 588;
|
|
case 26:
|
|
return 633;
|
|
case 27:
|
|
return 637;
|
|
case 33:
|
|
return 638;
|
|
case 39:
|
|
return 656;
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
public int GetBossHeadTextureIndex()
|
|
{
|
|
int num = NPCID.Sets.BossHeadTextures[this.type];
|
|
switch (this.type)
|
|
{
|
|
case 4:
|
|
if ((double) this.ai[0] >= 2.0)
|
|
{
|
|
num = 1;
|
|
break;
|
|
}
|
|
break;
|
|
case 125:
|
|
if ((double) this.ai[0] >= 3.0)
|
|
{
|
|
num = 16;
|
|
break;
|
|
}
|
|
break;
|
|
case 126:
|
|
if ((double) this.ai[0] >= 3.0)
|
|
{
|
|
num = 21;
|
|
break;
|
|
}
|
|
break;
|
|
case 262:
|
|
if (this.life <= this.lifeMax / 2)
|
|
{
|
|
num = 12;
|
|
break;
|
|
}
|
|
break;
|
|
case 439:
|
|
if ((double) this.ai[0] == 5.0 && this.alpha == (int) byte.MaxValue)
|
|
{
|
|
num = -1;
|
|
break;
|
|
}
|
|
break;
|
|
case 440:
|
|
if ((double) this.ai[0] != 5.0 || this.alpha == (int) byte.MaxValue)
|
|
{
|
|
num = -1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public float GetBossHeadRotation()
|
|
{
|
|
float num = 0.0f;
|
|
switch (this.type)
|
|
{
|
|
case 35:
|
|
case (int) sbyte.MaxValue:
|
|
if ((double) this.ai[1] == 1.0 || (double) this.ai[1] == 2.0)
|
|
{
|
|
num = this.rotation;
|
|
break;
|
|
}
|
|
break;
|
|
case 68:
|
|
case 262:
|
|
num = this.rotation;
|
|
break;
|
|
case 345:
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
num = this.rotation;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public SpriteEffects GetBossHeadSpriteEffects()
|
|
{
|
|
SpriteEffects spriteEffects = SpriteEffects.None;
|
|
if (this.type == 491 && this.spriteDirection == 1)
|
|
spriteEffects = SpriteEffects.FlipHorizontally;
|
|
return spriteEffects;
|
|
}
|
|
|
|
public int BannerID() => this.netID >= -10 ? this.netID : this.type;
|
|
|
|
private void SetDefaultsFromNetId(int id, NPCSpawnParams spawnparams = default (NPCSpawnParams))
|
|
{
|
|
bool flag = false;
|
|
int Type = NPCID.FromNetId(id);
|
|
this.SetDefaults(0);
|
|
switch (id)
|
|
{
|
|
case -65:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.21f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -64:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.87f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -63:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.16f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -62:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.78f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -61:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.1f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -60:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.92f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -59:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -58:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.8f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -57:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.25f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -56:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -55:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.1f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -54:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.9f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -53:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -52:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -51:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.13f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -50:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.87f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -49:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.07f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -48:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.93f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -47:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.1f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -46:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.9f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -45:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.05f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -44:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.87f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -43:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -42:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.1f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -41:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -40:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.9f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -39:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.1f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -38:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -37:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.08f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -36:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.92f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -35:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.13f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -34:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.87f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -33:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.11f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -32:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.89f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -31:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.13f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -30:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.93f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -29:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -28:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -27:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.1f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -26:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.9f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -25:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -24:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -23:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -22:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -21:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.2f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -20:
|
|
this.SetDefaults_ForNetId(Type, 1.1f);
|
|
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;
|
|
break;
|
|
case -19:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.9f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -18:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.8f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -17:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.2f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -16:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -15:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -14:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -13:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.9f);
|
|
flag = false;
|
|
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);
|
|
break;
|
|
case -12:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 1.15f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -11:
|
|
this.SetDefaults_ForNetId(Type, spawnparams, 0.85f);
|
|
flag = false;
|
|
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;
|
|
break;
|
|
case -10:
|
|
this.SetDefaults_ForNetId(Type, 1.1f);
|
|
flag = true;
|
|
this.damage = 18;
|
|
this.defense = 6;
|
|
this.life = 60;
|
|
this.color = new Color(143, 215, 93, 100);
|
|
this.value = 500f;
|
|
break;
|
|
case -9:
|
|
this.SetDefaults_ForNetId(Type, 1.2f);
|
|
flag = true;
|
|
this.damage = 15;
|
|
this.defense = 7;
|
|
this.life = 45;
|
|
this.color = new Color((int) byte.MaxValue, (int) byte.MaxValue, 0, 100);
|
|
this.value = 10f;
|
|
break;
|
|
case -8:
|
|
this.SetDefaults_ForNetId(Type, 1.025f);
|
|
flag = true;
|
|
this.damage = 12;
|
|
this.defense = 4;
|
|
this.life = 35;
|
|
this.color = new Color((int) byte.MaxValue, 30, 0, 100);
|
|
this.value = 8f;
|
|
break;
|
|
case -7:
|
|
this.SetDefaults_ForNetId(Type, 1.2f);
|
|
flag = true;
|
|
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;
|
|
break;
|
|
case -6:
|
|
this.SetDefaults_ForNetId(Type, 1.05f);
|
|
flag = true;
|
|
this.damage = 15;
|
|
this.defense = 4;
|
|
this.life = 45;
|
|
this.color = new Color(0, 0, 0, 50);
|
|
this.value = 20f;
|
|
break;
|
|
case -5:
|
|
this.SetDefaults_ForNetId(Type, 0.9f);
|
|
flag = true;
|
|
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;
|
|
break;
|
|
case -4:
|
|
this.SetDefaults_ForNetId(Type, 0.6f);
|
|
flag = true;
|
|
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.rarity = 2;
|
|
break;
|
|
case -3:
|
|
this.SetDefaults_ForNetId(Type, 0.9f);
|
|
flag = true;
|
|
this.damage = 6;
|
|
this.defense = 0;
|
|
this.life = 14;
|
|
this.knockBackResist *= 1.2f;
|
|
this.color = new Color(0, 220, 40, 100);
|
|
this.value = 3f;
|
|
break;
|
|
case -2:
|
|
this.SetDefaults_ForNetId(Type, 0.9f);
|
|
flag = true;
|
|
this.damage = 45;
|
|
this.defense = 20;
|
|
this.life = 90;
|
|
this.knockBackResist *= 1.2f;
|
|
this.value = 100f;
|
|
break;
|
|
case -1:
|
|
this.SetDefaults_ForNetId(Type, 0.6f);
|
|
flag = true;
|
|
this.damage = 45;
|
|
this.defense = 10;
|
|
this.life = 90;
|
|
this.knockBackResist *= 1.2f;
|
|
this.value = 100f;
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
this.netID = id;
|
|
this.lifeMax = this.life;
|
|
this.defDamage = this.damage;
|
|
this.defDefense = this.defense;
|
|
if (!flag)
|
|
return;
|
|
this.ScaleStats(spawnparams.playerCountForMultiplayerDifficultyOverride, spawnparams.gameModeData, spawnparams.strengthMultiplierOverride);
|
|
this.life = this.lifeMax;
|
|
}
|
|
|
|
public void SetDefaultsKeepPlayerInteraction(int Type)
|
|
{
|
|
bool[] flagArray = new bool[this.playerInteraction.Length];
|
|
for (int index = 0; index < this.playerInteraction.Length; ++index)
|
|
flagArray[index] = this.playerInteraction[index];
|
|
this.SetDefaults(Type);
|
|
for (int index = 0; index < this.playerInteraction.Length; ++index)
|
|
this.playerInteraction[index] = flagArray[index];
|
|
}
|
|
|
|
public void SetDefaults_ForNetId(int Type, float scaleOverride) => this.SetDefaults(Type);
|
|
|
|
public void SetDefaults_ForNetId(int Type, NPCSpawnParams spawnparams, float scaleOverride) => this.SetDefaults(Type, spawnparams.WithScale(scaleOverride));
|
|
|
|
public void SetDefaults(int Type, NPCSpawnParams spawnparams = default (NPCSpawnParams))
|
|
{
|
|
if (spawnparams.gameModeData == null)
|
|
spawnparams.gameModeData = Main.GameModeInfo;
|
|
if (Main.getGoodWorld && spawnparams.sizeScaleOverride.HasValue)
|
|
{
|
|
ref NPCSpawnParams local = ref spawnparams;
|
|
float? sizeScaleOverride1 = spawnparams.sizeScaleOverride;
|
|
float? sizeScaleOverride2 = spawnparams.sizeScaleOverride;
|
|
float? nullable1 = spawnparams.sizeScaleOverride;
|
|
float? nullable2 = sizeScaleOverride2.HasValue & nullable1.HasValue ? new float?(sizeScaleOverride2.GetValueOrDefault() * nullable1.GetValueOrDefault()) : new float?();
|
|
float? nullable3;
|
|
if (!(sizeScaleOverride1.HasValue & nullable2.HasValue))
|
|
{
|
|
nullable1 = new float?();
|
|
nullable3 = nullable1;
|
|
}
|
|
else
|
|
nullable3 = new float?(sizeScaleOverride1.GetValueOrDefault() + nullable2.GetValueOrDefault());
|
|
float? nullable4 = nullable3;
|
|
float num = 2f;
|
|
float? nullable5;
|
|
if (!nullable4.HasValue)
|
|
{
|
|
nullable2 = new float?();
|
|
nullable5 = nullable2;
|
|
}
|
|
else
|
|
nullable5 = new float?(nullable4.GetValueOrDefault() / num);
|
|
local.sizeScaleOverride = nullable5;
|
|
}
|
|
if (Type < 0)
|
|
{
|
|
this.SetDefaultsFromNetId(Type, spawnparams);
|
|
}
|
|
else
|
|
{
|
|
this.waterMovementSpeed = this.lavaMovementSpeed = 0.5f;
|
|
this.honeyMovementSpeed = 0.25f;
|
|
this.netOffset *= 0.0f;
|
|
this.altTexture = 0;
|
|
this.townNpcVariationIndex = 0;
|
|
this.nameOver = 0.0f;
|
|
this.takenDamageMultiplier = 1f;
|
|
this.extraValue = 0;
|
|
for (int index = 0; index < this.playerInteraction.Length; ++index)
|
|
this.playerInteraction[index] = false;
|
|
this.rarity = 0;
|
|
this.dontCountMe = false;
|
|
this.releaseOwner = (short) byte.MaxValue;
|
|
this.catchItem = (short) 0;
|
|
this.needsUniqueInfoUpdate = true;
|
|
this.netStream = (byte) 32;
|
|
bool flag = false;
|
|
this.netID = 0;
|
|
this.netAlways = false;
|
|
this.netSpam = 0;
|
|
this.SpawnedFromStatue = false;
|
|
this.statsAreScaledForThisManyPlayers = 0;
|
|
this.strengthMultiplier = 1f;
|
|
int newSize = 10;
|
|
if (Type >= 0)
|
|
newSize = NPCID.Sets.TrailCacheLength[Type];
|
|
if (newSize != this.oldPos.Length)
|
|
{
|
|
Array.Resize<Vector2>(ref this.oldPos, newSize);
|
|
Array.Resize<float>(ref this.oldRot, newSize);
|
|
}
|
|
for (int index = 0; index < this.oldPos.Length; ++index)
|
|
{
|
|
this.oldRot[index] = 0.0f;
|
|
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 < 323; ++index)
|
|
this.buffImmune[index] = false;
|
|
this.setFrameSize = false;
|
|
this.buffImmune[31] = true;
|
|
this.netSkip = -2;
|
|
this.realLife = -1;
|
|
this.lifeRegen = 0;
|
|
this.lifeRegenExpectedLossPerSecond = -1;
|
|
this.lifeRegenCount = 0;
|
|
this.markedByScytheWhip = false;
|
|
this.markedByThornWhip = false;
|
|
this.markedByFireWhip = false;
|
|
this.markedByRainbowWhip = false;
|
|
this.markedByBlandWhip = false;
|
|
this.markedBySwordWhip = false;
|
|
this.markedByMaceWhip = false;
|
|
this.poisoned = false;
|
|
this.soulDrain = false;
|
|
this.venom = false;
|
|
this.shadowFlame = false;
|
|
this.onFire = false;
|
|
this.midas = false;
|
|
this.ichor = false;
|
|
this.onFrostBurn = false;
|
|
this.confused = false;
|
|
this.loveStruck = false;
|
|
this.dontTakeDamageFromHostiles = false;
|
|
this.stinky = false;
|
|
this.dryadWard = 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.housingCategory = 0;
|
|
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.GivenName = "";
|
|
this.noGravity = false;
|
|
this.scale = 1f;
|
|
this.HitSound = (LegacySoundStyle) null;
|
|
this.DeathSound = (LegacySoundStyle) null;
|
|
this.spriteDirection = -1;
|
|
this.target = (int) byte.MaxValue;
|
|
this.oldTarget = this.target;
|
|
this.targetRect = new Microsoft.Xna.Framework.Rectangle();
|
|
this.timeLeft = NPC.activeTime;
|
|
this.type = Type;
|
|
this.value = 0.0f;
|
|
this.coldDamage = false;
|
|
this.trapImmune = false;
|
|
this.hide = false;
|
|
this.immortal = false;
|
|
this.chaseable = true;
|
|
this.breath = 200;
|
|
this.breathCounter = 0;
|
|
this.reflectsProjectiles = false;
|
|
this.canGhostHeal = true;
|
|
this.javelined = false;
|
|
this.daybreak = false;
|
|
this.celled = false;
|
|
this.dryadBane = false;
|
|
this.betsysCurse = false;
|
|
this.oiled = false;
|
|
this.despawnEncouraged = false;
|
|
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.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 7;
|
|
this.defense = 2;
|
|
this.lifeMax = 25;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 18;
|
|
this.defense = 2;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 75f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 3)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 430)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 431)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 16;
|
|
this.defense = 8;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 80f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 432)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 16;
|
|
this.defense = 8;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 65f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 433)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 13;
|
|
this.defense = 6;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 55f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 434)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 13;
|
|
this.defense = 8;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 80f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 435)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 16;
|
|
this.defense = 4;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 70f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 436)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 12;
|
|
this.defense = 4;
|
|
this.lifeMax = 38;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 65f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 4)
|
|
{
|
|
this.width = 100;
|
|
this.height = 110;
|
|
this.aiStyle = 4;
|
|
this.damage = 15;
|
|
this.defense = 12;
|
|
this.lifeMax = 2800;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.SpawnWithHigherTime(30);
|
|
this.boss = true;
|
|
this.value = 30000f;
|
|
this.npcSlots = 5f;
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 5;
|
|
this.damage = 12;
|
|
this.defense = 0;
|
|
this.lifeMax = 8;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
}
|
|
else if (this.type == 6)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 5;
|
|
this.damage = 22;
|
|
this.defense = 8;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 90f;
|
|
}
|
|
else if (this.type == 7)
|
|
{
|
|
this.npcSlots = 3.5f;
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.damage = 31;
|
|
this.defense = 2;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 16;
|
|
this.defense = 6;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 140f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 9)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 13;
|
|
this.defense = 10;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 140f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 10)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 8;
|
|
this.defense = 0;
|
|
this.lifeMax = 30;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 40f;
|
|
}
|
|
else if (this.type == 11)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 4;
|
|
this.defense = 4;
|
|
this.lifeMax = 30;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 40f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 12)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 4;
|
|
this.defense = 6;
|
|
this.lifeMax = 30;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 40f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 13)
|
|
{
|
|
this.npcSlots = 5f;
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 22;
|
|
this.defense = 2;
|
|
this.lifeMax = 150;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 800f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 14)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 13;
|
|
this.defense = 4;
|
|
this.lifeMax = 150;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 800f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.dontCountMe = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 15)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 11;
|
|
this.defense = 8;
|
|
this.lifeMax = 150;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 800f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.dontCountMe = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 16)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 36;
|
|
this.height = 24;
|
|
this.aiStyle = 1;
|
|
this.damage = 20;
|
|
this.defense = 7;
|
|
this.lifeMax = 90;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 21)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
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.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 23)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 5;
|
|
this.damage = 40;
|
|
this.defense = 6;
|
|
this.lifeMax = 26;
|
|
this.HitSound = SoundID.NPCHit3;
|
|
this.DeathSound = SoundID.NPCDeath3;
|
|
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.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 30;
|
|
this.defense = 16;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.lavaImmune = true;
|
|
this.value = 350f;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 25)
|
|
{
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 30;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = SoundID.NPCHit3;
|
|
this.DeathSound = SoundID.NPCDeath3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.alpha = 100;
|
|
}
|
|
else if (this.type == 31)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 26;
|
|
this.defense = 8;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.8f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 32)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 20;
|
|
this.defense = 2;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 140f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 33)
|
|
{
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 20;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = SoundID.NPCHit3;
|
|
this.DeathSound = SoundID.NPCDeath3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.knockBackResist = 0.0f;
|
|
}
|
|
else if (this.type == 34)
|
|
{
|
|
this.width = 26;
|
|
this.height = 28;
|
|
this.aiStyle = 10;
|
|
this.damage = 35;
|
|
this.defense = 6;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
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.width = 80;
|
|
this.height = 102;
|
|
this.aiStyle = 11;
|
|
this.damage = 32;
|
|
this.defense = 10;
|
|
this.lifeMax = 4400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
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;
|
|
this.buffImmune[189] = this.buffImmune[169] = this.buffImmune[183] = true;
|
|
}
|
|
else if (this.type == 36)
|
|
{
|
|
this.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 12;
|
|
this.damage = 20;
|
|
this.defense = 14;
|
|
this.lifeMax = 600;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
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.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 38)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 39)
|
|
{
|
|
this.npcSlots = 6f;
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 30;
|
|
this.defense = 10;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
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.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 15;
|
|
this.defense = 12;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
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;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 41)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 10;
|
|
this.defense = 18;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
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;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 42)
|
|
{
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 26;
|
|
this.defense = 12;
|
|
this.lifeMax = 48;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.5f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 200f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 43)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 13;
|
|
this.damage = 34;
|
|
this.defense = 10;
|
|
this.lifeMax = 110;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.0f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 350f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 44)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 22;
|
|
this.defense = 9;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 250f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 45)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 5000f;
|
|
this.buffImmune[20] = true;
|
|
this.rarity = 4;
|
|
}
|
|
else if (this.type == 46 || this.type == 303 || this.type == 337 || this.type == 540)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2019;
|
|
}
|
|
else if (this.type == 47)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 48)
|
|
{
|
|
this.width = 24;
|
|
this.height = 34;
|
|
this.aiStyle = 14;
|
|
this.damage = 25;
|
|
this.defense = 8;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 300f;
|
|
}
|
|
else if (this.type == 49)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 22;
|
|
this.height = 18;
|
|
this.aiStyle = 14;
|
|
this.damage = 13;
|
|
this.defense = 2;
|
|
this.lifeMax = 16;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.value = 90f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 50)
|
|
{
|
|
this.boss = true;
|
|
this.width = 98;
|
|
this.height = 92;
|
|
this.aiStyle = 15;
|
|
this.damage = 40;
|
|
this.defense = 10;
|
|
this.lifeMax = 2000;
|
|
this.knockBackResist = 0.0f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 30;
|
|
this.value = 10000f;
|
|
this.scale = 1.25f;
|
|
this.buffImmune[20] = true;
|
|
this.SpawnWithHigherTime(30);
|
|
}
|
|
else if (this.type == 51)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 22;
|
|
this.height = 18;
|
|
this.aiStyle = 14;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 34;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.value = 80f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 52)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 53)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 8;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 54)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 55)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 20;
|
|
this.height = 18;
|
|
this.aiStyle = 16;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.catchItem = (short) 261;
|
|
}
|
|
else if (this.type == 56)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 13;
|
|
this.damage = 25;
|
|
this.defense = 10;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.0f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 90f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 57)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 30;
|
|
this.defense = 6;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 58)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 25;
|
|
this.defense = 2;
|
|
this.lifeMax = 30;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 50f;
|
|
}
|
|
else if (this.type == 59)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 15;
|
|
this.defense = 10;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 22;
|
|
this.height = 18;
|
|
this.aiStyle = 14;
|
|
this.damage = 35;
|
|
this.defense = 8;
|
|
this.lifeMax = 46;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
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.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 17;
|
|
this.damage = 15;
|
|
this.defense = 4;
|
|
this.lifeMax = 40;
|
|
this.knockBackResist = 0.8f;
|
|
this.HitSound = SoundID.NPCHit28;
|
|
this.DeathSound = SoundID.NPCDeath31;
|
|
this.value = 60f;
|
|
}
|
|
else if (this.type == 62)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 28;
|
|
this.height = 48;
|
|
this.aiStyle = 14;
|
|
this.damage = 32;
|
|
this.defense = 8;
|
|
this.lifeMax = 120;
|
|
this.HitSound = SoundID.NPCHit21;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath24;
|
|
this.value = 300f;
|
|
this.lavaImmune = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 63)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 25;
|
|
this.defense = 4;
|
|
this.lifeMax = 34;
|
|
this.HitSound = SoundID.NPCHit25;
|
|
this.DeathSound = SoundID.NPCDeath28;
|
|
this.value = 100f;
|
|
this.alpha = 20;
|
|
}
|
|
else if (this.type == 64)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 30;
|
|
this.defense = 6;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit25;
|
|
this.DeathSound = SoundID.NPCDeath28;
|
|
this.value = 100f;
|
|
this.alpha = 20;
|
|
}
|
|
else if (this.type == 65)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 24;
|
|
this.aiStyle = 16;
|
|
this.damage = 40;
|
|
this.defense = 2;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 400f;
|
|
this.knockBackResist = 0.7f;
|
|
}
|
|
else if (this.type == 66)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 28;
|
|
this.height = 48;
|
|
this.aiStyle = 14;
|
|
this.damage = 32;
|
|
this.defense = 8;
|
|
this.lifeMax = 140;
|
|
this.HitSound = SoundID.NPCHit21;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath24;
|
|
this.value = 1000f;
|
|
this.lavaImmune = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 67)
|
|
{
|
|
this.width = 28;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 60f;
|
|
}
|
|
else if (this.type == 68)
|
|
{
|
|
this.width = 80;
|
|
this.height = 102;
|
|
this.aiStyle = 11;
|
|
this.damage = 1000;
|
|
this.defense = 9999;
|
|
this.lifeMax = 9999;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[189] = this.buffImmune[169] = this.buffImmune[183] = true;
|
|
}
|
|
else if (this.type == 69)
|
|
{
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 19;
|
|
this.damage = 10;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit31;
|
|
this.DeathSound = SoundID.NPCDeath34;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 60f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 70)
|
|
{
|
|
this.npcSlots = 0.3f;
|
|
this.width = 34;
|
|
this.height = 34;
|
|
this.aiStyle = 20;
|
|
this.damage = 32;
|
|
this.defense = 100;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 36;
|
|
this.height = 24;
|
|
this.aiStyle = 1;
|
|
this.damage = 30;
|
|
this.defense = 7;
|
|
this.lifeMax = 150;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 60;
|
|
this.value = 150f;
|
|
this.scale = 1.25f;
|
|
this.knockBackResist = 0.6f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 72)
|
|
{
|
|
this.npcSlots = 0.3f;
|
|
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.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.scale = 0.95f;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 200f;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 74 || this.type == 297 || this.type == 298)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 24;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
if (this.type == 74)
|
|
this.catchItem = (short) 2015;
|
|
if (this.type == 297)
|
|
this.catchItem = (short) 2016;
|
|
if (this.type == 298)
|
|
this.catchItem = (short) 2017;
|
|
this.npcSlots = 0.4f;
|
|
}
|
|
else if (this.type == 75)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 22;
|
|
this.damage = 55;
|
|
this.defense = 20;
|
|
this.lifeMax = 150;
|
|
this.HitSound = SoundID.NPCHit5;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath7;
|
|
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.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 40;
|
|
this.defense = 28;
|
|
this.lifeMax = 260;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 78)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 16;
|
|
this.lifeMax = 130;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 600f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 79)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 18;
|
|
this.lifeMax = 180;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 700f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 80)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 55;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 700f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 81)
|
|
{
|
|
this.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 1;
|
|
this.damage = 55;
|
|
this.defense = 20;
|
|
this.lifeMax = 170;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 22;
|
|
this.damage = 65;
|
|
this.defense = 16;
|
|
this.lifeMax = 160;
|
|
this.HitSound = SoundID.NPCHit54;
|
|
this.DeathSound = SoundID.NPCDeath52;
|
|
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.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 23;
|
|
this.damage = 80;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
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.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 23;
|
|
this.damage = 80;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
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.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 25;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 100000f;
|
|
this.knockBackResist = 0.3f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.rarity = 4;
|
|
}
|
|
else if (this.type == 86)
|
|
{
|
|
this.width = 46;
|
|
this.height = 42;
|
|
this.aiStyle = 26;
|
|
this.damage = 65;
|
|
this.defense = 30;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit12;
|
|
this.DeathSound = SoundID.NPCDeath18;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 87)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.npcSlots = 5f;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 80;
|
|
this.defense = 10;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath8;
|
|
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.noTileCollide = true;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath8;
|
|
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;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 89)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath8;
|
|
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;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 90)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath8;
|
|
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;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 91)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath8;
|
|
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;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 92)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath8;
|
|
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;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 93)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 26;
|
|
this.height = 20;
|
|
this.aiStyle = 14;
|
|
this.damage = 45;
|
|
this.defense = 16;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.75f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.value = 400f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 94)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 44;
|
|
this.height = 44;
|
|
this.aiStyle = 5;
|
|
this.damage = 60;
|
|
this.defense = 32;
|
|
this.lifeMax = 230;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 95)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 45;
|
|
this.defense = 10;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 28;
|
|
this.defense = 20;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.scale = 0.9f;
|
|
this.value = 300f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 97)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 26;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.scale = 0.9f;
|
|
this.value = 300f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 98)
|
|
{
|
|
this.npcSlots = 3.5f;
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 70;
|
|
this.defense = 36;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
}
|
|
else if (this.type == 99)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 55;
|
|
this.defense = 40;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 100)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 44;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 101)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.behindTiles = true;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 13;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 320;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.2f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 600f;
|
|
}
|
|
else if (this.type == 102)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 80;
|
|
this.defense = 22;
|
|
this.lifeMax = 90;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 103)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 120;
|
|
this.HitSound = SoundID.NPCHit25;
|
|
this.DeathSound = SoundID.NPCDeath28;
|
|
this.value = 800f;
|
|
this.alpha = 20;
|
|
}
|
|
else if (this.type == 104)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 38;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit6;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 105)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 34;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 106)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 107)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 108)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 109)
|
|
{
|
|
this.width = 34;
|
|
this.height = 78;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 25;
|
|
this.lifeMax = 800;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 10000f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 110)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 45;
|
|
this.defense = 14;
|
|
this.lifeMax = 210;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 112)
|
|
{
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 65;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = (LegacySoundStyle) null;
|
|
this.DeathSound = SoundID.NPCDeath9;
|
|
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.width = 100;
|
|
this.height = 100;
|
|
this.aiStyle = 27;
|
|
this.damage = 50;
|
|
this.defense = 12;
|
|
this.lifeMax = 8000;
|
|
this.HitSound = SoundID.NPCHit8;
|
|
this.DeathSound = SoundID.NPCDeath10;
|
|
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.width = 100;
|
|
this.height = 100;
|
|
this.aiStyle = 28;
|
|
this.damage = 50;
|
|
this.defense = 0;
|
|
this.lifeMax = 8000;
|
|
this.HitSound = SoundID.NPCHit8;
|
|
this.DeathSound = SoundID.NPCDeath10;
|
|
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.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 29;
|
|
this.damage = 30;
|
|
this.defense = 10;
|
|
this.lifeMax = 240;
|
|
this.HitSound = SoundID.NPCHit9;
|
|
this.DeathSound = SoundID.NPCDeath11;
|
|
this.noGravity = true;
|
|
this.behindTiles = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 1.1f;
|
|
}
|
|
else if (this.type == 116)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 30;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit9;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath12;
|
|
}
|
|
else if (this.type == 117)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 26;
|
|
this.defense = 2;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit9;
|
|
this.DeathSound = SoundID.NPCDeath12;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 118)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 22;
|
|
this.defense = 6;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit9;
|
|
this.DeathSound = SoundID.NPCDeath12;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 119)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 18;
|
|
this.defense = 10;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit9;
|
|
this.DeathSound = SoundID.NPCDeath12;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 120)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 40;
|
|
this.defense = 30;
|
|
this.lifeMax = 370;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
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.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 14;
|
|
this.damage = 45;
|
|
this.defense = 20;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
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.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 22;
|
|
this.damage = 60;
|
|
this.defense = 22;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 600f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 123)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 34;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 0.9f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 124)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 125)
|
|
{
|
|
this.width = 100;
|
|
this.height = 110;
|
|
this.aiStyle = 30;
|
|
this.defense = 10;
|
|
this.damage = 45;
|
|
this.lifeMax = 20000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.SpawnWithHigherTime(30);
|
|
this.boss = true;
|
|
this.value = 120000f;
|
|
this.npcSlots = 5f;
|
|
}
|
|
else if (this.type == 126)
|
|
{
|
|
this.width = 100;
|
|
this.height = 110;
|
|
this.aiStyle = 31;
|
|
this.defense = 10;
|
|
this.damage = 50;
|
|
this.lifeMax = 23000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.SpawnWithHigherTime(30);
|
|
this.boss = true;
|
|
this.value = 120000f;
|
|
this.npcSlots = 5f;
|
|
}
|
|
else if (this.type == (int) sbyte.MaxValue)
|
|
{
|
|
this.width = 80;
|
|
this.height = 102;
|
|
this.aiStyle = 32;
|
|
this.damage = 47;
|
|
this.defense = 24;
|
|
this.lifeMax = 28000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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.buffImmune[189] = this.buffImmune[169] = this.buffImmune[183] = true;
|
|
this.boss = true;
|
|
}
|
|
else if (this.type == 128)
|
|
{
|
|
this.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 35;
|
|
this.damage = 30;
|
|
this.defense = 23;
|
|
this.lifeMax = 7000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 33;
|
|
this.damage = 56;
|
|
this.defense = 38;
|
|
this.lifeMax = 9000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 34;
|
|
this.damage = 52;
|
|
this.defense = 34;
|
|
this.lifeMax = 9000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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.width = 52;
|
|
this.height = 52;
|
|
this.aiStyle = 36;
|
|
this.damage = 29;
|
|
this.defense = 20;
|
|
this.lifeMax = 6000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 15;
|
|
this.defense = 5;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 65f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 133)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 134)
|
|
{
|
|
this.npcSlots = 5f;
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 37;
|
|
this.defense = 0;
|
|
this.damage = 70;
|
|
this.lifeMax = 80000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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;
|
|
flag = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 135)
|
|
{
|
|
this.npcSlots = 5f;
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 37;
|
|
this.damage = 55;
|
|
this.defense = 30;
|
|
this.lifeMax = 80000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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;
|
|
flag = true;
|
|
this.dontCountMe = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 136)
|
|
{
|
|
this.npcSlots = 5f;
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 37;
|
|
this.damage = 40;
|
|
this.defense = 35;
|
|
this.lifeMax = 80000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
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;
|
|
flag = true;
|
|
this.dontCountMe = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 139)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 5;
|
|
this.damage = 50;
|
|
this.defense = 20;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.8f;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 137)
|
|
{
|
|
this.width = 26;
|
|
this.height = 20;
|
|
this.aiStyle = 14;
|
|
this.damage = 75;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.75f;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
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.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 180;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
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 == 140)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 55;
|
|
this.defense = 28;
|
|
this.lifeMax = 260;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
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.width = 34;
|
|
this.height = 28;
|
|
this.aiStyle = 1;
|
|
this.damage = 50;
|
|
this.defense = 18;
|
|
this.lifeMax = 150;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
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.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 143)
|
|
{
|
|
this.width = 26;
|
|
this.height = 40;
|
|
this.aiStyle = 38;
|
|
this.damage = 50;
|
|
this.defense = 20;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit11;
|
|
this.DeathSound = SoundID.NPCDeath15;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 144)
|
|
{
|
|
this.width = 26;
|
|
this.height = 40;
|
|
this.aiStyle = 38;
|
|
this.damage = 65;
|
|
this.defense = 26;
|
|
this.lifeMax = 240;
|
|
this.HitSound = SoundID.NPCHit11;
|
|
this.DeathSound = SoundID.NPCDeath15;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 145)
|
|
{
|
|
this.width = 26;
|
|
this.height = 40;
|
|
this.aiStyle = 38;
|
|
this.damage = 55;
|
|
this.defense = 22;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit11;
|
|
this.DeathSound = SoundID.NPCDeath15;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 400f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 147)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 8;
|
|
this.defense = 4;
|
|
this.lifeMax = 30;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 50;
|
|
this.value = 50f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 148)
|
|
{
|
|
this.width = 16;
|
|
this.height = 34;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2205;
|
|
}
|
|
else if (this.type == 149)
|
|
{
|
|
this.width = 16;
|
|
this.height = 34;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2205;
|
|
}
|
|
else if (this.type == 150)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 14;
|
|
this.damage = 18;
|
|
this.defense = 6;
|
|
this.lifeMax = 30;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.value = 250f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 151)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 14;
|
|
this.damage = 50;
|
|
this.defense = 16;
|
|
this.lifeMax = 160;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.value = 400f;
|
|
this.scale = 1.15f;
|
|
this.lavaImmune = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 152)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 38;
|
|
this.height = 34;
|
|
this.aiStyle = 14;
|
|
this.damage = 80;
|
|
this.defense = 24;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.65f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.value = 400f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 153)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 46;
|
|
this.height = 32;
|
|
this.aiStyle = 39;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 470;
|
|
this.HitSound = SoundID.NPCHit24;
|
|
this.knockBackResist = 0.3f;
|
|
this.DeathSound = SoundID.NPCDeath27;
|
|
this.value = 500f;
|
|
this.noGravity = false;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 154)
|
|
{
|
|
this.npcSlots = 1.5f;
|
|
this.width = 46;
|
|
this.height = 32;
|
|
this.aiStyle = 39;
|
|
this.damage = 55;
|
|
this.defense = 28;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit24;
|
|
this.knockBackResist = 0.3f;
|
|
this.DeathSound = SoundID.NPCDeath27;
|
|
this.value = 450f;
|
|
this.noGravity = false;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 155)
|
|
{
|
|
this.width = 46;
|
|
this.height = 30;
|
|
this.aiStyle = 26;
|
|
this.damage = 65;
|
|
this.defense = 30;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 156)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 28;
|
|
this.height = 48;
|
|
this.aiStyle = 14;
|
|
this.damage = 50;
|
|
this.defense = 40;
|
|
this.lifeMax = 600;
|
|
this.HitSound = SoundID.NPCHit21;
|
|
this.knockBackResist = 0.5f;
|
|
this.DeathSound = SoundID.NPCDeath24;
|
|
this.value = 1200f;
|
|
this.lavaImmune = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 157)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.width = 74;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 75;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 160)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 161)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 16;
|
|
this.defense = 8;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 80f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 163)
|
|
{
|
|
this.width = 50;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 90;
|
|
this.defense = 40;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit29;
|
|
this.DeathSound = SoundID.NPCDeath32;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.5f;
|
|
this.SpawnWithHigherTime(2);
|
|
}
|
|
else if (this.type == 238)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 40;
|
|
this.damage = 100;
|
|
this.defense = 40;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit29;
|
|
this.DeathSound = SoundID.NPCDeath32;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 500f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.npcSlots = 0.5f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 164)
|
|
{
|
|
this.width = 50;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 30;
|
|
this.defense = 10;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit29;
|
|
this.DeathSound = SoundID.NPCDeath32;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 100f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.npcSlots = 0.5f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 165)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 40;
|
|
this.damage = 30;
|
|
this.defense = 10;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit29;
|
|
this.DeathSound = SoundID.NPCDeath32;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 100f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.npcSlots = 0.5f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 167)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 24;
|
|
this.defense = 10;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 200f;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 168)
|
|
{
|
|
this.width = 16;
|
|
this.height = 34;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 169)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 22;
|
|
this.damage = 55;
|
|
this.defense = 20;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit5;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath7;
|
|
this.value = 1500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[44] = true;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 170)
|
|
{
|
|
this.width = 44;
|
|
this.height = 36;
|
|
this.aiStyle = 2;
|
|
this.damage = 70;
|
|
this.defense = 16;
|
|
this.lifeMax = 210;
|
|
this.HitSound = SoundID.NPCHit27;
|
|
this.DeathSound = SoundID.NPCDeath30;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 2000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 171)
|
|
{
|
|
this.width = 44;
|
|
this.height = 36;
|
|
this.aiStyle = 2;
|
|
this.damage = 70;
|
|
this.defense = 16;
|
|
this.lifeMax = 210;
|
|
this.HitSound = SoundID.NPCHit27;
|
|
this.DeathSound = SoundID.NPCDeath30;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 2000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 172)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 200;
|
|
this.defense = 30;
|
|
this.lifeMax = 600;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 5000f;
|
|
this.buffImmune[20] = true;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 173)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 5;
|
|
this.damage = 22;
|
|
this.defense = 8;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 90f;
|
|
}
|
|
else if (this.type == 174)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 52;
|
|
this.height = 26;
|
|
this.aiStyle = 41;
|
|
this.damage = 65;
|
|
this.defense = 26;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 450f;
|
|
}
|
|
else if (this.type == 175)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 13;
|
|
this.damage = 100;
|
|
this.defense = 30;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.25f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 650f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 176)
|
|
{
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 70;
|
|
this.defense = 22;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.5f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 600f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
this.npcSlots = 1.5f;
|
|
}
|
|
else if (this.type == 177)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 58;
|
|
this.height = 44;
|
|
this.aiStyle = 41;
|
|
this.damage = 80;
|
|
this.defense = 26;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit22;
|
|
this.DeathSound = SoundID.NPCDeath25;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 178)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 179)
|
|
{
|
|
this.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 23;
|
|
this.damage = 80;
|
|
this.defense = 18;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 180)
|
|
{
|
|
this.width = 44;
|
|
this.height = 36;
|
|
this.aiStyle = 2;
|
|
this.damage = 70;
|
|
this.defense = 16;
|
|
this.lifeMax = 210;
|
|
this.HitSound = SoundID.NPCHit27;
|
|
this.DeathSound = SoundID.NPCDeath30;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 4000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 181)
|
|
{
|
|
this.width = 18;
|
|
this.height = 44;
|
|
this.aiStyle = 3;
|
|
this.damage = 25;
|
|
this.defense = 10;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 200f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 182)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 24;
|
|
this.height = 62;
|
|
this.aiStyle = 22;
|
|
this.damage = 65;
|
|
this.defense = 18;
|
|
this.lifeMax = 240;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
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 == 183)
|
|
{
|
|
this.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 1;
|
|
this.damage = 60;
|
|
this.defense = 26;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 55;
|
|
this.value = 400f;
|
|
this.scale = 1.1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 184)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 12;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.scale = 1.1f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 50;
|
|
this.value = 200f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 185)
|
|
{
|
|
this.width = 28;
|
|
this.height = 28;
|
|
this.aiStyle = 3;
|
|
this.damage = 26;
|
|
this.defense = 12;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 1.1f;
|
|
this.value = 200f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 186)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 16;
|
|
this.defense = 8;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 65f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 187)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 13;
|
|
this.defense = 6;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 55f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 188)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 13;
|
|
this.defense = 8;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 80f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 189)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 16;
|
|
this.defense = 4;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 70f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 190)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 18;
|
|
this.defense = 4;
|
|
this.lifeMax = 65;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.7f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 75f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 191)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 16;
|
|
this.defense = 2;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.85f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 75f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 192)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 18;
|
|
this.defense = 2;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 75f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 193)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 20;
|
|
this.defense = 0;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 75f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 194)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 14;
|
|
this.defense = 4;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 75f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 195)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 42;
|
|
this.damage = 10;
|
|
this.defense = 30;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.rarity = 1;
|
|
this.value = (float) Item.buyPrice(gold: 5);
|
|
}
|
|
else if (this.type == 196)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 35;
|
|
this.defense = 16;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = (float) Item.buyPrice(gold: 5);
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 197)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 28;
|
|
this.lifeMax = 280;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 198)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 38;
|
|
this.defense = 20;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit26;
|
|
this.DeathSound = SoundID.NPCDeath29;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 650f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 199)
|
|
{
|
|
this.width = 42;
|
|
this.height = 30;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 30;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit26;
|
|
this.DeathSound = SoundID.NPCDeath29;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 650f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 200)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 12;
|
|
this.defense = 4;
|
|
this.lifeMax = 38;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 65f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 201)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 12;
|
|
this.lifeMax = 55;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 202)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 18;
|
|
this.defense = 8;
|
|
this.lifeMax = 65;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 120f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 203)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 22;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 110f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 204)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 28;
|
|
this.defense = 8;
|
|
this.lifeMax = 65;
|
|
this.scale = 1.15f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 50;
|
|
this.value = 300f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 205)
|
|
{
|
|
this.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 5;
|
|
this.damage = 70;
|
|
this.defense = 28;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.4f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 600f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 206)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 30;
|
|
this.lifeMax = 280;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 207)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 208)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 209)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 210)
|
|
{
|
|
this.width = 12;
|
|
this.height = 12;
|
|
this.aiStyle = 5;
|
|
this.damage = 20;
|
|
this.defense = 5;
|
|
this.lifeMax = 20;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.5f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 211)
|
|
{
|
|
this.width = 8;
|
|
this.height = 8;
|
|
this.aiStyle = 5;
|
|
this.damage = 15;
|
|
this.defense = 2;
|
|
this.lifeMax = 10;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.5f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 212)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 35;
|
|
this.defense = 17;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 700f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 213)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 22;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 214)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 30;
|
|
this.defense = 14;
|
|
this.lifeMax = 225;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 215)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 35;
|
|
this.defense = 20;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.35f;
|
|
this.value = 1500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 216)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 3000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 50000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = true;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 217)
|
|
{
|
|
this.width = 28;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath16;
|
|
this.value = 60f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 218)
|
|
{
|
|
this.width = 28;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath16;
|
|
this.value = 60f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 219)
|
|
{
|
|
this.width = 28;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath16;
|
|
this.value = 60f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 220)
|
|
{
|
|
this.width = 28;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 60f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 221)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 20;
|
|
this.defense = 2;
|
|
this.lifeMax = 30;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 100f;
|
|
this.alpha = 20;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 222)
|
|
{
|
|
this.width = 66;
|
|
this.height = 66;
|
|
this.aiStyle = 43;
|
|
this.damage = 30;
|
|
this.defense = 8;
|
|
this.lifeMax = 3400;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.SpawnWithHigherTime(30);
|
|
this.boss = true;
|
|
this.value = 50000f;
|
|
this.npcSlots = 7f;
|
|
}
|
|
else if (this.type == 223)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 16;
|
|
this.defense = 8;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 70f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 224)
|
|
{
|
|
this.width = 32;
|
|
this.height = 18;
|
|
this.aiStyle = 44;
|
|
this.damage = 9;
|
|
this.defense = 4;
|
|
this.lifeMax = 20;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 300f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
if (this.type == 225)
|
|
{
|
|
this.width = 38;
|
|
this.height = 26;
|
|
this.aiStyle = 1;
|
|
this.damage = 10;
|
|
this.defense = 5;
|
|
this.lifeMax = 35;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.75f;
|
|
this.value = 200f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 226)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 34;
|
|
this.height = 50;
|
|
this.aiStyle = 14;
|
|
this.damage = 85;
|
|
this.defense = 28;
|
|
this.lifeMax = 260;
|
|
this.HitSound = SoundID.NPCHit23;
|
|
this.knockBackResist = 0.65f;
|
|
this.DeathSound = SoundID.NPCDeath26;
|
|
this.value = 400f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 227)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 228)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 229)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 230)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 261;
|
|
}
|
|
else if (this.type == 231)
|
|
{
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 22;
|
|
this.defense = 16;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.3f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 200f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 232)
|
|
{
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 28;
|
|
this.defense = 12;
|
|
this.lifeMax = 42;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 200f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 233)
|
|
{
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 30;
|
|
this.defense = 14;
|
|
this.lifeMax = 38;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.45f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 200f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 234)
|
|
{
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 32;
|
|
this.defense = 6;
|
|
this.lifeMax = 42;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.55f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 200f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 235)
|
|
{
|
|
this.width = 34;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 34;
|
|
this.defense = 4;
|
|
this.lifeMax = 38;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 200f;
|
|
this.noGravity = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 236)
|
|
{
|
|
this.width = 50;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 14;
|
|
this.lifeMax = 120;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 1000f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.npcSlots = 0.75f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 237)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 40;
|
|
this.damage = 50;
|
|
this.defense = 14;
|
|
this.lifeMax = 120;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 1000f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.npcSlots = 0.75f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 239)
|
|
{
|
|
this.width = 50;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 30;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit20;
|
|
this.DeathSound = SoundID.NPCDeath23;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 130f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 240)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 40;
|
|
this.damage = 30;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit20;
|
|
this.DeathSound = SoundID.NPCDeath23;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 130f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 241)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 30;
|
|
this.defense = 4;
|
|
this.lifeMax = 20;
|
|
this.HitSound = SoundID.NPCHit13;
|
|
this.DeathSound = SoundID.NPCDeath19;
|
|
this.value = 350f;
|
|
}
|
|
else if (this.type == 242)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 75;
|
|
this.defense = 20;
|
|
this.lifeMax = 150;
|
|
this.HitSound = SoundID.NPCHit13;
|
|
this.DeathSound = SoundID.NPCDeath19;
|
|
this.value = 800f;
|
|
this.alpha = 20;
|
|
}
|
|
else if (this.type == 243)
|
|
{
|
|
this.width = 30;
|
|
this.height = 114;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 32;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit5;
|
|
this.DeathSound = SoundID.NPCDeath7;
|
|
this.knockBackResist = 0.05f;
|
|
this.value = (float) Item.buyPrice(gold: 1, silver: 50);
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[44] = true;
|
|
this.coldDamage = true;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 244)
|
|
{
|
|
this.width = 60;
|
|
this.height = 42;
|
|
this.aiStyle = 1;
|
|
this.damage = 85;
|
|
this.defense = 26;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 175;
|
|
this.value = (float) Item.buyPrice(silver: 20);
|
|
this.knockBackResist = 0.3f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 245)
|
|
{
|
|
this.width = 140;
|
|
this.height = 140;
|
|
this.aiStyle = 45;
|
|
this.damage = 72;
|
|
this.defense = 26;
|
|
this.lifeMax = 9000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = (float) Item.buyPrice(gold: 15);
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.boss = true;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 246)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 70;
|
|
this.height = 70;
|
|
this.aiStyle = 46;
|
|
this.damage = 64;
|
|
this.defense = 20;
|
|
this.lifeMax = 16000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = (LegacySoundStyle) null;
|
|
this.knockBackResist = 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 247 || this.type == 248)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 47;
|
|
this.damage = 59;
|
|
this.defense = 28;
|
|
this.lifeMax = 7000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 249)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 70;
|
|
this.height = 70;
|
|
this.aiStyle = 48;
|
|
this.damage = 80;
|
|
this.defense = 32;
|
|
this.lifeMax = 11000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.knockBackResist = 0.0f;
|
|
this.dontTakeDamage = true;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 250)
|
|
{
|
|
this.width = 34;
|
|
this.height = 26;
|
|
this.aiStyle = 49;
|
|
this.damage = 50;
|
|
this.defense = 24;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit30;
|
|
this.DeathSound = SoundID.NPCDeath33;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 300f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 251)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 30;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = (float) Item.buyPrice(silver: 50);
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 252)
|
|
{
|
|
this.noGravity = true;
|
|
this.npcSlots = 0.5f;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 5;
|
|
this.damage = 80;
|
|
this.defense = 12;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit46;
|
|
this.knockBackResist = 0.7f;
|
|
this.DeathSound = SoundID.NPCDeath48;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 254)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 40;
|
|
this.defense = 10;
|
|
this.lifeMax = 180;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == (int) byte.MaxValue)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 38;
|
|
this.defense = 16;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1200f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 256)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 18;
|
|
this.damage = 90;
|
|
this.defense = 20;
|
|
this.lifeMax = 140;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 1200f;
|
|
this.alpha = 20;
|
|
this.npcSlots = 0.3f;
|
|
}
|
|
else if (this.type == 257)
|
|
{
|
|
this.width = 44;
|
|
this.height = 34;
|
|
this.aiStyle = 3;
|
|
this.damage = 38;
|
|
this.defense = 24;
|
|
this.lifeMax = 230;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1300f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.3f;
|
|
}
|
|
else if (this.type == 258)
|
|
{
|
|
this.width = 30;
|
|
this.height = 24;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 16;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit45;
|
|
this.DeathSound = SoundID.NPCDeath47;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1500f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.3f;
|
|
}
|
|
else if (this.type == 259)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 13;
|
|
this.damage = 24;
|
|
this.defense = 4;
|
|
this.lifeMax = 90;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.0f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 350f;
|
|
this.buffImmune[20] = true;
|
|
this.npcSlots = 0.3f;
|
|
}
|
|
else if (this.type == 260)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 13;
|
|
this.damage = 70;
|
|
this.defense = 20;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.0f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 1250f;
|
|
this.buffImmune[20] = true;
|
|
this.npcSlots = 0.3f;
|
|
}
|
|
else if (this.type == 261)
|
|
{
|
|
this.width = 12;
|
|
this.height = 12;
|
|
this.aiStyle = 50;
|
|
this.damage = 80;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 262)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.width = 86;
|
|
this.height = 86;
|
|
this.aiStyle = 51;
|
|
this.damage = 50;
|
|
this.defense = 14;
|
|
this.lifeMax = 30000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = (float) Item.buyPrice(gold: 15);
|
|
this.noGravity = true;
|
|
this.boss = true;
|
|
this.npcSlots = 16f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 263)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 52;
|
|
this.damage = 60;
|
|
this.defense = 24;
|
|
this.lifeMax = 4000;
|
|
this.dontTakeDamage = true;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 264)
|
|
{
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 53;
|
|
this.damage = 60;
|
|
this.defense = 20;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 265)
|
|
{
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 50;
|
|
this.damage = 70;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 266)
|
|
{
|
|
this.dontTakeDamage = true;
|
|
this.width = 160;
|
|
this.height = 110;
|
|
this.aiStyle = 54;
|
|
this.damage = 30;
|
|
this.defense = 14;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit9;
|
|
this.DeathSound = SoundID.NPCDeath11;
|
|
this.knockBackResist = 0.5f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.SpawnWithHigherTime(30);
|
|
this.boss = true;
|
|
this.value = 50000f;
|
|
this.npcSlots = 6f;
|
|
}
|
|
else if (this.type == 267)
|
|
{
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 55;
|
|
this.damage = 20;
|
|
this.defense = 10;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit9;
|
|
this.DeathSound = SoundID.NPCDeath11;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.8f;
|
|
}
|
|
else if (this.type == 268)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 28;
|
|
this.height = 56;
|
|
this.aiStyle = 22;
|
|
this.damage = 55;
|
|
this.defense = 20;
|
|
this.lifeMax = 340;
|
|
this.HitSound = SoundID.NPCHit13;
|
|
this.DeathSound = SoundID.NPCDeath19;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 450f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 269)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 34;
|
|
this.lifeMax = 550;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 270)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 55;
|
|
this.defense = 50;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 271)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 40;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 272)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 75;
|
|
this.defense = 28;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.35f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 273)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 45;
|
|
this.defense = 50;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.15f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 274)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 65;
|
|
this.defense = 34;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 275)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 45;
|
|
this.defense = 50;
|
|
this.lifeMax = 550;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.15f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 276)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 85;
|
|
this.defense = 54;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 277)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 32;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 278)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 65;
|
|
this.defense = 48;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 279)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 40;
|
|
this.defense = 54;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 280)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 75;
|
|
this.defense = 34;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 281)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 1500f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 282)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 35;
|
|
this.defense = 28;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1500f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 283)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 50;
|
|
this.defense = 18;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 1500f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 284)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 35;
|
|
this.defense = 24;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1500f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 285)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 50;
|
|
this.defense = 12;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 1500f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 286)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 8;
|
|
this.damage = 60;
|
|
this.defense = 10;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.65f;
|
|
this.value = 1500f;
|
|
this.npcSlots = 2f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 287)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 90;
|
|
this.defense = 42;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 2000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 288)
|
|
{
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 56;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.knockBackResist = 0.2f;
|
|
this.HitSound = SoundID.NPCHit36;
|
|
this.DeathSound = SoundID.NPCDeath39;
|
|
this.value = 500f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 289)
|
|
{
|
|
this.width = 44;
|
|
this.height = 44;
|
|
this.aiStyle = 10;
|
|
this.damage = 60;
|
|
this.defense = 20;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
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 == 290)
|
|
{
|
|
this.width = 34;
|
|
this.height = 62;
|
|
this.aiStyle = 3;
|
|
this.damage = 100;
|
|
this.defense = 50;
|
|
this.lifeMax = 5000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 50000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = true;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 291)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 28;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 292)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 28;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 293)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 28;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 294)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 34;
|
|
this.defense = 6;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.9f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 295)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 28;
|
|
this.defense = 12;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 296)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 24;
|
|
this.defense = 14;
|
|
this.lifeMax = 120;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 299)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2018;
|
|
}
|
|
else if (this.type == 300)
|
|
{
|
|
this.width = 14;
|
|
this.height = 12;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.npcSlots = 0.25f;
|
|
this.catchItem = (short) 2003;
|
|
}
|
|
else if (this.type == 301)
|
|
{
|
|
this.width = 36;
|
|
this.height = 26;
|
|
this.aiStyle = 17;
|
|
this.damage = 12;
|
|
this.defense = 2;
|
|
this.lifeMax = 35;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.85f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 50f;
|
|
}
|
|
if (this.type == 302)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 7;
|
|
this.defense = 2;
|
|
this.lifeMax = 25;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 304)
|
|
{
|
|
this.width = 34;
|
|
this.height = 28;
|
|
this.aiStyle = 1;
|
|
this.damage = 80;
|
|
this.defense = 20;
|
|
this.lifeMax = 175;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
this.scale = 1.1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.knockBackResist = 0.5f;
|
|
this.npcSlots = 0.3f;
|
|
}
|
|
else if (this.type >= 305 && this.type <= 314)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 1200f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.5f;
|
|
if (this.type == 305 || this.type == 310)
|
|
{
|
|
this.damage = 60;
|
|
this.defense = 18;
|
|
this.lifeMax = 500;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 306 || this.type == 311)
|
|
{
|
|
this.damage = 52;
|
|
this.defense = 14;
|
|
this.lifeMax = 400;
|
|
this.knockBackResist = 0.2f;
|
|
this.scale = 1.05f;
|
|
}
|
|
else if (this.type == 307 || this.type == 312)
|
|
{
|
|
this.damage = 78;
|
|
this.defense = 16;
|
|
this.lifeMax = 600;
|
|
this.knockBackResist = 0.25f;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 308 || this.type == 313)
|
|
{
|
|
this.damage = 66;
|
|
this.defense = 14;
|
|
this.lifeMax = 650;
|
|
this.knockBackResist = 0.35f;
|
|
this.scale = 0.95f;
|
|
}
|
|
else if (this.type == 309 || this.type == 314)
|
|
{
|
|
this.damage = 52;
|
|
this.defense = 26;
|
|
this.lifeMax = 450;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 1.1f;
|
|
}
|
|
}
|
|
else if (this.type == 315)
|
|
{
|
|
this.width = 74;
|
|
this.height = 70;
|
|
this.aiStyle = 26;
|
|
this.damage = 130;
|
|
this.defense = 40;
|
|
this.lifeMax = 10000;
|
|
this.HitSound = SoundID.NPCHit12;
|
|
this.DeathSound = SoundID.NPCDeath18;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 316)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 22;
|
|
this.damage = 18;
|
|
this.defense = 8;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.alpha = 100;
|
|
this.value = 90f;
|
|
flag = true;
|
|
this.knockBackResist = 0.6f;
|
|
}
|
|
else if (this.type == 317)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 16;
|
|
this.defense = 6;
|
|
this.lifeMax = 75;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.7f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 100f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 318)
|
|
{
|
|
this.width = 30;
|
|
this.height = 32;
|
|
this.aiStyle = 2;
|
|
this.damage = 20;
|
|
this.defense = 4;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.65f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 100f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 319)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 6;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 85f;
|
|
this.buffImmune[31] = false;
|
|
this.scale = 0.9f;
|
|
}
|
|
else if (this.type == 320)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 15;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 105f;
|
|
this.buffImmune[31] = false;
|
|
this.scale = 1.05f;
|
|
}
|
|
else if (this.type == 321)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 14;
|
|
this.lifeMax = 34;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 120f;
|
|
this.buffImmune[31] = false;
|
|
this.scale = 1.1f;
|
|
}
|
|
else if (this.type == 322)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 23;
|
|
this.defense = 0;
|
|
this.lifeMax = 115;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.65f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 323)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 18;
|
|
this.defense = 10;
|
|
this.lifeMax = 65;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 120f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 324)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 22;
|
|
this.defense = 10;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.scale = 1.05f;
|
|
}
|
|
else if (this.type == 325)
|
|
{
|
|
this.width = 164;
|
|
this.height = 154;
|
|
this.aiStyle = 57;
|
|
this.damage = 120;
|
|
this.defense = 28;
|
|
this.lifeMax = 12000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 326)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 100;
|
|
this.defense = 32;
|
|
this.lifeMax = 900;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 2000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 327)
|
|
{
|
|
this.width = 100;
|
|
this.height = 100;
|
|
this.aiStyle = 58;
|
|
this.damage = 50;
|
|
this.defense = 36;
|
|
this.lifeMax = 22000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.value = 50000f;
|
|
this.knockBackResist = 0.0f;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 328)
|
|
{
|
|
this.width = 80;
|
|
this.height = 80;
|
|
this.aiStyle = 59;
|
|
this.damage = 65;
|
|
this.defense = 14;
|
|
this.lifeMax = 5000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
flag = true;
|
|
this.dontTakeDamage = true;
|
|
this.npcSlots = 0.0f;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 329)
|
|
{
|
|
this.width = 46;
|
|
this.height = 30;
|
|
this.aiStyle = 26;
|
|
this.damage = 80;
|
|
this.defense = 38;
|
|
this.lifeMax = 1200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 3000f;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 330)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 22;
|
|
this.damage = 90;
|
|
this.defense = 44;
|
|
this.lifeMax = 2000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.alpha = 100;
|
|
this.value = 4500f;
|
|
flag = true;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 331)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 332)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
if (this.type == 333)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 7;
|
|
this.defense = 2;
|
|
this.lifeMax = 25;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
if (this.type == 334)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 6;
|
|
this.defense = 2;
|
|
this.lifeMax = 23;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.scale = 0.9f;
|
|
this.value = 25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
if (this.type == 335)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 8;
|
|
this.defense = 3;
|
|
this.lifeMax = 29;
|
|
this.scale = 1.05f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
if (this.type == 336)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 5;
|
|
this.defense = 1;
|
|
this.lifeMax = 22;
|
|
this.scale = 0.85f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type >= 338 && this.type <= 340)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 1200f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.5f;
|
|
if (this.type == 338)
|
|
{
|
|
this.damage = 65;
|
|
this.defense = 18;
|
|
this.lifeMax = 600;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 339)
|
|
{
|
|
this.damage = 52;
|
|
this.defense = 24;
|
|
this.lifeMax = 700;
|
|
this.knockBackResist = 0.2f;
|
|
this.scale = 1.05f;
|
|
}
|
|
else if (this.type == 340)
|
|
{
|
|
this.damage = 78;
|
|
this.defense = 14;
|
|
this.lifeMax = 500;
|
|
this.knockBackResist = 0.25f;
|
|
this.scale = 0.9f;
|
|
}
|
|
}
|
|
else if (this.type == 341)
|
|
{
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 25;
|
|
this.damage = 100;
|
|
this.defense = 32;
|
|
this.lifeMax = 900;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = (float) Item.buyPrice(silver: 20);
|
|
this.knockBackResist = 0.25f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 342)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 90;
|
|
this.defense = 26;
|
|
this.lifeMax = 750;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 1800f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 343)
|
|
{
|
|
this.width = 38;
|
|
this.height = 78;
|
|
this.aiStyle = 3;
|
|
this.damage = 140;
|
|
this.defense = 50;
|
|
this.lifeMax = 3500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 3000f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 2f;
|
|
}
|
|
else if (this.type == 344)
|
|
{
|
|
this.width = 172;
|
|
this.height = 130;
|
|
this.aiStyle = 57;
|
|
this.damage = 110;
|
|
this.defense = 38;
|
|
this.lifeMax = 13000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
this.buffImmune[20] = true;
|
|
this.npcSlots = 3f;
|
|
}
|
|
else if (this.type == 345)
|
|
{
|
|
this.width = 130;
|
|
this.height = 140;
|
|
this.aiStyle = 60;
|
|
this.damage = 120;
|
|
this.defense = 38;
|
|
this.lifeMax = 34000;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 50000f;
|
|
this.buffImmune[20] = true;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.npcSlots = 5f;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 346)
|
|
{
|
|
this.width = 112;
|
|
this.height = 140;
|
|
this.aiStyle = 61;
|
|
this.damage = 120;
|
|
this.defense = 56;
|
|
this.lifeMax = 18000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 10000f;
|
|
this.buffImmune[20] = true;
|
|
this.npcSlots = 4f;
|
|
}
|
|
else if (this.type == 347)
|
|
{
|
|
this.width = 50;
|
|
this.height = 50;
|
|
this.aiStyle = 62;
|
|
this.damage = 60;
|
|
this.defense = 28;
|
|
this.lifeMax = 1200;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.knockBackResist = 0.4f;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.value = 1000f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.npcSlots = 1.5f;
|
|
}
|
|
else if (this.type == 348)
|
|
{
|
|
this.width = 28;
|
|
this.height = 76;
|
|
this.aiStyle = 3;
|
|
this.damage = 80;
|
|
this.defense = 26;
|
|
this.lifeMax = 1800;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 1500f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 1.5f;
|
|
}
|
|
else if (this.type == 349)
|
|
{
|
|
this.width = 28;
|
|
this.height = 76;
|
|
this.aiStyle = 3;
|
|
this.damage = 100;
|
|
this.defense = 42;
|
|
this.lifeMax = 1800;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.1f;
|
|
this.value = 1500f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 1.5f;
|
|
}
|
|
else if (this.type == 350)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 900;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 900f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 351)
|
|
{
|
|
this.width = 18;
|
|
this.height = 90;
|
|
this.aiStyle = 3;
|
|
this.damage = 100;
|
|
this.defense = 40;
|
|
this.lifeMax = 2500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.1f;
|
|
this.value = 3000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 1.75f;
|
|
}
|
|
else if (this.type == 352)
|
|
{
|
|
this.width = 54;
|
|
this.height = 54;
|
|
this.aiStyle = 63;
|
|
this.damage = 75;
|
|
this.defense = 8;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.4f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.npcSlots = 2f;
|
|
this.coldDamage = true;
|
|
}
|
|
else if (this.type == 353)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 354)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 34;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 0.9f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 355)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 64;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.2f;
|
|
this.noGravity = true;
|
|
this.catchItem = (short) 1992;
|
|
}
|
|
else if (this.type == 356)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 65;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.25f;
|
|
this.noGravity = true;
|
|
this.catchItem = (short) 1994;
|
|
}
|
|
else if (this.type == 357)
|
|
{
|
|
this.width = 10;
|
|
this.height = 4;
|
|
this.aiStyle = 66;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.1f;
|
|
this.catchItem = (short) 2002;
|
|
this.friendly = true;
|
|
}
|
|
else if (this.type == 358)
|
|
{
|
|
this.width = 12;
|
|
this.height = 12;
|
|
this.aiStyle = 64;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.2f;
|
|
this.noGravity = true;
|
|
this.catchItem = (short) 2004;
|
|
}
|
|
else if (this.type == 359)
|
|
{
|
|
this.width = 12;
|
|
this.height = 12;
|
|
this.aiStyle = 67;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.catchItem = (short) 2006;
|
|
}
|
|
else if (this.type == 360)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 67;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.catchItem = (short) 2007;
|
|
}
|
|
else if (this.type == 361)
|
|
{
|
|
this.width = 12;
|
|
this.height = 10;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2121;
|
|
}
|
|
else if (this.type == 362)
|
|
{
|
|
this.width = 22;
|
|
this.height = 26;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2122;
|
|
}
|
|
else if (this.type == 363)
|
|
{
|
|
this.width = 28;
|
|
this.height = 22;
|
|
this.aiStyle = 68;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2122;
|
|
}
|
|
else if (this.type == 364)
|
|
{
|
|
this.width = 22;
|
|
this.height = 26;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2123;
|
|
}
|
|
else if (this.type == 365)
|
|
{
|
|
this.width = 28;
|
|
this.height = 22;
|
|
this.aiStyle = 68;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2123;
|
|
}
|
|
else if (this.type == 366 || this.type == 367)
|
|
{
|
|
this.width = 26;
|
|
this.height = 18;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) (2156 + this.type - 366);
|
|
}
|
|
else if (this.type == 368)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 369)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 370)
|
|
{
|
|
this.width = 150;
|
|
this.height = 100;
|
|
this.aiStyle = 69;
|
|
this.damage = 100;
|
|
this.defense = 50;
|
|
this.lifeMax = 50000;
|
|
this.knockBackResist = 0.0f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.npcSlots = 10f;
|
|
this.HitSound = SoundID.NPCHit14;
|
|
this.DeathSound = SoundID.NPCDeath20;
|
|
this.value = 250000f;
|
|
this.boss = true;
|
|
this.netAlways = true;
|
|
this.SpawnWithHigherTime(30);
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[31] = true;
|
|
this.buffImmune[44] = true;
|
|
}
|
|
else if (this.type == 371)
|
|
{
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 70;
|
|
this.damage = 100;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = SoundID.NPCHit3;
|
|
this.DeathSound = SoundID.NPCDeath3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 372)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 120;
|
|
this.height = 24;
|
|
this.aiStyle = 71;
|
|
this.damage = 100;
|
|
this.defense = 100;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 373)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 24;
|
|
this.aiStyle = 71;
|
|
this.damage = 120;
|
|
this.defense = 100;
|
|
this.lifeMax = 100;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 374)
|
|
{
|
|
this.width = 20;
|
|
this.height = 10;
|
|
this.aiStyle = 66;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.15f;
|
|
this.catchItem = (short) 2673;
|
|
this.rarity = 4;
|
|
}
|
|
else if (this.type == 375)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 6;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.npcSlots = 0.15f;
|
|
this.catchItem = (short) 2673;
|
|
}
|
|
else if (this.type == 376)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 34;
|
|
this.height = 8;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 0.9f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 377)
|
|
{
|
|
this.width = 14;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.friendly = true;
|
|
this.catchItem = (short) 2740;
|
|
this.npcSlots = 0.1f;
|
|
}
|
|
else if (this.type == 378)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 20;
|
|
this.height = 26;
|
|
this.aiStyle = 41;
|
|
this.damage = 200;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 450f;
|
|
}
|
|
else if (this.type >= 379 && this.type <= 380)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 45;
|
|
this.defense = 14;
|
|
this.lifeMax = 210;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.55f;
|
|
this.value = 1000f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.netAlways = true;
|
|
this.chaseable = false;
|
|
}
|
|
else if (this.type >= 381 && this.type <= 382)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 25;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.35f;
|
|
this.value = 1000f;
|
|
}
|
|
else if (this.type == 383)
|
|
{
|
|
this.lifeMax = 300;
|
|
this.defense = 50;
|
|
this.damage = 75;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit43;
|
|
this.DeathSound = SoundID.NPCDeath45;
|
|
this.value = 1200f;
|
|
this.knockBackResist = 0.25f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 384)
|
|
{
|
|
this.lifeMax = 1000;
|
|
this.width = 18;
|
|
this.defense = 20;
|
|
this.height = 40;
|
|
this.aiStyle = 72;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
flag = true;
|
|
this.npcSlots = 0.0f;
|
|
this.noTileCollide = true;
|
|
this.canGhostHeal = false;
|
|
}
|
|
else if (this.type == 385)
|
|
{
|
|
this.lifeMax = 750;
|
|
this.defense = 30;
|
|
this.damage = 80;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit43;
|
|
this.DeathSound = SoundID.NPCDeath45;
|
|
this.value = 600f;
|
|
this.knockBackResist = 0.0f;
|
|
this.npcSlots = 0.75f;
|
|
}
|
|
else if (this.type == 386)
|
|
{
|
|
this.lifeMax = 400;
|
|
this.defense = 34;
|
|
this.damage = 40;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit43;
|
|
this.DeathSound = SoundID.NPCDeath45;
|
|
this.value = 1200f;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 387)
|
|
{
|
|
this.width = 20;
|
|
this.height = 50;
|
|
this.aiStyle = 73;
|
|
this.damage = 10;
|
|
this.defense = 40;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit53;
|
|
this.DeathSound = SoundID.NPCDeath56;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[31] = true;
|
|
this.canGhostHeal = false;
|
|
}
|
|
else if (this.type == 388)
|
|
{
|
|
this.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 74;
|
|
this.damage = 60;
|
|
this.defense = 16;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit42;
|
|
this.knockBackResist = 0.4f;
|
|
this.DeathSound = SoundID.NPCDeath44;
|
|
this.value = 1000f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.npcSlots = 1.5f;
|
|
this.canGhostHeal = false;
|
|
}
|
|
else if (this.type == 389)
|
|
{
|
|
this.lifeMax = 600;
|
|
this.defense = 38;
|
|
this.damage = 75;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit39;
|
|
this.DeathSound = SoundID.NPCDeath57;
|
|
this.value = 1200f;
|
|
this.npcSlots = 0.5f;
|
|
this.knockBackResist = 0.3f;
|
|
}
|
|
else if (this.type == 390)
|
|
{
|
|
this.damage = 65;
|
|
this.defense = 30;
|
|
this.lifeMax = 350;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 75;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 1200f;
|
|
this.npcSlots = 0.5f;
|
|
}
|
|
else if (this.type == 391)
|
|
{
|
|
this.lifeMax = 600;
|
|
this.defense = 30;
|
|
this.damage = 85;
|
|
this.width = 60;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit51;
|
|
this.DeathSound = SoundID.NPCDeath54;
|
|
this.value = 1200f;
|
|
this.npcSlots = 0.5f;
|
|
this.knockBackResist = 0.1f;
|
|
}
|
|
else if (this.type == 392)
|
|
{
|
|
this.lifeMax = 100;
|
|
this.defense = 100;
|
|
this.damage = 50;
|
|
this.width = 150;
|
|
this.height = 80;
|
|
this.aiStyle = 75;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.dontTakeDamage = true;
|
|
flag = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 393)
|
|
{
|
|
this.lifeMax = 5000;
|
|
this.defense = 20;
|
|
this.damage = 60;
|
|
this.width = 40;
|
|
this.height = 16;
|
|
this.aiStyle = 75;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 1f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 394)
|
|
{
|
|
this.lifeMax = 3500;
|
|
this.defense = 20;
|
|
this.damage = 60;
|
|
this.width = 46;
|
|
this.height = 36;
|
|
this.aiStyle = 75;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 1f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 395)
|
|
{
|
|
this.lifeMax = 10000;
|
|
this.defense = 0;
|
|
this.damage = 80;
|
|
this.width = 46;
|
|
this.height = 36;
|
|
this.aiStyle = 76;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 6f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.dontTakeDamage = true;
|
|
this.boss = true;
|
|
flag = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 399)
|
|
{
|
|
this.defense = 5;
|
|
this.damage = 5;
|
|
this.lifeMax = 500;
|
|
this.aiStyle = 80;
|
|
this.width = 42;
|
|
this.height = 72;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.npcSlots = 0.0f;
|
|
this.noGravity = true;
|
|
this.SpawnWithHigherTime(30);
|
|
this.chaseable = false;
|
|
this.netAlways = true;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 396)
|
|
{
|
|
this.lifeMax = 45000;
|
|
this.defense = 50;
|
|
this.damage = 0;
|
|
this.width = 38;
|
|
this.height = 56;
|
|
this.aiStyle = 79;
|
|
this.HitSound = SoundID.NPCHit57;
|
|
this.DeathSound = SoundID.NPCDeath62;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 6f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.boss = true;
|
|
this.hide = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 397)
|
|
{
|
|
this.lifeMax = 25000;
|
|
this.defense = 40;
|
|
this.damage = 0;
|
|
this.width = 46;
|
|
this.height = 66;
|
|
this.aiStyle = 78;
|
|
this.HitSound = SoundID.NPCHit57;
|
|
this.DeathSound = SoundID.NPCDeath62;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 6f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.boss = true;
|
|
this.hide = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 398)
|
|
{
|
|
this.lifeMax = 50000;
|
|
this.defense = 70;
|
|
this.damage = 0;
|
|
this.width = 46;
|
|
this.height = 66;
|
|
this.aiStyle = 77;
|
|
this.HitSound = SoundID.NPCHit57;
|
|
this.DeathSound = (LegacySoundStyle) null;
|
|
this.value = 1000000f;
|
|
this.npcSlots = 6f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.dontTakeDamage = true;
|
|
this.boss = true;
|
|
this.behindTiles = true;
|
|
this.hide = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 400)
|
|
{
|
|
this.defense = 0;
|
|
this.damage = 60;
|
|
this.lifeMax = 100;
|
|
this.aiStyle = 81;
|
|
this.width = 60;
|
|
this.height = 60;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.0f;
|
|
this.noGravity = true;
|
|
this.dontTakeDamage = true;
|
|
this.noTileCollide = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 401)
|
|
{
|
|
this.lifeMax = 400;
|
|
this.defense = 0;
|
|
this.damage = 0;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 82;
|
|
this.HitSound = SoundID.NPCHit57;
|
|
this.DeathSound = SoundID.NPCDeath62;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.hide = true;
|
|
}
|
|
else if (this.type == 437)
|
|
{
|
|
this.lifeMax = 400;
|
|
this.defense = 0;
|
|
this.damage = 0;
|
|
this.width = 54;
|
|
this.height = 54;
|
|
this.aiStyle = 83;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.dontTakeDamage = true;
|
|
this.netAlways = true;
|
|
this.chaseable = false;
|
|
}
|
|
else if (this.type == 438)
|
|
{
|
|
this.lifeMax = 400;
|
|
this.defense = 0;
|
|
this.damage = 0;
|
|
this.width = 22;
|
|
this.height = 40;
|
|
this.aiStyle = 83;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.netAlways = true;
|
|
this.chaseable = false;
|
|
}
|
|
else if (this.type == 439)
|
|
{
|
|
this.width = 24;
|
|
this.height = 50;
|
|
this.aiStyle = 84;
|
|
this.damage = 50;
|
|
this.defense = 42;
|
|
this.lifeMax = 32000;
|
|
this.knockBackResist = 0.0f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.npcSlots = 10f;
|
|
this.HitSound = SoundID.NPCHit55;
|
|
this.DeathSound = SoundID.NPCDeath59;
|
|
this.value = 100000f;
|
|
this.boss = true;
|
|
this.netAlways = true;
|
|
this.SpawnWithHigherTime(30);
|
|
flag = true;
|
|
}
|
|
else if (this.type == 440)
|
|
{
|
|
this.width = 24;
|
|
this.height = 50;
|
|
this.aiStyle = 84;
|
|
this.damage = 0;
|
|
this.defense = 35;
|
|
this.lifeMax = 10000;
|
|
this.knockBackResist = 0.0f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.npcSlots = 0.0f;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.netAlways = true;
|
|
this.SpawnWithHigherTime(30);
|
|
flag = true;
|
|
this.chaseable = false;
|
|
}
|
|
else if (this.type == 442)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 24;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2889;
|
|
this.npcSlots = 0.4f;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 443)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2890;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 444)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 65;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.25f;
|
|
this.noGravity = true;
|
|
this.catchItem = (short) 2891;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 445)
|
|
{
|
|
this.width = 12;
|
|
this.height = 10;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 2892;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 446)
|
|
{
|
|
this.width = 14;
|
|
this.height = 10;
|
|
this.aiStyle = 1;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.friendly = true;
|
|
this.catchItem = (short) 2893;
|
|
this.npcSlots = 0.1f;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 447)
|
|
{
|
|
this.width = 14;
|
|
this.height = 12;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.npcSlots = 0.25f;
|
|
this.catchItem = (short) 2894;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 448)
|
|
{
|
|
this.width = 10;
|
|
this.height = 4;
|
|
this.aiStyle = 66;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.1f;
|
|
this.catchItem = (short) 2895;
|
|
this.friendly = true;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 449)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 100f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 450)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 12;
|
|
this.lifeMax = 55;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 130f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 451)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 18;
|
|
this.defense = 8;
|
|
this.lifeMax = 65;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 120f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 452)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 22;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 110f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 453)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 30;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.npcSlots = 7f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 454)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.npcSlots = 5f;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 80;
|
|
this.defense = 10;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit56;
|
|
this.DeathSound = SoundID.NPCDeath60;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.scale = 1f;
|
|
flag = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 459)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit56;
|
|
this.DeathSound = SoundID.NPCDeath60;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.scale = 1f;
|
|
flag = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 455 || this.type == 456 || this.type == 457 || this.type == 458)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit56;
|
|
this.DeathSound = SoundID.NPCDeath60;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.scale = 1f;
|
|
flag = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.dontCountMe = true;
|
|
}
|
|
else if (this.type == 464)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 21;
|
|
this.defense = 5;
|
|
this.lifeMax = 75;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 465)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 16;
|
|
this.damage = 31;
|
|
this.defense = 7;
|
|
this.lifeMax = 110;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
}
|
|
else if (this.type == 470)
|
|
{
|
|
this.width = 16;
|
|
this.height = 34;
|
|
this.aiStyle = 3;
|
|
this.damage = 21;
|
|
this.defense = 5;
|
|
this.lifeMax = 75;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 473 || this.type == 474 || this.type == 475 || this.type == 476)
|
|
{
|
|
this.width = 28;
|
|
this.height = 44;
|
|
this.aiStyle = 87;
|
|
this.damage = 90;
|
|
this.defense = 34;
|
|
this.lifeMax = 3500;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 30000f;
|
|
this.knockBackResist = 0.1f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.rarity = 5;
|
|
}
|
|
else if (this.type == 480)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 30;
|
|
this.defense = 20;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.15f;
|
|
this.value = 1000f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 481)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 22;
|
|
this.defense = 10;
|
|
this.lifeMax = 70;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 300f;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 482)
|
|
{
|
|
this.width = 28;
|
|
this.height = 48;
|
|
this.aiStyle = 3;
|
|
this.damage = 30;
|
|
this.defense = 18;
|
|
this.lifeMax = 110;
|
|
this.HitSound = SoundID.NPCHit41;
|
|
this.DeathSound = SoundID.NPCDeath43;
|
|
this.knockBackResist = 0.35f;
|
|
this.value = 500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 483)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 20;
|
|
this.height = 30;
|
|
this.aiStyle = 91;
|
|
this.damage = 24;
|
|
this.defense = 8;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 1000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type >= 484 && this.type <= 487)
|
|
{
|
|
this.width = 10;
|
|
this.height = 4;
|
|
this.aiStyle = 66;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.1f;
|
|
this.catchItem = (short) (3191 + this.type - 484);
|
|
this.friendly = true;
|
|
}
|
|
else if (this.type == 488)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 92;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit15;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.immortal = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 489)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 8;
|
|
this.lifeMax = 75;
|
|
this.HitSound = SoundID.NPCHit18;
|
|
this.DeathSound = SoundID.NPCDeath21;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 150f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 490)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 28;
|
|
this.height = 30;
|
|
this.aiStyle = 22;
|
|
this.damage = 28;
|
|
this.defense = 14;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit19;
|
|
this.knockBackResist = 0.6f;
|
|
this.DeathSound = SoundID.NPCDeath22;
|
|
this.value = 150f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 491)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 350;
|
|
this.height = 120;
|
|
this.aiStyle = 93;
|
|
this.damage = 0;
|
|
this.defense = 100;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit19;
|
|
this.knockBackResist = 0.0f;
|
|
this.DeathSound = SoundID.NPCDeath22;
|
|
this.value = 0.0f;
|
|
flag = true;
|
|
this.dontTakeDamage = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 492)
|
|
{
|
|
this.lifeMax = 2000;
|
|
this.defense = 20;
|
|
this.damage = 30;
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 75;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 1f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.hide = true;
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type >= 494 && this.type <= 495)
|
|
{
|
|
this.width = 28;
|
|
this.height = 22;
|
|
this.aiStyle = 3;
|
|
this.damage = 28;
|
|
this.defense = 6;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit33;
|
|
this.DeathSound = SoundID.NPCDeath36;
|
|
this.value = 120f;
|
|
}
|
|
else if (this.type >= 496 && this.type <= 497)
|
|
{
|
|
this.width = 28;
|
|
this.height = 22;
|
|
this.aiStyle = 39;
|
|
this.damage = 16;
|
|
this.defense = 12;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit38;
|
|
this.DeathSound = SoundID.NPCDeath41;
|
|
this.knockBackResist = 0.75f;
|
|
this.value = 120f;
|
|
}
|
|
else if (this.type >= 498 && this.type <= 506)
|
|
{
|
|
this.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 3;
|
|
this.damage = 18;
|
|
this.defense = 10;
|
|
this.lifeMax = 65;
|
|
this.HitSound = SoundID.NPCHit50;
|
|
this.DeathSound = SoundID.NPCDeath53;
|
|
this.knockBackResist = 0.45f;
|
|
this.value = 120f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 441)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 513)
|
|
{
|
|
this.npcSlots = 4f;
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.damage = 18;
|
|
this.defense = 0;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 130f;
|
|
}
|
|
else if (this.type == 514)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 7;
|
|
this.defense = 16;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 130f;
|
|
this.dontCountMe = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 515)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 7;
|
|
this.defense = 20;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 130f;
|
|
this.dontCountMe = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 510)
|
|
{
|
|
this.npcSlots = 5f;
|
|
this.width = 34;
|
|
this.height = 34;
|
|
this.aiStyle = 6;
|
|
this.damage = 58;
|
|
this.defense = 18;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
}
|
|
else if (this.type == 511)
|
|
{
|
|
this.width = 34;
|
|
this.height = 34;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 54;
|
|
this.defense = 28;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
this.dontCountMe = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 512)
|
|
{
|
|
this.width = 34;
|
|
this.height = 34;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 50;
|
|
this.defense = 34;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = 700f;
|
|
this.dontCountMe = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 508)
|
|
{
|
|
this.width = 50;
|
|
this.height = 31;
|
|
this.aiStyle = 3;
|
|
this.damage = 38;
|
|
this.defense = 22;
|
|
this.lifeMax = 110;
|
|
this.HitSound = SoundID.NPCHit31;
|
|
this.DeathSound = SoundID.NPCDeath34;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 175f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 509)
|
|
{
|
|
this.width = 40;
|
|
this.height = 31;
|
|
this.aiStyle = 44;
|
|
this.damage = 34;
|
|
this.defense = 18;
|
|
this.lifeMax = 90;
|
|
this.knockBackResist = 0.3f;
|
|
this.HitSound = SoundID.NPCHit32;
|
|
this.DeathSound = SoundID.NPCDeath35;
|
|
this.value = 1775f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 580)
|
|
{
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 3;
|
|
this.damage = 25;
|
|
this.defense = 10;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit31;
|
|
this.DeathSound = SoundID.NPCDeath34;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 80f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.8f;
|
|
}
|
|
else if (this.type == 581)
|
|
{
|
|
this.width = 30;
|
|
this.height = 22;
|
|
this.aiStyle = 44;
|
|
this.damage = 29;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.knockBackResist = 0.5f;
|
|
this.HitSound = SoundID.NPCHit32;
|
|
this.DeathSound = SoundID.NPCDeath35;
|
|
this.value = 90f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.8f;
|
|
}
|
|
else if (this.type >= 524 && this.type <= 527)
|
|
{
|
|
this.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 26;
|
|
this.lifeMax = 180;
|
|
this.HitSound = SoundID.NPCHit37;
|
|
this.DeathSound = SoundID.NPCDeath40;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 500f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.5f;
|
|
switch (this.type)
|
|
{
|
|
case 525:
|
|
this.lifeMax += 70;
|
|
this.defense += 4;
|
|
this.damage += 10;
|
|
this.knockBackResist -= 0.1f;
|
|
this.value += 150f;
|
|
break;
|
|
case 526:
|
|
this.lifeMax += 40;
|
|
this.defense += 6;
|
|
this.damage += 14;
|
|
this.knockBackResist -= 0.1f;
|
|
this.value += 150f;
|
|
break;
|
|
case 527:
|
|
this.lifeMax += 120;
|
|
this.defense += 6;
|
|
this.damage += 4;
|
|
this.knockBackResist -= 0.2f;
|
|
this.value += 250f;
|
|
break;
|
|
}
|
|
}
|
|
else if (this.type >= 528 && this.type <= 529)
|
|
{
|
|
this.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 3;
|
|
this.damage = 52;
|
|
this.defense = 28;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.35f;
|
|
this.value = 600f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 530)
|
|
{
|
|
this.width = 50;
|
|
this.height = 20;
|
|
this.aiStyle = 3;
|
|
this.damage = 66;
|
|
this.defense = 24;
|
|
this.lifeMax = 320;
|
|
this.HitSound = SoundID.NPCHit13;
|
|
this.DeathSound = SoundID.NPCDeath19;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 600f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[70] = true;
|
|
}
|
|
else if (this.type == 531)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 36;
|
|
this.height = 36;
|
|
this.aiStyle = 40;
|
|
this.damage = 66;
|
|
this.defense = 24;
|
|
this.lifeMax = 320;
|
|
this.HitSound = SoundID.NPCHit13;
|
|
this.DeathSound = SoundID.NPCDeath19;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 600f;
|
|
this.SpawnWithHigherTime(2);
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[70] = true;
|
|
}
|
|
else if (this.type == 532)
|
|
{
|
|
this.width = 32;
|
|
this.height = 31;
|
|
this.aiStyle = 3;
|
|
this.damage = 65;
|
|
this.defense = 34;
|
|
this.lifeMax = 270;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 800f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.75f;
|
|
}
|
|
else if (this.type == 533)
|
|
{
|
|
this.width = 28;
|
|
this.height = 62;
|
|
this.aiStyle = 8;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 220;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 1200f;
|
|
this.npcSlots = 2f;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 493)
|
|
{
|
|
this.lifeMax = 20000;
|
|
this.defense = 20;
|
|
this.damage = 0;
|
|
this.width = 130;
|
|
this.height = 270;
|
|
this.aiStyle = 94;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 402)
|
|
{
|
|
this.noTileCollide = true;
|
|
this.npcSlots = 1f;
|
|
this.width = 32;
|
|
this.height = 32;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 80;
|
|
this.defense = 10;
|
|
this.lifeMax = 1200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.scale = 1f;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 405)
|
|
{
|
|
this.width = 44;
|
|
this.height = 44;
|
|
this.aiStyle = 85;
|
|
this.damage = 120;
|
|
this.defense = 50;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.noGravity = true;
|
|
this.buffImmune[31] = true;
|
|
this.npcSlots = 2f;
|
|
}
|
|
else if (this.type == 406)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 95;
|
|
this.damage = 70;
|
|
this.defense = 0;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
this.noGravity = true;
|
|
this.buffImmune[31] = true;
|
|
}
|
|
else if (this.type == 411)
|
|
{
|
|
this.width = 22;
|
|
this.height = 56;
|
|
this.aiStyle = 3;
|
|
this.damage = 80;
|
|
this.defense = 34;
|
|
this.lifeMax = 700;
|
|
this.HitSound = SoundID.NPCHit6;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 409)
|
|
{
|
|
this.width = 34;
|
|
this.height = 42;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 40;
|
|
this.lifeMax = 800;
|
|
this.HitSound = SoundID.NPCHit6;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 3f;
|
|
}
|
|
else if (this.type == 410)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 26;
|
|
this.damage = 80;
|
|
this.defense = 10;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
this.knockBackResist = 0.3f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.5f;
|
|
}
|
|
else if (this.type == 407)
|
|
{
|
|
this.width = 40;
|
|
this.height = 60;
|
|
this.aiStyle = 96;
|
|
this.damage = 70;
|
|
this.defense = 38;
|
|
this.lifeMax = 1500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.03f;
|
|
this.buffImmune[31] = true;
|
|
this.npcSlots = 3f;
|
|
}
|
|
else if (this.type == 507)
|
|
{
|
|
this.lifeMax = 20000;
|
|
this.defense = 20;
|
|
this.damage = 0;
|
|
this.width = 130;
|
|
this.height = 270;
|
|
this.aiStyle = 94;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 423)
|
|
{
|
|
this.width = 50;
|
|
this.height = 44;
|
|
this.aiStyle = 26;
|
|
this.damage = 90;
|
|
this.defense = 46;
|
|
this.lifeMax = 850;
|
|
this.HitSound = SoundID.NPCHit6;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.2f;
|
|
flag = true;
|
|
this.npcSlots = 1f;
|
|
}
|
|
else if (this.type == 421)
|
|
{
|
|
this.width = 44;
|
|
this.height = 44;
|
|
this.aiStyle = 85;
|
|
this.damage = 70;
|
|
this.defense = 34;
|
|
this.lifeMax = 330;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.noGravity = true;
|
|
this.buffImmune[31] = true;
|
|
this.npcSlots = 1f;
|
|
}
|
|
else if (this.type == 424)
|
|
{
|
|
this.width = 22;
|
|
this.height = 56;
|
|
this.aiStyle = 3;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 700;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
this.knockBackResist = 0.6f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 2f;
|
|
}
|
|
else if (this.type == 420)
|
|
{
|
|
this.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 97;
|
|
this.damage = 75;
|
|
this.defense = 20;
|
|
this.lifeMax = 1300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
this.npcSlots = 3f;
|
|
}
|
|
else if (this.type == 422)
|
|
{
|
|
this.lifeMax = 20000;
|
|
this.defense = 20;
|
|
this.damage = 0;
|
|
this.width = 130;
|
|
this.height = 270;
|
|
this.aiStyle = 94;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 425)
|
|
{
|
|
this.width = 30;
|
|
this.height = 56;
|
|
this.aiStyle = 3;
|
|
this.damage = 100;
|
|
this.defense = 40;
|
|
this.lifeMax = 800;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.4f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 429)
|
|
{
|
|
this.width = 22;
|
|
this.height = 56;
|
|
this.aiStyle = 3;
|
|
this.damage = 90;
|
|
this.defense = 34;
|
|
this.lifeMax = 700;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
this.knockBackResist = 0.6f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 2f;
|
|
}
|
|
else if (this.type == 428)
|
|
{
|
|
this.width = 24;
|
|
this.height = 26;
|
|
this.aiStyle = 3;
|
|
this.damage = 50;
|
|
this.defense = 6;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
}
|
|
else if (this.type == 427)
|
|
{
|
|
this.width = 40;
|
|
this.height = 28;
|
|
this.aiStyle = 3;
|
|
this.damage = 75;
|
|
this.defense = 20;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.5f;
|
|
}
|
|
else if (this.type == 426)
|
|
{
|
|
this.width = 50;
|
|
this.height = 62;
|
|
this.aiStyle = 3;
|
|
this.damage = 100;
|
|
this.defense = 44;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.3f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 517)
|
|
{
|
|
this.lifeMax = 20000;
|
|
this.defense = 20;
|
|
this.damage = 0;
|
|
this.width = 130;
|
|
this.height = 270;
|
|
this.aiStyle = 94;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 412)
|
|
{
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 150;
|
|
this.defense = 1000;
|
|
this.lifeMax = 10000;
|
|
this.HitSound = SoundID.NPCHit11;
|
|
this.DeathSound = SoundID.NPCDeath22;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.dontTakeDamage = true;
|
|
this.npcSlots = 2f;
|
|
}
|
|
else if (this.type == 413)
|
|
{
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 100;
|
|
this.defense = 1000;
|
|
this.lifeMax = 10000;
|
|
this.HitSound = SoundID.NPCHit11;
|
|
this.DeathSound = SoundID.NPCDeath22;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.dontCountMe = true;
|
|
this.dontTakeDamage = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 414)
|
|
{
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 50;
|
|
this.defense = 0;
|
|
this.lifeMax = 10000;
|
|
this.HitSound = SoundID.NPCHit8;
|
|
this.DeathSound = SoundID.NPCDeath22;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.dontCountMe = true;
|
|
this.takenDamageMultiplier = 10f;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 415)
|
|
{
|
|
this.lifeMax = 800;
|
|
this.defense = 32;
|
|
this.damage = 55;
|
|
this.width = 60;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.2f;
|
|
}
|
|
else if (this.type == 416)
|
|
{
|
|
this.damage = 80;
|
|
this.defense = 28;
|
|
this.lifeMax = 800;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 75;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.2f;
|
|
}
|
|
else if (this.type == 518)
|
|
{
|
|
this.lifeMax = 1000;
|
|
this.defense = 28;
|
|
this.damage = 80;
|
|
this.width = 22;
|
|
this.height = 56;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 417)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 46;
|
|
this.height = 52;
|
|
this.aiStyle = 39;
|
|
this.damage = 80;
|
|
this.defense = 34;
|
|
this.lifeMax = 700;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.knockBackResist = 0.0f;
|
|
this.DeathSound = SoundID.NPCDeath5;
|
|
}
|
|
else if (this.type == 418)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 74;
|
|
this.damage = 70;
|
|
this.defense = 26;
|
|
this.lifeMax = 600;
|
|
this.HitSound = SoundID.NPCHit3;
|
|
this.DeathSound = SoundID.NPCDeath3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.2f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
}
|
|
else if (this.type == 419)
|
|
{
|
|
this.lifeMax = 800;
|
|
this.defense = 30;
|
|
this.damage = 90;
|
|
this.width = 22;
|
|
this.height = 56;
|
|
this.aiStyle = 3;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.4f;
|
|
}
|
|
else if (this.type == 516)
|
|
{
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 9;
|
|
this.damage = 100;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = (LegacySoundStyle) null;
|
|
this.DeathSound = (LegacySoundStyle) null;
|
|
this.noGravity = true;
|
|
this.noTileCollide = false;
|
|
this.alpha = 0;
|
|
this.knockBackResist = 0.0f;
|
|
}
|
|
else if (this.type == 519)
|
|
{
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 99;
|
|
this.damage = 120;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = (LegacySoundStyle) null;
|
|
this.DeathSound = (LegacySoundStyle) null;
|
|
this.noGravity = true;
|
|
this.noTileCollide = false;
|
|
this.alpha = 0;
|
|
this.knockBackResist = 0.0f;
|
|
}
|
|
else if (this.type == 162)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 65;
|
|
this.defense = 18;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 600f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 166)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 26;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 253)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.width = 24;
|
|
this.height = 44;
|
|
this.aiStyle = 22;
|
|
this.damage = 80;
|
|
this.defense = 22;
|
|
this.lifeMax = 700;
|
|
this.HitSound = SoundID.NPCHit49;
|
|
this.DeathSound = SoundID.NPCDeath51;
|
|
this.alpha = 100;
|
|
this.value = 1500f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.6f;
|
|
}
|
|
else if (this.type == 158)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 14;
|
|
this.damage = 60;
|
|
this.defense = 32;
|
|
this.lifeMax = 750;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.75f;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 5000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 159)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 80;
|
|
this.defense = 24;
|
|
this.lifeMax = 750;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.4f;
|
|
this.value = 5000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 460)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 30;
|
|
this.lifeMax = 700;
|
|
this.HitSound = SoundID.NPCHit7;
|
|
this.DeathSound = SoundID.NPCDeath17;
|
|
this.knockBackResist = 0.25f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 461)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 22;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 1000f;
|
|
}
|
|
else if (this.type == 462)
|
|
{
|
|
this.width = 20;
|
|
this.height = 24;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 14;
|
|
this.lifeMax = 270;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 600f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.5f;
|
|
}
|
|
else if (this.type == 463)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 100;
|
|
this.defense = 34;
|
|
this.lifeMax = 4000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.1f;
|
|
this.value = 3000f;
|
|
}
|
|
else if (this.type == 466)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 70;
|
|
this.defense = 40;
|
|
this.lifeMax = 550;
|
|
this.HitSound = SoundID.NPCHit48;
|
|
this.DeathSound = SoundID.NPCDeath50;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1500f;
|
|
}
|
|
else if (this.type == 467)
|
|
{
|
|
this.width = 22;
|
|
this.height = 22;
|
|
this.aiStyle = 85;
|
|
this.damage = 100;
|
|
this.defense = 80;
|
|
this.lifeMax = 350;
|
|
this.HitSound = SoundID.NPCHit34;
|
|
this.DeathSound = SoundID.NPCDeath37;
|
|
this.value = 900f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.knockBackResist = 0.7f;
|
|
this.noGravity = true;
|
|
}
|
|
else if (this.type == 469)
|
|
{
|
|
this.width = 38;
|
|
this.height = 26;
|
|
this.aiStyle = 3;
|
|
this.damage = 68;
|
|
this.defense = 28;
|
|
this.lifeMax = 600;
|
|
this.HitSound = SoundID.NPCHit47;
|
|
this.DeathSound = SoundID.NPCDeath49;
|
|
this.knockBackResist = 0.35f;
|
|
this.value = 1300f;
|
|
}
|
|
else if (this.type == 468)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 65;
|
|
this.defense = 24;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit35;
|
|
this.DeathSound = SoundID.NPCDeath38;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 1300f;
|
|
}
|
|
else if (this.type == 477)
|
|
{
|
|
this.noGravity = true;
|
|
this.netAlways = true;
|
|
this.width = 80;
|
|
this.height = 50;
|
|
this.aiStyle = 88;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 6000;
|
|
this.HitSound = SoundID.NPCHit44;
|
|
this.DeathSound = SoundID.NPCDeath46;
|
|
this.value = 50000f;
|
|
this.knockBackResist = 0.2f;
|
|
this.buffImmune[20] = true;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 478)
|
|
{
|
|
this.width = 34;
|
|
this.height = 34;
|
|
this.aiStyle = 89;
|
|
this.damage = 0;
|
|
this.defense = 30;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.7f;
|
|
flag = true;
|
|
this.npcSlots = 0.0f;
|
|
}
|
|
else if (this.type == 479)
|
|
{
|
|
this.width = 46;
|
|
this.height = 30;
|
|
this.aiStyle = 90;
|
|
this.damage = 50;
|
|
this.defense = 14;
|
|
this.lifeMax = 700;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.1f;
|
|
}
|
|
else if (this.type == 26)
|
|
{
|
|
this.scale = 0.9f;
|
|
this.width = 18;
|
|
this.height = 38;
|
|
this.aiStyle = 3;
|
|
this.damage = 12;
|
|
this.defense = 4;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.8f;
|
|
this.value = 100f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 27)
|
|
{
|
|
this.scale = 0.95f;
|
|
this.width = 18;
|
|
this.height = 38;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 200f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 28)
|
|
{
|
|
this.scale = 1.1f;
|
|
this.width = 18;
|
|
this.height = 38;
|
|
this.aiStyle = 3;
|
|
this.damage = 25;
|
|
this.defense = 8;
|
|
this.lifeMax = 110;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 150f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 29)
|
|
{
|
|
this.width = 18;
|
|
this.height = 38;
|
|
this.aiStyle = 8;
|
|
this.damage = 20;
|
|
this.defense = 2;
|
|
this.lifeMax = 40;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.6f;
|
|
this.value = 200f;
|
|
}
|
|
else if (this.type == 30)
|
|
{
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 9;
|
|
this.damage = 20;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = SoundID.NPCHit3;
|
|
this.DeathSound = SoundID.NPCDeath3;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.alpha = 100;
|
|
this.knockBackResist = 0.0f;
|
|
}
|
|
else if (this.type == 111)
|
|
{
|
|
this.scale = 0.95f;
|
|
this.width = 18;
|
|
this.height = 38;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 6;
|
|
this.lifeMax = 80;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.7f;
|
|
this.value = 200f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 471)
|
|
{
|
|
this.width = 18;
|
|
this.height = 38;
|
|
this.aiStyle = 3;
|
|
this.damage = 80;
|
|
this.defense = 26;
|
|
this.lifeMax = 2000;
|
|
this.HitSound = SoundID.NPCHit40;
|
|
this.DeathSound = SoundID.NPCDeath42;
|
|
this.knockBackResist = 0.15f;
|
|
this.value = 5000f;
|
|
flag = true;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 472)
|
|
{
|
|
this.width = 40;
|
|
this.height = 24;
|
|
this.aiStyle = 86;
|
|
this.damage = 50;
|
|
this.defense = 18;
|
|
this.lifeMax = 180;
|
|
this.HitSound = SoundID.NPCHit52;
|
|
this.DeathSound = SoundID.NPCDeath55;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
flag = true;
|
|
this.npcSlots = 0.1f;
|
|
}
|
|
else if (this.type == 520)
|
|
{
|
|
this.width = 34;
|
|
this.height = 110;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 40;
|
|
this.lifeMax = 2000;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath14;
|
|
this.knockBackResist = 0.0f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 521)
|
|
{
|
|
this.width = 60;
|
|
this.height = 60;
|
|
this.aiStyle = 86;
|
|
this.damage = 90;
|
|
this.defense = 30;
|
|
this.lifeMax = 2000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.0f;
|
|
flag = true;
|
|
}
|
|
else if (this.type == 522)
|
|
{
|
|
this.width = 26;
|
|
this.height = 26;
|
|
this.aiStyle = 100;
|
|
this.damage = 120;
|
|
this.defense = 0;
|
|
this.lifeMax = 1;
|
|
this.HitSound = (LegacySoundStyle) null;
|
|
this.DeathSound = (LegacySoundStyle) null;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.alpha = 0;
|
|
this.knockBackResist = 0.0f;
|
|
this.chaseable = false;
|
|
}
|
|
else if (this.type == 523)
|
|
{
|
|
this.width = 42;
|
|
this.height = 42;
|
|
this.aiStyle = 101;
|
|
this.damage = 30;
|
|
this.defense = 0;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.alpha = 0;
|
|
this.knockBackResist = 0.0f;
|
|
this.chaseable = false;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.canGhostHeal = false;
|
|
}
|
|
else if (this.type == 534)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 20;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 0.0f;
|
|
this.buffImmune[31] = false;
|
|
this.lavaImmune = true;
|
|
this.netAlways = true;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 535)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 14;
|
|
this.defense = 5;
|
|
this.lifeMax = 50;
|
|
this.scale = 1.1f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 0;
|
|
this.value = 40f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 536)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 8;
|
|
this.lifeMax = 200;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 537)
|
|
{
|
|
this.npcSlots = 2f;
|
|
this.width = 30;
|
|
this.height = 24;
|
|
this.aiStyle = 1;
|
|
this.damage = 15;
|
|
this.defense = 5;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.alpha = 50;
|
|
this.color = new Color((int) byte.MaxValue, 250, 0, 0) * 0.2f;
|
|
this.value = 75f;
|
|
this.knockBackResist = 0.7f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 538)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 3563;
|
|
}
|
|
else if (this.type == 539)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 3564;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 541)
|
|
{
|
|
this.width = 30;
|
|
this.height = 76;
|
|
this.aiStyle = 102;
|
|
this.damage = 40;
|
|
this.defense = 30;
|
|
this.lifeMax = 5000;
|
|
this.HitSound = SoundID.NPCHit23;
|
|
this.DeathSound = SoundID.NPCDeath39;
|
|
this.knockBackResist = 0.05f;
|
|
this.value = (float) Item.buyPrice(gold: 1, silver: 50);
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[44] = true;
|
|
this.rarity = 2;
|
|
}
|
|
else if (this.type == 542)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 24;
|
|
this.aiStyle = 103;
|
|
this.damage = 50;
|
|
this.defense = 20;
|
|
this.lifeMax = 360;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 400f;
|
|
this.knockBackResist = 0.9f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 543)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 24;
|
|
this.aiStyle = 103;
|
|
this.damage = 60;
|
|
this.defense = 24;
|
|
this.lifeMax = 380;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 400f;
|
|
this.knockBackResist = 0.8f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 544)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 24;
|
|
this.aiStyle = 103;
|
|
this.damage = 64;
|
|
this.defense = 22;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 400f;
|
|
this.knockBackResist = 0.8f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 545)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 24;
|
|
this.aiStyle = 103;
|
|
this.damage = 54;
|
|
this.defense = 26;
|
|
this.lifeMax = 450;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 400f;
|
|
this.knockBackResist = 0.7f;
|
|
this.behindTiles = true;
|
|
}
|
|
else if (this.type == 546)
|
|
{
|
|
this.width = 30;
|
|
this.height = 30;
|
|
this.aiStyle = 26;
|
|
this.damage = 30;
|
|
this.defense = 6;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit11;
|
|
this.DeathSound = SoundID.NPCDeath15;
|
|
this.knockBackResist = 0.8f;
|
|
this.value = 100f;
|
|
}
|
|
else if (this.type == 547)
|
|
{
|
|
this.width = 16;
|
|
this.height = 16;
|
|
this.aiStyle = 104;
|
|
this.defense = 10;
|
|
this.lifeMax = 10;
|
|
this.HitSound = SoundID.NPCHit11;
|
|
this.DeathSound = SoundID.NPCDeath15;
|
|
this.knockBackResist = 1f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
}
|
|
else if (this.type == 548)
|
|
{
|
|
this.width = 40;
|
|
this.height = 40;
|
|
this.aiStyle = 105;
|
|
this.defense = 14;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.DD2_CrystalCartImpact;
|
|
this.DeathSound = SoundID.NPCDeath15;
|
|
this.knockBackResist = 0.0f;
|
|
this.friendly = true;
|
|
this.npcSlots = 0.0f;
|
|
this.hide = true;
|
|
if (Main.hardMode && NPC.downedMechBossAny)
|
|
{
|
|
this.defense = 18;
|
|
this.lifeMax = 3000;
|
|
}
|
|
if (NPC.downedGolemBoss && Main.hardMode)
|
|
{
|
|
this.defense = 20;
|
|
this.lifeMax = 5000;
|
|
}
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 549)
|
|
{
|
|
this.lifeMax = 5;
|
|
this.defense = 20;
|
|
this.damage = 0;
|
|
this.width = 78;
|
|
this.height = 130;
|
|
this.aiStyle = 106;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 0.0f;
|
|
this.knockBackResist = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
flag = true;
|
|
this.npcSlots = 0.0f;
|
|
this.behindTiles = true;
|
|
this.dontTakeDamage = true;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 552)
|
|
{
|
|
this.lifeMax = 30;
|
|
this.defense = 14;
|
|
this.damage = 18;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_GoblinHurt;
|
|
this.DeathSound = SoundID.DD2_GoblinDeath;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 553)
|
|
{
|
|
this.lifeMax = 170;
|
|
this.defense = 20;
|
|
this.damage = 46;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_GoblinHurt;
|
|
this.DeathSound = SoundID.DD2_GoblinDeath;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 554)
|
|
{
|
|
this.lifeMax = 560;
|
|
this.defense = 28;
|
|
this.damage = 70;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_GoblinHurt;
|
|
this.DeathSound = SoundID.DD2_GoblinDeath;
|
|
this.knockBackResist = 0.15f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 561)
|
|
{
|
|
this.lifeMax = 60;
|
|
this.defense = 18;
|
|
this.damage = 30;
|
|
this.width = 26;
|
|
this.height = 52;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_JavelinThrowersHurt;
|
|
this.DeathSound = SoundID.DD2_JavelinThrowersDeath;
|
|
this.knockBackResist = 0.1f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 562)
|
|
{
|
|
this.lifeMax = 300;
|
|
this.defense = 28;
|
|
this.damage = 60;
|
|
this.width = 26;
|
|
this.height = 52;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_JavelinThrowersHurt;
|
|
this.DeathSound = SoundID.DD2_JavelinThrowersDeath;
|
|
this.knockBackResist = 0.1f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 563)
|
|
{
|
|
this.lifeMax = 1000;
|
|
this.defense = 38;
|
|
this.damage = 80;
|
|
this.width = 26;
|
|
this.height = 52;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_JavelinThrowersHurt;
|
|
this.DeathSound = SoundID.DD2_JavelinThrowersDeath;
|
|
this.knockBackResist = 0.05f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 555)
|
|
{
|
|
this.lifeMax = 50;
|
|
this.defense = 16;
|
|
this.damage = 26;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_GoblinBomberHurt;
|
|
this.DeathSound = SoundID.DD2_GoblinBomberDeath;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 556)
|
|
{
|
|
this.lifeMax = 200;
|
|
this.defense = 26;
|
|
this.damage = 55;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_GoblinBomberHurt;
|
|
this.DeathSound = SoundID.DD2_GoblinBomberDeath;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 557)
|
|
{
|
|
this.lifeMax = 700;
|
|
this.defense = 34;
|
|
this.damage = 75;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_GoblinBomberHurt;
|
|
this.DeathSound = SoundID.DD2_GoblinBomberDeath;
|
|
this.knockBackResist = 0.15f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 558)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 108;
|
|
this.damage = 30;
|
|
this.defense = 4;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.DD2_WyvernHurt;
|
|
this.DeathSound = SoundID.DD2_WyvernDeath;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.2f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 559)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 108;
|
|
this.damage = 75;
|
|
this.defense = 16;
|
|
this.lifeMax = 180;
|
|
this.HitSound = SoundID.DD2_WyvernHurt;
|
|
this.DeathSound = SoundID.DD2_WyvernDeath;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.2f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 560)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 108;
|
|
this.damage = 100;
|
|
this.defense = 30;
|
|
this.lifeMax = 600;
|
|
this.HitSound = SoundID.DD2_WyvernHurt;
|
|
this.DeathSound = SoundID.DD2_WyvernDeath;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.05f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 550)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 576)
|
|
{
|
|
this.lifeMax = 5000;
|
|
this.defense = 34;
|
|
this.damage = 70;
|
|
this.width = 96;
|
|
this.height = 124;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_OgreHurt;
|
|
this.DeathSound = SoundID.DD2_OgreDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 577)
|
|
{
|
|
this.lifeMax = 13000;
|
|
this.defense = 40;
|
|
this.damage = 90;
|
|
this.width = 96;
|
|
this.height = 124;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_OgreHurt;
|
|
this.DeathSound = SoundID.DD2_OgreDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 568)
|
|
{
|
|
this.lifeMax = 500;
|
|
this.defense = 30;
|
|
this.damage = 50;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_WitherBeastHurt;
|
|
this.DeathSound = SoundID.DD2_WitherBeastDeath;
|
|
this.knockBackResist = 0.15f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 569)
|
|
{
|
|
this.lifeMax = 1400;
|
|
this.defense = 40;
|
|
this.damage = 80;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_WitherBeastHurt;
|
|
this.DeathSound = SoundID.DD2_WitherBeastDeath;
|
|
this.knockBackResist = 0.05f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 566)
|
|
{
|
|
this.lifeMax = 25;
|
|
this.defense = 12;
|
|
this.damage = 18;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_SkeletonHurt;
|
|
this.DeathSound = SoundID.DD2_SkeletonDeath;
|
|
this.knockBackResist = 0.3f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 567)
|
|
{
|
|
this.lifeMax = 480;
|
|
this.defense = 22;
|
|
this.damage = 70;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_SkeletonHurt;
|
|
this.DeathSound = SoundID.DD2_SkeletonDeath;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 572)
|
|
{
|
|
this.lifeMax = 260;
|
|
this.defense = 26;
|
|
this.damage = 60;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_KoboldHurt;
|
|
this.DeathSound = SoundID.DD2_KoboldDeath;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 573)
|
|
{
|
|
this.lifeMax = 800;
|
|
this.defense = 32;
|
|
this.damage = 80;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_KoboldHurt;
|
|
this.DeathSound = SoundID.DD2_KoboldDeath;
|
|
this.knockBackResist = 0.1f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 570)
|
|
{
|
|
this.lifeMax = 900;
|
|
this.defense = 30;
|
|
this.damage = 60;
|
|
this.width = 42;
|
|
this.height = 58;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_DrakinHurt;
|
|
this.DeathSound = SoundID.DD2_DrakinDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 571)
|
|
{
|
|
this.lifeMax = 3000;
|
|
this.defense = 40;
|
|
this.damage = 90;
|
|
this.width = 42;
|
|
this.height = 58;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_DrakinHurt;
|
|
this.DeathSound = SoundID.DD2_DrakinDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 564)
|
|
{
|
|
this.lifeMax = 800;
|
|
this.defense = 18;
|
|
this.damage = 40;
|
|
this.width = 34;
|
|
this.height = 62;
|
|
this.aiStyle = 109;
|
|
this.HitSound = SoundID.DD2_DarkMageHurt;
|
|
this.DeathSound = SoundID.DD2_DarkMageDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.noGravity = true;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 565)
|
|
{
|
|
this.lifeMax = 4000;
|
|
this.defense = 38;
|
|
this.damage = 90;
|
|
this.width = 34;
|
|
this.height = 62;
|
|
this.aiStyle = 109;
|
|
this.HitSound = SoundID.DD2_DarkMageHurt;
|
|
this.DeathSound = SoundID.DD2_DarkMageDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.npcSlots = 0.0f;
|
|
this.noGravity = true;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 574)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 108;
|
|
this.damage = 50;
|
|
this.defense = 16;
|
|
this.lifeMax = 170;
|
|
this.HitSound = SoundID.DD2_KoboldFlyerHurt;
|
|
this.DeathSound = SoundID.DD2_KoboldFlyerDeath;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.4f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 575)
|
|
{
|
|
this.width = 38;
|
|
this.height = 38;
|
|
this.aiStyle = 108;
|
|
this.damage = 80;
|
|
this.defense = 32;
|
|
this.lifeMax = 580;
|
|
this.HitSound = SoundID.DD2_KoboldFlyerHurt;
|
|
this.DeathSound = SoundID.DD2_KoboldFlyerDeath;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.25f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 551)
|
|
{
|
|
this.damage = 80;
|
|
this.defense = 38;
|
|
this.lifeMax = 50000;
|
|
this.width = 190;
|
|
this.height = 90;
|
|
this.aiStyle = 110;
|
|
this.HitSound = SoundID.DD2_BetsyHurt;
|
|
this.DeathSound = SoundID.DD2_BetsyDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 0.0f;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 578)
|
|
{
|
|
this.width = 30;
|
|
this.height = 24;
|
|
this.aiStyle = 111;
|
|
this.damage = 80;
|
|
this.defense = 36;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.DD2_LightningBugHurt;
|
|
this.DeathSound = SoundID.DD2_LightningBugDeath;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.8f;
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
}
|
|
else if (this.type == 579)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 34;
|
|
this.height = 8;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
this.scale = 1f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 582)
|
|
{
|
|
this.width = 18;
|
|
this.height = 18;
|
|
this.aiStyle = 3;
|
|
this.damage = 12;
|
|
this.defense = 4;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit31;
|
|
this.DeathSound = SoundID.NPCDeath34;
|
|
this.knockBackResist = 0.75f;
|
|
this.value = 40f;
|
|
this.buffImmune[31] = false;
|
|
this.npcSlots = 0.4f;
|
|
}
|
|
else if (this.type == 583 || this.type == 584 || this.type == 585)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 112;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
switch (this.type)
|
|
{
|
|
case 583:
|
|
this.catchItem = (short) 4068;
|
|
break;
|
|
case 584:
|
|
this.catchItem = (short) 4069;
|
|
break;
|
|
case 585:
|
|
this.catchItem = (short) 4070;
|
|
break;
|
|
}
|
|
this.noGravity = true;
|
|
this.rarity = 2;
|
|
for (int index = 0; index < 323; ++index)
|
|
this.buffImmune[index] = true;
|
|
}
|
|
else if (this.type == 586)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 40;
|
|
this.defense = 20;
|
|
this.lifeMax = 400;
|
|
this.HitSound = SoundID.NPCHit18;
|
|
this.DeathSound = SoundID.NPCDeath21;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 587)
|
|
{
|
|
this.width = 32;
|
|
this.height = 18;
|
|
this.aiStyle = 44;
|
|
this.damage = 35;
|
|
this.defense = 18;
|
|
this.lifeMax = 300;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.0f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.value = 1000f;
|
|
this.buffImmune[31] = false;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 588)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 589)
|
|
{
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 34;
|
|
this.aiStyle = 0;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 590 || this.type == 591)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 592)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 20;
|
|
this.height = 18;
|
|
this.aiStyle = 16;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.catchItem = (short) 4274;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 593)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 4274;
|
|
this.rarity = 3;
|
|
}
|
|
else if (this.type == 594)
|
|
{
|
|
this.width = 20;
|
|
this.height = 20;
|
|
this.aiStyle = 113;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.knockBackResist = 0.3f;
|
|
this.lifeMax = 1;
|
|
this.DeathSound = SoundID.NPCDeath63;
|
|
this.value = 0.0f;
|
|
this.noGravity = true;
|
|
}
|
|
else if (this.type >= 595 && this.type <= 601)
|
|
{
|
|
this.timeLeft *= 3;
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 114;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.25f;
|
|
this.noGravity = true;
|
|
if (this.type == 601)
|
|
this.rarity = 3;
|
|
this.catchItem = (short) (this.type - 595 + 4334);
|
|
}
|
|
else if (this.type == 602)
|
|
{
|
|
this.width = 22;
|
|
this.height = 26;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 4359;
|
|
}
|
|
else if (this.type == 603)
|
|
{
|
|
this.width = 28;
|
|
this.height = 22;
|
|
this.aiStyle = 68;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 4359;
|
|
}
|
|
else if (this.type == 604 || this.type == 605)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 115;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.25f;
|
|
this.noGravity = true;
|
|
if (this.type == 605)
|
|
this.rarity = 3;
|
|
this.catchItem = (short) (this.type - 604 + 4361);
|
|
}
|
|
else if (this.type == 606)
|
|
{
|
|
this.width = 10;
|
|
this.height = 4;
|
|
this.aiStyle = 66;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.1f;
|
|
this.catchItem = (short) 4363;
|
|
this.friendly = true;
|
|
}
|
|
else if (this.type == 607)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 20;
|
|
this.height = 18;
|
|
this.aiStyle = 16;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.catchItem = (short) 4373;
|
|
}
|
|
else if (this.type == 608)
|
|
{
|
|
this.width = 22;
|
|
this.height = 26;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 4374;
|
|
}
|
|
else if (this.type == 609)
|
|
{
|
|
this.width = 28;
|
|
this.height = 22;
|
|
this.aiStyle = 68;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 4374;
|
|
}
|
|
else if (this.type == 610)
|
|
{
|
|
this.width = 14;
|
|
this.height = 12;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.npcSlots = 0.25f;
|
|
this.catchItem = (short) 4375;
|
|
}
|
|
else if (this.type == 611)
|
|
{
|
|
this.width = 18;
|
|
this.height = 34;
|
|
this.aiStyle = 24;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) 4395;
|
|
this.npcSlots = 0.4f;
|
|
}
|
|
else if (this.type == 612 || this.type == 613)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 116;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.25f;
|
|
if (this.type == 613)
|
|
this.rarity = 3;
|
|
this.catchItem = (short) (this.type - 612 + 4418);
|
|
this.waterMovementSpeed = 1f;
|
|
this.lavaMovementSpeed = 1f;
|
|
this.honeyMovementSpeed = 1f;
|
|
}
|
|
else if (this.type == 614)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = (LegacySoundStyle) null;
|
|
this.catchItem = (short) 1338;
|
|
}
|
|
else if (this.type == 615)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 20;
|
|
this.height = 18;
|
|
this.aiStyle = 16;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 616 || this.type == 617)
|
|
{
|
|
this.width = 22;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
this.catchItem = (short) (this.type - 616 + 4464);
|
|
}
|
|
else if (this.type == 618)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 100;
|
|
this.aiStyle = 117;
|
|
this.damage = 55;
|
|
this.defense = 24;
|
|
this.lifeMax = 7000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = (float) Item.buyPrice(gold: 2);
|
|
this.noTileCollide = true;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 619)
|
|
{
|
|
this.npcSlots = 1f;
|
|
this.width = 44;
|
|
this.height = 44;
|
|
this.aiStyle = 5;
|
|
this.damage = 60;
|
|
this.defense = 16;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 500f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 620)
|
|
{
|
|
this.lifeMax = 5000;
|
|
this.defense = 30;
|
|
this.damage = 70;
|
|
this.width = 34;
|
|
this.height = 58;
|
|
this.aiStyle = 107;
|
|
this.HitSound = SoundID.DD2_DrakinHurt;
|
|
this.DeathSound = SoundID.DD2_DrakinDeath;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = (float) Item.buyPrice(silver: 75);
|
|
this.npcSlots = 0.0f;
|
|
this.lavaImmune = true;
|
|
this.LazySetLiquidMovementDD2();
|
|
this.netAlways = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 621)
|
|
{
|
|
this.npcSlots = 5f;
|
|
this.width = 28;
|
|
this.height = 28;
|
|
this.aiStyle = 6;
|
|
this.damage = 90;
|
|
this.defense = 0;
|
|
this.lifeMax = 6000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.value = (float) Item.buyPrice(silver: 75);
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 622)
|
|
{
|
|
this.width = 28;
|
|
this.height = 28;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 60;
|
|
this.defense = 30;
|
|
this.lifeMax = 6000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.dontCountMe = true;
|
|
this.npcSlots = 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 623)
|
|
{
|
|
this.width = 28;
|
|
this.height = 28;
|
|
this.aiStyle = 6;
|
|
this.netAlways = true;
|
|
this.damage = 50;
|
|
this.defense = 40;
|
|
this.lifeMax = 6000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.behindTiles = true;
|
|
this.dontCountMe = true;
|
|
this.npcSlots = 0.0f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
else if (this.type == 624)
|
|
{
|
|
this.width = 14;
|
|
this.height = 30;
|
|
this.aiStyle = 3;
|
|
this.damage = 10;
|
|
this.defense = 0;
|
|
this.lifeMax = 25;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 1f;
|
|
this.rarity = 1;
|
|
}
|
|
else if (this.type == 625)
|
|
{
|
|
this.width = 22;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 626 || this.type == 627)
|
|
{
|
|
this.width = 16;
|
|
this.height = 20;
|
|
this.aiStyle = 118;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 1f;
|
|
if (this.type == 627)
|
|
this.rarity = 3;
|
|
this.catchItem = (short) 4480;
|
|
if (this.type == 627)
|
|
this.catchItem = (short) 4482;
|
|
}
|
|
else if (this.type == 628)
|
|
{
|
|
this.width = 22;
|
|
this.height = 40;
|
|
this.aiStyle = 119;
|
|
this.damage = 15;
|
|
this.defense = 0;
|
|
this.lifeMax = 50;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 50f;
|
|
}
|
|
else if (this.type == 629)
|
|
{
|
|
this.width = 24;
|
|
this.height = 24;
|
|
this.aiStyle = 25;
|
|
this.damage = 80;
|
|
this.defense = 30;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit4;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.value = 100000f;
|
|
this.knockBackResist = 0.3f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
this.buffImmune[39] = true;
|
|
this.rarity = 4;
|
|
}
|
|
else if (this.type == 630)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 60;
|
|
this.defense = 18;
|
|
this.lifeMax = 180;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 700f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 631)
|
|
{
|
|
this.width = 36;
|
|
this.height = 48;
|
|
this.scale = 1.1f;
|
|
this.aiStyle = 3;
|
|
this.damage = 85;
|
|
this.defense = 35;
|
|
this.lifeMax = 1000;
|
|
this.HitSound = SoundID.NPCHit41;
|
|
this.DeathSound = SoundID.NPCDeath43;
|
|
this.knockBackResist = 0.1f;
|
|
this.value = 50000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[24] = true;
|
|
}
|
|
else if (this.type == 632)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 14;
|
|
this.defense = 6;
|
|
this.lifeMax = 45;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 60f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 633)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.5f;
|
|
}
|
|
else if (this.type == 634)
|
|
{
|
|
this.npcSlots = 0.5f;
|
|
this.width = 22;
|
|
this.height = 18;
|
|
this.aiStyle = 14;
|
|
this.damage = 13;
|
|
this.defense = 2;
|
|
this.lifeMax = 16;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.knockBackResist = 0.8f;
|
|
this.DeathSound = SoundID.NPCDeath4;
|
|
this.value = 90f;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 635)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 3;
|
|
this.damage = 20;
|
|
this.defense = 8;
|
|
this.lifeMax = 60;
|
|
this.HitSound = SoundID.NPCHit2;
|
|
this.DeathSound = SoundID.NPCDeath2;
|
|
this.knockBackResist = 0.5f;
|
|
this.value = 100f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = false;
|
|
}
|
|
else if (this.type == 636)
|
|
{
|
|
this.noGravity = true;
|
|
this.width = 100;
|
|
this.height = 100;
|
|
this.aiStyle = 120;
|
|
this.damage = 80;
|
|
this.defense = 50;
|
|
this.lifeMax = 70000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath65;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 250000f;
|
|
this.noTileCollide = true;
|
|
this.boss = true;
|
|
this.Opacity = 0.0f;
|
|
}
|
|
else if (this.type == 637 || this.type == 638)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 28;
|
|
if (this.type == 637)
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
this.housingCategory = 1;
|
|
}
|
|
else if (this.type >= 639 && this.type <= 645)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) (4831 + (this.type - 639));
|
|
}
|
|
else if (this.type >= 646 && this.type <= 652)
|
|
{
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.catchItem = (short) (4838 + (this.type - 646));
|
|
}
|
|
else if (this.type == 653)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 65;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.25f;
|
|
this.noGravity = true;
|
|
this.lavaImmune = true;
|
|
this.catchItem = (short) 4845;
|
|
}
|
|
else if (this.type == 654)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 64;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.2f;
|
|
this.noGravity = true;
|
|
this.lavaImmune = true;
|
|
this.catchItem = (short) 4847;
|
|
}
|
|
else if (this.type == 655)
|
|
{
|
|
this.width = 14;
|
|
this.height = 14;
|
|
this.aiStyle = 67;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.5f;
|
|
this.noGravity = true;
|
|
this.lavaImmune = true;
|
|
this.catchItem = (short) 4849;
|
|
}
|
|
else if (this.type == 656)
|
|
{
|
|
this.townNPC = true;
|
|
this.friendly = true;
|
|
this.width = 18;
|
|
this.height = 20;
|
|
this.aiStyle = 7;
|
|
this.damage = 10;
|
|
this.defense = 15;
|
|
this.lifeMax = 250;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.5f;
|
|
this.housingCategory = 1;
|
|
}
|
|
else if (this.type == 657)
|
|
{
|
|
this.width = 114;
|
|
this.height = 100;
|
|
this.aiStyle = 121;
|
|
this.damage = 60;
|
|
this.defense = 26;
|
|
this.lifeMax = 18000;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath64;
|
|
this.lavaImmune = true;
|
|
this.knockBackResist = 0.0f;
|
|
this.value = 60000f;
|
|
this.buffImmune[20] = true;
|
|
this.buffImmune[31] = true;
|
|
this.boss = true;
|
|
}
|
|
else if (this.type == 658 || this.type == 659)
|
|
{
|
|
this.width = 24;
|
|
this.height = 18;
|
|
this.aiStyle = 1;
|
|
this.damage = 40;
|
|
this.defense = 35;
|
|
this.lifeMax = 150;
|
|
this.scale = 1f;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 660)
|
|
{
|
|
this.width = 40;
|
|
this.height = 30;
|
|
this.aiStyle = 14;
|
|
this.damage = 50;
|
|
this.defense = 30;
|
|
this.lifeMax = 120;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.knockBackResist = 0.8f;
|
|
this.scale = 1f;
|
|
this.buffImmune[20] = true;
|
|
}
|
|
else if (this.type == 661)
|
|
{
|
|
this.width = 10;
|
|
this.height = 10;
|
|
this.aiStyle = 65;
|
|
this.damage = 0;
|
|
this.defense = 0;
|
|
this.lifeMax = 5;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath1;
|
|
this.npcSlots = 0.25f;
|
|
this.noGravity = true;
|
|
this.lavaImmune = true;
|
|
this.catchItem = (short) 4961;
|
|
this.rarity = 4;
|
|
}
|
|
else if (this.type == 662)
|
|
{
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.aiStyle = 122;
|
|
this.damage = 75;
|
|
this.defense = 22;
|
|
this.lifeMax = 500;
|
|
this.HitSound = SoundID.NPCHit1;
|
|
this.DeathSound = SoundID.NPCDeath6;
|
|
this.knockBackResist = 0.2f;
|
|
this.value = 0.0f;
|
|
flag = true;
|
|
this.noTileCollide = true;
|
|
this.lavaImmune = true;
|
|
this.trapImmune = true;
|
|
this.noGravity = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
for (int index = 0; index < 323; ++index)
|
|
this.buffImmune[index] = true;
|
|
}
|
|
if (Main.dedServ)
|
|
this.frame = new Microsoft.Xna.Framework.Rectangle();
|
|
else if (TextureAssets.Npc[this.type] != null && TextureAssets.Npc[this.type].IsLoaded)
|
|
this.frame = new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Npc[this.type].Width(), TextureAssets.Npc[this.type].Height() / Main.npcFrameCount[this.type]);
|
|
else
|
|
this.setFrameSize = true;
|
|
if (spawnparams.sizeScaleOverride.HasValue)
|
|
{
|
|
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 = spawnparams.sizeScaleOverride.Value;
|
|
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);
|
|
}
|
|
if (this.buffImmune[20])
|
|
this.buffImmune[70] = true;
|
|
if (this.buffImmune[39])
|
|
this.buffImmune[153] = true;
|
|
this.life = this.lifeMax;
|
|
this.defDamage = this.damage;
|
|
this.defDefense = this.defense;
|
|
this.netID = this.type;
|
|
if (Main.getGoodWorld)
|
|
this.getGoodAdjustments();
|
|
this.ScaleStats(spawnparams.playerCountForMultiplayerDifficultyOverride, spawnparams.gameModeData, spawnparams.strengthMultiplierOverride);
|
|
this.life = this.lifeMax;
|
|
}
|
|
}
|
|
|
|
private void getGoodAdjustments()
|
|
{
|
|
if (this.type == 13)
|
|
{
|
|
this.scale *= 1.4f;
|
|
this.defense += 2;
|
|
}
|
|
else if (this.type == 14)
|
|
{
|
|
this.scale *= 1.4f;
|
|
this.defense += 2;
|
|
}
|
|
else if (this.type == 15)
|
|
{
|
|
this.scale *= 1.4f;
|
|
this.defense += 2;
|
|
}
|
|
else if (this.type == 35)
|
|
this.scale *= 1.25f;
|
|
else if (this.type == 36)
|
|
this.scale *= 1.15f;
|
|
else if (this.type == 113)
|
|
{
|
|
this.scale *= 0.65f;
|
|
this.lifeMax = (int) ((double) this.lifeMax * 1.5);
|
|
this.defense += 3;
|
|
}
|
|
else if (this.type == 114)
|
|
{
|
|
this.scale *= 0.65f;
|
|
this.lifeMax = (int) ((double) this.lifeMax * 1.5);
|
|
this.defense += 3;
|
|
}
|
|
else if (this.type == 115)
|
|
this.scale *= 1.4f;
|
|
else if (this.type == 116)
|
|
this.scale *= 1.4f;
|
|
else if (this.type == 125)
|
|
this.scale *= 0.8f;
|
|
else if (this.type == 126)
|
|
this.scale *= 0.8f;
|
|
else if (this.type == (int) sbyte.MaxValue)
|
|
this.scale *= 1.1f;
|
|
else if (this.type == 128)
|
|
this.scale *= 1.1f;
|
|
else if (this.type == 129)
|
|
this.scale *= 1.1f;
|
|
else if (this.type == 130)
|
|
this.scale *= 1.1f;
|
|
else if (this.type == 131)
|
|
this.scale *= 1.1f;
|
|
else if (this.type == 134)
|
|
this.scale *= 1.3f;
|
|
else if (this.type == 135)
|
|
this.scale *= 1.3f;
|
|
else if (this.type == 136)
|
|
this.scale *= 1.3f;
|
|
else if (this.type == 139)
|
|
this.scale *= 1.3f;
|
|
else if (this.type == 222)
|
|
this.scale *= 1.2f;
|
|
else if (this.type == 245)
|
|
this.scale *= 0.5f;
|
|
else if (this.type == 246)
|
|
this.scale *= 0.5f;
|
|
else if (this.type == 247 || this.type == 248)
|
|
this.scale *= 0.5f;
|
|
else if (this.type == 249)
|
|
this.scale *= 0.5f;
|
|
else if (this.type == 262)
|
|
{
|
|
this.scale *= 1.3f;
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 266)
|
|
return;
|
|
this.defense = (int) ((double) this.defense * 1.5);
|
|
this.damage = (int) ((double) this.damage * 1.2);
|
|
this.scale *= 1.1f;
|
|
}
|
|
}
|
|
|
|
private void LazySetLiquidMovementDD2()
|
|
{
|
|
this.waterMovementSpeed = 1f;
|
|
this.lavaMovementSpeed = 1f;
|
|
this.honeyMovementSpeed = 1f;
|
|
}
|
|
|
|
public static void SetWorldSpecificMonstersByWorldID()
|
|
{
|
|
UnifiedRandom unifiedRandom = new UnifiedRandom(Main.worldID);
|
|
int num1 = unifiedRandom.Next(3);
|
|
int num2 = unifiedRandom.Next(3);
|
|
while (num1 == num2)
|
|
num1 = unifiedRandom.Next(3);
|
|
for (int index1 = 0; index1 < 2; ++index1)
|
|
{
|
|
int num3 = num1;
|
|
if (index1 == 1)
|
|
num3 = num2;
|
|
for (int index2 = 0; index2 < 3; ++index2)
|
|
{
|
|
switch (num3)
|
|
{
|
|
case 0:
|
|
NPC.cavernMonsterType[index1, index2] = unifiedRandom.Next(494, 496);
|
|
break;
|
|
case 1:
|
|
NPC.cavernMonsterType[index1, index2] = unifiedRandom.Next(496, 498);
|
|
break;
|
|
default:
|
|
NPC.cavernMonsterType[index1, index2] = unifiedRandom.Next(498, 507);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public NPCSpawnParams GetMatchingSpawnParams() => new NPCSpawnParams()
|
|
{
|
|
sizeScaleOverride = new float?(-1f),
|
|
playerCountForMultiplayerDifficultyOverride = new int?(this.statsAreScaledForThisManyPlayers),
|
|
strengthMultiplierOverride = new float?(this.strengthMultiplier)
|
|
};
|
|
|
|
public void ScaleStats(
|
|
int? activePlayersCount,
|
|
GameModeData gameModeData,
|
|
float? strengthOverride)
|
|
{
|
|
if ((!NPCID.Sets.NeedsExpertScaling.IndexInRange<bool>(this.type) || !NPCID.Sets.NeedsExpertScaling[this.type]) && (this.lifeMax <= 5 || this.damage == 0 || this.friendly || this.townNPC))
|
|
return;
|
|
float strength = 1f;
|
|
if (strengthOverride.HasValue)
|
|
strength = strengthOverride.Value;
|
|
else if (gameModeData.IsJourneyMode)
|
|
{
|
|
CreativePowers.DifficultySliderPower power = CreativePowerManager.Instance.GetPower<CreativePowers.DifficultySliderPower>();
|
|
if (power != null && power.GetIsUnlocked())
|
|
strength = power.StrengthMultiplierToGiveNPCs;
|
|
}
|
|
NPCStrengthHelper npcStrengthHelper = new NPCStrengthHelper(gameModeData, strength);
|
|
if (npcStrengthHelper.IsExpertMode)
|
|
this.ScaleStats_ApplyExpertTweaks();
|
|
this.ScaleStats_ApplyGameMode(gameModeData);
|
|
if (npcStrengthHelper.IsExpertMode)
|
|
{
|
|
int numPlayers = !activePlayersCount.HasValue ? NPC.GetActivePlayerCount() : activePlayersCount.Value;
|
|
this.statsAreScaledForThisManyPlayers = numPlayers;
|
|
float balance;
|
|
float boost;
|
|
NPC.GetStatScalingFactors(numPlayers, out balance, out boost);
|
|
float bossAdjustment = 1f;
|
|
if (npcStrengthHelper.IsMasterMode)
|
|
bossAdjustment = 0.85f;
|
|
this.ScaleStats_ApplyMultiplayerStats(numPlayers, balance, boost, bossAdjustment);
|
|
}
|
|
this.strengthMultiplier = strength;
|
|
this.ScaleStats_UseStrengthMultiplier(this.strengthMultiplier);
|
|
if ((this.type < 0 ? 0 : (NPCID.Sets.ProjectileNPC[this.type] ? 1 : 0)) == 0 && this.lifeMax < 6)
|
|
this.lifeMax = 6;
|
|
this.life = this.lifeMax;
|
|
this.defDamage = this.damage;
|
|
this.defDefense = this.defense;
|
|
}
|
|
|
|
public void ScaleStats_UseStrengthMultiplier(float strength)
|
|
{
|
|
if ((this.type < 0 ? 0 : (NPCID.Sets.ProjectileNPC[this.type] ? 1 : 0)) == 0)
|
|
this.lifeMax = (int) ((double) this.lifeMax * (double) strength);
|
|
this.damage = (int) ((double) this.damage * (double) strength);
|
|
}
|
|
|
|
public void ScaleStats_Old(int? activePlayersCount, GameModeData gameModeData)
|
|
{
|
|
if (!gameModeData.IsExpertMode || (this.type < 0 || !NPCID.Sets.NeedsExpertScaling[this.type]) && (this.life <= 5 || this.damage == 0 || this.friendly || this.townNPC))
|
|
return;
|
|
this.ScaleStats_ApplyExpertTweaks();
|
|
this.ScaleStats_ApplyGameMode(gameModeData);
|
|
int numPlayers = !activePlayersCount.HasValue ? NPC.GetActivePlayerCount() : activePlayersCount.Value;
|
|
this.statsAreScaledForThisManyPlayers = numPlayers;
|
|
float balance;
|
|
float boost;
|
|
NPC.GetStatScalingFactors(numPlayers, out balance, out boost);
|
|
float bossAdjustment = 1f;
|
|
if (gameModeData.IsMasterMode)
|
|
bossAdjustment = 0.85f;
|
|
this.ScaleStats_ApplyMultiplayerStats(numPlayers, balance, boost, bossAdjustment);
|
|
}
|
|
|
|
public static float GetBalance()
|
|
{
|
|
float balance;
|
|
NPC.GetStatScalingFactors(NPC.GetActivePlayerCount(), out balance, out float _);
|
|
return balance;
|
|
}
|
|
|
|
private float GetMyBalance()
|
|
{
|
|
if (this.statsAreScaledForThisManyPlayers <= 1)
|
|
return 1f;
|
|
float balance;
|
|
NPC.GetStatScalingFactors(this.statsAreScaledForThisManyPlayers, out balance, out float _);
|
|
return balance;
|
|
}
|
|
|
|
private static int GetActivePlayerCount()
|
|
{
|
|
if (Main.netMode == 0)
|
|
return 1;
|
|
int num = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index] != null && Main.player[index].active)
|
|
++num;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
private void ScaleStats_ApplyExpertTweaks()
|
|
{
|
|
bool flag = this.type >= 0 && NPCID.Sets.ProjectileNPC[this.type];
|
|
if (!NPCID.Sets.DontDoHardmodeScaling[this.type] && Main.hardMode && !this.boss && this.lifeMax < 1000)
|
|
{
|
|
int num1 = this.damage + this.defense + this.lifeMax / 4;
|
|
if (num1 == 0)
|
|
num1 = 1;
|
|
int num2 = 80;
|
|
if (NPC.downedPlantBoss)
|
|
num2 += 20;
|
|
if (num1 < num2)
|
|
{
|
|
float num3 = (float) (num2 / num1);
|
|
this.damage = (int) ((double) this.damage * (double) num3 * 0.9);
|
|
if (!flag)
|
|
{
|
|
this.defense = (int) ((double) this.defense * (double) num3);
|
|
this.lifeMax = (int) ((double) this.lifeMax * (double) num3 * 1.1);
|
|
this.value = (float) (int) ((double) this.value * (double) num3 * 0.8);
|
|
}
|
|
}
|
|
}
|
|
if (this.type != 210 && this.type != 211)
|
|
return;
|
|
this.damage = (int) ((double) this.damage * 0.600000023841858);
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.800000011920929);
|
|
this.defense = (int) ((double) this.defense * 0.800000011920929);
|
|
}
|
|
|
|
private void ScaleStats_ApplyGameMode(GameModeData gameModeData)
|
|
{
|
|
int num1 = this.type < 0 ? 0 : (NPCID.Sets.ProjectileNPC[this.type] ? 1 : 0);
|
|
int num2 = 0;
|
|
if (Main.getGoodWorld)
|
|
++num2;
|
|
if (num1 == 0)
|
|
{
|
|
this.value = (float) (int) ((double) this.value * ((double) gameModeData.EnemyMoneyDropMultiplier + (double) num2));
|
|
this.lifeMax = (int) ((double) this.lifeMax * ((double) gameModeData.EnemyMaxLifeMultiplier + (double) num2));
|
|
}
|
|
this.damage = (int) ((double) this.damage * ((double) gameModeData.EnemyDamageMultiplier + (double) num2));
|
|
this.knockBackResist *= gameModeData.KnockbackToEnemiesMultiplier;
|
|
if (!Main.getGoodWorld)
|
|
return;
|
|
this.damage += this.damage / 3;
|
|
}
|
|
|
|
private void ScaleStats_ApplyMultiplayerStats(
|
|
int numPlayers,
|
|
float balance,
|
|
float boost,
|
|
float bossAdjustment)
|
|
{
|
|
if (this.type == 5)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) bossAdjustment);
|
|
if (this.type == 4)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.65 * (double) balance * (double) bossAdjustment);
|
|
if (this.type >= 13 && this.type <= 15)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance * (double) bossAdjustment);
|
|
if (this.type == 13)
|
|
this.damage = (int) ((double) this.damage * 1.1);
|
|
if (this.type == 14)
|
|
this.damage = (int) ((double) this.damage * 0.8);
|
|
if (this.type == 15)
|
|
this.damage = (int) ((double) this.damage * 0.8);
|
|
this.scale *= 1.2f;
|
|
this.defense += 2;
|
|
}
|
|
if (this.type == 266 || this.type == 267)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.85 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.9);
|
|
this.scale *= 1.05f;
|
|
for (float num = 1f; (double) num < (double) balance; num += 0.34f)
|
|
{
|
|
if ((double) this.knockBackResist < 0.1)
|
|
{
|
|
this.knockBackResist = 0.0f;
|
|
break;
|
|
}
|
|
this.knockBackResist *= 0.8f;
|
|
}
|
|
}
|
|
if (this.type == 50)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.8);
|
|
}
|
|
if (this.type == 471)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.85 * ((double) balance * 2.0 + 1.0) / 3.0);
|
|
if (this.type == 472)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.85 * ((double) balance + 1.0) / 2.0);
|
|
this.damage = (int) ((double) this.damage * 0.8);
|
|
}
|
|
if (this.type == 222)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.9);
|
|
}
|
|
if (this.type == 210 || this.type == 211)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75);
|
|
if (this.type == 35)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 1.1);
|
|
}
|
|
else if (this.type == 36)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 1.3 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 1.1);
|
|
}
|
|
if (this.type == 113 || this.type == 114)
|
|
{
|
|
this.defense += 6;
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 1.5);
|
|
}
|
|
else if (this.type == 115)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance);
|
|
if (numPlayers > 4)
|
|
this.knockBackResist = 0.0f;
|
|
else if (numPlayers > 1)
|
|
this.knockBackResist *= 1f - boost;
|
|
this.defense += 6;
|
|
}
|
|
else if (this.type == 116)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance);
|
|
if (numPlayers > 4)
|
|
this.knockBackResist = 0.0f;
|
|
else if (numPlayers > 1)
|
|
this.knockBackResist *= 1f - boost;
|
|
}
|
|
else if (this.type == 117 || this.type == 118 || this.type == 119)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.8);
|
|
if (this.type == 657)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.800000011920929 * (double) balance * (double) bossAdjustment);
|
|
if (this.type >= 658 && this.type <= 660)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) balance * (double) bossAdjustment);
|
|
if (this.type >= 134 && this.type <= 136)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) balance * (double) bossAdjustment);
|
|
if (this.type == 134)
|
|
this.damage *= 2;
|
|
if (this.type == 135)
|
|
this.damage = (int) ((double) this.damage * 0.85);
|
|
if (this.type == 136)
|
|
this.damage = (int) ((double) this.damage * 0.85);
|
|
this.scale *= 1.05f;
|
|
}
|
|
else if (this.type == 139)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * ((double) balance * 2.0 + 1.0) / 3.0);
|
|
this.damage = (int) ((double) this.damage * 0.8);
|
|
this.scale *= 1.05f;
|
|
}
|
|
if (this.type >= (int) sbyte.MaxValue && this.type <= 131)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.85);
|
|
}
|
|
if (this.type >= 125 && this.type <= 126)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.85);
|
|
}
|
|
if (this.type == 262)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 1.15);
|
|
}
|
|
else if (this.type == 264)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 1.15);
|
|
}
|
|
if (this.type == 636)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 1.15);
|
|
}
|
|
if (this.type >= 245 && this.type <= 249)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.8);
|
|
}
|
|
if (this.type == 370)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.6 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.7);
|
|
}
|
|
else if (this.type == 371 || this.type == 372 || this.type == 373)
|
|
{
|
|
if (this.type != 371)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75);
|
|
this.damage = (int) ((double) this.damage * 0.75);
|
|
}
|
|
if (this.type == 439 || this.type == 440 || this.type >= 454 && this.type <= 459 || this.type == 522 || this.type == 523)
|
|
{
|
|
if (this.type != 522)
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.625 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.75);
|
|
}
|
|
if (this.type == 397 || this.type == 396 || this.type == 398)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.75);
|
|
}
|
|
if (this.type == 551)
|
|
{
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) balance * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.65);
|
|
}
|
|
else if (NPCID.Sets.BelongsToInvasionOldOnesArmy[this.type])
|
|
{
|
|
int num = 7;
|
|
this.lifeMax = (int) ((double) this.lifeMax * (double) ((float) ((double) balance * (double) (num - 1) + 1.0) / (float) num) * (double) bossAdjustment);
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 305:
|
|
case 306:
|
|
case 307:
|
|
case 308:
|
|
case 309:
|
|
case 310:
|
|
case 311:
|
|
case 312:
|
|
case 313:
|
|
case 314:
|
|
case 315:
|
|
case 326:
|
|
case 329:
|
|
case 330:
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75);
|
|
this.damage = (int) ((double) this.damage * 0.75);
|
|
break;
|
|
case 325:
|
|
case 327:
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.65 * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.75);
|
|
break;
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 338:
|
|
case 339:
|
|
case 340:
|
|
case 341:
|
|
case 342:
|
|
case 343:
|
|
case 347:
|
|
case 348:
|
|
case 349:
|
|
case 350:
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.75);
|
|
this.damage = (int) ((double) this.damage * 0.75);
|
|
break;
|
|
case 344:
|
|
case 345:
|
|
case 346:
|
|
this.lifeMax = (int) ((double) this.lifeMax * 0.65 * (double) bossAdjustment);
|
|
this.damage = (int) ((double) this.damage * 0.75);
|
|
break;
|
|
}
|
|
this.defDefense = this.defense;
|
|
this.defDamage = this.damage;
|
|
this.life = this.lifeMax;
|
|
}
|
|
|
|
private static void GetStatScalingFactors(int numPlayers, out float balance, out float boost)
|
|
{
|
|
balance = 1f;
|
|
boost = 0.35f;
|
|
for (int index = 1; index < numPlayers; ++index)
|
|
{
|
|
balance += boost;
|
|
boost += (float) ((1.0 - (double) boost) / 3.0);
|
|
}
|
|
if ((double) balance > 8.0)
|
|
balance = (float) (((double) balance * 2.0 + 8.0) / 3.0);
|
|
if ((double) balance <= 1000.0)
|
|
return;
|
|
balance = 1000f;
|
|
}
|
|
|
|
public static bool GetNPCLocation(
|
|
int i,
|
|
bool seekHead,
|
|
bool averageDirection,
|
|
out int index,
|
|
out Vector2 pos)
|
|
{
|
|
int type = Main.npc[i].type;
|
|
int index1 = -1;
|
|
int num1 = -1;
|
|
switch (type)
|
|
{
|
|
case 7:
|
|
num1 = 9;
|
|
index1 = 0;
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
num1 = 7;
|
|
index1 = 1;
|
|
break;
|
|
case 10:
|
|
num1 = 12;
|
|
index1 = 0;
|
|
break;
|
|
case 11:
|
|
case 12:
|
|
num1 = 10;
|
|
index1 = 1;
|
|
break;
|
|
case 13:
|
|
num1 = 15;
|
|
index1 = 0;
|
|
break;
|
|
case 14:
|
|
case 15:
|
|
num1 = 13;
|
|
index1 = 1;
|
|
break;
|
|
case 39:
|
|
num1 = 41;
|
|
index1 = 0;
|
|
break;
|
|
case 40:
|
|
case 41:
|
|
num1 = 39;
|
|
index1 = 1;
|
|
break;
|
|
case 87:
|
|
num1 = 92;
|
|
index1 = 0;
|
|
break;
|
|
case 88:
|
|
case 89:
|
|
case 90:
|
|
case 91:
|
|
case 92:
|
|
num1 = 87;
|
|
index1 = 1;
|
|
break;
|
|
case 95:
|
|
num1 = 97;
|
|
index1 = 0;
|
|
break;
|
|
case 96:
|
|
case 97:
|
|
num1 = 95;
|
|
index1 = 1;
|
|
break;
|
|
case 98:
|
|
num1 = 100;
|
|
index1 = 0;
|
|
break;
|
|
case 99:
|
|
case 100:
|
|
num1 = 98;
|
|
index1 = 1;
|
|
break;
|
|
case 117:
|
|
num1 = 119;
|
|
index1 = 0;
|
|
break;
|
|
case 118:
|
|
case 119:
|
|
num1 = 117;
|
|
index1 = 1;
|
|
break;
|
|
case 134:
|
|
num1 = 136;
|
|
index1 = 0;
|
|
break;
|
|
case 135:
|
|
case 136:
|
|
num1 = 134;
|
|
index1 = 1;
|
|
break;
|
|
case 454:
|
|
num1 = 459;
|
|
index1 = 0;
|
|
break;
|
|
case 455:
|
|
case 456:
|
|
case 457:
|
|
case 458:
|
|
case 459:
|
|
num1 = 454;
|
|
index1 = 1;
|
|
break;
|
|
case 510:
|
|
num1 = 512;
|
|
index1 = 0;
|
|
break;
|
|
case 511:
|
|
case 512:
|
|
num1 = 510;
|
|
index1 = 1;
|
|
break;
|
|
case 513:
|
|
num1 = 515;
|
|
index1 = 0;
|
|
break;
|
|
case 514:
|
|
case 515:
|
|
num1 = 513;
|
|
index1 = 1;
|
|
break;
|
|
case 621:
|
|
num1 = 623;
|
|
index1 = 0;
|
|
break;
|
|
case 622:
|
|
case 623:
|
|
num1 = 621;
|
|
index1 = 1;
|
|
break;
|
|
}
|
|
if (index1 != -1)
|
|
{
|
|
if (seekHead && index1 == 1)
|
|
{
|
|
index = -1;
|
|
pos = Vector2.Zero;
|
|
return false;
|
|
}
|
|
Vector2 center1 = Main.npc[i].Center;
|
|
int index2 = -1;
|
|
float num2 = -1f;
|
|
int index3 = -1;
|
|
Vector2 center2 = Main.player[Main.myPlayer].Center;
|
|
int index4 = (int) Main.npc[i].ai[index1];
|
|
for (int index5 = 0; index4 >= 0 && index4 < 200 && ++index5 < 100 && Main.npc[index4].active; index4 = (int) Main.npc[index4].ai[index1])
|
|
{
|
|
if (!averageDirection && (index3 == -1 || (double) Main.npc[index4].Distance(center2) < (double) num2))
|
|
{
|
|
num2 = Main.npc[index4].Distance(center2);
|
|
index3 = index4;
|
|
}
|
|
if (Main.npc[index4].type == num1)
|
|
{
|
|
index2 = index4;
|
|
break;
|
|
}
|
|
}
|
|
if (index2 >= 0)
|
|
{
|
|
if (!averageDirection)
|
|
{
|
|
pos = Main.npc[index3].Center;
|
|
index = index3;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2 = center1 + Main.npc[index2].Center;
|
|
pos = vector2 / 2f;
|
|
index = index2;
|
|
}
|
|
return true;
|
|
}
|
|
pos = Vector2.Zero;
|
|
index = -1;
|
|
return false;
|
|
}
|
|
pos = Main.npc[i].Center;
|
|
index = i;
|
|
return true;
|
|
}
|
|
|
|
public void AI()
|
|
{
|
|
// ISSUE: The method is too long to display (123208 instructions)
|
|
}
|
|
|
|
public void AI_122_PirateGhost()
|
|
{
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
SoundEngine.PlaySound(SoundID.NPCHit6, this.position);
|
|
}
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
if (targetData.Invalid)
|
|
{
|
|
this.TargetClosest();
|
|
targetData = this.GetTargetData();
|
|
}
|
|
if (targetData.Invalid)
|
|
{
|
|
this.velocity = this.velocity * 0.9f;
|
|
this.alpha = Utils.Clamp<int>(this.alpha + 5, 0, (int) byte.MaxValue);
|
|
if (this.alpha < (int) byte.MaxValue)
|
|
return;
|
|
this.StrikeNPCNoInteraction(9999, 0.0f, 0);
|
|
}
|
|
else
|
|
{
|
|
this.alpha = Utils.Clamp<int>(this.alpha - 5, 0, (int) byte.MaxValue);
|
|
this.velocity = this.velocity.MoveTowards(Vector2.Zero.MoveTowards(targetData.Center - this.Center, 4f), 0.1333333f);
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == this.type && index != this.whoAmI)
|
|
{
|
|
Vector2 vector2 = Main.npc[index].Center - this.Center;
|
|
if ((double) vector2.Length() < 50.0)
|
|
{
|
|
vector2.Normalize();
|
|
vector2 *= 0.1f;
|
|
this.velocity = this.velocity - vector2;
|
|
this.velocity.X -= vector2.X * 1f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void AI_000_TransformBoundNPC(int playerID, int npcType)
|
|
{
|
|
this.Transform(npcType);
|
|
Main.BestiaryTracker.Chats.RegisterChatStartWith(this);
|
|
Main.player[playerID].SetTalkNPC(this.whoAmI);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(40, number: playerID);
|
|
}
|
|
|
|
private void AI_065_Butterflies()
|
|
{
|
|
float num1 = this.ai[0];
|
|
float num2 = this.ai[1];
|
|
Color color;
|
|
if (this.type == 661)
|
|
{
|
|
color = Main.hslToRgb((float) ((double) Main.GlobalTimeWrappedHourly * 0.330000013113022 % 1.0), 1f, 0.5f);
|
|
Lighting.AddLight(this.Center, color.ToVector3() * 0.3f + Vector3.One * 0.1f);
|
|
int num3 = 60;
|
|
bool flag = false;
|
|
int num4 = 50;
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
if (targetData.Invalid || (double) targetData.Center.Distance(this.Center) >= 300.0)
|
|
flag = true;
|
|
if (!targetData.Invalid && targetData.Type == NPCTargetType.Player && !Main.player[this.target].ZoneHallow)
|
|
{
|
|
num4 = num3;
|
|
flag = true;
|
|
}
|
|
this.ai[2] = MathHelper.Clamp(this.ai[2] + (float) flag.ToDirectionInt(), 0.0f, (float) num4);
|
|
if ((double) this.ai[2] >= (double) num3)
|
|
{
|
|
this.active = false;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
return;
|
|
}
|
|
this.Opacity = Utils.GetLerpValue((float) num3, (float) num4 / 2f, this.ai[2], true);
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
int num5 = 1;
|
|
for (int index = 0; index < num5; ++index)
|
|
{
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
float num6 = MathHelper.Lerp(0.9f, 0.6f, this.Opacity);
|
|
int dustIndex = Dust.NewDust(this.position, this.width, this.height, 267, newColor: (Main.hslToRgb((float) ((double) Main.GlobalTimeWrappedHourly * 0.300000011920929 % 1.0), 1f, 0.5f) * 0.5f));
|
|
Main.dust[dustIndex].position = this.Center + Main.rand.NextVector2Circular((float) this.width, (float) this.height);
|
|
Main.dust[dustIndex].velocity *= Main.rand.NextFloat() * 0.8f;
|
|
Main.dust[dustIndex].velocity += this.velocity * 0.6f;
|
|
Main.dust[dustIndex].noGravity = true;
|
|
Main.dust[dustIndex].fadeIn = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 0.699999988079071 * (double) num6);
|
|
Main.dust[dustIndex].scale = 0.35f;
|
|
if (dustIndex != 6000)
|
|
{
|
|
Dust dust = Dust.CloneDust(dustIndex);
|
|
dust.scale /= 2f;
|
|
dust.fadeIn *= 0.85f;
|
|
dust.color = new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue) * 0.5f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.dontTakeDamage = (double) this.ai[2] >= (double) (num4 / 2);
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
if ((double) this.ai[2] == 0.0 && this.type != 661)
|
|
{
|
|
int num7 = 0;
|
|
int num8 = 4;
|
|
int num9 = 6;
|
|
int num10 = 3;
|
|
int num11 = 7;
|
|
int num12 = 2;
|
|
int num13 = 1;
|
|
int num14 = 5;
|
|
int num15 = Main.rand.Next(100);
|
|
this.ai[2] = (float) (1 + (num15 != 0 ? (num15 >= 3 ? (num15 >= 9 ? (num15 >= 19 ? (num15 >= 34 ? (num15 >= 53 ? (num15 >= 75 ? num7 : num8) : num9) : num10) : num11) : num12) : num13) : num14));
|
|
}
|
|
if ((double) this.ai[3] == 0.0)
|
|
this.ai[3] = (float) Main.rand.Next(75, 111) * 0.01f;
|
|
--this.localAI[0];
|
|
if ((double) this.localAI[0] <= 0.0)
|
|
{
|
|
this.localAI[0] = (float) Main.rand.Next(90, 240);
|
|
this.TargetClosest();
|
|
float num16 = Math.Abs(this.Center.X - Main.player[this.target].Center.X);
|
|
if ((double) num16 > 700.0 && (double) this.localAI[3] == 0.0)
|
|
{
|
|
float num17 = (float) Main.rand.Next(50, 151) * 0.01f;
|
|
if ((double) num16 > 1000.0)
|
|
num17 = (float) Main.rand.Next(150, 201) * 0.01f;
|
|
else if ((double) num16 > 850.0)
|
|
num17 = (float) Main.rand.Next(100, 151) * 0.01f;
|
|
int num18 = this.direction * Main.rand.Next(100, 251);
|
|
int num19 = Main.rand.Next(-50, 51);
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y - 100.0)
|
|
num19 -= Main.rand.Next(100, 251);
|
|
float num20 = num17 / (float) Math.Sqrt((double) (num18 * num18 + num19 * num19));
|
|
num1 = (float) num18 * num20;
|
|
num2 = (float) num19 * num20;
|
|
}
|
|
else
|
|
{
|
|
this.localAI[3] = 1f;
|
|
double num21 = (double) Main.rand.Next(26, 301) * 0.00999999977648258;
|
|
int num22 = Main.rand.Next(-100, 101);
|
|
int num23 = Main.rand.Next(-100, 101);
|
|
double num24 = Math.Sqrt((double) (num22 * num22 + num23 * num23));
|
|
float num25 = (float) (num21 / num24);
|
|
num1 = (float) num22 * num25;
|
|
num2 = (float) num23 * num25;
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
this.scale = this.ai[3];
|
|
int num26 = 60;
|
|
this.velocity.X = (this.velocity.X * (float) (num26 - 1) + num1) / (float) num26;
|
|
this.velocity.Y = (this.velocity.Y * (float) (num26 - 1) + num2) / (float) num26;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
int num27 = 3;
|
|
int index1 = (int) this.Center.X / 16;
|
|
int num28 = (int) this.Center.Y / 16;
|
|
for (int index2 = num28; index2 < num28 + num27; ++index2)
|
|
{
|
|
if (Main.tile[index1, index2] != null && (Main.tile[index1, index2].nactive() && Main.tileSolid[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2].liquid > (byte) 0))
|
|
{
|
|
num2 *= -1f;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
int num29 = 30;
|
|
bool flag = false;
|
|
int index3 = (int) this.Center.X / 16;
|
|
int num30 = (int) this.Center.Y / 16;
|
|
for (int index4 = num30; index4 < num30 + num29; ++index4)
|
|
{
|
|
if (Main.tile[index3, index4] != null && Main.tile[index3, index4].nactive() && Main.tileSolid[(int) Main.tile[index3, index4].type])
|
|
flag = true;
|
|
}
|
|
if (!flag)
|
|
{
|
|
num2 *= -1f;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
}
|
|
}
|
|
if ((double) this.localAI[1] > 0.0)
|
|
{
|
|
--this.localAI[1];
|
|
}
|
|
else
|
|
{
|
|
this.localAI[1] = 15f;
|
|
if (this.type == 661)
|
|
this.localAI[1] = 10f;
|
|
float num31 = 0.0f;
|
|
Vector2 zero = Vector2.Zero;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
NPC npc = Main.npc[index];
|
|
if (npc.active && npc.damage > 0 && !npc.friendly && (double) npc.Hitbox.Distance(this.Center) <= 100.0)
|
|
{
|
|
++num31;
|
|
zero += this.DirectionFrom(npc.Center);
|
|
}
|
|
}
|
|
if ((double) num31 > 0.0)
|
|
{
|
|
this.velocity = this.velocity + zero / num31 * 2f;
|
|
if ((double) this.velocity.Length() > 16.0)
|
|
this.velocity = this.velocity.SafeNormalize(Vector2.Zero) * 16f;
|
|
}
|
|
}
|
|
if (this.collideX)
|
|
{
|
|
num1 = (double) this.velocity.X >= 0.0 ? -Math.Abs(num1) : Math.Abs(num1);
|
|
this.velocity.X *= -0.2f;
|
|
}
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
this.ai[0] = num1;
|
|
this.ai[1] = num2;
|
|
if (this.type == 356)
|
|
this.catchItem = (short) (1994.0 + (double) this.ai[2] - 1.0);
|
|
if (this.type != 653)
|
|
return;
|
|
this.position = this.position + this.netOffset;
|
|
Lighting.AddLight((int) this.Center.X / 16, (int) this.Center.Y / 16, 0.6f, 0.3f, 0.1f);
|
|
if (Main.rand.Next(60) == 0)
|
|
{
|
|
Vector2 position = this.position;
|
|
int width = this.width;
|
|
int height = this.height;
|
|
color = new Color();
|
|
Color newColor = color;
|
|
int index = Dust.NewDust(position, width, height, 6, Alpha: 254, newColor: newColor);
|
|
Main.dust[index].velocity *= 0.0f;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
|
|
public static Color AI_121_QueenSlime_GetDustColor() => Color.Lerp(new Color(0, 160, (int) byte.MaxValue), Color.Lerp(new Color(200, 200, 200), new Color((int) byte.MaxValue, 80, (int) byte.MaxValue), Main.rand.NextFloat()), Main.rand.NextFloat());
|
|
|
|
private void AI_121_QueenSlime_FlyMovement()
|
|
{
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
float num1 = 14f;
|
|
float moveSpeed = 0.1f;
|
|
float num2 = 250f;
|
|
this.TargetClosest();
|
|
Vector2 vector2 = this.Center;
|
|
if (this.timeLeft > 10)
|
|
{
|
|
if (!Collision.CanHit((Entity) this, (Entity) Main.player[this.target]))
|
|
{
|
|
bool flag = false;
|
|
Vector2 center = Main.player[this.target].Center;
|
|
for (int index = 0; index < 16; ++index)
|
|
{
|
|
float num3 = (float) (16 * index);
|
|
Point tileCoordinates = (center + new Vector2(0.0f, -num3)).ToTileCoordinates();
|
|
if (WorldGen.SolidOrSlopedTile(tileCoordinates.X, tileCoordinates.Y))
|
|
{
|
|
vector2 = center + new Vector2(0.0f, (float) (-(double) num3 + 16.0)) - this.Center;
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!flag)
|
|
vector2 = center - this.Center;
|
|
}
|
|
else
|
|
vector2 = Main.player[this.target].Center + new Vector2(0.0f, -num2) - this.Center;
|
|
}
|
|
else
|
|
vector2 = this.Center + new Vector2(500f * (float) this.direction, -num2) - this.Center;
|
|
float num4 = vector2.Length();
|
|
if ((double) Math.Abs(vector2.X) < 40.0)
|
|
vector2.X = this.velocity.X;
|
|
if ((double) num4 > 100.0 && ((double) this.velocity.X < -12.0 && (double) vector2.X > 0.0 || (double) this.velocity.X > 12.0 && (double) vector2.X < 0.0))
|
|
moveSpeed = 0.2f;
|
|
Vector2 desiredVelocity;
|
|
if ((double) num4 < 40.0)
|
|
desiredVelocity = this.velocity;
|
|
else if ((double) num4 < 80.0)
|
|
{
|
|
vector2.Normalize();
|
|
desiredVelocity = vector2 * (num1 * 0.65f);
|
|
}
|
|
else
|
|
{
|
|
vector2.Normalize();
|
|
desiredVelocity = vector2 * num1;
|
|
}
|
|
this.SimpleFlyMovement(desiredVelocity, moveSpeed);
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if ((double) this.rotation > 0.5)
|
|
this.rotation = 0.5f;
|
|
if ((double) this.rotation >= -0.5)
|
|
return;
|
|
this.rotation = -0.5f;
|
|
}
|
|
|
|
private void AI_121_QueenSlime()
|
|
{
|
|
int Damage1 = 30;
|
|
int Damage2 = 40;
|
|
int num1 = Main.expertMode ? 1 : 0;
|
|
float num2 = 1f;
|
|
bool flag1 = false;
|
|
bool flag2 = this.life <= this.lifeMax / 2;
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
this.ai[1] = -100f;
|
|
this.localAI[0] = (float) this.lifeMax;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
}
|
|
Lighting.AddLight(this.Center, 1f, 0.7f, 0.9f);
|
|
int num3 = 500;
|
|
if (Main.player[this.target].dead || (double) Math.Abs(this.Center.X - Main.player[this.target].Center.X) / 16.0 > (double) num3)
|
|
{
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead || (double) Math.Abs(this.Center.X - Main.player[this.target].Center.X) / 16.0 > (double) num3)
|
|
{
|
|
this.EncourageDespawn(10);
|
|
if ((double) Main.player[this.target].Center.X < (double) this.Center.X)
|
|
this.direction = 1;
|
|
else
|
|
this.direction = -1;
|
|
}
|
|
}
|
|
if (!Main.player[this.target].dead && this.timeLeft > 10 && !flag2 && (double) this.ai[3] >= 300.0 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.netUpdate = true;
|
|
this.TargetClosest(false);
|
|
Point tileCoordinates1 = this.Center.ToTileCoordinates();
|
|
Point tileCoordinates2 = Main.player[this.target].Center.ToTileCoordinates();
|
|
Vector2 vector2 = Main.player[this.target].Center - this.Center;
|
|
int num4 = 10;
|
|
int num5 = 0;
|
|
int num6 = 7;
|
|
int num7 = 0;
|
|
bool flag3 = false;
|
|
if ((double) this.ai[3] >= 360.0 || (double) vector2.Length() > 2000.0)
|
|
{
|
|
if ((double) this.ai[3] > 360.0)
|
|
this.ai[3] = 360f;
|
|
flag3 = true;
|
|
num7 = 100;
|
|
}
|
|
while (!flag3 && num7 < 100)
|
|
{
|
|
++num7;
|
|
int index1 = Main.rand.Next(tileCoordinates2.X - num4, tileCoordinates2.X + num4 + 1);
|
|
int index2 = Main.rand.Next(tileCoordinates2.Y - num4, tileCoordinates2.Y + 1);
|
|
if ((index2 < tileCoordinates2.Y - num6 || index2 > tileCoordinates2.Y + num6 || index1 < tileCoordinates2.X - num6 || index1 > tileCoordinates2.X + num6) && (index2 < tileCoordinates1.Y - num5 || index2 > tileCoordinates1.Y + num5 || index1 < tileCoordinates1.X - num5 || index1 > tileCoordinates1.X + num5) && !Main.tile[index1, index2].nactive())
|
|
{
|
|
int index3 = index2;
|
|
int num8 = 0;
|
|
if ((!Main.tile[index1, index3].nactive() || !Main.tileSolid[(int) Main.tile[index1, index3].type] ? 0 : (!Main.tileSolidTop[(int) Main.tile[index1, index3].type] ? 1 : 0)) != 0)
|
|
{
|
|
num8 = 1;
|
|
}
|
|
else
|
|
{
|
|
for (; num8 < 150 && index3 + num8 < Main.maxTilesY; ++num8)
|
|
{
|
|
int index4 = index3 + num8;
|
|
if ((!Main.tile[index1, index4].nactive() || !Main.tileSolid[(int) Main.tile[index1, index4].type] ? 0 : (!Main.tileSolidTop[(int) Main.tile[index1, index4].type] ? 1 : 0)) != 0)
|
|
{
|
|
--num8;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
int index5 = index2 + num8;
|
|
bool flag4 = true;
|
|
if (flag4 && Main.tile[index1, index5].lava())
|
|
flag4 = false;
|
|
if (flag4 && !Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
flag4 = false;
|
|
if (flag4)
|
|
{
|
|
this.localAI[1] = (float) (index1 * 16 + 8);
|
|
this.localAI[2] = (float) (index5 * 16 + 16);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (num7 >= 100)
|
|
{
|
|
Vector2 bottom = Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].Bottom;
|
|
this.localAI[1] = bottom.X;
|
|
this.localAI[2] = bottom.Y;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
if (!flag2 && (!Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0) || (double) Math.Abs(this.Top.Y - Main.player[this.target].Bottom.Y) > 320.0))
|
|
{
|
|
this.ai[3] += 1.5f;
|
|
}
|
|
else
|
|
{
|
|
float num9 = this.ai[3];
|
|
--this.ai[3];
|
|
if ((double) this.ai[3] < 0.0)
|
|
{
|
|
if (Main.netMode != 1 && (double) num9 > 0.0)
|
|
this.netUpdate = true;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
}
|
|
if (this.timeLeft <= 10 && (flag2 && (double) this.ai[0] != 0.0 || !flag2 && (double) this.ai[0] != 3.0))
|
|
{
|
|
this.ai[0] = !flag2 ? 3f : 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
this.noTileCollide = false;
|
|
this.noGravity = false;
|
|
if (flag2)
|
|
{
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] >= 24.0)
|
|
this.localAI[3] = 0.0f;
|
|
if ((double) this.ai[0] == 4.0 && (double) this.ai[2] == 1.0)
|
|
this.localAI[3] = 6f;
|
|
if ((double) this.ai[0] == 5.0 && (double) this.ai[2] != 1.0)
|
|
this.localAI[3] = 7f;
|
|
}
|
|
switch ((int) this.ai[0])
|
|
{
|
|
case 0:
|
|
if (flag2)
|
|
{
|
|
this.AI_121_QueenSlime_FlyMovement();
|
|
}
|
|
else
|
|
{
|
|
this.noTileCollide = false;
|
|
this.noGravity = false;
|
|
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;
|
|
}
|
|
}
|
|
if (this.timeLeft > 10 && (flag2 || (double) this.velocity.Y == 0.0))
|
|
{
|
|
++this.ai[1];
|
|
int num10 = 60;
|
|
if (flag2)
|
|
num10 = 120;
|
|
if ((double) this.ai[1] > (double) num10)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
if (flag2)
|
|
{
|
|
Player player = Main.player[this.target];
|
|
this.ai[0] = Main.rand.Next(2) == 1 ? 5f : 4f;
|
|
if ((double) this.ai[0] == 4.0)
|
|
{
|
|
this.ai[2] = 1f;
|
|
if (player != null && player.active && !player.dead && ((double) player.Bottom.Y < (double) this.Bottom.Y || (double) Math.Abs(player.Center.X - this.Center.X) > 250.0))
|
|
{
|
|
this.ai[0] = 5f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 1:
|
|
this.ai[0] = 4f;
|
|
break;
|
|
case 2:
|
|
this.ai[0] = 5f;
|
|
break;
|
|
default:
|
|
this.ai[0] = 3f;
|
|
break;
|
|
}
|
|
}
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
this.rotation = 0.0f;
|
|
++this.ai[1];
|
|
num2 = (float) (0.5 + (double) MathHelper.Clamp(this.ai[1] / 30f, 0.0f, 1f) * 0.5);
|
|
if ((double) this.ai[1] >= 30.0 && Main.netMode != 1)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
this.TargetClosest();
|
|
}
|
|
if (Main.netMode == 1 && (double) this.ai[1] >= 60.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.TargetClosest();
|
|
}
|
|
Color dustColor1 = NPC.AI_121_QueenSlime_GetDustColor();
|
|
dustColor1.A = (byte) 150;
|
|
for (int index6 = 0; index6 < 10; ++index6)
|
|
{
|
|
int index7 = Dust.NewDust(this.position + Vector2.UnitX * -20f, this.width + 40, this.height, 4, this.velocity.X, this.velocity.Y, 50, dustColor1, 1.5f);
|
|
Main.dust[index7].noGravity = true;
|
|
Main.dust[index7].velocity *= 2f;
|
|
}
|
|
break;
|
|
case 2:
|
|
this.rotation = 0.0f;
|
|
++this.ai[1];
|
|
num2 = (float) (0.5 + (double) MathHelper.Clamp((float) ((60.0 - (double) this.ai[1]) / 60.0), 0.0f, 1f) * 0.5);
|
|
if ((double) this.ai[1] >= 60.0)
|
|
flag1 = true;
|
|
if ((double) this.ai[1] == 60.0)
|
|
Gore.NewGore(this.Center + new Vector2(-40f, (float) (-this.height / 2)), this.velocity, 1258);
|
|
if ((double) this.ai[1] >= 60.0 && Main.netMode != 1)
|
|
{
|
|
this.Bottom = new Vector2(this.localAI[1], this.localAI[2]);
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.netMode == 1 && (double) this.ai[1] >= 120.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if (!flag1)
|
|
{
|
|
Color dustColor2 = NPC.AI_121_QueenSlime_GetDustColor();
|
|
dustColor2.A = (byte) 150;
|
|
for (int index8 = 0; index8 < 10; ++index8)
|
|
{
|
|
int index9 = Dust.NewDust(this.position + Vector2.UnitX * -20f, this.width + 40, this.height, 4, this.velocity.X, this.velocity.Y, 50, dustColor2, 1.5f);
|
|
Main.dust[index9].noGravity = true;
|
|
Main.dust[index9].velocity *= 0.5f;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
this.rotation = 0.0f;
|
|
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[1] += 4f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.66)
|
|
this.ai[1] += 4f;
|
|
if ((double) this.life < (double) this.lifeMax * 0.33)
|
|
this.ai[1] += 4f;
|
|
if ((double) this.ai[1] >= 0.0)
|
|
{
|
|
this.netUpdate = true;
|
|
this.TargetClosest();
|
|
if ((double) this.ai[2] == 3.0)
|
|
{
|
|
this.velocity.Y = -13f;
|
|
this.velocity.X += 3.5f * (float) this.direction;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
if (this.timeLeft > 10)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
break;
|
|
}
|
|
this.ai[1] = -60f;
|
|
break;
|
|
}
|
|
if ((double) this.ai[2] == 2.0)
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.velocity.X += 4.5f * (float) this.direction;
|
|
this.ai[1] = -40f;
|
|
++this.ai[2];
|
|
break;
|
|
}
|
|
this.velocity.Y = -8f;
|
|
this.velocity.X += 4f * (float) this.direction;
|
|
this.ai[1] = -40f;
|
|
++this.ai[2];
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.target < (int) byte.MaxValue)
|
|
{
|
|
float num11 = 3f;
|
|
if (Main.getGoodWorld)
|
|
num11 = 7f;
|
|
if (this.direction == 1 && (double) this.velocity.X < (double) num11 || this.direction == -1 && (double) this.velocity.X > -(double) num11)
|
|
{
|
|
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;
|
|
break;
|
|
}
|
|
this.velocity.X *= 0.93f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
this.rotation *= 0.9f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
if ((double) this.ai[2] == 1.0)
|
|
{
|
|
this.noTileCollide = false;
|
|
this.noGravity = false;
|
|
int num12 = 30;
|
|
if (flag2)
|
|
num12 = 10;
|
|
if (Main.getGoodWorld)
|
|
num12 = 0;
|
|
Player player = Main.player[this.target];
|
|
Vector2 center1 = this.Center;
|
|
if (!player.dead && player.active && (double) Math.Abs(this.Center.X - player.Center.X) / 16.0 <= (double) num3)
|
|
{
|
|
Vector2 center2 = player.Center;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
SoundEngine.PlaySound(SoundID.Item167, this.Center);
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(this.Bottom, Vector2.Zero, 922, Damage2, 0.0f, Main.myPlayer);
|
|
for (int index10 = 0; index10 < 20; ++index10)
|
|
{
|
|
int index11 = Dust.NewDust(this.Bottom - new Vector2((float) (this.width / 2), 30f), this.width, 30, 31, this.velocity.X, this.velocity.Y, 40, NPC.AI_121_QueenSlime_GetDustColor());
|
|
Main.dust[index11].noGravity = true;
|
|
Main.dust[index11].velocity.Y = (float) ((double) Main.rand.NextFloat() * -3.0 - 5.0);
|
|
Main.dust[index11].velocity.X *= 7f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] >= (double) num12)
|
|
{
|
|
for (int index12 = 0; index12 < 4; ++index12)
|
|
{
|
|
Vector2 Position = this.Bottom - new Vector2(Main.rand.NextFloatDirection() * 16f, (float) Main.rand.Next(8));
|
|
int index13 = Dust.NewDust(Position, 2, 2, 31, this.velocity.X, this.velocity.Y, 40, NPC.AI_121_QueenSlime_GetDustColor(), 1.4f);
|
|
Main.dust[index13].position = Position;
|
|
Main.dust[index13].noGravity = true;
|
|
Main.dust[index13].velocity.Y = this.velocity.Y * 0.9f;
|
|
Main.dust[index13].velocity.X = (float) ((Main.rand.Next(2) == 0 ? -10.0 : 10.0) + (double) Main.rand.NextFloatDirection() * 3.0);
|
|
}
|
|
}
|
|
this.velocity.X *= 0.8f;
|
|
float num13 = this.ai[1];
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) num12)
|
|
{
|
|
if ((double) num13 < (double) num12)
|
|
this.netUpdate = true;
|
|
if (flag2 && (double) this.ai[1] > (double) (num12 + 120))
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.velocity.Y *= 0.8f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
++this.velocity.Y;
|
|
float num14 = 14f;
|
|
if (Main.getGoodWorld)
|
|
{
|
|
++this.velocity.Y;
|
|
num14 = 15.99f;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.Y = 0.01f;
|
|
if ((double) this.velocity.Y >= (double) num14)
|
|
{
|
|
this.velocity.Y = num14;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.velocity.Y *= 0.8f;
|
|
break;
|
|
}
|
|
if (Main.netMode != 1 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 30.0)
|
|
{
|
|
if ((double) this.ai[1] >= 60.0)
|
|
{
|
|
this.ai[1] = 60f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 1f;
|
|
this.velocity.Y = -3f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
Player player = Main.player[this.target];
|
|
Vector2 center = this.Center;
|
|
if (!player.dead && player.active && (double) Math.Abs(this.Center.X - player.Center.X) / 16.0 <= (double) num3)
|
|
center = player.Center;
|
|
center.Y -= 384f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.velocity = center - this.Center;
|
|
this.velocity = this.velocity.SafeNormalize(Vector2.Zero);
|
|
this.velocity = this.velocity * 20f;
|
|
break;
|
|
}
|
|
this.velocity.Y *= 0.95f;
|
|
break;
|
|
}
|
|
break;
|
|
case 5:
|
|
this.rotation *= 0.9f;
|
|
this.noTileCollide = true;
|
|
this.noGravity = true;
|
|
if (flag2)
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[2] == 1.0)
|
|
{
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 10.0)
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num15 = 10;
|
|
if (Main.getGoodWorld)
|
|
num15 = 15;
|
|
int num16 = num15;
|
|
if (!flag2)
|
|
num16 = 6;
|
|
for (int index = 0; index < num16; ++index)
|
|
{
|
|
Vector2 spinningpoint = new Vector2(9f, 0.0f);
|
|
spinningpoint = spinningpoint.RotatedBy((double) -index * 6.28318548202515 / (double) num15, Vector2.Zero);
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, spinningpoint.X, spinningpoint.Y, 926, Damage1, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (Main.netMode != 1 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 50.0)
|
|
{
|
|
this.ai[1] = 50f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
float num17 = 100f;
|
|
for (int index14 = 0; index14 < 4; ++index14)
|
|
{
|
|
Vector2 Position = this.Center + Main.rand.NextVector2CircularEdge(num17, num17);
|
|
if (!flag2)
|
|
Position += new Vector2(0.0f, 20f);
|
|
Vector2 vector2 = (Position - this.Center).SafeNormalize(Vector2.Zero) * -8f;
|
|
int index15 = Dust.NewDust(Position, 2, 2, 31, vector2.X, vector2.Y, 40, NPC.AI_121_QueenSlime_GetDustColor(), 1.8f);
|
|
Main.dust[index15].position = Position;
|
|
Main.dust[index15].noGravity = true;
|
|
Main.dust[index15].alpha = 250;
|
|
Main.dust[index15].velocity = vector2;
|
|
Main.dust[index15].customData = (object) this;
|
|
}
|
|
if (flag2)
|
|
{
|
|
this.AI_121_QueenSlime_FlyMovement();
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.dontTakeDamage = this.hide = flag1;
|
|
if ((double) num2 != (double) this.scale)
|
|
{
|
|
this.position.X += (float) (this.width / 2);
|
|
this.position.Y += (float) this.height;
|
|
this.scale = num2;
|
|
this.width = (int) (114.0 * (double) this.scale);
|
|
this.height = (int) (100.0 * (double) this.scale);
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) this.height;
|
|
}
|
|
if (this.life <= 0)
|
|
return;
|
|
if (Main.rand.Next(360) == 0)
|
|
SoundEngine.PlaySound(65, this.position);
|
|
if (Main.netMode == 1)
|
|
return;
|
|
if ((double) this.localAI[0] >= (double) (this.lifeMax / 2) && this.life < this.lifeMax / 2)
|
|
{
|
|
this.localAI[0] = (float) this.life;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
int num18 = (int) ((double) this.lifeMax * 0.0199999995529652);
|
|
if (flag2)
|
|
num18 = (int) ((double) this.lifeMax * 0.0149999996647239);
|
|
if ((double) (this.life + num18) >= (double) this.localAI[0])
|
|
return;
|
|
this.localAI[0] = (float) this.life;
|
|
int num19 = Main.rand.Next(1, 3);
|
|
for (int index = 0; index < num19; ++index)
|
|
{
|
|
int X = (int) ((double) this.position.X + (double) Main.rand.Next(this.width - 32));
|
|
int Y = (int) ((double) this.position.Y + (double) Main.rand.Next(this.height - 32));
|
|
int Type = 658;
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Type = 658;
|
|
break;
|
|
case 1:
|
|
Type = 659;
|
|
break;
|
|
case 2:
|
|
Type = 660;
|
|
break;
|
|
}
|
|
int number = NPC.NewNPC(X, Y, Type);
|
|
Main.npc[number].SetDefaults(Type);
|
|
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[0] = (float) (-500 * Main.rand.Next(3));
|
|
Main.npc[number].ai[1] = 0.0f;
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
|
|
public bool AI_120_HallowBoss_IsInPhase2() => (double) this.ai[3] == 1.0 || (double) this.ai[3] == 3.0;
|
|
|
|
public bool AI_120_HallowBoss_IsGenuinelyEnraged() => (double) this.ai[3] == 2.0 || (double) this.ai[3] == 3.0;
|
|
|
|
private void AI_120_HallowBoss_DoMagicEffect(Vector2 spot, int effectType, float progress)
|
|
{
|
|
float num1 = 4f;
|
|
float num2 = 1f;
|
|
float num3 = 0.0f;
|
|
float num4 = 0.5f;
|
|
int num5 = 2;
|
|
int Type = 267;
|
|
switch (effectType)
|
|
{
|
|
case 1:
|
|
num2 = 0.5f;
|
|
num3 = 2f;
|
|
num4 = 0.0f;
|
|
break;
|
|
case 2:
|
|
case 4:
|
|
num1 = 50f;
|
|
num2 = 0.5f;
|
|
num3 = 0.0f;
|
|
num4 = 0.0f;
|
|
num5 = 4;
|
|
break;
|
|
case 3:
|
|
num1 = 30f;
|
|
num2 = 0.1f;
|
|
num3 = 2.5f;
|
|
num4 = 0.0f;
|
|
break;
|
|
case 5:
|
|
if ((double) progress == 0.0)
|
|
{
|
|
num5 = 0;
|
|
}
|
|
else
|
|
{
|
|
num5 = 5;
|
|
Type = Main.rand.Next(86, 92);
|
|
}
|
|
if ((double) progress >= 1.0)
|
|
{
|
|
num5 = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
for (int index = 0; index < num5; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustPerfect(spot, Type, new Vector2?(Main.rand.NextVector2CircularEdge(num1, num1) * (Main.rand.NextFloat() * (1f - num4) + num4)), newColor: Main.hslToRgb(Main.rand.NextFloat(), 1f, 0.5f), Scale: ((float) ((double) Main.rand.NextFloat() * 2.0 + 2.0) * num2));
|
|
dust.fadeIn = num3;
|
|
dust.noGravity = true;
|
|
switch (effectType)
|
|
{
|
|
case 2:
|
|
case 4:
|
|
dust.velocity *= 0.005f;
|
|
dust.scale = 3f * Utils.GetLerpValue(0.7f, 0.0f, progress, true) * Utils.GetLerpValue(0.0f, 0.3f, progress, true);
|
|
dust.velocity = ((float) (6.28318548202515 * ((double) index / 4.0) + 0.785398185253143)).ToRotationVector2() * 8f * Utils.GetLerpValue(1f, 0.0f, progress, true);
|
|
dust.velocity += this.velocity * 0.3f;
|
|
float num6 = 0.0f;
|
|
if (effectType == 4)
|
|
num6 = 0.5f;
|
|
dust.color = Main.hslToRgb((float) (((double) index / 5.0 + (double) num6 + (double) progress * 0.5) % 1.0), 1f, 0.5f);
|
|
dust.color.A /= (byte) 2;
|
|
dust.alpha = (int) sbyte.MaxValue;
|
|
break;
|
|
case 5:
|
|
if ((double) progress == 0.0)
|
|
{
|
|
dust.customData = (object) this;
|
|
dust.scale = 1.5f;
|
|
dust.fadeIn = 0.0f;
|
|
dust.velocity = new Vector2(0.0f, -1f) + Main.rand.NextVector2Circular(1f, 1f);
|
|
dust.color = new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 80) * 0.3f;
|
|
break;
|
|
}
|
|
dust.color = Main.hslToRgb((float) ((double) progress * 2.0 % 1.0), 1f, 0.5f);
|
|
dust.alpha = 0;
|
|
dust.scale = 1f;
|
|
dust.fadeIn = 1.3f;
|
|
dust.velocity *= 3f;
|
|
dust.velocity.X *= 0.1f;
|
|
dust.velocity += this.velocity * 1f;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool ShouldEmpressBeEnraged() => Main.dayTime;
|
|
|
|
private void AI_120_HallowBoss()
|
|
{
|
|
Vector2 vector2_1 = new Vector2(-150f, -250f);
|
|
Vector2 vector2_2 = new Vector2(150f, -250f);
|
|
Vector2 vector2_3 = new Vector2(0.0f, -350f);
|
|
Vector2 vector2_4 = new Vector2(0.0f, -350f);
|
|
Vector2 vector2_5 = new Vector2(-80f, -500f);
|
|
float moveSpeed = 0.5f;
|
|
float num1 = 12f;
|
|
float num2 = 40f;
|
|
float num3 = 6400f;
|
|
int Damage1 = 40;
|
|
int num4 = 50;
|
|
int num5 = 70;
|
|
int num6 = 45;
|
|
int num7 = 45;
|
|
int num8 = 50;
|
|
bool flag1 = this.AI_120_HallowBoss_IsInPhase2();
|
|
bool flag2 = Main.expertMode;
|
|
bool flag3 = flag1 & flag2;
|
|
bool flag4 = NPC.ShouldEmpressBeEnraged();
|
|
if (this.life == this.lifeMax & flag4 && !this.AI_120_HallowBoss_IsGenuinelyEnraged())
|
|
this.ai[3] += 2f;
|
|
bool flag5 = true;
|
|
int num9 = 30;
|
|
int num10 = 30;
|
|
int num11 = 30;
|
|
int num12 = 35;
|
|
int num13 = 65;
|
|
if (flag1)
|
|
{
|
|
num4 = 60;
|
|
num6 = 50;
|
|
num7 = 50;
|
|
num8 = 60;
|
|
num5 = 65;
|
|
num9 = 35;
|
|
num10 = 35;
|
|
num11 = 35;
|
|
num12 = 40;
|
|
num13 = 30;
|
|
}
|
|
int Damage2 = this.GetAttackDamage_ForProjectiles((float) num4, (float) num9);
|
|
int Damage3 = this.GetAttackDamage_ForProjectiles((float) num6, (float) num10);
|
|
int Damage4 = this.GetAttackDamage_ForProjectiles((float) num7, (float) num11);
|
|
int Damage5 = this.GetAttackDamage_ForProjectiles((float) num8, (float) num12);
|
|
int Damage6 = this.GetAttackDamage_ForProjectiles((float) num5, (float) num13);
|
|
if (flag4)
|
|
{
|
|
Damage2 = 9999;
|
|
Damage3 = 9999;
|
|
Damage4 = 9999;
|
|
Damage5 = 9999;
|
|
Damage6 = 9999;
|
|
flag2 = true;
|
|
}
|
|
float num14 = flag2 ? 0.3f : 1f;
|
|
bool flag6 = true;
|
|
int num15 = 0;
|
|
if (flag1)
|
|
num15 += 15;
|
|
if (flag2)
|
|
num15 += 5;
|
|
switch ((int) this.ai[0])
|
|
{
|
|
case 0:
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.velocity = new Vector2(0.0f, 5f);
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(this.Center + new Vector2(0.0f, -80f), Vector2.Zero, 874, 0, 0.0f, Main.myPlayer);
|
|
}
|
|
if ((double) this.ai[1] == 10.0)
|
|
SoundEngine.PlaySound(SoundID.Item161, this.Center);
|
|
this.velocity = this.velocity * 0.95f;
|
|
if ((double) this.ai[1] > 10.0 && (double) this.ai[1] < 150.0)
|
|
{
|
|
int num16 = 2;
|
|
for (int index = 0; index < num16; ++index)
|
|
{
|
|
float num17 = MathHelper.Lerp(1.3f, 0.7f, this.Opacity) * Utils.GetLerpValue(0.0f, 120f, this.ai[1], true);
|
|
int dustIndex = Dust.NewDust(this.position, this.width, this.height, 267, newColor: Main.hslToRgb(this.ai[1] / 180f, 1f, 0.5f));
|
|
Main.dust[dustIndex].position = this.Center + Main.rand.NextVector2Circular((float) this.width * 3f, (float) this.height * 3f) + new Vector2(0.0f, -150f);
|
|
Main.dust[dustIndex].velocity *= Main.rand.NextFloat() * 0.8f;
|
|
Main.dust[dustIndex].noGravity = true;
|
|
Main.dust[dustIndex].fadeIn = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 0.699999988079071 * (double) num17);
|
|
Main.dust[dustIndex].velocity += Vector2.UnitY * 3f;
|
|
Main.dust[dustIndex].scale = 0.35f;
|
|
if (dustIndex != 6000)
|
|
{
|
|
Dust dust = Dust.CloneDust(dustIndex);
|
|
dust.scale /= 2f;
|
|
dust.fadeIn *= 0.85f;
|
|
dust.color = new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue);
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
flag5 = false;
|
|
flag6 = false;
|
|
this.Opacity = MathHelper.Clamp(this.ai[1] / 180f, 0.0f, 1f);
|
|
if ((double) this.ai[1] >= 180.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
this.TargetClosest();
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
float num18 = flag1 ? 20f : 45f;
|
|
if (Main.getGoodWorld)
|
|
num18 /= 2f;
|
|
if ((double) this.ai[1] <= 10.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
this.TargetClosest();
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
if (targetData.Invalid)
|
|
{
|
|
this.ai[0] = 13f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[2];
|
|
this.velocity = this.velocity / 4f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
Vector2 vector2_6 = targetData.Center + new Vector2(0.0f, -300f);
|
|
if ((double) this.Distance(vector2_6) > 200.0)
|
|
vector2_6 -= this.DirectionTo(vector2_6) * 100f;
|
|
Vector2 v = vector2_6 - this.Center;
|
|
float lerpValue = Utils.GetLerpValue(100f, 600f, v.Length(), false);
|
|
float num19 = v.Length();
|
|
if ((double) num19 > 18.0)
|
|
num19 = 18f;
|
|
this.velocity = Vector2.Lerp(v.SafeNormalize(Vector2.Zero) * num19, v / 6f, lerpValue);
|
|
this.netUpdate = true;
|
|
}
|
|
this.velocity = this.velocity * 0.92f;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) num18)
|
|
{
|
|
int num20 = (int) this.ai[2];
|
|
int num21 = 2;
|
|
int num22 = 0;
|
|
if (!flag1)
|
|
{
|
|
int num23 = num22;
|
|
int num24 = num23 + 1;
|
|
int num25 = num23;
|
|
int num26 = num24;
|
|
int num27 = num26 + 1;
|
|
int num28 = num26;
|
|
int num29 = num27;
|
|
int num30 = num29 + 1;
|
|
int num31 = num29;
|
|
int num32 = num30;
|
|
int num33 = num32 + 1;
|
|
int num34 = num32;
|
|
int num35 = num33;
|
|
int num36 = num35 + 1;
|
|
int num37 = num35;
|
|
int num38 = num36;
|
|
int num39 = num38 + 1;
|
|
int num40 = num38;
|
|
int num41 = num39;
|
|
int num42 = num41 + 1;
|
|
int num43 = num41;
|
|
int num44 = num42;
|
|
int num45 = num44 + 1;
|
|
int num46 = num44;
|
|
int num47 = num45;
|
|
int num48 = num47 + 1;
|
|
int num49 = num47;
|
|
int num50 = num48;
|
|
num22 = num50 + 1;
|
|
int num51 = num50;
|
|
if (num20 % num22 == num25)
|
|
num21 = 2;
|
|
if (num20 % num22 == num28)
|
|
num21 = 8;
|
|
if (num20 % num22 == num31)
|
|
num21 = 6;
|
|
if (num20 % num22 == num34)
|
|
num21 = 8;
|
|
if (num20 % num22 == num37)
|
|
num21 = 5;
|
|
if (num20 % num22 == num40)
|
|
num21 = 2;
|
|
if (num20 % num22 == num43)
|
|
num21 = 8;
|
|
if (num20 % num22 == num46)
|
|
num21 = 4;
|
|
if (num20 % num22 == num49)
|
|
num21 = 8;
|
|
if (num20 % num22 == num51)
|
|
num21 = 5;
|
|
if ((double) this.life / (double) this.lifeMax <= 0.5)
|
|
num21 = 10;
|
|
}
|
|
if (flag1)
|
|
{
|
|
int num52 = num22;
|
|
int num53 = num52 + 1;
|
|
int num54 = num52;
|
|
int num55 = num53;
|
|
int num56 = num55 + 1;
|
|
int num57 = num55;
|
|
int num58 = num56;
|
|
int num59 = num58 + 1;
|
|
int num60 = num58;
|
|
int num61 = -1;
|
|
if (flag2)
|
|
num61 = num59++;
|
|
int num62 = num59;
|
|
int num63 = num62 + 1;
|
|
int num64 = num62;
|
|
int num65 = num63;
|
|
int num66 = num65 + 1;
|
|
int num67 = num65;
|
|
int num68 = num66;
|
|
int num69 = num68 + 1;
|
|
int num70 = num68;
|
|
int num71 = num69;
|
|
int num72 = num71 + 1;
|
|
int num73 = num71;
|
|
int num74 = num72;
|
|
int num75 = num74 + 1;
|
|
int num76 = num74;
|
|
int num77 = num75;
|
|
int num78 = num77 + 1;
|
|
int num79 = num77;
|
|
if (num20 % num78 == num54)
|
|
num21 = 7;
|
|
if (num20 % num78 == num57)
|
|
num21 = 2;
|
|
if (num20 % num78 == num60)
|
|
num21 = 8;
|
|
if (num20 % num78 == num64)
|
|
num21 = 5;
|
|
if (num20 % num78 == num67)
|
|
num21 = 2;
|
|
if (num20 % num78 == num70)
|
|
num21 = 6;
|
|
if (num20 % num78 == num70)
|
|
num21 = 6;
|
|
if (num20 % num78 == num73)
|
|
num21 = 4;
|
|
if (num20 % num78 == num76)
|
|
num21 = 8;
|
|
if (num20 % num78 == num61)
|
|
num21 = 11;
|
|
if (num20 % num78 == num79)
|
|
num21 = 12;
|
|
}
|
|
this.TargetClosest();
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
bool flag7 = false;
|
|
if (this.AI_120_HallowBoss_IsGenuinelyEnraged())
|
|
{
|
|
if (!Main.dayTime)
|
|
flag7 = true;
|
|
if (Main.dayTime && Main.time >= 53400.0)
|
|
flag7 = true;
|
|
}
|
|
if (((targetData.Invalid ? 1 : ((double) this.Distance(targetData.Center) > (double) num3 ? 1 : 0)) | (flag7 ? 1 : 0)) != 0)
|
|
num21 = 13;
|
|
if (num21 == 8 && (double) targetData.Center.X > (double) this.Center.X)
|
|
num21 = 9;
|
|
if (flag2 && (num21 == 5 ? 1 : (num21 == 12 ? 1 : 0)) == 0)
|
|
this.velocity = this.DirectionFrom(targetData.Center).SafeNormalize(Vector2.Zero).RotatedBy(1.57079637050629 * (double) ((double) targetData.Center.X > (double) this.Center.X).ToDirectionInt()) * 20f;
|
|
this.ai[0] = (float) num21;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[2];
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
if ((double) this.ai[1] == 0.0)
|
|
SoundEngine.PlaySound(SoundID.Item164, this.Center);
|
|
float num80 = 90f - (float) num15;
|
|
Vector2 vector2_7 = new Vector2(-55f, -30f);
|
|
NPCAimedTarget targetData1 = this.GetTargetData();
|
|
Vector2 vector2_8 = targetData1.Invalid ? this.Center : targetData1.Center;
|
|
if ((double) this.Distance(vector2_8 + vector2_1) > (double) num2)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_8 + vector2_1).SafeNormalize(Vector2.Zero) * num1, moveSpeed);
|
|
if ((double) this.ai[1] < 60.0)
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center + vector2_7, 1, Utils.GetLerpValue(0.0f, 60f, this.ai[1], true));
|
|
int num81 = 3;
|
|
if (flag2)
|
|
num81 = 2;
|
|
if ((int) this.ai[1] % num81 == 0 && (double) this.ai[1] < 60.0)
|
|
{
|
|
float ai1 = this.ai[1] / 60f;
|
|
Vector2 velocity = new Vector2(0.0f, -6f).RotatedBy(1.57079637050629 * (double) Main.rand.NextFloatDirection());
|
|
if (flag3)
|
|
velocity = new Vector2(0.0f, -10f).RotatedBy(6.28318548202515 * (double) Main.rand.NextFloat());
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(this.Center + vector2_7, velocity, 873, Damage3, 0.0f, Main.myPlayer, (float) this.target, ai1);
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num82 = (int) ((double) this.ai[1] / (double) num81);
|
|
for (int playerIndex = 0; playerIndex < (int) byte.MaxValue; ++playerIndex)
|
|
{
|
|
if (this.AI_120_HallowBoss_CanShootExtraAt(playerIndex, num82 % 3, 3, 2400f))
|
|
Projectile.NewProjectile(this.Center + vector2_7, velocity, 873, Damage3, 0.0f, Main.myPlayer, (float) playerIndex, ai1);
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 60.0 + (double) num80)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
++this.ai[1];
|
|
NPCAimedTarget targetData2 = this.GetTargetData();
|
|
Vector2 vector2_9 = targetData2.Invalid ? this.Center : targetData2.Center;
|
|
if ((double) this.Distance(vector2_9 + vector2_2) > (double) num2)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_9 + vector2_2).SafeNormalize(Vector2.Zero) * num1, moveSpeed);
|
|
if ((int) this.ai[1] % 180 == 0)
|
|
{
|
|
Vector2 vector2_10 = new Vector2(0.0f, -100f);
|
|
Projectile.NewProjectile(targetData2.Center + vector2_10, Vector2.Zero, 874, Damage1, 0.0f, Main.myPlayer);
|
|
}
|
|
if ((double) this.ai[1] >= 120.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
float num83 = (float) (20 - num15);
|
|
Vector2 vector2_11 = new Vector2(0.0f, -100f);
|
|
if ((double) this.ai[1] == 0.0)
|
|
SoundEngine.PlaySound(SoundID.Item162, this.Center);
|
|
if ((double) this.ai[1] >= 6.0 && (double) this.ai[1] < 54.0)
|
|
{
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center + new Vector2(-55f, -20f), 2, Utils.GetLerpValue(0.0f, 100f, this.ai[1], true));
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center + new Vector2(55f, -20f), 4, Utils.GetLerpValue(0.0f, 100f, this.ai[1], true));
|
|
}
|
|
NPCAimedTarget targetData3 = this.GetTargetData();
|
|
Vector2 vector2_12 = targetData3.Invalid ? this.Center : targetData3.Center;
|
|
if ((double) this.Distance(vector2_12 + vector2_3) > (double) num2)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_12 + vector2_3).SafeNormalize(Vector2.Zero) * num1, moveSpeed);
|
|
int num84 = 4;
|
|
if (flag2)
|
|
num84 = 5;
|
|
if ((int) this.ai[1] % 4 == 0 && (double) this.ai[1] < 100.0)
|
|
{
|
|
int num85 = 1;
|
|
for (int index = 0; index < num85; ++index)
|
|
{
|
|
int num86 = (int) this.ai[1] / 4;
|
|
Vector2 vector2_13 = Vector2.UnitX.RotatedBy(3.14159274101257 / (double) (num84 * 2) + (double) num86 * (3.14159274101257 / (double) num84) + 0.0);
|
|
if (!flag2)
|
|
vector2_13.X += (double) vector2_13.X > 0.0 ? 0.5f : -0.5f;
|
|
vector2_13.Normalize();
|
|
float num87 = 300f;
|
|
if (flag2)
|
|
num87 = 450f;
|
|
Vector2 center1 = targetData3.Center;
|
|
if ((double) this.Distance(center1) <= 2400.0)
|
|
{
|
|
if ((double) Vector2.Dot(targetData3.Velocity.SafeNormalize(Vector2.UnitY), vector2_13) > 0.0)
|
|
vector2_13 *= -1f;
|
|
int num88 = 90;
|
|
Vector2 vector2_14 = center1 + targetData3.Velocity * (float) num88;
|
|
Vector2 vector2_15 = center1 + vector2_13 * num87 - targetData3.Velocity * 30f;
|
|
if ((double) vector2_15.Distance(center1) < (double) num87)
|
|
{
|
|
Vector2 vector2_16 = center1 - vector2_15;
|
|
if (vector2_16 == Vector2.Zero)
|
|
vector2_16 = vector2_13;
|
|
vector2_15 = center1 - Vector2.Normalize(vector2_16) * num87;
|
|
}
|
|
Vector2 vector2_17 = vector2_15;
|
|
Vector2 v1 = vector2_14 - vector2_17;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(vector2_15, Vector2.Zero, 919, Damage2, 0.0f, Main.myPlayer, v1.ToRotation(), this.ai[1] / 100f);
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num89 = (int) ((double) this.ai[1] / 4.0);
|
|
for (int playerIndex = 0; playerIndex < (int) byte.MaxValue; ++playerIndex)
|
|
{
|
|
if (this.AI_120_HallowBoss_CanShootExtraAt(playerIndex, num89 % 3, 3, 2400f))
|
|
{
|
|
Player player = Main.player[playerIndex];
|
|
Vector2 center2 = player.Center;
|
|
if ((double) Vector2.Dot(player.velocity.SafeNormalize(Vector2.UnitY), vector2_13) > 0.0)
|
|
vector2_13 *= -1f;
|
|
Vector2 vector2_18 = center2 + player.velocity * (float) num88;
|
|
Vector2 vector2_19 = center2 + vector2_13 * num87 - player.velocity * 30f;
|
|
if ((double) vector2_19.Distance(center2) < (double) num87)
|
|
{
|
|
Vector2 vector2_20 = center2 - vector2_19;
|
|
if (vector2_20 == Vector2.Zero)
|
|
vector2_20 = vector2_13;
|
|
vector2_19 = center2 - Vector2.Normalize(vector2_20) * num87;
|
|
}
|
|
Vector2 vector2_21 = vector2_19;
|
|
Vector2 v2 = vector2_18 - vector2_21;
|
|
Projectile.NewProjectile(vector2_19, Vector2.Zero, 919, Damage2, 0.0f, Main.myPlayer, v2.ToRotation(), this.ai[1] / 100f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 100.0 + (double) num83)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 5:
|
|
if ((double) this.ai[1] == 0.0)
|
|
SoundEngine.PlaySound(SoundID.Item163, this.Center);
|
|
float num90 = 30f - (float) num15;
|
|
Vector2 vector2_22 = new Vector2(55f, -30f);
|
|
Vector2 vector2_23 = this.Center + vector2_22;
|
|
if ((double) this.ai[1] < 42.0)
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center + vector2_22, 3, Utils.GetLerpValue(0.0f, 42f, this.ai[1], true));
|
|
NPCAimedTarget targetData4 = this.GetTargetData();
|
|
Vector2 vector2_24 = targetData4.Invalid ? this.Center : targetData4.Center;
|
|
if ((double) this.Distance(vector2_24 + vector2_4) > (double) num2)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_24 + vector2_4).SafeNormalize(Vector2.Zero) * num1, moveSpeed);
|
|
if ((int) this.ai[1] % 42 == 0 && (double) this.ai[1] < 42.0)
|
|
{
|
|
float num91 = 6.283185f * Main.rand.NextFloat();
|
|
for (float num92 = 0.0f; (double) num92 < 1.0; num92 += 0.07692308f)
|
|
{
|
|
float ai1 = num92;
|
|
Vector2 spinningpoint = Vector2.UnitY.RotatedBy(1.57079637050629 + 6.28318548202515 * (double) ai1 + (double) num91);
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(vector2_23 + spinningpoint.RotatedBy(-1.57079637050629) * 30f, spinningpoint * 8f, 872, Damage4, 0.0f, Main.myPlayer, ai1: ai1);
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 42.0 + (double) num90)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
float num93 = (float) (120 - num15);
|
|
Vector2 position = this.Center + new Vector2(0.0f, -100f);
|
|
NPCAimedTarget targetData5 = this.GetTargetData();
|
|
Vector2 vector2_25 = targetData5.Invalid ? this.Center : targetData5.Center;
|
|
if ((double) this.Distance(vector2_25 + vector2_5) > (double) num2)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_25 + vector2_5).SafeNormalize(Vector2.Zero) * num1 * 0.3f, moveSpeed * 0.7f);
|
|
if ((int) this.ai[1] % 60 == 0 && (double) this.ai[1] < 180.0)
|
|
{
|
|
int num94 = (int) this.ai[1] / 60;
|
|
int num95 = (double) targetData5.Center.X > (double) this.Center.X ? 1 : 0;
|
|
float num96 = 6f;
|
|
if (flag2)
|
|
num96 = 8f;
|
|
float num97 = 1f / num96;
|
|
for (float num98 = 0.0f; (double) num98 < 1.0; num98 += num97)
|
|
{
|
|
float ai0 = (float) (6.28318548202515 * (((double) num98 + (double) num97 * 0.5 + (double) num94 * (double) num97 * 0.5) % 1.0 + (double) num95));
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(position, Vector2.Zero, 923, Damage5, 0.0f, Main.myPlayer, ai0, (float) this.whoAmI);
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 180.0 + (double) num93)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
float num99 = 20f;
|
|
float num100 = 60f;
|
|
float num101 = num100 * 4f;
|
|
if (flag2)
|
|
{
|
|
num99 = 40f;
|
|
num100 = 40f;
|
|
num101 = num100 * 6f;
|
|
}
|
|
float num102 = num99 - (float) num15;
|
|
NPCAimedTarget targetData6 = this.GetTargetData();
|
|
Vector2 vector2_26 = targetData6.Invalid ? this.Center : targetData6.Center;
|
|
if ((double) this.Distance(vector2_26 + vector2_4) > (double) num2)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_26 + vector2_4).SafeNormalize(Vector2.Zero) * num1 * 0.4f, moveSpeed);
|
|
if ((double) (int) this.ai[1] % (double) num100 == 0.0 && (double) this.ai[1] < (double) num101)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item162, this.Center);
|
|
double num103 = (double) Main.rand.NextFloat();
|
|
int num104 = (int) this.ai[1] / (int) num100;
|
|
float num105 = 13f;
|
|
float num106 = 150f;
|
|
float y = num105 * num106;
|
|
Vector2 center = targetData6.Center;
|
|
if ((double) this.Distance(center) <= 3200.0)
|
|
{
|
|
Vector2 vector2_27 = Vector2.Zero;
|
|
Vector2 vector2_28 = Vector2.UnitY;
|
|
float num107 = 0.4f;
|
|
float num108 = 1.4f;
|
|
float num109 = 1f;
|
|
if (flag2)
|
|
{
|
|
num105 += 5f;
|
|
num106 += 50f;
|
|
num109 *= 1f;
|
|
y *= 0.5f;
|
|
}
|
|
switch (num104)
|
|
{
|
|
case 0:
|
|
center += new Vector2((float) (-(double) y / 2.0), 0.0f) * num109;
|
|
vector2_27 = new Vector2(0.0f, y);
|
|
vector2_28 = Vector2.UnitX;
|
|
break;
|
|
case 1:
|
|
center += new Vector2(y / 2f, num106 / 2f) * num109;
|
|
vector2_27 = new Vector2(0.0f, y);
|
|
vector2_28 = -Vector2.UnitX;
|
|
break;
|
|
case 2:
|
|
center += new Vector2(-y, -y) * num107 * num109;
|
|
vector2_27 = new Vector2(y * num108, 0.0f);
|
|
vector2_28 = new Vector2(1f, 1f);
|
|
break;
|
|
case 3:
|
|
center += new Vector2((float) ((double) y * (double) num107 + (double) num106 / 2.0), -y * num107) * num109;
|
|
vector2_27 = new Vector2(-y * num108, 0.0f);
|
|
vector2_28 = new Vector2(-1f, 1f);
|
|
break;
|
|
case 4:
|
|
center += new Vector2(-y, y) * num107 * num109;
|
|
vector2_27 = new Vector2(y * num108, 0.0f);
|
|
vector2_28 = center.DirectionTo(targetData6.Center);
|
|
break;
|
|
case 5:
|
|
center += new Vector2((float) ((double) y * (double) num107 + (double) num106 / 2.0), y * num107) * num109;
|
|
vector2_27 = new Vector2(-y * num108, 0.0f);
|
|
vector2_28 = center.DirectionTo(targetData6.Center);
|
|
break;
|
|
}
|
|
for (float num110 = 0.0f; (double) num110 <= 1.0; num110 += 1f / num105)
|
|
{
|
|
Vector2 vector2_29 = center + vector2_27 * (num110 - 0.5f);
|
|
Vector2 v = vector2_28;
|
|
if (flag2)
|
|
{
|
|
Vector2 vector2_30 = targetData6.Velocity * 20f * num110;
|
|
Vector2 vector2_31 = vector2_29.DirectionTo(targetData6.Center + vector2_30);
|
|
v = Vector2.Lerp(vector2_28, vector2_31, 0.75f).SafeNormalize(Vector2.UnitY);
|
|
}
|
|
float ai1 = num110;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(vector2_29, Vector2.Zero, 919, Damage6, 0.0f, Main.myPlayer, v.ToRotation(), ai1);
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) num101 + (double) num102)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
float num111 = (float) (20 - num15);
|
|
Vector2 vector2_32 = this.Center + new Vector2(0.0f, -100f);
|
|
flag6 = (double) this.ai[1] < 6.0 || (double) this.ai[1] > 40.0;
|
|
int num112 = (double) this.ai[0] == 8.0 ? -1 : 1;
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center, 5, Utils.GetLerpValue(40f, 90f, this.ai[1], true));
|
|
if ((double) this.ai[1] <= 40.0)
|
|
{
|
|
if ((double) this.ai[1] == 20.0)
|
|
SoundEngine.PlaySound(SoundID.Item160, this.Center);
|
|
NPCAimedTarget targetData7 = this.GetTargetData();
|
|
this.SimpleFlyMovement(this.DirectionTo((targetData7.Invalid ? this.Center : targetData7.Center) + new Vector2((float) (num112 * -550), 0.0f)).SafeNormalize(Vector2.Zero) * num1, moveSpeed * 2f);
|
|
if ((double) this.ai[1] == 40.0)
|
|
this.velocity = this.velocity * 0.3f;
|
|
}
|
|
else if ((double) this.ai[1] <= 90.0)
|
|
{
|
|
this.velocity = Vector2.Lerp(this.velocity, new Vector2((float) (num112 * 50), 0.0f), 0.05f);
|
|
if ((double) this.ai[1] == 90.0)
|
|
this.velocity = this.velocity * 0.7f;
|
|
num14 *= 1.5f;
|
|
}
|
|
else
|
|
this.velocity = this.velocity * 0.92f;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 90.0 + (double) num111)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 10:
|
|
float num113 = (float) (20 - num15);
|
|
if ((double) this.ai[1] == 0.0)
|
|
SoundEngine.PlaySound(SoundID.Item161, this.Center);
|
|
flag6 = (double) this.ai[1] < 30.0 || (double) this.ai[1] > 170.0;
|
|
this.velocity = this.velocity * 0.95f;
|
|
if ((double) this.ai[1] == 90.0)
|
|
{
|
|
if ((double) this.ai[3] == 0.0)
|
|
this.ai[3] = 1f;
|
|
if ((double) this.ai[3] == 2.0)
|
|
this.ai[3] = 3f;
|
|
this.Center = this.GetTargetData().Center + new Vector2(0.0f, -250f);
|
|
this.netUpdate = true;
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 180.0 + (double) num113)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 11:
|
|
if ((double) this.ai[1] == 0.0)
|
|
SoundEngine.PlaySound(SoundID.Item162, this.Center);
|
|
float num114 = (float) (20 - num15);
|
|
Vector2 vector2_33 = new Vector2(0.0f, -100f);
|
|
if ((double) this.ai[1] >= 6.0 && (double) this.ai[1] < 54.0)
|
|
{
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center + new Vector2(-55f, -20f), 2, Utils.GetLerpValue(0.0f, 100f, this.ai[1], true));
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center + new Vector2(55f, -20f), 4, Utils.GetLerpValue(0.0f, 100f, this.ai[1], true));
|
|
}
|
|
NPCAimedTarget targetData8 = this.GetTargetData();
|
|
Vector2 vector2_34 = targetData8.Invalid ? this.Center : targetData8.Center;
|
|
if ((double) this.Distance(vector2_34 + vector2_3) > (double) num2)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_34 + vector2_3).SafeNormalize(Vector2.Zero) * num1, moveSpeed);
|
|
if ((int) this.ai[1] % 3 == 0 && (double) this.ai[1] < 100.0)
|
|
{
|
|
int num115 = 1;
|
|
for (int index = 0; index < num115; ++index)
|
|
{
|
|
Vector2 v3 = -targetData8.Velocity;
|
|
v3.SafeNormalize(-Vector2.UnitY);
|
|
float num116 = 100f;
|
|
Vector2 center3 = targetData8.Center;
|
|
if ((double) this.Distance(center3) <= 2400.0)
|
|
{
|
|
int num117 = 90;
|
|
Vector2 vector2_35 = center3 + targetData8.Velocity * (float) num117;
|
|
Vector2 vector2_36 = center3 + v3 * num116;
|
|
if ((double) vector2_36.Distance(center3) < (double) num116)
|
|
{
|
|
Vector2 vector2_37 = center3 - vector2_36;
|
|
if (vector2_37 == Vector2.Zero)
|
|
vector2_37 = v3;
|
|
vector2_36 = center3 - Vector2.Normalize(vector2_37) * num116;
|
|
}
|
|
Vector2 vector2_38 = vector2_36;
|
|
Vector2 v4 = vector2_35 - vector2_38;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(vector2_36, Vector2.Zero, 919, Damage2, 0.0f, Main.myPlayer, v4.ToRotation(), this.ai[1] / 100f);
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num118 = (int) ((double) this.ai[1] / 3.0);
|
|
for (int playerIndex = 0; playerIndex < (int) byte.MaxValue; ++playerIndex)
|
|
{
|
|
if (this.AI_120_HallowBoss_CanShootExtraAt(playerIndex, num118 % 3, 3, 2400f))
|
|
{
|
|
Player player = Main.player[playerIndex];
|
|
Vector2 v5 = -player.velocity;
|
|
v5.SafeNormalize(-Vector2.UnitY);
|
|
float num119 = 100f;
|
|
Vector2 center4 = player.Center;
|
|
int num120 = 90;
|
|
Vector2 vector2_39 = center4 + player.velocity * (float) num120;
|
|
Vector2 vector2_40 = center4 + v5 * num119;
|
|
if ((double) vector2_40.Distance(center4) < (double) num119)
|
|
{
|
|
Vector2 vector2_41 = center4 - vector2_40;
|
|
if (vector2_41 == Vector2.Zero)
|
|
vector2_41 = v5;
|
|
vector2_40 = center4 - Vector2.Normalize(vector2_41) * num119;
|
|
}
|
|
Vector2 vector2_42 = vector2_40;
|
|
Vector2 v6 = vector2_39 - vector2_42;
|
|
Projectile.NewProjectile(vector2_40, Vector2.Zero, 919, Damage2, 0.0f, Main.myPlayer, v6.ToRotation(), this.ai[1] / 100f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 100.0 + (double) num114)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 12:
|
|
float num121 = 90f - (float) num15;
|
|
Vector2 vector2_43 = new Vector2(-55f, -30f);
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item165, this.Center);
|
|
this.velocity = new Vector2(0.0f, -12f);
|
|
}
|
|
this.velocity = this.velocity * 0.95f;
|
|
bool flag8 = (double) this.ai[1] < 60.0 && (double) this.ai[1] >= 10.0;
|
|
if (flag8)
|
|
this.AI_120_HallowBoss_DoMagicEffect(this.Center + vector2_43, 1, Utils.GetLerpValue(0.0f, 60f, this.ai[1], true));
|
|
int num122 = 6;
|
|
if (flag2)
|
|
num122 = 4;
|
|
float ai1_1 = (float) (((double) this.ai[1] - 10.0) / 50.0);
|
|
if ((int) this.ai[1] % num122 == 0 & flag8)
|
|
{
|
|
double num123 = (double) this.ai[1] / 60.0;
|
|
Vector2 velocity = new Vector2(0.0f, -20f).RotatedBy(6.28318548202515 * (double) ai1_1);
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(this.Center + vector2_43, velocity, 873, Damage3, 0.0f, Main.myPlayer, (float) this.target, ai1_1);
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num124 = (int) ((double) this.ai[1] % (double) num122);
|
|
for (int playerIndex = 0; playerIndex < (int) byte.MaxValue; ++playerIndex)
|
|
{
|
|
if (this.AI_120_HallowBoss_CanShootExtraAt(playerIndex, num124 % 3, 3, 2400f))
|
|
Projectile.NewProjectile(this.Center + vector2_43, velocity, 873, Damage3, 0.0f, Main.myPlayer, (float) playerIndex, ai1_1);
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 60.0 + (double) num121)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 13:
|
|
Vector2 vector2_44 = new Vector2(-55f, -30f);
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item165, this.Center);
|
|
this.velocity = new Vector2(0.0f, -7f);
|
|
}
|
|
this.velocity = this.velocity * 0.95f;
|
|
this.TargetClosest();
|
|
NPCAimedTarget targetData9 = this.GetTargetData();
|
|
flag5 = false;
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
if (!flag9)
|
|
{
|
|
if (this.AI_120_HallowBoss_IsGenuinelyEnraged())
|
|
{
|
|
if (!Main.dayTime)
|
|
flag10 = true;
|
|
if (Main.dayTime && Main.time >= 53400.0)
|
|
flag10 = true;
|
|
}
|
|
flag9 |= flag10;
|
|
}
|
|
if (!flag9)
|
|
{
|
|
bool flag11 = targetData9.Invalid || (double) this.Distance(targetData9.Center) > (double) num3;
|
|
flag9 |= flag11;
|
|
}
|
|
this.alpha = Utils.Clamp<int>(this.alpha + flag9.ToDirectionInt() * 5, 0, (int) byte.MaxValue);
|
|
bool flag12 = this.alpha == 0 || this.alpha == (int) byte.MaxValue;
|
|
int num125 = 5;
|
|
for (int index = 0; index < num125; ++index)
|
|
{
|
|
float num126 = MathHelper.Lerp(1.3f, 0.7f, this.Opacity);
|
|
int dustIndex = Dust.NewDust(this.position - this.Size * 0.5f, this.width * 2, this.height * 2, 267, newColor: Main.hslToRgb(Main.rand.NextFloat(), 1f, 0.5f));
|
|
Main.dust[dustIndex].position = this.Center + Main.rand.NextVector2Circular((float) this.width, (float) this.height);
|
|
Main.dust[dustIndex].velocity *= Main.rand.NextFloat() * 0.8f;
|
|
Main.dust[dustIndex].noGravity = true;
|
|
Main.dust[dustIndex].scale = (float) (0.899999976158142 + (double) Main.rand.NextFloat() * 1.20000004768372);
|
|
Main.dust[dustIndex].fadeIn = (float) (0.400000005960464 + (double) Main.rand.NextFloat() * 1.20000004768372 * (double) num126);
|
|
Main.dust[dustIndex].velocity += Vector2.UnitY * -2f;
|
|
Main.dust[dustIndex].scale = 0.35f;
|
|
if (dustIndex != 6000)
|
|
{
|
|
Dust dust = Dust.CloneDust(dustIndex);
|
|
dust.scale /= 2f;
|
|
dust.fadeIn *= 0.85f;
|
|
dust.color = new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue);
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 20.0 & flag12)
|
|
{
|
|
if (this.alpha == (int) byte.MaxValue)
|
|
{
|
|
this.active = false;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
return;
|
|
}
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.dontTakeDamage = !flag6;
|
|
this.damage = this.GetAttackDamage_ScaledByStrength((float) this.defDamage * num14);
|
|
if (flag4)
|
|
this.damage = 9999;
|
|
this.defense = !flag1 ? this.defDefense : (int) ((double) this.defDefense * 1.20000004768372);
|
|
if ((double) ++this.localAI[0] >= 44.0)
|
|
this.localAI[0] = 0.0f;
|
|
if (flag5)
|
|
this.alpha = Utils.Clamp<int>(this.alpha - 5, 0, (int) byte.MaxValue);
|
|
Lighting.AddLight(this.Center, Vector3.One * this.Opacity);
|
|
}
|
|
|
|
private static void AI_120_HallowBoss_DeprecatedShot(
|
|
ref NPCAimedTarget targetData,
|
|
float stormsCount,
|
|
int stormIndexInSeries,
|
|
ref Vector2 offsetDirection,
|
|
float distance)
|
|
{
|
|
int num = 1;
|
|
Vector2 position1 = offsetDirection * distance * (float) num * new Vector2(3f, 1f) - targetData.Velocity * 90f + targetData.Center;
|
|
Vector2 vector2_1 = position1 - targetData.Center;
|
|
if ((double) Vector2.Dot(targetData.Velocity.SafeNormalize(Vector2.Zero), vector2_1.SafeNormalize(Vector2.Zero)) > 0.970000028610229)
|
|
{
|
|
Vector2 vector2_2 = vector2_1.RotatedBy(0.785398185253143 * (double) (Main.rand.Next(2) * 2 - 1));
|
|
position1 = targetData.Center + vector2_2;
|
|
}
|
|
Vector2 position2 = position1;
|
|
Vector2 velocity = (targetData.Center - position2) / 90f;
|
|
Projectile.NewProjectile(position2, velocity, 871, 1, 0.0f, Main.myPlayer);
|
|
if (stormIndexInSeries == 0)
|
|
position1 = position2;
|
|
Projectile.NewProjectile(position1, Vector2.Zero, 871, 1, 0.0f, Main.myPlayer, ai1: ((float) stormIndexInSeries * (1f / stormsCount)));
|
|
}
|
|
|
|
private bool AI_120_HallowBoss_CanShootExtraAt(
|
|
int playerIndex,
|
|
int rotationIndexToAttack,
|
|
int rotationSize,
|
|
float attackScanDistance)
|
|
{
|
|
if (playerIndex == this.target || playerIndex % rotationSize != rotationIndexToAttack)
|
|
return false;
|
|
Player player = Main.player[playerIndex];
|
|
return player.active && !player.dead && this.playerInteraction[playerIndex] && (double) this.Distance(player.Center) <= (double) attackScanDistance;
|
|
}
|
|
|
|
private void AI_119_Dandelion()
|
|
{
|
|
this.TargetClosest();
|
|
Player player = Main.player[this.target];
|
|
float windSpeedCurrent = Main.windSpeedCurrent;
|
|
float num1 = player.Center.X - this.Center.X;
|
|
float num2 = Math.Abs(num1);
|
|
float num3 = Math.Abs(player.Center.Y - this.Center.Y);
|
|
if (!Main.IsItAHappyWindyDay && this.timeLeft > 10)
|
|
this.timeLeft = 10;
|
|
bool flag = player.active && !player.dead && (double) num3 < 100.0 && (double) num2 < 600.0 && ((double) num1 > 0.0 && (double) windSpeedCurrent > 0.0 || (double) num1 < 0.0 && (double) windSpeedCurrent < 0.0);
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.localAI[0] = 0.0f;
|
|
if ((double) num2 < 500.0)
|
|
this.localAI[0] = 1f;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
if (!flag)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.localAI[0] != 1.0)
|
|
return;
|
|
++this.localAI[1];
|
|
if ((double) this.localAI[1] > 80.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.localAI[1] != 40.0)
|
|
return;
|
|
for (int index = 0; index < 1 + Main.rand.Next(3); ++index)
|
|
{
|
|
int num4 = -1;
|
|
if ((double) num1 > 0.0)
|
|
num4 = 1;
|
|
Vector2 velocity = new Vector2(2f * (float) num4, -2f);
|
|
Vector2 vector2 = new Vector2((float) (num4 * Main.rand.Next(-2, 10)), (float) (10 + Main.rand.Next(-6, 6)));
|
|
velocity += vector2 * 0.25f;
|
|
Vector2 position = this.Center + vector2;
|
|
position.X += (float) (num4 * 6);
|
|
if ((double) velocity.Y > 0.0)
|
|
velocity.Y *= -1f;
|
|
Projectile.NewProjectile(position, velocity, 836, this.damage / 2, 1f, ai0: ((float) this.target));
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] != 0.0)
|
|
return;
|
|
this.localAI[0] = 0.0f;
|
|
this.localAI[1] = 0.0f;
|
|
if (!(Main.netMode != 1 & flag))
|
|
return;
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
|
|
private void AI_118_Seahorses()
|
|
{
|
|
this.noGravity = this.wet;
|
|
float waterLineHeight;
|
|
Collision.GetWaterLineIterate(this.Center.ToTileCoordinates(), out waterLineHeight);
|
|
bool flag1 = (double) waterLineHeight > 0.0 && (double) this.Top.Y - (double) waterLineHeight < 20.0;
|
|
if (!this.wet)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.95f;
|
|
this.rotation += (float) (((double) this.velocity.X + (double) this.velocity.Y) / 2.0 * 0.0500000007450581);
|
|
}
|
|
else
|
|
{
|
|
--this.ai[1];
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.velocity = this.velocity + this.ai[0].ToRotationVector2() * 0.06f;
|
|
float num = this.velocity.Length();
|
|
if ((double) num > 3.0 || (double) num < -3.0)
|
|
{
|
|
this.velocity.X = Math.Min(3f, Math.Max(-3f, this.velocity.X));
|
|
this.ai[1] = (float) Main.rand.Next(450, 600);
|
|
this.ai[0] = Main.rand.NextFloat() * 6.283185f;
|
|
if (flag1 && (double) this.ai[0] > 3.14159274101257)
|
|
this.ai[0] -= 3.141593f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
this.velocity = this.velocity * 0.95f;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
}
|
|
bool flag2 = this.collideY && this.wet && (!flag1 || (double) this.velocity.Y < 0.0);
|
|
if (!(this.collideX | flag2))
|
|
return;
|
|
Vector2 rotationVector2 = this.ai[0].ToRotationVector2();
|
|
if (this.collideX)
|
|
rotationVector2.X *= -1f;
|
|
if (flag2)
|
|
rotationVector2.Y *= -1f;
|
|
this.ai[0] = rotationVector2.ToRotation();
|
|
this.velocity = this.ai[0].ToRotationVector2() * this.velocity.Length();
|
|
this.netUpdate = true;
|
|
}
|
|
|
|
private void AI_117_BloodNautilus()
|
|
{
|
|
float moveSpeed = 0.15f;
|
|
float num1 = 7.5f;
|
|
float num2 = 60f;
|
|
float num3 = 90f;
|
|
float num4 = 180f;
|
|
float num5 = 90f;
|
|
float num6 = 90f;
|
|
int num7 = 3;
|
|
float num8 = 180f;
|
|
bool flag = false;
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.ai[0] = -1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] != -1.0 && Main.rand.Next(4) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Dust dust = Dust.NewDustDirect(this.position + new Vector2(5f), this.width - 10, this.height - 10, 5);
|
|
dust.velocity *= 0.5f;
|
|
if ((double) dust.velocity.Y < 0.0)
|
|
dust.velocity.Y *= -1f;
|
|
dust.alpha = 120;
|
|
dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.400000005960464);
|
|
dust.velocity += this.velocity * 0.3f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if (this.target == (int) byte.MaxValue)
|
|
{
|
|
this.TargetClosest();
|
|
this.ai[2] = (float) this.direction;
|
|
}
|
|
if (Main.player[this.target].dead || (double) Vector2.Distance(Main.player[this.target].Center, this.Center) > 2000.0)
|
|
this.TargetClosest();
|
|
NPCAimedTarget npcAimedTarget = this.GetTargetData();
|
|
if (Main.dayTime || !Main.bloodMoon)
|
|
npcAimedTarget = new NPCAimedTarget();
|
|
int num9 = -1;
|
|
switch (this.ai[0])
|
|
{
|
|
case -1f:
|
|
this.velocity = this.velocity * 0.98f;
|
|
int num10 = Math.Sign(npcAimedTarget.Center.X - this.Center.X);
|
|
if (num10 != 0)
|
|
{
|
|
this.direction = num10;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
if ((double) this.localAI[1] == 0.0 && this.alpha < 100)
|
|
{
|
|
this.localAI[1] = 1f;
|
|
int num11 = 36;
|
|
for (int index1 = 0; index1 < num11; ++index1)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Vector2 vector2_1 = (Vector2.Normalize(this.velocity) * new Vector2((float) this.width / 2f, (float) this.height) * 0.75f * 0.5f).RotatedBy((double) (index1 - (num11 / 2 - 1)) * 6.28318548202515 / (double) num11) + this.Center;
|
|
Vector2 vector2_2 = vector2_1 - this.Center;
|
|
int index2 = Dust.NewDust(vector2_1 + vector2_2, 0, 0, 5, vector2_2.X * 2f, vector2_2.Y * 2f, 100, Scale: 1.4f);
|
|
Main.dust[index2].noGravity = true;
|
|
Main.dust[index2].velocity = Vector2.Normalize(vector2_2) * 3f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
if ((double) this.ai[2] > 5.0)
|
|
{
|
|
this.velocity.Y = -2.5f;
|
|
this.alpha -= 10;
|
|
if (Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.alpha += 15;
|
|
if (this.alpha > 150)
|
|
this.alpha = 150;
|
|
}
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 50.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 0.0f:
|
|
Vector2 vector2_3 = npcAimedTarget.Center + new Vector2((float) (-(double) this.ai[2] * 300.0), -200f);
|
|
if ((double) this.Center.Distance(vector2_3) > 50.0)
|
|
this.SimpleFlyMovement(this.DirectionTo(vector2_3) * num1, moveSpeed);
|
|
this.direction = (double) this.Center.X < (double) npcAimedTarget.Center.X ? 1 : -1;
|
|
float targetAngle1 = this.Center.DirectionTo(npcAimedTarget.Center).ToRotation() - 0.4712389f * (float) this.spriteDirection;
|
|
if (this.spriteDirection == -1)
|
|
targetAngle1 += 3.141593f;
|
|
if (this.spriteDirection != this.direction)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = -this.rotation;
|
|
targetAngle1 = -targetAngle1;
|
|
}
|
|
this.rotation = this.rotation.AngleTowards(targetAngle1, 0.02f);
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] > (double) num2)
|
|
{
|
|
int num12 = (int) this.ai[3];
|
|
if (num12 % 7 == 3)
|
|
{
|
|
num9 = 3;
|
|
break;
|
|
}
|
|
if (num12 % 2 == 0)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item170, this.Center);
|
|
num9 = 2;
|
|
break;
|
|
}
|
|
SoundEngine.PlaySound(SoundID.Item170, this.Center);
|
|
num9 = 1;
|
|
break;
|
|
}
|
|
break;
|
|
case 1f:
|
|
this.direction = (double) this.Center.X < (double) npcAimedTarget.Center.X ? -1 : 1;
|
|
float targetAngle2 = this.Center.DirectionFrom(npcAimedTarget.Center).ToRotation() - 0.4712389f * (float) this.spriteDirection;
|
|
if (this.spriteDirection == -1)
|
|
targetAngle2 += 3.141593f;
|
|
if (this.spriteDirection != this.direction & (double) this.ai[1] < (double) num3)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = -this.rotation;
|
|
targetAngle2 = -targetAngle2;
|
|
}
|
|
if ((double) this.ai[1] < (double) num3)
|
|
{
|
|
if ((double) this.ai[1] == (double) num3 - 1.0)
|
|
SoundEngine.PlaySound(SoundID.Item172, this.Center);
|
|
flag = true;
|
|
this.velocity = this.velocity * 0.95f;
|
|
this.rotation = this.rotation.AngleLerp(targetAngle2, 0.02f);
|
|
this.position = this.position + this.netOffset;
|
|
Vector2 mouthPosition;
|
|
Vector2 mouthDirection;
|
|
this.BloodNautilus_GetMouthPositionAndRotation(out mouthPosition, out mouthDirection);
|
|
Dust dust1 = Dust.NewDustDirect(mouthPosition + mouthDirection * 60f - new Vector2(40f), 80, 80, 16, Alpha: 150, newColor: Color.Transparent, Scale: 0.6f);
|
|
dust1.fadeIn = 1f;
|
|
dust1.velocity = dust1.position.DirectionTo(mouthPosition + Main.rand.NextVector2Circular(15f, 15f)) * dust1.velocity.Length();
|
|
dust1.noGravity = true;
|
|
Dust dust2 = Dust.NewDustDirect(mouthPosition + mouthDirection * 100f - new Vector2(30f), 60, 60, 16, Alpha: 100, newColor: Color.Transparent, Scale: 0.9f);
|
|
dust2.fadeIn = 1.5f;
|
|
dust2.velocity = dust2.position.DirectionTo(mouthPosition + Main.rand.NextVector2Circular(15f, 15f)) * (dust2.velocity.Length() + 5f);
|
|
dust2.noGravity = true;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
else if ((double) this.ai[1] < (double) num3 + (double) num4)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
this.rotation = this.rotation.AngleLerp(targetAngle2, 0.07f);
|
|
Vector2 mouthPosition;
|
|
Vector2 mouthDirection;
|
|
this.BloodNautilus_GetMouthPositionAndRotation(out mouthPosition, out mouthDirection);
|
|
if ((double) this.Center.Distance(npcAimedTarget.Center) > 30.0)
|
|
this.velocity = mouthDirection * -16f + this.Center.DirectionTo(npcAimedTarget.Center) * 2f;
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
Dust dust3 = Dust.NewDustDirect(mouthPosition + mouthDirection * 60f - new Vector2(15f), 30, 30, 5, newColor: Color.Transparent, Scale: 1.5f);
|
|
dust3.velocity = dust3.position.DirectionFrom(mouthPosition + Main.rand.NextVector2Circular(5f, 5f)) * dust3.velocity.Length();
|
|
dust3.position -= mouthDirection * 60f;
|
|
Dust dust4 = Dust.NewDustDirect(mouthPosition + mouthDirection * 100f - new Vector2(20f), 40, 40, 5, Alpha: 100, newColor: Color.Transparent, Scale: 1.5f);
|
|
dust4.velocity = dust4.position.DirectionFrom(mouthPosition + Main.rand.NextVector2Circular(10f, 10f)) * (dust4.velocity.Length() + 5f);
|
|
dust4.position -= mouthDirection * 100f;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) num3 + (double) num4)
|
|
{
|
|
num9 = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 2f:
|
|
this.direction = (double) this.Center.X < (double) npcAimedTarget.Center.X ? 1 : -1;
|
|
float targetAngle3 = this.Center.DirectionTo(npcAimedTarget.Center).ToRotation() - 0.4712389f * (float) this.spriteDirection;
|
|
if (this.spriteDirection == -1)
|
|
targetAngle3 += 3.141593f;
|
|
if (this.spriteDirection != this.direction)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = -this.rotation;
|
|
targetAngle3 = -targetAngle3;
|
|
}
|
|
this.rotation = this.rotation.AngleLerp(targetAngle3, 0.2f);
|
|
if ((double) this.ai[1] < (double) num5)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
this.velocity = this.velocity * 0.95f;
|
|
Vector2 mouthPosition;
|
|
Vector2 mouthDirection;
|
|
this.BloodNautilus_GetMouthPositionAndRotation(out mouthPosition, out mouthDirection);
|
|
if (Main.rand.Next(4) != 0)
|
|
{
|
|
Dust dust5 = Dust.NewDustDirect(mouthPosition + mouthDirection * 60f - new Vector2(60f), 120, 120, 16, Alpha: 150, newColor: Color.Transparent, Scale: 0.6f);
|
|
dust5.fadeIn = 1f;
|
|
dust5.velocity = dust5.position.DirectionTo(mouthPosition + Main.rand.NextVector2Circular(15f, 15f)) * (dust5.velocity.Length() + 3f);
|
|
dust5.noGravity = true;
|
|
Dust dust6 = Dust.NewDustDirect(mouthPosition + mouthDirection * 100f - new Vector2(80f), 160, 160, 16, Alpha: 100, newColor: Color.Transparent, Scale: 0.9f);
|
|
dust6.fadeIn = 1.5f;
|
|
dust6.velocity = dust6.position.DirectionTo(mouthPosition + Main.rand.NextVector2Circular(15f, 15f)) * (dust6.velocity.Length() + 5f);
|
|
dust6.noGravity = true;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
else if ((double) this.ai[1] < (double) num5 + (double) num6)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
this.velocity = this.velocity * 0.9f;
|
|
float num13 = (float) (((double) this.ai[1] - (double) num5) % ((double) num6 / (double) num7));
|
|
Vector2 mouthPosition;
|
|
Vector2 mouthDirection;
|
|
this.BloodNautilus_GetMouthPositionAndRotation(out mouthPosition, out mouthDirection);
|
|
if ((double) num13 < (double) num6 / (double) num7 * 0.800000011920929)
|
|
{
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
Dust dust7 = Dust.NewDustDirect(mouthPosition + mouthDirection * 50f - new Vector2(15f), 30, 30, 5, newColor: Color.Transparent, Scale: 1.5f);
|
|
dust7.velocity = dust7.position.DirectionFrom(mouthPosition + Main.rand.NextVector2Circular(5f, 5f)) * dust7.velocity.Length();
|
|
dust7.position -= mouthDirection * 60f;
|
|
Dust dust8 = Dust.NewDustDirect(mouthPosition + mouthDirection * 90f - new Vector2(20f), 40, 40, 5, Alpha: 100, newColor: Color.Transparent, Scale: 1.5f);
|
|
dust8.velocity = dust8.position.DirectionFrom(mouthPosition + Main.rand.NextVector2Circular(10f, 10f)) * (dust8.velocity.Length() + 5f);
|
|
dust8.position -= mouthDirection * 100f;
|
|
}
|
|
}
|
|
if ((int) num13 == 0)
|
|
{
|
|
this.velocity = this.velocity + mouthDirection * -8f;
|
|
for (int index = 0; index < 20; ++index)
|
|
{
|
|
Dust dust9 = Dust.NewDustDirect(mouthPosition + mouthDirection * 60f - new Vector2(15f), 30, 30, 5, newColor: Color.Transparent, Scale: 1.5f);
|
|
dust9.velocity = dust9.position.DirectionFrom(mouthPosition + Main.rand.NextVector2Circular(5f, 5f)) * dust9.velocity.Length();
|
|
dust9.position -= mouthDirection * 60f;
|
|
Dust dust10 = Dust.NewDustDirect(mouthPosition + mouthDirection * 100f - new Vector2(20f), 40, 40, 5, Alpha: 100, newColor: Color.Transparent, Scale: 1.5f);
|
|
dust10.velocity = dust10.position.DirectionFrom(mouthPosition + Main.rand.NextVector2Circular(10f, 10f)) * (dust10.velocity.Length() + 5f);
|
|
dust10.position -= mouthDirection * 100f;
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
int num14 = Main.rand.Next(5, 11);
|
|
Vector2 vector2_4 = mouthDirection * 10f;
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(30f, 25f);
|
|
for (int index = 0; index < num14; ++index)
|
|
{
|
|
Vector2 velocity = vector2_4 + Main.rand.NextVector2Square(-6f, 6f);
|
|
Projectile.NewProjectile(mouthPosition - mouthDirection * 5f, velocity, 814, damageForProjectiles, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) num5 + (double) num6)
|
|
{
|
|
num9 = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 3f:
|
|
this.direction = (double) this.Center.X < (double) npcAimedTarget.Center.X ? 1 : -1;
|
|
float targetAngle4 = 0.0f;
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.ai[1] < (double) num8)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
this.velocity = Vector2.Lerp(this.velocity, new Vector2(0.0f, MathHelper.Clamp((float) (1.0 - (double) this.ai[1] / (double) num8 * 1.5), 0.0f, 1f) * -1.5f), 0.03f);
|
|
this.velocity = Vector2.Zero;
|
|
this.rotation = this.rotation.AngleLerp(targetAngle4, 0.02f);
|
|
this.BloodNautilus_GetMouthPositionAndRotation(out Vector2 _, out Vector2 _);
|
|
float t = this.ai[1] / num8;
|
|
Lighting.AddLight(this.Center, new Vector3(1f, 0.5f, 0.5f) * (Utils.GetLerpValue(0.0f, 0.5f, t, false) * Utils.GetLerpValue(1f, 0.5f, t, false)));
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.Center - new Vector2(6f), 12, 12, 5, Alpha: 60, newColor: Color.Transparent, Scale: 1.4f);
|
|
dust.position += new Vector2((float) (this.spriteDirection * 12), 12f);
|
|
dust.velocity *= 0.1f;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if ((double) this.ai[1] == 10.0 || (double) this.ai[1] == 20.0 || (double) this.ai[1] == 30.0)
|
|
this.BloodNautilus_CallForHelp();
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) num8)
|
|
{
|
|
num9 = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (num9 != -1)
|
|
{
|
|
this.ai[0] = (float) num9;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
this.TargetClosest();
|
|
if (num9 == 0)
|
|
this.ai[2] = (float) this.direction;
|
|
else
|
|
++this.ai[3];
|
|
}
|
|
this.reflectsProjectiles = flag;
|
|
}
|
|
|
|
private void BloodNautilus_CallForHelp()
|
|
{
|
|
if (Main.netMode == 1 || !Main.player[this.target].active || Main.player[this.target].dead || (double) this.Distance(Main.player[this.target].Center) > 2000.0 || NPC.CountNPCS(619) >= 3)
|
|
return;
|
|
Point tileCoordinates = this.Center.ToTileCoordinates();
|
|
Point point = tileCoordinates;
|
|
int num1 = 20;
|
|
int num2 = 3;
|
|
int num3 = 8;
|
|
int num4 = 2;
|
|
int num5 = 0;
|
|
bool flag1 = false;
|
|
while (!flag1 && num5 < 100)
|
|
{
|
|
++num5;
|
|
int index1 = Main.rand.Next(point.X - num1, point.X + num1 + 1);
|
|
int index2 = Main.rand.Next(point.Y - num1, point.Y + num1 + 1);
|
|
if ((index2 < point.Y - num3 || index2 > point.Y + num3 || index1 < point.X - num3 || index1 > point.X + num3) && (index2 < tileCoordinates.Y - num2 || index2 > tileCoordinates.Y + num2 || index1 < tileCoordinates.X - num2 || index1 > tileCoordinates.X + num2) && !Main.tile[index1, index2].nactive())
|
|
{
|
|
bool flag2 = true;
|
|
if (flag2 && Main.tile[index1, index2].lava())
|
|
flag2 = false;
|
|
if (flag2 && Collision.SolidTiles(index1 - num4, index1 + num4, index2 - num4, index2 + num4))
|
|
flag2 = false;
|
|
if (flag2 && !Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
flag2 = false;
|
|
if (flag2)
|
|
{
|
|
Projectile.NewProjectile((float) (index1 * 16 + 8), (float) (index2 * 16 + 8), 0.0f, 0.0f, 813, 0, 0.0f, Main.myPlayer);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool TooWindyForButterflies => (double) Math.Abs(Main.windSpeedTarget) >= 0.400000005960464;
|
|
|
|
private void AI_116_WaterStriders()
|
|
{
|
|
bool flag1 = false;
|
|
float waterLineHeight;
|
|
if (Collision.GetWaterLine(this.Center.ToTileCoordinates(), out waterLineHeight))
|
|
{
|
|
float num = this.Bottom.Y - 1f;
|
|
if ((double) this.Center.Y > (double) waterLineHeight)
|
|
{
|
|
this.velocity.Y -= 0.8f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
if ((double) num + (double) this.velocity.Y < (double) waterLineHeight)
|
|
this.velocity.Y = waterLineHeight - num;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = MathHelper.Min(this.velocity.Y, waterLineHeight - num);
|
|
flag1 = true;
|
|
}
|
|
}
|
|
else if (this.wet)
|
|
this.velocity.Y -= 0.2f;
|
|
if ((int) this.ai[0] != 0)
|
|
return;
|
|
++this.ai[1];
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.6f;
|
|
bool flag2 = this.wet | flag1;
|
|
bool flag3 = flag2 || (double) this.velocity.Y == 0.0;
|
|
int num1 = Main.rand.Next(120, 241);
|
|
if (!flag2)
|
|
num1 = Main.rand.Next(60, 241);
|
|
if (!flag3 || (double) this.ai[1] < (double) num1)
|
|
return;
|
|
this.ai[1] = 0.0f;
|
|
this.velocity.X = Main.rand.NextFloatDirection() * 5f;
|
|
this.netUpdate = true;
|
|
if (flag2)
|
|
return;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.Y = -2f;
|
|
this.ai[1] = 60f;
|
|
}
|
|
|
|
private void AI_115_LadyBugs()
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = (float) ((double) Main.rand.NextFloat() * 0.200000002980232 + 0.699999988079071);
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) --this.localAI[0] <= 0.0)
|
|
{
|
|
this.localAI[0] = (float) Main.rand.Next(60, 181);
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
this.ai[2] = 1f;
|
|
this.ai[0] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[2] == 1.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.ai[2] = 0.0f;
|
|
this.ai[0] = Main.rand.NextFloat() * 6.283185f;
|
|
if ((double) this.Distance(Main.player[this.target].Center) > 700.0)
|
|
this.ai[0] = this.AngleTo(Main.player[this.target].Center) + Main.rand.NextFloatDirection() * 0.3f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
this.TargetClosest();
|
|
this.ai[0] = Main.rand.NextFloat() * 6.283185f;
|
|
if ((double) this.Distance(Main.player[this.target].Center) > 700.0)
|
|
this.ai[0] = this.AngleTo(Main.player[this.target].Center) + Main.rand.NextFloatDirection() * 0.3f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
this.scale = this.ai[1];
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
Vector2 vector2 = this.ai[0].ToRotationVector2() * 1f;
|
|
vector2.X += Main.windSpeedTarget * 0.8f;
|
|
this.velocity = Vector2.Lerp(this.velocity, vector2, 0.0125f);
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
int num1 = 4;
|
|
int index1 = (int) this.Center.X / 16;
|
|
int num2 = (int) this.Center.Y / 16;
|
|
for (int index2 = num2; index2 < num2 + num1; ++index2)
|
|
{
|
|
if (Main.tile[index1, index2] != null && (Main.tile[index1, index2].nactive() && Main.tileSolid[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2].liquid > (byte) 0))
|
|
{
|
|
this.ai[0] = -this.ai[0];
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
int num3 = 30;
|
|
bool flag = false;
|
|
int index3 = (int) this.Center.X / 16;
|
|
int num4 = (int) this.Center.Y / 16;
|
|
for (int index4 = num4; index4 < num4 + num3; ++index4)
|
|
{
|
|
if (Main.tile[index3, index4] != null && (Main.tile[index3, index4].nactive() && Main.tileSolid[(int) Main.tile[index3, index4].type] || Main.tile[index3, index4].liquid > (byte) 0))
|
|
flag = true;
|
|
}
|
|
if (!flag)
|
|
{
|
|
this.ai[0] = -this.ai[0];
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
}
|
|
}
|
|
if (this.collideX)
|
|
{
|
|
this.ai[0] = (float) (-(double) this.ai[0] + 3.14159274101257);
|
|
this.velocity.X *= -0.2f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
int num5 = 4;
|
|
int index5 = (int) this.Center.X / 16 + this.direction;
|
|
int num6 = (int) this.Center.Y / 16;
|
|
for (int index6 = num6; index6 < num6 + num5; ++index6)
|
|
{
|
|
if (Main.tile[index5, index6] != null && Main.tile[index5, index6].liquid > (byte) 0)
|
|
{
|
|
this.TargetClosest();
|
|
this.velocity.Y = -1f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[0] = (float) ((double) Main.rand.NextFloat() * 0.785398185253143 - 1.57079637050629);
|
|
if ((double) this.Distance(Main.player[this.target].Center) > 700.0)
|
|
this.ai[0] = this.AngleTo(Main.player[this.target].Center) + Main.rand.NextFloatDirection() * 0.3f;
|
|
this.netUpdate = true;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.velocity.X *= 0.98f;
|
|
this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 2f, 0.005f);
|
|
}
|
|
else
|
|
{
|
|
this.velocity = Vector2.Lerp(this.velocity, Vector2.UnitX * (float) this.direction, 0.05f);
|
|
this.velocity.Y += 0.2f;
|
|
if (this.collideX)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X *= -0.2f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
this.direction = (double) this.velocity.X > 0.0 ? 1 : -1;
|
|
}
|
|
|
|
private void AI_114_Dragonflies()
|
|
{
|
|
if ((double) this.localAI[0] == 0.0 && Main.netMode != 1)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
Vector2 center = this.Center;
|
|
this.ai[2] = center.X;
|
|
this.ai[3] = center.Y;
|
|
this.velocity = (Main.rand.NextVector2Circular(5f, 3f) + Main.rand.NextVector2CircularEdge(5f, 3f)) * 0.4f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
switch ((int) this.ai[0])
|
|
{
|
|
case 0:
|
|
this.velocity = this.velocity * 0.94f;
|
|
if (Main.netMode != 1 && (double) ++this.ai[1] >= (double) (60 + Main.rand.Next(60)))
|
|
{
|
|
Vector2 vector2 = new Vector2(this.ai[2], this.ai[3]);
|
|
if ((double) this.Distance(vector2) > 96.0)
|
|
this.velocity = this.DirectionTo(vector2) * 3f;
|
|
else if ((double) this.Distance(vector2) > 16.0)
|
|
this.velocity = this.DirectionTo(vector2) * 1f + Main.rand.NextVector2Circular(1f, 0.5f);
|
|
else
|
|
this.velocity = (Main.rand.NextVector2Circular(5f, 3f) + Main.rand.NextVector2CircularEdge(5f, 3f)) * 0.4f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[0] = 1f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
int num1 = 4;
|
|
if ((double) this.Distance(new Vector2(this.ai[2], this.ai[3])) > 112.0)
|
|
num1 = 200;
|
|
if ((double) ++this.ai[1] >= (double) num1)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[0] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
int index1 = (int) this.Center.X / 16;
|
|
int num2 = (int) this.Center.Y / 16;
|
|
int num3 = 3;
|
|
for (int index2 = num2; index2 < num2 + num3; ++index2)
|
|
{
|
|
if (Main.tile[index1, index2] != null && (Main.tile[index1, index2].nactive() && Main.tileSolid[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2].liquid > (byte) 0))
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.Y -= 0.2f;
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
int num4 = 30;
|
|
bool flag = false;
|
|
for (int index3 = num2; index3 < num2 + num4; ++index3)
|
|
{
|
|
if (Main.tile[index1, index3] != null && Main.tile[index1, index3].nactive() && Main.tileSolid[(int) Main.tile[index1, index3].type])
|
|
{
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!flag && (double) this.velocity.Y < 0.0)
|
|
{
|
|
this.velocity.Y *= 0.9f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.direction = (double) this.velocity.X > 0.0 ? 1 : -1;
|
|
if (this.wet)
|
|
this.velocity.Y = -3f;
|
|
if ((double) this.localAI[1] > 0.0)
|
|
{
|
|
--this.localAI[1];
|
|
}
|
|
else
|
|
{
|
|
this.localAI[1] = 15f;
|
|
float num5 = 0.0f;
|
|
Vector2 zero = Vector2.Zero;
|
|
for (int index4 = 0; index4 < 200; ++index4)
|
|
{
|
|
NPC npc = Main.npc[index4];
|
|
if (npc.active && npc.damage > 0 && !npc.friendly && (double) npc.Hitbox.Distance(this.Center) <= 100.0)
|
|
{
|
|
++num5;
|
|
zero += this.DirectionFrom(npc.Center);
|
|
}
|
|
}
|
|
for (int index5 = 0; index5 < (int) byte.MaxValue; ++index5)
|
|
{
|
|
Player player = Main.player[index5];
|
|
if (player.active && (double) player.Hitbox.Distance(this.Center) <= 150.0)
|
|
{
|
|
++num5;
|
|
zero += this.DirectionFrom(player.Center);
|
|
}
|
|
}
|
|
if ((double) num5 > 0.0)
|
|
{
|
|
float num6 = 2f;
|
|
Vector2 vector2_1 = zero / num5 * num6;
|
|
this.velocity = this.velocity + vector2_1;
|
|
if ((double) this.velocity.Length() > 16.0)
|
|
this.velocity = this.velocity.SafeNormalize(Vector2.Zero) * 16f;
|
|
Vector2 vector2_2 = this.Center + vector2_1 * 10f;
|
|
this.ai[1] = -10f;
|
|
this.ai[0] = 1f;
|
|
this.ai[2] = vector2_2.X;
|
|
this.ai[3] = vector2_2.Y;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode == 1 || (double) (new Vector2(this.ai[2], this.ai[3]) - this.Center).Length() >= 16.0)
|
|
return;
|
|
int maxValue = 30;
|
|
if (Main.tile[(int) this.ai[2] / 16, (int) this.ai[3] / 16].type != (ushort) 519)
|
|
maxValue = 4;
|
|
if (Main.rand.Next(maxValue) != 0)
|
|
return;
|
|
int cattailX = (int) this.ai[2];
|
|
int cattailY = (int) this.ai[2];
|
|
if (NPC.FindCattailTop((int) this.ai[2] / 16, (int) this.ai[3] / 16, out cattailX, out cattailY))
|
|
{
|
|
this.ai[2] = (float) (cattailX * 16);
|
|
this.ai[3] = (float) (cattailY * 16);
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
int i = (int) ((double) this.Center.X / 16.0);
|
|
int j = (int) ((double) this.Center.Y / 16.0);
|
|
while (!WorldGen.SolidTile(i, j) && (double) j < Main.worldSurface)
|
|
++j;
|
|
int num7 = j - Main.rand.Next(3, 6);
|
|
this.ai[2] = (float) (i * 16);
|
|
this.ai[3] = (float) (num7 * 16);
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AI_113_WindyBalloon()
|
|
{
|
|
if ((double) this.localAI[0] == 0.0 && Main.netMode != 1)
|
|
{
|
|
this.TargetClosest();
|
|
this.localAI[0] = 1f;
|
|
this.ai[2] = (float) (Main.rand.Next(7) + 1);
|
|
int index = NPC.NewNPC((int) this.position.X, (int) this.position.Y, 1);
|
|
if (Main.rand.Next(180) == 0)
|
|
Main.npc[index].SetDefaults(-4);
|
|
else if (Main.rand.Next(10) == 0)
|
|
Main.npc[index].SetDefaults(-7);
|
|
else if (Main.rand.Next(3) == 0)
|
|
Main.npc[index].SetDefaults(-3);
|
|
Main.npc[index].ai[0] = -999f;
|
|
Main.npc[index].netUpdate = true;
|
|
this.ai[3] = (float) index;
|
|
this.netUpdate = true;
|
|
this.ai[1] = Main.npc[index].scale;
|
|
}
|
|
this.position = this.Center;
|
|
this.Size = new Vector2(20f, 20f) * this.ai[1];
|
|
this.scale = this.ai[1];
|
|
this.Center = this.position;
|
|
NPC slaveNpc = this.AI_113_WindyBalloon_GetSlaveNPC();
|
|
this.rotation = this.velocity.X * 0.05f;
|
|
if (slaveNpc != null)
|
|
{
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
float num1 = float.PositiveInfinity;
|
|
int num2 = 0;
|
|
Vector2 zero = Vector2.Zero;
|
|
if (!targetData.Invalid)
|
|
{
|
|
Vector2 vector2 = targetData.Center - this.Bottom;
|
|
if ((double) vector2.Y < 0.0)
|
|
num2 = (int) vector2.Y / -16;
|
|
num1 = vector2.Length();
|
|
if (this.direction != Math.Sign(vector2.X))
|
|
num2 = 0;
|
|
}
|
|
if (this.wet || slaveNpc.wet || this.collideX || this.collideY && (double) this.oldVelocity.Y < 0.0)
|
|
{
|
|
float num3 = this.oldVelocity.X + (float) (this.direction * 8);
|
|
this.position.X -= num3;
|
|
slaveNpc.position.X -= num3;
|
|
this.TargetClosest(false);
|
|
this.direction *= -1;
|
|
this.velocity.X = (float) (this.direction * 2);
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
this.netUpdate = true;
|
|
SoundEngine.PlaySound(this.DeathSound, this.position);
|
|
}
|
|
else
|
|
{
|
|
if (this.collideY)
|
|
{
|
|
this.velocity.Y = (double) this.oldVelocity.Y > 0.0 ? 1f : -1f;
|
|
this.TargetClosest(false);
|
|
}
|
|
float num4 = (float) (2.0 + (double) Math.Abs(Main.windSpeedTarget) * 2.0);
|
|
if (Math.Sign(this.velocity.X) != this.direction || (double) Math.Abs(this.velocity.X) < (double) num4)
|
|
{
|
|
this.velocity.X += (float) this.direction * 0.01f;
|
|
if ((double) this.velocity.X * (double) this.direction < 0.0)
|
|
{
|
|
if ((double) Math.Abs(this.velocity.X) > (double) num4)
|
|
this.velocity.X += (float) this.direction * 0.1f;
|
|
else
|
|
this.velocity.X += (float) this.direction * 0.05f;
|
|
}
|
|
else if ((double) Math.Abs(this.velocity.X) > (double) num4)
|
|
this.velocity.X = (float) this.direction * num4;
|
|
}
|
|
int index1 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0) + this.direction;
|
|
int num5 = (int) (((double) this.position.Y + (double) this.height) / 16.0);
|
|
bool flag1 = true;
|
|
int num6 = 8 + num2;
|
|
bool flag2 = false;
|
|
for (int index2 = num5; index2 < num5 + num6; ++index2)
|
|
{
|
|
if (Main.tile[index1, index2] == null)
|
|
Main.tile[index1, index2] = new Tile();
|
|
if (Main.tile[index1, index2].nactive() && Main.tileSolid[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2].liquid > (byte) 0)
|
|
{
|
|
if (index2 < num5 + 5 + num2)
|
|
flag2 = true;
|
|
flag1 = false;
|
|
break;
|
|
}
|
|
}
|
|
if ((double) num1 < 400.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
float num7 = 2f;
|
|
float num8 = 0.035f;
|
|
if ((double) this.Center.Y + (double) (this.height / 4) > (double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 4) && (double) this.velocity.Y > -(double) num7)
|
|
{
|
|
this.velocity.Y -= num8;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y -= num8;
|
|
}
|
|
else if ((double) this.Center.Y + (double) (this.height / 4) < (double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 4) && (double) this.velocity.Y < (double) num7)
|
|
{
|
|
this.velocity.Y += num8;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y += num8;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (flag1)
|
|
this.velocity.Y += 0.05f;
|
|
else
|
|
this.velocity.Y -= 0.1f;
|
|
if (flag2)
|
|
this.velocity.Y -= 0.2f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
slaveNpc.Center = this.Bottom + new Vector2(0.0f, -8f) + new Vector2(0.0f, 56f * this.ai[1]);
|
|
slaveNpc.velocity = this.velocity;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = MathHelper.Clamp(this.velocity.Y - 0.2f, -8f, 8f);
|
|
this.velocity.X = MathHelper.Clamp(this.velocity.X + Main.windSpeedTarget * 0.3f, -4f, 4f);
|
|
if (!this.collideX && !this.collideY)
|
|
return;
|
|
this.position.X -= this.oldVelocity.X + (float) (this.direction * 8);
|
|
this.TargetClosest(false);
|
|
this.direction *= -1;
|
|
this.velocity.X = (float) (this.direction * 2);
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
this.netUpdate = true;
|
|
SoundEngine.PlaySound(this.DeathSound, this.position);
|
|
}
|
|
}
|
|
|
|
public NPC AI_113_WindyBalloon_GetSlaveNPC()
|
|
{
|
|
int index = (int) this.ai[3];
|
|
NPC npc;
|
|
if (index >= 0 && index < 200)
|
|
{
|
|
npc = Main.npc[index];
|
|
if (!npc.active || npc.type != 1 || (double) npc.ai[0] != -999.0)
|
|
{
|
|
npc = (NPC) null;
|
|
this.ai[3] = -1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
npc = (NPC) null;
|
|
return npc;
|
|
}
|
|
|
|
private void AI_112_FairyCritter()
|
|
{
|
|
bool flag1 = false;
|
|
this.lavaImmune = true;
|
|
if (Main.netMode != 1 && (double) this.ai[2] > 1.0)
|
|
{
|
|
int num = 18000;
|
|
++this.localAI[1];
|
|
if ((double) this.localAI[1] >= (double) num)
|
|
{
|
|
this.ai[2] = 7f;
|
|
if ((double) Main.player[this.target].Center.X < (double) this.Center.X)
|
|
this.direction = 1;
|
|
else
|
|
this.direction = -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
switch ((int) this.ai[2])
|
|
{
|
|
case 0:
|
|
this.lavaImmune = false;
|
|
this.noTileCollide = false;
|
|
if ((double) this.ai[0] == 0.0 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[0] = this.Center.X;
|
|
this.ai[1] = this.Center.Y;
|
|
}
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
this.velocity = new Vector2(MathHelper.Lerp(2f, 4f, Main.rand.NextFloat()) * (float) (Main.rand.Next(2) * 2 - 1), MathHelper.Lerp(1f, 2f, Main.rand.NextFloat()) * (float) (Main.rand.Next(2) * 2 - 1));
|
|
this.velocity = this.velocity * 0.7f;
|
|
this.netUpdate = true;
|
|
}
|
|
Vector2 vector2_1 = new Vector2(this.ai[0], this.ai[1]) - this.Center;
|
|
if ((double) vector2_1.Length() > 20.0)
|
|
{
|
|
this.velocity = this.velocity + new Vector2((double) vector2_1.X > 0.0 ? 1f : -1f, (double) vector2_1.Y > 0.0 ? 1f : -1f) * 0.04f;
|
|
if ((double) Math.Abs(this.velocity.Y) > 2.0)
|
|
this.velocity.Y *= 0.95f;
|
|
}
|
|
this.TargetClosest();
|
|
Player player = Main.player[this.target];
|
|
if (!player.dead && (double) player.Distance(this.Center) < 250.0)
|
|
{
|
|
this.ai[2] = 1f;
|
|
this.direction = (double) player.Center.X > (double) this.Center.X ? -1 : 1;
|
|
if ((double) this.velocity.X * (double) this.direction < 0.0)
|
|
this.velocity.X = (float) (this.direction * 2);
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
this.lavaImmune = false;
|
|
this.noTileCollide = false;
|
|
if (this.collideX)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X = (float) (this.direction * 2);
|
|
}
|
|
if (this.collideY)
|
|
this.velocity.Y = (double) this.oldVelocity.Y > 0.0 ? 1f : -1f;
|
|
float num1 = 4.5f;
|
|
if (Math.Sign(this.velocity.X) != this.direction || (double) Math.Abs(this.velocity.X) < (double) num1)
|
|
{
|
|
this.velocity.X += (float) this.direction * 0.04f;
|
|
if ((double) this.velocity.X * (double) this.direction < 0.0)
|
|
{
|
|
if ((double) Math.Abs(this.velocity.X) > (double) num1)
|
|
this.velocity.X += (float) this.direction * 0.4f;
|
|
else
|
|
this.velocity.X += (float) this.direction * 0.2f;
|
|
}
|
|
else if ((double) Math.Abs(this.velocity.X) > (double) num1)
|
|
this.velocity.X = (float) this.direction * num1;
|
|
}
|
|
int num2 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0);
|
|
int num3 = 20;
|
|
if (this.direction < 0)
|
|
num2 -= num3;
|
|
int num4 = (int) (((double) this.position.Y + (double) this.height) / 16.0);
|
|
bool flag2 = true;
|
|
int num5 = 8;
|
|
bool flag3 = false;
|
|
for (int index1 = num2; index1 <= num2 + num3; ++index1)
|
|
{
|
|
for (int index2 = num4; index2 < num4 + num5; ++index2)
|
|
{
|
|
if (Main.tile[index1, index2] == null)
|
|
Main.tile[index1, index2] = new Tile();
|
|
if (Main.tile[index1, index2].nactive() && Main.tileSolid[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2].liquid > (byte) 0)
|
|
{
|
|
if (index2 < num4 + 5)
|
|
flag3 = true;
|
|
flag2 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag2)
|
|
this.velocity.Y += 0.05f;
|
|
else
|
|
this.velocity.Y -= 0.2f;
|
|
if (flag3)
|
|
this.velocity.Y -= 0.3f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
if ((double) this.velocity.Y < -5.0)
|
|
{
|
|
this.velocity.Y = -5f;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
this.noTileCollide = true;
|
|
NPCAimedTarget targetData1 = this.GetTargetData();
|
|
bool flag4 = false;
|
|
if (targetData1.Type == NPCTargetType.Player)
|
|
flag4 = Main.player[this.target].dead;
|
|
if (flag4)
|
|
{
|
|
this.ai[2] = 1f;
|
|
this.direction = (double) targetData1.Center.X > (double) this.Center.X ? -1 : 1;
|
|
if ((double) this.velocity.X * (double) this.direction < 0.0)
|
|
this.velocity.X = (float) (this.direction * 2);
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle r1 = Utils.CenteredRectangle(targetData1.Center, new Vector2((float) (targetData1.Width + 60), (float) (targetData1.Height / 2)));
|
|
if (Main.netMode != 1 && this.Hitbox.Intersects(r1))
|
|
{
|
|
Point treasureCoords;
|
|
if (this.GetFairyTreasureCoords(out treasureCoords))
|
|
{
|
|
this.ai[0] = (float) treasureCoords.X;
|
|
this.ai[1] = (float) treasureCoords.Y;
|
|
this.ai[2] = 3f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
this.ai[2] = 6f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
Vector2 vector2_2 = r1.ClosestPointInRect(this.Center);
|
|
Vector2 vector2_3 = this.DirectionTo(vector2_2) * 2f;
|
|
float num6 = this.Distance(vector2_2);
|
|
if ((double) num6 > 150.0)
|
|
vector2_3 *= 2f;
|
|
else if ((double) num6 > 80.0)
|
|
vector2_3 *= 1.5f;
|
|
this.velocity = Vector2.Lerp(this.velocity, vector2_3, 0.07f);
|
|
Point tileCoordinates1 = this.Center.ToTileCoordinates();
|
|
if ((double) this.ai[3] < 300.0)
|
|
{
|
|
bool goDownwards;
|
|
bool goUpwards;
|
|
this.GetBirdFlightRecommendation(6, 3, tileCoordinates1, out goDownwards, out goUpwards);
|
|
if (goDownwards)
|
|
this.velocity.Y += 0.05f;
|
|
if (goUpwards)
|
|
this.velocity.Y -= 0.02f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
if (WorldGen.InWorld(tileCoordinates1.X, tileCoordinates1.Y))
|
|
{
|
|
this.ai[3] = !WorldGen.SolidTile(tileCoordinates1) ? Math.Max(this.ai[3] - 1f, 0.0f) : Math.Min(this.ai[3] + 2f, 400f);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
this.noTileCollide = true;
|
|
if ((double) this.ai[3] == 15.0)
|
|
SoundEngine.PlaySound(27, (int) this.position.X, (int) this.position.Y);
|
|
if ((double) this.ai[3] <= 15.0)
|
|
{
|
|
this.velocity = this.velocity * 0.9f;
|
|
}
|
|
else
|
|
{
|
|
this.spriteDirection = (double) Main.player[this.target].Center.X <= (double) this.Center.X ? 1 : -1;
|
|
flag1 = true;
|
|
float num7 = 0.0f;
|
|
float num8 = this.ai[3] - 15f;
|
|
float circleHeight = 22f;
|
|
if ((double) num8 <= 65.0)
|
|
{
|
|
num7 = 0.3926991f;
|
|
circleHeight = 14f;
|
|
}
|
|
else if ((double) num8 <= 130.0)
|
|
{
|
|
num7 = -0.3926991f;
|
|
circleHeight = 18f;
|
|
}
|
|
float circleRotation = num7 * (float) this.direction;
|
|
Vector2 fairyCircleOffset = this.GetFairyCircleOffset(num8 / 65f, circleRotation, circleHeight);
|
|
this.velocity = this.GetFairyCircleOffset((float) ((double) num8 / 65.0 + 1.0 / 65.0), circleRotation, circleHeight) - fairyCircleOffset;
|
|
}
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 210.0)
|
|
{
|
|
this.ai[2] = 4f;
|
|
this.TargetClosest();
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
this.noTileCollide = true;
|
|
NPCAimedTarget targetData2 = this.GetTargetData();
|
|
bool flag5 = false;
|
|
if (targetData2.Type == NPCTargetType.Player)
|
|
flag5 = Main.player[this.target].dead;
|
|
if (flag5)
|
|
{
|
|
this.ai[2] = 1f;
|
|
this.direction = (double) targetData2.Center.X > (double) this.Center.X ? -1 : 1;
|
|
if ((double) this.velocity.X * (double) this.direction < 0.0)
|
|
this.velocity.X = (float) (this.direction * 2);
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle r2 = Utils.CenteredRectangle(new Vector2((float) ((double) this.ai[0] * 16.0 + 8.0), (float) ((double) this.ai[1] * 16.0 + 8.0)), Vector2.One * 5f);
|
|
if (this.Hitbox.Intersects(r2))
|
|
{
|
|
this.ai[2] = 5f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
float num9 = this.Distance(targetData2.Center);
|
|
float num10 = 300f;
|
|
if ((double) num9 > (double) num10)
|
|
{
|
|
if ((double) num9 < (double) num10 + 100.0 && !Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.noTileCollide = false;
|
|
if (this.collideX)
|
|
this.velocity.X *= -1f;
|
|
if (this.collideY)
|
|
this.velocity.Y *= -1f;
|
|
}
|
|
flag1 = true;
|
|
this.spriteDirection = (double) Main.player[this.target].Center.X <= (double) this.Center.X ? 1 : -1;
|
|
Vector2 vector2_4 = this.DirectionFrom(targetData2.Center);
|
|
if ((double) num9 > (double) num10 + 60.0)
|
|
{
|
|
this.velocity = this.velocity + vector2_4 * -0.1f;
|
|
if (Main.rand.Next(30) == 0)
|
|
SoundEngine.PlaySound(27, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else if ((double) num9 < (double) num10 + 30.0)
|
|
this.velocity = this.velocity + this.DirectionTo(r2.ClosestPointInRect(this.Center)) * 0.1f;
|
|
if ((double) this.velocity.Length() > 1.0)
|
|
{
|
|
this.velocity = this.velocity * (1f / this.velocity.Length());
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
Vector2 vector2_5 = r2.ClosestPointInRect(this.Center);
|
|
Vector2 vector2_6 = this.DirectionTo(vector2_5);
|
|
float num11 = this.Distance(vector2_5);
|
|
if ((double) num11 > 150.0)
|
|
vector2_6 *= 3f;
|
|
else if ((double) num11 > 80.0)
|
|
vector2_6 *= 2f;
|
|
Point tileCoordinates2 = this.Center.ToTileCoordinates();
|
|
if ((double) this.ai[3] < 300.0)
|
|
{
|
|
this.velocity = Vector2.Lerp(this.velocity, vector2_6, 0.07f);
|
|
bool goDownwards;
|
|
bool goUpwards;
|
|
this.GetBirdFlightRecommendation(4, 2, tileCoordinates2, out goDownwards, out goUpwards);
|
|
if (goDownwards)
|
|
this.velocity.Y += 0.05f;
|
|
if (goUpwards)
|
|
this.velocity.Y -= 0.05f;
|
|
if ((double) this.velocity.Y > 1.0)
|
|
this.velocity.Y = 1f;
|
|
if ((double) this.velocity.Y < -1.0)
|
|
this.velocity.Y = -1f;
|
|
}
|
|
else
|
|
this.velocity = Vector2.Lerp(this.velocity, vector2_6, 0.07f);
|
|
this.ai[3] = !WorldGen.SolidTile(tileCoordinates2) ? Math.Max(this.ai[3] - 1f, 0.0f) : Math.Min(this.ai[3] + 2f, 400f);
|
|
break;
|
|
case 5:
|
|
this.localAI[1] = 0.0f;
|
|
this.noTileCollide = true;
|
|
bool flag6 = false;
|
|
Tile tileSafely = Framing.GetTileSafely(new Point((int) this.ai[0], (int) this.ai[1]));
|
|
if (!tileSafely.active() || !SceneMetrics.IsValidForOreFinder(tileSafely))
|
|
flag6 = true;
|
|
if ((double) this.ai[3] == 15.0)
|
|
SoundEngine.PlaySound(27, (int) this.position.X, (int) this.position.Y);
|
|
if ((double) this.ai[3] <= 15.0)
|
|
{
|
|
this.velocity = this.velocity * 0.9f;
|
|
}
|
|
else
|
|
{
|
|
flag1 = true;
|
|
float num12 = this.ai[3] - 15f;
|
|
int num13;
|
|
float num14 = (float) (Math.Cos((double) (num13 = (int) ((double) num12 / 50.0)) * 1.0) * 6.28318548202515 / 16.0);
|
|
float circleHeight = (float) (Math.Cos((double) num13 * 2.0) * 10.0 + 8.0);
|
|
float circleRotation = num14 * (float) this.direction;
|
|
Vector2 fairyCircleOffset = this.GetFairyCircleOffset(num12 / 50f, circleRotation, circleHeight);
|
|
this.velocity = this.GetFairyCircleOffset((float) ((double) num12 / 50.0 + 0.0199999995529652), circleRotation, circleHeight) - fairyCircleOffset;
|
|
this.spriteDirection = (double) Main.player[this.target].Center.X <= (double) this.Center.X ? 1 : -1;
|
|
}
|
|
++this.ai[3];
|
|
if (Main.netMode != 1 && (double) this.ai[3] > 200.0)
|
|
{
|
|
this.active = false;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
NPC.FairyEffects(this.Center, this.type - 583);
|
|
break;
|
|
case 2:
|
|
this.netSkip = -1;
|
|
this.life = 0;
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
NetMessage.SendData(112, number: 2, number2: ((float) (int) this.Center.X), number3: ((float) (int) this.Center.Y), number4: ((float) (this.type - 583)));
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
break;
|
|
break;
|
|
case 6:
|
|
this.noTileCollide = true;
|
|
Vector2 vector2_7 = Main.player[this.target].Center - this.Center;
|
|
if ((double) vector2_7.Length() > 100.0)
|
|
{
|
|
this.ai[2] = 2f;
|
|
this.TargetClosest();
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
if (!Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.noTileCollide = false;
|
|
if (this.collideX)
|
|
this.velocity.X *= -1f;
|
|
if (this.collideY)
|
|
this.velocity.Y *= -1f;
|
|
}
|
|
if ((double) vector2_7.Length() > 20.0)
|
|
{
|
|
this.velocity = this.velocity + new Vector2((double) vector2_7.X > 0.0 ? 1f : -1f, (double) vector2_7.Y > 0.0 ? 1f : -1f) * 0.04f;
|
|
if ((double) Math.Abs(this.velocity.Y) > 2.0)
|
|
this.velocity.Y *= 0.95f;
|
|
}
|
|
Point treasureCoords1;
|
|
if (Main.netMode != 1 && this.GetFairyTreasureCoords(out treasureCoords1))
|
|
{
|
|
this.ai[0] = (float) treasureCoords1.X;
|
|
this.ai[1] = (float) treasureCoords1.Y;
|
|
this.ai[2] = 3f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
this.noTileCollide = true;
|
|
this.velocity.X += 0.05f * (float) this.direction;
|
|
this.velocity.X = MathHelper.Clamp(this.velocity.X, -10f, 10f);
|
|
this.velocity.Y -= 0.025f;
|
|
this.velocity.Y = MathHelper.Clamp(this.velocity.Y, -5f, 5f);
|
|
this.EncourageDespawn(10);
|
|
break;
|
|
}
|
|
this.dontTakeDamage = this.dontTakeDamageFromHostiles = (double) this.ai[2] > 1.0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].aiStyle == 112 && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width * 1.5)
|
|
{
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= 0.05f;
|
|
else
|
|
this.velocity.Y += 0.05f;
|
|
}
|
|
}
|
|
if (!flag1)
|
|
{
|
|
this.direction = (double) this.velocity.X >= 0.0 ? 1 : -1;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
Color color1 = Color.HotPink;
|
|
Color color2 = Color.LightPink;
|
|
int num15 = 4;
|
|
if (this.type == 584)
|
|
{
|
|
color1 = Color.LimeGreen;
|
|
color2 = Color.LightSeaGreen;
|
|
}
|
|
if (this.type == 585)
|
|
{
|
|
color1 = Color.RoyalBlue;
|
|
color2 = Color.LightBlue;
|
|
}
|
|
if ((int) Main.timeForVisualEffects % 2 == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Dust dust = Dust.NewDustDirect(this.Center - new Vector2((float) num15) * 0.5f, num15 + 4, num15 + 4, 278, Alpha: 200, newColor: Color.Lerp(color1, color2, Main.rand.NextFloat()), Scale: 0.65f);
|
|
dust.velocity *= 0.0f;
|
|
dust.velocity += this.velocity * 0.3f;
|
|
dust.noGravity = true;
|
|
dust.noLight = true;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
Lighting.AddLight(this.Center, color1.ToVector3() * 0.7f);
|
|
}
|
|
|
|
public static void FairyEffects(Vector2 Position, int type)
|
|
{
|
|
Color color1 = Color.HotPink;
|
|
Color color2 = Color.LightPink;
|
|
int num = 4;
|
|
if (type == 1)
|
|
{
|
|
color1 = Color.LimeGreen;
|
|
color2 = Color.LightSeaGreen;
|
|
}
|
|
if (type == 2)
|
|
{
|
|
color1 = Color.RoyalBlue;
|
|
color2 = Color.LightBlue;
|
|
}
|
|
for (int index = 0; index < 40; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(Position - new Vector2((float) num) * 0.5f, num + 4, num + 4, 278, Alpha: 200, newColor: Color.Lerp(color1, color2, Main.rand.NextFloat()), Scale: 0.65f);
|
|
dust.velocity *= 1.5f;
|
|
if (index >= 30)
|
|
dust.velocity *= 3.5f;
|
|
else if (index >= 20)
|
|
dust.velocity *= 2f;
|
|
dust.fadeIn = (float) Main.rand.Next(0, 17) * 0.1f;
|
|
dust.noGravity = true;
|
|
}
|
|
SoundEngine.PlaySound(SoundID.Item4, (int) Position.X, (int) Position.Y);
|
|
}
|
|
|
|
private void GetBirdFlightRecommendation(
|
|
int downScanRange,
|
|
int upRange,
|
|
Point tCoords,
|
|
out bool goDownwards,
|
|
out bool goUpwards)
|
|
{
|
|
tCoords.X += this.direction;
|
|
goDownwards = true;
|
|
goUpwards = false;
|
|
int x = tCoords.X;
|
|
for (int y = tCoords.Y; y < tCoords.Y + downScanRange && WorldGen.InWorld(x, y); ++y)
|
|
{
|
|
Tile tile = Main.tile[x, y];
|
|
if (tile == null)
|
|
break;
|
|
if (tile.nactive() && Main.tileSolid[(int) tile.type] || tile.liquid > (byte) 0)
|
|
{
|
|
if (y < tCoords.Y + upRange)
|
|
goUpwards = true;
|
|
goDownwards = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private Vector2 GetFairyCircleOffset(
|
|
float elapsedTime,
|
|
float circleRotation,
|
|
float circleHeight)
|
|
{
|
|
return ((((float) (6.28318548202515 * (double) elapsedTime + 1.57079637050629)).ToRotationVector2() + new Vector2(0.0f, -1f)) * new Vector2((float) (6 * -this.direction), circleHeight)).RotatedBy((double) circleRotation);
|
|
}
|
|
|
|
private bool GetFairyTreasureCoords(out Point treasureCoords)
|
|
{
|
|
treasureCoords = new Point();
|
|
Point tileCoordinates = this.Center.ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(tileCoordinates.X, tileCoordinates.Y, 1, 1);
|
|
rectangle1.Inflate(75, 50);
|
|
int blackEdgeWidth = Main.Map.BlackEdgeWidth;
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle(0, 0, Main.maxTilesX, Main.maxTilesY);
|
|
rectangle2.Inflate(-blackEdgeWidth, -blackEdgeWidth);
|
|
Microsoft.Xna.Framework.Rectangle rectangle3 = Microsoft.Xna.Framework.Rectangle.Intersect(rectangle1, rectangle2);
|
|
int num1 = -1;
|
|
float num2 = -1f;
|
|
for (int left = rectangle3.Left; left <= rectangle3.Right; ++left)
|
|
{
|
|
for (int top = rectangle3.Top; top <= rectangle3.Bottom; ++top)
|
|
{
|
|
Tile t = Main.tile[left, top];
|
|
if (t != null && t.active() && TileID.Sets.FriendlyFairyCanLureTo[(int) t.type] && SceneMetrics.IsValidForOreFinder(t))
|
|
{
|
|
short num3 = Main.tileOreFinderPriority[(int) t.type];
|
|
if (TileID.Sets.Ore[(int) t.type])
|
|
{
|
|
int num4 = 3;
|
|
int num5 = 3;
|
|
int num6 = 40;
|
|
int num7 = 0;
|
|
for (int index1 = left - num4; index1 <= left + num4; ++index1)
|
|
{
|
|
for (int index2 = top - num5; index2 <= top + num5; ++index2)
|
|
{
|
|
if (Main.tile[index1, index2].active() && (int) Main.tile[index1, index2].type == (int) t.type)
|
|
++num7;
|
|
}
|
|
}
|
|
if (num7 < num6)
|
|
num3 = (short) -1;
|
|
}
|
|
if (num1 <= (int) num3)
|
|
{
|
|
float num8 = this.Distance(new Vector2((float) (left * 16 + 8), (float) (top * 16 + 8)));
|
|
if (num1 != (int) num3 || (double) num8 < (double) num2)
|
|
{
|
|
num1 = (int) num3;
|
|
num2 = num8;
|
|
treasureCoords.X = left;
|
|
treasureCoords.Y = top;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return num1 != -1;
|
|
}
|
|
|
|
private void AI_069_DukeFishron()
|
|
{
|
|
bool expertMode = Main.expertMode;
|
|
float num1 = expertMode ? 1.2f : 1f;
|
|
bool flag1 = (double) this.life <= (double) this.lifeMax * 0.5;
|
|
bool flag2 = expertMode && (double) this.life <= (double) this.lifeMax * 0.15;
|
|
bool flag3 = (double) this.ai[0] > 4.0;
|
|
bool flag4 = (double) this.ai[0] > 9.0;
|
|
bool flag5 = (double) this.ai[3] < 10.0;
|
|
if (flag4)
|
|
{
|
|
this.damage = (int) ((double) this.defDamage * 1.10000002384186 * (double) num1);
|
|
this.defense = 0;
|
|
}
|
|
else if (flag3)
|
|
{
|
|
this.damage = (int) ((double) this.defDamage * 1.20000004768372 * (double) num1);
|
|
this.defense = (int) ((double) this.defDefense * 0.800000011920929);
|
|
}
|
|
else
|
|
{
|
|
this.damage = this.defDamage;
|
|
this.defense = this.defDefense;
|
|
}
|
|
int num2 = expertMode ? 40 : 60;
|
|
float moveSpeed = expertMode ? 0.55f : 0.45f;
|
|
float num3 = expertMode ? 8.5f : 7.5f;
|
|
if (flag4)
|
|
{
|
|
moveSpeed = 0.7f;
|
|
num3 = 12f;
|
|
num2 = 30;
|
|
}
|
|
else if (flag3 & flag5)
|
|
{
|
|
moveSpeed = expertMode ? 0.6f : 0.5f;
|
|
num3 = expertMode ? 10f : 8f;
|
|
num2 = expertMode ? 40 : 20;
|
|
}
|
|
else if (flag5 && !flag3 && !flag4)
|
|
num2 = 30;
|
|
int num4 = expertMode ? 28 : 30;
|
|
float num5 = expertMode ? 17f : 16f;
|
|
if (flag4)
|
|
{
|
|
num4 = 25;
|
|
num5 = 27f;
|
|
}
|
|
else if (flag5 & flag3)
|
|
{
|
|
num4 = expertMode ? 27 : 30;
|
|
if (expertMode)
|
|
num5 = 21f;
|
|
}
|
|
int num6 = 80;
|
|
int num7 = 4;
|
|
float num8 = 0.3f;
|
|
float num9 = 5f;
|
|
int num10 = 90;
|
|
int num11 = 180;
|
|
int num12 = 180;
|
|
int num13 = 30;
|
|
int num14 = 120;
|
|
int num15 = 4;
|
|
float num16 = 6f;
|
|
float num17 = 20f;
|
|
float num18 = 6.283185f / (float) (num14 / 2);
|
|
int num19 = 75;
|
|
Vector2 center = this.Center;
|
|
Player player = Main.player[this.target];
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || player.dead || !player.active || (double) Vector2.Distance(player.Center, center) > 5600.0)
|
|
{
|
|
this.TargetClosest();
|
|
player = Main.player[this.target];
|
|
this.netUpdate = true;
|
|
}
|
|
if (player.dead || (double) Vector2.Distance(player.Center, center) > 5600.0)
|
|
{
|
|
this.velocity.Y -= 0.4f;
|
|
this.EncourageDespawn(10);
|
|
this.ai[0] = (double) this.ai[0] <= 4.0 ? 0.0f : 5f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
if (((double) player.position.Y < 800.0 || (double) player.position.Y > Main.worldSurface * 16.0 ? 1 : ((double) player.position.X <= 6400.0 ? 0 : ((double) player.position.X < (double) (Main.maxTilesX * 16 - 6400) ? 1 : 0))) != 0)
|
|
{
|
|
num2 = 20;
|
|
this.damage = this.defDamage * 2;
|
|
this.defense = this.defDefense * 2;
|
|
this.ai[3] = 0.0f;
|
|
num5 += 6f;
|
|
}
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.rotation = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.ai[0] = -1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
float num20 = (float) Math.Atan2((double) player.Center.Y - (double) center.Y, (double) player.Center.X - (double) center.X);
|
|
if (this.spriteDirection == 1)
|
|
num20 += 3.141593f;
|
|
if ((double) num20 < 0.0)
|
|
num20 += 6.283185f;
|
|
if ((double) num20 > 6.28318548202515)
|
|
num20 -= 6.283185f;
|
|
if ((double) this.ai[0] == -1.0)
|
|
num20 = 0.0f;
|
|
if ((double) this.ai[0] == 3.0)
|
|
num20 = 0.0f;
|
|
if ((double) this.ai[0] == 4.0)
|
|
num20 = 0.0f;
|
|
if ((double) this.ai[0] == 8.0)
|
|
num20 = 0.0f;
|
|
float num21 = 0.04f;
|
|
if ((double) this.ai[0] == 1.0 || (double) this.ai[0] == 6.0)
|
|
num21 = 0.0f;
|
|
if ((double) this.ai[0] == 7.0)
|
|
num21 = 0.0f;
|
|
if ((double) this.ai[0] == 3.0)
|
|
num21 = 0.01f;
|
|
if ((double) this.ai[0] == 4.0)
|
|
num21 = 0.01f;
|
|
if ((double) this.ai[0] == 8.0)
|
|
num21 = 0.01f;
|
|
if ((double) this.rotation < (double) num20)
|
|
{
|
|
if ((double) num20 - (double) this.rotation > Math.PI)
|
|
this.rotation -= num21;
|
|
else
|
|
this.rotation += num21;
|
|
}
|
|
if ((double) this.rotation > (double) num20)
|
|
{
|
|
if ((double) this.rotation - (double) num20 > Math.PI)
|
|
this.rotation += num21;
|
|
else
|
|
this.rotation -= num21;
|
|
}
|
|
if ((double) this.rotation > (double) num20 - (double) num21 && (double) this.rotation < (double) num20 + (double) num21)
|
|
this.rotation = num20;
|
|
if ((double) this.rotation < 0.0)
|
|
this.rotation += 6.283185f;
|
|
if ((double) this.rotation > 6.28318548202515)
|
|
this.rotation -= 6.283185f;
|
|
if ((double) this.rotation > (double) num20 - (double) num21 && (double) this.rotation < (double) num20 + (double) num21)
|
|
this.rotation = num20;
|
|
if ((double) this.ai[0] != -1.0 && (double) this.ai[0] < 9.0)
|
|
{
|
|
if (Collision.SolidCollision(this.position, this.width, this.height))
|
|
this.alpha += 15;
|
|
else
|
|
this.alpha -= 15;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
if (this.alpha > 150)
|
|
this.alpha = 150;
|
|
}
|
|
if ((double) this.ai[0] == -1.0)
|
|
{
|
|
this.velocity = this.velocity * 0.98f;
|
|
int num22 = Math.Sign(player.Center.X - center.X);
|
|
if (num22 != 0)
|
|
{
|
|
this.direction = num22;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
if ((double) this.ai[2] > 20.0)
|
|
{
|
|
this.velocity.Y = -2f;
|
|
this.alpha -= 5;
|
|
if (Collision.SolidCollision(this.position, this.width, this.height))
|
|
this.alpha += 15;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
if (this.alpha > 150)
|
|
this.alpha = 150;
|
|
}
|
|
if ((double) this.ai[2] == (double) (num10 - 30))
|
|
{
|
|
int num23 = 36;
|
|
for (int index1 = 0; index1 < num23; ++index1)
|
|
{
|
|
Vector2 vector2_1 = (Vector2.Normalize(this.velocity) * new Vector2((float) this.width / 2f, (float) this.height) * 0.75f * 0.5f).RotatedBy((double) (index1 - (num23 / 2 - 1)) * 6.28318548202515 / (double) num23) + this.Center;
|
|
Vector2 vector2_2 = vector2_1 - this.Center;
|
|
int index2 = Dust.NewDust(vector2_1 + vector2_2, 0, 0, 172, vector2_2.X * 2f, vector2_2.Y * 2f, 100, Scale: 1.4f);
|
|
Main.dust[index2].noGravity = true;
|
|
Main.dust[index2].noLight = true;
|
|
Main.dust[index2].velocity = Vector2.Normalize(vector2_2) * 3f;
|
|
}
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num19)
|
|
return;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 0.0 && !player.dead)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X));
|
|
Vector2 vector2 = Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num3;
|
|
if ((double) this.velocity.X < (double) vector2.X)
|
|
{
|
|
this.velocity.X += moveSpeed;
|
|
if ((double) this.velocity.X < 0.0 && (double) vector2.X > 0.0)
|
|
this.velocity.X += moveSpeed;
|
|
}
|
|
else if ((double) this.velocity.X > (double) vector2.X)
|
|
{
|
|
this.velocity.X -= moveSpeed;
|
|
if ((double) this.velocity.X > 0.0 && (double) vector2.X < 0.0)
|
|
this.velocity.X -= moveSpeed;
|
|
}
|
|
if ((double) this.velocity.Y < (double) vector2.Y)
|
|
{
|
|
this.velocity.Y += moveSpeed;
|
|
if ((double) this.velocity.Y < 0.0 && (double) vector2.Y > 0.0)
|
|
this.velocity.Y += moveSpeed;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) vector2.Y)
|
|
{
|
|
this.velocity.Y -= moveSpeed;
|
|
if ((double) this.velocity.Y > 0.0 && (double) vector2.Y < 0.0)
|
|
this.velocity.Y -= moveSpeed;
|
|
}
|
|
int num24 = Math.Sign(player.Center.X - center.X);
|
|
if (num24 != 0)
|
|
{
|
|
if ((double) this.ai[2] == 0.0 && num24 != this.direction)
|
|
this.rotation += 3.141593f;
|
|
this.direction = num24;
|
|
if (this.spriteDirection != -this.direction)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num2)
|
|
return;
|
|
int num25 = 0;
|
|
switch ((int) this.ai[3])
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
num25 = 1;
|
|
break;
|
|
case 10:
|
|
this.ai[3] = 1f;
|
|
num25 = 2;
|
|
break;
|
|
case 11:
|
|
this.ai[3] = 0.0f;
|
|
num25 = 3;
|
|
break;
|
|
}
|
|
if (flag1)
|
|
num25 = 4;
|
|
switch (num25)
|
|
{
|
|
case 1:
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.velocity = Vector2.Normalize(player.Center - center) * num5;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
if (num24 != 0)
|
|
{
|
|
this.direction = num24;
|
|
if (this.spriteDirection == 1)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
case 3:
|
|
this.ai[0] = 3f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
case 4:
|
|
this.ai[0] = 4f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
int num26 = 7;
|
|
for (int index3 = 0; index3 < num26; ++index3)
|
|
{
|
|
Vector2 vector2_3 = (Vector2.Normalize(this.velocity) * new Vector2((float) (this.width + 50) / 2f, (float) this.height) * 0.75f).RotatedBy((double) (index3 - (num26 / 2 - 1)) * Math.PI / (double) num26) + center;
|
|
Vector2 vector2_4 = ((float) (Main.rand.NextDouble() * 3.14159274101257) - 1.570796f).ToRotationVector2() * (float) Main.rand.Next(3, 8);
|
|
Vector2 vector2_5 = vector2_4;
|
|
int index4 = Dust.NewDust(vector2_3 + vector2_5, 0, 0, 172, vector2_4.X * 2f, vector2_4.Y * 2f, 100, Scale: 1.4f);
|
|
Main.dust[index4].noGravity = true;
|
|
Main.dust[index4].noLight = true;
|
|
Main.dust[index4].velocity /= 4f;
|
|
Main.dust[index4].velocity -= this.velocity;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num4)
|
|
return;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] += 2f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 2.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X));
|
|
Vector2 vector2_6 = Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num9;
|
|
if ((double) this.velocity.X < (double) vector2_6.X)
|
|
{
|
|
this.velocity.X += num8;
|
|
if ((double) this.velocity.X < 0.0 && (double) vector2_6.X > 0.0)
|
|
this.velocity.X += num8;
|
|
}
|
|
else if ((double) this.velocity.X > (double) vector2_6.X)
|
|
{
|
|
this.velocity.X -= num8;
|
|
if ((double) this.velocity.X > 0.0 && (double) vector2_6.X < 0.0)
|
|
this.velocity.X -= num8;
|
|
}
|
|
if ((double) this.velocity.Y < (double) vector2_6.Y)
|
|
{
|
|
this.velocity.Y += num8;
|
|
if ((double) this.velocity.Y < 0.0 && (double) vector2_6.Y > 0.0)
|
|
this.velocity.Y += num8;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) vector2_6.Y)
|
|
{
|
|
this.velocity.Y -= num8;
|
|
if ((double) this.velocity.Y > 0.0 && (double) vector2_6.Y < 0.0)
|
|
this.velocity.Y -= num8;
|
|
}
|
|
if ((double) this.ai[2] == 0.0)
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
if ((double) this.ai[2] % (double) num7 == 0.0)
|
|
{
|
|
SoundEngine.PlaySound(4, (int) this.Center.X, (int) this.Center.Y, 19);
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vector2_7 = Vector2.Normalize(player.Center - center) * (float) (this.width + 20) / 2f + center;
|
|
NPC.NewNPC((int) vector2_7.X, (int) vector2_7.Y + 45, 371);
|
|
}
|
|
}
|
|
int num27 = Math.Sign(player.Center.X - center.X);
|
|
if (num27 != 0)
|
|
{
|
|
this.direction = num27;
|
|
if (this.spriteDirection != -this.direction)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num6)
|
|
return;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 3.0)
|
|
{
|
|
this.velocity = this.velocity * 0.98f;
|
|
this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f);
|
|
if ((double) this.ai[2] == (double) (num10 - 30))
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 9);
|
|
if (Main.netMode != 1 && (double) this.ai[2] == (double) (num10 - 30))
|
|
{
|
|
Vector2 vector2 = this.rotation.ToRotationVector2() * (Vector2.UnitX * (float) this.direction) * (float) (this.width + 20) / 2f + center;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, (float) (this.direction * 2), 8f, 385, 0, 0.0f, Main.myPlayer);
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, (float) (-this.direction * 2), 8f, 385, 0, 0.0f, Main.myPlayer);
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num10)
|
|
return;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 4.0)
|
|
{
|
|
this.velocity = this.velocity * 0.98f;
|
|
this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f);
|
|
if ((double) this.ai[2] == (double) (num11 - 60))
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num11)
|
|
return;
|
|
this.ai[0] = 5f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 5.0 && !player.dead)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X));
|
|
Vector2 vector2 = Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num3;
|
|
if ((double) this.velocity.X < (double) vector2.X)
|
|
{
|
|
this.velocity.X += moveSpeed;
|
|
if ((double) this.velocity.X < 0.0 && (double) vector2.X > 0.0)
|
|
this.velocity.X += moveSpeed;
|
|
}
|
|
else if ((double) this.velocity.X > (double) vector2.X)
|
|
{
|
|
this.velocity.X -= moveSpeed;
|
|
if ((double) this.velocity.X > 0.0 && (double) vector2.X < 0.0)
|
|
this.velocity.X -= moveSpeed;
|
|
}
|
|
if ((double) this.velocity.Y < (double) vector2.Y)
|
|
{
|
|
this.velocity.Y += moveSpeed;
|
|
if ((double) this.velocity.Y < 0.0 && (double) vector2.Y > 0.0)
|
|
this.velocity.Y += moveSpeed;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) vector2.Y)
|
|
{
|
|
this.velocity.Y -= moveSpeed;
|
|
if ((double) this.velocity.Y > 0.0 && (double) vector2.Y < 0.0)
|
|
this.velocity.Y -= moveSpeed;
|
|
}
|
|
int num28 = Math.Sign(player.Center.X - center.X);
|
|
if (num28 != 0)
|
|
{
|
|
if ((double) this.ai[2] == 0.0 && num28 != this.direction)
|
|
this.rotation += 3.141593f;
|
|
this.direction = num28;
|
|
if (this.spriteDirection != -this.direction)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num2)
|
|
return;
|
|
int num29 = 0;
|
|
switch ((int) this.ai[3])
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
num29 = 1;
|
|
break;
|
|
case 6:
|
|
this.ai[3] = 1f;
|
|
num29 = 2;
|
|
break;
|
|
case 7:
|
|
this.ai[3] = 0.0f;
|
|
num29 = 3;
|
|
break;
|
|
}
|
|
if (flag2)
|
|
num29 = 4;
|
|
switch (num29)
|
|
{
|
|
case 1:
|
|
this.ai[0] = 6f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.velocity = Vector2.Normalize(player.Center - center) * num5;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
if (num28 != 0)
|
|
{
|
|
this.direction = num28;
|
|
if (this.spriteDirection == 1)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
this.velocity = Vector2.Normalize(player.Center - center) * num17;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
if (num28 != 0)
|
|
{
|
|
this.direction = num28;
|
|
if (this.spriteDirection == 1)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
this.ai[0] = 7f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
case 3:
|
|
this.ai[0] = 8f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
case 4:
|
|
this.ai[0] = 9f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 6.0)
|
|
{
|
|
int num30 = 7;
|
|
for (int index5 = 0; index5 < num30; ++index5)
|
|
{
|
|
Vector2 vector2_8 = (Vector2.Normalize(this.velocity) * new Vector2((float) (this.width + 50) / 2f, (float) this.height) * 0.75f).RotatedBy((double) (index5 - (num30 / 2 - 1)) * Math.PI / (double) num30) + center;
|
|
Vector2 vector2_9 = ((float) (Main.rand.NextDouble() * 3.14159274101257) - 1.570796f).ToRotationVector2() * (float) Main.rand.Next(3, 8);
|
|
Vector2 vector2_10 = vector2_9;
|
|
int index6 = Dust.NewDust(vector2_8 + vector2_10, 0, 0, 172, vector2_9.X * 2f, vector2_9.Y * 2f, 100, Scale: 1.4f);
|
|
Main.dust[index6].noGravity = true;
|
|
Main.dust[index6].noLight = true;
|
|
Main.dust[index6].velocity /= 4f;
|
|
Main.dust[index6].velocity -= this.velocity;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num4)
|
|
return;
|
|
this.ai[0] = 5f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] += 2f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 7.0)
|
|
{
|
|
if ((double) this.ai[2] == 0.0)
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
if ((double) this.ai[2] % (double) num15 == 0.0)
|
|
{
|
|
SoundEngine.PlaySound(4, (int) this.Center.X, (int) this.Center.Y, 19);
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vector2 = Vector2.Normalize(this.velocity) * (float) (this.width + 20) / 2f + center;
|
|
int index = NPC.NewNPC((int) vector2.X, (int) vector2.Y + 45, 371);
|
|
Main.npc[index].target = this.target;
|
|
Main.npc[index].velocity = Vector2.Normalize(this.velocity).RotatedBy(1.57079637050629 * (double) this.direction) * num16;
|
|
Main.npc[index].netUpdate = true;
|
|
Main.npc[index].ai[3] = (float) Main.rand.Next(80, 121) / 100f;
|
|
}
|
|
}
|
|
this.velocity = this.velocity.RotatedBy(-(double) num18 * (double) this.direction);
|
|
this.rotation -= num18 * (float) this.direction;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num14)
|
|
return;
|
|
this.ai[0] = 5f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 8.0)
|
|
{
|
|
this.velocity = this.velocity * 0.98f;
|
|
this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f);
|
|
if ((double) this.ai[2] == (double) (num10 - 30))
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
if (Main.netMode != 1 && (double) this.ai[2] == (double) (num10 - 30))
|
|
Projectile.NewProjectile(center.X, center.Y, 0.0f, 0.0f, 385, 0, 0.0f, Main.myPlayer, 1f, (float) (this.target + 1));
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num10)
|
|
return;
|
|
this.ai[0] = 5f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 9.0)
|
|
{
|
|
if ((double) this.ai[2] < (double) (num12 - 90))
|
|
{
|
|
if (Collision.SolidCollision(this.position, this.width, this.height))
|
|
this.alpha += 15;
|
|
else
|
|
this.alpha -= 15;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
if (this.alpha > 150)
|
|
this.alpha = 150;
|
|
}
|
|
else if (this.alpha < (int) byte.MaxValue)
|
|
{
|
|
this.alpha += 4;
|
|
if (this.alpha > (int) byte.MaxValue)
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
this.velocity = this.velocity * 0.98f;
|
|
this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f);
|
|
if ((double) this.ai[2] == (double) (num12 - 60))
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num12)
|
|
return;
|
|
this.ai[0] = 10f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 10.0 && !player.dead)
|
|
{
|
|
this.dontTakeDamage = false;
|
|
this.chaseable = false;
|
|
if (this.alpha < (int) byte.MaxValue)
|
|
{
|
|
this.alpha += 25;
|
|
if (this.alpha > (int) byte.MaxValue)
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
if ((double) this.ai[1] == 0.0)
|
|
this.ai[1] = (float) (360 * Math.Sign((center - player.Center).X));
|
|
this.SimpleFlyMovement(Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num3, moveSpeed);
|
|
int num31 = Math.Sign(player.Center.X - center.X);
|
|
if (num31 != 0)
|
|
{
|
|
if ((double) this.ai[2] == 0.0 && num31 != this.direction)
|
|
{
|
|
this.rotation += 3.141593f;
|
|
for (int index = 0; index < this.oldPos.Length; ++index)
|
|
this.oldPos[index] = Vector2.Zero;
|
|
}
|
|
this.direction = num31;
|
|
if (this.spriteDirection != -this.direction)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num2)
|
|
return;
|
|
int num32 = 0;
|
|
switch ((int) this.ai[3])
|
|
{
|
|
case 0:
|
|
case 2:
|
|
case 3:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
num32 = 1;
|
|
break;
|
|
case 1:
|
|
case 4:
|
|
case 8:
|
|
num32 = 2;
|
|
break;
|
|
}
|
|
switch (num32)
|
|
{
|
|
case 1:
|
|
this.ai[0] = 11f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.velocity = Vector2.Normalize(player.Center - center) * num5;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X);
|
|
if (num31 != 0)
|
|
{
|
|
this.direction = num31;
|
|
if (this.spriteDirection == 1)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
this.ai[0] = 12f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
case 3:
|
|
this.ai[0] = 13f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
break;
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 11.0)
|
|
{
|
|
this.dontTakeDamage = false;
|
|
this.chaseable = true;
|
|
this.alpha -= 25;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
int num33 = 7;
|
|
for (int index7 = 0; index7 < num33; ++index7)
|
|
{
|
|
Vector2 vector2_11 = (Vector2.Normalize(this.velocity) * new Vector2((float) (this.width + 50) / 2f, (float) this.height) * 0.75f).RotatedBy((double) (index7 - (num33 / 2 - 1)) * Math.PI / (double) num33) + center;
|
|
Vector2 vector2_12 = ((float) (Main.rand.NextDouble() * 3.14159274101257) - 1.570796f).ToRotationVector2() * (float) Main.rand.Next(3, 8);
|
|
Vector2 vector2_13 = vector2_12;
|
|
int index8 = Dust.NewDust(vector2_11 + vector2_13, 0, 0, 172, vector2_12.X * 2f, vector2_12.Y * 2f, 100, Scale: 1.4f);
|
|
Main.dust[index8].noGravity = true;
|
|
Main.dust[index8].noLight = true;
|
|
Main.dust[index8].velocity /= 4f;
|
|
Main.dust[index8].velocity -= this.velocity;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num4)
|
|
return;
|
|
this.ai[0] = 10f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
++this.ai[3];
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[0] == 12.0)
|
|
{
|
|
this.dontTakeDamage = true;
|
|
this.chaseable = false;
|
|
if (this.alpha < (int) byte.MaxValue)
|
|
{
|
|
this.alpha += 17;
|
|
if (this.alpha > (int) byte.MaxValue)
|
|
this.alpha = (int) byte.MaxValue;
|
|
}
|
|
this.velocity = this.velocity * 0.98f;
|
|
this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f);
|
|
if ((double) this.ai[2] == (double) (num13 / 2))
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
if (Main.netMode != 1 && (double) this.ai[2] == (double) (num13 / 2))
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X));
|
|
Vector2 vector2 = this.Center = player.Center + new Vector2(-this.ai[1], -200f);
|
|
int num34 = Math.Sign(player.Center.X - vector2.X);
|
|
if (num34 != 0)
|
|
{
|
|
if ((double) this.ai[2] == 0.0 && num34 != this.direction)
|
|
{
|
|
this.rotation += 3.141593f;
|
|
for (int index = 0; index < this.oldPos.Length; ++index)
|
|
this.oldPos[index] = Vector2.Zero;
|
|
}
|
|
this.direction = num34;
|
|
if (this.spriteDirection != -this.direction)
|
|
this.rotation += 3.141593f;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num13)
|
|
return;
|
|
this.ai[0] = 10f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] >= 9.0)
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] != 13.0)
|
|
return;
|
|
if ((double) this.ai[2] == 0.0)
|
|
SoundEngine.PlaySound(29, (int) center.X, (int) center.Y, 20);
|
|
this.velocity = this.velocity.RotatedBy(-(double) num18 * (double) this.direction);
|
|
this.rotation -= num18 * (float) this.direction;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] < (double) num14)
|
|
return;
|
|
this.ai[0] = 10f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
++this.ai[3];
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
|
|
private void AI_037_Destroyer()
|
|
{
|
|
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 && this.type <= 136)
|
|
{
|
|
double num = (double) this.velocity.Length();
|
|
if (this.type == 134 || this.type != 134 && Main.npc[(int) this.ai[1]].alpha < 128)
|
|
{
|
|
if (this.alpha != 0)
|
|
{
|
|
for (int index1 = 0; index1 < 2; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 182, Alpha: 100, Scale: 2f);
|
|
Main.dust[index2].noGravity = true;
|
|
Main.dust[index2].noLight = true;
|
|
}
|
|
}
|
|
this.alpha -= 42;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
}
|
|
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 index3 = this.whoAmI;
|
|
int num = 80;
|
|
if (Main.getGoodWorld)
|
|
num *= 2;
|
|
for (int index4 = 0; index4 <= num; ++index4)
|
|
{
|
|
int Type = 135;
|
|
if (index4 == 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) index3;
|
|
Main.npc[index3].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index3 = 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))
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) (this.height / 2));
|
|
float num1 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X + (float) Main.rand.Next(-20, 21);
|
|
float num2 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y + (float) Main.rand.Next(-20, 21);
|
|
float num3 = (float) (8.0 / Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2));
|
|
float num4 = num1 * num3;
|
|
float num5 = num2 * num3;
|
|
float SpeedX = num4 + (float) Main.rand.Next(-20, 21) * 0.05f;
|
|
float SpeedY = num5 + (float) Main.rand.Next(-20, 21) * 0.05f;
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(22f, 18f);
|
|
int Type = 100;
|
|
vector2.X += SpeedX * 5f;
|
|
vector2.Y += SpeedY * 5f;
|
|
int index = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, damageForProjectiles, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int num6 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num7 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num8 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num9 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num6 < 0)
|
|
num6 = 0;
|
|
if (num7 > Main.maxTilesX)
|
|
num7 = Main.maxTilesX;
|
|
if (num8 < 0)
|
|
num8 = 0;
|
|
if (num9 > Main.maxTilesY)
|
|
num9 = Main.maxTilesY;
|
|
bool flag1 = false;
|
|
if (!flag1)
|
|
{
|
|
for (int index5 = num6; index5 < num7; ++index5)
|
|
{
|
|
for (int index6 = num8; index6 < num9; ++index6)
|
|
{
|
|
if (Main.tile[index5, index6] != null && (Main.tile[index5, index6].nactive() && (Main.tileSolid[(int) Main.tile[index5, index6].type] || Main.tileSolidTop[(int) Main.tile[index5, index6].type] && Main.tile[index5, index6].frameY == (short) 0) || Main.tile[index5, index6].liquid > (byte) 64))
|
|
{
|
|
Vector2 vector2;
|
|
vector2.X = (float) (index5 * 16);
|
|
vector2.Y = (float) (index6 * 16);
|
|
if ((double) this.position.X + (double) this.width > (double) vector2.X && (double) this.position.X < (double) vector2.X + 16.0 && (double) this.position.Y + (double) this.height > (double) vector2.Y && (double) this.position.Y < (double) vector2.Y + 16.0)
|
|
{
|
|
flag1 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!flag1)
|
|
{
|
|
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)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height);
|
|
int num10 = 1000;
|
|
bool flag2 = 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)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X - num10, (int) Main.player[index].position.Y - num10, num10 * 2, num10 * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
flag2 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag2)
|
|
flag1 = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
this.localAI[1] = 0.0f;
|
|
float num11 = 16f;
|
|
if (Main.dayTime || Main.player[this.target].dead)
|
|
{
|
|
flag1 = false;
|
|
++this.velocity.Y;
|
|
if ((double) this.position.Y > Main.worldSurface * 16.0)
|
|
{
|
|
++this.velocity.Y;
|
|
num11 = 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 num12 = 0.1f;
|
|
float num13 = 0.15f;
|
|
if (Main.getGoodWorld)
|
|
{
|
|
num12 *= 1.2f;
|
|
num13 *= 1.2f;
|
|
}
|
|
Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num14 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2);
|
|
float num15 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2);
|
|
float num16 = (float) ((int) ((double) num14 / 16.0) * 16);
|
|
float num17 = (float) ((int) ((double) num15 / 16.0) * 16);
|
|
vector2_1.X = (float) ((int) ((double) vector2_1.X / 16.0) * 16);
|
|
vector2_1.Y = (float) ((int) ((double) vector2_1.Y / 16.0) * 16);
|
|
float num18 = num16 - vector2_1.X;
|
|
float num19 = num17 - vector2_1.Y;
|
|
float num20 = (float) Math.Sqrt((double) num18 * (double) num18 + (double) num19 * (double) num19);
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
if ((double) this.ai[1] < (double) Main.npc.Length)
|
|
{
|
|
try
|
|
{
|
|
Vector2 vector2_2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
num18 = Main.npc[(int) this.ai[1]].position.X + (float) (Main.npc[(int) this.ai[1]].width / 2) - vector2_2.X;
|
|
num19 = Main.npc[(int) this.ai[1]].position.Y + (float) (Main.npc[(int) this.ai[1]].height / 2) - vector2_2.Y;
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) num19, (double) num18) + 1.57f;
|
|
float num21 = (float) Math.Sqrt((double) num18 * (double) num18 + (double) num19 * (double) num19);
|
|
int num22 = (int) (44.0 * (double) this.scale);
|
|
float num23 = (num21 - (float) num22) / num21;
|
|
float num24 = num18 * num23;
|
|
float num25 = num19 * num23;
|
|
this.velocity = Vector2.Zero;
|
|
this.position.X += num24;
|
|
this.position.Y += num25;
|
|
return;
|
|
}
|
|
}
|
|
if (!flag1)
|
|
{
|
|
this.TargetClosest();
|
|
this.velocity.Y += 0.15f;
|
|
if ((double) this.velocity.Y > (double) num11)
|
|
this.velocity.Y = num11;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num11 * 0.4)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= num12 * 1.1f;
|
|
else
|
|
this.velocity.X += num12 * 1.1f;
|
|
}
|
|
else if ((double) this.velocity.Y == (double) num11)
|
|
{
|
|
if ((double) this.velocity.X < (double) num18)
|
|
this.velocity.X += num12;
|
|
else if ((double) this.velocity.X > (double) num18)
|
|
this.velocity.X -= num12;
|
|
}
|
|
else if ((double) this.velocity.Y > 4.0)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += num12 * 0.9f;
|
|
else
|
|
this.velocity.X -= num12 * 0.9f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.soundDelay == 0)
|
|
{
|
|
float num26 = num20 / 40f;
|
|
if ((double) num26 < 10.0)
|
|
num26 = 10f;
|
|
if ((double) num26 > 20.0)
|
|
num26 = 20f;
|
|
this.soundDelay = (int) num26;
|
|
SoundEngine.PlaySound(15, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
float num27 = (float) Math.Sqrt((double) num18 * (double) num18 + (double) num19 * (double) num19);
|
|
float num28 = Math.Abs(num18);
|
|
float num29 = Math.Abs(num19);
|
|
float num30 = num11 / num27;
|
|
float num31 = num18 * num30;
|
|
float num32 = num19 * num30;
|
|
if (((double) this.velocity.X > 0.0 && (double) num31 > 0.0 || (double) this.velocity.X < 0.0 && (double) num31 < 0.0) && ((double) this.velocity.Y > 0.0 && (double) num32 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num32 < 0.0))
|
|
{
|
|
if ((double) this.velocity.X < (double) num31)
|
|
this.velocity.X += num13;
|
|
else if ((double) this.velocity.X > (double) num31)
|
|
this.velocity.X -= num13;
|
|
if ((double) this.velocity.Y < (double) num32)
|
|
this.velocity.Y += num13;
|
|
else if ((double) this.velocity.Y > (double) num32)
|
|
this.velocity.Y -= num13;
|
|
}
|
|
if ((double) this.velocity.X > 0.0 && (double) num31 > 0.0 || (double) this.velocity.X < 0.0 && (double) num31 < 0.0 || (double) this.velocity.Y > 0.0 && (double) num32 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num32 < 0.0)
|
|
{
|
|
if ((double) this.velocity.X < (double) num31)
|
|
this.velocity.X += num12;
|
|
else if ((double) this.velocity.X > (double) num31)
|
|
this.velocity.X -= num12;
|
|
if ((double) this.velocity.Y < (double) num32)
|
|
this.velocity.Y += num12;
|
|
else if ((double) this.velocity.Y > (double) num32)
|
|
this.velocity.Y -= num12;
|
|
if ((double) Math.Abs(num32) < (double) num11 * 0.2 && ((double) this.velocity.X > 0.0 && (double) num31 < 0.0 || (double) this.velocity.X < 0.0 && (double) num31 > 0.0))
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num12 * 2f;
|
|
else
|
|
this.velocity.Y -= num12 * 2f;
|
|
}
|
|
if ((double) Math.Abs(num31) < (double) num11 * 0.2 && ((double) this.velocity.Y > 0.0 && (double) num32 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num32 > 0.0))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num12 * 2f;
|
|
else
|
|
this.velocity.X -= num12 * 2f;
|
|
}
|
|
}
|
|
else if ((double) num28 > (double) num29)
|
|
{
|
|
if ((double) this.velocity.X < (double) num31)
|
|
this.velocity.X += num12 * 1.1f;
|
|
else if ((double) this.velocity.X > (double) num31)
|
|
this.velocity.X -= num12 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num11 * 0.5)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num12;
|
|
else
|
|
this.velocity.Y -= num12;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y < (double) num32)
|
|
this.velocity.Y += num12 * 1.1f;
|
|
else if ((double) this.velocity.Y > (double) num32)
|
|
this.velocity.Y -= num12 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num11 * 0.5)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num12;
|
|
else
|
|
this.velocity.X -= num12;
|
|
}
|
|
}
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
if (this.type != 134)
|
|
return;
|
|
if (flag1)
|
|
{
|
|
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;
|
|
}
|
|
|
|
private void AI_005_EaterOfSouls()
|
|
{
|
|
if (this.type == 210 || this.type == 211)
|
|
NPCUtils.TargetClosestNonBees(this);
|
|
else if (this.target < 0 || this.target <= (int) byte.MaxValue || Main.player[this.target].dead)
|
|
this.TargetClosest();
|
|
if (this.type == 619)
|
|
{
|
|
if (Main.dayTime)
|
|
{
|
|
this.velocity.Y -= 0.3f;
|
|
this.EncourageDespawn(60);
|
|
}
|
|
this.position = this.position + this.netOffset;
|
|
if (this.alpha == (int) byte.MaxValue)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.velocity.Y = -6f;
|
|
for (int index = 0; index < 35; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 5);
|
|
dust.velocity *= 1f;
|
|
dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.fadeIn = (float) (1.5 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.velocity += this.velocity * 0.5f;
|
|
}
|
|
}
|
|
this.alpha -= 15;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
if (this.alpha != 0)
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 5);
|
|
dust.velocity *= 1f;
|
|
dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.fadeIn = (float) (1.5 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.velocity += this.velocity * 0.3f;
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
bool flag1 = false;
|
|
if (targetData.Type == NPCTargetType.Player)
|
|
flag1 = Main.player[this.target].dead;
|
|
float num1 = 6f;
|
|
float num2 = 0.05f;
|
|
if (this.type == 6 || this.type == 173)
|
|
{
|
|
num1 = 4f;
|
|
num2 = 0.02f;
|
|
if (this.type == 6 && Main.expertMode)
|
|
num2 = 0.035f;
|
|
}
|
|
else if (this.type == 94)
|
|
{
|
|
num1 = 4.2f;
|
|
num2 = 0.022f;
|
|
}
|
|
else if (this.type == 619)
|
|
{
|
|
num1 = 6f;
|
|
num2 = 0.1f;
|
|
}
|
|
else if (this.type == 252)
|
|
{
|
|
if (targetData.Type != NPCTargetType.None && Collision.CanHit((Entity) this, targetData))
|
|
{
|
|
num1 = 6f;
|
|
num2 = 0.1f;
|
|
}
|
|
else
|
|
{
|
|
num2 = 0.01f;
|
|
num1 = 2f;
|
|
}
|
|
}
|
|
else if (this.type == 42 || this.type >= 231 && this.type <= 235)
|
|
{
|
|
float num3 = 3.5f;
|
|
float num4 = 0.021f;
|
|
if (this.type == 231)
|
|
{
|
|
num3 = 3f;
|
|
num4 = 0.017f;
|
|
}
|
|
num1 = num3 * (1f - this.scale);
|
|
num2 = num4 * (1f - this.scale);
|
|
if ((double) this.position.Y / 16.0 < Main.worldSurface)
|
|
{
|
|
if ((double) Main.player[this.target].position.Y - (double) this.position.Y > 300.0 && (double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.97f;
|
|
if ((double) Main.player[this.target].position.Y - (double) this.position.Y < 80.0 && (double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.97f;
|
|
}
|
|
}
|
|
else if (this.type == 205)
|
|
{
|
|
num1 = 3.25f;
|
|
num2 = 0.018f;
|
|
}
|
|
else if (this.type == 176)
|
|
{
|
|
num1 = 4f;
|
|
num2 = 0.017f;
|
|
}
|
|
else if (this.type == 23)
|
|
{
|
|
num1 = 1f;
|
|
num2 = 0.03f;
|
|
}
|
|
else if (this.type == 5)
|
|
{
|
|
num1 = 5f;
|
|
num2 = 0.03f;
|
|
}
|
|
else if (this.type == 210 || this.type == 211)
|
|
{
|
|
++this.ai[1];
|
|
float num5 = (float) (((double) this.ai[1] - 60.0) / 60.0);
|
|
if ((double) num5 > 1.0)
|
|
{
|
|
num5 = 1f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X = 6f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X = -6f;
|
|
if ((double) this.velocity.Y > 6.0)
|
|
this.velocity.Y = 6f;
|
|
if ((double) this.velocity.Y < -6.0)
|
|
this.velocity.Y = -6f;
|
|
}
|
|
num1 = 5f;
|
|
num2 = 0.1f * num5;
|
|
}
|
|
Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num6 = targetData.Position.X + (float) (targetData.Width / 2);
|
|
float num7 = targetData.Position.Y + (float) (targetData.Height / 2);
|
|
float num8 = (float) ((int) ((double) num6 / 8.0) * 8);
|
|
float num9 = (float) ((int) ((double) num7 / 8.0) * 8);
|
|
vector2_1.X = (float) ((int) ((double) vector2_1.X / 8.0) * 8);
|
|
vector2_1.Y = (float) ((int) ((double) vector2_1.Y / 8.0) * 8);
|
|
float num10 = num8 - vector2_1.X;
|
|
float num11 = num9 - vector2_1.Y;
|
|
float num12 = (float) Math.Sqrt((double) num10 * (double) num10 + (double) num11 * (double) num11);
|
|
float num13 = num12;
|
|
bool flag2 = false;
|
|
if ((double) num12 > 600.0)
|
|
flag2 = true;
|
|
float SpeedX1;
|
|
float SpeedY1;
|
|
if ((double) num12 == 0.0)
|
|
{
|
|
SpeedX1 = this.velocity.X;
|
|
SpeedY1 = this.velocity.Y;
|
|
}
|
|
else
|
|
{
|
|
float num14 = num1 / num12;
|
|
SpeedX1 = num10 * num14;
|
|
SpeedY1 = num11 * num14;
|
|
}
|
|
int num15 = this.type == 6 || this.type == 139 || this.type == 173 ? 1 : (this.type == 205 ? 1 : 0);
|
|
bool flag3 = this.type == 42 || this.type == 94 || this.type == 619 || this.type == 176 || this.type == 210 || this.type == 211 || this.type >= 231 && this.type <= 235;
|
|
bool flag4 = this.type != 173 && this.type != 6 && this.type != 42 && (this.type < 231 || this.type > 235) && this.type != 94 && this.type != 139 && this.type != 619;
|
|
int num16 = flag3 ? 1 : 0;
|
|
if ((num15 | num16) != 0)
|
|
{
|
|
if ((double) num13 > 100.0 | flag3)
|
|
{
|
|
++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) num13 < 150.0 && (this.type == 6 || this.type == 94 || this.type == 173 || this.type == 619))
|
|
{
|
|
this.velocity.X += SpeedX1 * 0.007f;
|
|
this.velocity.Y += SpeedY1 * 0.007f;
|
|
}
|
|
}
|
|
if (flag1)
|
|
{
|
|
SpeedX1 = (float) ((double) this.direction * (double) num1 / 2.0);
|
|
SpeedY1 = (float) (-(double) num1 / 2.0);
|
|
}
|
|
else if (this.type == 619 && (double) this.Center.Y > (double) targetData.Center.Y - 200.0)
|
|
this.velocity.Y -= 0.3f;
|
|
if ((double) this.velocity.X < (double) SpeedX1)
|
|
{
|
|
this.velocity.X += num2;
|
|
if (flag4 && (double) this.velocity.X < 0.0 && (double) SpeedX1 > 0.0)
|
|
this.velocity.X += num2;
|
|
}
|
|
else if ((double) this.velocity.X > (double) SpeedX1)
|
|
{
|
|
this.velocity.X -= num2;
|
|
if (flag4 && (double) this.velocity.X > 0.0 && (double) SpeedX1 < 0.0)
|
|
this.velocity.X -= num2;
|
|
}
|
|
if ((double) this.velocity.Y < (double) SpeedY1)
|
|
{
|
|
this.velocity.Y += num2;
|
|
if (flag4 && (double) this.velocity.Y < 0.0 && (double) SpeedY1 > 0.0)
|
|
this.velocity.Y += num2;
|
|
}
|
|
else if ((double) this.velocity.Y > (double) SpeedY1)
|
|
{
|
|
this.velocity.Y -= num2;
|
|
if (flag4 && (double) this.velocity.Y > 0.0 && (double) SpeedY1 < 0.0)
|
|
this.velocity.Y -= num2;
|
|
}
|
|
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 (targetData.Type != NPCTargetType.None && Collision.CanHit((Entity) this, targetData))
|
|
{
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(25f, 22f);
|
|
int Type = 84;
|
|
Projectile.NewProjectile(vector2_1.X, vector2_1.Y, SpeedX1, SpeedY1, Type, damageForProjectiles, 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.type == 173 || this.type == 619)
|
|
this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1) - 1.57f;
|
|
else if (this.type == 42 || this.type == 176 || this.type == 205 || this.type >= 231 && this.type <= 235)
|
|
{
|
|
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;
|
|
}
|
|
else
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f;
|
|
if (this.type == 6 || this.type == 619 || this.type == 23 || this.type == 42 || this.type == 94 || this.type == 139 || this.type == 173 || this.type == 176 || this.type == 205 || this.type == 210 || this.type == 211 || this.type >= 231 && this.type <= 235)
|
|
{
|
|
float num17 = 0.7f;
|
|
if (this.type == 6 || this.type == 173)
|
|
num17 = 0.4f;
|
|
if (this.collideX)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.X = this.oldVelocity.X * -num17;
|
|
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 * -num17;
|
|
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;
|
|
}
|
|
this.position = this.position + this.netOffset;
|
|
if (this.type == 619)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 5, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100);
|
|
Main.dust[index].velocity *= 0.5f;
|
|
}
|
|
else if (this.type != 42 && this.type != 139 && this.type != 176 && this.type != 205 && this.type != 210 && this.type != 211 && this.type != 252 && (this.type < 231 || this.type > 235) && Main.rand.Next(20) == 0)
|
|
{
|
|
int Type = 18;
|
|
if (this.type == 173)
|
|
Type = 5;
|
|
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), Type, this.velocity.X, 2f, 75, this.color, this.scale);
|
|
Main.dust[index].velocity.X *= 0.5f;
|
|
Main.dust[index].velocity.Y *= 0.1f;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
else if (this.type != 252 && 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.type == 173 || this.type == 619) && 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 == 205 && 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 == 42 || this.type == 176 || this.type >= 231 && this.type <= 235)
|
|
{
|
|
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)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item17, this.position);
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.ai[1] += (float) Main.rand.Next(5, 20) * 0.1f * this.scale;
|
|
if (this.type == 176)
|
|
this.ai[1] += (float) Main.rand.Next(5, 20) * 0.1f * this.scale;
|
|
if (targetData.Type == NPCTargetType.Player)
|
|
{
|
|
Player player = Main.player[this.target];
|
|
if (player != null && (double) player.stealth == 0.0 && player.itemAnimation == 0)
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if ((double) this.ai[1] >= 130.0)
|
|
{
|
|
if (targetData.Type != NPCTargetType.None && Collision.CanHit((Entity) this, targetData))
|
|
{
|
|
float num18 = 8f;
|
|
Vector2 vector2_2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) (this.height / 2));
|
|
float num19 = targetData.Center.X - vector2_2.X + (float) Main.rand.Next(-20, 21);
|
|
float num20 = targetData.Center.Y - vector2_2.Y + (float) Main.rand.Next(-20, 21);
|
|
if ((double) num19 < 0.0 && (double) this.velocity.X < 0.0 || (double) num19 > 0.0 && (double) this.velocity.X > 0.0)
|
|
{
|
|
float num21 = (float) Math.Sqrt((double) num19 * (double) num19 + (double) num20 * (double) num20);
|
|
float num22 = num18 / num21;
|
|
float SpeedX2 = num19 * num22;
|
|
float SpeedY2 = num20 * num22;
|
|
int Damage = (int) (10.0 * (double) this.scale);
|
|
if (this.type == 176)
|
|
Damage = (int) (30.0 * (double) this.scale);
|
|
int Type = 55;
|
|
int index = Projectile.NewProjectile(vector2_2.X, vector2_2.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 & flag2)
|
|
{
|
|
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)
|
|
{
|
|
if (this.type == 94 && !flag1)
|
|
{
|
|
if (this.justHit)
|
|
this.localAI[0] = 0.0f;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] == 180.0)
|
|
{
|
|
if (targetData.Type != NPCTargetType.None && Collision.CanHit((Entity) this, targetData))
|
|
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 (this.type == 619 && !flag1)
|
|
{
|
|
if (this.justHit)
|
|
this.localAI[0] += 10f;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] >= 120.0)
|
|
{
|
|
if (targetData.Type != NPCTargetType.None && Collision.CanHit((Entity) this, targetData))
|
|
{
|
|
if ((double) (this.Center - targetData.Center).Length() < 400.0)
|
|
{
|
|
this.velocity = -this.DirectionTo(new Vector2(targetData.Center.X, targetData.Position.Y)) * 5f;
|
|
this.netUpdate = true;
|
|
this.localAI[0] = 0.0f;
|
|
Projectile.NewProjectile(this.Center, this.DirectionTo(new Vector2(targetData.Center.X + (float) Main.rand.Next(-100, 101), targetData.Position.Y + (float) Main.rand.Next(-100, 101))) * 15f, 811, 50, 1f, Main.myPlayer);
|
|
}
|
|
else
|
|
this.localAI[0] = 50f;
|
|
}
|
|
else
|
|
this.localAI[0] = 50f;
|
|
}
|
|
}
|
|
}
|
|
if (((!Main.dayTime || this.type == 173 || this.type == 619 || this.type == 6 || this.type == 23 || this.type == 42 || this.type == 94 || this.type == 176 || this.type == 205 || this.type == 210 || this.type == 211 || this.type == 252 ? 0 : (this.type < 231 ? 1 : (this.type > 235 ? 1 : 0))) | (flag1 ? 1 : 0)) != 0)
|
|
{
|
|
this.velocity.Y -= num2 * 2f;
|
|
this.EncourageDespawn(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;
|
|
}
|
|
|
|
public void CopyInteractions(NPC npc)
|
|
{
|
|
for (int index = 0; index < this.playerInteraction.Length; ++index)
|
|
this.playerInteraction[index] = npc.playerInteraction[index];
|
|
this.lastInteraction = npc.lastInteraction;
|
|
}
|
|
|
|
public static int GetEaterOfWorldsSegmentsCount() => !Main.expertMode ? 65 : 70;
|
|
|
|
public static int GetEaterOfWorldsSegmentsCountByGamemode(int gamemode)
|
|
{
|
|
GameModeData gameModeData;
|
|
return !Main.RegisterdGameModes.TryGetValue(gamemode, out gameModeData) || !gameModeData.IsExpertMode ? 65 : 70;
|
|
}
|
|
|
|
public static int GetBrainOfCthuluCreepersCount() => Main.getGoodWorld ? 40 : 20;
|
|
|
|
private void AI_006_Worms()
|
|
{
|
|
if (this.type == 117 && (double) this.localAI[1] == 0.0)
|
|
{
|
|
this.localAI[1] = 1f;
|
|
SoundEngine.PlaySound(SoundID.NPCDeath13, this.position);
|
|
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 == 454 && (double) this.localAI[3] == 0.0)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item119, this.position);
|
|
this.localAI[3] = 1f;
|
|
}
|
|
if (this.type >= 454 && this.type <= 459)
|
|
{
|
|
this.dontTakeDamage = this.alpha > 0;
|
|
if (this.type == 454 || this.type != 454 && Main.npc[(int) this.ai[1]].alpha < 85)
|
|
{
|
|
if (this.dontTakeDamage)
|
|
{
|
|
for (int index1 = 0; index1 < 2; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 228, Alpha: 100, Scale: 2f);
|
|
Main.dust[index2].noGravity = true;
|
|
Main.dust[index2].noLight = true;
|
|
}
|
|
}
|
|
this.alpha -= 42;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
}
|
|
if (this.type >= 621 && this.type <= 623)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
this.dontTakeDamage = this.alpha > 0;
|
|
if (this.type == 621 || this.type != 621 && Main.npc[(int) this.ai[1]].alpha < 85)
|
|
{
|
|
if (this.dontTakeDamage)
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, Alpha: 100);
|
|
}
|
|
this.alpha -= 42;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
if (this.alpha == 0 && Main.rand.Next(5) == 0)
|
|
Dust.NewDust(this.position, this.width, this.height, 5, Alpha: 100);
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
else if (this.type == 402 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.ai[1] = (float) Main.rand.Next(-2, 0);
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.netMode != 1 && Main.expertMode)
|
|
{
|
|
if (this.type == 14 && ((double) this.position.Y / 16.0 < Main.worldSurface || Main.getGoodWorld))
|
|
{
|
|
int x = (int) ((double) this.Center.X / 16.0);
|
|
int y = (int) ((double) this.Center.Y / 16.0);
|
|
if (WorldGen.InWorld(x, y) && Main.tile[x, y].wall == (ushort) 0 && Main.rand.Next(900) == 0)
|
|
{
|
|
this.TargetClosest();
|
|
if (Collision.CanHitLine(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
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, ai1: 1f);
|
|
}
|
|
}
|
|
else if (this.type == 13)
|
|
{
|
|
int maxValue = 90 + (int) ((double) this.life / (double) this.lifeMax * 60.0 * 5.0);
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
this.TargetClosest();
|
|
if (Collision.CanHitLine(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
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, ai1: 1f);
|
|
}
|
|
}
|
|
}
|
|
bool flag1 = false;
|
|
float num1 = 0.2f;
|
|
switch (this.type)
|
|
{
|
|
case 10:
|
|
case 39:
|
|
case 95:
|
|
case 117:
|
|
case 510:
|
|
flag1 = true;
|
|
break;
|
|
case 513:
|
|
flag1 = !Main.player[this.target].ZoneUndergroundDesert;
|
|
num1 = 0.1f;
|
|
break;
|
|
case 621:
|
|
flag1 = false;
|
|
break;
|
|
}
|
|
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 || flag1 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0)
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead || flag1 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0)
|
|
{
|
|
this.EncourageDespawn(300);
|
|
if (flag1)
|
|
this.velocity.Y += num1;
|
|
}
|
|
if (this.type == 621 && Main.dayTime)
|
|
{
|
|
this.EncourageDespawn(60);
|
|
++this.velocity.Y;
|
|
}
|
|
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 index3 = this.whoAmI;
|
|
for (int index4 = 0; index4 < 14; ++index4)
|
|
{
|
|
int Type = 89;
|
|
if (index4 == 1 || index4 == 8)
|
|
{
|
|
Type = 88;
|
|
}
|
|
else
|
|
{
|
|
switch (index4)
|
|
{
|
|
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) index3;
|
|
Main.npc[number].CopyInteractions(this);
|
|
Main.npc[index3].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index3 = number;
|
|
}
|
|
}
|
|
if (this.type == 454 && (double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
int index5 = this.whoAmI;
|
|
for (int index6 = 0; index6 < 30; ++index6)
|
|
{
|
|
int Type = 456;
|
|
if ((index6 - 2) % 4 == 0 && index6 < 26)
|
|
{
|
|
Type = 455;
|
|
}
|
|
else
|
|
{
|
|
switch (index6)
|
|
{
|
|
case 27:
|
|
Type = 457;
|
|
break;
|
|
case 28:
|
|
Type = 458;
|
|
break;
|
|
case 29:
|
|
Type = 459;
|
|
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) index5;
|
|
Main.npc[number].CopyInteractions(this);
|
|
Main.npc[index5].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index5 = number;
|
|
}
|
|
}
|
|
if (this.type == 513 && (double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
int index7 = this.whoAmI;
|
|
int num2 = Main.rand.Next(6, 10);
|
|
for (int index8 = 0; index8 < num2; ++index8)
|
|
{
|
|
int Type = 514;
|
|
if (index8 == num2 - 1)
|
|
Type = 515;
|
|
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) index7;
|
|
Main.npc[number].CopyInteractions(this);
|
|
Main.npc[index7].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index7 = number;
|
|
}
|
|
}
|
|
if (this.type == 510 && (double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
int index9 = this.whoAmI;
|
|
int num3 = Main.rand.Next(12, 21);
|
|
for (int index10 = 0; index10 < num3; ++index10)
|
|
{
|
|
int Type = 511;
|
|
if (index10 == num3 - 1)
|
|
Type = 512;
|
|
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[number].CopyInteractions(this);
|
|
Main.npc[index9].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index9 = number;
|
|
}
|
|
}
|
|
if (this.type == 621 && (double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
int index11 = this.whoAmI;
|
|
int num4 = 16;
|
|
for (int index12 = 0; index12 < num4; ++index12)
|
|
{
|
|
int Type = 622;
|
|
if (index12 == num4 - 1)
|
|
Type = 623;
|
|
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) index11;
|
|
Main.npc[number].CopyInteractions(this);
|
|
Main.npc[index11].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index11 = number;
|
|
}
|
|
}
|
|
else 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) NPC.GetEaterOfWorldsSegmentsCount();
|
|
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);
|
|
Main.npc[(int) this.ai[0]].CopyInteractions(this);
|
|
}
|
|
else if ((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)
|
|
{
|
|
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, this.whoAmI);
|
|
Main.npc[(int) this.ai[0]].CopyInteractions(this);
|
|
}
|
|
else
|
|
{
|
|
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);
|
|
Main.npc[(int) this.ai[0]].CopyInteractions(this);
|
|
}
|
|
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 == 412 && (double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[3] = (float) this.whoAmI;
|
|
this.realLife = this.whoAmI;
|
|
int index13 = this.whoAmI;
|
|
int num5 = 30;
|
|
for (int index14 = 0; index14 < num5; ++index14)
|
|
{
|
|
int Type = 413;
|
|
if (index14 == num5 - 1)
|
|
Type = 414;
|
|
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) index13;
|
|
Main.npc[number].CopyInteractions(this);
|
|
Main.npc[index13].ai[0] = (float) number;
|
|
NetMessage.SendData(23, number: number);
|
|
index13 = number;
|
|
}
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 8:
|
|
case 9:
|
|
case 11:
|
|
case 12:
|
|
case 40:
|
|
case 41:
|
|
case 88:
|
|
case 89:
|
|
case 90:
|
|
case 91:
|
|
case 92:
|
|
case 96:
|
|
case 97:
|
|
case 99:
|
|
case 100:
|
|
case 118:
|
|
case 119:
|
|
case 413:
|
|
case 414:
|
|
case 455:
|
|
case 456:
|
|
case 457:
|
|
case 458:
|
|
case 459:
|
|
case 511:
|
|
case 512:
|
|
case 514:
|
|
case 515:
|
|
case 622:
|
|
case 623:
|
|
if (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != this.aiStyle)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 7:
|
|
case 8:
|
|
case 10:
|
|
case 11:
|
|
case 39:
|
|
case 40:
|
|
case 87:
|
|
case 88:
|
|
case 89:
|
|
case 90:
|
|
case 91:
|
|
case 95:
|
|
case 96:
|
|
case 98:
|
|
case 99:
|
|
case 117:
|
|
case 118:
|
|
case 412:
|
|
case 413:
|
|
case 454:
|
|
case 455:
|
|
case 456:
|
|
case 457:
|
|
case 458:
|
|
case 510:
|
|
case 511:
|
|
case 513:
|
|
case 514:
|
|
case 621:
|
|
case 622:
|
|
if (!Main.npc[(int) this.ai[0]].active || Main.npc[(int) this.ai[0]].aiStyle != this.aiStyle)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
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.checkDead();
|
|
this.active = false;
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
}
|
|
if (this.type == 13 && !Main.npc[(int) this.ai[0]].active)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.checkDead();
|
|
this.active = false;
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
}
|
|
if (this.type == 15 && !Main.npc[(int) this.ai[1]].active)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.checkDead();
|
|
this.active = false;
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
}
|
|
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 num6 = (float) this.life / (float) this.lifeMax;
|
|
float num7 = this.ai[0];
|
|
this.SetDefaultsKeepPlayerInteraction(this.type);
|
|
this.life = (int) ((double) this.lifeMax * (double) num6);
|
|
this.ai[0] = num7;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
this.whoAmI = whoAmI;
|
|
this.alpha = 0;
|
|
}
|
|
if (this.type == 14 && (!Main.npc[(int) this.ai[0]].active || Main.npc[(int) this.ai[0]].aiStyle != this.aiStyle))
|
|
{
|
|
this.type = 15;
|
|
int whoAmI = this.whoAmI;
|
|
float num8 = (float) this.life / (float) this.lifeMax;
|
|
float num9 = this.ai[1];
|
|
this.SetDefaultsKeepPlayerInteraction(this.type);
|
|
this.life = (int) ((double) this.lifeMax * (double) num8);
|
|
this.ai[1] = num9;
|
|
this.TargetClosest();
|
|
this.netUpdate = true;
|
|
this.whoAmI = whoAmI;
|
|
this.alpha = 0;
|
|
}
|
|
}
|
|
if (!this.active && Main.netMode == 2)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
}
|
|
int num10 = (int) ((double) this.position.X / 16.0) - 1;
|
|
int num11 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2;
|
|
int num12 = (int) ((double) this.position.Y / 16.0) - 1;
|
|
int num13 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2;
|
|
if (num10 < 0)
|
|
num10 = 0;
|
|
if (num11 > Main.maxTilesX)
|
|
num11 = Main.maxTilesX;
|
|
if (num12 < 0)
|
|
num12 = 0;
|
|
if (num13 > Main.maxTilesY)
|
|
num13 = Main.maxTilesY;
|
|
bool flag2 = false;
|
|
if (this.type >= 87 && this.type <= 92)
|
|
flag2 = true;
|
|
if (this.type >= 454 && this.type <= 459)
|
|
flag2 = true;
|
|
if (this.type >= 621 && this.type <= 623)
|
|
flag2 = true;
|
|
if (this.type == 402 && (double) this.ai[1] == -1.0)
|
|
flag2 = true;
|
|
if (this.type >= 412 && this.type <= 414)
|
|
flag2 = true;
|
|
if (!flag2)
|
|
{
|
|
for (int i = num10; i < num11; ++i)
|
|
{
|
|
for (int j = num12; j < num13; ++j)
|
|
{
|
|
if (Main.tile[i, j] != null && (Main.tile[i, j].nactive() && (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)
|
|
{
|
|
flag2 = true;
|
|
if (Main.rand.Next(100) == 0 && this.type != 117 && Main.tile[i, j].nactive() && Main.tileSolid[(int) Main.tile[i, j].type])
|
|
WorldGen.KillTile(i, j, true, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!flag2 && (this.type == 7 || this.type == 10 || this.type == 13 || this.type == 39 || this.type == 95 || this.type == 98 || this.type == 117 || this.type == 375 || this.type == 454 || this.type == 510 || this.type == 513 || this.type == 621))
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height);
|
|
int num14 = 1000;
|
|
bool flag3 = true;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X - num14, (int) Main.player[index].position.Y - num14, num14 * 2, num14 * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
flag3 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag3)
|
|
flag2 = true;
|
|
}
|
|
if (this.type >= 87 && this.type <= 92 || this.type >= 454 && this.type <= 459 || this.type >= 621 && this.type <= 623)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.spriteDirection = 1;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.spriteDirection = -1;
|
|
}
|
|
if (this.type == 414)
|
|
{
|
|
if (this.justHit)
|
|
this.localAI[3] = 3f;
|
|
if ((double) this.localAI[2] > 0.0)
|
|
{
|
|
this.localAI[2] -= 16f;
|
|
if ((double) this.localAI[2] == 0.0)
|
|
this.localAI[2] = (float) sbyte.MinValue;
|
|
}
|
|
else if ((double) this.localAI[2] < 0.0)
|
|
this.localAI[2] += 16f;
|
|
else if ((double) this.localAI[3] > 0.0)
|
|
{
|
|
this.localAI[2] = 128f;
|
|
--this.localAI[3];
|
|
}
|
|
}
|
|
if (this.type == 412)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Vector2 vector2_1 = this.Center + (this.rotation - 1.570796f).ToRotationVector2() * 8f;
|
|
Vector2 vector2_2 = this.rotation.ToRotationVector2() * 16f;
|
|
Dust dust1 = Main.dust[Dust.NewDust(vector2_1 + vector2_2, 0, 0, 6, this.velocity.X, this.velocity.Y, 100, Color.Transparent, (float) (1.0 + (double) Main.rand.NextFloat() * 3.0))];
|
|
dust1.noGravity = true;
|
|
dust1.noLight = true;
|
|
dust1.position -= new Vector2(4f);
|
|
dust1.fadeIn = 1f;
|
|
dust1.velocity = Vector2.Zero;
|
|
Dust dust2 = Main.dust[Dust.NewDust(vector2_1 - vector2_2, 0, 0, 6, this.velocity.X, this.velocity.Y, 100, Color.Transparent, (float) (1.0 + (double) Main.rand.NextFloat() * 3.0))];
|
|
dust2.noGravity = true;
|
|
dust2.noLight = true;
|
|
dust2.position -= new Vector2(4f);
|
|
dust2.fadeIn = 1f;
|
|
dust2.velocity = Vector2.Zero;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
float num15 = 8f;
|
|
float num16 = 0.07f;
|
|
if (this.type == 95)
|
|
{
|
|
num15 = 5.5f;
|
|
num16 = 0.045f;
|
|
}
|
|
if (this.type == 10)
|
|
{
|
|
num15 = 6f;
|
|
num16 = 0.05f;
|
|
}
|
|
if (this.type == 513)
|
|
{
|
|
num15 = 7f;
|
|
num16 = 0.1f;
|
|
}
|
|
if (this.type == 13)
|
|
{
|
|
num15 = 10f;
|
|
num16 = 0.07f;
|
|
if (Main.expertMode)
|
|
{
|
|
num15 = 12f;
|
|
num16 = 0.15f;
|
|
}
|
|
if (Main.getGoodWorld)
|
|
{
|
|
num15 += 4f;
|
|
num16 += 0.05f;
|
|
}
|
|
}
|
|
if (this.type == 510)
|
|
{
|
|
if (!Main.player[this.target].dead && Main.player[this.target].ZoneSandstorm)
|
|
{
|
|
num15 = 16f;
|
|
num16 = 0.35f;
|
|
}
|
|
else
|
|
{
|
|
num15 = 10f;
|
|
num16 = 0.25f;
|
|
}
|
|
}
|
|
if (this.type == 87)
|
|
{
|
|
num15 = 11f;
|
|
num16 = 0.25f;
|
|
}
|
|
if (this.type == 621)
|
|
{
|
|
num15 = 15f;
|
|
num16 = 0.45f;
|
|
}
|
|
if (this.type == 375)
|
|
{
|
|
num15 = 6f;
|
|
num16 = 0.15f;
|
|
}
|
|
if (this.type == 454)
|
|
{
|
|
num15 = 20f;
|
|
num16 = 0.55f;
|
|
}
|
|
if (this.type == 402)
|
|
{
|
|
num15 = 6f;
|
|
num16 = 0.2f;
|
|
}
|
|
if (this.type == 117 && Main.wofNPCIndex >= 0)
|
|
{
|
|
double num17;
|
|
if ((num17 = (double) ((float) Main.npc[Main.wofNPCIndex].life / (float) Main.npc[Main.wofNPCIndex].lifeMax)) < 0.5)
|
|
{
|
|
++num15;
|
|
num16 += 0.1f;
|
|
}
|
|
if (num17 < 0.25)
|
|
{
|
|
++num15;
|
|
num16 += 0.1f;
|
|
}
|
|
if (num17 < 0.1)
|
|
{
|
|
num15 += 2f;
|
|
num16 += 0.1f;
|
|
}
|
|
}
|
|
Vector2 vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num18 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2);
|
|
float num19 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2);
|
|
if (this.type == 412)
|
|
{
|
|
num15 = 10f;
|
|
num16 = 0.3f;
|
|
int num20 = -1;
|
|
int num21 = (int) ((double) Main.player[this.target].Center.X / 16.0);
|
|
int num22 = (int) ((double) Main.player[this.target].Center.Y / 16.0);
|
|
for (int i = num21 - 2; i <= num21 + 2; ++i)
|
|
{
|
|
for (int j = num22; j <= num22 + 15; ++j)
|
|
{
|
|
if (WorldGen.SolidTile2(i, j))
|
|
{
|
|
num20 = j;
|
|
break;
|
|
}
|
|
}
|
|
if (num20 > 0)
|
|
break;
|
|
}
|
|
if (num20 > 0)
|
|
{
|
|
num20 *= 16;
|
|
float num23 = (float) (num20 - 800);
|
|
if ((double) Main.player[this.target].position.Y > (double) num23)
|
|
{
|
|
num19 = num23;
|
|
if ((double) Math.Abs(this.Center.X - Main.player[this.target].Center.X) < 500.0)
|
|
num18 = (double) this.velocity.X <= 0.0 ? Main.player[this.target].Center.X - 600f : Main.player[this.target].Center.X + 600f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num15 = 14f;
|
|
num16 = 0.5f;
|
|
}
|
|
float num24 = num15 * 1.3f;
|
|
float num25 = num15 * 0.7f;
|
|
float num26 = this.velocity.Length();
|
|
if ((double) num26 > 0.0)
|
|
{
|
|
if ((double) num26 > (double) num24)
|
|
{
|
|
this.velocity.Normalize();
|
|
this.velocity = this.velocity * num24;
|
|
}
|
|
else if ((double) num26 < (double) num25)
|
|
{
|
|
this.velocity.Normalize();
|
|
this.velocity = this.velocity * num25;
|
|
}
|
|
}
|
|
if (num20 > 0)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == this.type && index != this.whoAmI)
|
|
{
|
|
Vector2 vector2_4 = Main.npc[index].Center - this.Center;
|
|
if ((double) vector2_4.Length() < 400.0)
|
|
{
|
|
vector2_4.Normalize();
|
|
Vector2 vector2_5 = vector2_4 * 1000f;
|
|
num18 -= vector2_5.X;
|
|
num19 -= vector2_5.Y;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == this.type && index != this.whoAmI)
|
|
{
|
|
Vector2 vector2_6 = Main.npc[index].Center - this.Center;
|
|
if ((double) vector2_6.Length() < 60.0)
|
|
{
|
|
vector2_6.Normalize();
|
|
Vector2 vector2_7 = vector2_6 * 200f;
|
|
num18 -= vector2_7.X;
|
|
num19 -= vector2_7.Y;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
float num27 = (float) ((int) ((double) num18 / 16.0) * 16);
|
|
float num28 = (float) ((int) ((double) num19 / 16.0) * 16);
|
|
vector2_3.X = (float) ((int) ((double) vector2_3.X / 16.0) * 16);
|
|
vector2_3.Y = (float) ((int) ((double) vector2_3.Y / 16.0) * 16);
|
|
float num29 = num27 - vector2_3.X;
|
|
float num30 = num28 - vector2_3.Y;
|
|
if (this.type == 375)
|
|
{
|
|
num29 *= -1f;
|
|
num30 *= -1f;
|
|
}
|
|
float num31 = (float) Math.Sqrt((double) num29 * (double) num29 + (double) num30 * (double) num30);
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
if ((double) this.ai[1] < (double) Main.npc.Length)
|
|
{
|
|
try
|
|
{
|
|
vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
num29 = Main.npc[(int) this.ai[1]].position.X + (float) (Main.npc[(int) this.ai[1]].width / 2) - vector2_3.X;
|
|
num30 = Main.npc[(int) this.ai[1]].position.Y + (float) (Main.npc[(int) this.ai[1]].height / 2) - vector2_3.Y;
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
this.rotation = (float) Math.Atan2((double) num30, (double) num29) + 1.57f;
|
|
float num32 = (float) Math.Sqrt((double) num29 * (double) num29 + (double) num30 * (double) num30);
|
|
int num33 = this.width;
|
|
if (this.type >= 87 && this.type <= 92)
|
|
num33 = 42;
|
|
if (this.type >= 454 && this.type <= 459)
|
|
num33 = 36;
|
|
if (this.type >= 13 && this.type <= 15)
|
|
num33 = (int) ((double) num33 * (double) this.scale);
|
|
if (this.type >= 513 && this.type <= 515)
|
|
num33 -= 6;
|
|
if (this.type >= 412 && this.type <= 414)
|
|
num33 += 6;
|
|
if (this.type >= 621 && this.type <= 623)
|
|
num33 = 24;
|
|
if (Main.getGoodWorld && this.type >= 13 && this.type <= 15)
|
|
num33 = 62;
|
|
float num34 = (num32 - (float) num33) / num32;
|
|
float num35 = num29 * num34;
|
|
float num36 = num30 * num34;
|
|
this.velocity = Vector2.Zero;
|
|
this.position.X += num35;
|
|
this.position.Y += num36;
|
|
if (this.type >= 87 && this.type <= 92)
|
|
{
|
|
if ((double) num35 < 0.0)
|
|
this.spriteDirection = 1;
|
|
else if ((double) num35 > 0.0)
|
|
this.spriteDirection = -1;
|
|
}
|
|
if (this.type >= 454 && this.type <= 459)
|
|
{
|
|
if ((double) num35 < 0.0)
|
|
this.spriteDirection = 1;
|
|
else if ((double) num35 > 0.0)
|
|
this.spriteDirection = -1;
|
|
}
|
|
if (this.type >= 621 && this.type <= 623)
|
|
{
|
|
if ((double) num35 < 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
goto label_422;
|
|
}
|
|
else if ((double) num35 > 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
goto label_422;
|
|
}
|
|
else
|
|
goto label_422;
|
|
}
|
|
else
|
|
goto label_422;
|
|
}
|
|
}
|
|
if (!flag2)
|
|
{
|
|
this.TargetClosest();
|
|
this.velocity.Y += 0.11f;
|
|
if ((double) this.velocity.Y > (double) num15)
|
|
this.velocity.Y = num15;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num15 * 0.4)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= num16 * 1.1f;
|
|
else
|
|
this.velocity.X += num16 * 1.1f;
|
|
}
|
|
else if ((double) this.velocity.Y == (double) num15)
|
|
{
|
|
if ((double) this.velocity.X < (double) num29)
|
|
this.velocity.X += num16;
|
|
else if ((double) this.velocity.X > (double) num29)
|
|
this.velocity.X -= num16;
|
|
}
|
|
else if ((double) this.velocity.Y > 4.0)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += num16 * 0.9f;
|
|
else
|
|
this.velocity.X -= num16 * 0.9f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 621 && this.type != 87 && this.type != 117 && this.type != 454 && this.type != 412 && this.soundDelay == 0)
|
|
{
|
|
float num37 = num31 / 40f;
|
|
if ((double) num37 < 10.0)
|
|
num37 = 10f;
|
|
if ((double) num37 > 20.0)
|
|
num37 = 20f;
|
|
this.soundDelay = (int) num37;
|
|
SoundEngine.PlaySound(15, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
float num38 = (float) Math.Sqrt((double) num29 * (double) num29 + (double) num30 * (double) num30);
|
|
float num39 = Math.Abs(num29);
|
|
float num40 = Math.Abs(num30);
|
|
float num41 = num15 / num38;
|
|
float num42 = num29 * num41;
|
|
float num43 = num30 * num41;
|
|
bool flag4 = false;
|
|
if ((this.type == 7 || this.type == 13) && (!Main.player[this.target].ZoneCorrupt && !Main.player[this.target].ZoneCrimson || Main.player[this.target].dead))
|
|
flag4 = true;
|
|
if (this.type == 513 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0 && !Main.player[this.target].ZoneSandstorm && !Main.player[this.target].ZoneUndergroundDesert || Main.player[this.target].dead)
|
|
flag4 = true;
|
|
if (this.type == 510 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0 && !Main.player[this.target].ZoneSandstorm && !Main.player[this.target].ZoneUndergroundDesert || Main.player[this.target].dead)
|
|
flag4 = true;
|
|
if (flag4)
|
|
{
|
|
bool flag5 = true;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && !Main.player[index].dead && Main.player[index].ZoneCorrupt)
|
|
flag5 = false;
|
|
}
|
|
if (flag5)
|
|
{
|
|
if (Main.netMode != 1 && (double) this.position.Y / 16.0 > (Main.rockLayer + (double) Main.maxTilesY) / 2.0)
|
|
{
|
|
this.active = false;
|
|
int num44;
|
|
for (int number = (int) this.ai[0]; number > 0 && number < 200 && Main.npc[number].active && Main.npc[number].aiStyle == this.aiStyle; number = num44)
|
|
{
|
|
num44 = (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);
|
|
}
|
|
num42 = 0.0f;
|
|
num43 = num15;
|
|
}
|
|
}
|
|
bool flag6 = false;
|
|
if (this.type == 87)
|
|
{
|
|
if (((double) this.velocity.X > 0.0 && (double) num42 < 0.0 || (double) this.velocity.X < 0.0 && (double) num42 > 0.0 || (double) this.velocity.Y > 0.0 && (double) num43 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num43 > 0.0) && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > (double) num16 / 2.0 && (double) num38 < 300.0)
|
|
{
|
|
flag6 = true;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num15)
|
|
this.velocity = 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)
|
|
{
|
|
flag6 = true;
|
|
if ((double) Math.Abs(this.velocity.X) < (double) num15 / 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) num15)
|
|
this.velocity.Y -= num16;
|
|
}
|
|
}
|
|
if (this.type == 454 || this.type == 621)
|
|
{
|
|
float num45 = 300f;
|
|
if (this.type == 621)
|
|
num45 = 120f;
|
|
if (((double) this.velocity.X > 0.0 && (double) num42 < 0.0 || (double) this.velocity.X < 0.0 && (double) num42 > 0.0 || (double) this.velocity.Y > 0.0 && (double) num43 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num43 > 0.0) && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > (double) num16 / 2.0 && (double) num38 < (double) num45)
|
|
{
|
|
flag6 = true;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num15)
|
|
this.velocity = this.velocity * 1.1f;
|
|
}
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y || Main.player[this.target].dead)
|
|
{
|
|
flag6 = true;
|
|
if ((double) Math.Abs(this.velocity.X) < (double) num15 / 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) num15)
|
|
this.velocity.Y -= num16;
|
|
}
|
|
}
|
|
if (!flag6)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && (double) num42 > 0.0 || (double) this.velocity.X < 0.0 && (double) num42 < 0.0 || (double) this.velocity.Y > 0.0 && (double) num43 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num43 < 0.0)
|
|
{
|
|
if ((double) this.velocity.X < (double) num42)
|
|
this.velocity.X += num16;
|
|
else if ((double) this.velocity.X > (double) num42)
|
|
this.velocity.X -= num16;
|
|
if ((double) this.velocity.Y < (double) num43)
|
|
this.velocity.Y += num16;
|
|
else if ((double) this.velocity.Y > (double) num43)
|
|
this.velocity.Y -= num16;
|
|
if ((double) Math.Abs(num43) < (double) num15 * 0.2 && ((double) this.velocity.X > 0.0 && (double) num42 < 0.0 || (double) this.velocity.X < 0.0 && (double) num42 > 0.0))
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num16 * 2f;
|
|
else
|
|
this.velocity.Y -= num16 * 2f;
|
|
}
|
|
if ((double) Math.Abs(num42) < (double) num15 * 0.2 && ((double) this.velocity.Y > 0.0 && (double) num43 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num43 > 0.0))
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num16 * 2f;
|
|
else
|
|
this.velocity.X -= num16 * 2f;
|
|
}
|
|
}
|
|
else if ((double) num39 > (double) num40)
|
|
{
|
|
if ((double) this.velocity.X < (double) num42)
|
|
this.velocity.X += num16 * 1.1f;
|
|
else if ((double) this.velocity.X > (double) num42)
|
|
this.velocity.X -= num16 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num15 * 0.5)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num16;
|
|
else
|
|
this.velocity.Y -= num16;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y < (double) num43)
|
|
this.velocity.Y += num16 * 1.1f;
|
|
else if ((double) this.velocity.Y > (double) num43)
|
|
this.velocity.Y -= num16 * 1.1f;
|
|
if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num15 * 0.5)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num16;
|
|
else
|
|
this.velocity.X -= num16;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 || this.type == 510 || this.type == 513 || this.type == 621)
|
|
{
|
|
if (flag2)
|
|
{
|
|
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)
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.type == 454)
|
|
{
|
|
float num46 = Vector2.Distance(Main.player[this.target].Center, this.Center);
|
|
int num47 = 0;
|
|
if ((double) Vector2.Normalize(Main.player[this.target].Center - this.Center).ToRotation().AngleTowards(this.velocity.ToRotation(), 1.570796f) == (double) this.velocity.ToRotation() && (double) num46 < 350.0)
|
|
num47 = 4;
|
|
if ((double) num47 > this.frameCounter)
|
|
++this.frameCounter;
|
|
if ((double) num47 < this.frameCounter)
|
|
--this.frameCounter;
|
|
if (this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
if (this.frameCounter > 4.0)
|
|
this.frameCounter = 4.0;
|
|
}
|
|
label_422:
|
|
if (this.type < 13 || this.type > 15 || this.type != 13 && (this.type == 13 || Main.npc[(int) this.ai[1]].alpha >= 85))
|
|
return;
|
|
if (this.alpha > 0 && this.life > 0)
|
|
{
|
|
for (int index15 = 0; index15 < 2; ++index15)
|
|
{
|
|
int index16 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 14, Alpha: 100, Scale: 2f);
|
|
Main.dust[index16].noGravity = true;
|
|
Main.dust[index16].noLight = true;
|
|
}
|
|
}
|
|
if ((double) (this.position - this.oldPosition).Length() <= 2.0)
|
|
return;
|
|
this.alpha -= 42;
|
|
if (this.alpha >= 0)
|
|
return;
|
|
this.alpha = 0;
|
|
}
|
|
|
|
private void AI_002_FloatingEye()
|
|
{
|
|
if ((this.type == 170 || this.type == 171 || this.type == 180) && Main.rand.Next(1000) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 9);
|
|
this.noGravity = true;
|
|
if (!this.noTileCollide)
|
|
{
|
|
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 (NPC.DespawnEncouragement_AIStyle2_FloatingEye_IsDiscouraged(this.type, this.position, this.target))
|
|
{
|
|
this.EncourageDespawn(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 == 170 || this.type == 171 || this.type == 180)
|
|
{
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
if ((double) this.ai[1] > 0.0 && !Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[0] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] == 0.0)
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] >= 300.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.ai[0] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.alpha = 0;
|
|
this.noTileCollide = false;
|
|
}
|
|
else
|
|
{
|
|
this.wet = false;
|
|
this.alpha = 200;
|
|
this.noTileCollide = true;
|
|
}
|
|
this.rotation = this.velocity.Y * 0.1f * (float) this.direction;
|
|
this.TargetClosest();
|
|
if (this.direction == -1 && (double) this.velocity.X > -4.0 && (double) this.position.X > (double) Main.player[this.target].position.X + (double) Main.player[this.target].width)
|
|
{
|
|
this.velocity.X -= 0.08f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X -= 0.04f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X -= 0.2f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < 4.0 && (double) this.position.X + (double) this.width < (double) Main.player[this.target].position.X)
|
|
{
|
|
this.velocity.X += 0.08f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X += 0.04f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += 0.2f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -2.5 && (double) this.position.Y > (double) Main.player[this.target].position.Y + (double) Main.player[this.target].height)
|
|
{
|
|
this.velocity.Y -= 0.1f;
|
|
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 < 2.5 && (double) this.position.Y + (double) this.height < (double) Main.player[this.target].position.Y)
|
|
{
|
|
this.velocity.Y += 0.1f;
|
|
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.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)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
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;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
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
|
|
{
|
|
float num1 = 4f;
|
|
float num2 = 1.5f;
|
|
float num3 = num1 * (float) (1.0 + (1.0 - (double) this.scale));
|
|
float num4 = num2 * (float) (1.0 + (1.0 - (double) this.scale));
|
|
if (this.direction == -1 && (double) this.velocity.X > -(double) num3)
|
|
{
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X > (double) num3)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.velocity.X < -(double) num3)
|
|
this.velocity.X = -num3;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < (double) num3)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X < -(double) num3)
|
|
this.velocity.X += 0.1f;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= 0.05f;
|
|
if ((double) this.velocity.X > (double) num3)
|
|
this.velocity.X = num3;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -(double) num4)
|
|
{
|
|
this.velocity.Y -= 0.04f;
|
|
if ((double) this.velocity.Y > (double) num4)
|
|
this.velocity.Y -= 0.05f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += 0.03f;
|
|
if ((double) this.velocity.Y < -(double) num4)
|
|
this.velocity.Y = -num4;
|
|
}
|
|
else if (this.directionY == 1 && (double) this.velocity.Y < (double) num4)
|
|
{
|
|
this.velocity.Y += 0.04f;
|
|
if ((double) this.velocity.Y < -(double) num4)
|
|
this.velocity.Y += 0.05f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= 0.03f;
|
|
if ((double) this.velocity.Y > (double) num4)
|
|
this.velocity.Y = num4;
|
|
}
|
|
}
|
|
if ((this.type == 2 || this.type == 133 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194) && Main.rand.Next(40) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
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;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if (!this.wet || this.type == 170 || this.type == 171 || this.type == 172)
|
|
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();
|
|
}
|
|
|
|
public static bool DespawnEncouragement_AIStyle2_FloatingEye_IsDiscouraged(
|
|
int npcID,
|
|
Vector2 npcPosition,
|
|
int target = 255)
|
|
{
|
|
if (Main.player[target].ZoneGraveyard || !Main.dayTime || (double) npcPosition.Y > Main.worldSurface * 16.0)
|
|
return false;
|
|
return npcID == 2 || npcID == 133 || npcID == 190 || npcID == 191 || npcID == 192 || npcID == 193 || npcID == 194 || npcID == 317 || npcID == 318;
|
|
}
|
|
|
|
private bool AI_007_TownEntities_IsInAGoodRestingSpot(
|
|
int tileX,
|
|
int tileY,
|
|
int idealRestX,
|
|
int idealRestY)
|
|
{
|
|
return !Main.dayTime && (double) this.ai[0] == 5.0 ? Math.Abs(tileX - idealRestX) < 7 && Math.Abs(tileY - idealRestY) < 7 : (this.type != 361 && this.type != 445 || !this.wet) && tileX == idealRestX && tileY == idealRestY;
|
|
}
|
|
|
|
private void AI_007_FindGoodRestingSpot(
|
|
int myTileX,
|
|
int myTileY,
|
|
out int floorX,
|
|
out int floorY)
|
|
{
|
|
floorX = this.homeTileX;
|
|
floorY = this.homeTileY;
|
|
if (floorX == -1 || floorY == -1)
|
|
return;
|
|
while (!WorldGen.SolidOrSlopedTile(floorX, floorY) && floorY < Main.maxTilesY - 20)
|
|
++floorY;
|
|
if (Main.dayTime || (double) this.ai[0] == 5.0 && Math.Abs(myTileX - floorX) < 7 && Math.Abs(myTileY - floorY) < 7)
|
|
return;
|
|
Point point1 = new Point(floorX, floorY);
|
|
Point point2 = new Point(-1, -1);
|
|
int num1 = -1;
|
|
int num2 = 7;
|
|
int num3 = 6;
|
|
int num4 = 2;
|
|
int num5 = 1;
|
|
int num6 = 2;
|
|
for (int index1 = point1.X - num2; index1 <= point1.X + num2; index1 += num5)
|
|
{
|
|
for (int index2 = point1.Y + num4; index2 >= point1.Y - num3; index2 -= num6)
|
|
{
|
|
Tile tile = Main.tile[index1, index2];
|
|
if (tile != null && tile.active() && (!TileID.Sets.CanBeSatOnForNPCs[(int) tile.type] || (int) tile.frameY % 40 != 0 || index2 + 1 <= point1.Y + num4))
|
|
{
|
|
int num7 = Math.Abs(index1 - point1.X) + Math.Abs(index2 - point1.Y);
|
|
if (num1 == -1 || num7 < num1)
|
|
{
|
|
num1 = num7;
|
|
point2.X = index1;
|
|
point2.Y = index2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (num1 == -1)
|
|
return;
|
|
Tile tile1 = Main.tile[point2.X, point2.Y];
|
|
if (tile1.type == (ushort) 497 || tile1.type == (ushort) 15)
|
|
{
|
|
if ((int) tile1.frameY % 40 != 0)
|
|
--point2.Y;
|
|
point2.Y += 2;
|
|
}
|
|
floorX = point2.X;
|
|
floorY = point2.Y;
|
|
}
|
|
|
|
private void AI_007_TryForcingSitting(int homeFloorX, int homeFloorY)
|
|
{
|
|
Tile tile = Main.tile[homeFloorX, homeFloorY - 1];
|
|
bool flag = this.type != 638 && this.type != 656 && (double) this.ai[0] != 5.0;
|
|
if (flag)
|
|
flag = ((flag ? 1 : 0) & (tile == null || !tile.active() ? 0 : (tile.type == (ushort) 15 ? 1 : (tile.type == (ushort) 497 ? 1 : 0)))) != 0;
|
|
if (flag)
|
|
flag = ((flag ? 1 : 0) & (tile.type != (ushort) 15 ? 1 : (tile.frameY != (short) 1080 ? 1 : 0))) != 0;
|
|
if (!flag)
|
|
return;
|
|
this.ai[0] = 5f;
|
|
this.ai[1] = (float) (900 + Main.rand.Next(10800));
|
|
this.direction = tile.frameX == (short) 0 ? -1 : 1;
|
|
this.Bottom = new Vector2((float) (homeFloorX * 16 + 8 + 2 * this.direction), (float) (homeFloorY * 16));
|
|
this.velocity = Vector2.Zero;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
|
|
private void AI_007_TownEntities()
|
|
{
|
|
int maxValue1 = 300;
|
|
if (this.type == 638 || this.type == 656)
|
|
maxValue1 = 0;
|
|
bool flag1 = Main.raining;
|
|
if (!Main.dayTime)
|
|
flag1 = true;
|
|
if (Main.eclipse)
|
|
flag1 = true;
|
|
if (Main.slimeRain)
|
|
flag1 = true;
|
|
float num1 = 1f;
|
|
this.defense = !Main.masterMode ? (!Main.expertMode ? (this.dryadWard ? this.defDefense + 6 : this.defDefense) : (this.dryadWard ? this.defDefense + 10 : this.defDefense)) : (this.dryadWard ? this.defDefense + 14 : this.defDefense);
|
|
if (this.isLikeATownNPC)
|
|
{
|
|
if (NPC.combatBookWasUsed)
|
|
{
|
|
num1 += 0.2f;
|
|
this.defense += 6;
|
|
}
|
|
if (NPC.downedBoss1)
|
|
{
|
|
num1 += 0.1f;
|
|
this.defense += 3;
|
|
}
|
|
if (NPC.downedBoss2)
|
|
{
|
|
num1 += 0.1f;
|
|
this.defense += 3;
|
|
}
|
|
if (NPC.downedBoss3)
|
|
{
|
|
num1 += 0.1f;
|
|
this.defense += 3;
|
|
}
|
|
if (NPC.downedQueenBee)
|
|
{
|
|
num1 += 0.1f;
|
|
this.defense += 3;
|
|
}
|
|
if (Main.hardMode)
|
|
{
|
|
num1 += 0.4f;
|
|
this.defense += 12;
|
|
}
|
|
if (NPC.downedQueenSlime)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 6;
|
|
}
|
|
if (NPC.downedMechBoss1)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 6;
|
|
}
|
|
if (NPC.downedMechBoss2)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 6;
|
|
}
|
|
if (NPC.downedMechBoss3)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 6;
|
|
}
|
|
if (NPC.downedPlantBoss)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 8;
|
|
}
|
|
if (NPC.downedQueenSlime)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 8;
|
|
}
|
|
if (NPC.downedGolemBoss)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 8;
|
|
}
|
|
if (NPC.downedAncientCultist)
|
|
{
|
|
num1 += 0.15f;
|
|
this.defense += 8;
|
|
}
|
|
}
|
|
if (this.type == 142 && Main.netMode != 1 && !Main.xMas)
|
|
{
|
|
this.StrikeNPCNoInteraction(9999, 0.0f, 0);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: 9999f);
|
|
}
|
|
if ((this.type == 148 || this.type == 149) && (double) this.localAI[0] == 0.0)
|
|
this.localAI[0] = (float) Main.rand.Next(1, 5);
|
|
if (this.type == 124)
|
|
{
|
|
int projectileSearch = NPC.lazyNPCOwnedProjectileSearchArray[this.whoAmI];
|
|
bool flag2 = false;
|
|
if (Main.projectile.IndexInRange<Projectile>(projectileSearch))
|
|
{
|
|
Projectile projectile = Main.projectile[projectileSearch];
|
|
if (projectile.active && projectile.type == 582 && (double) projectile.ai[1] == (double) this.whoAmI)
|
|
flag2 = true;
|
|
}
|
|
this.localAI[0] = (float) flag2.ToInt();
|
|
}
|
|
if ((this.type == 362 || this.type == 364 || this.type == 602 || this.type == 608) && Main.netMode != 1 && ((double) this.velocity.Y > 4.0 || (double) this.velocity.Y < -4.0 || this.wet))
|
|
{
|
|
int direction = this.direction;
|
|
this.Transform(this.type + 1);
|
|
this.TargetClosest();
|
|
this.direction = direction;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
switch (this.type)
|
|
{
|
|
case 107:
|
|
NPC.savedGoblin = true;
|
|
break;
|
|
case 108:
|
|
NPC.savedWizard = true;
|
|
break;
|
|
case 124:
|
|
NPC.savedMech = true;
|
|
break;
|
|
case 353:
|
|
NPC.savedStylist = true;
|
|
break;
|
|
case 369:
|
|
NPC.savedAngler = true;
|
|
break;
|
|
case 441:
|
|
NPC.savedTaxCollector = true;
|
|
break;
|
|
case 550:
|
|
NPC.savedBartender = true;
|
|
break;
|
|
case 588:
|
|
NPC.savedGolfer = true;
|
|
break;
|
|
}
|
|
if (this.type >= 0 && this.type < 663 && NPCID.Sets.TownCritter[this.type] && this.target == (int) byte.MaxValue)
|
|
{
|
|
this.TargetClosest();
|
|
if ((double) this.position.X < (double) Main.player[this.target].position.X)
|
|
{
|
|
this.direction = 1;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
if ((double) this.position.X > (double) Main.player[this.target].position.X)
|
|
{
|
|
this.direction = -1;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
if (this.homeTileX == -1)
|
|
this.homeTileX = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0);
|
|
}
|
|
else if (this.homeTileX == -1 && this.homeTileY == -1 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.homeTileX = (int) this.Center.X / 16;
|
|
this.homeTileY = (int) ((double) this.position.Y + (double) this.height + 4.0) / 16;
|
|
}
|
|
bool flag3 = false;
|
|
int index1 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int index2 = (int) ((double) this.position.Y + (double) this.height + 1.0) / 16;
|
|
int floorX;
|
|
int floorY;
|
|
this.AI_007_FindGoodRestingSpot(index1, index2, out floorX, out floorY);
|
|
if (this.type == 441)
|
|
NPC.taxCollector = true;
|
|
this.directionY = -1;
|
|
if (this.direction == 0)
|
|
this.direction = 1;
|
|
for (int index3 = 0; index3 < (int) byte.MaxValue; ++index3)
|
|
{
|
|
if (Main.player[index3].active && Main.player[index3].talkNPC == this.whoAmI)
|
|
{
|
|
flag3 = true;
|
|
if ((double) this.ai[0] != 0.0)
|
|
this.netUpdate = true;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 300f;
|
|
this.localAI[3] = 100f;
|
|
if ((double) Main.player[index3].position.X + (double) (Main.player[index3].width / 2) < (double) this.position.X + (double) (this.width / 2))
|
|
this.direction = -1;
|
|
else
|
|
this.direction = 1;
|
|
}
|
|
}
|
|
if ((double) this.ai[3] == 1.0)
|
|
{
|
|
this.life = -1;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
this.netUpdate = true;
|
|
if (this.type != 37)
|
|
return;
|
|
SoundEngine.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
else
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
if (this.type == 368)
|
|
{
|
|
this.homeless = true;
|
|
if (!Main.dayTime)
|
|
{
|
|
this.homeTileX = (int) ((double) this.Center.X / 16.0);
|
|
this.homeTileY = (int) ((double) this.position.Y + (double) this.height + 2.0) / 16;
|
|
if (!flag3 && (double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 200f;
|
|
}
|
|
flag1 = false;
|
|
}
|
|
}
|
|
if (this.type == 369 && this.homeless && this.wet)
|
|
{
|
|
if ((double) this.Center.X / 16.0 < 380.0 || (double) this.Center.X / 16.0 > (double) (Main.maxTilesX - 380))
|
|
{
|
|
this.homeTileX = Main.spawnTileX;
|
|
this.homeTileY = Main.spawnTileY;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 200f;
|
|
}
|
|
if ((double) this.position.X / 16.0 < 300.0)
|
|
this.direction = 1;
|
|
else if ((double) this.position.X / 16.0 > (double) (Main.maxTilesX - 300))
|
|
this.direction = -1;
|
|
}
|
|
if (!WorldGen.InWorld(index1, index2) || Main.tile[index1, index2] == null)
|
|
return;
|
|
if (!this.homeless && Main.netMode != 1 && this.townNPC && (flag1 || Main.tileDungeon[(int) Main.tile[index1, index2].type]) && !this.AI_007_TownEntities_IsInAGoodRestingSpot(index1, index2, floorX, floorY))
|
|
{
|
|
bool flag4 = true;
|
|
for (int index4 = 0; index4 < 2 && flag4; ++index4)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.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 (index4 == 1)
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(floorX * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, floorY * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
|
|
for (int index5 = 0; index5 < (int) byte.MaxValue; ++index5)
|
|
{
|
|
if (Main.player[index5].active && new Microsoft.Xna.Framework.Rectangle((int) Main.player[index5].position.X, (int) Main.player[index5].position.Y, Main.player[index5].width, Main.player[index5].height).Intersects(rectangle))
|
|
{
|
|
flag4 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag4)
|
|
{
|
|
if (this.type == 37 || !Collision.SolidTiles(floorX - 1, floorX + 1, floorY - 3, floorY - 1))
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
this.position.X = (float) (floorX * 16 + 8 - this.width / 2);
|
|
this.position.Y = (float) (floorY * 16 - this.height) - 0.1f;
|
|
this.netUpdate = true;
|
|
this.AI_007_TryForcingSitting(floorX, floorY);
|
|
}
|
|
else
|
|
{
|
|
this.homeless = true;
|
|
WorldGen.QuickFindHome(this.whoAmI);
|
|
}
|
|
}
|
|
}
|
|
bool flag5 = this.type == 300 || this.type == 447 || this.type == 610;
|
|
bool flag6 = this.type == 616 || this.type == 617 || this.type == 625;
|
|
bool flag7 = this.type == 361 || this.type == 445;
|
|
bool canBreathUnderWater = flag6 | flag7;
|
|
int num2 = NPCID.Sets.IsTownPet[this.type] ? 1 : 0;
|
|
bool flag8 = flag6 | flag7;
|
|
float num3 = 200f;
|
|
if (NPCID.Sets.DangerDetectRange[this.type] != -1)
|
|
num3 = (float) NPCID.Sets.DangerDetectRange[this.type];
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
float num4 = -1f;
|
|
float num5 = -1f;
|
|
int num6 = 0;
|
|
int index6 = -1;
|
|
int index7 = -1;
|
|
if (!flag6 && Main.netMode != 1 && !flag3)
|
|
{
|
|
for (int index8 = 0; index8 < 200; ++index8)
|
|
{
|
|
if (Main.npc[index8].active && !Main.npc[index8].friendly && Main.npc[index8].damage > 0 && (double) Main.npc[index8].Distance(this.Center) < (double) num3 && (this.type != 453 || !NPCID.Sets.Skeletons[Main.npc[index8].type]) && (Main.npc[index8].noTileCollide || Collision.CanHit(this.Center, 0, 0, Main.npc[index8].Center, 0, 0)))
|
|
{
|
|
flag9 = true;
|
|
float num7 = Main.npc[index8].Center.X - this.Center.X;
|
|
if (this.type == 614)
|
|
{
|
|
if ((double) num7 < 0.0 && ((double) num4 == -1.0 || (double) num7 > (double) num4))
|
|
{
|
|
num5 = num7;
|
|
index7 = index8;
|
|
}
|
|
if ((double) num7 > 0.0 && ((double) num5 == -1.0 || (double) num7 < (double) num5))
|
|
{
|
|
num4 = num7;
|
|
index6 = index8;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) num7 < 0.0 && ((double) num4 == -1.0 || (double) num7 > (double) num4))
|
|
{
|
|
num4 = num7;
|
|
index6 = index8;
|
|
}
|
|
if ((double) num7 > 0.0 && ((double) num5 == -1.0 || (double) num7 < (double) num5))
|
|
{
|
|
num5 = num7;
|
|
index7 = index8;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag9)
|
|
{
|
|
num6 = (double) num4 != -1.0 ? ((double) num5 != -1.0 ? ((double) num5 < -(double) num4).ToDirectionInt() : -1) : 1;
|
|
float num8 = 0.0f;
|
|
if ((double) num4 != -1.0)
|
|
num8 = -num4;
|
|
if ((double) num8 == 0.0 || (double) num5 < (double) num8 && (double) num5 > 0.0)
|
|
num8 = num5;
|
|
if ((double) this.ai[0] == 8.0)
|
|
{
|
|
if (this.direction == -num6)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (300 + Main.rand.Next(300));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] != 10.0 && (double) this.ai[0] != 12.0 && (double) this.ai[0] != 13.0 && (double) this.ai[0] != 14.0 && (double) this.ai[0] != 15.0)
|
|
{
|
|
if (NPCID.Sets.PrettySafe[this.type] != -1 && (double) NPCID.Sets.PrettySafe[this.type] < (double) num8)
|
|
{
|
|
flag9 = false;
|
|
flag10 = NPCID.Sets.AttackType[this.type] > -1;
|
|
}
|
|
else if ((double) this.ai[0] != 1.0)
|
|
{
|
|
int tileX = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0);
|
|
int tileY = (int) (((double) this.position.Y + (double) this.height - 16.0) / 16.0);
|
|
bool currentlyDrowning = this.wet && !canBreathUnderWater;
|
|
bool avoidFalling;
|
|
this.AI_007_TownEntities_GetWalkPrediction(index1, floorX, canBreathUnderWater, currentlyDrowning, tileX, tileY, out bool _, out avoidFalling);
|
|
if (!avoidFalling)
|
|
{
|
|
if (((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0 || (double) this.ai[0] == 16.0 ? 1 : ((double) this.ai[0] == 17.0 ? 1 : 0)) != 0)
|
|
{
|
|
NPC npc = Main.npc[(int) this.ai[2]];
|
|
if (npc.active)
|
|
{
|
|
npc.ai[0] = 1f;
|
|
npc.ai[1] = (float) (120 + Main.rand.Next(120));
|
|
npc.ai[2] = 0.0f;
|
|
npc.localAI[3] = 0.0f;
|
|
npc.direction = -num6;
|
|
npc.netUpdate = true;
|
|
}
|
|
}
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (120 + Main.rand.Next(120));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = -num6;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 1.0 && this.direction != -num6)
|
|
{
|
|
this.direction = -num6;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) this.localAI[3] > 0.0)
|
|
--this.localAI[3];
|
|
int petIdleChance = 120;
|
|
if (this.type == 638)
|
|
petIdleChance = 60;
|
|
if (flag7 && this.wet)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (200 + Main.rand.Next(500, 700));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag1 && !flag3 && !NPCID.Sets.TownCritter[this.type])
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (index1 == floorX && index2 == floorY)
|
|
{
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.netUpdate = true;
|
|
if ((double) this.velocity.X > 0.100000001490116)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X < -0.100000001490116)
|
|
{
|
|
this.velocity.X += 0.1f;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.AI_007_TryForcingSitting(floorX, floorY);
|
|
}
|
|
if (NPCID.Sets.IsTownPet[this.type])
|
|
this.AI_007_AttemptToPlayIdleAnimationsForPets(petIdleChance * 4);
|
|
}
|
|
else
|
|
{
|
|
if (index1 > floorX)
|
|
this.direction = -1;
|
|
else
|
|
this.direction = 1;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (200 + Main.rand.Next(200));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (flag5)
|
|
this.velocity.X *= 0.5f;
|
|
if ((double) this.velocity.X > 0.100000001490116)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) this.velocity.X < -0.100000001490116)
|
|
this.velocity.X += 0.1f;
|
|
else
|
|
this.velocity.X = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (!flag3 && NPCID.Sets.IsTownPet[this.type] && (double) this.ai[1] >= 100.0 && (double) this.ai[1] <= 150.0)
|
|
this.AI_007_AttemptToPlayIdleAnimationsForPets(petIdleChance);
|
|
if ((double) this.ai[1] > 0.0)
|
|
--this.ai[1];
|
|
bool flag11 = true;
|
|
int tileX = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0);
|
|
int tileY = (int) (((double) this.position.Y + (double) this.height - 16.0) / 16.0);
|
|
bool currentlyDrowning = this.wet && !canBreathUnderWater;
|
|
bool avoidFalling;
|
|
this.AI_007_TownEntities_GetWalkPrediction(index1, floorX, canBreathUnderWater, currentlyDrowning, tileX, tileY, out bool _, out avoidFalling);
|
|
if (avoidFalling)
|
|
flag11 = false;
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
if (flag11)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (200 + Main.rand.Next(300));
|
|
this.ai[2] = 0.0f;
|
|
if (NPCID.Sets.TownCritter[this.type])
|
|
this.ai[1] += (float) Main.rand.Next(200, 400);
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.direction *= -1;
|
|
this.ai[1] = (float) (60 + Main.rand.Next(120));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode != 1 && (!flag1 || this.AI_007_TownEntities_IsInAGoodRestingSpot(index1, index2, floorX, floorY)))
|
|
{
|
|
if (index1 < floorX - 25 || index1 > floorX + 25)
|
|
{
|
|
if ((double) this.localAI[3] == 0.0)
|
|
{
|
|
if (index1 < floorX - 50 && this.direction == -1)
|
|
{
|
|
this.direction = 1;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (index1 > floorX + 50 && this.direction == 1)
|
|
{
|
|
this.direction = -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.rand.Next(80) == 0 && (double) this.localAI[3] == 0.0)
|
|
{
|
|
this.localAI[3] = 200f;
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
if (Main.netMode != 1 & flag1 && this.AI_007_TownEntities_IsInAGoodRestingSpot(index1, index2, floorX, floorY) && !NPCID.Sets.TownCritter[this.type])
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (200 + Main.rand.Next(200));
|
|
this.localAI[3] = 60f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
bool currentlyDrowning = !canBreathUnderWater && Collision.DrownCollision(this.position, this.width, this.height, 1f, true);
|
|
if (!currentlyDrowning)
|
|
{
|
|
if (Main.netMode != 1 && !this.homeless && !Main.tileDungeon[(int) Main.tile[index1, index2].type] && (index1 < floorX - 35 || index1 > floorX + 35))
|
|
{
|
|
if ((double) this.position.X < (double) (floorX * 16) && this.direction == -1)
|
|
this.ai[1] -= 5f;
|
|
else if ((double) this.position.X > (double) (floorX * 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));
|
|
this.ai[2] = 0.0f;
|
|
if (NPCID.Sets.TownCritter[this.type])
|
|
this.ai[1] -= (float) Main.rand.Next(100);
|
|
else
|
|
this.ai[1] += (float) Main.rand.Next(900);
|
|
this.localAI[3] = 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)))
|
|
{
|
|
Tile tileSafely = Framing.GetTileSafely(this.doorX, this.doorY);
|
|
if (tileSafely.type == (ushort) 11)
|
|
{
|
|
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;
|
|
}
|
|
else if (tileSafely.type == (ushort) 389)
|
|
{
|
|
if (WorldGen.ShiftTallGate(this.doorX, this.doorY, true))
|
|
{
|
|
this.closeDoor = false;
|
|
NetMessage.SendData(19, number: 5, number2: ((float) this.doorX), number3: ((float) this.doorY));
|
|
}
|
|
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;
|
|
}
|
|
else
|
|
this.closeDoor = false;
|
|
}
|
|
float num9 = 1f;
|
|
float num10 = 0.07f;
|
|
if (this.type == 614 & flag9)
|
|
{
|
|
num9 = 1.5f;
|
|
num10 = 0.1f;
|
|
}
|
|
else if (this.type == 299 || this.type == 539 || this.type == 538 || this.type >= 639 && this.type <= 645)
|
|
num9 = 1.5f;
|
|
else if (flag6)
|
|
{
|
|
if (this.wet)
|
|
{
|
|
num10 = 1f;
|
|
num9 = 2f;
|
|
}
|
|
else
|
|
{
|
|
num10 = 0.07f;
|
|
num9 = 0.5f;
|
|
}
|
|
}
|
|
if (this.type == 625)
|
|
{
|
|
if (this.wet)
|
|
{
|
|
num10 = 1f;
|
|
num9 = 2.5f;
|
|
}
|
|
else
|
|
{
|
|
num10 = 0.07f;
|
|
num9 = 0.2f;
|
|
}
|
|
}
|
|
if (flag5)
|
|
{
|
|
num9 = 2f;
|
|
num10 = 1f;
|
|
}
|
|
if (this.friendly && flag9 | currentlyDrowning)
|
|
{
|
|
num9 = 1.5f + (float) (1.0 - (double) this.life / (double) this.lifeMax) * 0.9f;
|
|
num10 = 0.1f;
|
|
}
|
|
if (flag7 && this.wet)
|
|
{
|
|
if ((double) Math.Abs(this.velocity.X) < 0.0500000007450581 && (double) Math.Abs(this.velocity.Y) < 0.0500000007450581)
|
|
this.velocity.X += num9 * 10f * (float) this.direction;
|
|
else
|
|
this.velocity.X *= 0.9f;
|
|
}
|
|
else if ((double) this.velocity.X < -(double) num9 || (double) this.velocity.X > (double) num9)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num9 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num10;
|
|
if ((double) this.velocity.X > (double) num9)
|
|
this.velocity.X = num9;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num9 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num10;
|
|
if ((double) this.velocity.X > (double) num9)
|
|
this.velocity.X = num9;
|
|
}
|
|
bool holdsMatching = true;
|
|
if ((double) (this.homeTileY * 16 - 32) > (double) this.position.Y)
|
|
holdsMatching = false;
|
|
if (!holdsMatching && (double) this.velocity.Y == 0.0)
|
|
Collision.StepDown(ref this.position, ref this.velocity, this.width, this.height, ref this.stepSpeed, ref this.gfxOffY);
|
|
if ((double) this.velocity.Y >= 0.0)
|
|
Collision.StepUp(ref this.position, ref this.velocity, this.width, this.height, ref this.stepSpeed, ref this.gfxOffY, holdsMatching: holdsMatching, specialChecksMode: 1);
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
int num11 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0);
|
|
int num12 = (int) (((double) this.position.Y + (double) this.height - 16.0) / 16.0);
|
|
bool keepwalking;
|
|
bool avoidFalling;
|
|
this.AI_007_TownEntities_GetWalkPrediction(index1, floorX, canBreathUnderWater, currentlyDrowning, num11, num12, out keepwalking, out avoidFalling);
|
|
if (!avoidFalling && this.wet && !canBreathUnderWater && this.AI_007_TownEntities_CheckIfWillDrown(currentlyDrowning) && (double) this.localAI[3] <= 0.0)
|
|
{
|
|
avoidFalling = true;
|
|
this.localAI[3] = 600f;
|
|
}
|
|
if (avoidFalling)
|
|
{
|
|
int num13 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0);
|
|
int num14 = 0;
|
|
for (int index9 = -1; index9 <= 1; ++index9)
|
|
{
|
|
Tile tileSafely = Framing.GetTileSafely(num13 + index9, num12 + 1);
|
|
if (tileSafely.nactive() && Main.tileSolid[(int) tileSafely.type])
|
|
++num14;
|
|
}
|
|
if (num14 <= 2)
|
|
{
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.netUpdate = true;
|
|
keepwalking = avoidFalling = false;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (50 + Main.rand.Next(50));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 40f;
|
|
}
|
|
}
|
|
if ((double) this.position.X == (double) this.localAI[3])
|
|
{
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
this.localAI[3] = 600f;
|
|
}
|
|
if (currentlyDrowning)
|
|
{
|
|
if ((double) this.localAI[3] > 0.0)
|
|
--this.localAI[3];
|
|
}
|
|
else
|
|
this.localAI[3] = -1f;
|
|
Tile tileSafely1 = Framing.GetTileSafely(num11, num12);
|
|
Tile tileSafely2 = Framing.GetTileSafely(num11, num12 - 1);
|
|
Tile tileSafely3 = Framing.GetTileSafely(num11, num12 - 2);
|
|
bool flag12 = this.height / 16 < 3;
|
|
if (this.townNPC && tileSafely3.nactive() && (tileSafely3.type == (ushort) 10 || tileSafely3.type == (ushort) 388) && Main.rand.Next(10) == 0 | flag1)
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (WorldGen.OpenDoor(num11, num12 - 2, this.direction))
|
|
{
|
|
this.closeDoor = true;
|
|
this.doorX = num11;
|
|
this.doorY = num12 - 2;
|
|
NetMessage.SendData(19, number2: ((float) num11), number3: ((float) (num12 - 2)), number4: ((float) this.direction));
|
|
this.netUpdate = true;
|
|
this.ai[1] += 80f;
|
|
}
|
|
else if (WorldGen.OpenDoor(num11, num12 - 2, -this.direction))
|
|
{
|
|
this.closeDoor = true;
|
|
this.doorX = num11;
|
|
this.doorY = num12 - 2;
|
|
NetMessage.SendData(19, number2: ((float) num11), number3: ((float) (num12 - 2)), number4: ((float) -this.direction));
|
|
this.netUpdate = true;
|
|
this.ai[1] += 80f;
|
|
}
|
|
else if (WorldGen.ShiftTallGate(num11, num12 - 2, false))
|
|
{
|
|
this.closeDoor = true;
|
|
this.doorX = num11;
|
|
this.doorY = num12 - 2;
|
|
NetMessage.SendData(19, number: 4, number2: ((float) num11), number3: ((float) (num12 - 2)));
|
|
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)
|
|
{
|
|
bool flag13 = false;
|
|
bool flag14 = false;
|
|
if (tileSafely3.nactive() && Main.tileSolid[(int) tileSafely3.type] && !Main.tileSolidTop[(int) tileSafely3.type] && (!flag12 || tileSafely2.nactive() && Main.tileSolid[(int) tileSafely2.type] && !Main.tileSolidTop[(int) tileSafely2.type]))
|
|
{
|
|
if (!Collision.SolidTilesVersatile(num11 - this.direction * 2, num11 - this.direction, num12 - 5, num12 - 1) && !Collision.SolidTiles(num11, num11, num12 - 5, num12 - 3))
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag5)
|
|
{
|
|
if (WorldGen.SolidTile((int) ((double) this.Center.X / 16.0) + this.direction, (int) ((double) this.Center.Y / 16.0)))
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X *= 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (flag9)
|
|
{
|
|
flag14 = true;
|
|
flag13 = true;
|
|
}
|
|
else
|
|
flag13 = true;
|
|
}
|
|
else if (tileSafely2.nactive() && Main.tileSolid[(int) tileSafely2.type] && !Main.tileSolidTop[(int) tileSafely2.type])
|
|
{
|
|
if (!Collision.SolidTilesVersatile(num11 - this.direction * 2, num11 - this.direction, num12 - 4, num12 - 1) && !Collision.SolidTiles(num11, num11, num12 - 4, num12 - 2))
|
|
{
|
|
this.velocity.Y = -5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag9)
|
|
{
|
|
flag14 = true;
|
|
flag13 = true;
|
|
}
|
|
else
|
|
flag13 = true;
|
|
}
|
|
else if ((double) this.position.Y + (double) this.height - (double) (num12 * 16) > 20.0 && tileSafely1.nactive() && Main.tileSolid[(int) tileSafely1.type] && !tileSafely1.topSlope())
|
|
{
|
|
if (!Collision.SolidTilesVersatile(num11 - this.direction * 2, num11, num12 - 3, num12 - 1))
|
|
{
|
|
this.velocity.Y = -4.4f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag9)
|
|
{
|
|
flag14 = true;
|
|
flag13 = true;
|
|
}
|
|
else
|
|
flag13 = true;
|
|
}
|
|
else if (avoidFalling)
|
|
{
|
|
flag13 = true;
|
|
if (flag9)
|
|
flag14 = true;
|
|
}
|
|
if (flag14)
|
|
{
|
|
keepwalking = false;
|
|
this.velocity.X = 0.0f;
|
|
this.ai[0] = 8f;
|
|
this.ai[1] = 240f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (flag13)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X *= -1f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (keepwalking)
|
|
{
|
|
this.ai[1] = 90f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.localAI[3] = this.position.X;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0 && this.wet)
|
|
this.velocity.Y *= 1.2f;
|
|
if ((double) this.velocity.Y < 0.0 && NPCID.Sets.TownCritter[this.type] && !flag5)
|
|
this.velocity.Y *= 1.2f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 11.0)
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
--this.localAI[3];
|
|
if (Main.rand.Next(60) == 0 && (double) this.localAI[3] == 0.0)
|
|
{
|
|
this.localAI[3] = 60f;
|
|
this.direction *= -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
--this.ai[1];
|
|
this.velocity.X *= 0.8f;
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.localAI[3] = 40f;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (60 + Main.rand.Next(60));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0 || (double) this.ai[0] == 5.0 || (double) this.ai[0] == 8.0 || (double) this.ai[0] == 9.0 || (double) this.ai[0] == 16.0 || (double) this.ai[0] == 17.0 || (double) this.ai[0] == 20.0 || (double) this.ai[0] == 21.0 || (double) this.ai[0] == 22.0 || (double) this.ai[0] == 23.0)
|
|
{
|
|
this.velocity.X *= 0.8f;
|
|
--this.ai[1];
|
|
if ((double) this.ai[0] == 8.0 && (double) this.ai[1] < 60.0 & flag9)
|
|
{
|
|
this.ai[1] = 180f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[0] == 5.0)
|
|
{
|
|
Point tileCoordinates = (this.Bottom + Vector2.UnitY * -2f).ToTileCoordinates();
|
|
Tile tile = Main.tile[tileCoordinates.X, tileCoordinates.Y];
|
|
if (tile.type != (ushort) 15 && tile.type != (ushort) 497)
|
|
this.ai[1] = 0.0f;
|
|
else
|
|
Main.sittingManager.AddNPC(this.whoAmI, tileCoordinates);
|
|
}
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (60 + Main.rand.Next(60));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = (float) (30 + Main.rand.Next(60));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 6.0 || (double) this.ai[0] == 7.0 || (double) this.ai[0] == 18.0 || (double) this.ai[0] == 19.0)
|
|
{
|
|
if ((double) this.ai[0] == 18.0 && ((double) this.localAI[3] < 1.0 || (double) this.localAI[3] > 2.0))
|
|
this.localAI[3] = 2f;
|
|
this.velocity.X *= 0.8f;
|
|
--this.ai[1];
|
|
int index10 = (int) this.ai[2];
|
|
if (index10 < 0 || index10 > (int) byte.MaxValue || !Main.player[index10].CanBeTalkedTo || (double) Main.player[index10].Distance(this.Center) > 200.0 || !Collision.CanHitLine(this.Top, 0, 0, Main.player[index10].Top, 0, 0))
|
|
this.ai[1] = 0.0f;
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
int num15 = (double) this.Center.X < (double) Main.player[index10].Center.X ? 1 : -1;
|
|
if (num15 != this.direction)
|
|
this.netUpdate = true;
|
|
this.direction = num15;
|
|
}
|
|
else
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (60 + Main.rand.Next(60));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = (float) (30 + Main.rand.Next(60));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 10.0)
|
|
{
|
|
int Type = 0;
|
|
int num16 = 0;
|
|
float KnockBack = 0.0f;
|
|
float num17 = 0.0f;
|
|
int num18 = 0;
|
|
int num19 = 0;
|
|
int maxValue2 = 0;
|
|
float num20 = 0.0f;
|
|
float num21 = (float) NPCID.Sets.DangerDetectRange[this.type];
|
|
float max = 0.0f;
|
|
if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1])
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.localAI[3] = 0.0f;
|
|
}
|
|
if (this.type == 38)
|
|
{
|
|
Type = 30;
|
|
num17 = 6f;
|
|
num16 = 20;
|
|
num18 = 10;
|
|
num19 = 180;
|
|
maxValue2 = 120;
|
|
num20 = 16f;
|
|
KnockBack = 7f;
|
|
}
|
|
else if (this.type == 633)
|
|
{
|
|
Type = 880;
|
|
num17 = 24f;
|
|
num16 = 15;
|
|
num18 = 1;
|
|
num20 = 0.0f;
|
|
KnockBack = 7f;
|
|
num19 = 15;
|
|
maxValue2 = 10;
|
|
if (this.ShouldBestiaryGirlBeLycantrope())
|
|
{
|
|
Type = 929;
|
|
num16 = (int) ((double) num16 * 1.5);
|
|
}
|
|
}
|
|
else if (this.type == 550)
|
|
{
|
|
Type = 669;
|
|
num17 = 6f;
|
|
num16 = 24;
|
|
num18 = 10;
|
|
num19 = 120;
|
|
maxValue2 = 60;
|
|
num20 = 16f;
|
|
KnockBack = 9f;
|
|
}
|
|
else if (this.type == 588)
|
|
{
|
|
Type = 721;
|
|
num17 = 8f;
|
|
num16 = 15;
|
|
num18 = 5;
|
|
num19 = 20;
|
|
maxValue2 = 10;
|
|
num20 = 16f;
|
|
KnockBack = 9f;
|
|
}
|
|
else if (this.type == 208)
|
|
{
|
|
Type = 588;
|
|
num17 = 6f;
|
|
num16 = 30;
|
|
num18 = 10;
|
|
num19 = 60;
|
|
maxValue2 = 120;
|
|
num20 = 16f;
|
|
KnockBack = 6f;
|
|
}
|
|
else if (this.type == 17)
|
|
{
|
|
Type = 48;
|
|
num17 = 9f;
|
|
num16 = 12;
|
|
num18 = 10;
|
|
num19 = 60;
|
|
maxValue2 = 60;
|
|
num20 = 16f;
|
|
KnockBack = 1.5f;
|
|
}
|
|
else if (this.type == 369)
|
|
{
|
|
Type = 520;
|
|
num17 = 12f;
|
|
num16 = 10;
|
|
num18 = 10;
|
|
num19 = 0;
|
|
maxValue2 = 1;
|
|
num20 = 16f;
|
|
KnockBack = 3f;
|
|
}
|
|
else if (this.type == 453)
|
|
{
|
|
Type = 21;
|
|
num17 = 14f;
|
|
num16 = 14;
|
|
num18 = 10;
|
|
num19 = 0;
|
|
maxValue2 = 1;
|
|
num20 = 16f;
|
|
KnockBack = 3f;
|
|
}
|
|
else if (this.type == 107)
|
|
{
|
|
Type = 24;
|
|
num17 = 5f;
|
|
num16 = 15;
|
|
num18 = 10;
|
|
num19 = 60;
|
|
maxValue2 = 60;
|
|
num20 = 16f;
|
|
KnockBack = 1f;
|
|
}
|
|
else if (this.type == 124)
|
|
{
|
|
Type = 582;
|
|
num17 = 10f;
|
|
num16 = 11;
|
|
num18 = 1;
|
|
num19 = 30;
|
|
maxValue2 = 30;
|
|
KnockBack = 3.5f;
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
Type = 583;
|
|
num17 = 8f;
|
|
num16 = 8;
|
|
num18 = 1;
|
|
num19 = 15;
|
|
maxValue2 = 10;
|
|
KnockBack = 2f;
|
|
num20 = 10f;
|
|
}
|
|
else if (this.type == 142)
|
|
{
|
|
Type = 589;
|
|
num17 = 7f;
|
|
num16 = 22;
|
|
num18 = 1;
|
|
num19 = 10;
|
|
maxValue2 = 1;
|
|
KnockBack = 2f;
|
|
num20 = 10f;
|
|
}
|
|
if (Main.expertMode)
|
|
num16 = (int) ((double) num16 * (double) Main.GameModeInfo.TownNPCDamageMultiplier);
|
|
int Damage = (int) ((double) num16 * (double) num1);
|
|
this.velocity.X *= 0.8f;
|
|
--this.ai[1];
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] == (double) num18 && Main.netMode != 1)
|
|
{
|
|
Vector2 vec = -Vector2.UnitY;
|
|
if (num6 == 1 && this.spriteDirection == 1 && index7 != -1)
|
|
vec = this.DirectionTo(Main.npc[index7].Center + new Vector2(0.0f, -num20 * MathHelper.Clamp(this.Distance(Main.npc[index7].Center) / num21, 0.0f, 1f)));
|
|
if (num6 == -1 && this.spriteDirection == -1 && index6 != -1)
|
|
vec = this.DirectionTo(Main.npc[index6].Center + new Vector2(0.0f, -num20 * MathHelper.Clamp(this.Distance(Main.npc[index6].Center) / num21, 0.0f, 1f)));
|
|
if (vec.HasNaNs() || Math.Sign(vec.X) != this.spriteDirection)
|
|
vec = new Vector2((float) this.spriteDirection, -1f);
|
|
Vector2 vector2 = vec * num17 + Utils.RandomVector2(Main.rand, -max, max);
|
|
int index11 = this.type != 124 ? (this.type != 142 ? Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer) : Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) Main.rand.Next(5)))) : Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) this.whoAmI));
|
|
Main.projectile[index11].npcProj = true;
|
|
Main.projectile[index11].noDropItem = true;
|
|
if (this.type == 588)
|
|
Main.projectile[index11].timeLeft = 480;
|
|
}
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = (double) this.localAI[2] == 8.0 & flag9 ? 8f : 0.0f;
|
|
this.ai[1] = (float) (num19 + Main.rand.Next(maxValue2));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[1] = this.localAI[3] = (float) (num19 / 2 + Main.rand.Next(maxValue2));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 12.0)
|
|
{
|
|
int Type = 0;
|
|
int num22 = 0;
|
|
float num23 = 0.0f;
|
|
int num24 = 0;
|
|
int num25 = 0;
|
|
int maxValue3 = 0;
|
|
float KnockBack = 0.0f;
|
|
int num26 = 0;
|
|
bool flag15 = false;
|
|
float max = 0.0f;
|
|
if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1])
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.localAI[3] = 0.0f;
|
|
}
|
|
int index12 = -1;
|
|
if (num6 == 1 && this.spriteDirection == 1)
|
|
index12 = index7;
|
|
if (num6 == -1 && this.spriteDirection == -1)
|
|
index12 = index6;
|
|
if (this.type == 19)
|
|
{
|
|
Type = 14;
|
|
num23 = 13f;
|
|
num22 = 24;
|
|
num25 = 14;
|
|
maxValue3 = 4;
|
|
KnockBack = 3f;
|
|
num24 = 1;
|
|
max = 0.5f;
|
|
if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1])
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.localAI[3] = 0.0f;
|
|
}
|
|
if (Main.hardMode)
|
|
{
|
|
num22 = 15;
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 10;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 20;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 30;
|
|
flag15 = true;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 227)
|
|
{
|
|
Type = 587;
|
|
num23 = 10f;
|
|
num22 = 8;
|
|
num25 = 10;
|
|
maxValue3 = 1;
|
|
KnockBack = 1.75f;
|
|
num24 = 1;
|
|
max = 0.5f;
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 12;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 24;
|
|
flag15 = true;
|
|
}
|
|
if (Main.hardMode)
|
|
num22 += 2;
|
|
}
|
|
else if (this.type == 368)
|
|
{
|
|
Type = 14;
|
|
num23 = 13f;
|
|
num22 = 24;
|
|
num25 = 12;
|
|
maxValue3 = 5;
|
|
KnockBack = 2f;
|
|
num24 = 1;
|
|
max = 0.2f;
|
|
if (Main.hardMode)
|
|
{
|
|
num22 = 30;
|
|
Type = 357;
|
|
}
|
|
}
|
|
else if (this.type == 22)
|
|
{
|
|
num23 = 10f;
|
|
num22 = 8;
|
|
num24 = 1;
|
|
if (Main.hardMode)
|
|
{
|
|
Type = 2;
|
|
num25 = 15;
|
|
maxValue3 = 10;
|
|
num22 += 6;
|
|
}
|
|
else
|
|
{
|
|
Type = 1;
|
|
num25 = 30;
|
|
maxValue3 = 20;
|
|
}
|
|
KnockBack = 2.75f;
|
|
num26 = 4;
|
|
max = 0.7f;
|
|
}
|
|
else if (this.type == 228)
|
|
{
|
|
Type = 267;
|
|
num23 = 14f;
|
|
num22 = 20;
|
|
num24 = 1;
|
|
num25 = 10;
|
|
maxValue3 = 1;
|
|
KnockBack = 3f;
|
|
num26 = 6;
|
|
max = 0.4f;
|
|
}
|
|
else if (this.type == 178)
|
|
{
|
|
Type = 242;
|
|
num23 = 13f;
|
|
num22 = 15;
|
|
num25 = 10;
|
|
maxValue3 = 1;
|
|
KnockBack = 2f;
|
|
num24 = 1;
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 8;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 16;
|
|
flag15 = true;
|
|
}
|
|
max = 0.3f;
|
|
}
|
|
else if (this.type == 229)
|
|
{
|
|
Type = 14;
|
|
num23 = 14f;
|
|
num22 = 24;
|
|
num25 = 10;
|
|
maxValue3 = 1;
|
|
KnockBack = 2f;
|
|
num24 = 1;
|
|
max = 0.7f;
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 16;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 24;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 32;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 40;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] > (double) num24)
|
|
{
|
|
num24 = 48;
|
|
flag15 = true;
|
|
}
|
|
if ((double) this.localAI[3] == 0.0 && index12 != -1 && (double) this.Distance(Main.npc[index12].Center) < (double) NPCID.Sets.PrettySafe[this.type])
|
|
{
|
|
max = 0.1f;
|
|
Type = 162;
|
|
num22 = 50;
|
|
KnockBack = 10f;
|
|
num23 = 24f;
|
|
}
|
|
}
|
|
else if (this.type == 209)
|
|
{
|
|
Type = Utils.SelectRandom<int>(Main.rand, 134, 133, 135);
|
|
num24 = 1;
|
|
switch (Type)
|
|
{
|
|
case 133:
|
|
num23 = 10f;
|
|
num22 = 25;
|
|
num25 = 10;
|
|
maxValue3 = 1;
|
|
KnockBack = 6f;
|
|
max = 0.2f;
|
|
break;
|
|
case 134:
|
|
num23 = 13f;
|
|
num22 = 20;
|
|
num25 = 20;
|
|
maxValue3 = 10;
|
|
KnockBack = 4f;
|
|
max = 0.1f;
|
|
break;
|
|
case 135:
|
|
num23 = 12f;
|
|
num22 = 30;
|
|
num25 = 30;
|
|
maxValue3 = 10;
|
|
KnockBack = 7f;
|
|
max = 0.2f;
|
|
break;
|
|
}
|
|
}
|
|
if (Main.expertMode)
|
|
num22 = (int) ((double) num22 * (double) Main.GameModeInfo.TownNPCDamageMultiplier);
|
|
int Damage = (int) ((double) num22 * (double) num1);
|
|
this.velocity.X *= 0.8f;
|
|
--this.ai[1];
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] == (double) num24 && Main.netMode != 1)
|
|
{
|
|
Vector2 vec = Vector2.Zero;
|
|
if (index12 != -1)
|
|
vec = this.DirectionTo(Main.npc[index12].Center + new Vector2(0.0f, (float) -num26));
|
|
if (vec.HasNaNs() || Math.Sign(vec.X) != this.spriteDirection)
|
|
vec = new Vector2((float) this.spriteDirection, 0.0f);
|
|
Vector2 vector2 = vec * num23 + Utils.RandomVector2(Main.rand, -max, max);
|
|
int index13 = this.type != 227 ? Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer) : Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) Main.rand.Next(12) / 6f));
|
|
Main.projectile[index13].npcProj = true;
|
|
Main.projectile[index13].noDropItem = true;
|
|
}
|
|
if ((double) this.localAI[3] == (double) num24 & flag15 && index12 != -1)
|
|
{
|
|
Vector2 vector2 = this.DirectionTo(Main.npc[index12].Center);
|
|
if ((double) vector2.Y <= 0.5 && (double) vector2.Y >= -0.5)
|
|
this.ai[2] = vector2.Y;
|
|
}
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = (double) this.localAI[2] == 8.0 & flag9 ? 8f : 0.0f;
|
|
this.ai[1] = (float) (num25 + Main.rand.Next(maxValue3));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[1] = this.localAI[3] = (float) (num25 / 2 + Main.rand.Next(maxValue3));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 13.0)
|
|
{
|
|
this.velocity.X *= 0.8f;
|
|
if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1])
|
|
this.frameCounter = 0.0;
|
|
--this.ai[1];
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] == 1.0 && Main.netMode != 1)
|
|
{
|
|
Vector2 vec = this.DirectionTo(Main.npc[(int) this.ai[2]].Center + new Vector2(0.0f, -20f));
|
|
if (vec.HasNaNs() || Math.Sign(vec.X) == -this.spriteDirection)
|
|
vec = new Vector2((float) this.spriteDirection, -1f);
|
|
Vector2 vector2 = vec * 8f;
|
|
int index14 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, 584, 0, 0.0f, Main.myPlayer, this.ai[2]);
|
|
Main.projectile[index14].npcProj = true;
|
|
Main.projectile[index14].noDropItem = true;
|
|
}
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = (float) (10 + Main.rand.Next(10));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = (float) (5 + Main.rand.Next(10));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 14.0)
|
|
{
|
|
int Type = 0;
|
|
int num27 = 0;
|
|
float num28 = 0.0f;
|
|
int num29 = 0;
|
|
int num30 = 0;
|
|
int maxValue4 = 0;
|
|
float KnockBack = 0.0f;
|
|
float num31 = 0.0f;
|
|
float num32 = (float) NPCID.Sets.DangerDetectRange[this.type];
|
|
float num33 = 1f;
|
|
float max = 0.0f;
|
|
if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1])
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.localAI[3] = 0.0f;
|
|
}
|
|
int index15 = -1;
|
|
if (num6 == 1 && this.spriteDirection == 1)
|
|
index15 = index7;
|
|
if (num6 == -1 && this.spriteDirection == -1)
|
|
index15 = index6;
|
|
if (this.type == 54)
|
|
{
|
|
Type = 585;
|
|
num28 = 10f;
|
|
num27 = 16;
|
|
num29 = 30;
|
|
num30 = 20;
|
|
maxValue4 = 15;
|
|
KnockBack = 2f;
|
|
max = 1f;
|
|
}
|
|
else if (this.type == 108)
|
|
{
|
|
Type = 15;
|
|
num28 = 6f;
|
|
num27 = 18;
|
|
num29 = 15;
|
|
num30 = 15;
|
|
maxValue4 = 5;
|
|
KnockBack = 3f;
|
|
num31 = 20f;
|
|
}
|
|
else if (this.type == 160)
|
|
{
|
|
Type = 590;
|
|
num27 = 40;
|
|
num29 = 15;
|
|
num30 = 10;
|
|
maxValue4 = 1;
|
|
KnockBack = 3f;
|
|
while ((double) this.localAI[3] > (double) num29)
|
|
num29 += 15;
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
Type = 586;
|
|
num29 = 24;
|
|
num30 = 10;
|
|
maxValue4 = 1;
|
|
KnockBack = 3f;
|
|
}
|
|
if (Main.expertMode)
|
|
num27 = (int) ((double) num27 * (double) Main.GameModeInfo.TownNPCDamageMultiplier);
|
|
int Damage = (int) ((double) num27 * (double) num1);
|
|
this.velocity.X *= 0.8f;
|
|
--this.ai[1];
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] == (double) num29 && Main.netMode != 1)
|
|
{
|
|
Vector2 vec = Vector2.Zero;
|
|
if (index15 != -1)
|
|
vec = this.DirectionTo(Main.npc[index15].Center + new Vector2(0.0f, -num31 * MathHelper.Clamp(this.Distance(Main.npc[index15].Center) / num32, 0.0f, 1f)));
|
|
if (vec.HasNaNs() || Math.Sign(vec.X) != this.spriteDirection)
|
|
vec = new Vector2((float) this.spriteDirection, 0.0f);
|
|
Vector2 vector2_1 = vec * num28 + Utils.RandomVector2(Main.rand, -max, max);
|
|
if (this.type == 108)
|
|
{
|
|
int num34 = Utils.SelectRandom<int>(Main.rand, 1, 1, 1, 1, 2, 2, 3);
|
|
for (int index16 = 0; index16 < num34; ++index16)
|
|
{
|
|
Vector2 vector2_2 = Utils.RandomVector2(Main.rand, -3.4f, 3.4f);
|
|
int index17 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2_1.X + vector2_2.X, vector2_1.Y + vector2_2.Y, Type, Damage, KnockBack, Main.myPlayer);
|
|
Main.projectile[index17].npcProj = true;
|
|
Main.projectile[index17].noDropItem = true;
|
|
}
|
|
}
|
|
else if (this.type == 160)
|
|
{
|
|
if (index15 != -1)
|
|
{
|
|
Vector2 vector2_3 = Main.npc[index15].position - Main.npc[index15].Size * 2f + Main.npc[index15].Size * Utils.RandomVector2(Main.rand, 0.0f, 1f) * 5f;
|
|
for (int index18 = 10; index18 > 0 && WorldGen.SolidTile(Framing.GetTileSafely((int) vector2_3.X / 16, (int) vector2_3.Y / 16)); vector2_3 = Main.npc[index15].position - Main.npc[index15].Size * 2f + Main.npc[index15].Size * Utils.RandomVector2(Main.rand, 0.0f, 1f) * 5f)
|
|
--index18;
|
|
int index19 = Projectile.NewProjectile(vector2_3.X, vector2_3.Y, 0.0f, 0.0f, Type, Damage, KnockBack, Main.myPlayer);
|
|
Main.projectile[index19].npcProj = true;
|
|
Main.projectile[index19].noDropItem = true;
|
|
}
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
int index20 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2_1.X, vector2_1.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) this.whoAmI));
|
|
Main.projectile[index20].npcProj = true;
|
|
Main.projectile[index20].noDropItem = true;
|
|
}
|
|
else
|
|
{
|
|
int index21 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2_1.X, vector2_1.Y, Type, Damage, KnockBack, Main.myPlayer);
|
|
Main.projectile[index21].npcProj = true;
|
|
Main.projectile[index21].noDropItem = true;
|
|
}
|
|
}
|
|
if ((double) num33 > 0.0)
|
|
{
|
|
Vector3 vector3 = NPCID.Sets.MagicAuraColor[this.type].ToVector3() * num33;
|
|
Lighting.AddLight(this.Center, vector3.X, vector3.Y, vector3.Z);
|
|
}
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = (double) this.localAI[2] == 8.0 & flag9 ? 8f : 0.0f;
|
|
this.ai[1] = (float) (num30 + Main.rand.Next(maxValue4));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[1] = this.localAI[3] = (float) (num30 / 2 + Main.rand.Next(maxValue4));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 15.0)
|
|
{
|
|
int num35 = 0;
|
|
int maxValue5 = 0;
|
|
if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1])
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.localAI[3] = 0.0f;
|
|
}
|
|
int num36 = 0;
|
|
float num37 = 0.0f;
|
|
int num38 = 0;
|
|
int num39 = 0;
|
|
if (num6 == 1)
|
|
{
|
|
int spriteDirection1 = this.spriteDirection;
|
|
}
|
|
if (num6 == -1)
|
|
{
|
|
int spriteDirection2 = this.spriteDirection;
|
|
}
|
|
if (this.type == 207)
|
|
{
|
|
num36 = 11;
|
|
num38 = num39 = 32;
|
|
num35 = 12;
|
|
maxValue5 = 6;
|
|
num37 = 4.25f;
|
|
}
|
|
else if (this.type == 441)
|
|
{
|
|
num36 = 9;
|
|
num38 = num39 = 28;
|
|
num35 = 9;
|
|
maxValue5 = 3;
|
|
num37 = 3.5f;
|
|
}
|
|
else if (this.type == 353)
|
|
{
|
|
num36 = 10;
|
|
num38 = num39 = 32;
|
|
num35 = 15;
|
|
maxValue5 = 8;
|
|
num37 = 5f;
|
|
}
|
|
else if (this.type == 637 || this.type == 638 || this.type == 656)
|
|
{
|
|
num36 = 10;
|
|
num38 = num39 = 32;
|
|
num35 = 15;
|
|
maxValue5 = 8;
|
|
num37 = 3f;
|
|
}
|
|
if (Main.expertMode)
|
|
num36 = (int) ((double) num36 * (double) Main.GameModeInfo.TownNPCDamageMultiplier);
|
|
int Damage = (int) ((double) num36 * (double) num1);
|
|
this.velocity.X *= 0.8f;
|
|
--this.ai[1];
|
|
if (Main.netMode != 1)
|
|
{
|
|
Tuple<Vector2, float> swingStats = this.GetSwingStats(NPCID.Sets.AttackTime[this.type] * 2, (int) this.ai[1], this.spriteDirection, num38, num39);
|
|
Microsoft.Xna.Framework.Rectangle itemRectangle = new Microsoft.Xna.Framework.Rectangle((int) swingStats.Item1.X, (int) swingStats.Item1.Y, num38, num39);
|
|
if (this.spriteDirection == -1)
|
|
itemRectangle.X -= num38;
|
|
itemRectangle.Y -= num39;
|
|
this.TweakSwingStats(NPCID.Sets.AttackTime[this.type] * 2, (int) this.ai[1], this.spriteDirection, ref itemRectangle);
|
|
int player = Main.myPlayer;
|
|
for (int number = 0; number < 200; ++number)
|
|
{
|
|
NPC npc = Main.npc[number];
|
|
if (npc.active && npc.immune[player] == 0 && !npc.dontTakeDamage && !npc.friendly && npc.damage > 0 && itemRectangle.Intersects(npc.Hitbox) && (npc.noTileCollide || Collision.CanHit(this.position, this.width, this.height, npc.position, npc.width, npc.height)))
|
|
{
|
|
npc.StrikeNPCNoInteraction(Damage, num37, this.spriteDirection);
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(28, number: number, number2: ((float) Damage), number3: num37, number4: ((float) this.spriteDirection));
|
|
npc.netUpdate = true;
|
|
npc.immune[player] = (int) this.ai[1] + 2;
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
bool flag16 = false;
|
|
if (flag9)
|
|
{
|
|
if (!Collision.CanHit(this.Center, 0, 0, this.Center + Vector2.UnitX * (float) -num6 * 32f, 0, 0) || (double) this.localAI[2] == 8.0)
|
|
flag16 = true;
|
|
if (flag16)
|
|
{
|
|
int num40 = NPCID.Sets.AttackTime[this.type];
|
|
int index22 = num6 == 1 ? index7 : index6;
|
|
int index23 = num6 == 1 ? index6 : index7;
|
|
if (index22 != -1 && !Collision.CanHit(this.Center, 0, 0, Main.npc[index22].Center, 0, 0))
|
|
index22 = index23 == -1 || !Collision.CanHit(this.Center, 0, 0, Main.npc[index23].Center, 0, 0) ? -1 : index23;
|
|
if (index22 != -1)
|
|
{
|
|
this.ai[0] = 15f;
|
|
this.ai[1] = (float) num40;
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = (double) this.position.X < (double) Main.npc[index22].position.X ? 1 : -1;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
flag16 = false;
|
|
}
|
|
}
|
|
if (!flag16)
|
|
{
|
|
this.ai[0] = (double) this.localAI[2] == 8.0 & flag9 ? 8f : 0.0f;
|
|
this.ai[1] = (float) (num35 + Main.rand.Next(maxValue5));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[1] = this.localAI[3] = (float) (num35 / 2 + Main.rand.Next(maxValue5));
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
if (flag8 && this.wet)
|
|
{
|
|
if (flag7)
|
|
this.ai[1] = 50f;
|
|
if (this.collideX)
|
|
{
|
|
this.direction *= -1;
|
|
this.velocity.X *= -0.25f;
|
|
}
|
|
float waterLineHeight;
|
|
if (Collision.GetWaterLine(this.Center.ToTileCoordinates(), out waterLineHeight))
|
|
{
|
|
float num41 = this.Center.Y + 1f;
|
|
if ((double) this.Center.Y > (double) waterLineHeight)
|
|
{
|
|
this.velocity.Y -= 0.8f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
if ((double) num41 + (double) this.velocity.Y < (double) waterLineHeight)
|
|
this.velocity.Y = waterLineHeight - num41;
|
|
}
|
|
else
|
|
this.velocity.Y = MathHelper.Min(this.velocity.Y, waterLineHeight - num41);
|
|
}
|
|
else
|
|
this.velocity.Y -= 0.2f;
|
|
}
|
|
if (Main.netMode == 1 || !this.isLikeATownNPC || flag3)
|
|
return;
|
|
bool flag17 = (double) this.ai[0] < 2.0 && !flag9;
|
|
bool flag18 = ((double) this.ai[0] < 2.0 || (double) this.ai[0] == 8.0) && flag9 | flag10;
|
|
if ((double) this.localAI[1] > 0.0)
|
|
--this.localAI[1];
|
|
if ((double) this.localAI[1] > 0.0)
|
|
flag18 = false;
|
|
if (flag18 && this.type == 124 && (double) this.localAI[0] == 1.0)
|
|
flag18 = false;
|
|
if (flag18 && this.type == 20)
|
|
{
|
|
flag18 = false;
|
|
for (int index24 = 0; index24 < 200; ++index24)
|
|
{
|
|
NPC npc = Main.npc[index24];
|
|
if (npc.active && npc.townNPC && (double) this.Distance(npc.Center) <= 1200.0 && npc.FindBuffIndex(165) == -1)
|
|
{
|
|
flag18 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (this.CanTalk & flag17 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(300) == 0)
|
|
{
|
|
int num42 = 420;
|
|
int num43 = Main.rand.Next(2) != 0 ? num42 * Main.rand.Next(1, 3) : num42 * Main.rand.Next(1, 4);
|
|
int num44 = 100;
|
|
int num45 = 20;
|
|
for (int index25 = 0; index25 < 200; ++index25)
|
|
{
|
|
NPC npc = Main.npc[index25];
|
|
bool flag19 = (double) npc.ai[0] == 1.0 && npc.closeDoor || (double) npc.ai[0] == 1.0 && (double) npc.ai[1] > 200.0 || (double) npc.ai[0] > 1.0;
|
|
if (npc != this && npc.active && npc.CanBeTalkedTo && !flag19 && (double) npc.Distance(this.Center) < (double) num44 && (double) npc.Distance(this.Center) > (double) num45 && Collision.CanHit(this.Center, 0, 0, npc.Center, 0, 0))
|
|
{
|
|
int directionInt = ((double) this.position.X < (double) npc.position.X).ToDirectionInt();
|
|
this.ai[0] = 3f;
|
|
this.ai[1] = (float) num43;
|
|
this.ai[2] = (float) index25;
|
|
this.direction = directionInt;
|
|
this.netUpdate = true;
|
|
npc.ai[0] = 4f;
|
|
npc.ai[1] = (float) num43;
|
|
npc.ai[2] = (float) this.whoAmI;
|
|
npc.direction = -directionInt;
|
|
npc.netUpdate = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.CanTalk & flag17 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1800) == 0)
|
|
{
|
|
int num46 = 420;
|
|
int num47 = Main.rand.Next(2) != 0 ? num46 * Main.rand.Next(1, 3) : num46 * Main.rand.Next(1, 4);
|
|
int num48 = 100;
|
|
int num49 = 20;
|
|
for (int index26 = 0; index26 < 200; ++index26)
|
|
{
|
|
NPC npc = Main.npc[index26];
|
|
bool flag20 = (double) npc.ai[0] == 1.0 && npc.closeDoor || (double) npc.ai[0] == 1.0 && (double) npc.ai[1] > 200.0 || (double) npc.ai[0] > 1.0;
|
|
if (npc != this && npc.active && npc.CanBeTalkedTo && !NPCID.Sets.IsTownPet[npc.type] && !flag20 && (double) npc.Distance(this.Center) < (double) num48 && (double) npc.Distance(this.Center) > (double) num49 && Collision.CanHit(this.Center, 0, 0, npc.Center, 0, 0))
|
|
{
|
|
int directionInt = ((double) this.position.X < (double) npc.position.X).ToDirectionInt();
|
|
this.ai[0] = 16f;
|
|
this.ai[1] = (float) num47;
|
|
this.ai[2] = (float) index26;
|
|
this.localAI[2] = (float) Main.rand.Next(4);
|
|
this.localAI[3] = (float) Main.rand.Next(3 - (int) this.localAI[2]);
|
|
this.direction = directionInt;
|
|
this.netUpdate = true;
|
|
npc.ai[0] = 17f;
|
|
npc.ai[1] = (float) num47;
|
|
npc.ai[2] = (float) this.whoAmI;
|
|
npc.localAI[2] = 0.0f;
|
|
npc.localAI[3] = 0.0f;
|
|
npc.direction = -directionInt;
|
|
npc.netUpdate = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (!NPCID.Sets.IsTownPet[this.type] & flag17 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1200) == 0 && (this.type == 208 || BirthdayParty.PartyIsUp && NPCID.Sets.AttackType[this.type] == NPCID.Sets.AttackType[208]))
|
|
{
|
|
int num50 = 300;
|
|
int num51 = 150;
|
|
for (int index27 = 0; index27 < (int) byte.MaxValue; ++index27)
|
|
{
|
|
Player player = Main.player[index27];
|
|
if (player.active && !player.dead && (double) player.Distance(this.Center) < (double) num51 && Collision.CanHitLine(this.Top, 0, 0, player.Top, 0, 0))
|
|
{
|
|
int directionInt = ((double) this.position.X < (double) player.position.X).ToDirectionInt();
|
|
this.ai[0] = 6f;
|
|
this.ai[1] = (float) num50;
|
|
this.ai[2] = (float) index27;
|
|
this.direction = directionInt;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (flag17 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(600) == 0 && this.type == 550)
|
|
{
|
|
int num52 = 300;
|
|
int num53 = 150;
|
|
for (int index28 = 0; index28 < (int) byte.MaxValue; ++index28)
|
|
{
|
|
Player player = Main.player[index28];
|
|
if (player.active && !player.dead && (double) player.Distance(this.Center) < (double) num53 && Collision.CanHitLine(this.Top, 0, 0, player.Top, 0, 0))
|
|
{
|
|
int directionInt = ((double) this.position.X < (double) player.position.X).ToDirectionInt();
|
|
this.ai[0] = 18f;
|
|
this.ai[1] = (float) num52;
|
|
this.ai[2] = (float) index28;
|
|
this.direction = directionInt;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (!NPCID.Sets.IsTownPet[this.type] & flag17 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1800) == 0)
|
|
{
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = (float) (45 * Main.rand.Next(1, 2));
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag17 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(600) == 0 && this.type == 229 && !flag10)
|
|
{
|
|
this.ai[0] = 11f;
|
|
this.ai[1] = (float) (30 * Main.rand.Next(1, 4));
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag17 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1200) == 0)
|
|
{
|
|
int num54 = 220;
|
|
int num55 = 150;
|
|
for (int index29 = 0; index29 < (int) byte.MaxValue; ++index29)
|
|
{
|
|
Player player = Main.player[index29];
|
|
if (player.CanBeTalkedTo && (double) player.Distance(this.Center) < (double) num55 && Collision.CanHitLine(this.Top, 0, 0, player.Top, 0, 0))
|
|
{
|
|
int directionInt = ((double) this.position.X < (double) player.position.X).ToDirectionInt();
|
|
this.ai[0] = 7f;
|
|
this.ai[1] = (float) num54;
|
|
this.ai[2] = (float) index29;
|
|
this.direction = directionInt;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (flag17 && (double) this.ai[0] == 1.0 && (double) this.velocity.Y == 0.0 && maxValue1 > 0 && Main.rand.Next(maxValue1) == 0)
|
|
{
|
|
Point tileCoordinates = (this.Bottom + Vector2.UnitY * -2f).ToTileCoordinates();
|
|
bool flag21 = WorldGen.InWorld(tileCoordinates.X, tileCoordinates.Y, 1);
|
|
if (flag21)
|
|
{
|
|
for (int index30 = 0; index30 < 200; ++index30)
|
|
{
|
|
if (Main.npc[index30].active && Main.npc[index30].aiStyle == 7 && Main.npc[index30].townNPC && (double) Main.npc[index30].ai[0] == 5.0 && (Main.npc[index30].Bottom + Vector2.UnitY * -2f).ToTileCoordinates() == tileCoordinates)
|
|
{
|
|
flag21 = false;
|
|
break;
|
|
}
|
|
}
|
|
for (int index31 = 0; index31 < (int) byte.MaxValue; ++index31)
|
|
{
|
|
if (Main.player[index31].active && Main.player[index31].sitting.isSitting && Main.player[index31].Center.ToTileCoordinates() == tileCoordinates)
|
|
{
|
|
flag21 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag21)
|
|
{
|
|
Tile tile = Main.tile[tileCoordinates.X, tileCoordinates.Y];
|
|
bool flag22 = tile.type == (ushort) 15 || tile.type == (ushort) 497;
|
|
if (flag22 && tile.type == (ushort) 15 && tile.frameY == (short) 1098)
|
|
flag22 = false;
|
|
if (flag22)
|
|
{
|
|
this.ai[0] = 5f;
|
|
this.ai[1] = (float) (900 + Main.rand.Next(10800));
|
|
this.direction = tile.frameX == (short) 0 ? -1 : 1;
|
|
this.Bottom = new Vector2((float) (tileCoordinates.X * 16 + 8 + 2 * this.direction), (float) (tileCoordinates.Y * 16 + 16));
|
|
this.velocity = Vector2.Zero;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else if (flag17 && (double) this.ai[0] == 1.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(600) == 0 && Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.TileActionAttempt(DelegateMethods.SearchAvoidedByNPCs)))
|
|
{
|
|
Point tileCoordinates = (this.Center + new Vector2((float) (this.direction * 10), 0.0f)).ToTileCoordinates();
|
|
bool flag23 = WorldGen.InWorld(tileCoordinates.X, tileCoordinates.Y, 1);
|
|
if (flag23)
|
|
{
|
|
Tile tileSafely = Framing.GetTileSafely(tileCoordinates.X, tileCoordinates.Y);
|
|
if (!tileSafely.nactive() || !TileID.Sets.InteractibleByNPCs[(int) tileSafely.type])
|
|
flag23 = false;
|
|
}
|
|
if (flag23)
|
|
{
|
|
this.ai[0] = 9f;
|
|
this.ai[1] = (float) (40 + Main.rand.Next(90));
|
|
this.velocity = Vector2.Zero;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (Main.netMode != 1 && (double) this.ai[0] < 2.0 && (double) this.velocity.Y == 0.0 && this.type == 18 && this.breath > 0)
|
|
{
|
|
int index32 = -1;
|
|
for (int index33 = 0; index33 < 200; ++index33)
|
|
{
|
|
NPC npc = Main.npc[index33];
|
|
if (npc.active && npc.townNPC && npc.life != npc.lifeMax && (index32 == -1 || npc.lifeMax - npc.life > Main.npc[index32].lifeMax - Main.npc[index32].life) && Collision.CanHitLine(this.position, this.width, this.height, npc.position, npc.width, npc.height) && (double) this.Distance(npc.Center) < 500.0)
|
|
index32 = index33;
|
|
}
|
|
if (index32 != -1)
|
|
{
|
|
this.ai[0] = 13f;
|
|
this.ai[1] = 34f;
|
|
this.ai[2] = (float) index32;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = (double) this.position.X < (double) Main.npc[index32].position.X ? 1 : -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (flag18 && (double) this.velocity.Y == 0.0 && NPCID.Sets.AttackType[this.type] == 0 && NPCID.Sets.AttackAverageChance[this.type] > 0 && Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) == 0)
|
|
{
|
|
int num56 = NPCID.Sets.AttackTime[this.type];
|
|
int index34 = num6 == 1 ? index7 : index6;
|
|
int index35 = num6 == 1 ? index6 : index7;
|
|
if (index34 != -1 && !Collision.CanHit(this.Center, 0, 0, Main.npc[index34].Center, 0, 0))
|
|
index34 = index35 == -1 || !Collision.CanHit(this.Center, 0, 0, Main.npc[index35].Center, 0, 0) ? -1 : index35;
|
|
bool flag24 = index34 != -1;
|
|
if (flag24 && this.type == 633)
|
|
flag24 = (double) Vector2.Distance(this.Center, Main.npc[index34].Center) <= 50.0;
|
|
if (flag24)
|
|
{
|
|
this.localAI[2] = this.ai[0];
|
|
this.ai[0] = 10f;
|
|
this.ai[1] = (float) num56;
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = (double) this.position.X < (double) Main.npc[index34].position.X ? 1 : -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (flag18 && (double) this.velocity.Y == 0.0 && NPCID.Sets.AttackType[this.type] == 1 && NPCID.Sets.AttackAverageChance[this.type] > 0 && Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) == 0)
|
|
{
|
|
int num57 = NPCID.Sets.AttackTime[this.type];
|
|
int index36 = num6 == 1 ? index7 : index6;
|
|
int index37 = num6 == 1 ? index6 : index7;
|
|
if (index36 != -1 && !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index36].Center, 0, 0))
|
|
index36 = index37 == -1 || !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index37].Center, 0, 0) ? -1 : index37;
|
|
if (index36 != -1)
|
|
{
|
|
Vector2 vector2 = this.DirectionTo(Main.npc[index36].Center);
|
|
if ((double) vector2.Y <= 0.5 && (double) vector2.Y >= -0.5)
|
|
{
|
|
this.localAI[2] = this.ai[0];
|
|
this.ai[0] = 12f;
|
|
this.ai[1] = (float) num57;
|
|
this.ai[2] = vector2.Y;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = (double) this.position.X < (double) Main.npc[index36].position.X ? 1 : -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
if (flag18 && (double) this.velocity.Y == 0.0 && NPCID.Sets.AttackType[this.type] == 2 && NPCID.Sets.AttackAverageChance[this.type] > 0 && Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) == 0)
|
|
{
|
|
int num58 = NPCID.Sets.AttackTime[this.type];
|
|
int index38 = num6 == 1 ? index7 : index6;
|
|
int index39 = num6 == 1 ? index6 : index7;
|
|
if (index38 != -1 && !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index38].Center, 0, 0))
|
|
index38 = index39 == -1 || !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index39].Center, 0, 0) ? -1 : index39;
|
|
if (index38 != -1)
|
|
{
|
|
this.localAI[2] = this.ai[0];
|
|
this.ai[0] = 14f;
|
|
this.ai[1] = (float) num58;
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = (double) this.position.X < (double) Main.npc[index38].position.X ? 1 : -1;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
this.localAI[2] = this.ai[0];
|
|
this.ai[0] = 14f;
|
|
this.ai[1] = (float) num58;
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (!flag18 || (double) this.velocity.Y != 0.0 || NPCID.Sets.AttackType[this.type] != 3 || NPCID.Sets.AttackAverageChance[this.type] <= 0 || Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) != 0)
|
|
return;
|
|
int num59 = NPCID.Sets.AttackTime[this.type];
|
|
int index40 = num6 == 1 ? index7 : index6;
|
|
int index41 = num6 == 1 ? index6 : index7;
|
|
if (index40 != -1 && !Collision.CanHit(this.Center, 0, 0, Main.npc[index40].Center, 0, 0))
|
|
index40 = index41 == -1 || !Collision.CanHit(this.Center, 0, 0, Main.npc[index41].Center, 0, 0) ? -1 : index41;
|
|
if (index40 == -1)
|
|
return;
|
|
this.localAI[2] = this.ai[0];
|
|
this.ai[0] = 15f;
|
|
this.ai[1] = (float) num59;
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = (double) this.position.X < (double) Main.npc[index40].position.X ? 1 : -1;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AI_007_TownEntities_GetWalkPrediction(
|
|
int myTileX,
|
|
int homeFloorX,
|
|
bool canBreathUnderWater,
|
|
bool currentlyDrowning,
|
|
int tileX,
|
|
int tileY,
|
|
out bool keepwalking,
|
|
out bool avoidFalling)
|
|
{
|
|
keepwalking = false;
|
|
avoidFalling = true;
|
|
bool flag = myTileX >= homeFloorX - 35 && myTileX <= homeFloorX + 35;
|
|
if (this.townNPC && (double) this.ai[1] < 30.0)
|
|
{
|
|
keepwalking = !Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.TileActionAttempt(DelegateMethods.SearchAvoidedByNPCs));
|
|
if (!keepwalking)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle hitbox = this.Hitbox;
|
|
hitbox.X -= 20;
|
|
hitbox.Width += 40;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].friendly && index != this.whoAmI && (double) Main.npc[index].velocity.X == 0.0 && hitbox.Intersects(Main.npc[index].Hitbox))
|
|
{
|
|
keepwalking = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!keepwalking & currentlyDrowning)
|
|
keepwalking = true;
|
|
if (avoidFalling && (NPCID.Sets.TownCritter[this.type] || !flag && this.direction == Math.Sign(homeFloorX - myTileX)))
|
|
avoidFalling = false;
|
|
if (!avoidFalling)
|
|
return;
|
|
int num = 0;
|
|
for (int index = -1; index <= 4; ++index)
|
|
{
|
|
Tile tileSafely = Framing.GetTileSafely(tileX - this.direction * num, tileY + index);
|
|
if (tileSafely.lava() && tileSafely.liquid > (byte) 0)
|
|
{
|
|
avoidFalling = true;
|
|
break;
|
|
}
|
|
if (tileSafely.nactive() && Main.tileSolid[(int) tileSafely.type])
|
|
{
|
|
avoidFalling = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool AI_007_TownEntities_CheckIfWillDrown(bool currentlyDrowning)
|
|
{
|
|
bool flag1 = currentlyDrowning;
|
|
bool flag2 = false;
|
|
if (!flag1)
|
|
flag2 = Collision.DrownCollision(this.position + new Vector2((float) (this.width * this.direction), 0.0f), this.width, this.height, 1f);
|
|
return flag2 || Collision.DrownCollision(this.position + new Vector2((float) (this.width * this.direction), (float) (this.height * 2 - 16 - (flag1 ? 16 : 0))), this.width, 16 + (flag1 ? 16 : 0), 1f);
|
|
}
|
|
|
|
private void AI_007_AttemptToPlayIdleAnimationsForPets(int petIdleChance)
|
|
{
|
|
if ((double) this.velocity.X != 0.0 || Main.netMode == 1 || Main.rand.Next(petIdleChance) != 0)
|
|
return;
|
|
int num = 3;
|
|
if (this.type == 638)
|
|
num = 2;
|
|
this.ai[0] = (float) Main.rand.Next(20, 20 + num);
|
|
this.ai[1] = (float) (200 + Main.rand.Next(300));
|
|
if ((double) this.ai[0] == 20.0 && this.type == 637)
|
|
this.ai[1] = (float) (500 + Main.rand.Next(200));
|
|
if ((double) this.ai[0] == 21.0 && this.type == 638)
|
|
this.ai[1] = (float) (100 + Main.rand.Next(100));
|
|
if ((double) this.ai[0] == 22.0 && this.type == 656)
|
|
this.ai[1] = (float) (200 + Main.rand.Next(200));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
|
|
public bool NPCCanStickToWalls()
|
|
{
|
|
int num1 = (int) this.Center.X / 16;
|
|
int num2 = (int) this.Center.Y / 16;
|
|
int num3 = 0;
|
|
for (int i = num1 - 1; i <= num1 + 1; ++i)
|
|
{
|
|
for (int j = num2 - 1; j <= num2 + 1; ++j)
|
|
{
|
|
Tile tileSafely = Framing.GetTileSafely(i, j);
|
|
if ((!tileSafely.active() || !Main.tileSolid[(int) tileSafely.type] || TileID.Sets.Platforms[(int) tileSafely.type]) && tileSafely.wall > (ushort) 0)
|
|
{
|
|
++num3;
|
|
if (num3 > 4)
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void AI_003_Fighters()
|
|
{
|
|
if ((double) Main.player[this.target].position.Y + (double) Main.player[this.target].height == (double) this.position.Y + (double) this.height)
|
|
this.directionY = -1;
|
|
bool flag1 = false;
|
|
if (this.type == 624)
|
|
{
|
|
int num = (int) ((double) this.Center.X / 16.0);
|
|
int j = (int) ((double) this.Bottom.Y / 16.0);
|
|
if (Main.dayTime && WorldGen.InAPlaceWithWind(this.position, this.width, this.height))
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int index1 = Dust.NewDust(this.position, this.width, this.height, 43, Alpha: 254, newColor: Color.White, Scale: 0.5f);
|
|
Main.dust[index1].velocity *= 0.2f;
|
|
this.position = this.position - this.netOffset;
|
|
if (WorldGen.SolidTileAllowBottomSlope(num, j))
|
|
{
|
|
for (int index2 = 0; index2 < 5; ++index2)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int index3 = Dust.NewDust(this.position, this.width, this.height, 43, Alpha: 254, newColor: Color.White, Scale: 0.5f);
|
|
Main.dust[index3].velocity *= 0.2f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if (Main.netMode != 1 && TileObject.CanPlace(num, j - 1, 567, 0, this.direction, out TileObject _, true) && WorldGen.PlaceTile(num, j - 1, 567, style: Main.rand.Next(5)))
|
|
{
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendTileSquare(-1, num, j - 1, 3);
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (this.IsNPCValidForBestiaryKillCredit())
|
|
Main.BestiaryTracker.Kills.RegisterKill(this);
|
|
this.CountKillForBannersAndDropThem();
|
|
}
|
|
this.life = 0;
|
|
this.active = false;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 466)
|
|
{
|
|
int num = 200;
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
this.alpha = num;
|
|
this.TargetClosest();
|
|
if (!Main.player[this.target].dead && (double) (Main.player[this.target].Center - this.Center).Length() < 170.0)
|
|
this.ai[2] = -16f;
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y >= 0.0 && (double) this.velocity.Y <= 2.0 && !this.justHit)
|
|
return;
|
|
this.ai[2] = -16f;
|
|
return;
|
|
}
|
|
if ((double) this.ai[2] < 0.0)
|
|
{
|
|
if (this.alpha > 0)
|
|
{
|
|
this.alpha -= num / 16;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] != 0.0)
|
|
return;
|
|
this.ai[2] = 1f;
|
|
this.velocity.X = (float) (this.direction * 2);
|
|
return;
|
|
}
|
|
this.alpha = 0;
|
|
}
|
|
if (this.type == 166)
|
|
{
|
|
if (Main.netMode != 1 && Main.rand.Next(240) == 0)
|
|
{
|
|
this.ai[2] = (float) Main.rand.Next(-480, -60);
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[2] < 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
if (this.justHit)
|
|
this.ai[2] = 0.0f;
|
|
if (Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
if ((double) this.ai[2] < 0.0)
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] != 0.0)
|
|
return;
|
|
this.velocity.X = (float) this.direction * 0.1f;
|
|
return;
|
|
}
|
|
}
|
|
if (this.type == 461)
|
|
{
|
|
if (this.wet)
|
|
{
|
|
this.knockBackResist = 0.0f;
|
|
this.ai[3] = -0.10101f;
|
|
this.noGravity = true;
|
|
Vector2 center = this.Center;
|
|
this.width = 34;
|
|
this.height = 24;
|
|
this.position.X = center.X - (float) (this.width / 2);
|
|
this.position.Y = center.Y - (float) (this.height / 2);
|
|
this.TargetClosest();
|
|
if (this.collideX)
|
|
this.velocity.X = -this.oldVelocity.X;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
Vector2 vector2 = Main.player[this.target].Center - this.Center;
|
|
vector2.Normalize();
|
|
this.velocity = (this.velocity * 19f + vector2 * 5f) / 20f;
|
|
return;
|
|
}
|
|
float num = 5f;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
num = 3f;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
num = 8f;
|
|
Vector2 vector2_1 = new Vector2((float) this.direction, -1f);
|
|
vector2_1.Normalize();
|
|
vector2_1 *= num;
|
|
if ((double) num < 5.0)
|
|
{
|
|
this.velocity = (this.velocity * 24f + vector2_1) / 25f;
|
|
return;
|
|
}
|
|
this.velocity = (this.velocity * 9f + vector2_1) / 10f;
|
|
return;
|
|
}
|
|
this.knockBackResist = 0.4f * Main.GameModeInfo.KnockbackToEnemiesMultiplier;
|
|
this.noGravity = false;
|
|
Vector2 center1 = this.Center;
|
|
this.width = 18;
|
|
this.height = 40;
|
|
this.position.X = center1.X - (float) (this.width / 2);
|
|
this.position.Y = center1.Y - (float) (this.height / 2);
|
|
if ((double) this.ai[3] == -0.101010002195835)
|
|
{
|
|
this.ai[3] = 0.0f;
|
|
float num = this.velocity.Length() * 2f;
|
|
if ((double) num > 10.0)
|
|
num = 10f;
|
|
this.velocity.Normalize();
|
|
this.velocity = this.velocity * num;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
}
|
|
if (this.type == 586)
|
|
{
|
|
if (this.alpha == (int) byte.MaxValue)
|
|
{
|
|
this.TargetClosest();
|
|
this.spriteDirection = this.direction;
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
for (int index = 0; index < 35; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 5);
|
|
dust.velocity *= 1f;
|
|
dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.fadeIn = (float) (1.5 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.velocity += this.velocity * 0.5f;
|
|
}
|
|
}
|
|
this.alpha -= 15;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
this.position = this.position + this.netOffset;
|
|
if (this.alpha != 0)
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 5);
|
|
dust.velocity *= 1f;
|
|
dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.fadeIn = (float) (1.5 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.velocity += this.velocity * 0.3f;
|
|
}
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 5);
|
|
dust.velocity *= 0.0f;
|
|
dust.alpha = 120;
|
|
dust.scale = (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.velocity += this.velocity * 0.3f;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
if (this.wet)
|
|
{
|
|
this.knockBackResist = 0.0f;
|
|
this.ai[3] = -0.10101f;
|
|
this.noGravity = true;
|
|
Vector2 center = this.Center;
|
|
this.position.X = center.X - (float) (this.width / 2);
|
|
this.position.Y = center.Y - (float) (this.height / 2);
|
|
this.TargetClosest();
|
|
if (this.collideX)
|
|
this.velocity.X = -this.oldVelocity.X;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
Vector2 vector2_2 = Main.player[this.target].Center - this.Center;
|
|
vector2_2.Normalize();
|
|
float num = MathHelper.Clamp(1f + Math.Abs(this.Center.Y - Main.player[this.target].Center.Y) / 40f, 5f, 20f);
|
|
Vector2 vector2_3 = vector2_2 * num;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.velocity = (this.velocity * 29f + vector2_3) / 30f;
|
|
return;
|
|
}
|
|
this.velocity = (this.velocity * 4f + vector2_3) / 5f;
|
|
return;
|
|
}
|
|
float num1 = 5f;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
num1 = 3f;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
num1 = 8f;
|
|
Vector2 vector2 = new Vector2((float) this.direction, -1f);
|
|
vector2.Normalize();
|
|
vector2 *= num1;
|
|
if ((double) num1 < 5.0)
|
|
{
|
|
this.velocity = (this.velocity * 24f + vector2) / 25f;
|
|
return;
|
|
}
|
|
this.velocity = (this.velocity * 9f + vector2) / 10f;
|
|
return;
|
|
}
|
|
this.noGravity = false;
|
|
Vector2 center2 = this.Center;
|
|
this.position.X = center2.X - (float) (this.width / 2);
|
|
this.position.Y = center2.Y - (float) (this.height / 2);
|
|
if ((double) this.ai[3] == -0.101010002195835)
|
|
{
|
|
this.ai[3] = 0.0f;
|
|
float num = this.velocity.Length() * 2f;
|
|
if ((double) num > 15.0)
|
|
num = 15f;
|
|
this.velocity.Normalize();
|
|
this.velocity = this.velocity * num;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
}
|
|
if (this.type == 379 || this.type == 380)
|
|
{
|
|
if ((double) this.ai[3] < 0.0)
|
|
{
|
|
this.directionY = -1;
|
|
this.damage = 0;
|
|
this.velocity.X *= 0.93f;
|
|
if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
int index = (int) (-(double) this.ai[3] - 1.0);
|
|
int num = Math.Sign(Main.npc[index].Center.X - this.Center.X);
|
|
if (num != this.direction)
|
|
{
|
|
this.velocity.X = 0.0f;
|
|
this.direction = num;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.justHit && Main.netMode != 1 && (double) Main.npc[index].localAI[0] == 0.0)
|
|
Main.npc[index].localAI[0] = 1f;
|
|
if ((double) this.ai[0] < 1000.0)
|
|
this.ai[0] = 1000f;
|
|
if ((double) ++this.ai[0] < 1300.0)
|
|
return;
|
|
this.ai[0] = 1000f;
|
|
this.netUpdate = true;
|
|
return;
|
|
}
|
|
if ((double) this.ai[0] >= 1000.0)
|
|
this.ai[0] = 0.0f;
|
|
this.damage = this.defDamage;
|
|
}
|
|
if (this.type == 383 && (double) this.ai[2] == 0.0 && (double) this.localAI[0] == 0.0 && Main.netMode != 1)
|
|
{
|
|
int index = NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 384, this.whoAmI);
|
|
this.ai[2] = (float) (index + 1);
|
|
this.localAI[0] = -1f;
|
|
this.netUpdate = true;
|
|
Main.npc[index].ai[0] = (float) this.whoAmI;
|
|
Main.npc[index].netUpdate = true;
|
|
}
|
|
if (this.type == 383)
|
|
{
|
|
int index = (int) this.ai[2] - 1;
|
|
if (index != -1 && Main.npc[index].active && Main.npc[index].type == 384)
|
|
{
|
|
this.dontTakeDamage = true;
|
|
}
|
|
else
|
|
{
|
|
this.dontTakeDamage = false;
|
|
this.ai[2] = 0.0f;
|
|
if ((double) this.localAI[0] == -1.0)
|
|
this.localAI[0] = 180f;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
}
|
|
}
|
|
if (this.type == 482)
|
|
{
|
|
int num2 = 300;
|
|
int num3 = 120;
|
|
this.dontTakeDamage = false;
|
|
if ((double) this.ai[2] < 0.0)
|
|
{
|
|
this.dontTakeDamage = true;
|
|
++this.ai[2];
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) Math.Abs(this.velocity.X) < 0.001)
|
|
this.velocity.X = 1f / 1000f * (float) this.direction;
|
|
if ((double) Math.Abs(this.velocity.Y) > 1.0)
|
|
this.ai[2] += 10f;
|
|
if ((double) this.ai[2] < 0.0)
|
|
return;
|
|
this.netUpdate = true;
|
|
this.velocity.X += (float) this.direction * 0.3f;
|
|
return;
|
|
}
|
|
if ((double) this.ai[2] < (double) num2)
|
|
{
|
|
if (this.justHit)
|
|
this.ai[2] += 15f;
|
|
++this.ai[2];
|
|
}
|
|
else if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[2] = (float) -num3;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle hitbox;
|
|
if (this.type == 631)
|
|
{
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead || !Main.player[this.target].active)
|
|
this.TargetClosest((double) this.ai[2] > 0.0);
|
|
Player player = Main.player[this.target];
|
|
bool flag2 = !player.dead && player.active && (double) this.Center.Distance(player.Center) < 320.0;
|
|
int num4 = 24;
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
this.ai[3] = 65f;
|
|
if (flag2 && Collision.CanHit((Entity) player, (Entity) this))
|
|
{
|
|
this.ai[2] = 100f;
|
|
this.ai[3] = 0.0f;
|
|
this.velocity.X = (float) this.direction * 0.01f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] < 100.0)
|
|
{
|
|
++this.ai[2];
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) Math.Abs(this.velocity.X) < 0.001)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) Math.Abs(this.velocity.Y) > 1.0)
|
|
this.ai[2] = 0.0f;
|
|
if ((double) this.ai[2] == (double) (100 - num4 / 2) && Main.netMode != 1 && !player.Hitbox.Intersects(this.Hitbox) && Collision.CanHit((Entity) player, (Entity) this))
|
|
{
|
|
float num5 = 10f;
|
|
Vector2 center = this.Center;
|
|
Vector2 vec = this.DirectionTo(Main.player[this.target].Center) * num5;
|
|
if (vec.HasNaNs())
|
|
vec = new Vector2((float) this.direction * num5, 0.0f);
|
|
int Damage = this.damage / 4;
|
|
Vector2 vector2 = (vec + Utils.RandomVector2(Main.rand, -0.8f, 0.8f)).SafeNormalize(Vector2.Zero) * num5;
|
|
Projectile.NewProjectile(center.X, center.Y, vector2.X, vector2.Y, 909, Damage, 1f, Main.myPlayer);
|
|
}
|
|
if ((double) this.ai[2] < 100.0)
|
|
return;
|
|
this.ai[2] = 100f;
|
|
this.ai[3] = 0.0f;
|
|
this.velocity.X = (float) this.direction * 0.01f;
|
|
this.netUpdate = true;
|
|
return;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 && flag2)
|
|
{
|
|
hitbox = player.Hitbox;
|
|
if (hitbox.Intersects(this.Hitbox) || Collision.CanHit((Entity) player, (Entity) this))
|
|
{
|
|
this.ai[2] = (float) (100 - num4);
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 480)
|
|
{
|
|
int num6 = 180;
|
|
int num7 = 300;
|
|
int num8 = 180;
|
|
int num9 = 60;
|
|
int num10 = 20;
|
|
if (this.life < this.lifeMax / 3)
|
|
{
|
|
num6 = 120;
|
|
num7 = 240;
|
|
num8 = 240;
|
|
num9 = 90;
|
|
}
|
|
if ((double) this.ai[2] > 0.0)
|
|
--this.ai[2];
|
|
else if ((double) this.ai[2] == 0.0)
|
|
{
|
|
if (((double) Main.player[this.target].Center.X < (double) this.Center.X && this.direction < 0 || (double) Main.player[this.target].Center.X > (double) this.Center.X && this.direction > 0) && (double) this.velocity.Y == 0.0 && (double) this.Distance(Main.player[this.target].Center) < 900.0 && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
this.ai[2] = (float) (-num8 - num10);
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] < 0.0 && (double) this.ai[2] < (double) -num8)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) this.velocity.Y < -2.0 || (double) this.velocity.Y > 4.0 || this.justHit)
|
|
{
|
|
this.ai[2] = (float) num6;
|
|
}
|
|
else
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] == 0.0)
|
|
this.ai[2] = (float) num7;
|
|
}
|
|
float num11 = this.ai[2] + (float) num8 + (float) num10;
|
|
if ((double) num11 == 1.0)
|
|
SoundEngine.PlaySound(4, (int) this.position.X, (int) this.position.Y, 17);
|
|
if ((double) num11 < (double) num10)
|
|
{
|
|
Vector2 Position = this.Top + new Vector2((float) (this.spriteDirection * 6), 6f);
|
|
float num12 = MathHelper.Lerp(20f, 30f, (float) (((double) num11 * 3.0 + 50.0) / 182.0));
|
|
double num13 = (double) Main.rand.NextFloat();
|
|
for (float num14 = 0.0f; (double) num14 < 2.0; ++num14)
|
|
{
|
|
Vector2 vector2 = Vector2.UnitY.RotatedByRandom(6.28318548202515) * (float) ((double) Main.rand.NextFloat() * 0.5 + 0.5);
|
|
Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 228)];
|
|
dust.position = Position + vector2 * num12;
|
|
dust.noGravity = true;
|
|
dust.velocity = vector2 * 2f;
|
|
dust.scale = (float) (0.5 + (double) Main.rand.NextFloat() * 0.5);
|
|
}
|
|
}
|
|
Lighting.AddLight(this.Center, 0.9f, 0.75f, 0.1f);
|
|
this.position = this.position - this.netOffset;
|
|
return;
|
|
}
|
|
if ((double) this.ai[2] < 0.0 && (double) this.ai[2] >= (double) -num8)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Lighting.AddLight(this.Center, 0.9f, 0.75f, 0.1f);
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) this.velocity.Y < -2.0 || (double) this.velocity.Y > 4.0 || this.justHit)
|
|
{
|
|
this.ai[2] = (float) num6;
|
|
}
|
|
else
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] == 0.0)
|
|
this.ai[2] = (float) num7;
|
|
}
|
|
float num15 = this.ai[2] + (float) num8;
|
|
if ((double) num15 < 180.0 && (Main.rand.Next(3) == 0 || (double) this.ai[2] % 3.0 == 0.0))
|
|
{
|
|
Vector2 Position = this.Top + new Vector2((float) (this.spriteDirection * 10), 10f);
|
|
float num16 = MathHelper.Lerp(20f, 30f, (float) (((double) num15 * 3.0 + 50.0) / 182.0));
|
|
double num17 = (double) Main.rand.NextFloat();
|
|
for (float num18 = 0.0f; (double) num18 < 1.0; ++num18)
|
|
{
|
|
Vector2 vector2 = Vector2.UnitY.RotatedByRandom(6.28318548202515) * (float) ((double) Main.rand.NextFloat() * 0.5 + 0.5);
|
|
Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 228)];
|
|
dust.position = Position + vector2 * num16;
|
|
dust.noGravity = true;
|
|
dust.velocity = vector2 * 4f;
|
|
dust.scale = 0.5f + Main.rand.NextFloat();
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
if (Main.netMode == 2)
|
|
return;
|
|
Player player1 = Main.player[Main.myPlayer];
|
|
int player2 = Main.myPlayer;
|
|
if (player1.dead || !player1.active || player1.FindBuffIndex(156) != -1)
|
|
return;
|
|
Vector2 vector2_4 = player1.Center - this.Center;
|
|
if ((double) vector2_4.Length() >= 700.0)
|
|
return;
|
|
bool flag3 = (double) vector2_4.Length() < 30.0;
|
|
if (!flag3)
|
|
{
|
|
float x = 0.7853982f.ToRotationVector2().X;
|
|
Vector2 vector2_5 = Vector2.Normalize(vector2_4);
|
|
if ((double) vector2_5.X > (double) x || (double) vector2_5.X < -(double) x)
|
|
flag3 = true;
|
|
}
|
|
if (((double) player1.Center.X >= (double) this.Center.X || this.direction >= 0 || player1.direction <= 0) && ((double) player1.Center.X <= (double) this.Center.X || this.direction <= 0 || player1.direction >= 0) || !flag3 || (Collision.CanHitLine(this.Center, 1, 1, player1.Center, 1, 1) || Collision.CanHitLine(this.Center - Vector2.UnitY * 16f, 1, 1, player1.Center, 1, 1) ? 1 : (Collision.CanHitLine(this.Center + Vector2.UnitY * 8f, 1, 1, player1.Center, 1, 1) ? 1 : 0)) == 0 || player1.creativeGodMode)
|
|
return;
|
|
player1.AddBuff(156, num9 + (int) this.ai[2] * -1);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 471)
|
|
{
|
|
if ((double) this.ai[3] < 0.0)
|
|
{
|
|
this.knockBackResist = 0.0f;
|
|
this.defense = (int) ((double) this.defDefense * 1.1);
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] > (double) Main.rand.Next(20, 180))
|
|
{
|
|
this.localAI[3] = 0.0f;
|
|
Vector2 vector2 = this.Center + this.velocity;
|
|
NPC.NewNPC((int) vector2.X, (int) vector2.Y, 30);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.localAI[3] = 0.0f;
|
|
this.knockBackResist = 0.35f * Main.GameModeInfo.KnockbackToEnemiesMultiplier;
|
|
this.rotation *= 0.9f;
|
|
this.defense = this.defDefense;
|
|
this.noGravity = false;
|
|
this.noTileCollide = false;
|
|
}
|
|
if ((double) this.ai[3] == 1.0)
|
|
{
|
|
this.knockBackResist = 0.0f;
|
|
this.defense += 10;
|
|
}
|
|
if ((double) this.ai[3] == -1.0)
|
|
{
|
|
this.TargetClosest();
|
|
float num19 = 8f;
|
|
float num20 = 40f;
|
|
Vector2 vector2 = Main.player[this.target].Center - this.Center;
|
|
float num21 = vector2.Length();
|
|
float num22 = num19 + num21 / 200f;
|
|
vector2.Normalize();
|
|
vector2 *= num22;
|
|
this.velocity = (this.velocity * (num20 - 1f) + vector2) / num20;
|
|
if ((double) num21 >= 500.0 || Collision.SolidCollision(this.position, this.width, this.height))
|
|
return;
|
|
this.ai[3] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
return;
|
|
}
|
|
if ((double) this.ai[3] == -2.0)
|
|
{
|
|
this.velocity.Y -= 0.2f;
|
|
if ((double) this.velocity.Y < -10.0)
|
|
this.velocity.Y = -10f;
|
|
if ((double) Main.player[this.target].Center.Y - (double) this.Center.Y > 200.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.ai[3] = -3f;
|
|
this.ai[2] = (double) Main.player[this.target].Center.X <= (double) this.Center.X ? -1f : 1f;
|
|
}
|
|
this.velocity.X *= 0.99f;
|
|
return;
|
|
}
|
|
if ((double) this.ai[3] == -3.0)
|
|
{
|
|
if (this.direction == 0)
|
|
this.TargetClosest();
|
|
if ((double) this.ai[2] == 0.0)
|
|
this.ai[2] = (float) this.direction;
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.X += this.ai[2] * 0.3f;
|
|
if ((double) this.velocity.X > 10.0)
|
|
this.velocity.X = 10f;
|
|
if ((double) this.velocity.X < -10.0)
|
|
this.velocity.X = -10f;
|
|
float num = Main.player[this.target].Center.X - this.Center.X;
|
|
if ((double) this.ai[2] < 0.0 && (double) num > 300.0 || (double) this.ai[2] > 0.0 && (double) num < -300.0)
|
|
{
|
|
this.ai[3] = -4f;
|
|
this.ai[2] = 0.0f;
|
|
return;
|
|
}
|
|
if ((double) Math.Abs(num) <= 800.0)
|
|
return;
|
|
this.ai[3] = -1f;
|
|
this.ai[2] = 0.0f;
|
|
return;
|
|
}
|
|
if ((double) this.ai[3] == -4.0)
|
|
{
|
|
++this.ai[2];
|
|
this.velocity.Y += 0.1f;
|
|
if ((double) this.velocity.Length() > 4.0)
|
|
this.velocity = this.velocity * 0.9f;
|
|
int index4 = (int) this.Center.X / 16;
|
|
int index5 = (int) ((double) this.position.Y + (double) this.height + 12.0) / 16;
|
|
bool flag4 = false;
|
|
for (int index6 = index4 - 1; index6 <= index4 + 1; ++index6)
|
|
{
|
|
if (Main.tile[index6, index5] == null)
|
|
Main.tile[index4, index5] = new Tile();
|
|
if (Main.tile[index6, index5].active() && Main.tileSolid[(int) Main.tile[index6, index5].type])
|
|
flag4 = true;
|
|
}
|
|
if (flag4 && !Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.ai[3] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
else if ((double) this.ai[2] > 300.0 || (double) this.Center.Y > (double) Main.player[this.target].Center.Y + 200.0)
|
|
{
|
|
this.ai[3] = -1f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[3] == 1.0)
|
|
{
|
|
Vector2 center = this.Center;
|
|
center.Y -= 70f;
|
|
this.velocity.X *= 0.8f;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] == 60.0)
|
|
{
|
|
if (Main.netMode != 1)
|
|
NPC.NewNPC((int) center.X, (int) center.Y + 18, 472);
|
|
}
|
|
else if ((double) this.ai[2] >= 90.0)
|
|
{
|
|
this.ai[3] = -2f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
for (int index7 = 0; index7 < 2; ++index7)
|
|
{
|
|
Vector2 vector2_6 = center;
|
|
Vector2 vector2_7 = new Vector2((float) Main.rand.Next(-100, 101), (float) Main.rand.Next(-100, 101));
|
|
vector2_7.Normalize();
|
|
Vector2 vector2_8 = vector2_7 * ((float) Main.rand.Next(0, 100) * 0.1f);
|
|
Vector2 vector2_9 = vector2_8;
|
|
Vector2 Position = vector2_6 + vector2_9;
|
|
vector2_8.Normalize();
|
|
vector2_7 = vector2_8 * ((float) Main.rand.Next(50, 90) * 0.1f);
|
|
Color newColor = new Color();
|
|
int index8 = Dust.NewDust(Position, 1, 1, 27, newColor: newColor);
|
|
Main.dust[index8].velocity = -vector2_7 * 0.3f;
|
|
Main.dust[index8].alpha = 100;
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.dust[index8].noGravity = true;
|
|
Main.dust[index8].scale += 0.3f;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
++this.ai[2];
|
|
int num = 10;
|
|
if ((double) this.velocity.Y == 0.0 && NPC.CountNPCS(472) < num)
|
|
{
|
|
if ((double) this.ai[2] >= 180.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 1f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (NPC.CountNPCS(472) >= num)
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 360.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = -2f;
|
|
this.velocity.Y -= 3f;
|
|
}
|
|
}
|
|
if (this.target >= 0 && !Main.player[this.target].dead && (double) (Main.player[this.target].Center - this.Center).Length() > 800.0)
|
|
{
|
|
this.ai[3] = -1f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
if (Main.player[this.target].dead)
|
|
{
|
|
this.TargetClosest();
|
|
if (Main.player[this.target].dead)
|
|
this.EncourageDespawn(1);
|
|
}
|
|
}
|
|
if (this.type == 419)
|
|
{
|
|
this.reflectsProjectiles = false;
|
|
this.takenDamageMultiplier = 1f;
|
|
int num23 = 6;
|
|
int num24 = 10;
|
|
float num25 = 16f;
|
|
if ((double) this.ai[2] > 0.0)
|
|
--this.ai[2];
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
if (((double) Main.player[this.target].Center.X < (double) this.Center.X && this.direction < 0 || (double) Main.player[this.target].Center.X > (double) this.Center.X && this.direction > 0) && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
this.ai[2] = -1f;
|
|
this.netUpdate = true;
|
|
this.TargetClosest();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] < 0.0 && (double) this.ai[2] > (double) -num23)
|
|
{
|
|
--this.ai[2];
|
|
this.velocity.X *= 0.9f;
|
|
return;
|
|
}
|
|
if ((double) this.ai[2] == (double) -num23)
|
|
{
|
|
--this.ai[2];
|
|
this.TargetClosest();
|
|
Vector2 vec = this.DirectionTo(Main.player[this.target].Top + new Vector2(0.0f, -30f));
|
|
if (vec.HasNaNs())
|
|
vec = Vector2.Normalize(new Vector2((float) this.spriteDirection, -1f));
|
|
this.velocity = vec * num25;
|
|
this.netUpdate = true;
|
|
return;
|
|
}
|
|
if ((double) this.ai[2] < (double) -num23)
|
|
{
|
|
--this.ai[2];
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.ai[2] = 60f;
|
|
else if ((double) this.ai[2] < (double) (-num23 - num24))
|
|
{
|
|
this.velocity.Y += 0.15f;
|
|
if ((double) this.velocity.Y > 24.0)
|
|
this.velocity.Y = 24f;
|
|
}
|
|
this.reflectsProjectiles = true;
|
|
this.takenDamageMultiplier = 3f;
|
|
if (!this.justHit)
|
|
return;
|
|
this.ai[2] = 60f;
|
|
this.netUpdate = true;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 415)
|
|
{
|
|
int num26 = 42;
|
|
int num27 = 18;
|
|
if (this.justHit)
|
|
{
|
|
this.ai[2] = 120f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[2] > 0.0)
|
|
--this.ai[2];
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
int num28 = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 516)
|
|
++num28;
|
|
}
|
|
if (num28 > 6)
|
|
this.ai[2] = 90f;
|
|
else if (((double) Main.player[this.target].Center.X < (double) this.Center.X && this.direction < 0 || (double) Main.player[this.target].Center.X > (double) this.Center.X && this.direction > 0) && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
this.ai[2] = -1f;
|
|
this.netUpdate = true;
|
|
this.TargetClosest();
|
|
}
|
|
}
|
|
else if ((double) this.ai[2] < 0.0 && (double) this.ai[2] > (double) -num26)
|
|
{
|
|
--this.ai[2];
|
|
if ((double) this.ai[2] == (double) -num26)
|
|
this.ai[2] = (float) (180 + 30 * Main.rand.Next(10));
|
|
this.velocity.X *= 0.8f;
|
|
if ((double) this.ai[2] != (double) -num27 && (double) this.ai[2] != (double) (-num27 - 8) && (double) this.ai[2] != (double) (-num27 - 16))
|
|
return;
|
|
this.position = this.position + this.netOffset;
|
|
for (int index = 0; index < 20; ++index)
|
|
{
|
|
Vector2 Position = this.Center + Vector2.UnitX * (float) this.spriteDirection * 40f;
|
|
Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 259)];
|
|
Vector2 vector2 = Vector2.UnitY.RotatedByRandom(6.28318548202515);
|
|
dust.position = Position + vector2 * 4f;
|
|
dust.velocity = vector2 * 2f + Vector2.UnitX * Main.rand.NextFloat() * (float) this.spriteDirection * 3f;
|
|
dust.scale = (float) (0.300000011920929 + (double) vector2.X * (double) -this.spriteDirection);
|
|
dust.fadeIn = 0.7f;
|
|
dust.noGravity = true;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
if ((double) this.velocity.X > -0.5 && (double) this.velocity.X < 0.5)
|
|
this.velocity.X = 0.0f;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
NPC.NewNPC((int) this.Center.X + this.spriteDirection * 45, (int) this.Center.Y + 8, 516, Target: this.target);
|
|
return;
|
|
}
|
|
}
|
|
if (this.type == 428)
|
|
{
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] >= 300.0)
|
|
{
|
|
int startX = (int) this.Center.X / 16 - 1;
|
|
int startY = (int) this.Center.Y / 16 - 1;
|
|
if (!Collision.SolidTiles(startX, startX + 2, startY, startY + 1) && Main.netMode != 1)
|
|
{
|
|
this.Transform(427);
|
|
this.life = this.lifeMax;
|
|
this.localAI[0] = 0.0f;
|
|
return;
|
|
}
|
|
}
|
|
int maxValue = (double) this.localAI[0] >= 60.0 ? ((double) this.localAI[0] >= 120.0 ? ((double) this.localAI[0] >= 180.0 ? ((double) this.localAI[0] >= 240.0 ? ((double) this.localAI[0] >= 300.0 ? 1 : 1) : 2) : 4) : 8) : 16;
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, 229)];
|
|
dust.noGravity = true;
|
|
dust.scale = 1f;
|
|
dust.noLight = true;
|
|
dust.velocity = this.DirectionFrom(dust.position) * dust.velocity.Length();
|
|
dust.position -= dust.velocity * 5f;
|
|
dust.position.X += (float) (this.direction * 6);
|
|
dust.position.Y += 4f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
if (this.type == 427)
|
|
{
|
|
++this.localAI[0];
|
|
this.localAI[0] += Math.Abs(this.velocity.X) / 2f;
|
|
if ((double) this.localAI[0] >= 1200.0 && Main.netMode != 1)
|
|
{
|
|
int startX = (int) this.Center.X / 16 - 2;
|
|
int startY = (int) this.Center.Y / 16 - 3;
|
|
if (!Collision.SolidTiles(startX, startX + 4, startY, startY + 4))
|
|
{
|
|
this.Transform(426);
|
|
this.life = this.lifeMax;
|
|
this.localAI[0] = 0.0f;
|
|
return;
|
|
}
|
|
}
|
|
int maxValue = (double) this.localAI[0] >= 360.0 ? ((double) this.localAI[0] >= 720.0 ? ((double) this.localAI[0] >= 1080.0 ? ((double) this.localAI[0] >= 1440.0 ? ((double) this.localAI[0] >= 1800.0 ? 1 : 1) : 2) : 6) : 16) : 32;
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, 229)];
|
|
dust.noGravity = true;
|
|
dust.scale = 1f;
|
|
dust.noLight = true;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
if (this.type == 590)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int num29 = (int) ((double) this.position.Y + 6.0) / 16;
|
|
if (this.spriteDirection < 0)
|
|
{
|
|
int num30 = (int) ((double) this.Center.X - 22.0) / 16;
|
|
Tile tileSafely1 = Framing.GetTileSafely(num30, num29);
|
|
Tile tileSafely2 = Framing.GetTileSafely(num30 + 1, num29);
|
|
if (WorldGen.InWorld(num30, num29) && tileSafely2.liquid == (byte) 0 && tileSafely1.liquid == (byte) 0)
|
|
{
|
|
Lighting.AddLight(num30, num29, 1f, 0.95f, 0.8f);
|
|
if (Main.rand.Next(30) == 0)
|
|
Dust.NewDust(new Vector2(this.Center.X - 22f, this.position.Y + 6f), 1, 1, 6);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int num31 = (int) ((double) this.Center.X + 14.0) / 16;
|
|
Tile tileSafely3 = Framing.GetTileSafely(num31, num29);
|
|
Tile tileSafely4 = Framing.GetTileSafely(num31 - 1, num29);
|
|
if (WorldGen.InWorld(num31, num29) && tileSafely4.liquid == (byte) 0 && tileSafely3.liquid == (byte) 0)
|
|
{
|
|
Lighting.AddLight(num31, num29, 1f, 0.95f, 0.8f);
|
|
if (Main.rand.Next(30) == 0)
|
|
Dust.NewDust(new Vector2(this.Center.X + 14f, this.position.Y + 6f), 1, 1, 6);
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
else if (this.type == 591)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
if (!this.wet)
|
|
{
|
|
if (this.spriteDirection < 0)
|
|
{
|
|
Lighting.AddLight(new Vector2(this.Center.X - 36f, this.position.Y + 24f), 1f, 0.95f, 0.8f);
|
|
if ((double) this.ai[2] == 0.0 && Main.rand.Next(30) == 0)
|
|
Dust.NewDust(new Vector2(this.Center.X - 36f, this.position.Y + 24f), 1, 1, 6);
|
|
}
|
|
else
|
|
{
|
|
Lighting.AddLight(new Vector2(this.Center.X + 28f, this.position.Y + 24f), 1f, 0.95f, 0.8f);
|
|
if ((double) this.ai[2] == 0.0 && Main.rand.Next(30) == 0)
|
|
Dust.NewDust(new Vector2(this.Center.X + 28f, this.position.Y + 24f), 1, 1, 6);
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
if ((double) this.velocity.X == 0.0)
|
|
flag6 = true;
|
|
if (this.justHit)
|
|
flag6 = false;
|
|
if (Main.netMode != 1 && this.type == 198 && (double) this.life <= (double) this.lifeMax * 0.55)
|
|
this.Transform(199);
|
|
if (Main.netMode != 1 && this.type == 348 && (double) this.life <= (double) this.lifeMax * 0.55)
|
|
this.Transform(349);
|
|
int num32 = 60;
|
|
if (this.type == 120)
|
|
{
|
|
num32 = 180;
|
|
if ((double) this.ai[3] == -120.0)
|
|
{
|
|
this.velocity = this.velocity * 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.position = this.position + this.netOffset;
|
|
SoundEngine.PlaySound(SoundID.Item8, this.position);
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num33 = this.oldPos[2].X + (float) this.width * 0.5f - vector2.X;
|
|
float num34 = this.oldPos[2].Y + (float) this.height * 0.5f - vector2.Y;
|
|
float num35 = 2f / (float) Math.Sqrt((double) num33 * (double) num33 + (double) num34 * (double) num34);
|
|
float SpeedX = num33 * num35;
|
|
float SpeedY = num34 * num35;
|
|
for (int index9 = 0; index9 < 20; ++index9)
|
|
{
|
|
int index10 = Dust.NewDust(this.position, this.width, this.height, 71, SpeedX, SpeedY, 200, Scale: 2f);
|
|
Main.dust[index10].noGravity = true;
|
|
Main.dust[index10].velocity.X *= 2f;
|
|
}
|
|
for (int index11 = 0; index11 < 20; ++index11)
|
|
{
|
|
int index12 = Dust.NewDust(this.oldPos[2], this.width, this.height, 71, -SpeedX, -SpeedY, 200, Scale: 2f);
|
|
Main.dust[index12].noGravity = true;
|
|
Main.dust[index12].velocity.X *= 2f;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
bool flag7 = false;
|
|
bool flag8 = true;
|
|
if (this.type == 343 || this.type == 47 || this.type == 67 || this.type == 109 || this.type == 110 || this.type == 111 || this.type == 120 || this.type == 163 || this.type == 164 || this.type == 239 || this.type == 168 || this.type == 199 || this.type == 206 || this.type == 214 || this.type == 215 || this.type == 216 || this.type == 217 || this.type == 218 || this.type == 219 || this.type == 220 || this.type == 226 || this.type == 243 || this.type == 251 || this.type == 257 || this.type == 258 || this.type == 290 || this.type == 291 || this.type == 292 || this.type == 293 || this.type == 305 || this.type == 306 || this.type == 307 || this.type == 308 || this.type == 309 || this.type == 348 || this.type == 349 || this.type == 350 || this.type == 351 || this.type == 379 || this.type >= 430 && this.type <= 436 || this.type == 591 || this.type == 380 || this.type == 381 || this.type == 382 || this.type == 383 || this.type == 386 || this.type == 391 || this.type >= 449 && this.type <= 452 || this.type == 466 || this.type == 464 || this.type == 166 || this.type == 469 || this.type == 468 || this.type == 471 || this.type == 470 || this.type == 480 || this.type == 481 || this.type == 482 || this.type == 411 || this.type == 424 || this.type == 409 || this.type >= 494 && this.type <= 506 || this.type == 425 || this.type == 427 || this.type == 426 || this.type == 428 || this.type == 580 || this.type == 508 || this.type == 415 || this.type == 419 || this.type == 520 || this.type >= 524 && this.type <= 527 || this.type == 528 || this.type == 529 || this.type == 530 || this.type == 532 || this.type == 582 || this.type == 624 || this.type == 631)
|
|
flag8 = false;
|
|
bool flag9 = false;
|
|
switch (this.type)
|
|
{
|
|
case 425:
|
|
case 471:
|
|
flag9 = true;
|
|
break;
|
|
}
|
|
bool flag10 = true;
|
|
switch (this.type)
|
|
{
|
|
case 110:
|
|
case 111:
|
|
case 206:
|
|
case 214:
|
|
case 215:
|
|
case 216:
|
|
case 291:
|
|
case 292:
|
|
case 293:
|
|
case 350:
|
|
case 379:
|
|
case 380:
|
|
case 381:
|
|
case 382:
|
|
case 409:
|
|
case 411:
|
|
case 424:
|
|
case 426:
|
|
case 466:
|
|
case 498:
|
|
case 499:
|
|
case 500:
|
|
case 501:
|
|
case 502:
|
|
case 503:
|
|
case 504:
|
|
case 505:
|
|
case 506:
|
|
case 520:
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
flag10 = false;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (!flag9 & flag10)
|
|
{
|
|
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))
|
|
flag7 = true;
|
|
if ((((double) this.position.X == (double) this.oldPosition.X ? 1 : ((double) this.ai[3] >= (double) num32 ? 1 : 0)) | (flag7 ? 1 : 0)) != 0)
|
|
++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) (num32 * 10))
|
|
this.ai[3] = 0.0f;
|
|
if (this.justHit)
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[3] == (double) num32)
|
|
this.netUpdate = true;
|
|
hitbox = Main.player[this.target].Hitbox;
|
|
if (hitbox.Intersects(this.Hitbox))
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
if (this.type == 463 && Main.netMode != 1)
|
|
{
|
|
if ((double) this.localAI[3] > 0.0)
|
|
--this.localAI[3];
|
|
if (this.justHit && (double) this.localAI[3] <= 0.0 && Main.rand.Next(3) == 0)
|
|
{
|
|
this.localAI[3] = 30f;
|
|
int length = Main.rand.Next(3, 6);
|
|
int[] numArray = new int[length];
|
|
int maxValue = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && !Main.player[index].dead && Collision.CanHitLine(this.position, this.width, this.height, Main.player[index].position, Main.player[index].width, Main.player[index].height))
|
|
{
|
|
numArray[maxValue] = index;
|
|
++maxValue;
|
|
if (maxValue == length)
|
|
break;
|
|
}
|
|
}
|
|
if (maxValue > 1)
|
|
{
|
|
for (int index13 = 0; index13 < 100; ++index13)
|
|
{
|
|
int index14 = Main.rand.Next(maxValue);
|
|
int index15 = index14;
|
|
while (index15 == index14)
|
|
index15 = Main.rand.Next(maxValue);
|
|
int num36 = numArray[index14];
|
|
numArray[index14] = numArray[index15];
|
|
numArray[index15] = num36;
|
|
}
|
|
}
|
|
Vector2 vector2_10 = new Vector2(-1f, -1f);
|
|
for (int index = 0; index < maxValue; ++index)
|
|
{
|
|
Vector2 vector2_11 = Main.npc[numArray[index]].Center - this.Center;
|
|
vector2_11.Normalize();
|
|
vector2_10 += vector2_11;
|
|
}
|
|
vector2_10.Normalize();
|
|
for (int index = 0; index < length; ++index)
|
|
{
|
|
float num37 = (float) Main.rand.Next(8, 13);
|
|
Vector2 vector2_12 = new Vector2((float) Main.rand.Next(-100, 101), (float) Main.rand.Next(-100, 101));
|
|
vector2_12.Normalize();
|
|
if (maxValue > 0)
|
|
{
|
|
vector2_12 += vector2_10;
|
|
vector2_12.Normalize();
|
|
}
|
|
vector2_12 *= num37;
|
|
if (maxValue > 0)
|
|
{
|
|
--maxValue;
|
|
vector2_12 = Main.player[numArray[maxValue]].Center - this.Center;
|
|
vector2_12.Normalize();
|
|
vector2_12 *= num37;
|
|
}
|
|
Projectile.NewProjectile(this.Center.X, this.position.Y + (float) (this.width / 4), vector2_12.X, vector2_12.Y, 498, (int) ((double) this.damage * 0.15), 1f);
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 460)
|
|
this.knockBackResist = (double) this.velocity.Y < -(double) NPC.gravity || (double) this.velocity.Y > (double) NPC.gravity ? 0.0f : 0.25f * Main.GameModeInfo.KnockbackToEnemiesMultiplier;
|
|
if (this.type == 469)
|
|
{
|
|
this.knockBackResist = 0.45f * Main.GameModeInfo.KnockbackToEnemiesMultiplier;
|
|
if ((double) this.ai[2] == 1.0)
|
|
this.knockBackResist = 0.0f;
|
|
bool flag11 = false;
|
|
int num38 = (int) this.Center.X / 16;
|
|
int num39 = (int) this.Center.Y / 16;
|
|
for (int index16 = num38 - 1; index16 <= num38 + 1; ++index16)
|
|
{
|
|
for (int index17 = num39 - 1; index17 <= num39 + 1; ++index17)
|
|
{
|
|
if (Main.tile[index16, index17] != null && Main.tile[index16, index17].wall > (ushort) 0)
|
|
{
|
|
flag11 = true;
|
|
break;
|
|
}
|
|
}
|
|
if (flag11)
|
|
break;
|
|
}
|
|
if ((double) this.ai[2] == 0.0 & flag11)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
flag1 = true;
|
|
this.velocity.Y = -4.6f;
|
|
this.velocity.X *= 1.3f;
|
|
}
|
|
else if ((double) this.velocity.Y > 0.0 && !Main.player[this.target].dead)
|
|
this.ai[2] = 1f;
|
|
}
|
|
if (flag11 && (double) this.ai[2] == 1.0 && !Main.player[this.target].dead && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
Vector2 vector2 = Main.player[this.target].Center - this.Center;
|
|
float num40 = vector2.Length();
|
|
vector2.Normalize();
|
|
this.velocity = (this.velocity * 29f + vector2 * (float) (4.5 + (double) num40 / 300.0)) / 30f;
|
|
this.noGravity = true;
|
|
this.ai[2] = 1f;
|
|
return;
|
|
}
|
|
this.noGravity = false;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
if (this.type == 462 && (double) this.velocity.Y == 0.0 && (double) (Main.player[this.target].Center - this.Center).Length() < 150.0 && (double) Math.Abs(this.velocity.X) > 3.0 && ((double) this.velocity.X < 0.0 && (double) this.Center.X > (double) Main.player[this.target].Center.X || (double) this.velocity.X > 0.0 && (double) this.Center.X < (double) Main.player[this.target].Center.X))
|
|
{
|
|
flag1 = true;
|
|
this.velocity.X *= 1.75f;
|
|
this.velocity.Y -= 4.5f;
|
|
if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 20.0)
|
|
this.velocity.Y -= 0.5f;
|
|
if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 40.0)
|
|
--this.velocity.Y;
|
|
if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 80.0)
|
|
this.velocity.Y -= 1.5f;
|
|
if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 100.0)
|
|
this.velocity.Y -= 1.5f;
|
|
if ((double) Math.Abs(this.velocity.X) > 7.0)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X = -7f;
|
|
else
|
|
this.velocity.X = 7f;
|
|
}
|
|
}
|
|
if (this.type == 624 && this.target < (int) byte.MaxValue)
|
|
{
|
|
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[3] = (float) num32;
|
|
this.directionY = -1;
|
|
if (this.type == 624 && (!Main.dayTime || !WorldGen.InAPlaceWithWind(this.position, this.width, this.height)) && (double) (this.Center - Main.player[this.target].Center).Length() > 500.0)
|
|
{
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) this.velocity.X <= -0.1 || (double) this.velocity.X >= 0.1)
|
|
return;
|
|
this.velocity.X = 0.0f;
|
|
return;
|
|
}
|
|
}
|
|
else if ((double) Main.player[this.target].Center.Y > (double) this.Center.Y - 128.0)
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
if ((double) this.ai[3] < (double) num32 && NPC.DespawnEncouragement_AIStyle3_Fighters_NotDiscouraged(this.type, this.position, this))
|
|
{
|
|
if ((this.type == 3 || this.type == 591 || this.type == 590 || this.type == 331 || this.type == 332 || this.type == 21 || this.type >= 449 && this.type <= 452 || this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 77 || this.type == 110 || this.type == 132 || this.type == 167 || this.type == 161 || this.type == 162 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 197 || this.type == 200 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 223 || this.type == 291 || this.type == 292 || this.type == 293 || this.type == 320 || this.type == 321 || this.type == 319 || this.type == 481 || this.type == 632 || this.type == 635) && Main.rand.Next(1000) == 0)
|
|
SoundEngine.PlaySound(14, (int) this.position.X, (int) this.position.Y);
|
|
if ((this.type == 489 || this.type == 586) && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(14, (int) this.position.X, (int) this.position.Y, this.type);
|
|
if ((this.type == 78 || this.type == 79 || this.type == 80 || this.type == 630) && Main.rand.Next(500) == 0)
|
|
SoundEngine.PlaySound(26, (int) this.position.X, (int) this.position.Y);
|
|
if (this.type == 159 && Main.rand.Next(500) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 7);
|
|
if (this.type == 162 && Main.rand.Next(500) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 6);
|
|
if (this.type == 181 && Main.rand.Next(500) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 8);
|
|
if (this.type >= 269 && this.type <= 280 && Main.rand.Next(1000) == 0)
|
|
SoundEngine.PlaySound(14, (int) this.position.X, (int) this.position.Y);
|
|
this.TargetClosest();
|
|
if (this.directionY > 0 && (double) Main.player[this.target].Center.Y <= (double) this.Bottom.Y)
|
|
this.directionY = -1;
|
|
}
|
|
else if ((double) this.ai[2] <= 0.0 || !NPC.DespawnEncouragement_AIStyle3_Fighters_CanBeBusyWithAction(this.type))
|
|
{
|
|
if (Main.dayTime && (double) this.position.Y / 16.0 < Main.worldSurface && this.type != 624 && this.type != 631)
|
|
this.EncourageDespawn(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 == 159 || this.type == 349)
|
|
{
|
|
if (this.type == 159 && ((double) this.velocity.X > 0.0 && this.direction < 0 || (double) this.velocity.X < 0.0 && this.direction > 0))
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) this.velocity.X < -6.0 || (double) this.velocity.X > 6.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 6.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 > 6.0)
|
|
this.velocity.X = 6f;
|
|
}
|
|
else if ((double) this.velocity.X > -6.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 < -6.0)
|
|
this.velocity.X = -6f;
|
|
}
|
|
}
|
|
else if (this.type == 199)
|
|
{
|
|
if ((double) this.velocity.X < -4.0 || (double) this.velocity.X > 4.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < 4.0 && this.direction == 1)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.8f;
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X > 4.0)
|
|
this.velocity.X = 4f;
|
|
}
|
|
else if ((double) this.velocity.X > -4.0 && this.direction == -1)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.8f;
|
|
this.velocity.X -= 0.1f;
|
|
if ((double) this.velocity.X < -4.0)
|
|
this.velocity.X = -4f;
|
|
}
|
|
}
|
|
else if (this.type == 120 || this.type == 166 || this.type == 213 || this.type == 258 || this.type == 528 || this.type == 529)
|
|
{
|
|
if ((double) this.velocity.X < -3.0 || (double) this.velocity.X > 3.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = 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 == 461 || this.type == 27 || this.type == 77 || this.type == 104 || this.type == 163 || this.type == 162 || this.type == 196 || this.type == 197 || this.type == 212 || this.type == 257 || this.type == 326 || this.type == 343 || this.type == 348 || this.type == 351 || this.type >= 524 && this.type <= 527 || this.type == 530)
|
|
{
|
|
if ((double) this.velocity.X < -2.0 || (double) this.velocity.X > 2.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = 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 = 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 == 294 || this.type == 295 || this.type == 296 || this.type == 47 || this.type == 73 || this.type == 140 || this.type == 164 || this.type == 239 || this.type == 167 || this.type == 168 || this.type == 185 || this.type == 198 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 217 || this.type == 218 || this.type == 219 || this.type == 226 || this.type == 181 || this.type == 254 || this.type == 338 || this.type == 339 || this.type == 340 || this.type == 342 || this.type == 385 || this.type == 389 || this.type == 462 || this.type == 463 || this.type == 466 || this.type == 464 || this.type == 469 || this.type == 470 || this.type == 480 || this.type == 482 || this.type == 425 || this.type == 429 || this.type == 586 || this.type == 631 || this.type == 635)
|
|
{
|
|
float num41 = 1.5f;
|
|
if (this.type == 294)
|
|
num41 = 2f;
|
|
else if (this.type == 295)
|
|
num41 = 1.75f;
|
|
else if (this.type == 296)
|
|
num41 = 1.25f;
|
|
else if (this.type == 201)
|
|
num41 = 1.1f;
|
|
else if (this.type == 202)
|
|
num41 = 0.9f;
|
|
else if (this.type == 203)
|
|
num41 = 1.2f;
|
|
else if (this.type == 338)
|
|
num41 = 1.75f;
|
|
else if (this.type == 339)
|
|
num41 = 1.25f;
|
|
else if (this.type == 340)
|
|
num41 = 2f;
|
|
else if (this.type == 385)
|
|
num41 = 1.8f;
|
|
else if (this.type == 389)
|
|
num41 = 2.25f;
|
|
else if (this.type == 462)
|
|
num41 = 4f;
|
|
else if (this.type == 463)
|
|
num41 = 0.75f;
|
|
else if (this.type == 466)
|
|
num41 = 3.75f;
|
|
else if (this.type == 469)
|
|
num41 = 3.25f;
|
|
else if (this.type == 480)
|
|
num41 = (float) (1.5 + (1.0 - (double) this.life / (double) this.lifeMax) * 2.0);
|
|
else if (this.type == 425)
|
|
num41 = 6f;
|
|
else if (this.type == 429)
|
|
num41 = 4f;
|
|
else if (this.type == 631)
|
|
num41 = 0.9f;
|
|
else if (this.type == 586)
|
|
num41 = (float) (1.5 + (1.0 - (double) this.life / (double) this.lifeMax) * 3.5);
|
|
if (this.type == 21 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 342 || this.type == 635)
|
|
num41 *= (float) (1.0 + (1.0 - (double) this.scale));
|
|
if ((double) this.velocity.X < -(double) num41 || (double) this.velocity.X > (double) num41)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num41 && this.direction == 1)
|
|
{
|
|
if (this.type == 466 && (double) this.velocity.X < -2.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (this.type == 586 && (double) this.velocity.Y == 0.0 && (double) this.velocity.X < -1.0)
|
|
this.velocity.X *= 0.9f;
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > (double) num41)
|
|
this.velocity.X = num41;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num41 && this.direction == -1)
|
|
{
|
|
if (this.type == 466 && (double) this.velocity.X > 2.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (this.type == 586 && (double) this.velocity.Y == 0.0 && (double) this.velocity.X > 1.0)
|
|
this.velocity.X *= 0.9f;
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -(double) num41)
|
|
this.velocity.X = -num41;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 && this.type == 462 && (this.direction > 0 && (double) this.velocity.X < 0.0 || this.direction < 0 && (double) this.velocity.X > 0.0))
|
|
this.velocity.X *= 0.9f;
|
|
}
|
|
else if (this.type >= 269 && this.type <= 280)
|
|
{
|
|
float num42 = 1.5f;
|
|
if (this.type == 269)
|
|
num42 = 2f;
|
|
if (this.type == 270)
|
|
num42 = 1f;
|
|
if (this.type == 271)
|
|
num42 = 1.5f;
|
|
if (this.type == 272)
|
|
num42 = 3f;
|
|
if (this.type == 273)
|
|
num42 = 1.25f;
|
|
if (this.type == 274)
|
|
num42 = 3f;
|
|
if (this.type == 275)
|
|
num42 = 3.25f;
|
|
if (this.type == 276)
|
|
num42 = 2f;
|
|
if (this.type == 277)
|
|
num42 = 2.75f;
|
|
if (this.type == 278)
|
|
num42 = 1.8f;
|
|
if (this.type == 279)
|
|
num42 = 1.3f;
|
|
if (this.type == 280)
|
|
num42 = 2.5f;
|
|
float num43 = num42 * (float) (1.0 + (1.0 - (double) this.scale));
|
|
if ((double) this.velocity.X < -(double) num43 || (double) this.velocity.X > (double) num43)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num43 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > (double) num43)
|
|
this.velocity.X = num43;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num43 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -(double) num43)
|
|
this.velocity.X = -num43;
|
|
}
|
|
}
|
|
else if (this.type >= 305 && this.type <= 314)
|
|
{
|
|
float num44 = 1.5f;
|
|
if (this.type == 305 || this.type == 310)
|
|
num44 = 2f;
|
|
if (this.type == 306 || this.type == 311)
|
|
num44 = 1.25f;
|
|
if (this.type == 307 || this.type == 312)
|
|
num44 = 2.25f;
|
|
if (this.type == 308 || this.type == 313)
|
|
num44 = 1.5f;
|
|
if (this.type == 309 || this.type == 314)
|
|
num44 = 1f;
|
|
if (this.type < 310)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.velocity.X *= 0.85f;
|
|
if ((double) this.velocity.X > -0.3 && (double) this.velocity.X < 0.3)
|
|
{
|
|
flag1 = true;
|
|
this.velocity.Y = -7f;
|
|
this.velocity.X = num44 * (float) this.direction;
|
|
}
|
|
}
|
|
else if (this.spriteDirection == this.direction)
|
|
this.velocity.X = (float) (((double) this.velocity.X * 10.0 + (double) num44 * (double) this.direction) / 11.0);
|
|
}
|
|
else if ((double) this.velocity.X < -(double) num44 || (double) this.velocity.X > (double) num44)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num44 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > (double) num44)
|
|
this.velocity.X = num44;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num44 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -(double) num44)
|
|
this.velocity.X = -num44;
|
|
}
|
|
}
|
|
else if (this.type == 67 || this.type == 220 || this.type == 428)
|
|
{
|
|
if ((double) this.velocity.X < -0.5 || (double) this.velocity.X > 0.5)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = 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 || this.type == 630)
|
|
{
|
|
float num45 = 1f;
|
|
float num46 = 0.05f;
|
|
if (this.life < this.lifeMax / 2)
|
|
{
|
|
num45 = 2f;
|
|
num46 = 0.1f;
|
|
}
|
|
if (this.type == 79 || this.type == 630)
|
|
num45 *= 1.5f;
|
|
if ((double) this.velocity.X < -(double) num45 || (double) this.velocity.X > (double) num45)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num45 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num46;
|
|
if ((double) this.velocity.X > (double) num45)
|
|
this.velocity.X = num45;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num45 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num46;
|
|
if ((double) this.velocity.X < -(double) num45)
|
|
this.velocity.X = -num45;
|
|
}
|
|
}
|
|
else if (this.type == 287)
|
|
{
|
|
float num47 = 5f;
|
|
float num48 = 0.2f;
|
|
if ((double) this.velocity.X < -(double) num47 || (double) this.velocity.X > (double) num47)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num47 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num48;
|
|
if ((double) this.velocity.X > (double) num47)
|
|
this.velocity.X = num47;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num47 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num48;
|
|
if ((double) this.velocity.X < -(double) num47)
|
|
this.velocity.X = -num47;
|
|
}
|
|
}
|
|
else if (this.type == 243)
|
|
{
|
|
float num49 = 1f;
|
|
float num50 = 0.07f;
|
|
float num51 = num49 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 1.5);
|
|
float num52 = num50 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 0.150000005960464);
|
|
if ((double) this.velocity.X < -(double) num51 || (double) this.velocity.X > (double) num51)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num51 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num52;
|
|
if ((double) this.velocity.X > (double) num51)
|
|
this.velocity.X = num51;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num51 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num52;
|
|
if ((double) this.velocity.X < -(double) num51)
|
|
this.velocity.X = -num51;
|
|
}
|
|
}
|
|
else if (this.type == 251)
|
|
{
|
|
float num53 = 1f;
|
|
float num54 = 0.08f;
|
|
float num55 = num53 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 2.0);
|
|
float num56 = num54 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 0.200000002980232);
|
|
if ((double) this.velocity.X < -(double) num55 || (double) this.velocity.X > (double) num55)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num55 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num56;
|
|
if ((double) this.velocity.X > (double) num55)
|
|
this.velocity.X = num55;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num55 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num56;
|
|
if ((double) this.velocity.X < -(double) num55)
|
|
this.velocity.X = -num55;
|
|
}
|
|
}
|
|
else if (this.type == 386)
|
|
{
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.8f;
|
|
}
|
|
else
|
|
{
|
|
float num57 = 0.15f;
|
|
float num58 = 1.5f;
|
|
if ((double) this.velocity.X < -(double) num58 || (double) this.velocity.X > (double) num58)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num58 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num57;
|
|
if ((double) this.velocity.X > (double) num58)
|
|
this.velocity.X = num58;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num58 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num57;
|
|
if ((double) this.velocity.X < -(double) num58)
|
|
this.velocity.X = -num58;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 460)
|
|
{
|
|
float num59 = 3f;
|
|
float num60 = 0.1f;
|
|
if ((double) Math.Abs(this.velocity.X) > 2.0)
|
|
num60 *= 0.8f;
|
|
if ((double) Math.Abs(this.velocity.X) > 2.5)
|
|
num60 *= 0.8f;
|
|
if ((double) Math.Abs(this.velocity.X) > 3.0)
|
|
num60 *= 0.8f;
|
|
if ((double) Math.Abs(this.velocity.X) > 3.5)
|
|
num60 *= 0.8f;
|
|
if ((double) Math.Abs(this.velocity.X) > 4.0)
|
|
num60 *= 0.8f;
|
|
if ((double) Math.Abs(this.velocity.X) > 4.5)
|
|
num60 *= 0.8f;
|
|
if ((double) Math.Abs(this.velocity.X) > 5.0)
|
|
num60 *= 0.8f;
|
|
if ((double) Math.Abs(this.velocity.X) > 5.5)
|
|
num60 *= 0.8f;
|
|
float num61 = num59 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 3.0);
|
|
if ((double) this.velocity.X < -(double) num61 || (double) this.velocity.X > (double) num61)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.7f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num61 && this.direction == 1)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.93f;
|
|
this.velocity.X += num60;
|
|
if ((double) this.velocity.X > (double) num61)
|
|
this.velocity.X = num61;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num61 && this.direction == -1)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.93f;
|
|
this.velocity.X -= num60;
|
|
if ((double) this.velocity.X < -(double) num61)
|
|
this.velocity.X = -num61;
|
|
}
|
|
}
|
|
else if (this.type == 508 || this.type == 580 || this.type == 582)
|
|
{
|
|
float num62 = 2.5f;
|
|
float num63 = 10f;
|
|
float num64 = Math.Abs(this.velocity.X);
|
|
if (this.type == 582)
|
|
{
|
|
num62 = 2.5f;
|
|
num63 = 7f;
|
|
if ((double) num64 > 2.75)
|
|
{
|
|
num62 = 3.5f;
|
|
num63 += 75f;
|
|
}
|
|
else if ((double) num64 > 2.25)
|
|
{
|
|
num62 = 2f;
|
|
num63 += 55f;
|
|
}
|
|
}
|
|
else if ((double) num64 > 2.75)
|
|
{
|
|
num62 = 3.5f;
|
|
num63 += 80f;
|
|
}
|
|
else if ((double) num64 > 2.25)
|
|
{
|
|
num62 = 3f;
|
|
num63 += 60f;
|
|
}
|
|
if ((double) Math.Abs(this.velocity.Y) < 0.5)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && this.direction < 0)
|
|
this.velocity = this.velocity * 0.95f;
|
|
if ((double) this.velocity.X < 0.0 && this.direction > 0)
|
|
this.velocity = this.velocity * 0.95f;
|
|
}
|
|
if ((double) Math.Abs(this.velocity.Y) > (double) NPC.gravity)
|
|
num63 *= 3f;
|
|
if ((double) this.velocity.X <= 0.0 && this.direction < 0)
|
|
this.velocity.X = (float) (((double) this.velocity.X * (double) num63 - (double) num62) / ((double) num63 + 1.0));
|
|
else if ((double) this.velocity.X >= 0.0 && this.direction > 0)
|
|
this.velocity.X = (float) (((double) this.velocity.X * (double) num63 + (double) num62) / ((double) num63 + 1.0));
|
|
else if ((double) Math.Abs(this.Center.X - Main.player[this.target].Center.X) > 20.0 && (double) Math.Abs(this.velocity.Y) <= (double) NPC.gravity)
|
|
{
|
|
this.velocity.X *= 0.99f;
|
|
this.velocity.X += (float) this.direction * 0.025f;
|
|
}
|
|
}
|
|
else if (this.type == 391 || this.type == 427 || this.type == 415 || this.type == 419 || this.type == 518 || this.type == 532)
|
|
{
|
|
float num65 = 5f;
|
|
float num66 = 0.25f;
|
|
float num67 = 0.7f;
|
|
if (this.type == 427)
|
|
{
|
|
num65 = 6f;
|
|
num66 = 0.2f;
|
|
num67 = 0.8f;
|
|
}
|
|
else if (this.type == 415)
|
|
{
|
|
num65 = 4f;
|
|
num66 = 0.1f;
|
|
num67 = 0.95f;
|
|
}
|
|
else if (this.type == 419)
|
|
{
|
|
num65 = 6f;
|
|
num66 = 0.15f;
|
|
num67 = 0.85f;
|
|
}
|
|
else if (this.type == 518)
|
|
{
|
|
num65 = 5f;
|
|
num66 = 0.1f;
|
|
num67 = 0.95f;
|
|
}
|
|
else if (this.type == 532)
|
|
{
|
|
num65 = 5f;
|
|
num66 = 0.15f;
|
|
num67 = 0.98f;
|
|
}
|
|
if ((double) this.velocity.X < -(double) num65 || (double) this.velocity.X > (double) num65)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * num67;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num65 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num66;
|
|
if ((double) this.velocity.X > (double) num65)
|
|
this.velocity.X = num65;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num65 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num66;
|
|
if ((double) this.velocity.X < -(double) num65)
|
|
this.velocity.X = -num65;
|
|
}
|
|
}
|
|
else if (this.type >= 430 && this.type <= 436 || this.type == 494 || this.type == 495 || this.type == 591)
|
|
{
|
|
if ((double) this.ai[2] == 0.0)
|
|
{
|
|
this.damage = this.defDamage;
|
|
float num68 = 1f * (float) (1.0 + (1.0 - (double) this.scale));
|
|
if ((double) this.velocity.X < -(double) num68 || (double) this.velocity.X > (double) num68)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num68 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > (double) num68)
|
|
this.velocity.X = num68;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num68 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -(double) num68)
|
|
this.velocity.X = -num68;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 && (!Main.dayTime || (double) this.position.Y > Main.worldSurface * 16.0) && !Main.player[this.target].dead)
|
|
{
|
|
Vector2 vector2 = this.Center - Main.player[this.target].Center;
|
|
int num69 = 50;
|
|
if (this.type >= 494 && this.type <= 495)
|
|
num69 = 42;
|
|
if ((double) vector2.Length() < (double) num69 && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
this.velocity.X *= 0.7f;
|
|
this.ai[2] = 1f;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.damage = (int) ((double) this.defDamage * 1.5);
|
|
this.ai[3] = 1f;
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) Math.Abs(this.velocity.X) < 0.1)
|
|
this.velocity.X = 0.0f;
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 20.0 || (double) this.velocity.Y != 0.0 || Main.dayTime && (double) this.position.Y < Main.worldSurface * 16.0)
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else if (this.type != 110 && this.type != 111 && this.type != 206 && this.type != 214 && this.type != 215 && this.type != 216 && this.type != 290 && this.type != 291 && this.type != 292 && this.type != 293 && this.type != 350 && this.type != 379 && this.type != 380 && this.type != 381 && this.type != 382 && (this.type < 449 || this.type > 452) && this.type != 468 && this.type != 481 && this.type != 411 && this.type != 409 && (this.type < 498 || this.type > 506) && this.type != 424 && this.type != 426 && this.type != 520)
|
|
{
|
|
float num70 = 1f;
|
|
if (this.type == 624)
|
|
num70 = 2.5f;
|
|
if (this.type == 186)
|
|
num70 = 1.1f;
|
|
if (this.type == 187)
|
|
num70 = 0.9f;
|
|
if (this.type == 188)
|
|
num70 = 1.2f;
|
|
if (this.type == 189)
|
|
num70 = 0.8f;
|
|
if (this.type == 132)
|
|
num70 = 0.95f;
|
|
if (this.type == 200)
|
|
num70 = 0.87f;
|
|
if (this.type == 223)
|
|
num70 = 1.05f;
|
|
if (this.type == 632)
|
|
num70 = 0.8f;
|
|
if (this.type == 489)
|
|
{
|
|
float num71 = (Main.player[this.target].Center - this.Center).Length() * (1f / 400f);
|
|
if ((double) num71 > 1.5)
|
|
num71 = 1.5f;
|
|
num70 = (!Main.expertMode ? 2.5f - num71 : 3f - num71) * 0.8f;
|
|
}
|
|
if (this.type == 489 || this.type == 3 || this.type == 132 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 200 || this.type == 223 || this.type == 331 || this.type == 332)
|
|
num70 *= (float) (1.0 + (1.0 - (double) this.scale));
|
|
if ((double) this.velocity.X < -(double) num70 || (double) this.velocity.X > (double) num70)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num70 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > (double) num70)
|
|
this.velocity.X = num70;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num70 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -(double) num70)
|
|
this.velocity.X = -num70;
|
|
}
|
|
}
|
|
if (this.type >= 277 && this.type <= 280)
|
|
Lighting.AddLight((int) this.Center.X / 16, (int) this.Center.Y / 16, 0.2f, 0.1f, 0.0f);
|
|
else if (this.type == 520)
|
|
Lighting.AddLight(this.Top + new Vector2(0.0f, 20f), 0.3f, 0.3f, 0.7f);
|
|
else if (this.type == 525)
|
|
Lighting.AddLight(this.Top + new Vector2(0.0f, 15f), new Vector3(0.7f, 1f, 0.2f) * 0.5f);
|
|
else if (this.type == 526)
|
|
Lighting.AddLight(this.Top + new Vector2(0.0f, 15f), new Vector3(1f, 1f, 0.5f) * 0.4f);
|
|
else if (this.type == 527)
|
|
Lighting.AddLight(this.Top + new Vector2(0.0f, 15f), new Vector3(0.6f, 0.3f, 1f) * 0.4f);
|
|
else if (this.type == 415)
|
|
{
|
|
this.hide = false;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 416 && (double) Main.npc[index].ai[0] == (double) this.whoAmI)
|
|
{
|
|
this.hide = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 258)
|
|
{
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.spriteDirection = this.direction;
|
|
if ((double) Main.player[this.target].Center.X < (double) this.position.X && (double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.95f;
|
|
else if ((double) Main.player[this.target].Center.X > (double) this.position.X + (double) this.width && (double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) Main.player[this.target].Center.X < (double) this.position.X && (double) this.velocity.X > -5.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) Main.player[this.target].Center.X > (double) this.position.X + (double) this.width && (double) this.velocity.X < 5.0)
|
|
this.velocity.X += 0.1f;
|
|
}
|
|
else if ((double) Main.player[this.target].Center.Y + 50.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
flag1 = true;
|
|
this.velocity.Y = -7f;
|
|
}
|
|
}
|
|
else if (this.type == 425)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.ai[2] = 0.0f;
|
|
if ((double) this.velocity.Y != 0.0 && (double) this.ai[2] == 1.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.spriteDirection = -this.direction;
|
|
if (Collision.CanHit(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
{
|
|
float num72 = Main.player[this.target].Center.X - (float) (this.direction * 400) - this.Center.X;
|
|
float num73 = Main.player[this.target].Bottom.Y - this.Bottom.Y;
|
|
if ((double) num72 < 0.0 && (double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
else if ((double) num72 > 0.0 && (double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) num72 < 0.0 && (double) this.velocity.X > -5.0)
|
|
this.velocity.X -= 0.1f;
|
|
else if ((double) num72 > 0.0 && (double) this.velocity.X < 5.0)
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X = 6f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X = -6f;
|
|
if ((double) num73 < -20.0 && (double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.8f;
|
|
else if ((double) num73 > 20.0 && (double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.8f;
|
|
if ((double) num73 < -20.0 && (double) this.velocity.Y > -5.0)
|
|
this.velocity.Y -= 0.3f;
|
|
else if ((double) num73 > 20.0 && (double) this.velocity.Y < 5.0)
|
|
this.velocity.Y += 0.3f;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Vector2 Position = this.Center + new Vector2((float) (this.direction * -14), -8f) - Vector2.One * 4f;
|
|
Vector2 vector2 = new Vector2((float) (this.direction * -6), 12f) * 0.2f + Utils.RandomVector2(Main.rand, -1f, 1f) * 0.1f;
|
|
Dust dust = Main.dust[Dust.NewDust(Position, 8, 8, 229, vector2.X, vector2.Y, 100, Color.Transparent, (float) (1.0 + (double) Main.rand.NextFloat() * 0.5))];
|
|
dust.noGravity = true;
|
|
dust.velocity = vector2;
|
|
dust.customData = (object) this;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width)
|
|
{
|
|
if ((double) this.position.X < (double) Main.npc[index].position.X)
|
|
this.velocity.X -= 0.05f;
|
|
else
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= 0.05f;
|
|
else
|
|
this.velocity.Y += 0.05f;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) Main.player[this.target].Center.Y + 100.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
flag1 = true;
|
|
this.velocity.Y = -5f;
|
|
this.ai[2] = 1f;
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
++this.localAI[2];
|
|
if ((double) this.localAI[2] >= (double) (360 + Main.rand.Next(360)) && (double) this.Distance(Main.player[this.target].Center) < 400.0 && (double) Math.Abs(this.DirectionTo(Main.player[this.target].Center).Y) < 0.5 && Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
{
|
|
this.localAI[2] = 0.0f;
|
|
Vector2 vector2_13 = this.Center + new Vector2((float) (this.direction * 30), 2f);
|
|
Vector2 vec = this.DirectionTo(Main.player[this.target].Center) * 7f;
|
|
if (vec.HasNaNs())
|
|
vec = new Vector2((float) (this.direction * 8), 0.0f);
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(75f, 50f);
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
Vector2 vector2_14 = vec + Utils.RandomVector2(Main.rand, -0.8f, 0.8f);
|
|
Projectile.NewProjectile(vector2_13.X, vector2_13.Y, vector2_14.X, vector2_14.Y, 577, damageForProjectiles, 1f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 427)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.rotation = 0.0f;
|
|
}
|
|
else
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if ((double) this.velocity.Y != 0.0 && (double) this.ai[2] == 1.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.spriteDirection = -this.direction;
|
|
if (Collision.CanHit(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
{
|
|
float num74 = Main.player[this.target].Center.X - this.Center.X;
|
|
float num75 = Main.player[this.target].Center.Y - this.Center.Y;
|
|
if ((double) num74 < 0.0 && (double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
else if ((double) num74 > 0.0 && (double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
if ((double) num74 < -20.0 && (double) this.velocity.X > -6.0)
|
|
this.velocity.X -= 0.015f;
|
|
else if ((double) num74 > 20.0 && (double) this.velocity.X < 6.0)
|
|
this.velocity.X += 0.015f;
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X = 6f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X = -6f;
|
|
if ((double) num75 < -20.0 && (double) this.velocity.Y > 0.0)
|
|
this.velocity.Y *= 0.98f;
|
|
else if ((double) num75 > 20.0 && (double) this.velocity.Y < 0.0)
|
|
this.velocity.Y *= 0.98f;
|
|
if ((double) num75 < -20.0 && (double) this.velocity.Y > -6.0)
|
|
this.velocity.Y -= 0.15f;
|
|
else if ((double) num75 > 20.0 && (double) this.velocity.Y < 6.0)
|
|
this.velocity.Y += 0.15f;
|
|
}
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width)
|
|
{
|
|
if ((double) this.position.X < (double) Main.npc[index].position.X)
|
|
this.velocity.X -= 0.05f;
|
|
else
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= 0.05f;
|
|
else
|
|
this.velocity.Y += 0.05f;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) Main.player[this.target].Center.Y + 100.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
flag1 = true;
|
|
this.velocity.Y = -5f;
|
|
this.ai[2] = 1f;
|
|
}
|
|
}
|
|
else if (this.type == 426)
|
|
{
|
|
if ((double) this.ai[1] > 0.0 && (double) this.velocity.Y > 0.0)
|
|
{
|
|
this.velocity.Y *= 0.85f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.Y = -0.4f;
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.TargetClosest();
|
|
this.spriteDirection = this.direction;
|
|
if (Collision.CanHit(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
{
|
|
float num76 = Main.player[this.target].Center.X - (float) (this.direction * 300) - this.Center.X;
|
|
if ((double) num76 < 40.0 && (double) this.velocity.X > 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
else if ((double) num76 > 40.0 && (double) this.velocity.X < 0.0)
|
|
this.velocity.X *= 0.98f;
|
|
if ((double) num76 < 40.0 && (double) this.velocity.X > -5.0)
|
|
this.velocity.X -= 0.2f;
|
|
else if ((double) num76 > 40.0 && (double) this.velocity.X < 5.0)
|
|
this.velocity.X += 0.2f;
|
|
if ((double) this.velocity.X > 6.0)
|
|
this.velocity.X = 6f;
|
|
if ((double) this.velocity.X < -6.0)
|
|
this.velocity.X = -6f;
|
|
}
|
|
}
|
|
else if ((double) Main.player[this.target].Center.Y + 100.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
flag1 = true;
|
|
this.velocity.Y = -6f;
|
|
}
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width)
|
|
{
|
|
if ((double) this.position.X < (double) Main.npc[index].position.X)
|
|
this.velocity.X -= 0.1f;
|
|
else
|
|
this.velocity.X += 0.1f;
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= 0.1f;
|
|
else
|
|
this.velocity.Y += 0.1f;
|
|
}
|
|
}
|
|
if (Main.rand.Next(6) == 0 && (double) this.ai[1] <= 20.0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Dust dust = Main.dust[Dust.NewDust(this.Center + new Vector2(this.spriteDirection == 1 ? 8f : -20f, -20f), 8, 8, 229, this.velocity.X, this.velocity.Y, 100)];
|
|
dust.velocity = dust.velocity / 4f + this.velocity / 2f;
|
|
dust.scale = 0.6f;
|
|
dust.noLight = true;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if ((double) this.ai[1] >= 57.0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int Type = Utils.SelectRandom<int>(Main.rand, 161, 229);
|
|
Dust dust = Main.dust[Dust.NewDust(this.Center + new Vector2(this.spriteDirection == 1 ? 8f : -20f, -20f), 8, 8, Type, this.velocity.X, this.velocity.Y, 100)];
|
|
dust.velocity = dust.velocity / 4f + this.DirectionTo(Main.player[this.target].Top);
|
|
dust.scale = 1.2f;
|
|
dust.noLight = true;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if (Main.rand.Next(6) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Dust dust = Main.dust[Dust.NewDust(this.Center, 2, 2, 229)];
|
|
dust.position = this.Center + new Vector2(this.spriteDirection == 1 ? 26f : -26f, 24f);
|
|
dust.velocity.X = 0.0f;
|
|
if ((double) dust.velocity.Y < 0.0)
|
|
dust.velocity.Y = 0.0f;
|
|
dust.noGravity = true;
|
|
dust.scale = 1f;
|
|
dust.noLight = true;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
else if (this.type == 185)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
this.localAI[0] = 0.0f;
|
|
}
|
|
else if ((double) this.localAI[0] == 1.0)
|
|
this.rotation += this.velocity.X * 0.05f;
|
|
}
|
|
else if (this.type == 428)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.rotation = 0.0f;
|
|
else
|
|
this.rotation += this.velocity.X * 0.08f;
|
|
}
|
|
if (this.type == 159 && Main.netMode != 1)
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
double num77 = (double) Main.player[this.target].position.X + (double) Main.player[this.target].width * 0.5 - (double) vector2.X;
|
|
float num78 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y;
|
|
if (Math.Sqrt(num77 * num77 + (double) num78 * (double) num78) > 300.0)
|
|
this.Transform(158);
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (Main.expertMode && this.target >= 0 && (this.type == 163 || this.type == 238) && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1))
|
|
{
|
|
++this.localAI[0];
|
|
if (this.justHit)
|
|
{
|
|
this.localAI[0] -= (float) Main.rand.Next(20, 60);
|
|
if ((double) this.localAI[0] < 0.0)
|
|
this.localAI[0] = 0.0f;
|
|
}
|
|
if ((double) this.localAI[0] > (double) Main.rand.Next(180, 900))
|
|
{
|
|
this.localAI[0] = 0.0f;
|
|
Vector2 vector2 = Main.player[this.target].Center - this.Center;
|
|
vector2.Normalize();
|
|
vector2 *= 8f;
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(18f, 18f);
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, vector2.X, vector2.Y, 472, damageForProjectiles, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
int newType = -1;
|
|
switch (this.type)
|
|
{
|
|
case 163:
|
|
newType = 238;
|
|
break;
|
|
case 164:
|
|
newType = 165;
|
|
break;
|
|
case 236:
|
|
newType = 237;
|
|
break;
|
|
case 239:
|
|
newType = 240;
|
|
break;
|
|
case 530:
|
|
newType = 531;
|
|
break;
|
|
}
|
|
if (newType != -1 && this.NPCCanStickToWalls())
|
|
this.Transform(newType);
|
|
}
|
|
}
|
|
if (this.type == 243)
|
|
{
|
|
if (this.justHit && Main.rand.Next(3) == 0)
|
|
this.ai[2] -= (float) Main.rand.Next(30);
|
|
if ((double) this.ai[2] < 0.0)
|
|
this.ai[2] = 0.0f;
|
|
if (this.confused)
|
|
this.ai[2] = 0.0f;
|
|
++this.ai[2];
|
|
float num79 = (float) Main.rand.Next(30, 900) * ((float) this.life / (float) this.lifeMax) + 30f;
|
|
if (Main.netMode != 1 && (double) this.ai[2] >= (double) num79 && (double) this.velocity.Y == 0.0 && !Main.player[this.target].dead && !Main.player[this.target].frozen && (this.direction > 0 && (double) this.Center.X < (double) Main.player[this.target].Center.X || this.direction < 0 && (double) this.Center.X > (double) Main.player[this.target].Center.X) && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + 20f);
|
|
vector2.X += (float) (10 * this.direction);
|
|
float num80 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num81 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y;
|
|
float num82 = num80 + (float) Main.rand.Next(-40, 41);
|
|
float num83 = num81 + (float) Main.rand.Next(-40, 41);
|
|
float num84 = (float) Math.Sqrt((double) num82 * (double) num82 + (double) num83 * (double) num83);
|
|
this.netUpdate = true;
|
|
float num85 = (float) (15.0 / (double) num84);
|
|
float SpeedX = num82 * num85;
|
|
float SpeedY = num83 * num85;
|
|
int Damage = 32;
|
|
int Type = 257;
|
|
vector2.X += SpeedX * 3f;
|
|
vector2.Y += SpeedY * 3f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
if (this.type == 251)
|
|
{
|
|
if (this.justHit)
|
|
this.ai[2] -= (float) Main.rand.Next(30);
|
|
if ((double) this.ai[2] < 0.0)
|
|
this.ai[2] = 0.0f;
|
|
if (this.confused)
|
|
this.ai[2] = 0.0f;
|
|
++this.ai[2];
|
|
float num86 = (float) Main.rand.Next(60, 1800) * ((float) this.life / (float) this.lifeMax) + 15f;
|
|
if (Main.netMode != 1 && (double) this.ai[2] >= (double) num86 && (double) this.velocity.Y == 0.0 && !Main.player[this.target].dead && !Main.player[this.target].frozen && (this.direction > 0 && (double) this.Center.X < (double) Main.player[this.target].Center.X || this.direction < 0 && (double) this.Center.X > (double) Main.player[this.target].Center.X) && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height))
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + 12f);
|
|
vector2.X += (float) (6 * this.direction);
|
|
float num87 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num88 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y;
|
|
float num89 = num87 + (float) Main.rand.Next(-40, 41);
|
|
float num90 = num88 + (float) Main.rand.Next(-30, 0);
|
|
float num91 = (float) Math.Sqrt((double) num89 * (double) num89 + (double) num90 * (double) num90);
|
|
this.netUpdate = true;
|
|
float num92 = (float) (15.0 / (double) num91);
|
|
float SpeedX = num89 * num92;
|
|
float SpeedY = num90 * num92;
|
|
int Damage = 30;
|
|
int Type = 83;
|
|
vector2.X += SpeedX * 3f;
|
|
vector2.Y += SpeedY * 3f;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
if (this.type == 386)
|
|
{
|
|
if (this.confused)
|
|
{
|
|
this.ai[2] = -60f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] < 60.0)
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] > 0.0 && NPC.CountNPCS(387) >= 4 * NPC.CountNPCS(386))
|
|
this.ai[2] = 0.0f;
|
|
if (this.justHit)
|
|
this.ai[2] = -30f;
|
|
if ((double) this.ai[2] == 30.0)
|
|
{
|
|
int num93 = (int) this.position.X / 16;
|
|
int num94 = (int) this.position.Y / 16;
|
|
int num95 = (int) this.position.X / 16;
|
|
int num96 = (int) this.position.Y / 16;
|
|
int num97 = 5;
|
|
int num98 = 0;
|
|
bool flag12 = false;
|
|
int num99 = 2;
|
|
int num100 = 0;
|
|
while (!flag12 && num98 < 100)
|
|
{
|
|
++num98;
|
|
int index18 = Main.rand.Next(num93 - num97, num93 + num97);
|
|
for (int index19 = Main.rand.Next(num94 - num97, num94 + num97); index19 < num94 + num97; ++index19)
|
|
{
|
|
if ((index19 < num94 - num99 || index19 > num94 + num99 || index18 < num93 - num99 || index18 > num93 + num99) && (index19 < num96 - num100 || index19 > num96 + num100 || index18 < num95 - num100 || index18 > num95 + num100) && Main.tile[index18, index19].nactive())
|
|
{
|
|
bool flag13 = true;
|
|
if (Main.tile[index18, index19 - 1].lava())
|
|
flag13 = false;
|
|
if (flag13 && Main.tileSolid[(int) Main.tile[index18, index19].type] && !Collision.SolidTiles(index18 - 1, index18 + 1, index19 - 4, index19 - 1))
|
|
{
|
|
int index20 = NPC.NewNPC(index18 * 16 - this.width / 2, index19 * 16, 387);
|
|
Main.npc[index20].position.Y = (float) (index19 * 16 - Main.npc[index20].height);
|
|
flag12 = true;
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.ai[2] == 60.0)
|
|
this.ai[2] = -120f;
|
|
}
|
|
}
|
|
if (this.type == 389)
|
|
{
|
|
if (this.confused)
|
|
{
|
|
this.ai[2] = -60f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[2] < 20.0)
|
|
++this.ai[2];
|
|
if (this.justHit)
|
|
this.ai[2] = -30f;
|
|
if ((double) this.ai[2] == 20.0 && Main.netMode != 1)
|
|
{
|
|
this.ai[2] = (float) (Main.rand.Next(3) * -10 - 10);
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y + 8f, (float) (this.direction * 6), 0.0f, 437, 25, 1f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 110 || this.type == 111 || this.type == 206 || this.type == 214 || this.type == 215 || this.type == 216 || this.type == 290 || this.type == 291 || this.type == 292 || this.type == 293 || this.type == 350 || this.type == 379 || this.type == 380 || this.type == 381 || this.type == 382 || this.type >= 449 && this.type <= 452 || this.type == 468 || this.type == 481 || this.type == 411 || this.type == 409 || this.type >= 498 && this.type <= 506 || this.type == 424 || this.type == 426 || this.type == 520)
|
|
{
|
|
bool flag14 = this.type == 381 || this.type == 382 || this.type == 520;
|
|
bool flag15 = this.type == 426;
|
|
bool flag16 = true;
|
|
int num101 = -1;
|
|
int num102 = -1;
|
|
if (this.type == 411)
|
|
{
|
|
flag14 = true;
|
|
num101 = 90;
|
|
num102 = 90;
|
|
if ((double) this.ai[1] <= 150.0)
|
|
flag16 = false;
|
|
}
|
|
if ((double) this.ai[1] > 0.0)
|
|
--this.ai[1];
|
|
if (this.justHit)
|
|
{
|
|
this.ai[1] = 30f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
int num103 = 70;
|
|
if (this.type == 379 || this.type == 380)
|
|
num103 = 80;
|
|
if (this.type == 381 || this.type == 382)
|
|
num103 = 80;
|
|
if (this.type == 520)
|
|
num103 = 15;
|
|
if (this.type == 350)
|
|
num103 = 110;
|
|
if (this.type == 291)
|
|
num103 = 200;
|
|
if (this.type == 292)
|
|
num103 = 120;
|
|
if (this.type == 293)
|
|
num103 = 90;
|
|
if (this.type == 111)
|
|
num103 = 180;
|
|
if (this.type == 206)
|
|
num103 = 50;
|
|
if (this.type == 481)
|
|
num103 = 100;
|
|
if (this.type == 214)
|
|
num103 = 40;
|
|
if (this.type == 215)
|
|
num103 = 80;
|
|
if (this.type == 290)
|
|
num103 = 30;
|
|
if (this.type == 411)
|
|
num103 = 300;
|
|
if (this.type == 409)
|
|
num103 = 60;
|
|
if (this.type == 424)
|
|
num103 = 180;
|
|
if (this.type == 426)
|
|
num103 = 60;
|
|
bool flag17 = false;
|
|
if (this.type == 216)
|
|
{
|
|
if ((double) this.localAI[2] >= 20.0)
|
|
flag17 = true;
|
|
num103 = !flag17 ? 8 : 60;
|
|
}
|
|
int num104 = num103 / 2;
|
|
if (this.type == 424)
|
|
num104 = num103 - 1;
|
|
if (this.type == 426)
|
|
num104 = num103 - 1;
|
|
if (this.confused)
|
|
this.ai[2] = 0.0f;
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
if (flag16)
|
|
this.TargetClosest();
|
|
if ((double) this.ai[1] == (double) num104)
|
|
{
|
|
if (this.type == 216)
|
|
++this.localAI[2];
|
|
float num105 = 11f;
|
|
if (this.type == 111)
|
|
num105 = 9f;
|
|
if (this.type == 206)
|
|
num105 = 7f;
|
|
if (this.type == 290)
|
|
num105 = 9f;
|
|
if (this.type == 293)
|
|
num105 = 4f;
|
|
if (this.type == 214)
|
|
num105 = 14f;
|
|
if (this.type == 215)
|
|
num105 = 16f;
|
|
if (this.type == 382)
|
|
num105 = 7f;
|
|
if (this.type == 520)
|
|
num105 = 8f;
|
|
if (this.type == 409)
|
|
num105 = 4f;
|
|
if (this.type >= 449 && this.type <= 452)
|
|
num105 = 7f;
|
|
if (this.type == 481)
|
|
num105 = 8f;
|
|
if (this.type == 468)
|
|
num105 = 7.5f;
|
|
if (this.type == 411)
|
|
num105 = 1f;
|
|
if (this.type >= 498 && this.type <= 506)
|
|
num105 = 7f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
if (this.type == 481)
|
|
vector2.Y -= 14f;
|
|
if (this.type == 206)
|
|
vector2.Y -= 10f;
|
|
if (this.type == 290)
|
|
vector2.Y -= 10f;
|
|
if (this.type == 381 || this.type == 382)
|
|
vector2.Y += 6f;
|
|
if (this.type == 520)
|
|
vector2.Y = this.position.Y + 20f;
|
|
if (this.type >= 498 && this.type <= 506)
|
|
vector2.Y -= 8f;
|
|
if (this.type == 426)
|
|
vector2 += new Vector2((float) (this.spriteDirection * 2), -12f);
|
|
float num106 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num107 = Math.Abs(num106) * 0.1f;
|
|
if (this.type == 291 || this.type == 292)
|
|
num107 = 0.0f;
|
|
if (this.type == 215)
|
|
num107 = Math.Abs(num106) * 0.08f;
|
|
if (this.type == 214 || this.type == 216 && !flag17)
|
|
num107 = 0.0f;
|
|
if (this.type == 381 || this.type == 382 || this.type == 520)
|
|
num107 = 0.0f;
|
|
if (this.type >= 449 && this.type <= 452)
|
|
num107 = (float) ((double) Math.Abs(num106) * (double) Main.rand.Next(10, 50) * 0.00999999977648258);
|
|
if (this.type == 468)
|
|
num107 = (float) ((double) Math.Abs(num106) * (double) Main.rand.Next(10, 50) * 0.00999999977648258);
|
|
if (this.type == 481)
|
|
num107 = (float) ((double) Math.Abs(num106) * (double) Main.rand.Next(-10, 11) * 0.00350000010803342);
|
|
if (this.type >= 498 && this.type <= 506)
|
|
num107 = (float) ((double) Math.Abs(num106) * (double) Main.rand.Next(1, 11) * (1.0 / 400.0));
|
|
float num108 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y - num107;
|
|
if (this.type == 291)
|
|
{
|
|
num106 += (float) Main.rand.Next(-40, 41) * 0.2f;
|
|
num108 += (float) Main.rand.Next(-40, 41) * 0.2f;
|
|
}
|
|
else if (this.type == 381 || this.type == 382 || this.type == 520)
|
|
{
|
|
float num109 = num106 + (float) Main.rand.Next(-100, 101) * 0.4f;
|
|
float num110 = num108 + (float) Main.rand.Next(-100, 101) * 0.4f;
|
|
num106 = num109 * ((float) Main.rand.Next(85, 116) * 0.01f);
|
|
num108 = num110 * ((float) Main.rand.Next(85, 116) * 0.01f);
|
|
if (this.type == 520)
|
|
{
|
|
float num111 = num106 + (float) Main.rand.Next(-100, 101) * 0.6f;
|
|
float num112 = num108 + (float) Main.rand.Next(-100, 101) * 0.6f;
|
|
num106 = num111 * ((float) Main.rand.Next(85, 116) * 0.015f);
|
|
num108 = num112 * ((float) Main.rand.Next(85, 116) * 0.015f);
|
|
}
|
|
}
|
|
else if (this.type == 481)
|
|
{
|
|
num106 += (float) Main.rand.Next(-40, 41) * 0.4f;
|
|
num108 += (float) Main.rand.Next(-40, 41) * 0.4f;
|
|
}
|
|
else if (this.type >= 498 && this.type <= 506)
|
|
{
|
|
num106 += (float) Main.rand.Next(-40, 41) * 0.3f;
|
|
num108 += (float) Main.rand.Next(-40, 41) * 0.3f;
|
|
}
|
|
else if (this.type != 292)
|
|
{
|
|
num106 += (float) Main.rand.Next(-40, 41);
|
|
num108 += (float) Main.rand.Next(-40, 41);
|
|
}
|
|
float num113 = (float) Math.Sqrt((double) num106 * (double) num106 + (double) num108 * (double) num108);
|
|
this.netUpdate = true;
|
|
float num114 = num105 / num113;
|
|
float num115 = num106 * num114;
|
|
float SpeedY = num108 * num114;
|
|
int Damage = 35;
|
|
int Type = 82;
|
|
if (this.type == 111)
|
|
Damage = 11;
|
|
if (this.type == 206)
|
|
Damage = 37;
|
|
if (this.type == 379 || this.type == 380)
|
|
Damage = 40;
|
|
if (this.type == 350)
|
|
Damage = 45;
|
|
if (this.type == 468)
|
|
Damage = 50;
|
|
if (this.type == 111)
|
|
Type = 81;
|
|
if (this.type == 379 || this.type == 380)
|
|
Type = 81;
|
|
if (this.type == 381)
|
|
{
|
|
Type = 436;
|
|
Damage = 24;
|
|
}
|
|
if (this.type == 382)
|
|
{
|
|
Type = 438;
|
|
Damage = 30;
|
|
}
|
|
if (this.type == 520)
|
|
{
|
|
Type = 592;
|
|
Damage = 35;
|
|
}
|
|
if (this.type >= 449 && this.type <= 452)
|
|
{
|
|
Type = 471;
|
|
Damage = 15;
|
|
}
|
|
if (this.type >= 498 && this.type <= 506)
|
|
{
|
|
Type = 572;
|
|
Damage = 14;
|
|
}
|
|
if (this.type == 481)
|
|
{
|
|
Type = 508;
|
|
Damage = 18;
|
|
}
|
|
if (this.type == 206)
|
|
Type = 177;
|
|
if (this.type == 468)
|
|
Type = 501;
|
|
if (this.type == 411)
|
|
{
|
|
Type = 537;
|
|
Damage = this.GetAttackDamage_ForProjectiles(60f, 45f);
|
|
}
|
|
if (this.type == 424)
|
|
{
|
|
Type = 573;
|
|
Damage = this.GetAttackDamage_ForProjectiles(60f, 45f);
|
|
}
|
|
if (this.type == 426)
|
|
{
|
|
Type = 581;
|
|
Damage = this.GetAttackDamage_ForProjectiles(60f, 45f);
|
|
}
|
|
if (this.type == 291)
|
|
{
|
|
Type = 302;
|
|
Damage = 100;
|
|
}
|
|
if (this.type == 290)
|
|
{
|
|
Type = 300;
|
|
Damage = 60;
|
|
}
|
|
if (this.type == 293)
|
|
{
|
|
Type = 303;
|
|
Damage = 60;
|
|
}
|
|
if (this.type == 214)
|
|
{
|
|
Type = 180;
|
|
Damage = 25;
|
|
}
|
|
if (this.type == 215)
|
|
{
|
|
Type = 82;
|
|
Damage = 40;
|
|
}
|
|
if (this.type == 292)
|
|
{
|
|
Damage = 50;
|
|
Type = 180;
|
|
}
|
|
if (this.type == 216)
|
|
{
|
|
Type = 180;
|
|
Damage = 30;
|
|
if (flag17)
|
|
{
|
|
Damage = 100;
|
|
Type = 240;
|
|
this.localAI[2] = 0.0f;
|
|
}
|
|
}
|
|
vector2.X += num115;
|
|
vector2.Y += SpeedY;
|
|
if (this.type == 290)
|
|
Damage = this.GetAttackDamage_ForProjectiles((float) Damage, (float) Damage * 0.75f);
|
|
if (this.type >= 381 && this.type <= 392)
|
|
Damage = this.GetAttackDamage_ForProjectiles((float) Damage, (float) Damage * 0.8f);
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (this.type == 292)
|
|
{
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
float num116 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num117 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y;
|
|
float num118 = 12f / (float) Math.Sqrt((double) num116 * (double) num116 + (double) num117 * (double) num117);
|
|
float num119;
|
|
float num120 = num119 = num116 + (float) Main.rand.Next(-40, 41);
|
|
float num121;
|
|
float num122 = num121 = num117 + (float) Main.rand.Next(-40, 41);
|
|
num115 = num120 * num118;
|
|
SpeedY = num122 * num118;
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, num115, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
else if (this.type == 411)
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, num115, SpeedY, Type, Damage, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI));
|
|
else if (this.type == 424)
|
|
{
|
|
for (int index = 0; index < 4; ++index)
|
|
Projectile.NewProjectile(this.Center.X - (float) (this.spriteDirection * 4), this.Center.Y + 6f, (float) (2 * index - 3) * 0.15f, (float) ((double) -Main.rand.Next(0, 3) * 0.200000002980232 - 0.100000001490116), Type, Damage, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI));
|
|
}
|
|
else if (this.type == 409)
|
|
{
|
|
int index = NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 410, this.whoAmI);
|
|
Main.npc[index].velocity = new Vector2(num115, SpeedY - 6f);
|
|
}
|
|
else
|
|
Projectile.NewProjectile(vector2.X, vector2.Y, num115, SpeedY, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
this.ai[2] = (double) Math.Abs(SpeedY) <= (double) Math.Abs(num115) * 2.0 ? ((double) Math.Abs(num115) <= (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 && !flag15 || (double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else if (!flag14 || num101 != -1 && (double) this.ai[1] >= (double) num101 && (double) this.ai[1] < (double) (num101 + num102) && (!flag15 || (double) this.velocity.Y == 0.0))
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
}
|
|
if (this.type == 468 && !Main.eclipse)
|
|
flag14 = true;
|
|
else if ((double) this.ai[2] <= 0.0 | flag14 && (double) this.velocity.Y == 0.0 | flag15 && (double) this.ai[1] <= 0.0 && !Main.player[this.target].dead)
|
|
{
|
|
bool flag18 = Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height);
|
|
if (this.type == 520)
|
|
flag18 = Collision.CanHitLine(this.Top + new Vector2(0.0f, 20f), 0, 0, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height);
|
|
if ((double) Main.player[this.target].stealth == 0.0 && Main.player[this.target].itemAnimation == 0)
|
|
flag18 = false;
|
|
if (flag18)
|
|
{
|
|
float num123 = 10f;
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num124 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X;
|
|
float num125 = Math.Abs(num124) * 0.1f;
|
|
float num126 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y - num125;
|
|
float num127 = num124 + (float) Main.rand.Next(-40, 41);
|
|
float num128 = num126 + (float) Main.rand.Next(-40, 41);
|
|
float num129 = (float) Math.Sqrt((double) num127 * (double) num127 + (double) num128 * (double) num128);
|
|
float num130 = 700f;
|
|
if (this.type == 214)
|
|
num130 = 550f;
|
|
if (this.type == 215)
|
|
num130 = 800f;
|
|
if (this.type >= 498 && this.type <= 506)
|
|
num130 = 190f;
|
|
if (this.type >= 449 && this.type <= 452)
|
|
num130 = 200f;
|
|
if (this.type == 481)
|
|
num130 = 400f;
|
|
if (this.type == 468)
|
|
num130 = 400f;
|
|
if ((double) num129 < (double) num130)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.X *= 0.5f;
|
|
float num131 = num123 / num129;
|
|
float num132 = num127 * num131;
|
|
float num133 = num128 * num131;
|
|
this.ai[2] = 3f;
|
|
this.ai[1] = (float) num103;
|
|
this.ai[2] = (double) Math.Abs(num133) <= (double) Math.Abs(num132) * 2.0 ? ((double) Math.Abs(num132) <= (double) Math.Abs(num133) * 2.0 ? ((double) num133 <= 0.0 ? 4f : 2f) : 3f) : ((double) num133 <= 0.0 ? 5f : 1f);
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.ai[2] <= 0.0 || flag14 && (num101 == -1 || (double) this.ai[1] < (double) num101 || (double) this.ai[1] >= (double) (num101 + num102)))
|
|
{
|
|
float num134 = 1f;
|
|
float num135 = 0.07f;
|
|
float num136 = 0.8f;
|
|
if (this.type == 214)
|
|
{
|
|
num134 = 2f;
|
|
num135 = 0.09f;
|
|
}
|
|
else if (this.type == 215)
|
|
{
|
|
num134 = 1.5f;
|
|
num135 = 0.08f;
|
|
}
|
|
else if (this.type == 381 || this.type == 382)
|
|
{
|
|
num134 = 2f;
|
|
num135 = 0.5f;
|
|
}
|
|
else if (this.type == 520)
|
|
{
|
|
num134 = 4f;
|
|
num135 = 1f;
|
|
num136 = 0.7f;
|
|
}
|
|
else if (this.type == 411)
|
|
{
|
|
num134 = 2f;
|
|
num135 = 0.5f;
|
|
}
|
|
else if (this.type == 409)
|
|
{
|
|
num134 = 2f;
|
|
num135 = 0.5f;
|
|
}
|
|
bool flag19 = false;
|
|
if ((this.type == 381 || this.type == 382) && (double) Vector2.Distance(this.Center, Main.player[this.target].Center) < 300.0 && Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
{
|
|
flag19 = true;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
if (this.type == 520 && (double) Vector2.Distance(this.Center, Main.player[this.target].Center) < 400.0 && Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0))
|
|
{
|
|
flag19 = true;
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
if ((((double) this.velocity.X < -(double) num134 ? 1 : ((double) this.velocity.X > (double) num134 ? 1 : 0)) | (flag19 ? 1 : 0)) != 0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * num136;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num134 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num135;
|
|
if ((double) this.velocity.X > (double) num134)
|
|
this.velocity.X = num134;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num134 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num135;
|
|
if ((double) this.velocity.X < -(double) num134)
|
|
this.velocity.X = -num134;
|
|
}
|
|
}
|
|
if (this.type == 520)
|
|
{
|
|
++this.localAI[2];
|
|
if ((double) this.localAI[2] >= 6.0)
|
|
{
|
|
this.localAI[2] = 0.0f;
|
|
this.localAI[3] = Main.player[this.target].DirectionFrom(this.Top + new Vector2(0.0f, 20f)).ToRotation();
|
|
}
|
|
}
|
|
}
|
|
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] > 60.0)
|
|
{
|
|
Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f - (float) (this.direction * 24), this.position.Y + 4f);
|
|
if (Main.rand.Next(5) != 0 || NPC.AnyNPCs(378))
|
|
{
|
|
int num137 = Main.rand.Next(3, 8) * this.direction;
|
|
int num138 = Main.rand.Next(-8, -5);
|
|
int index = Projectile.NewProjectile(vector2.X, vector2.Y, (float) num137, (float) num138, 75, 80, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].timeLeft = 300;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[2] = -120f;
|
|
NetMessage.SendData(23, number: NPC.NewNPC((int) vector2.X, (int) vector2.Y, 378));
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 | flag1)
|
|
{
|
|
int index21 = (int) ((double) this.position.Y + (double) this.height + 7.0) / 16;
|
|
int index22 = (int) ((double) this.position.Y - 9.0) / 16;
|
|
int num139 = (int) this.position.X / 16;
|
|
int num140 = (int) ((double) this.position.X + (double) this.width) / 16;
|
|
int num141 = (int) ((double) this.position.X + 8.0) / 16;
|
|
int num142 = (int) ((double) this.position.X + (double) this.width - 8.0) / 16;
|
|
bool flag20 = false;
|
|
for (int index23 = num141; index23 <= num142; ++index23)
|
|
{
|
|
if (index23 >= num139 && index23 <= num140 && Main.tile[index23, index21] == null)
|
|
{
|
|
flag20 = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main.tile[index23, index22] != null && Main.tile[index23, index22].nactive() && Main.tileSolid[(int) Main.tile[index23, index22].type])
|
|
{
|
|
flag5 = false;
|
|
break;
|
|
}
|
|
if (!flag20 && index23 >= num139 && index23 <= num140 && Main.tile[index23, index21].nactive() && Main.tileSolid[(int) Main.tile[index23, index21].type])
|
|
flag5 = true;
|
|
}
|
|
}
|
|
if (!flag5 && (double) this.velocity.Y < 0.0)
|
|
this.velocity.Y = 0.0f;
|
|
if (flag20)
|
|
return;
|
|
}
|
|
if (this.type == 428)
|
|
flag5 = false;
|
|
if ((double) this.velocity.Y >= 0.0 && (this.type != 580 || this.directionY != 1))
|
|
{
|
|
int num143 = 0;
|
|
if ((double) this.velocity.X < 0.0)
|
|
num143 = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
num143 = 1;
|
|
Vector2 position = this.position;
|
|
position.X += this.velocity.X;
|
|
int x = (int) (((double) position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 1) * num143)) / 16.0);
|
|
int y = (int) (((double) position.Y + (double) this.height - 1.0) / 16.0);
|
|
if (WorldGen.InWorld(x, y, 4))
|
|
{
|
|
if (Main.tile[x, y] == null)
|
|
Main.tile[x, y] = new Tile();
|
|
if (Main.tile[x, y - 1] == null)
|
|
Main.tile[x, y - 1] = new Tile();
|
|
if (Main.tile[x, y - 2] == null)
|
|
Main.tile[x, y - 2] = new Tile();
|
|
if (Main.tile[x, y - 3] == null)
|
|
Main.tile[x, y - 3] = new Tile();
|
|
if (Main.tile[x, y + 1] == null)
|
|
Main.tile[x, y + 1] = new Tile();
|
|
if (Main.tile[x - num143, y - 3] == null)
|
|
Main.tile[x - num143, y - 3] = new Tile();
|
|
if ((double) (x * 16) < (double) position.X + (double) this.width && (double) (x * 16 + 16) > (double) position.X && (Main.tile[x, y].nactive() && !Main.tile[x, y].topSlope() && !Main.tile[x, y - 1].topSlope() && Main.tileSolid[(int) Main.tile[x, y].type] && !Main.tileSolidTop[(int) Main.tile[x, y].type] || Main.tile[x, y - 1].halfBrick() && Main.tile[x, y - 1].nactive()) && (!Main.tile[x, y - 1].nactive() || !Main.tileSolid[(int) Main.tile[x, y - 1].type] || Main.tileSolidTop[(int) Main.tile[x, y - 1].type] || Main.tile[x, y - 1].halfBrick() && (!Main.tile[x, y - 4].nactive() || !Main.tileSolid[(int) Main.tile[x, y - 4].type] || Main.tileSolidTop[(int) Main.tile[x, y - 4].type])) && (!Main.tile[x, y - 2].nactive() || !Main.tileSolid[(int) Main.tile[x, y - 2].type] || Main.tileSolidTop[(int) Main.tile[x, y - 2].type]) && (!Main.tile[x, y - 3].nactive() || !Main.tileSolid[(int) Main.tile[x, y - 3].type] || Main.tileSolidTop[(int) Main.tile[x, y - 3].type]) && (!Main.tile[x - num143, y - 3].nactive() || !Main.tileSolid[(int) Main.tile[x - num143, y - 3].type]))
|
|
{
|
|
float num144 = (float) (y * 16);
|
|
if (Main.tile[x, y].halfBrick())
|
|
num144 += 8f;
|
|
if (Main.tile[x, y - 1].halfBrick())
|
|
num144 -= 8f;
|
|
if ((double) num144 < (double) position.Y + (double) this.height)
|
|
{
|
|
float num145 = position.Y + (float) this.height - num144;
|
|
float num146 = 16.1f;
|
|
if (this.type == 163 || this.type == 164 || this.type == 236 || this.type == 239 || this.type == 530)
|
|
num146 += 8f;
|
|
if ((double) num145 <= (double) num146)
|
|
{
|
|
this.gfxOffY += this.position.Y + (float) this.height - num144;
|
|
this.position.Y = num144 - (float) this.height;
|
|
this.stepSpeed = (double) num145 >= 9.0 ? 2f : 1f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag5)
|
|
{
|
|
int index24 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0);
|
|
int index25 = (int) (((double) this.position.Y + (double) this.height - 15.0) / 16.0);
|
|
if (this.type == 109 || this.type == 163 || this.type == 164 || this.type == 199 || this.type == 236 || this.type == 239 || this.type == 257 || this.type == 258 || this.type == 290 || this.type == 391 || this.type == 425 || this.type == 427 || this.type == 426 || this.type == 580 || this.type == 508 || this.type == 415 || this.type == 530 || this.type == 532 || this.type == 582)
|
|
index24 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 16) * this.direction)) / 16.0);
|
|
if (Main.tile[index24, index25] == null)
|
|
Main.tile[index24, index25] = new Tile();
|
|
if (Main.tile[index24, index25 - 1] == null)
|
|
Main.tile[index24, index25 - 1] = new Tile();
|
|
if (Main.tile[index24, index25 - 2] == null)
|
|
Main.tile[index24, index25 - 2] = new Tile();
|
|
if (Main.tile[index24, index25 - 3] == null)
|
|
Main.tile[index24, index25 - 3] = new Tile();
|
|
if (Main.tile[index24, index25 + 1] == null)
|
|
Main.tile[index24, index25 + 1] = new Tile();
|
|
if (Main.tile[index24 + this.direction, index25 - 1] == null)
|
|
Main.tile[index24 + this.direction, index25 - 1] = new Tile();
|
|
if (Main.tile[index24 + this.direction, index25 + 1] == null)
|
|
Main.tile[index24 + this.direction, index25 + 1] = new Tile();
|
|
if (Main.tile[index24 - this.direction, index25 + 1] == null)
|
|
Main.tile[index24 - this.direction, index25 + 1] = new Tile();
|
|
Main.tile[index24, index25 + 1].halfBrick();
|
|
if (((!Main.tile[index24, index25 - 1].nactive() ? 0 : (Main.tile[index24, index25 - 1].type == (ushort) 10 ? 1 : (Main.tile[index24, index25 - 1].type == (ushort) 388 ? 1 : 0))) & (flag8 ? 1 : 0)) != 0)
|
|
{
|
|
++this.ai[2];
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[2] >= 60.0)
|
|
{
|
|
bool flag21 = this.type == 3 || this.type == 430 || this.type == 590 || this.type == 331 || this.type == 332 || this.type == 132 || this.type == 161 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 200 || this.type == 223 || this.type == 320 || this.type == 321 || this.type == 319 || this.type == 21 || this.type == 324 || this.type == 323 || this.type == 322 || this.type == 44 || this.type == 196 || this.type == 167 || this.type == 77 || this.type == 197 || this.type == 202 || this.type == 203 || this.type == 449 || this.type == 450 || this.type == 451 || this.type == 452 || this.type == 481 || this.type == 201 || this.type == 635;
|
|
bool flag22 = Main.player[this.target].ZoneGraveyard && Main.rand.Next(60) == 0;
|
|
if (((!Main.bloodMoon || Main.getGoodWorld ? (!flag22 ? 1 : 0) : 0) & (flag21 ? 1 : 0)) != 0)
|
|
this.ai[1] = 0.0f;
|
|
this.velocity.X = 0.5f * (float) -this.direction;
|
|
int num147 = 5;
|
|
if (Main.tile[index24, index25 - 1].type == (ushort) 388)
|
|
num147 = 2;
|
|
this.ai[1] += (float) num147;
|
|
if (this.type == 27)
|
|
++this.ai[1];
|
|
if (this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296)
|
|
this.ai[1] += 6f;
|
|
this.ai[2] = 0.0f;
|
|
bool flag23 = false;
|
|
if ((double) this.ai[1] >= 10.0)
|
|
{
|
|
flag23 = true;
|
|
this.ai[1] = 10f;
|
|
}
|
|
if (this.type == 460)
|
|
flag23 = true;
|
|
WorldGen.KillTile(index24, index25 - 1, true);
|
|
if ((Main.netMode != 1 || !flag23) && flag23 && Main.netMode != 1)
|
|
{
|
|
if (this.type == 26)
|
|
{
|
|
WorldGen.KillTile(index24, index25 - 1);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(17, number2: ((float) index24), number3: ((float) (index25 - 1)));
|
|
}
|
|
else
|
|
{
|
|
if (Main.tile[index24, index25 - 1].type == (ushort) 10)
|
|
{
|
|
bool flag24 = WorldGen.OpenDoor(index24, index25 - 1, this.direction);
|
|
if (!flag24)
|
|
{
|
|
this.ai[3] = (float) num32;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.netMode == 2 & flag24)
|
|
NetMessage.SendData(19, number2: ((float) index24), number3: ((float) (index25 - 1)), number4: ((float) this.direction));
|
|
}
|
|
if (Main.tile[index24, index25 - 1].type == (ushort) 388)
|
|
{
|
|
bool flag25 = WorldGen.ShiftTallGate(index24, index25 - 1, false);
|
|
if (!flag25)
|
|
{
|
|
this.ai[3] = (float) num32;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.netMode == 2 & flag25)
|
|
NetMessage.SendData(19, number: 4, number2: ((float) index24), number3: ((float) (index25 - 1)));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int spriteDirection = this.spriteDirection;
|
|
if (this.type == 425)
|
|
spriteDirection *= -1;
|
|
if ((double) this.velocity.X < 0.0 && spriteDirection == -1 || (double) this.velocity.X > 0.0 && spriteDirection == 1)
|
|
{
|
|
if (this.height >= 32 && Main.tile[index24, index25 - 2].nactive() && Main.tileSolid[(int) Main.tile[index24, index25 - 2].type])
|
|
{
|
|
if (Main.tile[index24, index25 - 3].nactive() && Main.tileSolid[(int) Main.tile[index24, index25 - 3].type])
|
|
{
|
|
this.velocity.Y = -8f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = -7f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (Main.tile[index24, index25 - 1].nactive() && Main.tileSolid[(int) Main.tile[index24, index25 - 1].type])
|
|
{
|
|
if (this.type == 624)
|
|
{
|
|
this.velocity.Y = -8f;
|
|
if (WorldGen.SolidTile((int) this.Center.X / 16, (int) ((double) this.position.Y + (double) this.height) / 16 - 8))
|
|
{
|
|
this.direction *= -1;
|
|
this.spriteDirection = this.direction;
|
|
this.velocity.X = (float) (3 * this.direction);
|
|
}
|
|
}
|
|
else
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.position.Y + (double) this.height - (double) (index25 * 16) > 20.0 && Main.tile[index24, index25].nactive() && !Main.tile[index24, index25].topSlope() && Main.tileSolid[(int) Main.tile[index24, index25].type])
|
|
{
|
|
this.velocity.Y = -5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.directionY < 0 && this.type != 67 && (!Main.tile[index24, index25 + 1].nactive() || !Main.tileSolid[(int) Main.tile[index24, index25 + 1].type]) && (!Main.tile[index24 + this.direction, index25 + 1].nactive() || !Main.tileSolid[(int) Main.tile[index24 + this.direction, index25 + 1].type]))
|
|
{
|
|
this.velocity.Y = -8f;
|
|
this.velocity.X *= 1.5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag8)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 & flag6 && (double) this.ai[3] == 1.0)
|
|
this.velocity.Y = -5f;
|
|
if ((double) this.velocity.Y == 0.0 && (Main.expertMode ? 1 : (this.type == 586 ? 1 : 0)) != 0 && (double) Main.player[this.target].Bottom.Y < (double) this.Top.Y && (double) Math.Abs(this.Center.X - Main.player[this.target].Center.X) < (double) (Main.player[this.target].width * 3) && Collision.CanHit((Entity) this, (Entity) Main.player[this.target]))
|
|
{
|
|
if (this.type == 586)
|
|
{
|
|
int num148 = (int) (((double) this.Bottom.Y - 16.0 - (double) Main.player[this.target].Bottom.Y) / 16.0);
|
|
if (num148 < 14 && Collision.CanHit((Entity) this, (Entity) Main.player[this.target]))
|
|
{
|
|
if (num148 < 7)
|
|
this.velocity.Y = -8.8f;
|
|
else if (num148 < 8)
|
|
this.velocity.Y = -9.2f;
|
|
else if (num148 < 9)
|
|
this.velocity.Y = -9.7f;
|
|
else if (num148 < 10)
|
|
this.velocity.Y = -10.3f;
|
|
else if (num148 < 11)
|
|
this.velocity.Y = -10.6f;
|
|
else
|
|
this.velocity.Y = -11f;
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
int num149 = 6;
|
|
if ((double) Main.player[this.target].Bottom.Y > (double) this.Top.Y - (double) (num149 * 16))
|
|
{
|
|
this.velocity.Y = -7.9f;
|
|
}
|
|
else
|
|
{
|
|
int index26 = (int) ((double) this.Center.X / 16.0);
|
|
int num150 = (int) ((double) this.Bottom.Y / 16.0) - 1;
|
|
for (int index27 = num150; index27 > num150 - num149; --index27)
|
|
{
|
|
if (Main.tile[index26, index27].nactive() && TileID.Sets.Platforms[(int) Main.tile[index26, index27].type])
|
|
{
|
|
this.velocity.Y = -7.9f;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 47 || this.type == 77 || this.type == 104 || this.type == 168 || this.type == 196 || this.type == 385 || this.type == 389 || this.type == 464 || this.type == 470 || this.type >= 524 && this.type <= 527) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
int num151 = 100;
|
|
int num152 = 50;
|
|
if (this.type == 586)
|
|
{
|
|
num151 = 150;
|
|
num152 = 150;
|
|
}
|
|
if ((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)))) < (double) num151 && (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)))) < (double) num152 && (this.direction > 0 && (double) this.velocity.X >= 1.0 || this.direction < 0 && (double) this.velocity.X <= -1.0))
|
|
{
|
|
if (this.type == 586)
|
|
{
|
|
this.velocity.X += (float) this.direction;
|
|
this.velocity.X *= 2f;
|
|
if ((double) this.velocity.X > 8.0)
|
|
this.velocity.X = 8f;
|
|
if ((double) this.velocity.X < -8.0)
|
|
this.velocity.X = -8f;
|
|
this.velocity.Y = -4.5f;
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y + 40.0)
|
|
this.velocity.Y -= 2f;
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y + 80.0)
|
|
this.velocity.Y -= 2f;
|
|
if ((double) this.position.Y > (double) Main.player[this.target].position.Y + 120.0)
|
|
this.velocity.Y -= 2f;
|
|
}
|
|
else
|
|
{
|
|
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;
|
|
if (this.type == 287 && (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)))) < 150.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 = (float) (8 * this.direction);
|
|
this.velocity.Y = -4f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.type == 287 && (double) this.velocity.Y < 0.0)
|
|
{
|
|
this.velocity.X *= 1.2f;
|
|
this.velocity.Y *= 1.1f;
|
|
}
|
|
if (this.type == 460 && (double) this.velocity.Y < 0.0)
|
|
{
|
|
this.velocity.X *= 1.3f;
|
|
this.velocity.Y *= 1.1f;
|
|
}
|
|
}
|
|
}
|
|
else if (flag8)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
if (Main.netMode == 1 || this.type != 120 || (double) this.ai[3] < (double) num32)
|
|
return;
|
|
int num153 = (int) Main.player[this.target].position.X / 16;
|
|
int num154 = (int) Main.player[this.target].position.Y / 16;
|
|
int num155 = (int) this.position.X / 16;
|
|
int num156 = (int) this.position.Y / 16;
|
|
int num157 = 20;
|
|
int num158 = 0;
|
|
bool flag26 = 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)
|
|
{
|
|
num158 = 100;
|
|
flag26 = true;
|
|
}
|
|
while (!flag26 && num158 < 100)
|
|
{
|
|
++num158;
|
|
int index28 = Main.rand.Next(num153 - num157, num153 + num157);
|
|
for (int index29 = Main.rand.Next(num154 - num157, num154 + num157); index29 < num154 + num157; ++index29)
|
|
{
|
|
if ((index29 < num154 - 4 || index29 > num154 + 4 || index28 < num153 - 4 || index28 > num153 + 4) && (index29 < num156 - 1 || index29 > num156 + 1 || index28 < num155 - 1 || index28 > num155 + 1) && Main.tile[index28, index29].nactive())
|
|
{
|
|
bool flag27 = true;
|
|
if (this.type == 32 && Main.tile[index28, index29 - 1].wall == (ushort) 0)
|
|
flag27 = false;
|
|
else if (Main.tile[index28, index29 - 1].lava())
|
|
flag27 = false;
|
|
if (flag27 && Main.tileSolid[(int) Main.tile[index28, index29].type] && !Collision.SolidTiles(index28 - 1, index28 + 1, index29 - 4, index29 - 1))
|
|
{
|
|
this.position.X = (float) (index28 * 16 - this.width / 2);
|
|
this.position.Y = (float) (index29 * 16 - this.height);
|
|
this.netUpdate = true;
|
|
this.ai[3] = -120f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool DespawnEncouragement_AIStyle3_Fighters_NotDiscouraged(
|
|
int npcID,
|
|
Vector2 position,
|
|
NPC npcInstance)
|
|
{
|
|
return Main.eclipse || !Main.dayTime || npcInstance != null && npcInstance.SpawnedFromStatue || (double) position.Y > Main.worldSurface * 16.0 || npcInstance != null && Main.player[npcInstance.target].ZoneGraveyard || Main.snowMoon && (npcID == 343 || npcID == 350) || Main.invasionType == 1 && (npcID == 26 || npcID == 27 || npcID == 28 || npcID == 111 || npcID == 471) || npcID == 73 || npcID == 624 || npcID == 631 && (double) npcInstance.ai[2] > 0.0 || Main.invasionType == 3 && npcID >= 212 && npcID <= 216 || Main.invasionType == 4 && (npcID == 381 || npcID == 382 || npcID == 383 || npcID == 385 || npcID == 386 || npcID == 389 || npcID == 391 || npcID == 520) || npcID == 31 || npcID == 294 || npcID == 295 || npcID == 296 || npcID == 47 || npcID == 67 || npcID == 77 || npcID == 78 || npcID == 79 || npcID == 80 || npcID == 630 || npcID == 110 || npcID == 120 || npcID == 168 || npcID == 181 || npcID == 185 || npcID == 198 || npcID == 199 || npcID == 206 || npcID == 217 || npcID == 218 || npcID == 219 || npcID == 220 || npcID == 239 || npcID == 243 || npcID == 254 || npcID == (int) byte.MaxValue || npcID == 257 || npcID == 258 || npcID == 291 || npcID == 292 || npcID == 293 || npcID == 379 || npcID == 380 || npcID == 464 || npcID == 470 || npcID == 424 || npcID == 411 && (npcInstance == null || (double) npcInstance.ai[1] >= 180.0 || (double) npcInstance.ai[1] < 90.0) || npcID == 409 || npcID == 425 || npcID == 429 || npcID == 427 || npcID == 428 || npcID == 580 || npcID == 582 || npcID == 508 || npcID == 415 || npcID == 419 || npcID >= 524 && npcID <= 527 || npcID == 528 || npcID == 529 || npcID == 530 || npcID == 532;
|
|
}
|
|
|
|
public static bool DespawnEncouragement_AIStyle3_Fighters_CanBeBusyWithAction(int npcID) => npcID == 110 || npcID == 111 || npcID == 206 || npcID == 216 || npcID == 214 || npcID == 215 || npcID == 291 || npcID == 292 || npcID == 293 || npcID == 350 || npcID == 381 || npcID == 382 || npcID == 383 || npcID == 385 || npcID == 386 || npcID == 389 || npcID == 391 || npcID == 469 || npcID == 166 || npcID == 466 || npcID == 471 || npcID == 411 || npcID == 409 || npcID == 424 || npcID == 425 || npcID == 426 || npcID == 415 || npcID == 419 || npcID == 520;
|
|
|
|
private void AI_001_Slimes()
|
|
{
|
|
if (this.type == 1 && ((double) this.ai[1] == 1.0 || (double) this.ai[1] == 2.0 || (double) this.ai[1] == 3.0))
|
|
this.ai[1] = -1f;
|
|
if (this.type == 1 && (double) this.ai[1] == 0.0 && Main.netMode != 1 && (double) this.value > 0.0)
|
|
{
|
|
this.ai[1] = -1f;
|
|
if (Main.rand.Next(20) == 0)
|
|
{
|
|
this.ai[1] = (float) NPC.AI_001_Slimes_GenerateItemInsideBody((double) this.ai[0] == -999.0);
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (this.type == 1 && (double) this.ai[0] == -999.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
this.rotation = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 244)
|
|
{
|
|
Lighting.AddLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), (float) Main.DiscoR / (float) byte.MaxValue * 1f, (float) Main.DiscoG / (float) byte.MaxValue * 1f, (float) Main.DiscoB / (float) byte.MaxValue * 1f);
|
|
this.AI_001_SetRainbowSlimeColor();
|
|
}
|
|
bool flag = false;
|
|
if (!Main.dayTime || this.life != this.lifeMax || (double) this.position.Y > Main.worldSurface * 16.0 || Main.slimeRain)
|
|
flag = true;
|
|
if (this.type == 81)
|
|
{
|
|
flag = true;
|
|
if (Main.rand.Next(30) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 14, Alpha: this.alpha, newColor: this.color);
|
|
Main.dust[index].velocity *= 0.3f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
if ((this.type == 377 || this.type == 446) && this.target != (int) byte.MaxValue && !Main.player[this.target].dead && (double) Vector2.Distance(this.Center, Main.player[this.target].Center) <= 200.0 && !this.wet)
|
|
flag = true;
|
|
if (this.type == 183)
|
|
flag = true;
|
|
if (this.type == 304)
|
|
flag = true;
|
|
if (this.type == 244)
|
|
{
|
|
flag = true;
|
|
this.ai[0] += 2f;
|
|
}
|
|
if (this.type == 147 && Main.rand.Next(10) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 76);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.1f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if (this.type == 184)
|
|
{
|
|
if (Main.rand.Next(8) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int index = Dust.NewDust(this.position - this.velocity, this.width, this.height, 76);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.15f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
flag = true;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
if (!this.wet && !Main.player[this.target].npcTypeNoAggro[this.type])
|
|
{
|
|
Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num1 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_1.X;
|
|
float num2 = Main.player[this.target].position.Y - vector2_1.Y;
|
|
float num3 = (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2);
|
|
if (Main.expertMode && (double) num3 < 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) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
Vector2 vector2_2 = new Vector2((float) (index - 2), -4f);
|
|
vector2_2.X *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129);
|
|
vector2_2.Y *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129);
|
|
vector2_2.Normalize();
|
|
vector2_2 *= (float) (4.0 + (double) Main.rand.Next(-50, 51) * 0.00999999977648258);
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(9f, 9f);
|
|
Projectile.NewProjectile(vector2_1.X, vector2_1.Y, vector2_2.X, vector2_2.Y, 174, damageForProjectiles, 0.0f, Main.myPlayer);
|
|
this.localAI[0] = 30f;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) num3 < 200.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
float num4 = Main.player[this.target].position.Y - vector2_1.Y - (float) Main.rand.Next(0, 200);
|
|
float num5 = 4.5f / (float) Math.Sqrt((double) num1 * (double) num1 + (double) num4 * (double) num4);
|
|
float SpeedX = num1 * num5;
|
|
float SpeedY = num4 * num5;
|
|
this.localAI[0] = 50f;
|
|
Projectile.NewProjectile(vector2_1.X, vector2_1.Y, SpeedX, SpeedY, 174, 9, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 535)
|
|
{
|
|
flag = true;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
if (!this.wet && !Main.player[this.target].npcTypeNoAggro[this.type])
|
|
{
|
|
Vector2 vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num6 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_3.X;
|
|
float num7 = Main.player[this.target].position.Y - vector2_3.Y;
|
|
float num8 = (float) Math.Sqrt((double) num6 * (double) num6 + (double) num7 * (double) num7);
|
|
if (Main.expertMode && (double) num8 < 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) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
Vector2 vector2_4 = new Vector2((float) (index - 2), -4f);
|
|
vector2_4.X *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129);
|
|
vector2_4.Y *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129);
|
|
vector2_4.Normalize();
|
|
vector2_4 *= (float) (4.0 + (double) Main.rand.Next(-50, 51) * 0.00999999977648258);
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(9f, 9f);
|
|
Projectile.NewProjectile(vector2_3.X, vector2_3.Y, vector2_4.X, vector2_4.Y, 605, damageForProjectiles, 0.0f, Main.myPlayer);
|
|
this.localAI[0] = 30f;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) num8 < 200.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
float num9 = Main.player[this.target].position.Y - vector2_3.Y - (float) Main.rand.Next(0, 200);
|
|
float num10 = 4.5f / (float) Math.Sqrt((double) num6 * (double) num6 + (double) num9 * (double) num9);
|
|
float SpeedX = num6 * num10;
|
|
float SpeedY = num9 * num10;
|
|
this.localAI[0] = 50f;
|
|
Projectile.NewProjectile(vector2_3.X, vector2_3.Y, SpeedX, SpeedY, 605, 9, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 658)
|
|
{
|
|
flag = true;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
if (!this.wet && Main.player[this.target].active && !Main.player[this.target].dead && !Main.player[this.target].npcTypeNoAggro[this.type])
|
|
{
|
|
Player player = Main.player[this.target];
|
|
Vector2 center = this.Center;
|
|
float num11 = player.Center.X - center.X;
|
|
float num12 = player.Center.Y - center.Y;
|
|
float num13 = (float) Math.Sqrt((double) num11 * (double) num11 + (double) num12 * (double) num12);
|
|
int num14 = NPC.CountNPCS(658);
|
|
if (Main.expertMode && num14 < 5 && (double) Math.Abs(num11) < 500.0 && (double) Math.Abs(num12) < 550.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
for (int index = 0; index < 3; ++index)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) (index - 1), -4f);
|
|
vector2.X *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129);
|
|
vector2.Y *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129);
|
|
vector2.Normalize();
|
|
vector2 *= (float) (6.0 + (double) Main.rand.Next(-50, 51) * 0.00999999977648258);
|
|
if ((double) num13 > 350.0)
|
|
vector2 *= 2f;
|
|
else if ((double) num13 > 250.0)
|
|
vector2 *= 1.5f;
|
|
int projectilesMultiLerp = this.GetAttackDamage_ForProjectiles_MultiLerp(15f, 20f, 25f);
|
|
Projectile.NewProjectile(center.X, center.Y, vector2.X, vector2.Y, 920, projectilesMultiLerp, 0.0f, Main.myPlayer);
|
|
this.localAI[0] = 25f;
|
|
if (num14 > 4)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) Math.Abs(num11) < 500.0 && (double) Math.Abs(num12) < 550.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
float num15 = num13;
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
float num16 = Main.player[this.target].position.Y - center.Y - (float) Main.rand.Next(0, 200);
|
|
float num17 = 4.5f / (float) Math.Sqrt((double) num11 * (double) num11 + (double) num16 * (double) num16) * 2f;
|
|
if ((double) num15 > 350.0)
|
|
num17 *= 2f;
|
|
else if ((double) num15 > 250.0)
|
|
num17 *= 1.5f;
|
|
float SpeedX = num11 * num17;
|
|
float SpeedY = num16 * num17;
|
|
this.localAI[0] = 50f;
|
|
int projectilesMultiLerp = this.GetAttackDamage_ForProjectiles_MultiLerp(15f, 20f, 25f);
|
|
Projectile.NewProjectile(center.X, center.Y, SpeedX, SpeedY, 920, projectilesMultiLerp, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 659)
|
|
{
|
|
flag = true;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
if (!this.wet && Main.player[this.target].active && !Main.player[this.target].dead && !Main.player[this.target].npcTypeNoAggro[this.type])
|
|
{
|
|
Player player = Main.player[this.target];
|
|
Vector2 center = this.Center;
|
|
float num18 = player.Center.X - center.X;
|
|
float num19 = player.Center.Y - center.Y;
|
|
float num20 = (float) Math.Sqrt((double) num18 * (double) num18 + (double) num19 * (double) num19);
|
|
if ((double) Math.Abs(num18) < 500.0 && (double) Math.Abs(num19) < 550.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
float num21 = Main.player[this.target].position.Y - center.Y - (float) Main.rand.Next(0, 200);
|
|
float num22 = 4.5f / (float) Math.Sqrt((double) num18 * (double) num18 + (double) num21 * (double) num21) * 2f;
|
|
if ((double) num20 > 350.0)
|
|
num22 *= 1.75f;
|
|
else if ((double) num20 > 250.0)
|
|
num22 *= 1.25f;
|
|
float SpeedX = num18 * num22;
|
|
float SpeedY = num21 * num22;
|
|
this.localAI[0] = 40f;
|
|
if (Main.expertMode)
|
|
this.localAI[0] = 30f;
|
|
int projectilesMultiLerp = this.GetAttackDamage_ForProjectiles_MultiLerp(15f, 20f, 25f);
|
|
Projectile.NewProjectile(center.X, center.Y, SpeedX, SpeedY, 921, projectilesMultiLerp, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 204)
|
|
{
|
|
flag = true;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
if (!this.wet && !Main.player[this.target].npcTypeNoAggro[this.type])
|
|
{
|
|
Vector2 vector2_5 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
float num23 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_5.X;
|
|
float num24 = Main.player[this.target].position.Y - vector2_5.Y;
|
|
float num25 = (float) Math.Sqrt((double) num23 * (double) num23 + (double) num24 * (double) num24);
|
|
if (Main.expertMode && (double) num25 < 200.0 && Collision.CanHit(new Vector2(this.position.X, this.position.Y - 20f), this.width, this.height + 20, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -40f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
Vector2 vector2_6 = new Vector2((float) (index - 2), -2f);
|
|
vector2_6.X *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.0199999995529652);
|
|
vector2_6.Y *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.0199999995529652);
|
|
vector2_6.Normalize();
|
|
vector2_6 *= (float) (3.0 + (double) Main.rand.Next(-50, 51) * 0.00999999977648258);
|
|
int damageForProjectiles = this.GetAttackDamage_ForProjectiles(13f, 13f);
|
|
Projectile.NewProjectile(vector2_5.X, vector2_5.Y, vector2_6.X, vector2_6.Y, 176, damageForProjectiles, 0.0f, Main.myPlayer);
|
|
this.localAI[0] = 80f;
|
|
}
|
|
}
|
|
}
|
|
if ((double) num25 < 400.0 && Collision.CanHit(new Vector2(this.position.X, this.position.Y - 20f), this.width, this.height + 20, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.ai[0] = -80f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= 0.9f;
|
|
if (Main.netMode != 1 && (double) this.localAI[0] == 0.0)
|
|
{
|
|
float num26 = Main.player[this.target].position.Y - vector2_5.Y - (float) Main.rand.Next(-30, 20) - num25 * 0.05f;
|
|
float num27 = Main.player[this.target].position.X - vector2_5.X - (float) Main.rand.Next(-20, 20);
|
|
float num28 = 7f / (float) Math.Sqrt((double) num27 * (double) num27 + (double) num26 * (double) num26);
|
|
float SpeedX = num27 * num28;
|
|
float SpeedY = num26 * num28;
|
|
this.localAI[0] = 65f;
|
|
Projectile.NewProjectile(vector2_5.X, vector2_5.Y, SpeedX, SpeedY, 176, 13, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 377 || this.type == 446)
|
|
{
|
|
if ((double) this.localAI[2] < 90.0)
|
|
++this.localAI[2];
|
|
else
|
|
this.friendly = false;
|
|
}
|
|
if (this.type == 59)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
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;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
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 (this.collideY && (double) this.oldVelocity.Y != 0.0 && Collision.SolidCollision(this.position, this.width, this.height))
|
|
this.position.X -= this.velocity.X + (float) this.direction;
|
|
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 == 183)
|
|
++this.ai[0];
|
|
if (this.type == 658)
|
|
this.ai[0] += 5f;
|
|
if (this.type == 659)
|
|
this.ai[0] += 3f;
|
|
if (this.type == 304)
|
|
this.ai[0] += (float) ((1 - this.life / this.lifeMax) * 10);
|
|
if (this.type == 377 || this.type == 446)
|
|
this.ai[0] += 3f;
|
|
if (this.type == 81)
|
|
{
|
|
if ((double) this.scale >= 0.0)
|
|
this.ai[0] += 4f;
|
|
else
|
|
++this.ai[0];
|
|
}
|
|
float num29 = -1000f;
|
|
if (this.type == 659)
|
|
num29 = -500f;
|
|
int num30 = 0;
|
|
if ((double) this.ai[0] >= 0.0)
|
|
num30 = 1;
|
|
if ((double) this.ai[0] >= (double) num29 && (double) this.ai[0] <= (double) num29 * 0.5)
|
|
num30 = 2;
|
|
if ((double) this.ai[0] >= (double) num29 * 2.0 && (double) this.ai[0] <= (double) num29 * 1.5)
|
|
num30 = 3;
|
|
if (num30 > 0)
|
|
{
|
|
this.netUpdate = true;
|
|
if (flag && (double) this.ai[2] == 1.0)
|
|
this.TargetClosest();
|
|
if (num30 == 3)
|
|
{
|
|
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[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;
|
|
if (num30 == 1)
|
|
this.ai[0] += num29;
|
|
else
|
|
this.ai[0] += num29 * 2f;
|
|
}
|
|
if (this.type == 659)
|
|
{
|
|
this.velocity.Y *= 1.6f;
|
|
this.velocity.X *= 1.2f;
|
|
}
|
|
if (this.type == 141)
|
|
{
|
|
this.velocity.Y *= 1.3f;
|
|
this.velocity.X *= 1.2f;
|
|
}
|
|
if (this.type != 377 && this.type != 446)
|
|
return;
|
|
this.velocity.Y *= 0.9f;
|
|
this.velocity.X *= 0.6f;
|
|
if (flag)
|
|
{
|
|
this.direction = -this.direction;
|
|
this.velocity.X *= -1f;
|
|
}
|
|
if (!WorldGen.SolidTile((int) ((double) this.Center.X / 16.0), (int) ((double) this.Center.Y / 16.0) - 1) || -(double) this.velocity.Y + (double) this.height <= 16.0)
|
|
return;
|
|
this.velocity.Y = (float) -(16 - this.height);
|
|
}
|
|
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.collideX && (double) Math.Abs(this.velocity.X) == 0.200000002980232)
|
|
this.position.X -= 1.4f * (float) this.direction;
|
|
if (this.collideY && (double) this.oldVelocity.Y != 0.0 && Collision.SolidCollision(this.position, this.width, this.height))
|
|
this.position.X -= this.velocity.X + (float) this.direction;
|
|
if (this.direction == -1 && (double) this.velocity.X < 0.01 || this.direction == 1 && (double) this.velocity.X > -0.01)
|
|
this.velocity.X += 0.2f * (float) this.direction;
|
|
else
|
|
this.velocity.X *= 0.93f;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void AI_001_SetRainbowSlimeColor()
|
|
{
|
|
this.color.R = (byte) Main.DiscoR;
|
|
this.color.G = (byte) Main.DiscoG;
|
|
this.color.B = (byte) Main.DiscoB;
|
|
this.color.A = (byte) 100;
|
|
this.alpha = 175;
|
|
}
|
|
|
|
private static int AI_001_Slimes_GenerateItemInsideBody(bool isBallooned)
|
|
{
|
|
int num1 = Main.rand.Next(4);
|
|
int num2;
|
|
if (isBallooned)
|
|
{
|
|
switch (Main.rand.Next(13))
|
|
{
|
|
case 1:
|
|
num2 = 4368;
|
|
break;
|
|
case 2:
|
|
num2 = 4369;
|
|
break;
|
|
case 3:
|
|
num2 = 4370;
|
|
break;
|
|
case 4:
|
|
num2 = 4371;
|
|
break;
|
|
case 5:
|
|
num2 = 4612;
|
|
break;
|
|
case 6:
|
|
num2 = 4674;
|
|
break;
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
num2 = 4343;
|
|
break;
|
|
case 10:
|
|
case 11:
|
|
case 12:
|
|
num2 = 4344;
|
|
break;
|
|
default:
|
|
num2 = 4367;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (num1)
|
|
{
|
|
case 0:
|
|
switch (Main.rand.Next(7))
|
|
{
|
|
case 0:
|
|
num2 = 290;
|
|
break;
|
|
case 1:
|
|
num2 = 292;
|
|
break;
|
|
case 2:
|
|
num2 = 296;
|
|
break;
|
|
case 3:
|
|
num2 = 2322;
|
|
break;
|
|
default:
|
|
num2 = Main.netMode == 0 || Main.rand.Next(2) != 0 ? 2350 : 2997;
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
num2 = 8;
|
|
break;
|
|
case 1:
|
|
num2 = 166;
|
|
break;
|
|
case 2:
|
|
num2 = 965;
|
|
break;
|
|
default:
|
|
num2 = 58;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num2 = Main.rand.Next(2) != 0 ? Main.rand.Next(699, 703) : Main.rand.Next(11, 15);
|
|
break;
|
|
default:
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
num2 = 71;
|
|
break;
|
|
case 1:
|
|
num2 = 72;
|
|
break;
|
|
default:
|
|
num2 = 73;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
private void AI_110_Betsy()
|
|
{
|
|
NPCUtils.TargetClosestBetsy(this, false);
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
int num1 = -1;
|
|
float num2 = 1f;
|
|
int Damage1 = 35;
|
|
int Damage2 = 35;
|
|
float num3 = 10f;
|
|
float moveSpeed = 0.45f;
|
|
float num4 = 7.5f;
|
|
float num5 = 30f;
|
|
float num6 = 30f;
|
|
float num7 = 23f;
|
|
float num8 = 600f;
|
|
float num9 = 12f;
|
|
float num10 = 40f;
|
|
float num11 = 80f;
|
|
float num12 = num10 + num11;
|
|
float num13 = 1500f;
|
|
float num14 = 60f;
|
|
float num15 = 13f;
|
|
float amount = 0.03333334f;
|
|
float num16 = 12f;
|
|
int num17 = 10;
|
|
int num18 = 6 * num17;
|
|
float num19 = 60f;
|
|
float num20 = num14 + (float) num18 + num19;
|
|
float num21 = 60f;
|
|
float num22 = (float) (6.28318548202515 * (1.0 / (double) num21));
|
|
float num23 = 0.1f;
|
|
float num24 = 32f;
|
|
float num25 = 90f;
|
|
float num26 = 20f;
|
|
double num27 = (double) this.ai[0];
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) ++this.ai[1] >= (double) num3)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
this.ai[0] = 1f;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
if ((double) this.ai[2] == 0.0)
|
|
this.ai[2] = (double) this.Center.X < (double) targetData.Center.X ? 1f : -1f;
|
|
this.SimpleFlyMovement(this.DirectionTo(targetData.Center + new Vector2((float) (-(double) this.ai[2] * 300.0), -200f)) * num4, moveSpeed);
|
|
this.direction = this.spriteDirection = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1;
|
|
if ((double) ++this.ai[1] >= (double) num5)
|
|
{
|
|
int num28 = 1;
|
|
if ((double) this.ai[3] == 5.0 && Main.rand.Next(3) == 0)
|
|
++this.ai[3];
|
|
switch ((int) this.ai[3])
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 3:
|
|
num28 = 2;
|
|
break;
|
|
case 2:
|
|
num28 = 3;
|
|
break;
|
|
case 4:
|
|
num28 = 4;
|
|
break;
|
|
case 5:
|
|
num28 = 5;
|
|
break;
|
|
case 6:
|
|
num28 = 3;
|
|
break;
|
|
case 7:
|
|
num28 = 6;
|
|
break;
|
|
}
|
|
this.ai[0] = (float) num28;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
++this.ai[3];
|
|
this.netUpdate = true;
|
|
if ((double) this.ai[3] >= 8.0)
|
|
this.ai[3] = 0.0f;
|
|
switch (num28)
|
|
{
|
|
case 2:
|
|
Vector2 v1 = this.DirectionTo(targetData.Center);
|
|
this.spriteDirection = (double) v1.X > 0.0 ? 1 : -1;
|
|
this.rotation = v1.ToRotation();
|
|
if (this.spriteDirection == -1)
|
|
this.rotation += 3.141593f;
|
|
this.velocity = v1 * num7;
|
|
break;
|
|
case 3:
|
|
Vector2 vector2 = new Vector2((double) targetData.Center.X > (double) this.Center.X ? 1f : -1f, 0.0f);
|
|
this.spriteDirection = (double) vector2.X > 0.0 ? 1 : -1;
|
|
this.velocity = vector2 * -2f;
|
|
break;
|
|
case 5:
|
|
Vector2 v2 = this.DirectionTo(targetData.Center);
|
|
this.spriteDirection = (double) v2.X > 0.0 ? 1 : -1;
|
|
this.rotation = v2.ToRotation();
|
|
if (this.spriteDirection == -1)
|
|
this.rotation += 3.141593f;
|
|
this.velocity = v2 * num24;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 2.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyWindAttack, this.Center);
|
|
if ((double) ++this.ai[1] >= (double) num6)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 3.0)
|
|
{
|
|
ActiveSound activeSound = SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[2]));
|
|
if (activeSound != null)
|
|
activeSound.Position = this.Center;
|
|
++this.ai[1];
|
|
int num29 = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1;
|
|
this.ai[2] = (float) num29;
|
|
if ((double) this.ai[1] < (double) num10)
|
|
{
|
|
Vector2 vector2_1 = targetData.Center + new Vector2((float) num29 * -num8, -250f);
|
|
Vector2 vector2_2 = this.DirectionTo(vector2_1) * num9;
|
|
if ((double) this.Distance(vector2_1) < (double) num9)
|
|
this.Center = vector2_1;
|
|
else
|
|
this.position = this.position + vector2_2;
|
|
if ((double) Vector2.Distance(vector2_1, this.Center) < 16.0)
|
|
this.ai[1] = num10 - 1f;
|
|
num2 = 1.5f;
|
|
}
|
|
if ((double) this.ai[1] == (double) num10)
|
|
{
|
|
int num30 = (double) targetData.Center.X > (double) this.Center.X ? 1 : -1;
|
|
this.velocity = new Vector2((float) num30, 0.0f) * 10f;
|
|
this.direction = this.spriteDirection = num30;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(this.Center, this.velocity, 687, Damage1, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI));
|
|
float[] localAi = this.localAI;
|
|
SlotId slotId = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyFlameBreath, this.Center);
|
|
double num31 = (double) ((SlotId) ref slotId).ToFloat();
|
|
localAi[2] = (float) num31;
|
|
}
|
|
if ((double) this.ai[1] >= (double) num10)
|
|
{
|
|
num2 = 1.5f;
|
|
if ((double) Math.Abs(targetData.Center.X - this.Center.X) > 550.0 && (double) Math.Abs(this.velocity.X) < 20.0)
|
|
this.velocity.X += (float) Math.Sign(this.velocity.X) * 0.5f;
|
|
}
|
|
if ((double) this.ai[1] >= (double) num12)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 4.0)
|
|
{
|
|
int num32 = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1;
|
|
this.ai[2] = (float) num32;
|
|
if ((double) this.ai[1] < (double) num14)
|
|
{
|
|
Vector2 Destination = targetData.Center + new Vector2((float) num32 * -num13, -350f);
|
|
this.velocity = Vector2.Lerp(this.velocity, this.DirectionTo(Destination) * num15, amount);
|
|
this.direction = this.spriteDirection = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1;
|
|
if ((double) Vector2.Distance(Destination, this.Center) < 16.0)
|
|
this.ai[1] = num14 - 1f;
|
|
num2 = 1.5f;
|
|
}
|
|
else if ((double) this.ai[1] == (double) num14)
|
|
{
|
|
Vector2 v = this.DirectionTo(targetData.Center);
|
|
v.Y *= 0.25f;
|
|
v = v.SafeNormalize(Vector2.UnitX * (float) this.direction);
|
|
this.spriteDirection = (double) v.X > 0.0 ? 1 : -1;
|
|
this.rotation = v.ToRotation();
|
|
if (this.spriteDirection == -1)
|
|
this.rotation += 3.141593f;
|
|
this.velocity = v * num16;
|
|
}
|
|
else
|
|
{
|
|
this.position.X += this.DirectionTo(targetData.Center).X * 7f;
|
|
this.position.Y += this.DirectionTo(targetData.Center + new Vector2(0.0f, -400f)).Y * 6f;
|
|
if ((double) this.ai[1] <= (double) num20 - (double) num19)
|
|
num2 = 1.5f;
|
|
Vector2 position = this.Center + new Vector2((110f + 30f) * (float) this.direction, 20f).RotatedBy((double) this.rotation);
|
|
int num33 = (int) ((double) this.ai[1] - (double) num14 + 1.0);
|
|
if (num33 <= num18 && num33 % num17 == 0 && Main.netMode != 1)
|
|
Projectile.NewProjectile(position, this.velocity, 686, Damage2, 0.0f, Main.myPlayer);
|
|
}
|
|
if ((double) this.ai[1] > (double) num20 - (double) num19)
|
|
this.velocity.Y -= 0.1f;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) num20)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 5.0)
|
|
{
|
|
this.velocity = this.velocity.RotatedBy(-(double) num22 * (double) this.direction);
|
|
this.position.Y -= num23;
|
|
this.position = this.position + this.DirectionTo(targetData.Center) * 10f;
|
|
this.rotation -= num22 * (float) this.direction;
|
|
num2 *= 0.7f;
|
|
if ((double) this.ai[1] == 1.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyFlyingCircleAttack, this.Center);
|
|
if ((double) ++this.ai[1] >= (double) num21)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.velocity = this.velocity / 2f;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 6.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
{
|
|
this.SimpleFlyMovement(this.DirectionTo(targetData.Center + new Vector2(0.0f, -200f)) * num4 * 2f, moveSpeed * 2f);
|
|
this.direction = this.spriteDirection = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1;
|
|
++this.ai[2];
|
|
if ((double) this.Distance(targetData.Center) < 350.0 || (double) this.ai[2] >= 180.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[1] == 1.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyScream);
|
|
if ((double) this.ai[1] < (double) num26)
|
|
this.velocity = this.velocity * 0.95f;
|
|
else
|
|
this.velocity = this.velocity * 0.98f;
|
|
if ((double) this.ai[1] == (double) num26)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y /= 3f;
|
|
this.velocity.Y -= 3f;
|
|
}
|
|
num2 *= 0.85f;
|
|
if (((double) this.ai[1] == 20.0 || (double) this.ai[1] == 25.0 ? 1 : ((double) this.ai[1] == 30.0 ? 1 : 0)) != 0)
|
|
{
|
|
Point tileCoordinates = this.Center.ToTileCoordinates();
|
|
int num34 = 30;
|
|
int num35 = 35;
|
|
int num36 = 4;
|
|
for (int i = tileCoordinates.X - num34; i <= tileCoordinates.X + num34; ++i)
|
|
{
|
|
bool flag1 = false;
|
|
for (int j = tileCoordinates.Y - num35 / 3; j < tileCoordinates.Y + num35; ++j)
|
|
{
|
|
Tile tileSafely = Framing.GetTileSafely(i, j);
|
|
bool flag2 = tileSafely.active() && Main.tileSolid[(int) tileSafely.type] && !Main.tileFrameImportant[(int) tileSafely.type];
|
|
if (flag1 & flag2)
|
|
{
|
|
int tileDustAmount = WorldGen.KillTile_GetTileDustAmount(true, tileSafely);
|
|
for (int index = 0; index < tileDustAmount; ++index)
|
|
{
|
|
Dust dust = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)];
|
|
dust.velocity.Y -= (float) (3.0 + (double) num36 * 1.5);
|
|
dust.velocity.Y *= Main.rand.NextFloat();
|
|
dust.scale += (float) num36 * 0.03f;
|
|
}
|
|
for (int index = 0; index < tileDustAmount - 1; ++index)
|
|
{
|
|
Dust dust = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)];
|
|
dust.velocity.Y -= 1f + (float) num36;
|
|
dust.velocity.Y *= Main.rand.NextFloat();
|
|
}
|
|
if (tileDustAmount > 0 && Main.rand.Next(3) != 0)
|
|
{
|
|
float num37 = (float) (Math.Abs(tileCoordinates.X - i) / (num34 / 2));
|
|
Gore gore = Gore.NewGoreDirect(this.position, Vector2.Zero, 61 + Main.rand.Next(3), (float) (1.0 - (double) num36 * 0.150000005960464 + (double) num37 * 0.5));
|
|
gore.velocity.Y -= (float) (0.100000001490116 + (double) num36 * 0.5 + (double) num37 * (double) num36 * 1.0);
|
|
gore.velocity.Y *= Main.rand.NextFloat();
|
|
gore.position = new Vector2((float) (i * 16 + 20), (float) (j * 16 + 20));
|
|
}
|
|
}
|
|
flag1 = !flag2;
|
|
}
|
|
}
|
|
}
|
|
bool flag = (double) this.ai[1] == 20.0 || (double) this.ai[1] == 45.0 || (double) this.ai[1] == 70.0;
|
|
if (NPC.CountNPCS(560) > 4)
|
|
flag = false;
|
|
if (flag && Main.netMode != 1)
|
|
{
|
|
for (int index = 0; index < 1; ++index)
|
|
{
|
|
Vector2 vector2 = this.Center + (6.283185f * Main.rand.NextFloat()).ToRotationVector2() * new Vector2(2f, 1f) * 300f * (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 0.400000005960464);
|
|
if ((double) Vector2.Distance(vector2, targetData.Center) > 100.0)
|
|
{
|
|
Point point = vector2.ToPoint();
|
|
NPC.NewNPC(point.X, point.Y, 560, this.whoAmI);
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsySummon, vector2);
|
|
}
|
|
}
|
|
List<NPC> npcList = new List<NPC>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
NPC npc = Main.npc[index];
|
|
if (npc.active && npc.type == 549)
|
|
npcList.Add(npc);
|
|
}
|
|
if (npcList.Count > 0)
|
|
{
|
|
for (int index = 0; index < 3; ++index)
|
|
{
|
|
NPC npc = npcList[Main.rand.Next(npcList.Count)];
|
|
Point point = npc.Center.ToPoint();
|
|
NPC.NewNPC(point.X, point.Y, 560);
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsySummon, npc.Center);
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
}
|
|
if ((double) this.ai[1] >= (double) num25)
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
this.localAI[0] += num2;
|
|
if ((double) this.localAI[0] >= 36.0)
|
|
this.localAI[0] = 0.0f;
|
|
if (num1 != -1)
|
|
this.localAI[0] = (float) (num1 * 4);
|
|
if ((double) ++this.localAI[1] >= 60.0)
|
|
this.localAI[1] = 0.0f;
|
|
float targetAngle = this.DirectionTo(targetData.Center).ToRotation();
|
|
float maxChange = 0.04f;
|
|
switch (this.ai[0])
|
|
{
|
|
case 2f:
|
|
case 5f:
|
|
maxChange = 0.0f;
|
|
break;
|
|
case 3f:
|
|
maxChange = 0.01f;
|
|
targetAngle = 0.0f;
|
|
if (this.spriteDirection == -1)
|
|
targetAngle -= 3.141593f;
|
|
if ((double) this.ai[1] >= (double) num10)
|
|
{
|
|
targetAngle += (float) ((double) this.spriteDirection * 3.14159274101257 / 12.0);
|
|
maxChange = 0.05f;
|
|
break;
|
|
}
|
|
break;
|
|
case 4f:
|
|
maxChange = 0.01f;
|
|
targetAngle = 3.141593f;
|
|
if (this.spriteDirection == 1)
|
|
{
|
|
targetAngle += 3.141593f;
|
|
break;
|
|
}
|
|
break;
|
|
case 6f:
|
|
maxChange = 0.02f;
|
|
targetAngle = 0.0f;
|
|
if (this.spriteDirection == -1)
|
|
{
|
|
targetAngle -= 3.141593f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.spriteDirection == -1)
|
|
targetAngle += 3.141593f;
|
|
if ((double) maxChange != 0.0)
|
|
this.rotation = this.rotation.AngleTowards(targetAngle, maxChange);
|
|
if (SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[2])) != null)
|
|
return;
|
|
float[] localAi1 = this.localAI;
|
|
SlotId invalid = (SlotId) SlotId.Invalid;
|
|
double num38 = (double) ((SlotId) ref invalid).ToFloat();
|
|
localAi1[2] = (float) num38;
|
|
}
|
|
|
|
private void AI_026_Unicorns()
|
|
{
|
|
int num1 = 30;
|
|
int num2 = 10;
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
bool flag3 = 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))
|
|
{
|
|
flag2 = true;
|
|
++this.ai[3];
|
|
}
|
|
if (this.type == 546)
|
|
{
|
|
num2 = 4;
|
|
bool flag4 = (double) this.velocity.Y == 0.0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width)
|
|
{
|
|
if ((double) this.position.X < (double) Main.npc[index].position.X)
|
|
this.velocity.X -= 0.05f;
|
|
else
|
|
this.velocity.X += 0.05f;
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= 0.05f;
|
|
else
|
|
this.velocity.Y += 0.05f;
|
|
}
|
|
}
|
|
if (flag4)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
if (this.type == 315)
|
|
{
|
|
Lighting.AddLight(this.Center, 0.4f, 0.36f, 0.2f);
|
|
int num3 = this.frame.Height;
|
|
if (num3 < 1)
|
|
num3 = 1;
|
|
switch (this.frame.Y / num3)
|
|
{
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
Vector2 vector2_1 = this.Bottom + new Vector2(-30f, -8f);
|
|
Vector2 vector2_2 = new Vector2(60f, 8f);
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
Dust dust = Dust.NewDustPerfect(vector2_1 + new Vector2(Main.rand.NextFloat() * vector2_2.X, Main.rand.NextFloat() * vector2_2.Y), 6, new Vector2?(this.velocity));
|
|
dust.scale = 0.6f;
|
|
dust.fadeIn = 1.1f;
|
|
dust.noGravity = true;
|
|
dust.noLight = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if ((((double) this.position.X == (double) this.oldPosition.X ? 1 : ((double) this.ai[3] >= (double) num1 ? 1 : 0)) | (flag2 ? 1 : 0)) != 0)
|
|
{
|
|
++this.ai[3];
|
|
flag3 = true;
|
|
}
|
|
else if ((double) this.ai[3] > 0.0)
|
|
--this.ai[3];
|
|
if ((double) this.ai[3] > (double) (num1 * num2))
|
|
this.ai[3] = 0.0f;
|
|
if (this.justHit)
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[3] == (double) num1)
|
|
this.netUpdate = true;
|
|
Vector2 vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f);
|
|
double num4 = (double) Main.player[this.target].position.X + (double) Main.player[this.target].width * 0.5 - (double) vector2_3.X;
|
|
float num5 = Main.player[this.target].position.Y - vector2_3.Y;
|
|
float num6 = (float) Math.Sqrt(num4 * num4 + (double) num5 * (double) num5);
|
|
if ((double) num6 < 200.0 && !flag3)
|
|
this.ai[3] = 0.0f;
|
|
if (this.type == 410)
|
|
{
|
|
++this.ai[1];
|
|
bool flag5 = (double) this.ai[1] >= 240.0;
|
|
if (!flag5 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && !Main.player[index].dead && (double) Main.player[index].Distance(this.Center) < 800.0 && (double) Main.player[index].Center.Y < (double) this.Center.Y && (double) Math.Abs(Main.player[index].Center.X - this.Center.X) < 20.0)
|
|
{
|
|
flag5 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag5 && Main.netMode != 1)
|
|
{
|
|
for (int index = 0; index < 3; ++index)
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, (float) (((double) Main.rand.NextFloat() - 0.5) * 2.0), (float) (-4.0 - 10.0 * (double) Main.rand.NextFloat()), 538, 50, 0.0f, Main.myPlayer);
|
|
this.HitEffect(9999);
|
|
this.active = false;
|
|
return;
|
|
}
|
|
}
|
|
else if (this.type == 423)
|
|
{
|
|
if ((double) this.ai[2] == 1.0)
|
|
{
|
|
++this.ai[1];
|
|
this.velocity.X *= 0.7f;
|
|
if ((double) this.ai[1] < 30.0)
|
|
{
|
|
Vector2 Position = this.Center + Vector2.UnitX * (float) this.spriteDirection * -20f;
|
|
Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 242)];
|
|
Vector2 vector2_4 = Vector2.UnitY.RotatedByRandom(6.28318548202515);
|
|
dust.position = Position + vector2_4 * 20f;
|
|
dust.velocity = -vector2_4 * 2f;
|
|
dust.scale = (float) (0.5 + (double) vector2_4.X * (double) -this.spriteDirection);
|
|
dust.fadeIn = 1f;
|
|
dust.noGravity = true;
|
|
}
|
|
else if ((double) this.ai[1] == 30.0)
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
{
|
|
Vector2 Position = this.Center + Vector2.UnitX * (float) this.spriteDirection * -20f;
|
|
Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 242)];
|
|
Vector2 vector2_5 = Vector2.UnitY.RotatedByRandom(6.28318548202515);
|
|
dust.position = Position + vector2_5 * 4f;
|
|
dust.velocity = vector2_5 * 4f + Vector2.UnitX * Main.rand.NextFloat() * (float) this.spriteDirection * -5f;
|
|
dust.scale = (float) (0.5 + (double) vector2_5.X * (double) -this.spriteDirection);
|
|
dust.fadeIn = 1f;
|
|
dust.noGravity = true;
|
|
}
|
|
}
|
|
if ((double) this.velocity.X > -0.5 && (double) this.velocity.X < 0.5)
|
|
this.velocity.X = 0.0f;
|
|
if ((double) this.ai[1] == 30.0 && Main.netMode != 1)
|
|
Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * -20), this.Center.Y, (float) (this.spriteDirection * -7), 0.0f, 575, this.GetAttackDamage_ForProjectiles(50f, 35f), 0.0f, Main.myPlayer, (float) this.target);
|
|
if ((double) this.ai[1] >= 60.0)
|
|
{
|
|
this.ai[1] = (float) -Main.rand.Next(320, 601);
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 180.0 && (double) num6 < 500.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
flag1 = true;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 1f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.velocity.Y == 0.0 && (double) num6 < 100.0 && (double) Math.Abs(this.velocity.X) > 3.0 && ((double) this.Center.X < (double) Main.player[this.target].Center.X && (double) this.velocity.X > 0.0 || (double) this.Center.X > (double) Main.player[this.target].Center.X && (double) this.velocity.X < 0.0))
|
|
this.velocity.Y -= 4f;
|
|
}
|
|
}
|
|
else if (this.type == 155 || this.type == 329)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && (double) num6 < 100.0 && (double) Math.Abs(this.velocity.X) > 3.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) && (double) this.velocity.X < 0.0))
|
|
this.velocity.Y -= 4f;
|
|
}
|
|
else if (this.type == 546 && (double) this.velocity.Y == 0.0 && (double) Math.Abs(this.velocity.X) > 3.0 && ((double) this.Center.X < (double) Main.player[this.target].Center.X && (double) this.velocity.X > 0.0 || (double) this.Center.X > (double) Main.player[this.target].Center.X && (double) this.velocity.X < 0.0))
|
|
{
|
|
this.velocity.Y -= 4f;
|
|
SoundEngine.PlaySound(3, this.Center, 11);
|
|
}
|
|
if (this.type == 546 && !Main.player[this.target].ZoneDesert)
|
|
{
|
|
int direction = this.direction;
|
|
this.TargetClosest();
|
|
if (!Main.player[this.target].ZoneDesert)
|
|
{
|
|
this.EncourageDespawn(10);
|
|
this.ai[3] = (float) num1;
|
|
this.direction = direction;
|
|
}
|
|
}
|
|
if ((double) this.ai[3] < (double) num1)
|
|
{
|
|
if ((this.type == 329 || this.type == 315) && !Main.pumpkinMoon)
|
|
this.EncourageDespawn(10);
|
|
else
|
|
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 num7 = 6f;
|
|
float num8 = 0.07f;
|
|
if (!flag1 && ((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 (this.type == 155)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && this.direction < 0)
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) this.velocity.X < 0.0 && this.direction > 0)
|
|
this.velocity.X *= 0.95f;
|
|
}
|
|
else if (this.type == 329)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && this.direction < 0)
|
|
this.velocity.X *= 0.9f;
|
|
if ((double) this.velocity.X < 0.0 && this.direction > 0)
|
|
this.velocity.X *= 0.9f;
|
|
if (this.direction > 0 && (double) this.velocity.X < 3.0)
|
|
this.velocity.X += 0.1f;
|
|
if (this.direction < 0 && (double) this.velocity.X > -3.0)
|
|
this.velocity.X -= 0.1f;
|
|
}
|
|
else if (this.type == 315)
|
|
{
|
|
if ((double) this.velocity.X > 0.0 && this.direction < 0)
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) this.velocity.X < 0.0 && this.direction > 0)
|
|
this.velocity.X *= 0.95f;
|
|
if ((double) this.velocity.X < -(double) num7 || (double) this.velocity.X > (double) num7)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num7 && this.direction == 1)
|
|
{
|
|
this.velocity.X += 0.07f;
|
|
if ((double) this.velocity.X > (double) num7)
|
|
this.velocity.X = num7;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num7 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= 0.07f;
|
|
if ((double) this.velocity.X < -(double) num7)
|
|
this.velocity.X = -num7;
|
|
}
|
|
}
|
|
else if (this.type == 410)
|
|
{
|
|
if (Math.Sign(this.velocity.X) != this.direction)
|
|
this.velocity.X *= 0.9f;
|
|
num7 = 6f;
|
|
num8 = 0.2f;
|
|
}
|
|
else if (this.type == 423)
|
|
{
|
|
if (Math.Sign(this.velocity.X) != this.direction)
|
|
this.velocity.X *= 0.85f;
|
|
num7 = 10f;
|
|
num8 = 0.2f;
|
|
}
|
|
else if (this.type == 546)
|
|
{
|
|
if (Math.Sign(this.velocity.X) != this.direction)
|
|
this.velocity.X *= 0.92f;
|
|
float num9 = MathHelper.Lerp(0.6f, 1f, Math.Abs(Main.windSpeedTarget)) * (float) Math.Sign(Main.windSpeedTarget);
|
|
if (!Main.player[this.target].ZoneSandstorm)
|
|
num9 = 0.0f;
|
|
num7 = (float) (4.0 + (double) num9 * (double) this.direction * 3.0);
|
|
num8 = 0.05f;
|
|
}
|
|
if ((double) this.velocity.X < -(double) num7 || (double) this.velocity.X > (double) num7)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * 0.8f;
|
|
}
|
|
else if ((double) this.velocity.X < (double) num7 && this.direction == 1)
|
|
{
|
|
this.velocity.X += num8;
|
|
if ((double) this.velocity.X > (double) num7)
|
|
this.velocity.X = num7;
|
|
}
|
|
else if ((double) this.velocity.X > -(double) num7 && this.direction == -1)
|
|
{
|
|
this.velocity.X -= num8;
|
|
if ((double) this.velocity.X < -(double) num7)
|
|
this.velocity.X = -num7;
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y >= 0.0)
|
|
{
|
|
int num10 = 0;
|
|
if ((double) this.velocity.X < 0.0)
|
|
num10 = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
num10 = 1;
|
|
Vector2 position = this.position;
|
|
position.X += this.velocity.X;
|
|
int index1 = (int) (((double) position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 1) * num10)) / 16.0);
|
|
int index2 = (int) (((double) position.Y + (double) this.height - 1.0) / 16.0);
|
|
if (Main.tile[index1, index2] == null)
|
|
Main.tile[index1, index2] = new Tile();
|
|
if (Main.tile[index1, index2 - 1] == null)
|
|
Main.tile[index1, index2 - 1] = new Tile();
|
|
if (Main.tile[index1, index2 - 2] == null)
|
|
Main.tile[index1, index2 - 2] = new Tile();
|
|
if (Main.tile[index1, index2 - 3] == null)
|
|
Main.tile[index1, index2 - 3] = new Tile();
|
|
if (Main.tile[index1, index2 + 1] == null)
|
|
Main.tile[index1, index2 + 1] = new Tile();
|
|
if ((double) (index1 * 16) < (double) position.X + (double) this.width && (double) (index1 * 16 + 16) > (double) position.X && (Main.tile[index1, index2].nactive() && !Main.tile[index1, index2].topSlope() && !Main.tile[index1, index2 - 1].topSlope() && Main.tileSolid[(int) Main.tile[index1, index2].type] && !Main.tileSolidTop[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2 - 1].halfBrick() && Main.tile[index1, index2 - 1].nactive()) && (!Main.tile[index1, index2 - 1].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 1].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 1].type] || Main.tile[index1, index2 - 1].halfBrick() && (!Main.tile[index1, index2 - 4].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 4].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 4].type])) && (!Main.tile[index1, index2 - 2].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 2].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 2].type]) && (!Main.tile[index1, index2 - 3].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 3].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 3].type]) && (!Main.tile[index1 - num10, index2 - 3].nactive() || !Main.tileSolid[(int) Main.tile[index1 - num10, index2 - 3].type]))
|
|
{
|
|
float num11 = (float) (index2 * 16);
|
|
if (Main.tile[index1, index2].halfBrick())
|
|
num11 += 8f;
|
|
if (Main.tile[index1, index2 - 1].halfBrick())
|
|
num11 -= 8f;
|
|
if ((double) num11 < (double) position.Y + (double) this.height)
|
|
{
|
|
float num12 = position.Y + (float) this.height - num11;
|
|
if ((double) num12 <= 16.1)
|
|
{
|
|
this.gfxOffY += this.position.Y + (float) this.height - num11;
|
|
this.position.Y = num11 - (float) this.height;
|
|
this.stepSpeed = (double) num12 >= 9.0 ? 2f : 1f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
bool flag6 = true;
|
|
int index3 = (int) ((double) this.position.Y - 7.0) / 16;
|
|
int num13 = (int) ((double) this.position.X - 7.0) / 16;
|
|
int num14 = (int) ((double) this.position.X + (double) this.width + 7.0) / 16;
|
|
for (int index4 = num13; index4 <= num14; ++index4)
|
|
{
|
|
if (Main.tile[index4, index3] != null && Main.tile[index4, index3].nactive() && Main.tileSolid[(int) Main.tile[index4, index3].type])
|
|
{
|
|
flag6 = false;
|
|
break;
|
|
}
|
|
}
|
|
if (flag6)
|
|
{
|
|
int index5 = (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 index6 = (int) (((double) this.position.Y + (double) this.height - 15.0) / 16.0);
|
|
if (Main.tile[index5, index6] == null)
|
|
Main.tile[index5, index6] = new Tile();
|
|
if (Main.tile[index5, index6 - 1] == null)
|
|
Main.tile[index5, index6 - 1] = new Tile();
|
|
if (Main.tile[index5, index6 - 2] == null)
|
|
Main.tile[index5, index6 - 2] = new Tile();
|
|
if (Main.tile[index5, index6 - 3] == null)
|
|
Main.tile[index5, index6 - 3] = new Tile();
|
|
if (Main.tile[index5, index6 + 1] == null)
|
|
Main.tile[index5, index6 + 1] = new Tile();
|
|
if (Main.tile[index5 + this.direction, index6 - 1] == null)
|
|
Main.tile[index5 + this.direction, index6 - 1] = new Tile();
|
|
if (Main.tile[index5 + this.direction, index6 + 1] == null)
|
|
Main.tile[index5 + this.direction, index6 + 1] = new Tile();
|
|
if (Main.tile[index5 - this.direction, index6 + 1] == null)
|
|
Main.tile[index5 - this.direction, index6 + 1] = new Tile();
|
|
if (Main.tile[index5 + this.direction, index6 + 3] == null)
|
|
Main.tile[index5 + this.direction, index6 + 3] = new Tile();
|
|
int spriteDirection = this.spriteDirection;
|
|
if (this.type == 423 || this.type == 410 || this.type == 546)
|
|
spriteDirection *= -1;
|
|
if ((double) this.velocity.X < 0.0 && spriteDirection == -1 || (double) this.velocity.X > 0.0 && spriteDirection == 1)
|
|
{
|
|
bool flag7 = this.type == 410 || this.type == 423;
|
|
float num15 = 3f;
|
|
if (Main.tile[index5, index6 - 2].nactive() && Main.tileSolid[(int) Main.tile[index5, index6 - 2].type])
|
|
{
|
|
if (Main.tile[index5, index6 - 3].nactive() && Main.tileSolid[(int) Main.tile[index5, index6 - 3].type])
|
|
{
|
|
this.velocity.Y = -8.5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
this.velocity.Y = -7.5f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (Main.tile[index5, index6 - 1].nactive() && !Main.tile[index5, index6 - 1].topSlope() && Main.tileSolid[(int) Main.tile[index5, index6 - 1].type])
|
|
{
|
|
this.velocity.Y = -7f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.position.Y + (double) this.height - (double) (index6 * 16) > 20.0 && Main.tile[index5, index6].nactive() && !Main.tile[index5, index6].topSlope() && Main.tileSolid[(int) Main.tile[index5, index6].type])
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((this.directionY < 0 || (double) Math.Abs(this.velocity.X) > (double) num15) && (!flag7 || !Main.tile[index5, index6 + 1].nactive() || !Main.tileSolid[(int) Main.tile[index5, index6 + 1].type]) && (!Main.tile[index5, index6 + 2].nactive() || !Main.tileSolid[(int) Main.tile[index5, index6 + 2].type]) && (!Main.tile[index5 + this.direction, index6 + 3].nactive() || !Main.tileSolid[(int) Main.tile[index5 + this.direction, index6 + 3].type]))
|
|
{
|
|
this.velocity.Y = -8f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 423 && (double) Math.Abs(this.velocity.X) >= (double) num7 * 0.949999988079071)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle hitbox = this.Hitbox;
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Dust dust = Main.dust[Dust.NewDust(hitbox.TopLeft(), hitbox.Width, hitbox.Height, 242)];
|
|
dust.velocity = Vector2.Zero;
|
|
dust.noGravity = true;
|
|
dust.fadeIn = 1f;
|
|
dust.scale = 0.5f + Main.rand.NextFloat();
|
|
}
|
|
}
|
|
}
|
|
if (this.type != 546)
|
|
return;
|
|
this.rotation += this.velocity.X * 0.05f;
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
|
|
private void AI_107_ImprovedWalkers()
|
|
{
|
|
bool flag1 = (double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0 && !this.justHit;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
int num1 = 32;
|
|
int num2 = 15;
|
|
float num3 = 9f;
|
|
bool flag5 = false;
|
|
float num4 = 40f;
|
|
int num5 = 30;
|
|
int num6 = 0;
|
|
bool flag6 = false;
|
|
bool flag7 = true;
|
|
float num7 = 0.9f;
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
bool flag13 = false;
|
|
bool flag14 = false;
|
|
bool flag15 = true;
|
|
int num8 = 70;
|
|
int num9 = num8 / 2;
|
|
float num10 = 11f;
|
|
Vector2 vector2_1 = Vector2.Zero;
|
|
int Damage = 1;
|
|
int Type = 81;
|
|
float num11 = 700f;
|
|
float num12 = 0.0f;
|
|
float num13 = 0.1f;
|
|
Vector2? nullable = new Vector2?();
|
|
float max1 = 0.5f;
|
|
int num14 = 1;
|
|
float num15 = 1f;
|
|
bool flag16 = false;
|
|
float num16 = 30f;
|
|
float num17 = 0.0f;
|
|
bool flag17 = false;
|
|
bool flag18 = true;
|
|
bool flag19 = false;
|
|
int num18 = 30;
|
|
bool flag20 = false;
|
|
bool flag21 = false;
|
|
bool flag22 = false;
|
|
bool flag23 = false;
|
|
LegacySoundStyle legacySoundStyle = (LegacySoundStyle) null;
|
|
int maxValue1 = 0;
|
|
bool flag24 = false;
|
|
float max2 = 1f;
|
|
float num19 = 0.07f;
|
|
float num20 = 0.8f;
|
|
float num21 = (float) (this.width / 2 + 6);
|
|
bool flag25 = this.directionY < 0;
|
|
bool flag26 = false;
|
|
int num22 = 1;
|
|
bool flag27 = false;
|
|
float num23 = 5f;
|
|
float num24 = 3f;
|
|
float num25 = 8f;
|
|
float amount1 = 0.05f;
|
|
float amount2 = 0.04f;
|
|
float amount3 = 0.1f;
|
|
bool flag28 = false;
|
|
float num26 = 0.025f;
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
NPCUtils.NPCTargetingMethod npcTargetingMethod = new NPCUtils.NPCTargetingMethod(NPCUtils.TargetClosestCommon);
|
|
if (NPCID.Sets.BelongsToInvasionOldOnesArmy[this.type])
|
|
npcTargetingMethod = new NPCUtils.NPCTargetingMethod(NPCUtils.TargetClosestOldOnesInvasion);
|
|
if (targetData.Type == NPCTargetType.NPC && Main.npc[this.TranslatedTargetIndex].type == 548 && Main.npc[this.TranslatedTargetIndex].dontTakeDamageFromHostiles)
|
|
{
|
|
npcTargetingMethod(this, true, new Vector2?());
|
|
targetData = this.GetTargetData();
|
|
}
|
|
if (NPCID.Sets.FighterUsesDD2PortalAppearEffect[this.type])
|
|
{
|
|
if (!targetData.Invalid)
|
|
flag2 = !Collision.CanHit(this.Center, 0, 0, targetData.Center, 0, 0) && (this.direction == Math.Sign(targetData.Center.X - this.Center.X) || this.noGravity && (double) this.Distance(targetData.Center) > 50.0 && (double) this.Center.Y > (double) targetData.Center.Y);
|
|
flag2 &= (double) this.ai[0] <= 0.0;
|
|
}
|
|
if (flag2)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 || (double) Math.Abs(targetData.Center.Y - this.Center.Y) > 800.0)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.noGravity = false;
|
|
this.noTileCollide = false;
|
|
}
|
|
bool flag29 = NPCID.Sets.FighterUsesDD2PortalAppearEffect[this.type];
|
|
bool flag30 = true;
|
|
Vector2 size;
|
|
switch (this.type)
|
|
{
|
|
case 552:
|
|
case 553:
|
|
case 554:
|
|
legacySoundStyle = SoundID.DD2_GoblinScream;
|
|
maxValue1 = 1000;
|
|
flag5 = true;
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
if (this.type == 553)
|
|
{
|
|
num19 += 0.01f;
|
|
max2 += 0.2f;
|
|
}
|
|
if (this.type == 554)
|
|
{
|
|
num19 += 0.02f;
|
|
max2 += 0.4f;
|
|
}
|
|
if ((double) this.localAI[3] < 60.0)
|
|
{
|
|
num19 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581);
|
|
break;
|
|
}
|
|
break;
|
|
case 555:
|
|
case 556:
|
|
case 557:
|
|
maxValue1 = 800;
|
|
legacySoundStyle = SoundID.DD2_GoblinBomberScream;
|
|
int num27 = (double) this.localAI[3] >= 60.0 ? 1 : 0;
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
flag24 = true;
|
|
flag12 = true;
|
|
flag15 = (double) this.ai[1] > 18.0;
|
|
num8 = 42;
|
|
num9 = 18;
|
|
Type = 681;
|
|
Damage = 10;
|
|
vector2_1.Y -= 14f;
|
|
num13 = 0.4f;
|
|
max1 = 0.5f;
|
|
num11 = 280f;
|
|
num10 = 6f;
|
|
if (num27 == 0)
|
|
{
|
|
num11 = 1f;
|
|
num19 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581);
|
|
}
|
|
if (this.type == 555)
|
|
{
|
|
max2 = 0.88f;
|
|
max1 = 0.6f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(20f, 15f);
|
|
}
|
|
if (this.type == 555)
|
|
{
|
|
max2 = 0.88f;
|
|
max1 = 0.6f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(30f, 25f);
|
|
}
|
|
if (this.type == 557)
|
|
{
|
|
max2 = 1.12f;
|
|
max1 = 0.4f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(40f, 35f);
|
|
}
|
|
if ((double) this.ai[1] == (double) num9)
|
|
{
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_GoblinBomberThrow, this.Center);
|
|
break;
|
|
}
|
|
break;
|
|
case 561:
|
|
case 562:
|
|
case 563:
|
|
int num28 = (double) this.localAI[3] >= 60.0 ? 1 : 0;
|
|
if ((double) this.ai[1] == 82.0)
|
|
{
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_JavelinThrowersAttack, this.Center);
|
|
maxValue1 = 7;
|
|
legacySoundStyle = SoundID.DD2_JavelinThrowersTaunt;
|
|
}
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
flag24 = true;
|
|
flag12 = true;
|
|
flag15 = (double) this.ai[1] > 82.0;
|
|
num8 = 90;
|
|
num9 = 82;
|
|
Type = 662;
|
|
if (this.type == 563)
|
|
Type = 685;
|
|
vector2_1.Y -= 14f;
|
|
num13 = 0.0f;
|
|
max1 = 0.5f;
|
|
num11 = 600f;
|
|
num10 = 13f;
|
|
if (num28 == 0)
|
|
{
|
|
num11 = 1f;
|
|
num19 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581);
|
|
}
|
|
if (this.type == 561)
|
|
{
|
|
max2 = 0.88f;
|
|
max1 = 0.6f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(15f, 10f);
|
|
num10 = 11.5f;
|
|
num11 -= 100f;
|
|
}
|
|
if (this.type == 562)
|
|
{
|
|
max2 = 0.94f;
|
|
max1 = 0.5f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(30f, 20f);
|
|
num10 = 12.2f;
|
|
num11 -= 50f;
|
|
}
|
|
if (this.type == 563)
|
|
{
|
|
max2 = 1f;
|
|
max1 = 0.4f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(45f, 30f);
|
|
break;
|
|
}
|
|
break;
|
|
case 566:
|
|
case 567:
|
|
DelegateMethods.v3_1 = new Vector3(0.3f, 0.05f, 0.45f) * 1.5f;
|
|
Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.TileActionAttempt(DelegateMethods.CastLightOpen));
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
int num29 = (double) this.localAI[3] >= 120.0 ? 1 : 0;
|
|
if (num29 == 0)
|
|
num19 = 0.0f;
|
|
if (num29 != 0)
|
|
{
|
|
this.dontTakeDamage = false;
|
|
break;
|
|
}
|
|
this.dontTakeDamage = true;
|
|
this.velocity.X = 0.0f;
|
|
flag24 = true;
|
|
flag20 = true;
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.localAI[3] == 0.0)
|
|
this.alpha = (int) byte.MaxValue;
|
|
++this.localAI[3];
|
|
float num30 = this.localAI[3];
|
|
if ((double) num30 >= 110.0)
|
|
{
|
|
this.alpha -= 26;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
}
|
|
if ((double) num30 >= 100.0)
|
|
{
|
|
int num31 = (int) this.localAI[3] / 20;
|
|
size = this.Size;
|
|
float num32 = size.Length() / 2f / 20f;
|
|
int maxValue2 = 5;
|
|
for (int index = 0; index < num31 * 2; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue2) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 236, this.velocity.X * 1f);
|
|
dust.scale = 1f;
|
|
dust.fadeIn = 0.3f;
|
|
dust.velocity = new Vector2(Main.rand.NextFloatDirection() * 1f, -dust.velocity.Length()) * 1.25f * num32;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int num33 = (int) this.localAI[3] / 10;
|
|
size = this.Size;
|
|
float num34 = size.Length() / 2f / 20f;
|
|
int maxValue3 = 5;
|
|
for (int index = 0; (double) index < (double) num33 * 1.29999995231628; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue3) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position + new Vector2((float) (-this.width / 2), 8f), this.width + this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100);
|
|
dust.scale = 1.1f;
|
|
dust.fadeIn = 0.1f;
|
|
dust.velocity = new Vector2(Main.rand.NextFloatDirection() * 0.1f, -dust.velocity.Length()) * 1.05f * num34 * Main.rand.NextFloat();
|
|
dust.velocity.Y *= Utils.GetLerpValue((float) this.width * 0.75f, 0.0f, Math.Abs(dust.position.X - this.Center.X), true);
|
|
}
|
|
}
|
|
}
|
|
if ((double) num30 > 100.0 && (int) num30 % 4 == 0)
|
|
{
|
|
Gore.NewGoreDirect(this.Left, new Vector2(0.0f, -3f), Utils.SelectRandom<int>(Main.rand, 971, 972), 0.85f).velocity.X *= 0.8f;
|
|
break;
|
|
}
|
|
break;
|
|
case 568:
|
|
case 569:
|
|
num5 = 110;
|
|
num19 = 0.16f;
|
|
num20 = 0.7f;
|
|
max2 = 1.4f;
|
|
flag5 = true;
|
|
num4 = 600f;
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
if ((double) this.localAI[3] < 60.0)
|
|
num19 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581);
|
|
SlotId slotId1;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId1 = (SlotId) SlotId.Invalid;
|
|
double num35 = (double) ((SlotId) ref slotId1).ToFloat();
|
|
localAi[1] = (float) num35;
|
|
}
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.HitSound = SoundID.DD2_WitherBeastCrystalImpact;
|
|
++this.ai[0];
|
|
if (Main.rand.Next(10) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.TopLeft, this.width, this.height, 271, SpeedY: -3f, newColor: Color.Transparent, Scale: 0.6f);
|
|
dust.velocity.X /= 2f;
|
|
dust.noGravity = true;
|
|
dust.fadeIn = 1.5f;
|
|
dust.position.Y += 4f;
|
|
}
|
|
ActiveSound activeSound = SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[1]));
|
|
if (activeSound == null)
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId1 = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_WitherBeastAuraPulse, this.Center);
|
|
double num36 = (double) ((SlotId) ref slotId1).ToFloat();
|
|
localAi[1] = (float) num36;
|
|
}
|
|
else
|
|
activeSound.Position = this.Center;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] > 60.0 && Main.rand.Next(10) == 0)
|
|
{
|
|
Vector2 vector2_2 = this.Center + (Main.rand.NextFloat() * 6.283185f).ToRotationVector2() * 400f * (float) (0.300000011920929 + 0.699999988079071 * (double) Main.rand.NextFloat());
|
|
Point tileCoordinates = vector2_2.ToTileCoordinates();
|
|
if (!WorldGen.SolidTile(tileCoordinates.X, tileCoordinates.Y))
|
|
{
|
|
Dust dust = Dust.NewDustPerfect(vector2_2, 27, new Vector2?(new Vector2(0.0f, -3f)), newColor: new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue), Scale: 1.5f);
|
|
dust.velocity = this.DirectionTo(dust.position) * dust.velocity.Length();
|
|
dust.fadeIn = 1.5f;
|
|
}
|
|
}
|
|
if (Main.netMode != 2)
|
|
{
|
|
Player player = Main.player[Main.myPlayer];
|
|
if (!player.dead && player.active && (double) (player.Center - this.Center).Length() < 400.0 && !player.creativeGodMode)
|
|
player.AddBuff(195, 3, false);
|
|
}
|
|
if ((double) this.ai[1] > 0.0)
|
|
--this.ai[1];
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[1] = 60f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
int healAmount = this.lifeMax / 20;
|
|
if (healAmount > this.lifeMax - this.life)
|
|
healAmount = this.lifeMax - this.life;
|
|
if (healAmount > 0)
|
|
{
|
|
this.life += healAmount;
|
|
this.HealEffect(healAmount);
|
|
this.netUpdate = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 570:
|
|
case 571:
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
flag24 = true;
|
|
flag12 = true;
|
|
flag15 = (double) this.ai[1] > 40.0;
|
|
num8 = 60;
|
|
num9 = 40;
|
|
if (this.type == 571 && (double) this.ai[1] > 10.0 && (double) this.ai[1] <= 40.0 && (int) this.ai[1] % 6 == 0)
|
|
num9 = (int) this.ai[1] - 1;
|
|
if (this.type == 570 && (double) this.ai[1] > 10.0 && (double) this.ai[1] <= 40.0 && (int) this.ai[1] % 9 == 0)
|
|
num9 = (int) this.ai[1] - 1;
|
|
Type = 671;
|
|
vector2_1.X += (float) (22 * this.direction);
|
|
num13 = 0.15f;
|
|
max1 = 1.5f;
|
|
num11 = 600f;
|
|
num10 = 13f;
|
|
num14 = 1;
|
|
num15 = 0.0f;
|
|
if (this.type == 570)
|
|
max1 = 2.5f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(35f, 25f);
|
|
if (this.type == 571)
|
|
Damage = this.GetAttackDamage_ForProjectiles(60f, 45f);
|
|
max2 = 0.77f;
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
if ((double) this.ai[1] == 40.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_DrakinShot, this.Center);
|
|
else if ((double) this.ai[1] == 60.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_DrakinBreathIn, this.Center);
|
|
}
|
|
if ((double) this.localAI[3] < 60.0)
|
|
{
|
|
num11 = 1f;
|
|
num19 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581);
|
|
break;
|
|
}
|
|
break;
|
|
case 572:
|
|
case 573:
|
|
SlotId slotId2;
|
|
if ((double) this.localAI[3] == 0.0)
|
|
{
|
|
float[] localAi1 = this.localAI;
|
|
SlotId invalid = (SlotId) SlotId.Invalid;
|
|
double num37 = (double) ((SlotId) ref invalid).ToFloat();
|
|
localAi1[0] = (float) num37;
|
|
float[] localAi2 = this.localAI;
|
|
slotId2 = (SlotId) SlotId.Invalid;
|
|
double num38 = (double) ((SlotId) ref slotId2).ToFloat();
|
|
localAi2[1] = (float) num38;
|
|
}
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
if ((double) this.ai[1] == 2.0)
|
|
{
|
|
SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[0]))?.Stop();
|
|
SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[1]))?.Stop();
|
|
this.position = this.Center;
|
|
this.width = this.height = 192;
|
|
this.Center = this.position;
|
|
this.velocity = Vector2.Zero;
|
|
this.damage = this.GetAttackDamage_ScaledByStrength(80f);
|
|
this.alpha = (int) byte.MaxValue;
|
|
for (int index1 = 0; index1 < 4; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index2].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f;
|
|
}
|
|
for (int index3 = 0; index3 < 20; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 200, Scale: 3.7f);
|
|
Main.dust[index4].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f;
|
|
Main.dust[index4].noGravity = true;
|
|
Main.dust[index4].velocity *= 3f;
|
|
int index5 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index5].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 4f;
|
|
Main.dust[index5].velocity *= 2f;
|
|
Main.dust[index5].noGravity = true;
|
|
Main.dust[index5].fadeIn = 2.5f;
|
|
}
|
|
for (int index6 = 0; index6 < 6; ++index6)
|
|
{
|
|
int index7 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Scale: 2.7f);
|
|
Main.dust[index7].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f;
|
|
Main.dust[index7].noGravity = true;
|
|
Main.dust[index7].velocity *= 3f;
|
|
}
|
|
for (int index8 = 0; index8 < 12; ++index8)
|
|
{
|
|
int index9 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Scale: 1.5f);
|
|
Main.dust[index9].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f;
|
|
Main.dust[index9].noGravity = true;
|
|
Main.dust[index9].velocity *= 3f;
|
|
}
|
|
for (int index10 = 0; index10 < 5; ++index10)
|
|
{
|
|
int index11 = Gore.NewGore(this.position + new Vector2((float) (this.width * Main.rand.Next(100)) / 100f, (float) (this.height * Main.rand.Next(100)) / 100f) - Vector2.One * 10f, new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index11].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f;
|
|
Main.gore[index11].velocity *= 0.3f;
|
|
Main.gore[index11].velocity.X += (float) Main.rand.Next(-10, 11) * 0.05f;
|
|
Main.gore[index11].velocity.Y += (float) Main.rand.Next(-10, 11) * 0.05f;
|
|
}
|
|
++this.ai[0];
|
|
if ((double) this.ai[0] < 3.0)
|
|
return;
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldExplosion, this.Center);
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
return;
|
|
}
|
|
if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0 && this.life > 0)
|
|
{
|
|
SlotId slotId3 = SlotId.FromFloat(this.localAI[0]);
|
|
if (!((SlotId) ref slotId3).IsValid)
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId2 = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgnite, this.Center);
|
|
double num39 = (double) ((SlotId) ref slotId2).ToFloat();
|
|
localAi[0] = (float) num39;
|
|
}
|
|
++this.localAI[2];
|
|
if ((double) this.localAI[2] == 30.0)
|
|
{
|
|
float[] localAi3 = this.localAI;
|
|
slotId2 = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgniteLoop, this.Center);
|
|
double num40 = (double) ((SlotId) ref slotId2).ToFloat();
|
|
localAi3[0] = (float) num40;
|
|
float[] localAi4 = this.localAI;
|
|
slotId2 = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldScreamChargeLoop, this.Center);
|
|
double num41 = (double) ((SlotId) ref slotId2).ToFloat();
|
|
localAi4[1] = (float) num41;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 1.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 2f;
|
|
this.netUpdate = true;
|
|
return;
|
|
}
|
|
max2 = 0.88f;
|
|
if ((double) this.ai[0] == 1.0)
|
|
this.ai[1] = 1f;
|
|
if ((double) this.ai[0] == 0.0 && (double) this.ai[1] == 1.0)
|
|
{
|
|
ActiveSound activeSound1 = SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[0]));
|
|
if (activeSound1 == null)
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId2 = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgniteLoop, this.Center);
|
|
double num42 = (double) ((SlotId) ref slotId2).ToFloat();
|
|
localAi[0] = (float) num42;
|
|
}
|
|
else
|
|
activeSound1.Position = this.Center;
|
|
ActiveSound activeSound2 = SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[1]));
|
|
if (activeSound2 == null)
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId2 = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldScreamChargeLoop, this.Center);
|
|
double num43 = (double) ((SlotId) ref slotId2).ToFloat();
|
|
localAi[1] = (float) num43;
|
|
}
|
|
else
|
|
activeSound2.Position = this.Center;
|
|
}
|
|
if ((double) this.ai[1] > 0.0 && (double) this.ai[0] == 0.0)
|
|
{
|
|
flag5 = true;
|
|
num5 = 40;
|
|
num4 = 64f;
|
|
num19 = 0.3f;
|
|
max2 = 4f;
|
|
Vector2 Position = this.Center + new Vector2((float) (this.spriteDirection * 12), 0.0f);
|
|
if (Main.rand.Next(6) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(Position, 1, 1, 213, (float) Main.rand.Next(-2, 3), (float) Main.rand.Next(-2, 3), 100, new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0));
|
|
dust.noGravity = true;
|
|
dust.fadeIn = (float) ((double) dust.scale + 1.0 + 0.00999999977648258 * (double) Main.rand.Next(0, 51));
|
|
dust.velocity *= 0.3f;
|
|
dust.velocity.X += (float) -this.spriteDirection * 1.2f;
|
|
dust.velocity.Y += -3.5f;
|
|
dust.velocity.X += this.velocity.X;
|
|
}
|
|
if (Main.rand.Next(12) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustPerfect(Position, 6, new Vector2?(this.velocity), 100);
|
|
dust.noGravity = true;
|
|
dust.velocity.Y -= 1f + Main.rand.NextFloat();
|
|
dust.scale = 1.1f;
|
|
dust.fadeIn = 0.5f;
|
|
dust.customData = (object) this;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag5 = true;
|
|
num5 = 40;
|
|
num4 = 700f;
|
|
}
|
|
if ((double) this.localAI[3] < 60.0)
|
|
{
|
|
num19 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581);
|
|
break;
|
|
}
|
|
break;
|
|
case 576:
|
|
case 577:
|
|
maxValue1 = 700;
|
|
legacySoundStyle = SoundID.DD2_OgreRoar;
|
|
num21 -= 32f;
|
|
flag5 = true;
|
|
num6 = 60;
|
|
num4 = 130f;
|
|
num5 = 44;
|
|
flag21 = DD2Event.EnemiesShouldChasePlayers;
|
|
num7 = 0.7f;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
if ((double) this.ai[0] <= 0.0)
|
|
{
|
|
float num44 = this.ai[1];
|
|
float num45 = this.Distance(targetData.Center);
|
|
if ((double) this.localAI[3] >= 60.0)
|
|
{
|
|
if ((double) num45 <= (double) num4 + 300.0 && (double) this.localAI[0] <= 0.0)
|
|
this.ai[1] = 2f;
|
|
else if ((double) num45 > (double) num4 + 30.0)
|
|
this.ai[1] = 1f;
|
|
else if ((double) num45 <= (double) num4)
|
|
{
|
|
this.ai[1] = 0.0f;
|
|
if ((double) num44 == 1.0)
|
|
this.ai[0] = 0.0f;
|
|
}
|
|
}
|
|
if ((double) num44 != (double) this.ai[1])
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[1] == 2.0)
|
|
this.localAI[0] = 300f;
|
|
switch ((int) this.ai[1])
|
|
{
|
|
case 0:
|
|
num5 = 44;
|
|
if ((double) this.ai[0] == 40.0)
|
|
{
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_OgreAttack, this.Center);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
flag3 = true;
|
|
num5 = 90;
|
|
num4 = 1000f;
|
|
num6 = 240;
|
|
Damage = this.GetAttackDamage_ForProjectiles(40f, 30f);
|
|
flag15 = false;
|
|
vector2_1 = new Vector2((float) (this.direction * 30), -70f);
|
|
Type = 676;
|
|
if ((double) this.ai[0] == 80.0)
|
|
{
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_OgreSpit, this.Center);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num5 = 90;
|
|
num4 = 250f;
|
|
flag4 = true;
|
|
Damage = this.GetAttackDamage_ForProjectiles(60f, 40f);
|
|
num9 = 36;
|
|
num1 = 56;
|
|
num2 = 41;
|
|
num3 = 13f;
|
|
flag3 = true;
|
|
Type = 683;
|
|
flag15 = false;
|
|
vector2_1 = new Vector2((float) (-this.direction * 20), (float) (this.height / 2 - 1));
|
|
if ((double) this.ai[0] == 40.0)
|
|
{
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_OgreGroundPound, this.Center);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] < (double) -num6)
|
|
{
|
|
this.ai[0] = (float) -num6;
|
|
break;
|
|
}
|
|
break;
|
|
case 620:
|
|
flag27 = this.wet;
|
|
flag30 = false;
|
|
flag16 = true;
|
|
num17 = 150f;
|
|
num16 = 20f;
|
|
bool dayTime = Main.dayTime;
|
|
flag21 = !dayTime;
|
|
flag24 = true;
|
|
flag12 = true;
|
|
flag15 = (double) this.ai[1] > 40.0;
|
|
num8 = 60;
|
|
num9 = 40;
|
|
if ((double) this.ai[1] > 10.0 && (double) this.ai[1] <= 40.0 && (int) this.ai[1] % 5 == 0)
|
|
num9 = (int) this.ai[1] - 1;
|
|
Type = 811;
|
|
vector2_1.X -= (float) (4 * this.direction);
|
|
vector2_1.Y -= 20f;
|
|
num13 = 0.15f;
|
|
max1 = 2.5f;
|
|
num11 = 600f;
|
|
num10 = 13f;
|
|
num14 = 1;
|
|
num15 = 0.0f;
|
|
Damage = this.GetAttackDamage_ForProjectiles(40f, 30f);
|
|
max2 = 8f;
|
|
num19 *= 3f;
|
|
num20 = 0.9f;
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
if ((double) this.ai[1] == 40.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_DrakinShot, this.Center);
|
|
else if ((double) this.ai[1] == 60.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_DrakinBreathIn, this.Center);
|
|
}
|
|
this.position = this.position + this.netOffset;
|
|
if (this.alpha == (int) byte.MaxValue)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
for (int index = 0; index < 35; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 5);
|
|
dust.velocity *= 1f;
|
|
dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.fadeIn = (float) (1.5 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.velocity += this.velocity * 0.5f;
|
|
}
|
|
}
|
|
this.alpha -= 15;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
if (this.alpha != 0)
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 5);
|
|
dust.velocity *= 1f;
|
|
dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.fadeIn = (float) (1.5 + (double) Main.rand.NextFloat() * 0.5);
|
|
dust.velocity += this.velocity * 0.3f;
|
|
}
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
Dust.NewDustDirect(this.position, this.width, this.height, 5, Alpha: 50, Scale: 1.3f).velocity = Vector2.Zero;
|
|
this.position = this.position - this.netOffset;
|
|
if (dayTime)
|
|
{
|
|
flag12 = false;
|
|
flag24 = false;
|
|
flag23 = true;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 && (double) targetData.Hitbox.Bottom < (double) this.Top.Y && (double) Math.Abs(this.Center.X - (float) targetData.Hitbox.Center.X) < (double) (this.width * 3) && Collision.CanHit(this.Hitbox.TopLeft(), this.Hitbox.Width, this.Hitbox.Height, targetData.Hitbox.TopLeft(), targetData.Hitbox.Width, targetData.Hitbox.Height))
|
|
{
|
|
int num46 = (int) (((double) this.Bottom.Y - 16.0 - (double) targetData.Hitbox.Bottom) / 16.0);
|
|
if (num46 < 27)
|
|
{
|
|
if (num46 < 11)
|
|
{
|
|
this.velocity.Y = -11f;
|
|
break;
|
|
}
|
|
if (num46 < 15)
|
|
{
|
|
this.velocity.Y = -13f;
|
|
break;
|
|
}
|
|
if (num46 < 19)
|
|
{
|
|
this.velocity.Y = -14f;
|
|
break;
|
|
}
|
|
this.velocity.Y = -15.9f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (flag28)
|
|
{
|
|
bool flag31 = (double) this.velocity.Y == 0.0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width)
|
|
{
|
|
if ((double) this.position.X < (double) Main.npc[index].position.X)
|
|
this.velocity.X -= num26;
|
|
else
|
|
this.velocity.X += num26;
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= num26;
|
|
else
|
|
this.velocity.Y += num26;
|
|
}
|
|
}
|
|
if (flag31)
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
if (flag29)
|
|
{
|
|
if ((double) this.localAI[3] == 0.0)
|
|
this.alpha = (int) byte.MaxValue;
|
|
if ((double) this.localAI[3] == 30.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center);
|
|
if ((double) this.localAI[3] < 60.0)
|
|
{
|
|
++this.localAI[3];
|
|
this.alpha -= 5;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
int num47 = (int) this.localAI[3] / 10;
|
|
size = this.Size;
|
|
float num48 = size.Length() / 2f / 20f;
|
|
int maxValue4 = 5;
|
|
if (this.type == 576 || this.type == 577)
|
|
maxValue4 = 1;
|
|
for (int index = 0; index < num47; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue4) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100);
|
|
dust.scale = 0.55f;
|
|
dust.fadeIn = 0.7f;
|
|
dust.velocity *= 0.1f * num48;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag27)
|
|
{
|
|
this.noGravity = true;
|
|
this.TargetClosest(false);
|
|
if (this.collideX)
|
|
this.velocity.X = -this.oldVelocity.X;
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.direction = Math.Sign(this.direction);
|
|
if (Collision.CanHit(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height))
|
|
{
|
|
Vector2 vector2_3 = targetData.Center - this.Center;
|
|
vector2_3.Normalize();
|
|
this.velocity = Vector2.Lerp(this.velocity, vector2_3 * num23, amount1);
|
|
}
|
|
else
|
|
{
|
|
float num49 = num23;
|
|
if ((double) this.velocity.Y > 0.0)
|
|
num49 = num24;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
num49 = num25;
|
|
Vector2 vector2_4 = new Vector2((float) this.direction, -1f);
|
|
vector2_4.Normalize();
|
|
Vector2 vector2_5 = vector2_4 * num49;
|
|
if ((double) num49 < (double) num23)
|
|
this.velocity = Vector2.Lerp(this.velocity, vector2_5, amount2);
|
|
else
|
|
this.velocity = Vector2.Lerp(this.velocity, vector2_5, amount3);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bool flag32 = false;
|
|
if (flag12 | flag5 && (double) this.ai[0] > 0.0)
|
|
flag18 = false;
|
|
if (flag12 && (double) this.ai[1] > 0.0)
|
|
flag22 = true;
|
|
if (flag5 && (double) this.ai[0] > 0.0)
|
|
flag22 = true;
|
|
if (flag5)
|
|
{
|
|
if ((double) this.ai[0] < 0.0)
|
|
{
|
|
++this.ai[0];
|
|
flag1 = false;
|
|
}
|
|
if ((double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 | flag6 && targetData.Type != NPCTargetType.None && (Collision.CanHit(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height) ? 1 : (Collision.CanHitLine(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height) ? 1 : 0)) != 0 && (double) (targetData.Center - this.Center).Length() < (double) num4)
|
|
{
|
|
this.ai[0] = (float) num5;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction * num22;
|
|
if (flag7)
|
|
{
|
|
this.velocity.X *= num7;
|
|
flag24 = true;
|
|
flag20 = true;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
--this.ai[0];
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.ai[0] = (float) -num6;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
if (flag3 && (double) this.ai[0] > 0.0)
|
|
{
|
|
if (flag15)
|
|
{
|
|
npcTargetingMethod(this, true, new Vector2?());
|
|
targetData = this.GetTargetData();
|
|
}
|
|
if ((double) this.ai[0] == (double) num9)
|
|
{
|
|
Vector2 vector2_6 = this.Center + vector2_1;
|
|
Vector2 v = targetData.Center - vector2_6;
|
|
v.Y -= Math.Abs(v.X) * num13;
|
|
Vector2 vector2_7 = v.SafeNormalize(-Vector2.UnitY) * num10;
|
|
for (int index = 0; index < num14; ++index)
|
|
{
|
|
Vector2 vector2_8 = vector2_7;
|
|
Vector2 vector2_9 = vector2_6;
|
|
Vector2 velocity = !nullable.HasValue ? vector2_8 + Utils.RandomVector2(Main.rand, -max1, max1) : vector2_8 + nullable.Value;
|
|
Vector2 position = vector2_9 + vector2_7 * num15;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(position, velocity, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
if (flag4 && (double) this.ai[0] > 0.0)
|
|
{
|
|
if ((double) this.velocity.Y != 0.0 && (double) this.ai[0] < (double) num2)
|
|
this.ai[0] = (float) num2;
|
|
if ((double) this.ai[0] == (double) num1)
|
|
this.velocity.Y = -num3;
|
|
}
|
|
if (!flag17 & flag18)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X * (double) this.direction < 0.0)
|
|
flag19 = true;
|
|
if ((((double) this.position.X == (double) this.oldPosition.X ? 1 : ((double) this.ai[3] >= (double) num18 ? 1 : 0)) | (flag19 ? 1 : 0)) != 0)
|
|
++this.ai[3];
|
|
else if ((double) Math.Abs(this.velocity.X) > 0.899999976158142 && (double) this.ai[3] > 0.0)
|
|
--this.ai[3];
|
|
if ((double) this.ai[3] > (double) (num18 * 10))
|
|
this.ai[3] = 0.0f;
|
|
if (this.justHit && !flag30)
|
|
this.ai[3] = 0.0f;
|
|
if (targetData.Hitbox.Intersects(this.Hitbox))
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[3] == (double) num18)
|
|
{
|
|
this.netUpdate = true;
|
|
if (flag30)
|
|
{
|
|
this.noGravity = true;
|
|
this.noTileCollide = true;
|
|
this.position.X += (float) (this.direction * this.width * 2);
|
|
int num50 = 20;
|
|
size = this.Size;
|
|
float num51 = size.Length() / 2f / 20f;
|
|
int maxValue5 = 5;
|
|
if (this.type == 576 || this.type == 577)
|
|
maxValue5 = 1;
|
|
for (int index = 0; index < num50; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue5) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100);
|
|
dust.scale = 0.55f;
|
|
dust.fadeIn = 0.7f;
|
|
dust.velocity *= 3f * num51;
|
|
dust.noGravity = true;
|
|
dust.fadeIn = 1.5f;
|
|
dust.velocity *= 3f;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (!flag20)
|
|
{
|
|
if ((double) this.ai[3] < (double) num18 & flag21)
|
|
{
|
|
if (maxValue1 > 0 && Main.rand.Next(maxValue1) == 0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) legacySoundStyle, this.Center);
|
|
int num52 = this.HasValidTarget ? 1 : 0;
|
|
npcTargetingMethod(this, true, new Vector2?());
|
|
targetData = this.GetTargetData();
|
|
int num53 = this.HasValidTarget ? 1 : 0;
|
|
if (num52 != num53)
|
|
this.netUpdate = true;
|
|
}
|
|
else if (!flag22)
|
|
{
|
|
if (flag23)
|
|
this.EncourageDespawn(10);
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
++this.ai[2];
|
|
if ((double) this.ai[2] >= 2.0)
|
|
{
|
|
this.direction *= -1;
|
|
this.spriteDirection = this.direction * num22;
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[2] != 0.0)
|
|
{
|
|
this.ai[2] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.direction == 0)
|
|
this.direction = 1;
|
|
}
|
|
}
|
|
if (!flag24)
|
|
{
|
|
if ((double) this.velocity.X < -(double) max2 || (double) this.velocity.X > (double) max2)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity = this.velocity * num20;
|
|
}
|
|
else if ((double) this.velocity.X < (double) max2 && this.direction == 1 || (double) this.velocity.X > -(double) max2 && this.direction == -1)
|
|
this.velocity.X = MathHelper.Clamp(this.velocity.X + num19 * (float) this.direction, -max2, max2);
|
|
}
|
|
if (flag12)
|
|
{
|
|
if (this.confused)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[1] > 0.0)
|
|
--this.ai[1];
|
|
if (this.justHit)
|
|
{
|
|
this.ai[1] = num16;
|
|
this.ai[0] = 0.0f;
|
|
}
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
if (flag15)
|
|
{
|
|
npcTargetingMethod(this, true, new Vector2?());
|
|
targetData = this.GetTargetData();
|
|
}
|
|
if ((double) this.ai[1] == (double) num9)
|
|
{
|
|
Vector2 vector2_10 = this.Center + vector2_1;
|
|
Vector2 v = targetData.Center - vector2_10;
|
|
v.Y -= Math.Abs(v.X) * num13;
|
|
Vector2 vector2_11 = v.SafeNormalize(-Vector2.UnitY) * num10;
|
|
for (int index = 0; index < num14; ++index)
|
|
{
|
|
Vector2 vector2_12 = vector2_10;
|
|
Vector2 vector2_13 = vector2_11;
|
|
Vector2 velocity = !nullable.HasValue ? vector2_13 + Utils.RandomVector2(Main.rand, -max1, max1) : vector2_13 + nullable.Value;
|
|
Vector2 position = vector2_12 + velocity * num15;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(position, velocity, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
this.ai[0] = (double) Math.Abs(vector2_11.Y) <= (double) Math.Abs(vector2_11.X) * 2.0 ? ((double) Math.Abs(vector2_11.X) <= (double) Math.Abs(vector2_11.Y) * 2.0 ? ((double) vector2_11.Y > 0.0 ? 2f : 4f) : 3f) : ((double) vector2_11.Y > 0.0 ? 1f : 5f);
|
|
if (flag16)
|
|
this.direction = (double) vector2_11.X > 0.0 ? 1 : -1;
|
|
}
|
|
bool flag33 = true;
|
|
if ((double) this.velocity.Y != 0.0 && !flag14 || (double) this.ai[1] <= 0.0)
|
|
{
|
|
bool flag34 = false;
|
|
if ((double) num17 != 0.0 && (double) this.ai[1] <= 0.0)
|
|
flag34 = true;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = flag34 ? num17 : 0.0f;
|
|
}
|
|
else if (!flag13 || !flag33 && (!flag14 || (double) this.velocity.Y == 0.0))
|
|
{
|
|
this.velocity.X *= 0.9f;
|
|
this.spriteDirection = this.direction * num22;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] <= 0.0 | flag13 && (double) this.velocity.Y == 0.0 | flag14 && (double) this.ai[1] <= 0.0 && targetData.Type != NPCTargetType.None && Collision.CanHit(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height))
|
|
{
|
|
Vector2 vector2_14 = targetData.Center - this.Center;
|
|
if ((double) vector2_14.Length() < (double) num11)
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.X *= 0.5f;
|
|
this.ai[0] = 3f;
|
|
this.ai[1] = (float) num8;
|
|
this.ai[0] = (double) Math.Abs(vector2_14.Y) <= (double) Math.Abs(vector2_14.X) * 2.0 ? ((double) Math.Abs(vector2_14.X) <= (double) Math.Abs(vector2_14.Y) * 2.0 ? ((double) vector2_14.Y > 0.0 ? 2f : 4f) : 3f) : ((double) vector2_14.Y > 0.0 ? 1f : 5f);
|
|
if (flag16)
|
|
this.direction = (double) vector2_14.X > 0.0 ? 1 : -1;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] <= 0.0 || flag13)
|
|
{
|
|
bool flag35 = (double) this.Distance(targetData.Center) < (double) num12;
|
|
if (flag35 && Collision.CanHitLine(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height))
|
|
this.ai[3] = 0.0f;
|
|
if ((((double) this.velocity.X < -(double) max2 ? 1 : ((double) this.velocity.X > (double) max2 ? 1 : 0)) | (flag35 ? 1 : 0)) != 0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.velocity.X *= num20;
|
|
}
|
|
else if ((double) this.velocity.X < (double) max2 && this.direction == 1 || (double) this.velocity.X > -(double) max2 && this.direction == -1)
|
|
this.velocity.X = MathHelper.Clamp(this.velocity.X + num19 * (float) this.direction, -max2, max2);
|
|
}
|
|
}
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
int index12 = (int) ((double) this.Bottom.Y + 7.0) / 16;
|
|
int num54 = (int) this.Left.X / 16;
|
|
int num55 = (int) this.Right.X / 16;
|
|
int index13;
|
|
for (int index14 = num54; index14 <= num55; index14 = index13 + 1)
|
|
{
|
|
index13 = Utils.Clamp<int>(index14, 0, Main.maxTilesX);
|
|
index12 = Utils.Clamp<int>(index12, 0, Main.maxTilesY);
|
|
Tile tile = Main.tile[index13, index12];
|
|
if (tile == null)
|
|
return;
|
|
if (tile.nactive() && Main.tileSolid[(int) tile.type])
|
|
{
|
|
flag32 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Point tileCoordinates = this.Center.ToTileCoordinates();
|
|
if (WorldGen.InWorld(tileCoordinates.X, tileCoordinates.Y, 5) && !this.noGravity)
|
|
{
|
|
Vector2 cPosition;
|
|
int cWidth;
|
|
int cHeight;
|
|
this.GetTileCollisionParameters(out cPosition, out cWidth, out cHeight);
|
|
Vector2 vector2_15 = this.position - cPosition;
|
|
Collision.StepUp(ref cPosition, ref this.velocity, cWidth, cHeight, ref this.stepSpeed, ref this.gfxOffY);
|
|
this.position = cPosition + vector2_15;
|
|
}
|
|
if (flag32)
|
|
{
|
|
int index = (int) ((double) this.Center.X + (double) num21 * (double) this.direction) / 16;
|
|
int j = ((int) this.Bottom.Y - 15) / 16;
|
|
bool flag36 = (double) this.position.Y + (double) this.height - (double) (j * 16) > 20.0;
|
|
Tile tileSafely1 = Framing.GetTileSafely(index + this.direction, j + 1);
|
|
Tile tileSafely2 = Framing.GetTileSafely(index, j + 1);
|
|
Tile tileSafely3 = Framing.GetTileSafely(index, j);
|
|
Tile tileSafely4 = Framing.GetTileSafely(index, j - 1);
|
|
Tile tileSafely5 = Framing.GetTileSafely(index, j - 2);
|
|
Tile tileSafely6 = Framing.GetTileSafely(index, j - 3);
|
|
if (flag8 && tileSafely4.nactive() && (tileSafely4.type == (ushort) 10 || tileSafely4.type == (ushort) 388))
|
|
{
|
|
++this.ai[0];
|
|
this.ai[3] = 0.0f;
|
|
if ((double) this.ai[0] >= 60.0)
|
|
{
|
|
if (flag9)
|
|
this.ai[1] = 0.0f;
|
|
int num56 = 5;
|
|
if (Main.tile[index, j - 1].type == (ushort) 388)
|
|
num56 = 2;
|
|
this.velocity.X = 0.5f * (float) -this.direction;
|
|
this.ai[1] += (float) num56;
|
|
bool flag37 = false;
|
|
if ((double) this.ai[1] >= 10.0)
|
|
{
|
|
flag37 = true;
|
|
this.ai[1] = 10f;
|
|
}
|
|
if (flag10)
|
|
flag37 = true;
|
|
WorldGen.KillTile(index, j - 1, true);
|
|
if (Main.netMode != 1 & flag37)
|
|
{
|
|
if (flag11)
|
|
{
|
|
WorldGen.KillTile(index, j - 1);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(17, number2: ((float) index), number3: ((float) (j - 1)));
|
|
}
|
|
else
|
|
{
|
|
if (tileSafely4.type == (ushort) 10)
|
|
{
|
|
bool flag38 = WorldGen.OpenDoor(index, j - 1, this.direction);
|
|
if (!flag38)
|
|
{
|
|
this.ai[3] = (float) num18;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.netMode == 2 & flag38)
|
|
NetMessage.SendData(19, number2: ((float) index), number3: ((float) (j - 1)), number4: ((float) this.direction));
|
|
}
|
|
if (tileSafely4.type == (ushort) 388)
|
|
{
|
|
bool flag39 = WorldGen.ShiftTallGate(index, j - 1, false);
|
|
if (!flag39)
|
|
{
|
|
this.ai[3] = (float) num18;
|
|
this.netUpdate = true;
|
|
}
|
|
if (Main.netMode == 2 & flag39)
|
|
NetMessage.SendData(19, number: 4, number2: ((float) index), number3: ((float) (j - 1)), number4: ((float) this.direction));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X * (double) (this.spriteDirection * num22) > 0.0)
|
|
{
|
|
if (this.height >= 32 && tileSafely5.nactive() && Main.tileSolid[(int) tileSafely5.type])
|
|
{
|
|
this.netUpdate = true;
|
|
this.velocity.Y = -7f;
|
|
if (tileSafely6.nactive() && Main.tileSolid[(int) tileSafely6.type])
|
|
this.velocity.Y = -8f;
|
|
}
|
|
else if (tileSafely4.nactive() && Main.tileSolid[(int) tileSafely4.type])
|
|
{
|
|
this.velocity.Y = -6f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag36 && tileSafely3.nactive() && !tileSafely3.topSlope() && Main.tileSolid[(int) tileSafely3.type])
|
|
{
|
|
this.velocity.Y = -5f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag25 && (!tileSafely2.nactive() || !Main.tileSolid[(int) tileSafely2.type]) && (!tileSafely1.nactive() || !Main.tileSolid[(int) tileSafely1.type]))
|
|
{
|
|
this.velocity.X *= 1.5f;
|
|
this.velocity.Y = -8f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (flag8)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 & flag1 && (double) this.ai[3] == 1.0)
|
|
{
|
|
this.velocity.Y = -5f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (flag26 && (double) this.velocity.Y == 0.0 && (double) Math.Abs(targetData.Center.X - this.Center.X) < 100.0 && (double) Math.Abs(targetData.Center.Y - this.Center.Y) < 50.0 && (double) Math.Abs(this.velocity.X) >= 1.0 && (double) this.velocity.X * (double) this.direction > 0.0)
|
|
{
|
|
this.velocity.X = MathHelper.Clamp(this.velocity.X * 2f, -3f, 3f);
|
|
this.velocity.Y = -4f;
|
|
this.netAlways = true;
|
|
}
|
|
}
|
|
}
|
|
else if (flag8)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if (!flag2 || !this.noTileCollide)
|
|
return;
|
|
this.wet = false;
|
|
if (flag29)
|
|
{
|
|
if (this.alpha < 60)
|
|
this.alpha += 20;
|
|
this.localAI[3] = 40f;
|
|
}
|
|
int num57 = (double) this.velocity.Y == 0.0 ? 1 : 0;
|
|
if ((double) Math.Abs(this.Center.X - targetData.Center.X) > 200.0)
|
|
{
|
|
this.spriteDirection = this.direction = (double) targetData.Center.X > (double) this.Center.X ? 1 : -1;
|
|
this.velocity.X = MathHelper.Lerp(this.velocity.X, (float) this.direction, 0.05f);
|
|
}
|
|
int Width = 80;
|
|
int height = this.height;
|
|
Vector2 Position = new Vector2(this.Center.X - (float) (Width / 2), this.position.Y + (float) this.height - (float) height);
|
|
bool flag40 = false;
|
|
if ((double) this.position.Y + (double) this.height < (double) targetData.Position.Y + (double) targetData.Height - 16.0)
|
|
flag40 = true;
|
|
if (flag40)
|
|
this.velocity.Y += 0.5f;
|
|
else if (Collision.SolidCollision(Position, Width, height) || (double) targetData.Center.Y - (double) this.Center.Y < -100.0 || (double) targetData.Center.Y - (double) this.Center.Y < 10.0 && (double) Math.Abs(targetData.Center.X - this.Center.X) < 60.0)
|
|
{
|
|
if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y = 0.0f;
|
|
if ((double) this.velocity.Y > -0.2)
|
|
this.velocity.Y -= 0.025f;
|
|
else
|
|
this.velocity.Y -= 0.2f;
|
|
if ((double) this.velocity.Y < -4.0)
|
|
this.velocity.Y = -4f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y = 0.0f;
|
|
if ((double) this.velocity.Y < 0.1)
|
|
this.velocity.Y += 0.025f;
|
|
else
|
|
this.velocity.Y += 0.5f;
|
|
}
|
|
if ((double) this.velocity.Y > 10.0)
|
|
this.velocity.Y = 10f;
|
|
if (num57 == 0)
|
|
return;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
}
|
|
|
|
private void AI_084_LunaticCultist()
|
|
{
|
|
if ((double) this.ai[0] != -1.0 && Main.rand.Next(1000) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(88, 92));
|
|
bool expertMode = Main.expertMode;
|
|
bool flag1 = this.life <= this.lifeMax / 2;
|
|
int num1 = 120;
|
|
int damageForProjectiles1 = this.GetAttackDamage_ForProjectiles(35f, 25f);
|
|
if (expertMode)
|
|
num1 = 90;
|
|
if (Main.getGoodWorld)
|
|
num1 -= 30;
|
|
int num2 = 18;
|
|
int num3 = 3;
|
|
int damageForProjectiles2 = this.GetAttackDamage_ForProjectiles(30f, 20f);
|
|
if (expertMode)
|
|
{
|
|
num2 = 12;
|
|
num3 = 4;
|
|
}
|
|
if (Main.getGoodWorld)
|
|
{
|
|
num2 = 10;
|
|
num3 = 5;
|
|
}
|
|
int num4 = 80;
|
|
int damageForProjectiles3 = this.GetAttackDamage_ForProjectiles(45f, 30f);
|
|
if (expertMode)
|
|
num4 = 40;
|
|
if (Main.getGoodWorld)
|
|
num4 -= 20;
|
|
int num5 = 20;
|
|
int num6 = 2;
|
|
if (expertMode)
|
|
{
|
|
num5 = 30;
|
|
num6 = 2;
|
|
}
|
|
int num7 = 20;
|
|
int num8 = 3;
|
|
bool flag2 = this.type == 439;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
if (flag1)
|
|
this.defense = (int) ((double) this.defDefense * 0.649999976158142);
|
|
if (!flag2)
|
|
{
|
|
if (((double) this.ai[3] < 0.0 || !Main.npc[(int) this.ai[3]].active ? 1 : (Main.npc[(int) this.ai[3]].type != 439 ? 1 : 0)) != 0)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
return;
|
|
}
|
|
this.ai[0] = Main.npc[(int) this.ai[3]].ai[0];
|
|
this.ai[1] = Main.npc[(int) this.ai[3]].ai[1];
|
|
if ((double) this.ai[0] == 5.0)
|
|
{
|
|
if (this.justHit)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
if (Main.netMode != 1)
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
NPC npc = Main.npc[(int) this.ai[3]];
|
|
npc.ai[0] = 6f;
|
|
npc.ai[1] = 0.0f;
|
|
npc.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag3 = true;
|
|
flag4 = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 5.0 && (double) this.ai[1] >= 120.0 && (double) this.ai[1] < 420.0 && this.justHit)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
List<int> intList = new List<int>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
int num9 = 10;
|
|
if (Main.expertMode)
|
|
num9 = 3;
|
|
foreach (int number in intList)
|
|
{
|
|
NPC npc = Main.npc[number];
|
|
if ((double) npc.localAI[1] == (double) this.localAI[1] && num9 > 0)
|
|
{
|
|
--num9;
|
|
npc.life = 0;
|
|
npc.HitEffect();
|
|
npc.active = false;
|
|
if (Main.netMode != 1)
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
else if (num9 > 0)
|
|
{
|
|
--num9;
|
|
npc.life = 0;
|
|
npc.HitEffect();
|
|
npc.active = false;
|
|
}
|
|
}
|
|
Main.projectile[(int) this.ai[2]].ai[1] = -1f;
|
|
Main.projectile[(int) this.ai[2]].netUpdate = true;
|
|
}
|
|
Vector2 center1 = this.Center;
|
|
Player player = Main.player[this.target];
|
|
if (this.target < 0 || this.target == (int) byte.MaxValue || player.dead || !player.active)
|
|
{
|
|
this.TargetClosest(false);
|
|
player = Main.player[this.target];
|
|
this.netUpdate = true;
|
|
}
|
|
if (player.dead || (double) Vector2.Distance(player.Center, center1) > 5600.0)
|
|
{
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
if (Main.netMode != 1)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
new List<int>() { this.whoAmI };
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
{
|
|
Main.npc[index].life = 0;
|
|
Main.npc[index].HitEffect();
|
|
Main.npc[index].active = false;
|
|
if (Main.netMode != 1)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: -1f);
|
|
}
|
|
}
|
|
}
|
|
float num10 = this.ai[3];
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 89);
|
|
this.localAI[0] = 1f;
|
|
this.alpha = (int) byte.MaxValue;
|
|
this.rotation = 0.0f;
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.ai[0] = -1f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] == -1.0)
|
|
{
|
|
this.alpha -= 5;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 420.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
else if ((double) this.ai[1] > 360.0)
|
|
{
|
|
this.velocity = this.velocity * 0.95f;
|
|
if ((double) this.localAI[2] != 13.0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 105);
|
|
this.localAI[2] = 13f;
|
|
}
|
|
else if ((double) this.ai[1] > 300.0)
|
|
{
|
|
this.velocity = -Vector2.UnitY;
|
|
this.localAI[2] = 10f;
|
|
}
|
|
else
|
|
this.localAI[2] = (double) this.ai[1] <= 120.0 ? 0.0f : 1f;
|
|
flag3 = true;
|
|
flag4 = true;
|
|
}
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
if ((double) this.ai[1] == 0.0)
|
|
this.TargetClosest(false);
|
|
this.localAI[2] = 10f;
|
|
int num11 = Math.Sign(player.Center.X - center1.X);
|
|
if (num11 != 0)
|
|
this.direction = this.spriteDirection = num11;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 40.0 & flag2)
|
|
{
|
|
int num12 = 0;
|
|
if (flag1)
|
|
{
|
|
switch ((int) this.ai[3])
|
|
{
|
|
case 0:
|
|
num12 = 0;
|
|
break;
|
|
case 1:
|
|
num12 = 1;
|
|
break;
|
|
case 2:
|
|
num12 = 0;
|
|
break;
|
|
case 3:
|
|
num12 = 5;
|
|
break;
|
|
case 4:
|
|
num12 = 0;
|
|
break;
|
|
case 5:
|
|
num12 = 3;
|
|
break;
|
|
case 6:
|
|
num12 = 0;
|
|
break;
|
|
case 7:
|
|
num12 = 5;
|
|
break;
|
|
case 8:
|
|
num12 = 0;
|
|
break;
|
|
case 9:
|
|
num12 = 2;
|
|
break;
|
|
case 10:
|
|
num12 = 0;
|
|
break;
|
|
case 11:
|
|
num12 = 3;
|
|
break;
|
|
case 12:
|
|
num12 = 0;
|
|
break;
|
|
case 13:
|
|
num12 = 4;
|
|
this.ai[3] = -1f;
|
|
break;
|
|
default:
|
|
this.ai[3] = -1f;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch ((int) this.ai[3])
|
|
{
|
|
case 0:
|
|
num12 = 0;
|
|
break;
|
|
case 1:
|
|
num12 = 1;
|
|
break;
|
|
case 2:
|
|
num12 = 0;
|
|
break;
|
|
case 3:
|
|
num12 = 2;
|
|
break;
|
|
case 4:
|
|
num12 = 0;
|
|
break;
|
|
case 5:
|
|
num12 = 3;
|
|
break;
|
|
case 6:
|
|
num12 = 0;
|
|
break;
|
|
case 7:
|
|
num12 = 1;
|
|
break;
|
|
case 8:
|
|
num12 = 0;
|
|
break;
|
|
case 9:
|
|
num12 = 2;
|
|
break;
|
|
case 10:
|
|
num12 = 0;
|
|
break;
|
|
case 11:
|
|
num12 = 4;
|
|
this.ai[3] = -1f;
|
|
break;
|
|
default:
|
|
this.ai[3] = -1f;
|
|
break;
|
|
}
|
|
}
|
|
int maxValue = 6;
|
|
if (this.life < this.lifeMax / 3)
|
|
maxValue = 4;
|
|
if (this.life < this.lifeMax / 4)
|
|
maxValue = 3;
|
|
if (expertMode & flag1 && Main.rand.Next(maxValue) == 0 && num12 != 0 && num12 != 4 && num12 != 5 && NPC.CountNPCS(523) < 10)
|
|
num12 = 6;
|
|
if (num12 == 0)
|
|
{
|
|
float num13 = (float) Math.Ceiling((double) (player.Center + new Vector2(0.0f, -100f) - center1).Length() / 50.0);
|
|
if ((double) num13 == 0.0)
|
|
num13 = 1f;
|
|
List<int> intList = new List<int>();
|
|
int num14 = 0;
|
|
intList.Add(this.whoAmI);
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
bool flag5 = intList.Count % 2 == 0;
|
|
foreach (int index in intList)
|
|
{
|
|
NPC npc1 = Main.npc[index];
|
|
Vector2 center2 = npc1.Center;
|
|
float num15 = (float) ((double) ((num14 + flag5.ToInt() + 1) / 2) * 6.28318548202515 * 0.400000005960464) / (float) intList.Count;
|
|
if (num14 % 2 == 1)
|
|
num15 *= -1f;
|
|
if (intList.Count == 1)
|
|
num15 = 0.0f;
|
|
Vector2 vector2_1 = new Vector2(0.0f, -1f).RotatedBy((double) num15) * new Vector2(300f, 200f);
|
|
Vector2 vector2_2 = player.Center + vector2_1 - center2;
|
|
npc1.ai[0] = 1f;
|
|
npc1.ai[1] = num13 * 2f;
|
|
npc1.velocity = vector2_2 / num13;
|
|
if (this.whoAmI >= npc1.whoAmI)
|
|
{
|
|
NPC npc2 = npc1;
|
|
npc2.position = npc2.position - npc1.velocity;
|
|
}
|
|
npc1.netUpdate = true;
|
|
++num14;
|
|
}
|
|
}
|
|
if (num12 == 1)
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else if (num12 == 2)
|
|
{
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else if (num12 == 3)
|
|
{
|
|
this.ai[0] = 4f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
else if (num12 == 4)
|
|
{
|
|
this.ai[0] = 5f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if (num12 == 5)
|
|
{
|
|
this.ai[0] = 7f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
if (num12 == 6)
|
|
{
|
|
this.ai[0] = 8f;
|
|
this.ai[1] = 0.0f;
|
|
}
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
flag3 = true;
|
|
this.localAI[2] = 10f;
|
|
if ((double) (int) this.ai[1] % 2.0 != 0.0 && (double) this.ai[1] != 1.0)
|
|
this.position = this.position - this.velocity;
|
|
--this.ai[1];
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 2.0)
|
|
{
|
|
this.localAI[2] = 11f;
|
|
Vector2 vec1 = Vector2.Normalize(player.Center - center1);
|
|
if (vec1.HasNaNs())
|
|
vec1 = new Vector2((float) this.direction, 0.0f);
|
|
if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num1 == 0)
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
List<int> intList = new List<int>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
foreach (int index1 in intList)
|
|
{
|
|
NPC npc = Main.npc[index1];
|
|
Vector2 center3 = npc.Center;
|
|
int num16 = Math.Sign(player.Center.X - center3.X);
|
|
if (num16 != 0)
|
|
npc.direction = npc.spriteDirection = num16;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vec2 = Vector2.Normalize(player.Center - center3 + player.velocity * 20f);
|
|
if (vec2.HasNaNs())
|
|
vec2 = new Vector2((float) this.direction, 0.0f);
|
|
Vector2 vector2_3 = center3 + new Vector2((float) (this.direction * 30), 12f);
|
|
for (int index2 = 0; index2 < 1; ++index2)
|
|
{
|
|
Vector2 vector2_4 = (vec2 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762);
|
|
Projectile.NewProjectile(vector2_3.X, vector2_3.Y, vector2_4.X, vector2_4.Y, 468, 18, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vec3 = Vector2.Normalize(player.Center - center1 + player.velocity * 20f);
|
|
if (vec3.HasNaNs())
|
|
vec3 = new Vector2((float) this.direction, 0.0f);
|
|
Vector2 vector2_5 = this.Center + new Vector2((float) (this.direction * 30), 12f);
|
|
for (int index = 0; index < 1; ++index)
|
|
{
|
|
Vector2 vector2_6 = vec3 * 4f;
|
|
Projectile.NewProjectile(vector2_5.X, vector2_5.Y, vector2_6.X, vector2_6.Y, 464, damageForProjectiles1, 0.0f, Main.myPlayer, ai1: 1f);
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) (4 + num1))
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 3.0)
|
|
{
|
|
this.localAI[2] = 11f;
|
|
Vector2 vec4 = Vector2.Normalize(player.Center - center1);
|
|
if (vec4.HasNaNs())
|
|
vec4 = new Vector2((float) this.direction, 0.0f);
|
|
if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num2 == 0)
|
|
{
|
|
if ((int) ((double) this.ai[1] - 4.0) / num2 == 2)
|
|
{
|
|
List<int> intList = new List<int>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
foreach (int index3 in intList)
|
|
{
|
|
NPC npc = Main.npc[index3];
|
|
Vector2 center4 = npc.Center;
|
|
int num17 = Math.Sign(player.Center.X - center4.X);
|
|
if (num17 != 0)
|
|
npc.direction = npc.spriteDirection = num17;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vec5 = Vector2.Normalize(player.Center - center4 + player.velocity * 20f);
|
|
if (vec5.HasNaNs())
|
|
vec5 = new Vector2((float) this.direction, 0.0f);
|
|
Vector2 vector2_7 = center4 + new Vector2((float) (this.direction * 30), 12f);
|
|
for (int index4 = 0; index4 < 1; ++index4)
|
|
{
|
|
Vector2 vector2_8 = (vec5 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762);
|
|
Projectile.NewProjectile(vector2_7.X, vector2_7.Y, vector2_8.X, vector2_8.Y, 468, 18, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int num18 = Math.Sign(player.Center.X - center1.X);
|
|
if (num18 != 0)
|
|
this.direction = this.spriteDirection = num18;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vec6 = Vector2.Normalize(player.Center - center1 + player.velocity * 20f);
|
|
if (vec6.HasNaNs())
|
|
vec6 = new Vector2((float) this.direction, 0.0f);
|
|
Vector2 vector2_9 = this.Center + new Vector2((float) (this.direction * 30), 12f);
|
|
for (int index = 0; index < 1; ++index)
|
|
{
|
|
Vector2 vector2_10 = (vec6 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762);
|
|
Projectile.NewProjectile(vector2_9.X, vector2_9.Y, vector2_10.X, vector2_10.Y, 467, damageForProjectiles2, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) (4 + num2 * num3))
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 4.0)
|
|
{
|
|
this.localAI[2] = !flag2 ? 11f : 12f;
|
|
if ((double) this.ai[1] == 20.0 & flag2 && Main.netMode != 1)
|
|
{
|
|
List<int> intList = new List<int>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
foreach (int index5 in intList)
|
|
{
|
|
NPC npc = Main.npc[index5];
|
|
Vector2 center5 = npc.Center;
|
|
int num19 = Math.Sign(player.Center.X - center5.X);
|
|
if (num19 != 0)
|
|
npc.direction = npc.spriteDirection = num19;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vec = Vector2.Normalize(player.Center - center5 + player.velocity * 20f);
|
|
if (vec.HasNaNs())
|
|
vec = new Vector2((float) this.direction, 0.0f);
|
|
Vector2 vector2_11 = center5 + new Vector2((float) (this.direction * 30), 12f);
|
|
for (int index6 = 0; index6 < 1; ++index6)
|
|
{
|
|
Vector2 vector2_12 = (vec * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762);
|
|
Projectile.NewProjectile(vector2_11.X, vector2_11.Y, vector2_12.X, vector2_12.Y, 468, 18, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
if ((int) ((double) this.ai[1] - 20.0) % num4 == 0)
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y - 100f, 0.0f, 0.0f, 465, damageForProjectiles3, 0.0f, Main.myPlayer);
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) (20 + num4))
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 5.0)
|
|
{
|
|
this.localAI[2] = 10f;
|
|
if (Vector2.Normalize(player.Center - center1).HasNaNs())
|
|
{
|
|
Vector2 vector2_13 = new Vector2((float) this.direction, 0.0f);
|
|
}
|
|
if ((double) this.ai[1] >= 0.0 && (double) this.ai[1] < 30.0)
|
|
{
|
|
flag3 = true;
|
|
flag4 = true;
|
|
this.alpha = (int) (((double) this.ai[1] - 0.0) / 30.0 * (double) byte.MaxValue);
|
|
}
|
|
else if ((double) this.ai[1] >= 30.0 && (double) this.ai[1] < 90.0)
|
|
{
|
|
if ((((double) this.ai[1] != 30.0 ? 0 : (Main.netMode != 1 ? 1 : 0)) & (flag2 ? 1 : 0)) != 0)
|
|
{
|
|
++this.localAI[1];
|
|
Vector2 spinningpoint = new Vector2(180f, 0.0f);
|
|
List<int> intList = new List<int>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
int num20 = 6 - intList.Count;
|
|
if (num20 > 2)
|
|
num20 = 2;
|
|
int length = intList.Count + num20 + 1;
|
|
float[] numArray = new float[length];
|
|
for (int index = 0; index < numArray.Length; ++index)
|
|
numArray[index] = Vector2.Distance(this.Center + spinningpoint.RotatedBy((double) index * 6.28318548202515 / (double) length - 1.57079637050629), player.Center);
|
|
int index7 = 0;
|
|
for (int index8 = 1; index8 < numArray.Length; ++index8)
|
|
{
|
|
if ((double) numArray[index7] > (double) numArray[index8])
|
|
index7 = index8;
|
|
}
|
|
int num21 = index7 >= length / 2 ? index7 - length / 2 : index7 + length / 2;
|
|
int num22 = num20;
|
|
for (int index9 = 0; index9 < numArray.Length; ++index9)
|
|
{
|
|
if (num21 != index9)
|
|
{
|
|
Vector2 vector2_14 = this.Center + spinningpoint.RotatedBy((double) index9 * 6.28318548202515 / (double) length - 1.57079637050629);
|
|
if (num22-- > 0)
|
|
{
|
|
int index10 = NPC.NewNPC((int) vector2_14.X, (int) vector2_14.Y + this.height / 2, 440, this.whoAmI);
|
|
Main.npc[index10].ai[3] = (float) this.whoAmI;
|
|
Main.npc[index10].netUpdate = true;
|
|
Main.npc[index10].localAI[1] = this.localAI[1];
|
|
}
|
|
else
|
|
{
|
|
int number = intList[-num22 - 1];
|
|
Main.npc[number].Center = vector2_14;
|
|
NetMessage.SendData(23, number: number);
|
|
}
|
|
}
|
|
}
|
|
this.ai[2] = (float) Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 490, 0, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI));
|
|
this.Center = this.Center + spinningpoint.RotatedBy((double) num21 * 6.28318548202515 / (double) length - 1.57079637050629);
|
|
this.netUpdate = true;
|
|
intList.Clear();
|
|
}
|
|
flag3 = true;
|
|
flag4 = true;
|
|
this.alpha = (int) byte.MaxValue;
|
|
if (flag2)
|
|
{
|
|
Vector2 vector2_15 = Main.projectile[(int) this.ai[2]].Center - this.Center;
|
|
if (vector2_15 == Vector2.Zero)
|
|
vector2_15 = -Vector2.UnitY;
|
|
vector2_15.Normalize();
|
|
this.localAI[2] = (double) Math.Abs(vector2_15.Y) >= 0.769999980926514 ? ((double) vector2_15.Y >= 0.0 ? 10f : 12f) : 11f;
|
|
int num23 = Math.Sign(vector2_15.X);
|
|
if (num23 != 0)
|
|
this.direction = this.spriteDirection = num23;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_16 = Main.projectile[(int) Main.npc[(int) this.ai[3]].ai[2]].Center - this.Center;
|
|
if (vector2_16 == Vector2.Zero)
|
|
vector2_16 = -Vector2.UnitY;
|
|
vector2_16.Normalize();
|
|
this.localAI[2] = (double) Math.Abs(vector2_16.Y) >= 0.769999980926514 ? ((double) vector2_16.Y >= 0.0 ? 10f : 12f) : 11f;
|
|
int num24 = Math.Sign(vector2_16.X);
|
|
if (num24 != 0)
|
|
this.direction = this.spriteDirection = num24;
|
|
}
|
|
}
|
|
else if ((double) this.ai[1] >= 90.0 && (double) this.ai[1] < 120.0)
|
|
{
|
|
flag3 = true;
|
|
flag4 = true;
|
|
this.alpha = (int) byte.MaxValue - (int) (((double) this.ai[1] - 90.0) / 30.0 * (double) byte.MaxValue);
|
|
}
|
|
else if ((double) this.ai[1] >= 120.0 && (double) this.ai[1] < 420.0)
|
|
{
|
|
flag4 = true;
|
|
this.alpha = 0;
|
|
if (flag2)
|
|
{
|
|
Vector2 vector2_17 = Main.projectile[(int) this.ai[2]].Center - this.Center;
|
|
if (vector2_17 == Vector2.Zero)
|
|
vector2_17 = -Vector2.UnitY;
|
|
vector2_17.Normalize();
|
|
this.localAI[2] = (double) Math.Abs(vector2_17.Y) >= 0.769999980926514 ? ((double) vector2_17.Y >= 0.0 ? 10f : 12f) : 11f;
|
|
int num25 = Math.Sign(vector2_17.X);
|
|
if (num25 != 0)
|
|
this.direction = this.spriteDirection = num25;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_18 = Main.projectile[(int) Main.npc[(int) this.ai[3]].ai[2]].Center - this.Center;
|
|
if (vector2_18 == Vector2.Zero)
|
|
vector2_18 = -Vector2.UnitY;
|
|
vector2_18.Normalize();
|
|
this.localAI[2] = (double) Math.Abs(vector2_18.Y) >= 0.769999980926514 ? ((double) vector2_18.Y >= 0.0 ? 10f : 12f) : 11f;
|
|
int num26 = Math.Sign(vector2_18.X);
|
|
if (num26 != 0)
|
|
this.direction = this.spriteDirection = num26;
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 420.0)
|
|
{
|
|
flag4 = true;
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 6.0)
|
|
{
|
|
this.localAI[2] = 13f;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 120.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 7.0)
|
|
{
|
|
this.localAI[2] = 11f;
|
|
Vector2 vec7 = Vector2.Normalize(player.Center - center1);
|
|
if (vec7.HasNaNs())
|
|
vec7 = new Vector2((float) this.direction, 0.0f);
|
|
if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num5 == 0)
|
|
{
|
|
if ((int) ((double) this.ai[1] - 4.0) / num5 == 2)
|
|
{
|
|
List<int> intList = new List<int>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
foreach (int index11 in intList)
|
|
{
|
|
NPC npc = Main.npc[index11];
|
|
Vector2 center6 = npc.Center;
|
|
int num27 = Math.Sign(player.Center.X - center6.X);
|
|
if (num27 != 0)
|
|
npc.direction = npc.spriteDirection = num27;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vec8 = Vector2.Normalize(player.Center - center6 + player.velocity * 20f);
|
|
if (vec8.HasNaNs())
|
|
vec8 = new Vector2((float) this.direction, 0.0f);
|
|
Vector2 vector2_19 = center6 + new Vector2((float) (this.direction * 30), 12f);
|
|
for (int index12 = 0; (double) index12 < 5.0; ++index12)
|
|
{
|
|
Vector2 vector2_20 = (vec8 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(1.25663709640503);
|
|
Projectile.NewProjectile(vector2_19.X, vector2_19.Y, vector2_20.X, vector2_20.Y, 468, 18, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int num28 = Math.Sign(player.Center.X - center1.X);
|
|
if (num28 != 0)
|
|
this.direction = this.spriteDirection = num28;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Vector2 vec9 = Vector2.Normalize(player.Center - center1 + player.velocity * 20f);
|
|
if (vec9.HasNaNs())
|
|
vec9 = new Vector2((float) this.direction, 0.0f);
|
|
Vector2 vector2_21 = this.Center + new Vector2((float) (this.direction * 30), 12f);
|
|
float num29 = 8f;
|
|
float num30 = 0.2513274f;
|
|
for (int index13 = 0; (double) index13 < 5.0; ++index13)
|
|
{
|
|
Vector2 vector2_22 = (vec9 * num29).RotatedBy((double) num30 * (double) index13 - (1.25663709640503 - (double) num30) / 2.0);
|
|
float ai1 = (float) (((double) Main.rand.NextFloat() - 0.5) * 0.300000011920929 * 6.28318548202515 / 60.0);
|
|
int index14 = NPC.NewNPC((int) vector2_21.X, (int) vector2_21.Y + 7, 522, ai1: ai1, ai2: vector2_22.X, ai3: vector2_22.Y);
|
|
Main.npc[index14].velocity = vector2_22;
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) (4 + num5 * num6))
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 8.0)
|
|
{
|
|
this.localAI[2] = 13f;
|
|
if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num7 == 0)
|
|
{
|
|
List<int> intList = new List<int>();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI)
|
|
intList.Add(index);
|
|
}
|
|
int num31 = intList.Count + 1;
|
|
if (num31 > 3)
|
|
num31 = 3;
|
|
int num32 = Math.Sign(player.Center.X - center1.X);
|
|
if (num32 != 0)
|
|
this.direction = this.spriteDirection = num32;
|
|
if (Main.netMode != 1)
|
|
{
|
|
for (int index15 = 0; index15 < num31; ++index15)
|
|
{
|
|
Point tileCoordinates1 = this.Center.ToTileCoordinates();
|
|
Point tileCoordinates2 = Main.player[this.target].Center.ToTileCoordinates();
|
|
Vector2 vector2 = Main.player[this.target].Center - this.Center;
|
|
int num33 = 20;
|
|
int num34 = 3;
|
|
int num35 = 7;
|
|
int num36 = 2;
|
|
int num37 = 0;
|
|
bool flag6 = false;
|
|
if ((double) vector2.Length() > 2000.0)
|
|
flag6 = true;
|
|
while (!flag6 && num37 < 100)
|
|
{
|
|
++num37;
|
|
int index16 = Main.rand.Next(tileCoordinates2.X - num33, tileCoordinates2.X + num33 + 1);
|
|
int index17 = Main.rand.Next(tileCoordinates2.Y - num33, tileCoordinates2.Y + num33 + 1);
|
|
if ((index17 < tileCoordinates2.Y - num35 || index17 > tileCoordinates2.Y + num35 || index16 < tileCoordinates2.X - num35 || index16 > tileCoordinates2.X + num35) && (index17 < tileCoordinates1.Y - num34 || index17 > tileCoordinates1.Y + num34 || index16 < tileCoordinates1.X - num34 || index16 > tileCoordinates1.X + num34) && !Main.tile[index16, index17].nactive())
|
|
{
|
|
bool flag7 = true;
|
|
if (flag7 && Collision.SolidTiles(index16 - num36, index16 + num36, index17 - num36, index17 + num36))
|
|
flag7 = false;
|
|
if (flag7)
|
|
{
|
|
NPC.NewNPC(index16 * 16 + 8, index17 * 16 + 8, 523, ai0: ((float) this.whoAmI));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= (double) (4 + num7 * num8))
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
++this.ai[3];
|
|
this.velocity = Vector2.Zero;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if (!flag2)
|
|
this.ai[3] = num10;
|
|
this.dontTakeDamage = flag3;
|
|
this.chaseable = !flag4;
|
|
}
|
|
|
|
private void AI_108_DivingFlyer()
|
|
{
|
|
this.rotation = this.velocity.ToRotation();
|
|
float num1 = 0.4f;
|
|
float num2 = 10f;
|
|
float num3 = 200f;
|
|
float num4 = 750f;
|
|
float num5 = 30f;
|
|
float num6 = 30f;
|
|
float num7 = 0.95f;
|
|
int num8 = 50;
|
|
float num9 = 14f;
|
|
float num10 = 30f;
|
|
float num11 = 100f;
|
|
float num12 = 20f;
|
|
float num13 = 0.0f;
|
|
float num14 = 7f;
|
|
bool flag1 = true;
|
|
bool flag2 = true;
|
|
int num15 = 120;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
float num16 = 0.05f;
|
|
float num17 = 0.0f;
|
|
bool flag5 = false;
|
|
switch (this.type)
|
|
{
|
|
case 558:
|
|
case 559:
|
|
case 560:
|
|
flag4 = true;
|
|
num1 = 0.7f;
|
|
if (this.type == 559)
|
|
num1 = 0.5f;
|
|
if (this.type == 560)
|
|
num1 = 0.2f;
|
|
num2 = 3f;
|
|
num3 = 400f;
|
|
num4 = 500f;
|
|
num5 = 90f;
|
|
num6 = 20f;
|
|
num7 = 0.95f;
|
|
num8 = 0;
|
|
num9 = 8f;
|
|
num10 = 30f;
|
|
num11 = 150f;
|
|
num12 = 60f;
|
|
num13 = 0.05f;
|
|
num14 = 6f;
|
|
flag2 = false;
|
|
flag5 = true;
|
|
break;
|
|
case 574:
|
|
case 575:
|
|
flag4 = true;
|
|
num1 = 0.6f;
|
|
if (this.type == 575)
|
|
num1 = 0.4f;
|
|
num2 = 4f;
|
|
num3 = 400f;
|
|
num4 = 500f;
|
|
num5 = 90f;
|
|
num6 = 30f;
|
|
num7 = 0.95f;
|
|
num8 = 3;
|
|
num9 = 8f;
|
|
num10 = 30f;
|
|
num11 = 150f;
|
|
num12 = 10f;
|
|
num13 = 0.05f;
|
|
num14 = 0.0f;
|
|
num17 = -0.1f;
|
|
flag3 = true;
|
|
flag5 = true;
|
|
break;
|
|
}
|
|
NPCUtils.TargetClosestOldOnesInvasion(this);
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
if (flag5)
|
|
{
|
|
if ((double) this.localAI[0] == 0.0)
|
|
this.alpha = (int) byte.MaxValue;
|
|
if ((double) this.localAI[0] == 30.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center);
|
|
if ((double) this.localAI[0] < 60.0)
|
|
{
|
|
++this.localAI[0];
|
|
this.alpha -= 5;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
int num18 = (int) this.localAI[0] / 10;
|
|
float num19 = this.Size.Length() / 2f / 20f;
|
|
int maxValue = 5;
|
|
if (this.type == 576 || this.type == 577)
|
|
maxValue = 1;
|
|
for (int index = 0; index < num18; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100);
|
|
dust.scale = 0.55f;
|
|
dust.fadeIn = 0.7f;
|
|
dust.velocity *= 0.1f * num19;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag4)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width)
|
|
{
|
|
if ((double) this.position.X < (double) Main.npc[index].position.X)
|
|
this.velocity.X -= num16;
|
|
else
|
|
this.velocity.X += num16;
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= num16;
|
|
else
|
|
this.velocity.Y += num16;
|
|
}
|
|
}
|
|
}
|
|
if (Math.Sign(this.velocity.X) != 0)
|
|
this.spriteDirection = -Math.Sign(this.velocity.X);
|
|
if ((double) this.rotation < -1.57079637050629)
|
|
this.rotation += 3.141593f;
|
|
if ((double) this.rotation > 1.57079637050629)
|
|
this.rotation -= 3.141593f;
|
|
float num20 = num13 * num12;
|
|
if (Main.expertMode)
|
|
num1 *= Main.GameModeInfo.KnockbackToEnemiesMultiplier;
|
|
SlotId slotId;
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.knockBackResist = num1;
|
|
float num21 = num2;
|
|
Vector2 center = this.Center;
|
|
Vector2 vector2_1 = targetData.Center - center;
|
|
Vector2 vector2_2 = vector2_1 - Vector2.UnitY * num3;
|
|
double num22 = (double) vector2_1.Length();
|
|
Vector2 v = Vector2.Normalize(vector2_1) * num21;
|
|
Vector2 vector2_3 = Vector2.Normalize(vector2_2) * num21;
|
|
bool flag6 = Collision.CanHit(this.Center, 1, 1, targetData.Center, 1, 1);
|
|
if ((double) this.ai[3] >= (double) num15)
|
|
flag6 = true;
|
|
float num23 = 8f;
|
|
bool flag7 = flag6 && (double) v.ToRotation() > 3.14159274101257 / (double) num23 && (double) v.ToRotation() < 3.14159274101257 - 3.14159274101257 / (double) num23;
|
|
double num24 = (double) num4;
|
|
if (num22 > num24 || !flag7)
|
|
{
|
|
this.velocity.X = (this.velocity.X * (num5 - 1f) + vector2_3.X) / num5;
|
|
this.velocity.Y = (this.velocity.Y * (num5 - 1f) + vector2_3.Y) / num5;
|
|
if (!flag7)
|
|
{
|
|
++this.ai[3];
|
|
if ((double) this.ai[3] == (double) num15)
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
this.ai[3] = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[2] = v.X;
|
|
this.ai[3] = v.Y;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.knockBackResist = 0.0f;
|
|
this.velocity = this.velocity * num7;
|
|
this.velocity.Y += num17;
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] == (double) num6)
|
|
{
|
|
if (this.type == 558 || this.type == 559 || this.type == 560)
|
|
{
|
|
float[] localAi1 = this.localAI;
|
|
slotId = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_WyvernDiveDown, this.Center);
|
|
double num25 = (double) ((SlotId) ref slotId).ToFloat();
|
|
localAi1[1] = (float) num25;
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
float[] localAi2 = this.localAI;
|
|
slotId = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_WyvernScream, this.Center);
|
|
double num26 = (double) ((SlotId) ref slotId).ToFloat();
|
|
localAi2[2] = (float) num26;
|
|
}
|
|
}
|
|
else if (this.type == 574 || this.type == 575)
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldFlyerChargeScream, this.Center);
|
|
double num27 = (double) ((SlotId) ref slotId).ToFloat();
|
|
localAi[1] = (float) num27;
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgnite, this.Center);
|
|
}
|
|
}
|
|
if ((double) this.ai[1] >= (double) num6)
|
|
{
|
|
this.ai[0] = 2f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
Vector2 vector2 = new Vector2(this.ai[2], this.ai[3]) + new Vector2((float) Main.rand.Next(-num8, num8 + 1), (float) Main.rand.Next(-num8, num8 + 1)) * 0.04f;
|
|
vector2.Normalize();
|
|
this.velocity = vector2 * num9;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 2.0)
|
|
{
|
|
if ((double) this.ai[1] >= 20.0 && (this.type == 574 || this.type == 575))
|
|
{
|
|
ActiveSound activeSound = SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[2]));
|
|
if (activeSound == null)
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId = SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgniteLoop, this.Center);
|
|
double num28 = (double) ((SlotId) ref slotId).ToFloat();
|
|
localAi[2] = (float) num28;
|
|
}
|
|
else
|
|
activeSound.Position = this.Center;
|
|
}
|
|
this.knockBackResist = 0.0f;
|
|
float num29 = num10;
|
|
++this.ai[1];
|
|
bool flag8 = (double) Vector2.Distance(this.Center, targetData.Center) > (double) num11 && (double) this.Center.Y > (double) targetData.Center.Y;
|
|
if (flag3)
|
|
flag8 = false;
|
|
if ((double) this.ai[1] >= (double) num29 & flag8 || (double) this.velocity.Length() < (double) num14)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.velocity = this.velocity / 2f;
|
|
this.netUpdate = true;
|
|
if (flag1)
|
|
{
|
|
this.ai[1] = 45f;
|
|
this.ai[0] = 4f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Vector2 center = this.Center;
|
|
Vector2 vec = targetData.Center - center;
|
|
vec.Normalize();
|
|
if (vec.HasNaNs())
|
|
vec = new Vector2((float) this.direction, 0.0f);
|
|
this.velocity = (this.velocity * (num12 - 1f) + vec * (this.velocity.Length() + num20)) / num12;
|
|
}
|
|
if (flag2 && Collision.SolidCollision(this.position, this.width, this.height))
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 4.0)
|
|
{
|
|
this.ai[1] -= 3f;
|
|
if ((double) this.ai[1] <= 0.0)
|
|
{
|
|
this.ai[0] = 0.0f;
|
|
this.ai[1] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
this.velocity = this.velocity * 0.95f;
|
|
}
|
|
ActiveSound activeSound1 = SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[1]));
|
|
if (activeSound1 != null)
|
|
{
|
|
activeSound1.Position = this.Center;
|
|
}
|
|
else
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId = (SlotId) SlotId.Invalid;
|
|
double num30 = (double) ((SlotId) ref slotId).ToFloat();
|
|
localAi[1] = (float) num30;
|
|
}
|
|
if (this.type == 558 || this.type == 559 || this.type == 560)
|
|
{
|
|
ActiveSound activeSound2 = SoundEngine.GetActiveSound(SlotId.FromFloat(this.localAI[2]));
|
|
if (activeSound2 != null)
|
|
{
|
|
activeSound2.Position = this.Center;
|
|
}
|
|
else
|
|
{
|
|
float[] localAi = this.localAI;
|
|
slotId = (SlotId) SlotId.Invalid;
|
|
double num31 = (double) ((SlotId) ref slotId).ToFloat();
|
|
localAi[2] = (float) num31;
|
|
}
|
|
}
|
|
if (flag2 && (double) this.ai[0] != 3.0 && (double) Vector2.Distance(this.Center, targetData.Center) < 64.0)
|
|
{
|
|
this.ai[0] = 3f;
|
|
this.ai[1] = 0.0f;
|
|
this.ai[2] = 0.0f;
|
|
this.ai[3] = 0.0f;
|
|
this.netUpdate = true;
|
|
}
|
|
if ((double) this.ai[0] != 3.0)
|
|
return;
|
|
this.position = this.Center;
|
|
this.width = this.height = 192;
|
|
this.position.X -= (float) (this.width / 2);
|
|
this.position.Y -= (float) (this.height / 2);
|
|
this.velocity = Vector2.Zero;
|
|
this.damage = this.GetAttackDamage_ScaledByStrength(80f);
|
|
this.alpha = (int) byte.MaxValue;
|
|
if ((double) this.ai[1] == 0.0 && (this.type == 574 || this.type == 575))
|
|
{
|
|
for (int index1 = 0; index1 < 4; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index2].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f;
|
|
}
|
|
for (int index3 = 0; index3 < 20; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 200, Scale: 3.7f);
|
|
Main.dust[index4].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f;
|
|
Main.dust[index4].noGravity = true;
|
|
Main.dust[index4].velocity *= 3f;
|
|
int index5 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f);
|
|
Main.dust[index5].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 4f;
|
|
Main.dust[index5].velocity *= 2f;
|
|
Main.dust[index5].noGravity = true;
|
|
Main.dust[index5].fadeIn = 2.5f;
|
|
}
|
|
for (int index6 = 0; index6 < 6; ++index6)
|
|
{
|
|
int index7 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Scale: 2.7f);
|
|
Main.dust[index7].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f;
|
|
Main.dust[index7].noGravity = true;
|
|
Main.dust[index7].velocity *= 3f;
|
|
}
|
|
for (int index8 = 0; index8 < 12; ++index8)
|
|
{
|
|
int index9 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Scale: 1.5f);
|
|
Main.dust[index9].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f;
|
|
Main.dust[index9].noGravity = true;
|
|
Main.dust[index9].velocity *= 3f;
|
|
}
|
|
for (int index10 = 0; index10 < 5; ++index10)
|
|
{
|
|
int index11 = Gore.NewGore(this.position + new Vector2((float) (this.width * Main.rand.Next(100)) / 100f, (float) (this.height * Main.rand.Next(100)) / 100f) - Vector2.One * 10f, new Vector2(), Main.rand.Next(61, 64));
|
|
Main.gore[index11].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f;
|
|
Main.gore[index11].velocity *= 0.3f;
|
|
Main.gore[index11].velocity.X += (float) Main.rand.Next(-10, 11) * 0.05f;
|
|
Main.gore[index11].velocity.Y += (float) Main.rand.Next(-10, 11) * 0.05f;
|
|
}
|
|
}
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] < 3.0)
|
|
return;
|
|
SoundEngine.PlaySound(SoundID.Item14, this.position);
|
|
this.life = 0;
|
|
this.HitEffect();
|
|
this.active = false;
|
|
}
|
|
|
|
private void AI_109_DarkMage()
|
|
{
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
bool flag3 = true;
|
|
bool flag4 = false;
|
|
int num1 = 4;
|
|
int num2 = 3;
|
|
int num3 = 0;
|
|
float num4 = 0.2f;
|
|
float num5 = 2f;
|
|
float num6 = -0.2f;
|
|
float num7 = -4f;
|
|
bool flag5 = true;
|
|
float num8 = 2f;
|
|
float num9 = 0.1f;
|
|
float num10 = 1f;
|
|
float num11 = 0.04f;
|
|
bool flag6 = false;
|
|
float num12 = 0.96f;
|
|
bool flag7 = true;
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
if (this.type == 564 || this.type == 565)
|
|
{
|
|
flag5 = false;
|
|
this.rotation = this.velocity.X * 0.04f;
|
|
this.spriteDirection = this.direction > 0 ? 1 : -1;
|
|
num3 = 2;
|
|
num6 = -0.05f;
|
|
num7 = -0.4f;
|
|
num4 = 0.05f;
|
|
num5 = 0.2f;
|
|
num10 = 0.5f;
|
|
num11 = 0.02f;
|
|
num8 = 0.5f;
|
|
num9 = 0.1f;
|
|
this.localAI[2] = 0.0f;
|
|
DelegateMethods.v3_1 = new Vector3(0.3f, 0.05f, 0.45f) * 1.5f;
|
|
Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.TileActionAttempt(DelegateMethods.CastLightOpen));
|
|
if ((double) this.ai[0] < 0.0)
|
|
this.ai[0] = MathHelper.Min(this.ai[0] + 1f, 0.0f);
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
flag7 = false;
|
|
flag6 = true;
|
|
num12 = 0.9f;
|
|
--this.ai[0];
|
|
if ((double) this.ai[0] == 80.0 && (double) this.ai[1] == 2.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_DarkMageSummonSkeleton, this.Center);
|
|
if ((double) this.ai[1] == 2.0 && (double) this.ai[0] == 64.0 && Main.netMode != 1)
|
|
{
|
|
Projectile.NewProjectile(this.Center + new Vector2((float) (this.direction * 24), -40f), Vector2.Zero, 673, 0, 0.0f, Main.myPlayer);
|
|
DD2Event.RaiseGoblins(this.Center);
|
|
}
|
|
if ((double) this.ai[1] == 0.0 && (double) this.ai[0] == 32.0)
|
|
{
|
|
Vector2 velocity = (targetData.Center - (this.Center + new Vector2((float) (this.direction * 10), -16f))).SafeNormalize(Vector2.UnitY) * 14f;
|
|
this.direction = (double) velocity.X > 0.0 ? 1 : -1;
|
|
if (Main.netMode != 1)
|
|
Projectile.NewProjectile(this.Center + new Vector2((float) (this.direction * 10), -16f), velocity, 675, 40, 0.0f, Main.myPlayer);
|
|
}
|
|
if ((double) this.ai[0] == 126.0 && (double) this.ai[1] == 1.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_DarkMageCastHeal, this.Center);
|
|
if ((double) this.ai[1] == 1.0 && Main.netMode != 1 && ((double) this.ai[0] == 40.0 || (double) this.ai[0] == 48.0 || (double) this.ai[0] == 56.0))
|
|
{
|
|
Point result;
|
|
if (WorldUtils.Find(new Vector2(this.Center.X + (float) (this.direction * 240), this.Center.Y).ToTileCoordinates(), Searches.Chain((GenSearch) new Searches.Down(50), (GenCondition) new Terraria.WorldBuilding.Conditions.IsSolid()), out result))
|
|
Projectile.NewProjectile(result.ToWorldCoordinates(autoAddY: 0.0f), Vector2.Zero, 674, 0, 0.0f, Main.myPlayer);
|
|
}
|
|
if ((double) this.ai[0] <= 0.0)
|
|
{
|
|
double num13 = (double) this.ai[1];
|
|
++this.ai[1];
|
|
if ((double) this.ai[1] >= 3.0)
|
|
this.ai[1] = 0.0f;
|
|
this.ai[0] = -120f;
|
|
if (num13 == 0.0)
|
|
this.ai[0] = -20f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] == 0.0 && (double) this.localAI[3] >= 60.0)
|
|
{
|
|
bool flag8 = false;
|
|
Vector2 minimum = this.Center + new Vector2(-600f, -200f);
|
|
Vector2 maximum = this.Center + new Vector2(600f, 200f);
|
|
int num14 = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
NPC npc = Main.npc[index];
|
|
if (npc.active && npc.lifeMax != npc.life && npc.Center.Between(minimum, maximum) && ++num14 >= 2)
|
|
{
|
|
flag8 = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!flag8)
|
|
this.ai[1] = 2f;
|
|
if ((double) this.ai[1] == 2.0 && !DD2Event.CanRaiseGoblinsHere(this.Center))
|
|
this.ai[1] = 0.0f;
|
|
bool flag9 = true;
|
|
if ((double) this.ai[1] == 0.0 && ((double) this.Distance(targetData.Center) >= 1000.0 || !Collision.CanHitLine(this.Center, 0, 0, targetData.Center, 0, 0)))
|
|
flag9 = false;
|
|
if (flag9)
|
|
{
|
|
switch ((int) this.ai[1])
|
|
{
|
|
case 0:
|
|
this.ai[0] = 97f;
|
|
break;
|
|
case 1:
|
|
this.ai[0] = (float) sbyte.MaxValue;
|
|
break;
|
|
case 2:
|
|
this.ai[0] = 183f;
|
|
break;
|
|
}
|
|
this.netUpdate = true;
|
|
flag6 = true;
|
|
}
|
|
}
|
|
if ((double) this.localAI[3] == 0.0)
|
|
this.alpha = (int) byte.MaxValue;
|
|
if ((double) this.localAI[3] == 30.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center);
|
|
if ((double) this.localAI[3] < 60.0)
|
|
{
|
|
++this.localAI[3];
|
|
this.alpha -= 5;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
int num15 = (int) this.localAI[3] / 10;
|
|
float num16 = this.Size.Length() / 2f / 20f;
|
|
int maxValue = 5;
|
|
if (this.type == 576 || this.type == 577)
|
|
maxValue = 1;
|
|
for (int index = 0; index < num15; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100);
|
|
dust.scale = 0.55f;
|
|
dust.fadeIn = 0.7f;
|
|
dust.velocity *= 0.1f * num16;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.justHit)
|
|
this.localAI[2] = 0.0f;
|
|
if (!flag2)
|
|
{
|
|
if ((double) this.localAI[2] >= 0.0)
|
|
{
|
|
float num17 = 16f;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
if ((double) this.position.X > (double) this.localAI[0] - (double) num17 && (double) this.position.X < (double) this.localAI[0] + (double) num17)
|
|
flag10 = true;
|
|
else if ((double) this.velocity.X < 0.0 && this.direction > 0 || (double) this.velocity.X > 0.0 && this.direction < 0)
|
|
{
|
|
flag10 = true;
|
|
num17 += 24f;
|
|
}
|
|
if ((double) this.position.Y > (double) this.localAI[1] - (double) num17 && (double) this.position.Y < (double) this.localAI[1] + (double) num17)
|
|
flag11 = true;
|
|
if (flag10 & flag11)
|
|
{
|
|
++this.localAI[2];
|
|
if ((double) this.localAI[2] >= 30.0 && (double) num17 == 16.0)
|
|
flag1 = true;
|
|
if ((double) this.localAI[2] >= 60.0)
|
|
{
|
|
this.localAI[2] = -180f;
|
|
this.direction *= -1;
|
|
this.velocity.X *= -1f;
|
|
this.collideX = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.localAI[0] = this.position.X;
|
|
this.localAI[1] = this.position.Y;
|
|
this.localAI[2] = 0.0f;
|
|
}
|
|
if (flag7)
|
|
NPCUtils.TargetClosestOldOnesInvasion(this);
|
|
}
|
|
else
|
|
{
|
|
++this.localAI[2];
|
|
this.direction = (double) targetData.Center.X > (double) this.Center.X ? 1 : -1;
|
|
}
|
|
}
|
|
int index1 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0) + this.direction * 2;
|
|
int num18 = (int) (((double) this.position.Y + (double) this.height) / 16.0);
|
|
int num19 = (int) this.Bottom.Y / 16;
|
|
int index2 = (int) this.Bottom.X / 16;
|
|
if (flag6)
|
|
{
|
|
this.velocity = this.velocity * num12;
|
|
}
|
|
else
|
|
{
|
|
for (int index3 = num18; index3 < num18 + num1; ++index3)
|
|
{
|
|
if (Main.tile[index1, index3] == null)
|
|
Main.tile[index1, index3] = new Tile();
|
|
if (Main.tile[index1, index3].nactive() && Main.tileSolid[(int) Main.tile[index1, index3].type] || Main.tile[index1, index3].liquid > (byte) 0)
|
|
{
|
|
if (index3 <= num18 + 1)
|
|
flag4 = true;
|
|
flag3 = false;
|
|
break;
|
|
}
|
|
}
|
|
for (int index4 = num19; index4 < num19 + num3; ++index4)
|
|
{
|
|
if (Main.tile[index2, index4] == null)
|
|
Main.tile[index2, index4] = new Tile();
|
|
if (Main.tile[index2, index4].nactive() && Main.tileSolid[(int) Main.tile[index2, index4].type] || Main.tile[index2, index4].liquid > (byte) 0)
|
|
{
|
|
flag4 = true;
|
|
flag3 = false;
|
|
break;
|
|
}
|
|
}
|
|
if (flag5)
|
|
{
|
|
for (int index5 = num18 - num2; index5 < num18; ++index5)
|
|
{
|
|
if (Main.tile[index1, index5] == null)
|
|
Main.tile[index1, index5] = new Tile();
|
|
if (Main.tile[index1, index5].nactive() && Main.tileSolid[(int) Main.tile[index1, index5].type] || Main.tile[index1, index5].liquid > (byte) 0)
|
|
{
|
|
flag4 = false;
|
|
flag1 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag1)
|
|
{
|
|
flag4 = false;
|
|
flag3 = true;
|
|
}
|
|
if (flag3)
|
|
{
|
|
this.velocity.Y += num4;
|
|
if ((double) this.velocity.Y > (double) num5)
|
|
this.velocity.Y = num5;
|
|
}
|
|
else
|
|
{
|
|
if (((this.directionY >= 0 ? 0 : ((double) this.velocity.Y > 0.0 ? 1 : 0)) | (flag4 ? 1 : 0)) != 0)
|
|
this.velocity.Y += num6;
|
|
if ((double) this.velocity.Y < (double) num7)
|
|
this.velocity.Y = num7;
|
|
}
|
|
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;
|
|
}
|
|
if (this.direction == -1 && (double) this.velocity.X > -(double) num8)
|
|
{
|
|
this.velocity.X -= num9;
|
|
if ((double) this.velocity.X > (double) num8)
|
|
this.velocity.X -= num9;
|
|
else if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X += num9 / 2f;
|
|
if ((double) this.velocity.X < -(double) num8)
|
|
this.velocity.X = -num8;
|
|
}
|
|
else if (this.direction == 1 && (double) this.velocity.X < (double) num8)
|
|
{
|
|
this.velocity.X += num9;
|
|
if ((double) this.velocity.X < -(double) num8)
|
|
this.velocity.X += num9;
|
|
else if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X -= num9 / 2f;
|
|
if ((double) this.velocity.X > (double) num8)
|
|
this.velocity.X = num8;
|
|
}
|
|
if (this.directionY == -1 && (double) this.velocity.Y > -(double) num10)
|
|
{
|
|
this.velocity.Y -= num11;
|
|
if ((double) this.velocity.Y > (double) num10)
|
|
this.velocity.Y -= num11 * 1.25f;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
this.velocity.Y += num11 * 0.75f;
|
|
if ((double) this.velocity.Y >= -(double) num10)
|
|
return;
|
|
this.velocity.Y = -num8;
|
|
}
|
|
else
|
|
{
|
|
if (this.directionY != 1 || (double) this.velocity.Y >= (double) num10)
|
|
return;
|
|
this.velocity.Y += num11;
|
|
if ((double) this.velocity.Y < -(double) num10)
|
|
this.velocity.Y += num11 * 1.25f;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.velocity.Y -= num11 * 0.75f;
|
|
if ((double) this.velocity.Y <= (double) num10)
|
|
return;
|
|
this.velocity.Y = num10;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AI_111_DD2LightningBug()
|
|
{
|
|
bool flag1 = true;
|
|
float num1 = 7f;
|
|
float num2 = 60f;
|
|
float num3 = 60f;
|
|
float num4 = 1f;
|
|
float num5 = 0.96f;
|
|
int num6 = 30;
|
|
int num7 = 20;
|
|
float num8 = 200f;
|
|
int Damage = 40;
|
|
int Type = 438;
|
|
float num9 = 10f;
|
|
float num10 = 100f;
|
|
bool flag2 = false;
|
|
float num11 = 0.05f;
|
|
Vector2 center = this.Center;
|
|
NPCUtils.TargetClosestOldOnesInvasion(this);
|
|
NPCAimedTarget targetData = this.GetTargetData();
|
|
bool flag3 = false;
|
|
if (this.type == 578)
|
|
{
|
|
num1 = 4f;
|
|
num2 = 20f;
|
|
num3 = 20f;
|
|
flag3 = true;
|
|
flag2 = true;
|
|
num11 = 0.1f;
|
|
Type = 682;
|
|
Damage = 50;
|
|
num9 = 10f;
|
|
num10 = 50f;
|
|
num6 = 5;
|
|
num7 = 30;
|
|
center += new Vector2((float) (-this.spriteDirection * 20), 10f);
|
|
this.position = this.position + this.netOffset;
|
|
if (Main.rand.Next(15) == 0)
|
|
{
|
|
Vector2 position = this.position;
|
|
if (this.direction == -1)
|
|
position.X += (float) (this.width / 2);
|
|
Dust dust = Dust.NewDustDirect(position, this.width / 2, this.height, 272);
|
|
dust.scale = 0.65f;
|
|
dust.velocity.Y -= 0.8f;
|
|
if ((double) dust.velocity.X * (double) this.direction > 0.0)
|
|
dust.velocity.X *= -1f;
|
|
if ((double) dust.velocity.Y > 0.0)
|
|
dust.velocity *= -0.5f;
|
|
}
|
|
if (Main.rand.Next(80) == 0)
|
|
{
|
|
Vector2 rotationVector2 = (Main.rand.NextFloat() * 6.283185f).ToRotationVector2();
|
|
Dust dust1 = Dust.NewDustPerfect(this.Center, 272, new Vector2?(rotationVector2));
|
|
dust1.velocity *= 1.1f;
|
|
dust1.noGravity = true;
|
|
dust1.customData = (object) this;
|
|
Dust dust2 = Dust.NewDustPerfect(this.Center, 272, new Vector2?(rotationVector2));
|
|
dust2.velocity *= 1.5f;
|
|
dust2.noGravity = true;
|
|
dust2.customData = (object) this;
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if (flag3)
|
|
{
|
|
if ((double) this.localAI[1] == 0.0)
|
|
this.alpha = (int) byte.MaxValue;
|
|
if ((double) this.localAI[1] == 30.0)
|
|
SoundEngine.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center);
|
|
if ((double) this.localAI[1] < 60.0)
|
|
{
|
|
++this.localAI[1];
|
|
this.alpha -= 5;
|
|
if (this.alpha < 0)
|
|
this.alpha = 0;
|
|
int num12 = (int) this.localAI[1] / 10;
|
|
float num13 = this.Size.Length() / 2f / 20f;
|
|
int maxValue = 5;
|
|
if (this.type == 576 || this.type == 577)
|
|
maxValue = 1;
|
|
for (int index = 0; index < num12; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100);
|
|
dust.scale = 0.55f;
|
|
dust.fadeIn = 0.7f;
|
|
dust.velocity *= 0.1f * num13;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag2)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width)
|
|
{
|
|
if ((double) this.position.X < (double) Main.npc[index].position.X)
|
|
this.velocity.X -= num11;
|
|
else
|
|
this.velocity.X += num11;
|
|
if ((double) this.position.Y < (double) Main.npc[index].position.Y)
|
|
this.velocity.Y -= num11;
|
|
else
|
|
this.velocity.Y += num11;
|
|
}
|
|
}
|
|
}
|
|
this.rotation = (float) ((double) Math.Abs(this.velocity.X) * (double) this.direction * 0.100000001490116);
|
|
this.spriteDirection = this.direction;
|
|
Vector2 position1 = center;
|
|
Vector2 v = targetData.Center - position1;
|
|
Vector2 vector2_1 = v.SafeNormalize(Vector2.UnitY) * num1;
|
|
bool flag4 = Collision.CanHit(this.Center, 1, 1, targetData.Center, 1, 1);
|
|
if ((double) this.localAI[0] < 0.0)
|
|
++this.localAI[0];
|
|
if (!flag1)
|
|
{
|
|
this.velocity = (this.velocity * (num2 - 1f) + vector2_1) / num2;
|
|
this.EncourageDespawn(10);
|
|
}
|
|
else if ((double) v.Length() > (double) num8 || !flag4)
|
|
this.velocity = (this.velocity * (num3 - 1f) + vector2_1) / num3;
|
|
else if ((double) v.Y < (double) num10)
|
|
{
|
|
this.velocity.Y -= 0.03f;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.localAI[0] < 0.0)
|
|
return;
|
|
this.velocity = this.velocity * num5;
|
|
if ((double) this.velocity.Length() >= (double) num4 || Main.netMode == 1)
|
|
return;
|
|
++this.localAI[0];
|
|
if ((double) this.localAI[0] < (double) num6)
|
|
return;
|
|
this.localAI[0] = (float) -num7;
|
|
this.direction = this.spriteDirection = (double) vector2_1.X > 0.0 ? 1 : -1;
|
|
Vector2 vector2_2 = v + Utils.RandomVector2(Main.rand, -25f, 25f);
|
|
vector2_2.X *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00499999988824129);
|
|
vector2_2.Y *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00499999988824129);
|
|
vector2_2 = vector2_2.SafeNormalize(Vector2.UnitY) * num9;
|
|
vector2_2.X *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * (1.0 / 160.0));
|
|
vector2_2.Y *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * (1.0 / 160.0));
|
|
Projectile.NewProjectile(position1, vector2_2, Type, Damage, 0.0f, Main.myPlayer);
|
|
}
|
|
}
|
|
|
|
public void ReflectProjectiles(Microsoft.Xna.Framework.Rectangle myRect)
|
|
{
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
if (Main.projectile[index].active && Main.projectile[index].CanBeReflected() && this.CanReflectProjectile(Main.projectile[index]))
|
|
this.ReflectProjectile(Main.projectile[index]);
|
|
}
|
|
}
|
|
|
|
public bool CanReflectProjectile(Projectile proj)
|
|
{
|
|
bool flag = proj.Hitbox.Intersects(this.Hitbox);
|
|
if (this.type == 618)
|
|
this.BloodNautilus_GetMouthPositionAndRotation(out Vector2 _, out Vector2 _);
|
|
return flag;
|
|
}
|
|
|
|
public void BloodNautilus_GetMouthPositionAndRotation(
|
|
out Vector2 mouthPosition,
|
|
out Vector2 mouthDirection)
|
|
{
|
|
float f = this.rotation + 0.4712389f * (float) this.spriteDirection;
|
|
if (this.spriteDirection == -1)
|
|
f += 3.141593f;
|
|
mouthDirection = f.ToRotationVector2();
|
|
mouthPosition = this.Center + mouthDirection * 50f;
|
|
}
|
|
|
|
public void ReflectProjectile(Projectile proj)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item150, proj.position);
|
|
for (int index1 = 0; index1 < 3; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(proj.position, proj.width, proj.height, 31);
|
|
Main.dust[index2].velocity *= 0.3f;
|
|
}
|
|
proj.hostile = true;
|
|
proj.friendly = false;
|
|
Vector2 vector2 = Main.player[proj.owner].Center - proj.Center;
|
|
vector2.Normalize();
|
|
vector2 *= proj.oldVelocity.Length();
|
|
proj.velocity = new Vector2((float) Main.rand.Next(-100, 101), (float) Main.rand.Next(-100, 101));
|
|
proj.velocity.Normalize();
|
|
Projectile projectile1 = proj;
|
|
projectile1.velocity = projectile1.velocity * vector2.Length();
|
|
Projectile projectile2 = proj;
|
|
projectile2.velocity = projectile2.velocity + vector2 * 20f;
|
|
proj.velocity.Normalize();
|
|
Projectile projectile3 = proj;
|
|
projectile3.velocity = projectile3.velocity * vector2.Length();
|
|
proj.damage /= 2;
|
|
proj.penetrate = 1;
|
|
}
|
|
|
|
public int GetShootingFrame(float circleY)
|
|
{
|
|
int num = -4;
|
|
if ((double) circleY < -0.300000011920929)
|
|
num = 1;
|
|
if ((double) circleY < -0.100000001490116)
|
|
num = 0;
|
|
if ((double) circleY > 0.100000001490116)
|
|
num = 2;
|
|
if ((double) circleY > 0.300000011920929)
|
|
num = 3;
|
|
if (this.type == 228 || this.type == 229 || this.type == 209 || this.type == 22 || this.type == 368)
|
|
{
|
|
if (num == -4)
|
|
num = 1;
|
|
if ((double) circleY >= -0.100000001490116)
|
|
++num;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public Tuple<Vector2, float> GetSwingStats(
|
|
int swingMax,
|
|
int swingCurrent,
|
|
int aimDir,
|
|
int itemWidth,
|
|
int itemHeight)
|
|
{
|
|
Vector2 zero = Vector2.Zero;
|
|
if ((double) swingCurrent < (double) swingMax * 0.333)
|
|
{
|
|
float num = 10f;
|
|
if (itemWidth > 32)
|
|
num = 14f;
|
|
if (itemWidth >= 52)
|
|
num = 24f;
|
|
if (itemWidth >= 64)
|
|
num = 28f;
|
|
if (itemWidth >= 92)
|
|
num = 38f;
|
|
zero.X = this.Center.X + ((float) itemWidth * 0.5f - num) * (float) aimDir;
|
|
zero.Y = this.position.Y + 24f;
|
|
}
|
|
else if ((double) swingCurrent < (double) swingMax * 0.666)
|
|
{
|
|
float num1 = 10f;
|
|
if (itemWidth > 32)
|
|
num1 = 18f;
|
|
if (itemWidth >= 52)
|
|
num1 = 24f;
|
|
if (itemWidth >= 64)
|
|
num1 = 28f;
|
|
if (itemWidth >= 92)
|
|
num1 = 38f;
|
|
zero.X = this.Center.X + ((float) itemWidth * 0.5f - num1) * (float) aimDir;
|
|
float num2 = 10f;
|
|
if (itemHeight > 32)
|
|
num2 = 8f;
|
|
if (itemHeight > 52)
|
|
num2 = 12f;
|
|
if (itemHeight > 64)
|
|
num2 = 14f;
|
|
zero.Y = this.position.Y + num2;
|
|
}
|
|
else
|
|
{
|
|
float num3 = 6f;
|
|
if (itemWidth > 32)
|
|
num3 = 14f;
|
|
if (itemWidth >= 48)
|
|
num3 = 18f;
|
|
if (itemWidth >= 52)
|
|
num3 = 24f;
|
|
if (itemWidth >= 64)
|
|
num3 = 28f;
|
|
if (itemWidth >= 92)
|
|
num3 = 38f;
|
|
zero.X = this.Center.X - ((float) itemWidth * 0.5f - num3) * (float) aimDir;
|
|
float num4 = 10f;
|
|
if (itemHeight > 32)
|
|
num4 = 10f;
|
|
if (itemHeight > 52)
|
|
num4 = 12f;
|
|
if (itemHeight > 64)
|
|
num4 = 14f;
|
|
zero.Y = this.position.Y + num4;
|
|
}
|
|
float num5 = (float) (((double) swingCurrent / (double) swingMax - 0.5) * (double) -aimDir * 3.5 - (double) aimDir * 0.300000011920929);
|
|
return Tuple.Create<Vector2, float>(zero, num5);
|
|
}
|
|
|
|
public void TweakSwingStats(
|
|
int swingMax,
|
|
int swingCurrent,
|
|
int aimDir,
|
|
ref Microsoft.Xna.Framework.Rectangle itemRectangle)
|
|
{
|
|
if ((double) swingCurrent < (double) swingMax * 0.333)
|
|
{
|
|
if (aimDir == -1)
|
|
itemRectangle.X -= (int) ((double) itemRectangle.Width * 1.4 - (double) itemRectangle.Width);
|
|
itemRectangle.Width = (int) ((double) itemRectangle.Width * 1.4);
|
|
itemRectangle.Y += (int) ((double) itemRectangle.Height * 0.5);
|
|
itemRectangle.Height = (int) ((double) itemRectangle.Height * 1.1);
|
|
}
|
|
else
|
|
{
|
|
if ((double) swingCurrent < (double) swingMax * 0.666)
|
|
return;
|
|
if (aimDir == 1)
|
|
itemRectangle.X -= (int) ((double) itemRectangle.Width * 1.2);
|
|
itemRectangle.Width *= 2;
|
|
itemRectangle.Y -= (int) ((double) itemRectangle.Height * 1.4 - (double) itemRectangle.Height);
|
|
itemRectangle.Height = (int) ((double) itemRectangle.Height * 1.4);
|
|
}
|
|
}
|
|
|
|
public bool UsesPartyHat()
|
|
{
|
|
if (this.type == 441 || this.type == 37 || this.type == 633)
|
|
return false;
|
|
if (this.ForcePartyHatOn)
|
|
return true;
|
|
return !this.IsABestiaryIconDummy && this.frame.Height > 0 && this.townNPC && BirthdayParty.PartyIsUp;
|
|
}
|
|
|
|
public PartyHatColor GetPartyHatColor()
|
|
{
|
|
if (!this.UsesPartyHat() || string.IsNullOrEmpty(this.GivenOrTypeName))
|
|
return PartyHatColor.None;
|
|
int num1 = this.GivenOrTypeName.Length + (int) this.GivenOrTypeName[0];
|
|
int moonPhase = Main.moonPhase;
|
|
if (Main.dayTime)
|
|
--moonPhase;
|
|
int num2 = num1 + this.whoAmI + moonPhase * (this.whoAmI % 2 == 0).ToDirectionInt();
|
|
if (num2 < 0)
|
|
num2 += 5;
|
|
int num3 = num2 % 5;
|
|
if (num3 == 0)
|
|
++num3;
|
|
return (PartyHatColor) num3;
|
|
}
|
|
|
|
public void SetFrameSize()
|
|
{
|
|
Main.instance.LoadNPC(this.type);
|
|
if (!this.setFrameSize)
|
|
return;
|
|
this.frame = new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Npc[this.type].Width(), TextureAssets.Npc[this.type].Height() / Main.npcFrameCount[this.type]);
|
|
this.setFrameSize = false;
|
|
}
|
|
|
|
public void FindFrame()
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int num1 = 1;
|
|
if (!Main.dedServ)
|
|
{
|
|
if (!TextureAssets.Npc[this.type].IsLoaded)
|
|
return;
|
|
num1 = TextureAssets.Npc[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;
|
|
switch (this.type)
|
|
{
|
|
case 1:
|
|
case 16:
|
|
case 59:
|
|
case 71:
|
|
case 81:
|
|
case 138:
|
|
case 147:
|
|
case 183:
|
|
case 184:
|
|
case 204:
|
|
case 225:
|
|
case 302:
|
|
case 304:
|
|
case 333:
|
|
case 334:
|
|
case 335:
|
|
case 336:
|
|
case 535:
|
|
case 537:
|
|
case 658:
|
|
case 659:
|
|
if (this.type == 302 || this.type == 304)
|
|
this.spriteDirection = this.direction;
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
case 23:
|
|
case 121:
|
|
case 169:
|
|
case 190:
|
|
case 191:
|
|
case 192:
|
|
case 193:
|
|
case 194:
|
|
case 317:
|
|
case 318:
|
|
case 660:
|
|
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;
|
|
}
|
|
if ((this.type == 121 || this.type == 660) && (double) this.localAI[0] == 0.0)
|
|
{
|
|
this.localAI[0] = 1f;
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
if (this.type == 2 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194 || this.type == 317 || this.type == 318)
|
|
{
|
|
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 || this.type == 660)
|
|
{
|
|
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;
|
|
float num3 = 8f;
|
|
if (this.type == 660)
|
|
num3 = 6f;
|
|
if (this.frameCounter >= (double) num3)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
case 52:
|
|
case 53:
|
|
case 132:
|
|
case 161:
|
|
case 186:
|
|
case 187:
|
|
case 188:
|
|
case 189:
|
|
case 200:
|
|
case 223:
|
|
case 251:
|
|
case 254:
|
|
case (int) byte.MaxValue:
|
|
case 319:
|
|
case 320:
|
|
case 321:
|
|
case 331:
|
|
case 332:
|
|
case 342:
|
|
case 536:
|
|
case 590:
|
|
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;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 16.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 32.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 4:
|
|
case 125:
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
case 173:
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
case 21:
|
|
case 22:
|
|
case 26:
|
|
case 27:
|
|
case 28:
|
|
case 31:
|
|
case 37:
|
|
case 38:
|
|
case 44:
|
|
case 54:
|
|
case 73:
|
|
case 77:
|
|
case 78:
|
|
case 79:
|
|
case 80:
|
|
case 104:
|
|
case 107:
|
|
case 108:
|
|
case 120:
|
|
case 124:
|
|
case 140:
|
|
case 142:
|
|
case 159:
|
|
case 160:
|
|
case 162:
|
|
case 167:
|
|
case 178:
|
|
case 181:
|
|
case 185:
|
|
case 196:
|
|
case 197:
|
|
case 198:
|
|
case 201:
|
|
case 202:
|
|
case 203:
|
|
case 207:
|
|
case 208:
|
|
case 209:
|
|
case 212:
|
|
case 213:
|
|
case 227:
|
|
case 228:
|
|
case 229:
|
|
case 287:
|
|
case 294:
|
|
case 295:
|
|
case 296:
|
|
case 310:
|
|
case 311:
|
|
case 312:
|
|
case 313:
|
|
case 314:
|
|
case 322:
|
|
case 323:
|
|
case 324:
|
|
case 326:
|
|
case 338:
|
|
case 339:
|
|
case 340:
|
|
case 353:
|
|
case 368:
|
|
case 369:
|
|
case 441:
|
|
case 453:
|
|
case 460:
|
|
case 462:
|
|
case 463:
|
|
case 489:
|
|
case 534:
|
|
case 550:
|
|
case 588:
|
|
case 630:
|
|
case 632:
|
|
case 633:
|
|
case 635:
|
|
case 637:
|
|
case 638:
|
|
case 656:
|
|
int num4 = this.isLikeATownNPC ? NPCID.Sets.ExtraFramesCount[this.type] : 0;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
int num5 = Main.npcFrameCount[this.type] - NPCID.Sets.AttackFrameCount[this.type];
|
|
if ((double) this.ai[0] >= 20.0 && (double) this.ai[0] <= 22.0)
|
|
{
|
|
int num6 = this.frame.Y / num1;
|
|
switch (this.ai[0])
|
|
{
|
|
case 20f:
|
|
if (this.type == 656)
|
|
{
|
|
if ((double) this.ai[1] > 30.0 && (num6 < 7 || num6 > 9))
|
|
num6 = 7;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 8 && (double) this.ai[1] > 30.0)
|
|
num6 = 8;
|
|
if (num6 > 9)
|
|
num6 = 0;
|
|
}
|
|
}
|
|
if (this.type == 637)
|
|
{
|
|
if ((double) this.ai[1] > 30.0 && (num6 < 10 || num6 > 16))
|
|
num6 = 10;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 13 && (double) this.ai[1] > 30.0)
|
|
num6 = 13;
|
|
if (num6 > 16)
|
|
num6 = 0;
|
|
}
|
|
}
|
|
if (this.type == 638)
|
|
{
|
|
if ((double) this.ai[1] > 30.0 && (num6 < 23 || num6 > 27))
|
|
num6 = 23;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 26 && (double) this.ai[1] > 30.0)
|
|
num6 = 24;
|
|
if (num6 > 27)
|
|
{
|
|
num6 = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 21f:
|
|
if (this.type == 656)
|
|
{
|
|
if ((double) this.ai[1] > 30.0 && (num6 < 10 || num6 > 16))
|
|
num6 = 10;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 13 && (double) this.ai[1] > 30.0)
|
|
num6 = 13;
|
|
if (num6 > 16)
|
|
num6 = 0;
|
|
}
|
|
}
|
|
if (this.type == 637)
|
|
{
|
|
if ((double) this.ai[1] > 30.0 && (num6 < 17 || num6 > 21))
|
|
num6 = 17;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 19 && (double) this.ai[1] > 30.0)
|
|
num6 = 19;
|
|
if (num6 > 21)
|
|
num6 = 0;
|
|
}
|
|
}
|
|
if (this.type == 638)
|
|
{
|
|
if ((double) this.ai[1] > 30.0 && (num6 < 17 || num6 > 22))
|
|
num6 = 17;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 21 && (double) this.ai[1] > 30.0)
|
|
num6 = 18;
|
|
if (num6 > 22)
|
|
{
|
|
num6 = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 22f:
|
|
if (this.type == 656)
|
|
{
|
|
int num7 = Main.npcFrameCount[this.type];
|
|
if ((double) this.ai[1] > 40.0 && (num6 < 17 || num6 >= num7))
|
|
num6 = 17;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 20 && (double) this.ai[1] > 40.0)
|
|
num6 = 19;
|
|
if (num6 >= num7)
|
|
num6 = 0;
|
|
}
|
|
}
|
|
if (this.type == 637)
|
|
{
|
|
if ((double) this.ai[1] > 30.0 && (num6 < 17 || num6 > 27))
|
|
num6 = 17;
|
|
if (num6 > 0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num6;
|
|
if (num6 > 27)
|
|
{
|
|
num6 = (double) this.ai[1] > 30.0 ? 22 : 20;
|
|
break;
|
|
}
|
|
if ((double) this.ai[1] <= 30.0 && num6 == 22)
|
|
{
|
|
num6 = 0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[1] > 30.0 && num6 > 19 && num6 < 22)
|
|
{
|
|
num6 = 22;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num6 * num1;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frame.Y / num1 == num5 - 1 && this.frameCounter >= 5.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 == 0 && this.frameCounter >= 40.0)
|
|
{
|
|
this.frame.Y = num1 * (num5 - 1);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y != 0 && this.frame.Y != num1 * (num5 - 1))
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 11.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frame.Y / num1 == num5 - 1 && this.frameCounter >= 50.0)
|
|
{
|
|
if (this.frameCounter == 50.0)
|
|
{
|
|
int num8 = Main.rand.Next(4);
|
|
for (int index1 = 0; index1 < 3 + num8; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(this.Center + Vector2.UnitX * (float) -this.direction * 8f - Vector2.One * 5f + Vector2.UnitY * 8f, 3, 6, 216, (float) -this.direction, 1f);
|
|
Main.dust[index2].velocity /= 2f;
|
|
Main.dust[index2].scale = 0.8f;
|
|
}
|
|
if (Main.rand.Next(30) == 0)
|
|
{
|
|
int index = Gore.NewGore(this.Center + Vector2.UnitX * (float) -this.direction * 8f, Vector2.Zero, Main.rand.Next(580, 583));
|
|
Main.gore[index].velocity /= 2f;
|
|
Main.gore[index].velocity.Y = Math.Abs(Main.gore[index].velocity.Y);
|
|
Main.gore[index].velocity.X = -Math.Abs(Main.gore[index].velocity.X) * (float) this.direction;
|
|
}
|
|
}
|
|
if (this.frameCounter >= 100.0 && Main.rand.Next(20) == 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 == 0 && this.frameCounter >= 20.0)
|
|
{
|
|
this.frame.Y = num1 * (num5 - 1);
|
|
this.frameCounter = 0.0;
|
|
if (Main.netMode != 1)
|
|
{
|
|
EmoteBubble.NewBubble(89, new WorldUIAnchor((Entity) this), 90);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y != 0 && this.frame.Y != num1 * (num5 - 1))
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 5.0)
|
|
{
|
|
this.frame.Y = num1 * (num5 - 3);
|
|
if (this.type == 637)
|
|
this.frame.Y = num1 * 19;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 6.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num9 = this.frame.Y / num1;
|
|
switch (num5 - num9)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
int num10 = this.frameCounter >= 10.0 ? (this.frameCounter >= 16.0 ? (this.frameCounter >= 46.0 ? (this.frameCounter >= 60.0 ? (this.frameCounter >= 66.0 ? (this.frameCounter >= 72.0 ? (this.frameCounter >= 102.0 ? (this.frameCounter >= 108.0 ? (this.frameCounter >= 114.0 ? (this.frameCounter >= 120.0 ? (this.frameCounter >= 150.0 ? (this.frameCounter >= 156.0 ? (this.frameCounter >= 162.0 ? (this.frameCounter >= 168.0 ? (this.frameCounter >= 198.0 ? (this.frameCounter >= 204.0 ? (this.frameCounter >= 210.0 ? (this.frameCounter >= 216.0 ? (this.frameCounter >= 246.0 ? (this.frameCounter >= 252.0 ? (this.frameCounter >= 258.0 ? (this.frameCounter >= 264.0 ? (this.frameCounter >= 294.0 ? (this.frameCounter >= 300.0 ? 0 : num5 - 5) : num5 - 4) : num5 - 5) : 0) : num5 - 5) : num5 - 4) : num5 - 5) : 0) : num5 - 5) : num5 - 4) : num5 - 5) : 0) : num5 - 5) : num5 - 4) : num5 - 5) : 0) : num5 - 5) : num5 - 4) : num5 - 5) : 0) : num5 - 5) : num5 - 4) : num5 - 5) : 0;
|
|
if (num10 == num5 - 4 && num9 == num5 - 5)
|
|
{
|
|
Vector2 Position = this.Center + new Vector2((float) (10 * this.direction), -4f);
|
|
for (int index3 = 0; index3 < 8; ++index3)
|
|
{
|
|
int Type = Main.rand.Next(139, 143);
|
|
int index4 = Dust.NewDust(Position, 0, 0, Type, this.velocity.X + (float) this.direction, this.velocity.Y - 2.5f, Scale: 1.2f);
|
|
Main.dust[index4].velocity.X += (float) this.direction * 1.5f;
|
|
Main.dust[index4].position -= new Vector2(4f);
|
|
Main.dust[index4].velocity *= 2f;
|
|
Main.dust[index4].scale = (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.300000011920929);
|
|
}
|
|
}
|
|
this.frame.Y = num1 * num10;
|
|
if (this.frameCounter >= 300.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
if (num9 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
goto case 1;
|
|
}
|
|
else
|
|
goto case 1;
|
|
}
|
|
}
|
|
else if (((double) this.ai[0] == 7.0 || (double) this.ai[0] == 19.0) && !NPCID.Sets.IsTownPet[this.type])
|
|
{
|
|
++this.frameCounter;
|
|
int num11 = this.frame.Y / num1;
|
|
switch (num5 - num11)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
int num12 = 0;
|
|
if (this.frameCounter < 16.0)
|
|
num12 = 0;
|
|
else if (this.frameCounter == 16.0 && Main.netMode != 1)
|
|
EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) this), 112);
|
|
else if (this.frameCounter < 128.0)
|
|
num12 = this.frameCounter % 16.0 < 8.0 ? num5 - 2 : 0;
|
|
else if (this.frameCounter < 160.0)
|
|
num12 = 0;
|
|
else if (this.frameCounter == 160.0 && Main.netMode != 1)
|
|
EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) this), 60);
|
|
else
|
|
num12 = this.frameCounter >= 220.0 ? 0 : (this.frameCounter % 12.0 < 6.0 ? num5 - 2 : 0);
|
|
this.frame.Y = num1 * num12;
|
|
if (this.frameCounter >= 220.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
if (num11 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
goto case 1;
|
|
}
|
|
else
|
|
goto case 1;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 9.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num13 = this.frame.Y / num1;
|
|
switch (num5 - num13)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
int num14 = this.frameCounter >= 10.0 ? (this.frameCounter >= 16.0 ? num5 - 4 : num5 - 5) : 0;
|
|
if ((double) this.ai[1] < 16.0)
|
|
num14 = num5 - 5;
|
|
if ((double) this.ai[1] < 10.0)
|
|
num14 = 0;
|
|
this.frame.Y = num1 * num14;
|
|
break;
|
|
default:
|
|
if (num13 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
goto case 1;
|
|
}
|
|
else
|
|
goto case 1;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 18.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num15 = this.frame.Y / num1;
|
|
switch (num5 - num15)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
int num16 = 0;
|
|
num16 = this.frameCounter >= 10.0 ? (this.frameCounter >= 16.0 ? num5 - 2 : num5 - 1) : 0;
|
|
if ((double) this.ai[1] < 16.0)
|
|
num16 = num5 - 1;
|
|
if ((double) this.ai[1] < 10.0)
|
|
num16 = 0;
|
|
int num17 = Main.npcFrameCount[this.type] - 2;
|
|
this.frame.Y = num1 * num17;
|
|
break;
|
|
default:
|
|
if (num15 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
goto case 1;
|
|
}
|
|
else
|
|
goto case 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.ai[0] == 10.0 || (double) this.ai[0] == 13.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num18 = this.frame.Y / num1;
|
|
if ((uint) (num18 - num5) > 3U && num18 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num19 = 10;
|
|
int num20 = 6;
|
|
if (this.type == 633)
|
|
{
|
|
num19 = 0;
|
|
num20 = 2;
|
|
}
|
|
int num21 = this.frameCounter >= (double) num19 ? (this.frameCounter >= (double) (num19 + num20) ? (this.frameCounter >= (double) (num19 + num20 * 2) ? (this.frameCounter >= (double) (num19 + num20 * 3) ? (this.frameCounter >= (double) (num19 + num20 * 4) ? 0 : num5 + 3) : num5 + 2) : num5 + 1) : num5) : 0;
|
|
this.frame.Y = num1 * num21;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 15.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num22 = this.frame.Y / num1;
|
|
if ((uint) (num22 - num5) > 3U && num22 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
float num23 = this.ai[1] / (float) NPCID.Sets.AttackTime[this.type];
|
|
int num24 = (double) num23 <= 0.649999976158142 ? ((double) num23 <= 0.5 ? ((double) num23 <= 0.349999994039536 ? ((double) num23 <= 0.0 ? 0 : num5 + 3) : num5 + 2) : num5 + 1) : num5;
|
|
this.frame.Y = num1 * num24;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 12.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num25 = this.frame.Y / num1;
|
|
if ((uint) (num25 - num5) > 4U && num25 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num26 = num5 + this.GetShootingFrame(this.ai[2]);
|
|
this.frame.Y = num1 * num26;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 14.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num27 = this.frame.Y / num1;
|
|
if ((uint) (num27 - num5) > 1U && num27 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num28 = 12;
|
|
int num29 = this.frameCounter % (double) num28 * 2.0 < (double) num28 ? num5 : num5 + 1;
|
|
this.frame.Y = num1 * num29;
|
|
break;
|
|
}
|
|
if (this.CanTalk && ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0))
|
|
{
|
|
++this.frameCounter;
|
|
int num30 = this.frame.Y / num1;
|
|
switch (num5 - num30)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
bool flag = (double) this.ai[0] == 3.0;
|
|
int num31 = 0;
|
|
int num32 = 0;
|
|
int time1 = -1;
|
|
int time2 = -1;
|
|
if (this.frameCounter < 10.0)
|
|
num31 = 0;
|
|
else if (this.frameCounter < 16.0)
|
|
num31 = num5 - 5;
|
|
else if (this.frameCounter < 46.0)
|
|
num31 = num5 - 4;
|
|
else if (this.frameCounter < 60.0)
|
|
num31 = num5 - 5;
|
|
else if (this.frameCounter < 216.0)
|
|
num31 = 0;
|
|
else if (this.frameCounter == 216.0 && Main.netMode != 1)
|
|
time1 = 70;
|
|
else if (this.frameCounter < 286.0)
|
|
num31 = this.frameCounter % 12.0 < 6.0 ? num5 - 2 : 0;
|
|
else if (this.frameCounter < 320.0)
|
|
num31 = 0;
|
|
else if (this.frameCounter == 320.0 && Main.netMode != 1)
|
|
time1 = 100;
|
|
else
|
|
num31 = this.frameCounter >= 420.0 ? 0 : (this.frameCounter % 16.0 < 8.0 ? num5 - 2 : 0);
|
|
if (this.frameCounter < 70.0)
|
|
num32 = 0;
|
|
else if (this.frameCounter == 70.0 && Main.netMode != 1)
|
|
time2 = 90;
|
|
else
|
|
num32 = this.frameCounter >= 160.0 ? (this.frameCounter >= 166.0 ? (this.frameCounter >= 186.0 ? (this.frameCounter >= 200.0 ? (this.frameCounter >= 320.0 ? (this.frameCounter >= 326.0 ? 0 : num5 - 1) : 0) : num5 - 5) : num5 - 4) : num5 - 5) : (this.frameCounter % 16.0 < 8.0 ? num5 - 2 : 0);
|
|
if (flag)
|
|
{
|
|
NPC npc = Main.npc[(int) this.ai[2]];
|
|
if (time1 != -1)
|
|
EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) this), time1, new WorldUIAnchor((Entity) npc));
|
|
if (time2 != -1 && npc.CanTalk)
|
|
EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) npc), time2, new WorldUIAnchor((Entity) this));
|
|
}
|
|
this.frame.Y = num1 * (flag ? num31 : num32);
|
|
if (this.frameCounter >= 420.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
if (num30 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
goto case 1;
|
|
}
|
|
else
|
|
goto case 1;
|
|
}
|
|
}
|
|
else if (this.CanTalk && ((double) this.ai[0] == 16.0 || (double) this.ai[0] == 17.0))
|
|
{
|
|
++this.frameCounter;
|
|
int num33 = this.frame.Y / num1;
|
|
switch (num5 - num33)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
bool flag = (double) this.ai[0] == 16.0;
|
|
int num34 = 0;
|
|
int time = -1;
|
|
if (this.frameCounter < 10.0)
|
|
num34 = 0;
|
|
else if (this.frameCounter < 16.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter < 22.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 28.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter < 34.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 40.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter == 40.0 && Main.netMode != 1)
|
|
time = 45;
|
|
else if (this.frameCounter < 70.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 76.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter < 82.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 88.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter < 94.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 100.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter == 100.0 && Main.netMode != 1)
|
|
time = 45;
|
|
else if (this.frameCounter < 130.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 136.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter < 142.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 148.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter < 154.0)
|
|
num34 = num5 - 4;
|
|
else if (this.frameCounter < 160.0)
|
|
num34 = num5 - 5;
|
|
else if (this.frameCounter == 160.0 && Main.netMode != 1)
|
|
time = 75;
|
|
else
|
|
num34 = this.frameCounter >= 220.0 ? (this.frameCounter >= 226.0 ? 0 : num5 - 5) : num5 - 4;
|
|
if (flag && time != -1)
|
|
{
|
|
int num35 = (int) this.localAI[2];
|
|
int num36 = (int) this.localAI[3];
|
|
int num37 = (int) Main.npc[(int) this.ai[2]].localAI[3];
|
|
int num38 = (int) Main.npc[(int) this.ai[2]].localAI[2];
|
|
int num39 = 3 - num35 - num36;
|
|
int num40 = 0;
|
|
if (this.frameCounter == 40.0)
|
|
num40 = 1;
|
|
if (this.frameCounter == 100.0)
|
|
num40 = 2;
|
|
if (this.frameCounter == 160.0)
|
|
num40 = 3;
|
|
int num41 = 3 - num40;
|
|
int num42 = -1;
|
|
int num43 = 0;
|
|
while (num42 < 0 && ++num43 < 100)
|
|
{
|
|
num42 = Main.rand.Next(2);
|
|
if (num42 == 0 && num38 >= num36)
|
|
num42 = -1;
|
|
if (num42 == 1 && num37 >= num35)
|
|
num42 = -1;
|
|
if (num42 == -1 && num41 <= num39)
|
|
num42 = 2;
|
|
}
|
|
if (num42 == 0)
|
|
{
|
|
++Main.npc[(int) this.ai[2]].localAI[3];
|
|
++num37;
|
|
}
|
|
if (num42 == 1)
|
|
{
|
|
++Main.npc[(int) this.ai[2]].localAI[2];
|
|
++num38;
|
|
}
|
|
int emoticon1 = Utils.SelectRandom<int>(Main.rand, 38, 37, 36);
|
|
int emoticon2 = emoticon1;
|
|
if (num42 == 0)
|
|
{
|
|
switch (emoticon1)
|
|
{
|
|
case 36:
|
|
emoticon2 = 38;
|
|
break;
|
|
case 37:
|
|
emoticon2 = 36;
|
|
break;
|
|
case 38:
|
|
emoticon2 = 37;
|
|
break;
|
|
}
|
|
}
|
|
else if (num42 == 1)
|
|
{
|
|
switch (emoticon1)
|
|
{
|
|
case 36:
|
|
emoticon2 = 37;
|
|
break;
|
|
case 37:
|
|
emoticon2 = 38;
|
|
break;
|
|
case 38:
|
|
emoticon2 = 36;
|
|
break;
|
|
}
|
|
}
|
|
if (num41 == 0)
|
|
{
|
|
if (num37 >= 2)
|
|
emoticon1 -= 3;
|
|
if (num38 >= 2)
|
|
emoticon2 -= 3;
|
|
}
|
|
EmoteBubble.NewBubble(emoticon1, new WorldUIAnchor((Entity) this), time);
|
|
EmoteBubble.NewBubble(emoticon2, new WorldUIAnchor((Entity) Main.npc[(int) this.ai[2]]), time);
|
|
}
|
|
this.frame.Y = num1 * (flag ? num34 : num34);
|
|
if (this.frameCounter >= 420.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
if (num33 != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
goto case 1;
|
|
}
|
|
else
|
|
goto case 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
if (this.type == 638)
|
|
{
|
|
int num44 = this.frame.Y / num1;
|
|
if (num44 > 7)
|
|
num44 = 0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num44;
|
|
if (num44 > 7)
|
|
num44 = 0;
|
|
}
|
|
this.frame.Y = num44 * num1;
|
|
break;
|
|
}
|
|
if (this.type == 140 || this.type == 489)
|
|
{
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
int num45 = 6;
|
|
if (this.type == 632)
|
|
num45 = 12;
|
|
if (this.type == 534)
|
|
num45 = 12;
|
|
if (this.type == 638)
|
|
num45 = 12;
|
|
if (this.type == 656)
|
|
num45 = 12;
|
|
if (this.type == 489)
|
|
{
|
|
num45 = 8;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
this.frameCounter += 0.5;
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
++this.frameCounter;
|
|
}
|
|
if (this.type == 462)
|
|
num45 = 9;
|
|
int num46 = num1 * 2;
|
|
if (this.type == 638)
|
|
num46 = num1 * 9;
|
|
if (this.type == 656)
|
|
num46 = num1;
|
|
if (this.frame.Y < num46)
|
|
this.frame.Y = num46;
|
|
if (this.frameCounter > (double) num45)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - num4)
|
|
{
|
|
this.frame.Y = num46;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 462)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 * 2 : num1;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
if (this.type == 489 || this.type == 21 || this.type == 31 || this.type == 294 || this.type == 326 || this.type == 295 || this.type == 296 || this.type == 44 || this.type == 77 || this.type == 120 || this.type == 140 || this.type == 159 || this.type == 167 || this.type == 197 || this.type == 201 || this.type == 202)
|
|
this.frame.Y = 0;
|
|
if (this.type == 638)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
if (this.frameCounter <= 8.0)
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
if (this.frameCounter <= 12.0)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
if (this.frameCounter <= 16.0)
|
|
{
|
|
this.frame.Y = num1 * 7;
|
|
break;
|
|
}
|
|
if (this.frameCounter <= 20.0)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 9;
|
|
this.frameCounter = 100.0;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter <= 4.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter <= 8.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter <= 12.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frameCounter >= 16.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
case 29:
|
|
case 32:
|
|
case 45:
|
|
case 172:
|
|
case 281:
|
|
case 282:
|
|
case 283:
|
|
case 284:
|
|
case 285:
|
|
case 286:
|
|
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 * 2;
|
|
break;
|
|
}
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 34:
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 42:
|
|
case 231:
|
|
case 232:
|
|
case 233:
|
|
case 234:
|
|
case 235:
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 2.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 4.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 43:
|
|
case 56:
|
|
case 175:
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 46:
|
|
case 47:
|
|
case 303:
|
|
case 337:
|
|
case 443:
|
|
case 464:
|
|
case 540:
|
|
case 614:
|
|
case 646:
|
|
case 647:
|
|
case 648:
|
|
case 649:
|
|
case 650:
|
|
case 651:
|
|
case 652:
|
|
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;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
break;
|
|
case 48:
|
|
case 49:
|
|
case 51:
|
|
case 60:
|
|
case 82:
|
|
case 93:
|
|
case 137:
|
|
case 182:
|
|
case 210:
|
|
case 211:
|
|
case 253:
|
|
case 316:
|
|
case 634:
|
|
case 662:
|
|
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;
|
|
}
|
|
if (this.type == 634 && Main.rand.Next(10) == 0)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 165, this.velocity.X, this.velocity.Y, 50);
|
|
Main.dust[index].velocity *= 0.1f;
|
|
Main.dust[index].noGravity = true;
|
|
}
|
|
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;
|
|
if (this.type == 210 || this.type == 211)
|
|
{
|
|
++this.frameCounter;
|
|
this.rotation = this.velocity.X * 0.2f;
|
|
}
|
|
++this.frameCounter;
|
|
int num47 = 6;
|
|
int num48 = Main.npcFrameCount[this.type];
|
|
if (this.type == 49 || this.type == 51 || this.type == 60 || this.type == 634)
|
|
--num48;
|
|
if (this.type == 48)
|
|
num47 = 5;
|
|
if (this.frameCounter >= (double) num47)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * num48)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 50:
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
if (this.frame.Y < num1 * 4)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (++this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y >= num1 * 5)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 55:
|
|
case 57:
|
|
case 58:
|
|
case 102:
|
|
case 241:
|
|
case 465:
|
|
case 592:
|
|
case 607:
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.wet)
|
|
{
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
int num49 = 5;
|
|
int num50 = 5;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= (double) (num49 * num50))
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = ((int) (this.frameCounter / (double) num49) + 1) * num1;
|
|
break;
|
|
case 62:
|
|
case 66:
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
int num51 = 5;
|
|
int num52 = 5;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= (double) (num51 * num52))
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (int) (this.frameCounter / (double) num51) * num1;
|
|
break;
|
|
case 63:
|
|
case 64:
|
|
case 103:
|
|
case 242:
|
|
case 256:
|
|
if ((this.type == 63 || this.type == 64 || this.type == 103 || this.type == 242) && (double) this.ai[1] == 1.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 6)
|
|
this.frame.Y = num1 * 4;
|
|
if (this.frame.Y >= num1 * 4)
|
|
return;
|
|
this.frame.Y = num1 * 4;
|
|
return;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frameCounter >= 23.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
case 65:
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.wet && this.type == 65)
|
|
{
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
case 67:
|
|
case 217:
|
|
case 218:
|
|
case 219:
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1);
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 74:
|
|
case 297:
|
|
case 298:
|
|
case 442:
|
|
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;
|
|
break;
|
|
}
|
|
int num53 = Main.npcFrameCount[this.type] - 1;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * num53)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 83:
|
|
case 84:
|
|
case 179:
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 85:
|
|
case 341:
|
|
case 629:
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
int num54 = 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) (num54 * 4))
|
|
this.frameCounter = (double) (num54 * 4);
|
|
if (this.frameCounter < (double) num54)
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < (double) (num54 * 2))
|
|
this.frame.Y = num1 * 2;
|
|
else if (this.frameCounter < (double) (num54 * 3))
|
|
this.frame.Y = num1 * 3;
|
|
else if (this.frameCounter < (double) (num54 * 4))
|
|
this.frame.Y = num1 * 4;
|
|
else if (this.frameCounter < (double) (num54 * 5))
|
|
this.frame.Y = num1 * 5;
|
|
else if (this.frameCounter < (double) (num54 * 6))
|
|
this.frame.Y = num1 * 4;
|
|
else if (this.frameCounter < (double) (num54 * 7))
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
if (this.frameCounter >= (double) (num54 * 8))
|
|
this.frameCounter = (double) num54;
|
|
}
|
|
}
|
|
if ((double) this.ai[3] == 2.0 || this.IsABestiaryIconDummy && this.type == 85)
|
|
{
|
|
this.frame.Y += num1 * 6;
|
|
break;
|
|
}
|
|
if ((double) this.ai[3] == 3.0)
|
|
{
|
|
this.frame.Y += num1 * 12;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 94:
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter >= 23.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 110:
|
|
case 214:
|
|
case 215:
|
|
case 216:
|
|
case 293:
|
|
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;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
case 111:
|
|
case 291:
|
|
case 292:
|
|
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;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
case 113:
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = 0;
|
|
this.frameCounter = -60.0;
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 122:
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = this.velocity.X * 0.05f;
|
|
if ((double) this.ai[3] > 0.0)
|
|
{
|
|
int num55 = (int) ((double) this.ai[3] / 8.0);
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (num55 + 3) * num1;
|
|
break;
|
|
}
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case (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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 135:
|
|
this.frame.Y = (double) this.ai[2] != 0.0 ? num1 : 0;
|
|
break;
|
|
case 141:
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
case 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;
|
|
break;
|
|
}
|
|
if ((double) this.ai[2] < 8.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if ((double) this.ai[2] < 12.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if ((double) this.ai[2] < 16.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
case 148:
|
|
case 149:
|
|
case 168:
|
|
case 470:
|
|
int num56 = 0;
|
|
if ((double) this.localAI[0] == 2.0)
|
|
num56 = 3;
|
|
if ((double) this.localAI[0] == 3.0)
|
|
num56 = 6;
|
|
if ((double) this.localAI[0] == 4.0)
|
|
num56 = 9;
|
|
int num57 = num56 * num1;
|
|
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 = num57;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = num57;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1 + num57;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 15.0)
|
|
{
|
|
this.frame.Y = num1 * 2 + num57;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2 + num57;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2 + num57;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2 + num57;
|
|
break;
|
|
}
|
|
break;
|
|
case 150:
|
|
case 151:
|
|
case 152:
|
|
case 158:
|
|
case 226:
|
|
if (this.type == 151)
|
|
{
|
|
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;
|
|
}
|
|
if (this.type == 150 && Main.rand.Next(10) == 0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 67, this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 90, Scale: 1.5f);
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 0.2f;
|
|
Main.dust[index].noLight = true;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
case 155:
|
|
int num58 = this.frame.Y / num1;
|
|
if (this.IsABestiaryIconDummy && num58 < 3)
|
|
num58 = 3;
|
|
if ((double) this.velocity.Y < 0.0)
|
|
num58 = 10;
|
|
else if ((double) this.velocity.Y > 0.0)
|
|
num58 = 11;
|
|
else if ((double) this.velocity.X == 0.0)
|
|
{
|
|
num58 = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else if ((this.direction > 0 && (double) this.velocity.X < 0.0 || this.direction < 0 && (double) this.velocity.X > 0.0) && (double) Math.Abs(this.velocity.X) < 4.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (num58 > 2)
|
|
{
|
|
num58 = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (num58 < 2)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num58;
|
|
}
|
|
}
|
|
else
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
this.spriteDirection = (double) this.velocity.X < 0.0 ? -1 : 1;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.400000005960464;
|
|
if (num58 == 10 || num58 == 11)
|
|
{
|
|
num58 = 12;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else if (this.frameCounter > 8.0)
|
|
{
|
|
this.frameCounter -= 8.0;
|
|
++num58;
|
|
if (num58 > 9)
|
|
num58 = 3;
|
|
}
|
|
}
|
|
this.frame.Y = num58 * num1;
|
|
break;
|
|
case 156:
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 20.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (int) this.frameCounter / 4 * num1;
|
|
break;
|
|
case 157:
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (!this.wet)
|
|
++this.frameCounter;
|
|
int num59 = 5;
|
|
if (this.frameCounter < (double) num59)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num59 * 2))
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num59 * 3))
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num59 * 4))
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num59 * 5))
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num59 * 6))
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num59 * 7))
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num59 * 8))
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 163:
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frameCounter = -12.0;
|
|
this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 * 6 : num1 * 5;
|
|
break;
|
|
}
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186;
|
|
if (this.frameCounter < -6.0)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 0.0)
|
|
{
|
|
this.frame.Y = num1 * 7;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 164:
|
|
case 239:
|
|
case 530:
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.velocity.Y >= 0.0 ? 0 : num1 * 4;
|
|
break;
|
|
}
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 165:
|
|
case 237:
|
|
case 238:
|
|
case 240:
|
|
case 531:
|
|
float num60 = 0.5f;
|
|
if (this.type == 531)
|
|
num60 = 0.4f;
|
|
this.frameCounter += ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y)) * (double) num60;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 166:
|
|
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.frameCounter += 2.0;
|
|
if (this.frameCounter > 7.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 5)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 9.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 12)
|
|
this.frame.Y = num1 * 7;
|
|
if (this.frame.Y / num1 < 7)
|
|
{
|
|
this.frame.Y = num1 * 7;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
case 170:
|
|
case 171:
|
|
case 180:
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 14)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 174:
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = (double) this.velocity.Y != 0.0 ? ((double) this.velocity.Y >= -1.5 ? ((double) this.velocity.Y <= 1.5 ? num1 * 2 : num1 * 3) : num1) : 0;
|
|
break;
|
|
case 176:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 177:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 10.0)
|
|
{
|
|
this.frameCounter = 30.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
case 195:
|
|
this.frame.Y = (double) this.ai[0] >= 3.0 ? ((double) this.ai[0] >= 6.0 ? ((double) this.ai[0] >= 9.0 ? ((double) this.ai[0] >= 12.0 ? ((double) this.ai[0] >= 15.0 ? num1 * 5 : num1 * 4) : num1 * 3) : num1 * 2) : num1) : 0;
|
|
break;
|
|
case 199:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
}
|
|
if (this.frame.Y < num1 * 3)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter > 12.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 205:
|
|
this.frameCounter += 0.5;
|
|
if (this.frameCounter < 2.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 4.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 206:
|
|
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;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
case 220:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 10.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 221:
|
|
if ((double) this.localAI[2] == 1.0)
|
|
{
|
|
if ((double) this.localAI[0] == 1.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.localAI[0] = 0.0f;
|
|
}
|
|
++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 = num1 * Main.npcFrameCount[this.type] - num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 13.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 222:
|
|
++this.frameCounter;
|
|
if ((double) this.localAI[0] == 1.0)
|
|
{
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y < num1 * 4)
|
|
this.frame.Y = num1 * 4;
|
|
if (this.frame.Y >= num1 * 12)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
break;
|
|
case 224:
|
|
case 587:
|
|
if ((double) this.velocity.X > 0.0)
|
|
{
|
|
this.spriteDirection = 1;
|
|
this.rotation = this.velocity.Y * 0.2f;
|
|
}
|
|
if ((double) this.velocity.X < 0.0)
|
|
{
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) (-(double) this.velocity.Y * 0.200000002980232);
|
|
}
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 230:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
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;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 10.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
if ((double) this.velocity.Y > 4.0)
|
|
{
|
|
this.rotation -= this.velocity.Y * 0.01f;
|
|
break;
|
|
}
|
|
break;
|
|
case 236:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
else
|
|
this.frame.Y = 0;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 || (double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 243:
|
|
if (this.frameCounter < 0.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter < -12.0)
|
|
{
|
|
if (this.frame.Y > num1 * 9)
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frameCounter < -6.0)
|
|
{
|
|
if (this.frame.Y > num1 * 9)
|
|
{
|
|
this.frame.Y = num1 * 12;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frameCounter < 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y > num1 * 9)
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = -18.0;
|
|
this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 * 13 : num1 * 14;
|
|
break;
|
|
}
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X * 1.1f);
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 9)
|
|
this.frame.Y = 0;
|
|
}
|
|
if ((double) this.velocity.Y < -2.0 || (double) this.velocity.Y > 5.0)
|
|
{
|
|
this.frameCounter = -18.0;
|
|
break;
|
|
}
|
|
break;
|
|
case 244:
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 245:
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.frame.Y = (double) this.ai[1] >= -16.0 ? ((double) this.ai[1] >= -12.0 ? ((double) this.ai[1] >= -8.0 ? ((double) this.ai[1] >= -4.0 ? ((double) this.ai[1] >= 0.0 ? 0 : num1 * 4) : num1 * 3) : num1 * 2) : num1) : 0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.frame.Y = 1;
|
|
break;
|
|
}
|
|
break;
|
|
case 246:
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.frame.Y = (double) this.localAI[0] != 1.0 ? 0 : num1;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.frame.Y = (double) this.localAI[0] != 1.0 ? 0 : num1;
|
|
if ((double) this.localAI[1] == -1.0)
|
|
this.frame.Y += num1 * 4;
|
|
if ((double) this.localAI[1] == 1.0)
|
|
{
|
|
this.frame.Y += num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 249:
|
|
this.frame.Y = (double) this.localAI[0] != 1.0 ? 0 : num1;
|
|
if (++this.frameCounter >= 16.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
case 250:
|
|
case 264:
|
|
case 268:
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 252:
|
|
case 301:
|
|
if (this.type == 301)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.spriteDirection = -this.direction;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X > 0.5)
|
|
this.spriteDirection = -1;
|
|
if ((double) this.velocity.X < -0.5)
|
|
this.spriteDirection = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.X > 0.5)
|
|
this.spriteDirection = 1;
|
|
if ((double) this.velocity.X < -0.5)
|
|
this.spriteDirection = -1;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 4 || this.frame.Y == 0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 257:
|
|
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 * 4;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 16.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 32.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 258:
|
|
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;
|
|
if (this.frameCounter > 1.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 5 || this.frame.Y < num1 * 3)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 16.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 262:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.life > this.lifeMax / 2)
|
|
{
|
|
if (this.frame.Y > num1 * 3)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 4)
|
|
this.frame.Y = num1 * 4;
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
break;
|
|
case 263:
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.frame.Y > 0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y -= num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y < 2)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 266:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if ((double) this.ai[0] >= 0.0)
|
|
{
|
|
if (this.frame.Y > num1 * 3)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 4)
|
|
this.frame.Y = num1 * 4;
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
break;
|
|
case 269:
|
|
case 270:
|
|
case 271:
|
|
case 272:
|
|
case 273:
|
|
case 274:
|
|
case 275:
|
|
case 276:
|
|
case 277:
|
|
case 278:
|
|
case 279:
|
|
case 280:
|
|
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;
|
|
break;
|
|
}
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
case 288:
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 289:
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 4.0)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
if (this.frameCounter > 12.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if ((double) this.ai[3] == 1.0)
|
|
{
|
|
this.frame.Y += num1 * 3;
|
|
break;
|
|
}
|
|
break;
|
|
case 290:
|
|
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.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 9 : num1 * 10) : num1 * 11;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 8)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 299:
|
|
case 538:
|
|
case 539:
|
|
case 639:
|
|
case 640:
|
|
case 641:
|
|
case 642:
|
|
case 643:
|
|
case 644:
|
|
case 645:
|
|
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;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
break;
|
|
case 300:
|
|
case 447:
|
|
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.frameCounter;
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 1)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 305:
|
|
case 306:
|
|
case 307:
|
|
case 308:
|
|
case 309:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
this.frame.Y = (double) this.velocity.Y >= -3.0 ? ((double) this.velocity.Y > 0.0 ? ((double) this.velocity.Y >= 2.0 ? num1 : num1 * 3) : 0) : num1 * 5;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
break;
|
|
case 315:
|
|
if ((double) this.velocity.Y == 0.0 || this.wet)
|
|
this.spriteDirection = (double) this.velocity.X >= -1.0 ? ((double) this.velocity.X <= 1.0 ? this.direction : 1) : -1;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 > 10)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 325:
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y < num1 * 5)
|
|
this.frame.Y = num1 * 5;
|
|
if (this.frame.Y > num1 * 9)
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
break;
|
|
case 327:
|
|
if ((double) this.ai[3] == 0.0)
|
|
{
|
|
if (this.frame.Y > num1 * 5)
|
|
++this.frameCounter;
|
|
else if (this.frame.Y > 0)
|
|
--this.frameCounter;
|
|
}
|
|
else if ((double) this.ai[3] == 1.0)
|
|
{
|
|
if (this.frame.Y > num1 * 10)
|
|
++this.frameCounter;
|
|
else if (this.frame.Y > num1 * 4)
|
|
--this.frameCounter;
|
|
else if (this.frame.Y < num1 * 4)
|
|
++this.frameCounter;
|
|
}
|
|
else if ((double) this.ai[3] == 2.0)
|
|
{
|
|
if (this.frame.Y < num1 * 2)
|
|
--this.frameCounter;
|
|
else if (this.frame.Y > num1 * 8)
|
|
--this.frameCounter;
|
|
else if (this.frame.Y < num1 * 8)
|
|
++this.frameCounter;
|
|
}
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 11)
|
|
this.frame.Y = 0;
|
|
}
|
|
if (this.frameCounter < 0.0)
|
|
{
|
|
this.frameCounter = 6.0;
|
|
this.frame.Y -= num1;
|
|
if (this.frame.Y < 0)
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 329:
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.400000005960464;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
if (this.frame.Y > num1 * 9)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 330:
|
|
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.15f;
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 343:
|
|
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 = num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
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 = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 : 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 344:
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 9)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Max(1f, Math.Abs(this.velocity.X) * 0.75f);
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 9)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 345:
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.frame.Y = (double) this.ai[3] < 0.0 ? ((double) this.velocity.X >= 0.0 ? num1 * 2 : num1) : 0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 4)
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frame.Y < num1 * 3)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
break;
|
|
case 346:
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 2.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 8)
|
|
this.frame.Y = num1 * 6;
|
|
if (this.frame.Y < num1 * 6)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
ref int local = ref this.frame.Y;
|
|
local = local;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) / 2.0;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 5)
|
|
this.frame.Y = num1;
|
|
if (this.frame.Y < num1)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 347:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 1.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 3)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 348:
|
|
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.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 349:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 3.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 350:
|
|
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;
|
|
break;
|
|
}
|
|
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 > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = num1 * 7;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
case 351:
|
|
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;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
++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 = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 : num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 352:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 3.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 5)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 355:
|
|
case 358:
|
|
case 654:
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 4.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter >= 7.0)
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if ((double) this.localAI[2] <= 0.0)
|
|
{
|
|
this.frame.Y += num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
case 356:
|
|
case 444:
|
|
case 653:
|
|
case 661:
|
|
int num61 = 7;
|
|
this.rotation = this.velocity.X * 0.3f;
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter = this.frameCounter + 1.0 + ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y)) / 2.0;
|
|
if (this.frameCounter < (double) num61)
|
|
this.frame.Y = 0;
|
|
else if (this.frameCounter < (double) (num61 * 2))
|
|
this.frame.Y = num1;
|
|
else if (this.frameCounter < (double) (num61 * 3))
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter >= (double) (num61 * 4 - 1))
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.type != 444 && this.type != 653 && this.type != 661)
|
|
{
|
|
this.frame.Y += (int) ((double) (num1 * 3) * ((double) this.ai[2] - 1.0));
|
|
break;
|
|
}
|
|
break;
|
|
case 357:
|
|
case 448:
|
|
case 484:
|
|
case 606:
|
|
this.localAI[0] = -2f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 12.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.rotation += (float) this.direction * 0.1f;
|
|
this.frame.Y = num1;
|
|
}
|
|
int i1 = (int) this.Center.X / 16;
|
|
int j1 = (int) this.position.Y / 16;
|
|
Tile tileSafely1 = Framing.GetTileSafely(i1, j1);
|
|
if (tileSafely1 != null)
|
|
{
|
|
if (tileSafely1.slope() == (byte) 0)
|
|
{
|
|
int j2 = j1 + 1;
|
|
tileSafely1 = Framing.GetTileSafely(i1, j2);
|
|
}
|
|
if (tileSafely1.slope() == (byte) 1)
|
|
{
|
|
this.rotation = 0.785f;
|
|
this.localAI[0] = 0.0f;
|
|
break;
|
|
}
|
|
if (tileSafely1.slope() == (byte) 2)
|
|
{
|
|
this.rotation = -0.785f;
|
|
this.localAI[0] = 0.0f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 359:
|
|
case 360:
|
|
case 655:
|
|
if ((double) this.velocity.Y > 1.0)
|
|
{
|
|
++this.frameCounter;
|
|
int num62 = 6;
|
|
if (this.frameCounter < (double) num62)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 5;
|
|
if (this.frameCounter >= (double) (num62 * 2 - 1))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
int num63 = 10;
|
|
if (this.frameCounter < (double) num63)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num63 * 2))
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num63 * 3))
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num63 * 4))
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num63 * 5))
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
if (this.frameCounter >= (double) (num63 * 6 - 1))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
case 361:
|
|
case 445:
|
|
this.spriteDirection = this.direction;
|
|
if (this.wet)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.velocity.X > 0.25 || (double) this.velocity.X < -0.25 ? num1 * 10 : ((double) this.velocity.X > 0.150000005960464 || (double) this.velocity.X < -0.150000005960464 ? num1 * 11 : num1 * 12);
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 5)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
int num64 = 6;
|
|
if (this.frameCounter < (double) num64)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num64 * 2))
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num64 * 3))
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 9;
|
|
if (this.frameCounter >= (double) (num64 * 4 - 1))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = (double) this.velocity.Y <= 0.0 ? num1 * 8 : num1 * 9;
|
|
break;
|
|
case 362:
|
|
case 364:
|
|
case 608:
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 10)
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frame.Y < num1 * 3)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
break;
|
|
case 363:
|
|
case 365:
|
|
case 609:
|
|
this.spriteDirection = this.direction;
|
|
if (this.wet)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 2)
|
|
this.frame.Y = num1;
|
|
if (this.frame.Y < num1)
|
|
this.frame.Y = num1;
|
|
this.rotation = 0.0f;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
this.rotation = 0.0f;
|
|
break;
|
|
}
|
|
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 = num1 * 11;
|
|
if (this.frame.Y < num1 * 11)
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
break;
|
|
case 366:
|
|
case 367:
|
|
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;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
case 370:
|
|
if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 5.0)
|
|
{
|
|
int num65 = 5;
|
|
if ((double) this.ai[0] == 5.0)
|
|
num65 = 4;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > (double) num65)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y >= num1 * 6)
|
|
this.frame.Y = 0;
|
|
}
|
|
if ((double) this.ai[0] == 1.0 || (double) this.ai[0] == 6.0)
|
|
this.frame.Y = (double) this.ai[2] >= 10.0 ? num1 * 7 : num1 * 6;
|
|
if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 7.0)
|
|
this.frame.Y = (double) this.ai[2] >= 10.0 ? num1 * 7 : num1 * 6;
|
|
if ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 8.0 || (double) this.ai[0] == -1.0)
|
|
{
|
|
int num66 = 90;
|
|
if ((double) this.ai[2] < (double) (num66 - 30) || (double) this.ai[2] > (double) (num66 - 10))
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y >= num1 * 6)
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
if ((double) this.ai[2] > (double) (num66 - 20) && (double) this.ai[2] < (double) (num66 - 15))
|
|
this.frame.Y = num1 * 7;
|
|
}
|
|
}
|
|
if ((double) this.ai[0] == 4.0 || (double) this.ai[0] == 9.0)
|
|
{
|
|
int num67 = 180;
|
|
if ((double) this.ai[2] < (double) (num67 - 60) || (double) this.ai[2] > (double) (num67 - 20))
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y >= num1 * 6)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 6;
|
|
if ((double) this.ai[2] > (double) (num67 - 50) && (double) this.ai[2] < (double) (num67 - 25))
|
|
{
|
|
this.frame.Y = num1 * 7;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 371:
|
|
case 372:
|
|
case 373:
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 374:
|
|
this.localAI[0] = -2f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.rotation += (float) this.direction * 0.1f;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 3.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 375:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 376:
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 30.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 2)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 377:
|
|
case 446:
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1)
|
|
this.frame.Y = 0;
|
|
}
|
|
else
|
|
this.frame.Y = (double) this.velocity.Y == 0.0 ? 0 : num1;
|
|
this.spriteDirection = this.direction;
|
|
break;
|
|
case 378:
|
|
if ((double) this.velocity.Y != 0.0 && this.frame.Y < num1 * 2)
|
|
this.frame.Y += num1 * 2;
|
|
if ((double) this.velocity.Y == 0.0 && this.frame.Y > num1 * 2)
|
|
this.frame.Y -= num1 * 2;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if ((double) this.velocity.Y != 0.0 && this.frame.Y >= num1 * 4)
|
|
this.frame.Y = num1 * 2;
|
|
if ((double) this.velocity.Y == 0.0 && this.frame.Y >= num1 * 2)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 379:
|
|
case 380:
|
|
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 + 2);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 7)
|
|
this.frame.Y = num1 * 7;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 381:
|
|
case 382:
|
|
case 383:
|
|
case 385:
|
|
case 389:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
if (this.type == 389 || this.type == 385)
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.2;
|
|
else
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
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;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 386:
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
int num68 = (int) this.ai[2] / 12;
|
|
this.frame.Y = num1 * (9 + num68 % 2);
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= 9)
|
|
this.frame.Y = num1 * 2;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 387:
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if ((double) this.ai[0] >= 20.0)
|
|
++this.frameCounter;
|
|
if ((double) this.ai[0] >= 40.0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 10.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 2)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 15.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 2)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 388:
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 2)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 390:
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++this.localAI[3];
|
|
if ((double) this.localAI[3] >= (double) Main.npcFrameCount[391])
|
|
this.localAI[3] = 0.0f;
|
|
}
|
|
}
|
|
if (this.direction != 0)
|
|
this.spriteDirection = -this.direction;
|
|
this.frame.Y = (double) this.ai[2] <= 0.0 ? num1 * 2 : num1 * ((int) this.ai[2] - 1);
|
|
break;
|
|
case 391:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = -1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = 1;
|
|
if (this.frame.Y < num1)
|
|
this.frame.Y = num1;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
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;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
case 392:
|
|
float num69 = 20f;
|
|
float num70 = 240f;
|
|
bool flag1 = (double) this.ai[3] >= (double) num69 && (double) this.ai[3] < (double) num69 + (double) num70;
|
|
++this.frameCounter;
|
|
if (flag1)
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 12.0)
|
|
this.frameCounter = 0.0;
|
|
int num71 = (int) this.frameCounter % 12 / 3;
|
|
this.frame.Y = num1 * num71;
|
|
break;
|
|
case 393:
|
|
Vector2 rotationVector2 = this.ai[2].ToRotationVector2();
|
|
int num72 = (double) rotationVector2.Y <= (double) Math.Abs(rotationVector2.X) * 2.0 ? ((double) rotationVector2.Y <= (double) Math.Abs(rotationVector2.X) * 1.5 ? ((double) Math.Abs(rotationVector2.X) <= (double) rotationVector2.Y * 2.0 ? ((double) Math.Abs(rotationVector2.X) <= (double) rotationVector2.Y * 1.5 ? ((double) rotationVector2.X > 0.0 ? 6 : 2) : ((double) rotationVector2.X > 0.0 ? 7 : 1)) : ((double) rotationVector2.X > 0.0 ? 8 : 0)) : ((double) rotationVector2.X > 0.0 ? 5 : 3)) : 4;
|
|
this.frame.Y = num1 * num72;
|
|
float num73 = 280f;
|
|
float num74 = 140f;
|
|
if ((double) this.ai[3] >= (double) num73 && (double) this.ai[3] < (double) num73 + (double) num74 && (int) this.ai[3] % 6 <= 2)
|
|
{
|
|
this.frame.Y += num1 * 9;
|
|
break;
|
|
}
|
|
break;
|
|
case 394:
|
|
int num75 = (int) this.ai[3] - 300;
|
|
if (num75 >= 120)
|
|
{
|
|
int num76 = num75 - 120;
|
|
this.frame.Y = num76 < 160 ? (num76 < 20 ? num1 * (4 + num76 / 5) : num1 * (num76 / 4 % 4)) : num1 * (7 - (num76 - 160) / 5);
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
case 395:
|
|
float num77 = 20f;
|
|
float num78 = 240f;
|
|
bool flag2 = (double) this.ai[3] >= (double) num77 && (double) this.ai[3] < (double) num77 + (double) num78;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 66.0)
|
|
this.frameCounter = 0.0;
|
|
if (flag2)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 54.0 || this.frameCounter < 36.0)
|
|
this.frameCounter = 36.0;
|
|
}
|
|
int num79 = (int) this.frameCounter % 66 / 6;
|
|
this.frame.Y = num1 * num79;
|
|
break;
|
|
case 397:
|
|
int num80 = (int) this.frameCounter / 7;
|
|
this.frame.Y = num1 * num80;
|
|
break;
|
|
case 398:
|
|
if ((double) this.ai[0] <= 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y == 0)
|
|
{
|
|
Gore.NewGore(this.position + new Vector2(-10f, -15f), this.velocity, 619);
|
|
Gore.NewGore(this.position + new Vector2(10f, -15f), this.velocity, 620);
|
|
Gore.NewGore(this.position + new Vector2(-10f, 15f), this.velocity, 621);
|
|
Gore.NewGore(this.position + new Vector2(10f, 15f), this.velocity, 622);
|
|
for (int index = 0; index < 50; ++index)
|
|
{
|
|
this.frame.Y = num1;
|
|
Dust.NewDust(this.position, this.width, this.height, 209);
|
|
}
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 30.0)
|
|
this.frameCounter = 6.0;
|
|
int num81 = (int) this.frameCounter % 30 / 6;
|
|
this.frame.Y = num1 * num81;
|
|
break;
|
|
case 399:
|
|
this.frameCounter = (this.frameCounter + 0.25) % 4.0 + ((double) this.ai[0] == 0.0 ? 0.0 : 4.0);
|
|
this.frame.Y = num1 * (int) this.frameCounter;
|
|
break;
|
|
case 400:
|
|
++this.frameCounter;
|
|
if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 3.0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 16.0)
|
|
this.frameCounter = 0.0;
|
|
int num82 = (int) this.frameCounter % 16 / 4;
|
|
this.frame.Y = num1 * num82;
|
|
break;
|
|
case 405:
|
|
case 406:
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 407:
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 409:
|
|
if ((double) this.velocity.Y == 0.0 && (double) this.ai[1] <= 30.0 && (double) this.ai[1] > 0.0)
|
|
{
|
|
this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
if (++this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 2)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 410:
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 10.0)
|
|
{
|
|
this.frameCounter -= 10.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 411:
|
|
if ((double) this.ai[1] >= 90.0 && (double) this.ai[1] < 180.0)
|
|
{
|
|
this.spriteDirection = -this.direction;
|
|
this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = -this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
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] - 1)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 415:
|
|
if ((double) this.ai[2] < 0.0)
|
|
{
|
|
if (this.frame.Y / num1 != 8 && this.frame.Y / num1 != 9 && this.frame.Y / num1 != 0)
|
|
this.frameCounter = 0.0;
|
|
++this.frameCounter;
|
|
int num83 = 0;
|
|
int num84 = 18;
|
|
int num85 = 4;
|
|
if (this.frameCounter > (double) (num84 - num85 * 2))
|
|
num83 = 8 + (int) this.frameCounter / 4 % 2;
|
|
if (this.frameCounter > (double) (num84 + num85 * 6))
|
|
{
|
|
num83 = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
this.frame.Y = num1 * num83;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 2)
|
|
this.frame.Y = num1 * 2;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 416:
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y < num1 * 2 || this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (Main.netMode != 2 && !Main.dedServ)
|
|
{
|
|
int index = (int) this.ai[0];
|
|
if (Main.npc[index].active && Main.npc[index].type == 415 && TextureAssets.Npc[415].IsLoaded)
|
|
{
|
|
this.frame.Y = Main.npc[index].frame.Y / (TextureAssets.Npc[415].Height() / Main.npcFrameCount[415]) * num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 417:
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186;
|
|
this.frame.Y = (int) (this.frameCounter / 6.0) * num1;
|
|
if (this.frameCounter >= 48.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (9 + (int) ((double) this.ai[1] / 6.0));
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (13 - (int) ((double) this.ai[1] / 6.0));
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 14;
|
|
break;
|
|
case 418:
|
|
if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 1.0 || (double) this.ai[0] == -1.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 7 : num1 * 6) : num1 * 5;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == -2.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 12.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 419:
|
|
if ((double) this.ai[2] < 0.0)
|
|
{
|
|
int num86 = 1;
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y / num1 >= 9)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 < 2)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= (double) (num86 * 4 + 6))
|
|
this.frameCounter = 8.0;
|
|
this.frame.Y = this.frameCounter >= 6.0 ? num1 * (int) (4.0 + (this.frameCounter - 6.0) / (double) num86) : num1 * (int) (2.0 + this.frameCounter / 3.0);
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
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 = num1 * 9;
|
|
if (this.frame.Y / num1 < 9)
|
|
{
|
|
this.frame.Y = num1 * 9;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 420:
|
|
if (++this.frameCounter >= 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 421:
|
|
if ((double) this.ai[0] == 5.0)
|
|
++this.frameCounter;
|
|
if (++this.frameCounter >= 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 423:
|
|
if ((double) this.ai[2] == 1.0)
|
|
{
|
|
int num87 = 2;
|
|
if ((double) this.ai[1] >= 30.0 && (double) this.ai[1] < 45.0)
|
|
num87 = 3;
|
|
this.frame.Y = num87 * num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.spriteDirection = Math.Sign(-this.velocity.X);
|
|
if (this.frame.Y / num1 < 4)
|
|
this.frame.Y = num1 * 4;
|
|
this.frameCounter += 1.0 + (double) Math.Abs(this.velocity.X) / 2.0;
|
|
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 * 4;
|
|
break;
|
|
}
|
|
break;
|
|
case 424:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = -this.direction;
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
this.frame.Y = num1 * ((double) this.ai[1] > 90.0 ? Main.npcFrameCount[this.type] - 2 : Main.npcFrameCount[this.type] - 1);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
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] - 2)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 425:
|
|
if (this.direction != 0)
|
|
this.spriteDirection = -this.direction;
|
|
if ((double) this.ai[2] == 1.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 3.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 12 || this.frame.Y < num1 * 10)
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 9 || this.frame.Y < num1 * 2)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
case 426:
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.ai[1] >= 45.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 2.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 15 || this.frame.Y < num1 * 12)
|
|
{
|
|
this.frame.Y = num1 * 12;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 2.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 12 || this.frame.Y < num1 * 9)
|
|
{
|
|
this.frame.Y = num1 * 9;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 10.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 7 || this.frame.Y < num1)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 427:
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 2.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 9 || this.frame.Y < num1 * 6)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 5 || this.frame.Y < num1)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 428:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
if (++this.frameCounter > 10.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 != 4)
|
|
{
|
|
if (this.frameCounter > 0.0)
|
|
this.frameCounter = 0.0;
|
|
if (--this.frameCounter < -10.0 || (double) this.velocity.Y > 0.600000023841858)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 429:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
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 = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 430:
|
|
case 431:
|
|
case 432:
|
|
case 433:
|
|
case 434:
|
|
case 435:
|
|
case 436:
|
|
case 591:
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
this.frame.Y = (double) this.ai[2] >= 5.0 ? ((double) this.ai[2] >= 10.0 ? ((double) this.ai[2] >= 15.0 ? num1 * 6 : num1 * 5) : num1 * 4) : num1 * 3;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 16.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 32.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 437:
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 20.0)
|
|
this.frameCounter = 0.0;
|
|
int num88 = (int) this.frameCounter % 20 / 5;
|
|
this.frame.Y = num1 * num88;
|
|
break;
|
|
case 438:
|
|
++this.frameCounter;
|
|
if ((double) this.ai[1] == 1.0)
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 49.0)
|
|
this.frameCounter = 0.0;
|
|
int num89 = (int) this.frameCounter % 49 / 7;
|
|
if (num89 >= 4)
|
|
num89 = 6 - num89;
|
|
this.frame.Y = num1 * num89;
|
|
break;
|
|
case 439:
|
|
case 440:
|
|
int num90 = (int) this.localAI[2];
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y < num1 * 4 || this.frame.Y > num1 * 6)
|
|
this.frame.Y = num1 * 4;
|
|
}
|
|
else
|
|
{
|
|
switch (num90)
|
|
{
|
|
case 0:
|
|
if (this.frameCounter >= 15.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y != 0)
|
|
{
|
|
this.frame.Y = ((int) this.frameCounter / 5 + 4) * num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
if (this.frameCounter >= 15.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frame.Y != num1)
|
|
{
|
|
this.frame.Y = ((int) this.frameCounter / 5 + 10) * num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
if (this.frameCounter >= 15.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frame.Y != num1 * 2)
|
|
{
|
|
this.frame.Y = ((int) this.frameCounter / 5 + 7) * num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 10:
|
|
if (this.frameCounter >= 15.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = ((int) this.frameCounter / 5 + 4) * num1;
|
|
break;
|
|
case 11:
|
|
if (this.frameCounter >= 15.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = ((int) this.frameCounter / 5 + 10) * num1;
|
|
break;
|
|
case 12:
|
|
if (this.frameCounter >= 15.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = ((int) this.frameCounter / 5 + 7) * num1;
|
|
break;
|
|
case 13:
|
|
if (this.frameCounter >= 15.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = ((int) this.frameCounter / 5 + 13) * num1;
|
|
break;
|
|
}
|
|
}
|
|
++this.frameCounter;
|
|
break;
|
|
case 449:
|
|
case 450:
|
|
case 451:
|
|
case 452:
|
|
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;
|
|
int num91 = Main.npcFrameCount[this.type] - 5;
|
|
int num92 = 7;
|
|
int num93 = (double) this.ai[1] < 50.0 ? ((double) this.ai[1] < (double) (50 - num92) ? ((double) this.ai[1] < (double) (50 - num92 * 2) ? ((double) this.ai[1] < (double) (50 - num92 * 3) ? 0 : 4) : 3) : 2) : 1;
|
|
this.frame.Y = num1 * (num91 + num93);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= 15)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 454:
|
|
int num94 = (int) (this.frameCounter / 2.0);
|
|
this.frame.Y = num1 * num94;
|
|
break;
|
|
case 461:
|
|
if (this.wet)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
if (this.spriteDirection != this.direction)
|
|
{
|
|
this.rotation *= -1f;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
float num95 = (float) Math.Atan2((double) this.velocity.Y * (double) this.direction, (double) this.velocity.X * (double) this.direction);
|
|
if ((double) Math.Abs(this.rotation - num95) >= 3.14)
|
|
{
|
|
if ((double) num95 < (double) this.rotation)
|
|
this.rotation -= 6.28f;
|
|
else
|
|
this.rotation += 6.28f;
|
|
}
|
|
this.rotation = (float) (((double) this.rotation * 4.0 + (double) num95) / 5.0);
|
|
this.frameCounter += (double) Math.Abs(this.velocity.Length());
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 20)
|
|
{
|
|
this.frame.Y = num1 * 16;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 < 16)
|
|
{
|
|
this.frame.Y = num1 * 19;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.rotation > 3.14)
|
|
this.rotation -= 6.28f;
|
|
if ((double) this.rotation > -0.01 && (double) this.rotation < 0.01)
|
|
this.rotation = 0.0f;
|
|
else
|
|
this.rotation *= 0.9f;
|
|
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;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
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 > 15)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 466:
|
|
if (!this.IsABestiaryIconDummy && (double) this.ai[2] <= 0.0)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
this.frame.Y = (double) this.ai[2] != 0.0 ? ((double) this.ai[2] >= -8.0 ? num1 * 2 : num1) : 0;
|
|
break;
|
|
}
|
|
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 = num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 < 4)
|
|
this.frame.Y = num1 * 4;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 7.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 17)
|
|
this.frame.Y = num1 * 4;
|
|
if (this.frame.Y / num1 < 4)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
case 467:
|
|
if ((double) this.ai[0] == 1.0 || this.IsABestiaryIconDummy)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y < num1 * 6)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y > num1 * 3)
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frame.Y > 0)
|
|
{
|
|
this.frame.Y -= num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 468:
|
|
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;
|
|
int num96 = 0;
|
|
if ((double) this.ai[1] < 22.0)
|
|
num96 = -15;
|
|
else if ((double) this.ai[1] < 28.0)
|
|
num96 = 3;
|
|
else if ((double) this.ai[1] < 34.0)
|
|
num96 = 2;
|
|
else if ((double) this.ai[1] < 40.0)
|
|
num96 = 1;
|
|
this.frame.Y = num1 * (15 + num96);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= 15)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 469:
|
|
if ((double) this.ai[2] == 1.0)
|
|
{
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.Length());
|
|
if (this.frameCounter > 11.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 5)
|
|
this.frame.Y = num1 * 2;
|
|
if (this.frame.Y / num1 < 2)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.rotation = 0.0f;
|
|
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.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 9.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 11)
|
|
this.frame.Y = num1 * 6;
|
|
if (this.frame.Y / num1 < 6)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 471:
|
|
bool flag3 = false;
|
|
if ((double) this.ai[3] < 0.0)
|
|
flag3 = true;
|
|
if (flag3)
|
|
{
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.Length()) * 0.5;
|
|
++this.frameCounter;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = num1 * 17;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1 * 18;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 19;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 23.0)
|
|
{
|
|
this.frame.Y = num1 * 18;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 18;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[3] == 1.0)
|
|
{
|
|
this.frame.Y = num1 * 16;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
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;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 7.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 15)
|
|
this.frame.Y = num1 * 2;
|
|
if (this.frame.Y / num1 < 2)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 472:
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
else
|
|
this.direction = 1;
|
|
if (this.direction == 1)
|
|
this.spriteDirection = 1;
|
|
if (this.direction == -1)
|
|
this.spriteDirection = -1;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y * (double) this.direction, (double) this.velocity.X * (double) this.direction);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= 6)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 473:
|
|
case 474:
|
|
case 475:
|
|
case 476:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 7.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
this.frameCounter = 0.0;
|
|
int num97 = 6;
|
|
this.frame.Y = (double) this.ai[1] >= (double) num97 ? ((double) this.ai[1] >= (double) (num97 * 2) ? ((double) this.ai[1] >= (double) (num97 * 3) ? ((double) this.ai[1] >= (double) (num97 * 4) ? ((double) this.ai[1] >= (double) (num97 * 5) ? num1 * 6 : num1 * 5) : num1 * 4) : num1 * 3) : num1 * 2) : num1;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 6.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
int num98 = 6;
|
|
++this.frameCounter;
|
|
if (this.frame.Y < num1 * 7)
|
|
this.frame.Y = num1 * 12;
|
|
if (this.frame.Y < num1 * 10)
|
|
{
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y == num1 * 10)
|
|
{
|
|
this.frameCounter = (double) (num98 * 2);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) num98)
|
|
{
|
|
this.frame.Y = num1 * 12;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num98 * 2))
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num98 * 3))
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 11;
|
|
if (this.frameCounter >= (double) (num98 * 4 - 1))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 13;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 3.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y -= num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 4.0 || (double) this.ai[0] == 5.0)
|
|
{
|
|
if ((double) this.ai[0] == 4.0 && (double) this.ai[2] == 1.0)
|
|
this.rotation = 0.0f;
|
|
this.frame.Y = num1 * 13;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 4.09999990463257)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if (this.frame.Y > num1 * 6)
|
|
this.frameCounter = 0.0;
|
|
++this.frameCounter;
|
|
int num99 = 4;
|
|
if (this.frameCounter < (double) num99)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num99 * 2))
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num99 * 3))
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num99 * 4))
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num99 * 5))
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 5;
|
|
if (this.frameCounter >= (double) (num99 * 6 - 1))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 477:
|
|
this.frameCounter += (double) this.velocity.Length() / 4.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 6.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y / num1 > 5)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 479:
|
|
++this.frameCounter;
|
|
int num100 = 4;
|
|
if (this.frameCounter < (double) num100)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num100 * 2))
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num100 * 3))
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < (double) (num100 * 4 - 1))
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 480:
|
|
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.frameCounter;
|
|
if (this.frameCounter > 3.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= Main.npcFrameCount[this.type] * num1)
|
|
{
|
|
this.frame.Y = num1 * 21;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 21)
|
|
{
|
|
this.frame.Y = num1 * 21;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 7)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter += 1.0 + (double) Math.Abs(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] - 4)
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 < 10)
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
case 481:
|
|
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;
|
|
int num101 = 0;
|
|
if ((double) this.ai[1] < 22.0)
|
|
num101 = -14;
|
|
else if ((double) this.ai[1] < 28.0)
|
|
num101 = 3;
|
|
else if ((double) this.ai[1] < 34.0)
|
|
num101 = 2;
|
|
else if ((double) this.ai[1] < 40.0)
|
|
num101 = 1;
|
|
this.frame.Y = num1 * (15 + num101);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= 15)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
case 482:
|
|
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.frameCounter;
|
|
if (this.frameCounter > 3.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= Main.npcFrameCount[this.type] * num1)
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 11)
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += 0.200000002980232 + (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 10)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 < 2)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 483:
|
|
if ((double) this.ai[0] == -1.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 21)
|
|
this.frame.Y = num1 * 21;
|
|
else if (this.frame.Y < num1 * 13)
|
|
this.frame.Y = num1 * 13;
|
|
this.rotation += this.velocity.X * 0.2f;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 11)
|
|
this.frame.Y = 0;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
break;
|
|
case 485:
|
|
case 486:
|
|
case 487:
|
|
this.spriteDirection = this.direction;
|
|
this.localAI[0] = -2f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X * 5f);
|
|
if (this.frameCounter > 10.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 3)
|
|
this.frame.Y = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.rotation += (float) this.direction * 0.1f;
|
|
this.frame.Y = num1;
|
|
}
|
|
int i2 = (int) this.Center.X / 16;
|
|
int j3 = (int) this.position.Y / 16;
|
|
Tile tileSafely2 = Framing.GetTileSafely(i2, j3);
|
|
if (tileSafely2 != null)
|
|
{
|
|
if (tileSafely2.slope() == (byte) 0)
|
|
{
|
|
int j4 = j3 + 1;
|
|
tileSafely2 = Framing.GetTileSafely(i2, j4);
|
|
}
|
|
if (tileSafely2.slope() == (byte) 1)
|
|
{
|
|
this.rotation = 0.785f;
|
|
this.localAI[0] = 0.0f;
|
|
break;
|
|
}
|
|
if (tileSafely2.slope() == (byte) 2)
|
|
{
|
|
this.rotation = -0.785f;
|
|
this.localAI[0] = 0.0f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 488:
|
|
int num102 = (int) this.localAI[1];
|
|
if (Framing.GetTileSafely((int) this.ai[0], (int) this.ai[1]).frameX >= (short) 36)
|
|
num102 *= -1;
|
|
if ((double) this.localAI[0] > 24.0)
|
|
this.localAI[0] = 24f;
|
|
if ((double) this.localAI[0] > 0.0)
|
|
--this.localAI[0];
|
|
if ((double) this.localAI[0] < 0.0)
|
|
this.localAI[0] = 0.0f;
|
|
int num103 = num102 == -1 ? 4 : 6;
|
|
int num104 = (int) this.localAI[0] / num103;
|
|
if ((double) this.localAI[0] % (double) num103 != 0.0)
|
|
++num104;
|
|
if (num104 != 0 && num102 == 1)
|
|
num104 += 5;
|
|
this.frame.Y = num104 * num1;
|
|
break;
|
|
case 490:
|
|
this.rotation = this.velocity.X * 0.15f;
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 492:
|
|
this.frame.Y = num1 * (int) this.ai[2];
|
|
break;
|
|
case 494:
|
|
case 495:
|
|
if ((double) this.ai[2] > 0.0)
|
|
{
|
|
if ((double) this.ai[2] < 7.0)
|
|
{
|
|
this.frame.Y = num1 * 5;
|
|
break;
|
|
}
|
|
if ((double) this.ai[2] < 14.0)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
if ((double) this.ai[2] < 20.0)
|
|
{
|
|
this.frame.Y = num1 * 7;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
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 = (double) this.velocity.Y >= 0.0 ? num1 * 3 : num1 * 2;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter < 8.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 16.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 32.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 39.0)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * 4;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 496:
|
|
case 497:
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186;
|
|
if (this.frameCounter < 6.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 12.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 18.0)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
if (this.frameCounter < 24.0)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 6 : num1 * 5) : num1 * 4;
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 3 : num1 * 11) : num1 * 10;
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 7;
|
|
break;
|
|
case 498:
|
|
case 499:
|
|
case 500:
|
|
case 501:
|
|
case 502:
|
|
case 503:
|
|
case 504:
|
|
case 505:
|
|
case 506:
|
|
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 = (double) this.ai[1] >= 12.0 ? ((double) this.ai[1] >= 34.0 ? num1 * 8 : num1 * 9) : num1 * 8;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 7)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 10;
|
|
break;
|
|
case 508:
|
|
case 532:
|
|
case 580:
|
|
case 582:
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.direction < 0 && (double) this.velocity.X < 0.0)
|
|
this.spriteDirection = -1;
|
|
if (this.direction > 0 && (double) this.velocity.X > 0.0)
|
|
this.spriteDirection = 1;
|
|
if (this.frame.Y / num1 < 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += 1.0 + (double) Math.Abs(this.velocity.X) / 2.0;
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
case 509:
|
|
case 581:
|
|
if ((double) this.velocity.X > 0.0 && this.direction > 0 || (double) this.velocity.X < 0.0 && this.direction < 0)
|
|
this.spriteDirection = this.direction;
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 516:
|
|
if ((double) this.localAI[1] == 0.0)
|
|
{
|
|
this.localAI[1] = 1f;
|
|
this.frame.Y = num1 * Main.rand.Next(3);
|
|
this.frameCounter += (double) Main.rand.Next(3);
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 3.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 3)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 518:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
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 = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 520:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
if (this.frameCounter > 6.0)
|
|
{
|
|
if ((double) Math.Abs(this.velocity.X) < 0.200000002980232)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
this.frame.Y = num1;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 521:
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
else
|
|
this.direction = 1;
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
this.rotation = (float) Math.Atan2((double) this.velocity.Y * (double) this.spriteDirection, (double) this.velocity.X * (double) this.spriteDirection) + this.velocity.X * 0.1f;
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 523:
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 524:
|
|
case 525:
|
|
case 526:
|
|
case 527:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
if (this.frame.Y <= num1)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 9.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 528:
|
|
case 529:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if (this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 9.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1);
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
case 533:
|
|
if ((double) this.velocity.Y == 0.0 && this.direction != 0)
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 48.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (int) (this.frameCounter / 6.0) * num1;
|
|
if ((double) this.ai[1] > 0.0)
|
|
{
|
|
this.frame.Y += num1 * 8;
|
|
break;
|
|
}
|
|
break;
|
|
case 541:
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
float num105 = this.ai[0];
|
|
this.frame.Y = (double) num105 >= 6.0 ? ((double) num105 >= 105.0 ? ((double) num105 >= 114.0 ? ((double) num105 >= 135.0 ? num1 : num1 * (int) (((double) num105 - 99.0 - 15.0) / 7.0 + 10.0)) : num1 * 9) : num1 * (int) ((double) num105 / 8.0 % 4.0 + 5.0)) : num1 * 4;
|
|
break;
|
|
}
|
|
this.frameCounter = this.frameCounter + (double) this.velocity.Length() * 0.100000001490116 + 1.0;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 542:
|
|
case 543:
|
|
case 544:
|
|
case 545:
|
|
this.spriteDirection = this.direction;
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 16.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (int) (this.frameCounter / 4.0);
|
|
break;
|
|
case 549:
|
|
this.spriteDirection = 1;
|
|
this.rotation = 0.0f;
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 551:
|
|
int num106 = this.frame.Y / num1;
|
|
int num107;
|
|
if ((double) this.ai[0] == 4.0)
|
|
{
|
|
float num108 = 60f;
|
|
int num109 = 6 * 10;
|
|
if (num106 < 5)
|
|
this.frameCounter = 0.0;
|
|
num107 = 5;
|
|
this.frameCounter = (double) (int) this.ai[1];
|
|
int num110 = 0;
|
|
int num111;
|
|
if (this.frameCounter >= (double) (5 * (num111 = num110 + 1)))
|
|
num107 = 6;
|
|
num111 = 0;
|
|
if (this.frameCounter >= (double) num108 - 6.0)
|
|
num107 = 7;
|
|
if (this.frameCounter >= (double) num108 - 3.0)
|
|
num107 = 8;
|
|
if (this.frameCounter >= (double) num108)
|
|
num107 = 9 + (int) this.frameCounter / 3 % 2;
|
|
int num112 = 0;
|
|
if (this.frameCounter >= (double) num108 + (double) num109 + 3.0)
|
|
num107 = 8;
|
|
int num113;
|
|
if (this.frameCounter >= (double) num108 + (double) num109 + 3.0 + (double) (5 * (num113 = num112 + 1)))
|
|
num107 = 7;
|
|
if (this.frameCounter >= (double) num108 + (double) num109 + 3.0 + (double) (5 * (num111 = num113 + 1)))
|
|
num107 = 0;
|
|
}
|
|
else if ((double) this.ai[0] == 3.0)
|
|
{
|
|
float num114 = 40f;
|
|
float num115 = 80f;
|
|
float num116 = num114 + num115;
|
|
float num117 = 25f;
|
|
if (num106 < 5)
|
|
this.frameCounter = 0.0;
|
|
num107 = 5;
|
|
this.frameCounter = (double) (int) this.ai[1];
|
|
int num118 = 0;
|
|
int num119;
|
|
if (this.frameCounter >= (double) (5 * (num119 = num118 + 1)))
|
|
num107 = 6;
|
|
num119 = 0;
|
|
if (this.frameCounter >= (double) num114 - 6.0)
|
|
num107 = 7;
|
|
if (this.frameCounter >= (double) num114 - 3.0)
|
|
num107 = 8;
|
|
if (this.frameCounter >= (double) num114)
|
|
num107 = 9 + (int) this.frameCounter / 3 % 2;
|
|
int num120 = 0;
|
|
if (this.frameCounter >= (double) num116 - (double) num117 + 3.0)
|
|
num107 = 8;
|
|
int num121;
|
|
if (this.frameCounter >= (double) num116 - (double) num117 + 3.0 + (double) (5 * (num121 = num120 + 1)))
|
|
num107 = 7;
|
|
if (this.frameCounter >= (double) num116 - (double) num117 + 3.0 + (double) (5 * (num119 = num121 + 1)))
|
|
num107 = 0;
|
|
}
|
|
else if ((double) this.ai[0] == 5.0)
|
|
num107 = 3;
|
|
else if ((double) this.ai[0] == 6.0)
|
|
{
|
|
if (num106 > 4)
|
|
this.frameCounter = 0.0;
|
|
num107 = 1;
|
|
this.frameCounter = (double) (int) this.ai[1];
|
|
int num122 = 0;
|
|
int num123;
|
|
if (this.frameCounter >= (double) (8 * (num123 = num122 + 1)))
|
|
num107 = 2;
|
|
int num124;
|
|
if (this.frameCounter >= (double) (8 * (num124 = num123 + 1)))
|
|
num107 = 3;
|
|
int num125;
|
|
if (this.frameCounter >= (double) (8 * (num125 = num124 + 1)))
|
|
num107 = 4;
|
|
int num126;
|
|
if (this.frameCounter >= (double) (8 * (num126 = num125 + 1)))
|
|
num107 = 3;
|
|
int num127;
|
|
if (this.frameCounter >= (double) (8 * (num127 = num126 + 1)))
|
|
num107 = 4;
|
|
int num128;
|
|
if (this.frameCounter >= (double) (8 * (num128 = num127 + 1)))
|
|
num107 = 3;
|
|
int num129;
|
|
if (this.frameCounter >= (double) (8 * (num129 = num128 + 1)))
|
|
num107 = 2;
|
|
int num130;
|
|
if (this.frameCounter >= (double) (8 * (num130 = num129 + 1)))
|
|
num107 = 1;
|
|
int num131;
|
|
if (this.frameCounter >= (double) (8 * (num131 = num130 + 1)))
|
|
num107 = 0;
|
|
}
|
|
else
|
|
num107 = 0;
|
|
this.frame.Y = num1 * num107;
|
|
break;
|
|
case 552:
|
|
case 553:
|
|
case 554:
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 13 || (double) this.ai[1] == 29.0)
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (++this.frameCounter >= 6.0 && this.frame.Y < num1 * 13)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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 * 8;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 9;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 64.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (int) (this.frameCounter / 8.0);
|
|
break;
|
|
case 555:
|
|
case 556:
|
|
case 557:
|
|
if ((double) this.ai[1] > 0.0 && (double) this.ai[0] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 16 || (double) this.ai[1] == 41.0)
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (++this.frameCounter >= 6.0 && this.frame.Y < num1 * 16)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 64.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * ((int) (this.frameCounter / 8.0) + 2);
|
|
break;
|
|
case 558:
|
|
case 559:
|
|
case 560:
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.spriteDirection = 1;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.spriteDirection = -1;
|
|
float num132 = this.velocity.ToRotation();
|
|
if ((double) this.velocity.X < 0.0)
|
|
num132 += 3.141593f;
|
|
if ((double) this.ai[0] != 2.0)
|
|
num132 = this.velocity.X * 0.1f;
|
|
this.rotation = num132;
|
|
if ((double) this.ai[0] == 2.0)
|
|
{
|
|
this.frame.Y = num1 * 4;
|
|
break;
|
|
}
|
|
if (++this.frameCounter >= 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 561:
|
|
case 562:
|
|
case 563:
|
|
if ((double) this.ai[1] > 0.0 && (double) this.ai[0] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 13 || (double) this.ai[1] == 89.0)
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (++this.frameCounter >= 6.0 && this.frame.Y < num1 * 13)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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 * 8;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 9;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 64.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (int) (this.frameCounter / 8.0);
|
|
break;
|
|
case 564:
|
|
case 565:
|
|
int y = this.frame.Y;
|
|
this.frame.Width = 80;
|
|
this.frame.Height = 80;
|
|
int num133;
|
|
if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (y < 5 || y > 13)
|
|
this.frameCounter = 0.0;
|
|
num133 = 5;
|
|
++this.frameCounter;
|
|
int num134 = 0;
|
|
int num135;
|
|
if (this.frameCounter >= (double) (7 * (num135 = num134 + 1)))
|
|
num133 = 6;
|
|
int num136;
|
|
if (this.frameCounter >= (double) (7 * (num136 = num135 + 1)))
|
|
num133 = 7;
|
|
int num137;
|
|
if (this.frameCounter >= (double) (7 * (num137 = num136 + 1)))
|
|
num133 = 5;
|
|
int num138;
|
|
if (this.frameCounter >= (double) (7 * (num138 = num137 + 1)))
|
|
num133 = 6;
|
|
int num139;
|
|
if (this.frameCounter >= (double) (7 * (num139 = num138 + 1)))
|
|
num133 = 7;
|
|
int num140;
|
|
if (this.frameCounter >= (double) (7 * (num140 = num139 + 1)))
|
|
num133 = 5;
|
|
int num141;
|
|
if (this.frameCounter >= (double) (7 * (num141 = num140 + 1)))
|
|
num133 = 6;
|
|
int num142;
|
|
if (this.frameCounter >= (double) (7 * (num142 = num141 + 1)))
|
|
num133 = 7;
|
|
int num143;
|
|
if (this.frameCounter >= (double) (7 * (num143 = num142 + 1)))
|
|
num133 = 8;
|
|
int num144;
|
|
if (this.frameCounter >= (double) (7 * (num144 = num143 + 1)))
|
|
num133 = 9;
|
|
double frameCounter1 = this.frameCounter;
|
|
int num145 = num144 + 1;
|
|
int num146 = num145;
|
|
double num147 = (double) (7 * num145);
|
|
if (frameCounter1 >= num147)
|
|
num133 = 10;
|
|
double frameCounter2 = this.frameCounter;
|
|
int num148 = num146 + 1;
|
|
int num149 = num148;
|
|
double num150 = (double) (7 * num148);
|
|
if (frameCounter2 >= num150)
|
|
num133 = 11;
|
|
double frameCounter3 = this.frameCounter;
|
|
int num151 = num149 + 1;
|
|
int num152 = num151;
|
|
double num153 = (double) (7 * num151);
|
|
if (frameCounter3 >= num153)
|
|
num133 = 12;
|
|
if (this.frameCounter >= (double) (7 * (num152 + 1)))
|
|
{
|
|
num133 = 5;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 1.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (y < 13 || y > 25)
|
|
this.frameCounter = 0.0;
|
|
num133 = 13;
|
|
++this.frameCounter;
|
|
int num154 = 0;
|
|
double frameCounter4 = this.frameCounter;
|
|
int num155 = num154 + 1;
|
|
int num156 = num155;
|
|
double num157 = (double) (8 * num155);
|
|
if (frameCounter4 >= num157)
|
|
num133 = 14;
|
|
double frameCounter5 = this.frameCounter;
|
|
int num158 = num156 + 1;
|
|
int num159 = num158;
|
|
double num160 = (double) (8 * num158);
|
|
if (frameCounter5 >= num160)
|
|
num133 = 15;
|
|
double frameCounter6 = this.frameCounter;
|
|
int num161 = num159 + 1;
|
|
int num162 = num161;
|
|
double num163 = (double) (8 * num161);
|
|
if (frameCounter6 >= num163)
|
|
num133 = 16;
|
|
double frameCounter7 = this.frameCounter;
|
|
int num164 = num162 + 1;
|
|
int num165 = num164;
|
|
double num166 = (double) (8 * num164);
|
|
if (frameCounter7 >= num166)
|
|
num133 = 17;
|
|
double frameCounter8 = this.frameCounter;
|
|
int num167 = num165 + 1;
|
|
int num168 = num167;
|
|
double num169 = (double) (8 * num167);
|
|
if (frameCounter8 >= num169)
|
|
num133 = 18;
|
|
double frameCounter9 = this.frameCounter;
|
|
int num170 = num168 + 1;
|
|
int num171 = num170;
|
|
double num172 = (double) (8 * num170);
|
|
if (frameCounter9 >= num172)
|
|
num133 = 19;
|
|
double frameCounter10 = this.frameCounter;
|
|
int num173 = num171 + 1;
|
|
int num174 = num173;
|
|
double num175 = (double) (8 * num173);
|
|
if (frameCounter10 >= num175)
|
|
num133 = 20;
|
|
double frameCounter11 = this.frameCounter;
|
|
int num176 = num174 + 1;
|
|
int num177 = num176;
|
|
double num178 = (double) (8 * num176);
|
|
if (frameCounter11 >= num178)
|
|
num133 = 18;
|
|
double frameCounter12 = this.frameCounter;
|
|
int num179 = num177 + 1;
|
|
int num180 = num179;
|
|
double num181 = (double) (8 * num179);
|
|
if (frameCounter12 >= num181)
|
|
num133 = 19;
|
|
double frameCounter13 = this.frameCounter;
|
|
int num182 = num180 + 1;
|
|
int num183 = num182;
|
|
double num184 = (double) (8 * num182);
|
|
if (frameCounter13 >= num184)
|
|
num133 = 20;
|
|
double frameCounter14 = this.frameCounter;
|
|
int num185 = num183 + 1;
|
|
int num186 = num185;
|
|
double num187 = (double) (8 * num185);
|
|
if (frameCounter14 >= num187)
|
|
num133 = 21;
|
|
double frameCounter15 = this.frameCounter;
|
|
int num188 = num186 + 1;
|
|
int num189 = num188;
|
|
double num190 = (double) (8 * num188);
|
|
if (frameCounter15 >= num190)
|
|
num133 = 22;
|
|
double frameCounter16 = this.frameCounter;
|
|
int num191 = num189 + 1;
|
|
int num192 = num191;
|
|
double num193 = (double) (8 * num191);
|
|
if (frameCounter16 >= num193)
|
|
num133 = 23;
|
|
double frameCounter17 = this.frameCounter;
|
|
int num194 = num192 + 1;
|
|
int num195 = num194;
|
|
double num196 = (double) (8 * num194);
|
|
if (frameCounter17 >= num196)
|
|
num133 = 24;
|
|
double frameCounter18 = this.frameCounter;
|
|
int num197 = num195 + 1;
|
|
int num198 = num197;
|
|
double num199 = (double) (8 * num197);
|
|
if (frameCounter18 >= num199)
|
|
num133 = 25;
|
|
if (this.frameCounter >= (double) (8 * (num198 + 1)))
|
|
{
|
|
num133 = 14;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 2.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (y < 26 || y > 40)
|
|
this.frameCounter = 0.0;
|
|
num133 = 26;
|
|
++this.frameCounter;
|
|
int num200 = 0;
|
|
double frameCounter19 = this.frameCounter;
|
|
int num201 = num200 + 1;
|
|
int num202 = num201;
|
|
double num203 = (double) (8 * num201);
|
|
if (frameCounter19 >= num203)
|
|
num133 = 27;
|
|
double frameCounter20 = this.frameCounter;
|
|
int num204 = num202 + 1;
|
|
int num205 = num204;
|
|
double num206 = (double) (8 * num204);
|
|
if (frameCounter20 >= num206)
|
|
num133 = 28;
|
|
double frameCounter21 = this.frameCounter;
|
|
int num207 = num205 + 1;
|
|
int num208 = num207;
|
|
double num209 = (double) (8 * num207);
|
|
if (frameCounter21 >= num209)
|
|
num133 = 29;
|
|
double frameCounter22 = this.frameCounter;
|
|
int num210 = num208 + 1;
|
|
int num211 = num210;
|
|
double num212 = (double) (8 * num210);
|
|
if (frameCounter22 >= num212)
|
|
num133 = 26;
|
|
double frameCounter23 = this.frameCounter;
|
|
int num213 = num211 + 1;
|
|
int num214 = num213;
|
|
double num215 = (double) (8 * num213);
|
|
if (frameCounter23 >= num215)
|
|
num133 = 27;
|
|
double frameCounter24 = this.frameCounter;
|
|
int num216 = num214 + 1;
|
|
int num217 = num216;
|
|
double num218 = (double) (8 * num216);
|
|
if (frameCounter24 >= num218)
|
|
num133 = 28;
|
|
double frameCounter25 = this.frameCounter;
|
|
int num219 = num217 + 1;
|
|
int num220 = num219;
|
|
double num221 = (double) (8 * num219);
|
|
if (frameCounter25 >= num221)
|
|
num133 = 29;
|
|
double frameCounter26 = this.frameCounter;
|
|
int num222 = num220 + 1;
|
|
int num223 = num222;
|
|
double num224 = (double) (8 * num222);
|
|
if (frameCounter26 >= num224)
|
|
num133 = 26;
|
|
double frameCounter27 = this.frameCounter;
|
|
int num225 = num223 + 1;
|
|
int num226 = num225;
|
|
double num227 = (double) (8 * num225);
|
|
if (frameCounter27 >= num227)
|
|
num133 = 27;
|
|
double frameCounter28 = this.frameCounter;
|
|
int num228 = num226 + 1;
|
|
int num229 = num228;
|
|
double num230 = (double) (8 * num228);
|
|
if (frameCounter28 >= num230)
|
|
num133 = 28;
|
|
double frameCounter29 = this.frameCounter;
|
|
int num231 = num229 + 1;
|
|
int num232 = num231;
|
|
double num233 = (double) (8 * num231);
|
|
if (frameCounter29 >= num233)
|
|
num133 = 29;
|
|
double frameCounter30 = this.frameCounter;
|
|
int num234 = num232 + 1;
|
|
int num235 = num234;
|
|
double num236 = (double) (8 * num234);
|
|
if (frameCounter30 >= num236)
|
|
num133 = 30;
|
|
double frameCounter31 = this.frameCounter;
|
|
int num237 = num235 + 1;
|
|
int num238 = num237;
|
|
double num239 = (double) (8 * num237);
|
|
if (frameCounter31 >= num239)
|
|
num133 = 31;
|
|
double frameCounter32 = this.frameCounter;
|
|
int num240 = num238 + 1;
|
|
int num241 = num240;
|
|
double num242 = (double) (8 * num240);
|
|
if (frameCounter32 >= num242)
|
|
num133 = 32;
|
|
double frameCounter33 = this.frameCounter;
|
|
int num243 = num241 + 1;
|
|
int num244 = num243;
|
|
double num245 = (double) (8 * num243);
|
|
if (frameCounter33 >= num245)
|
|
num133 = 33;
|
|
double frameCounter34 = this.frameCounter;
|
|
int num246 = num244 + 1;
|
|
int num247 = num246;
|
|
double num248 = (double) (8 * num246);
|
|
if (frameCounter34 >= num248)
|
|
num133 = 34;
|
|
double frameCounter35 = this.frameCounter;
|
|
int num249 = num247 + 1;
|
|
int num250 = num249;
|
|
double num251 = (double) (8 * num249);
|
|
if (frameCounter35 >= num251)
|
|
num133 = 35;
|
|
double frameCounter36 = this.frameCounter;
|
|
int num252 = num250 + 1;
|
|
int num253 = num252;
|
|
double num254 = (double) (8 * num252);
|
|
if (frameCounter36 >= num254)
|
|
num133 = 36;
|
|
double frameCounter37 = this.frameCounter;
|
|
int num255 = num253 + 1;
|
|
int num256 = num255;
|
|
double num257 = (double) (8 * num255);
|
|
if (frameCounter37 >= num257)
|
|
num133 = 37;
|
|
double frameCounter38 = this.frameCounter;
|
|
int num258 = num256 + 1;
|
|
int num259 = num258;
|
|
double num260 = (double) (8 * num258);
|
|
if (frameCounter38 >= num260)
|
|
num133 = 38;
|
|
double frameCounter39 = this.frameCounter;
|
|
int num261 = num259 + 1;
|
|
int num262 = num261;
|
|
double num263 = (double) (8 * num261);
|
|
if (frameCounter39 >= num263)
|
|
num133 = 39;
|
|
double frameCounter40 = this.frameCounter;
|
|
int num264 = num262 + 1;
|
|
int num265 = num264;
|
|
double num266 = (double) (8 * num264);
|
|
if (frameCounter40 >= num266)
|
|
num133 = 40;
|
|
if (this.frameCounter >= (double) (8 * (num265 + 1)))
|
|
{
|
|
num133 = 26;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = this.frameCounter + (double) this.velocity.Length() * 0.100000001490116 + 1.0;
|
|
if (this.frameCounter >= 40.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
num133 = (int) (this.frameCounter / 8.0);
|
|
}
|
|
this.frame.Y = num133;
|
|
break;
|
|
case 566:
|
|
case 567:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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 * 8;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 64.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (int) (this.frameCounter / 8.0);
|
|
break;
|
|
case 568:
|
|
case 569:
|
|
if ((double) this.ai[0] > 0.0)
|
|
{
|
|
int num267 = this.frame.Y / num1;
|
|
this.spriteDirection = this.direction;
|
|
if (num267 < 5 || num267 > 16)
|
|
this.frameCounter = 0.0;
|
|
int num268 = 7;
|
|
++this.frameCounter;
|
|
int num269 = 0;
|
|
int num270;
|
|
if (this.frameCounter >= (double) (5 * (num270 = num269 + 1)))
|
|
num268 = 8;
|
|
int num271;
|
|
if (this.frameCounter >= (double) (5 * (num271 = num270 + 1)))
|
|
num268 = 9;
|
|
int num272;
|
|
if (this.frameCounter >= (double) (5 * (num272 = num271 + 1)))
|
|
num268 = 10;
|
|
int num273;
|
|
if (this.frameCounter >= (double) (5 * (num273 = num272 + 1)))
|
|
num268 = 7;
|
|
int num274;
|
|
if (this.frameCounter >= (double) (5 * (num274 = num273 + 1)))
|
|
num268 = 8;
|
|
int num275;
|
|
if (this.frameCounter >= (double) (5 * (num275 = num274 + 1)))
|
|
num268 = 9;
|
|
int num276;
|
|
if (this.frameCounter >= (double) (5 * (num276 = num275 + 1)))
|
|
num268 = 10;
|
|
int num277;
|
|
if (this.frameCounter >= (double) (5 * (num277 = num276 + 1)))
|
|
num268 = 7;
|
|
int num278;
|
|
if (this.frameCounter >= (double) (5 * (num278 = num277 + 1)))
|
|
num268 = 8;
|
|
int num279;
|
|
if (this.frameCounter >= (double) (5 * (num279 = num278 + 1)))
|
|
num268 = 9;
|
|
int num280;
|
|
if (this.frameCounter >= (double) (5 * (num280 = num279 + 1)))
|
|
num268 = 10;
|
|
int num281;
|
|
if (this.frameCounter >= (double) (5 * (num281 = num280 + 1)))
|
|
num268 = 7;
|
|
int num282;
|
|
if (this.frameCounter >= (double) (5 * (num282 = num281 + 1)))
|
|
num268 = 8;
|
|
int num283;
|
|
if (this.frameCounter >= (double) (5 * (num283 = num282 + 1)))
|
|
num268 = 9;
|
|
int num284;
|
|
if (this.frameCounter >= (double) (5 * (num284 = num283 + 1)))
|
|
num268 = 10;
|
|
int num285;
|
|
if (this.frameCounter >= (double) (5 * (num285 = num284 + 1)))
|
|
num268 = 7;
|
|
int num286;
|
|
if (this.frameCounter >= (double) (5 * (num286 = num285 + 1)))
|
|
num268 = 8;
|
|
int num287;
|
|
if (this.frameCounter >= (double) (5 * (num287 = num286 + 1)))
|
|
num268 = 9;
|
|
int num288;
|
|
if (this.frameCounter >= (double) (5 * (num288 = num287 + 1)))
|
|
num268 = 10;
|
|
int num289;
|
|
if (this.frameCounter >= (double) (5 * (num289 = num288 + 1)))
|
|
num268 = 7;
|
|
int num290;
|
|
if (this.frameCounter >= (double) (5 * (num290 = num289 + 1)))
|
|
num268 = 8;
|
|
int num291;
|
|
if (this.frameCounter >= (double) (5 * (num291 = num290 + 1)))
|
|
num268 = 9;
|
|
int num292;
|
|
if (this.frameCounter >= (double) (5 * (num292 = num291 + 1)))
|
|
num268 = 10;
|
|
int num293;
|
|
if (this.frameCounter >= (double) (5 * (num293 = num292 + 1)))
|
|
num268 = 11;
|
|
int num294;
|
|
if (this.frameCounter >= (double) (5 * (num294 = num293 + 1)))
|
|
num268 = 12;
|
|
int num295;
|
|
if (this.frameCounter >= (double) (5 * (num295 = num294 + 1)))
|
|
num268 = 13;
|
|
int num296;
|
|
if (this.frameCounter >= (double) (5 * (num296 = num295 + 1)))
|
|
num268 = 14;
|
|
if (this.frameCounter >= 270.0)
|
|
{
|
|
num268 = 14;
|
|
this.frameCounter -= 10.0;
|
|
}
|
|
this.frame.Y = num1 * num268;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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 * 4;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 56.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (int) (this.frameCounter / 8.0);
|
|
break;
|
|
case 570:
|
|
case 571:
|
|
if ((double) this.ai[1] > 0.0 && (double) this.ai[0] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 15 || (double) this.ai[1] == 59.0)
|
|
{
|
|
this.frame.Y = num1 * 10;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num297 = 5;
|
|
if (this.frame.Y == num1 * 14)
|
|
num297 = 35;
|
|
if (++this.frameCounter >= (double) num297 && this.frame.Y < num1 * 15)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 9;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 64.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (int) (this.frameCounter / 8.0 + 2.0);
|
|
break;
|
|
case 572:
|
|
case 573:
|
|
if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y != num1 * 8 || this.frameCounter > 2.0)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frameCounter == 0.0)
|
|
{
|
|
this.frameCounter = 1.0;
|
|
EmoteBubble.NewBubble(3, new WorldUIAnchor((Entity) this), 60);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[1] == 1.0)
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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 * 17;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 64.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * ((int) (this.frameCounter / 8.0) + 8);
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
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 * 16;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 64.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * (int) (this.frameCounter / 8.0);
|
|
break;
|
|
case 574:
|
|
case 575:
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.spriteDirection = 1;
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.spriteDirection = -1;
|
|
float rotation = this.velocity.ToRotation();
|
|
if ((double) this.velocity.X < 0.0)
|
|
rotation += 3.141593f;
|
|
this.rotation = this.rotation.AngleTowards(rotation, 0.02f);
|
|
if ((double) this.ai[0] != 0.0)
|
|
{
|
|
if (this.frame.Y < num1 * 2)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num298 = 4;
|
|
if (this.frame.Y >= num1 * 5)
|
|
num298 = 8;
|
|
Vector2 Position = this.Center + new Vector2((float) (56 * this.spriteDirection), -30f).RotatedBy((double) this.rotation);
|
|
if (++this.frameCounter >= (double) num298 && this.frame.Y < num1 * 9)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y == num1 * 9)
|
|
{
|
|
for (int index = 0; index < 8; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(Position, 0, 0, 6, Alpha: 100);
|
|
dust.velocity *= 3f;
|
|
dust.scale = 0.6f;
|
|
dust.fadeIn = 1.2f;
|
|
dust.noGravity = true;
|
|
dust.noLight = true;
|
|
}
|
|
}
|
|
}
|
|
if (this.frame.Y >= num1 * 9 && (double) this.ai[0] < 3.0)
|
|
{
|
|
Vector2 vector2_1 = Position;
|
|
Vector2 vector2_2 = Position + (this.oldPos[3] - this.position);
|
|
int maxValue = 5;
|
|
if (this.frameCounter > 60.0)
|
|
maxValue = 4;
|
|
if (this.frameCounter > 180.0)
|
|
maxValue = 3;
|
|
if (this.frameCounter > 300.0)
|
|
maxValue = 2;
|
|
if (this.frameCounter > 600.0)
|
|
maxValue = 1;
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(Vector2.Lerp(vector2_2, vector2_1, (float) ((double) index / 10.0 + 0.100000001490116)), 0, 0, 6, Alpha: 50);
|
|
dust.scale = 0.3f;
|
|
dust.fadeIn = 1.5f;
|
|
dust.noGravity = true;
|
|
dust.noLight = true;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (++this.frameCounter >= 6.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y >= num1 * 2)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 576:
|
|
case 577:
|
|
int num299 = this.frame.Y;
|
|
this.frame.Width = 80;
|
|
if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (num299 < 11 || num299 > 20)
|
|
{
|
|
num299 = 11;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num300 = 4;
|
|
if (num299 == 13 || num299 == 19)
|
|
num300 = 8;
|
|
if (num299 == 14 || num299 == 18)
|
|
num300 = 2;
|
|
if (++this.frameCounter >= (double) num300 && num299 < 20)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num299;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 2.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (num299 < 37 || num299 > 47)
|
|
{
|
|
num299 = 39;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num301 = 5;
|
|
if (num299 == 42)
|
|
num301 = 6;
|
|
if (num299 == 45)
|
|
num301 = 8;
|
|
if (num299 == 46)
|
|
num301 = 4;
|
|
if (num299 == 47)
|
|
num301 = 26;
|
|
if (num299 == 37 || num299 == 38)
|
|
num301 = 7;
|
|
bool flag4 = true;
|
|
if (num299 == 46 && (double) this.velocity.Y != 0.0)
|
|
flag4 = false;
|
|
if (num299 == 38)
|
|
flag4 = false;
|
|
if (flag4)
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= (double) num301)
|
|
{
|
|
if (num299 < 47)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num299;
|
|
}
|
|
else
|
|
{
|
|
num299 = 37;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 1.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (num299 < 21 || num299 > 38)
|
|
{
|
|
num299 = 21;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (++this.frameCounter >= 5.0 && num299 < 38)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num299;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
num299 = 43;
|
|
}
|
|
else if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
num299 = 0;
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter >= 60.0 || this.frameCounter < 0.0)
|
|
this.frameCounter = 0.0;
|
|
num299 = 1 + (int) (this.frameCounter / 6.0);
|
|
}
|
|
}
|
|
this.frame.Y = num299;
|
|
break;
|
|
case 578:
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if (++this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 583:
|
|
case 584:
|
|
case 585:
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if (++this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
if (this.frame.Y >= num1 * 4)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 586:
|
|
if (this.wet)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
this.spriteDirection = this.direction;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.Length());
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 60.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 1)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 < 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
break;
|
|
}
|
|
int num302 = 8;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0;
|
|
this.frameCounter += 0.5;
|
|
if (this.frameCounter > (double) num302)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 589:
|
|
int num303 = this.frame.Y / num1;
|
|
++this.frameCounter;
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frame.Y = 0;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (num303 >= 12)
|
|
{
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (num303 >= 11)
|
|
{
|
|
if (this.frameCounter > (double) Main.rand.Next(40, 140))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (num303 >= 8)
|
|
{
|
|
if (this.frameCounter > 3.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y == num1 * 9)
|
|
{
|
|
Vector2 position = this.position;
|
|
position.Y += (float) (this.height - 6);
|
|
if (this.direction == 1)
|
|
position.X += 30f;
|
|
else
|
|
position.X -= 22f;
|
|
for (int index = 0; index < 4; ++index)
|
|
Dust.NewDust(position, 1, 1, 32);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (num303 >= 7)
|
|
{
|
|
if (this.frameCounter > (double) Main.rand.Next(30, 90))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (num303 >= 4)
|
|
{
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (num303 >= 1)
|
|
{
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y >= num1 * 4 && Main.rand.Next(3) != 0)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frameCounter > (double) Main.rand.Next(90, 450))
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 593:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
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;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 10.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
if ((double) this.velocity.Y > 4.0)
|
|
{
|
|
this.rotation -= this.velocity.Y * 0.01f;
|
|
break;
|
|
}
|
|
break;
|
|
case 594:
|
|
this.spriteDirection = 1;
|
|
this.frame.Y = (int) this.ai[2];
|
|
this.frame.Width = 32;
|
|
break;
|
|
case 595:
|
|
case 596:
|
|
case 597:
|
|
case 598:
|
|
case 599:
|
|
case 600:
|
|
case 601:
|
|
this.spriteDirection = this.direction;
|
|
int num304 = 3;
|
|
if (++this.frameCounter >= (double) (Main.npcFrameCount[this.type] * num304))
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * ((int) this.frameCounter / num304);
|
|
break;
|
|
case 602:
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 4.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num1 * 10)
|
|
this.frame.Y = num1 * 3;
|
|
if (this.frame.Y < num1 * 3)
|
|
{
|
|
this.frame.Y = num1 * 3;
|
|
break;
|
|
}
|
|
break;
|
|
case 603:
|
|
this.spriteDirection = this.direction;
|
|
if (this.wet)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter >= 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y > num1 * 2)
|
|
this.frame.Y = num1;
|
|
if (this.frame.Y < num1)
|
|
this.frame.Y = num1;
|
|
this.rotation = 0.0f;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.frame.Y = num1;
|
|
this.frameCounter = 0.0;
|
|
this.rotation = 0.0f;
|
|
break;
|
|
}
|
|
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 = num1 * 11;
|
|
if (this.frame.Y < num1 * 11)
|
|
{
|
|
this.frame.Y = num1 * 11;
|
|
break;
|
|
}
|
|
break;
|
|
case 604:
|
|
case 605:
|
|
this.spriteDirection = this.direction;
|
|
int num305 = 2;
|
|
if (++this.frameCounter >= (double) (4 * num305))
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.velocity.Y != 0.0 ? num1 * (4 + (int) this.frameCounter / num305) : num1 * ((int) this.frameCounter / num305);
|
|
break;
|
|
case 610:
|
|
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.frameCounter;
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 1)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5;
|
|
++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;
|
|
break;
|
|
}
|
|
break;
|
|
case 611:
|
|
this.spriteDirection = -this.direction;
|
|
this.rotation = this.velocity.X * 0.1f;
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
switch (this.frame.Y / num1)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
if ((int) this.frameCounter % 40 != 0 || Main.rand.Next(80) == 0)
|
|
++this.frameCounter;
|
|
if ((this.frameCounter + 1.0) % 40.0 == 39.0)
|
|
this.frameCounter = (double) (40 * Main.rand.Next(3));
|
|
int num306 = (int) this.frameCounter % 40 / 10;
|
|
int num307 = (int) this.frameCounter / 40;
|
|
int num308 = 0;
|
|
switch (num307)
|
|
{
|
|
case 0:
|
|
if (num306 == 3)
|
|
num306 = 1;
|
|
num308 = num306;
|
|
break;
|
|
case 1:
|
|
if (num306 == 3)
|
|
num306 = 1;
|
|
num308 = 0;
|
|
if (num306 != 0)
|
|
{
|
|
num308 = 2 + num306;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num308 = 0;
|
|
if (num306 != 0)
|
|
{
|
|
num308 = 4 + num306;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = num1 * num308;
|
|
break;
|
|
default:
|
|
this.frame.Y = 0;
|
|
goto case 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
++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 < num1 * 8)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 612:
|
|
case 613:
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 50.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
this.frame.Y = (int) Utils.WrappedLerp(0.0f, 4f, (float) this.frameCounter / 50f) * num1;
|
|
break;
|
|
}
|
|
bool flag5 = true;
|
|
if (this.frame.Y == 0 && Main.rand.Next(180) != 0)
|
|
flag5 = false;
|
|
if (flag5)
|
|
++this.frameCounter;
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.spriteDirection = Math.Sign(this.velocity.X);
|
|
int num309 = 10;
|
|
bool flag6 = (double) Math.Abs(this.velocity.X) > 1.0;
|
|
if ((double) this.ai[1] == 1.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 4;
|
|
}
|
|
if ((double) Math.Abs(this.velocity.Y) > 0.100000001490116 | flag6)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 4;
|
|
}
|
|
else if (this.frame.Y == 0)
|
|
num309 = 2;
|
|
if (this.frame.Y == num1 * 4)
|
|
{
|
|
num309 = 60;
|
|
if (!flag6)
|
|
num309 = 2;
|
|
}
|
|
if (this.frameCounter >= (double) num309)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= 5)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 615:
|
|
this.spriteDirection = this.direction;
|
|
if (!this.wet && (double) this.ai[2] == 1.0)
|
|
{
|
|
this.frame.Y = 4 * num1;
|
|
break;
|
|
}
|
|
if (!this.wet)
|
|
++this.frameCounter;
|
|
if (++this.frameCounter >= (double) (7 * (Main.npcFrameCount[this.type] - 1)))
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (int) (this.frameCounter / 7.0) * num1;
|
|
break;
|
|
case 616:
|
|
case 617:
|
|
int num310 = 8;
|
|
int num311 = 5;
|
|
if ((double) this.velocity.X == 0.0)
|
|
num311 = 10;
|
|
this.spriteDirection = this.direction;
|
|
if (this.wet)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > (double) num311)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 13)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++this.frameCounter;
|
|
if (this.frameCounter > (double) num310)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 7)
|
|
this.frame.Y = 0;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
}
|
|
if ((double) this.velocity.Y != 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
break;
|
|
case 618:
|
|
if (++this.frameCounter >= 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y / num1 >= Main.npcFrameCount[this.type])
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 619:
|
|
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;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 620:
|
|
if ((double) this.ai[1] > 0.0 && (double) this.ai[0] > 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if (this.frame.Y < num1 * 14 || this.frame.Y > num1 * 20 || (double) this.ai[1] == 59.0)
|
|
{
|
|
this.frame.Y = num1 * 14;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
int num312 = 5;
|
|
if (this.frame.Y == num1 * 17 || this.frame.Y == num1 * 16)
|
|
num312 = 3;
|
|
if (++this.frameCounter >= (double) num312 && this.frame.Y < num1 * 20)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if ((double) this.ai[1] > 0.0 && this.frame.Y == num1 * 18)
|
|
{
|
|
this.frame.Y = num1 * 16;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.wet)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.direction = -1;
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.direction = 1;
|
|
if (this.spriteDirection != this.direction)
|
|
{
|
|
this.rotation *= -1f;
|
|
this.spriteDirection = this.direction;
|
|
}
|
|
float num313 = (float) Math.Atan2((double) this.velocity.Y * (double) this.direction, (double) this.velocity.X * (double) this.direction);
|
|
if ((double) Math.Abs(this.rotation - num313) >= 3.14159274101257)
|
|
{
|
|
if ((double) num313 < (double) this.rotation)
|
|
this.rotation -= 6.283185f;
|
|
else
|
|
this.rotation += 6.283185f;
|
|
}
|
|
this.rotation = (float) (((double) this.rotation * 4.0 + (double) num313) / 5.0);
|
|
this.frameCounter += (double) Math.Abs(this.velocity.Length());
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 13)
|
|
{
|
|
this.frame.Y = num1 * 8;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 < 8)
|
|
{
|
|
this.frame.Y = num1 * 13;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.rotation > 3.14)
|
|
this.rotation -= 6.28f;
|
|
if ((double) this.rotation > -0.01 && (double) this.rotation < 0.01)
|
|
this.rotation = 0.0f;
|
|
else
|
|
this.rotation *= 0.9f;
|
|
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;
|
|
break;
|
|
}
|
|
if (this.frame.Y < num1 * 2)
|
|
this.frame.Y = num1 * 2;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 9.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y / num1 > 7)
|
|
{
|
|
this.frame.Y = num1 * 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1;
|
|
break;
|
|
case 624:
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y < 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 9 * num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 10 * num1;
|
|
break;
|
|
}
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
int num314 = this.frame.Y / num1;
|
|
this.frameCounter -= 8.0;
|
|
int num315 = num314 + 1;
|
|
if (num315 > 8)
|
|
num315 = 1;
|
|
this.frame.Y = num315 * num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 625:
|
|
int num316 = 7;
|
|
int num317 = 4;
|
|
if ((double) this.velocity.X == 0.0)
|
|
num317 = 8;
|
|
this.spriteDirection = this.direction;
|
|
if (this.wet)
|
|
{
|
|
if (this.frame.Y < num1 * 6)
|
|
this.frame.Y = num1 * 6;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > (double) num317)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 11)
|
|
{
|
|
this.frame.Y = num1 * 6;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.frame.Y > num1 * 5)
|
|
this.frame.Y = 0;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > (double) num316)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
if (this.frame.Y > num1 * 5)
|
|
this.frame.Y = 0;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case 626:
|
|
case 627:
|
|
if ((double) this.velocity.X != 0.0)
|
|
this.spriteDirection = (double) this.velocity.X < 0.0 ? -1 : 1;
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y += num1;
|
|
}
|
|
if (this.frame.Y > num1 * 5)
|
|
{
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frame.Y = this.wet ? ((double) this.velocity.Length() <= 0.150000005960464 ? ((double) this.velocity.Length() <= 0.0500000007450581 ? ((double) this.velocity.Length() <= 0.025000000372529 ? 0 : num1) : num1 * 2) : num1 * 3) : 0;
|
|
break;
|
|
case 628:
|
|
this.spriteDirection = (double) Main.WindForVisuals > 0.0 ? -1 : 1;
|
|
if (this.IsABestiaryIconDummy)
|
|
{
|
|
int num318 = this.frame.Y / num1;
|
|
int num319 = 5;
|
|
this.spriteDirection = 1;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > (double) num319)
|
|
{
|
|
this.frameCounter -= (double) num319;
|
|
int num320 = num318 + 1;
|
|
if (num320 > 5)
|
|
num320 = 0;
|
|
this.frame.Y = num320 * num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
int num321 = this.frame.Y / num1;
|
|
int num322 = 8;
|
|
if (num321 == 6)
|
|
{
|
|
this.frameCounter += 1.0 + 0.5 * (double) Math.Abs(Main.WindForVisuals);
|
|
if (this.frameCounter > (double) num322)
|
|
{
|
|
this.frameCounter -= (double) num322;
|
|
this.frame.Y = 0 * num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (num321 > 5)
|
|
{
|
|
int num323 = 6;
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num323 * num1;
|
|
break;
|
|
}
|
|
this.frameCounter += 1.0 + 0.5 * (double) Math.Abs(Main.WindForVisuals);
|
|
if (this.frameCounter > (double) num322)
|
|
{
|
|
this.frameCounter -= (double) num322;
|
|
int num324 = num321 + 1;
|
|
if (num324 > 5)
|
|
num324 = 0;
|
|
this.frame.Y = num324 * num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.localAI[0] == 0.0)
|
|
{
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
int num325 = this.frame.Y / num1;
|
|
int num326;
|
|
if (num325 == 6)
|
|
num326 = 7;
|
|
else if (num325 < 7)
|
|
{
|
|
num326 = 6;
|
|
}
|
|
else
|
|
{
|
|
num326 = num325 + 1;
|
|
if (num326 > 10)
|
|
num326 = 7;
|
|
}
|
|
this.frame.Y = num326 * num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) this.localAI[0] == 1.0)
|
|
{
|
|
int num327 = this.frame.Y / num1;
|
|
int num328 = (int) MathHelper.Lerp(7f, 20f, (float) this.frameCounter / 80f);
|
|
if (num328 > 19)
|
|
num328 = 19;
|
|
if (num328 > 16)
|
|
num328 -= 9;
|
|
++this.frameCounter;
|
|
if (this.frameCounter > 80.0)
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num328 * num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 631:
|
|
int num329 = 8;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
this.spriteDirection = this.direction;
|
|
if ((double) this.ai[2] != 0.0 && (double) this.ai[2] < 100.0)
|
|
{
|
|
float amount = (this.ai[2] - 76f) / 24f;
|
|
Player player = Main.player[this.target];
|
|
bool flag7 = player != null && ((double) player.Center.X < (double) this.Center.X ? this.direction == -1 : this.direction == 1);
|
|
bool flag8 = player != null && player.Hitbox.Intersects(this.Hitbox);
|
|
this.frame.Y = !(player != null & flag7) || flag8 || !Collision.CanHit((Entity) player, (Entity) this) ? (!(flag7 & flag8) ? 0 : (int) MathHelper.Lerp(10f, 15f, amount) * num1) : (int) MathHelper.Lerp(15f, (float) Main.npcFrameCount[this.type], amount) * num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.X == 0.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
}
|
|
this.frameCounter += 0.200000002980232 + (double) Math.Abs(this.velocity.X);
|
|
if (this.frameCounter > 8.0)
|
|
{
|
|
this.frame.Y += num1;
|
|
this.frameCounter = 0.0;
|
|
}
|
|
if (this.frame.Y >= num329 * num1)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
if (this.frame.Y / num1 < 1)
|
|
{
|
|
this.frame.Y = num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = 0;
|
|
break;
|
|
case 636:
|
|
this.frame.Y = this.AI_120_HallowBoss_IsInPhase2() ? num1 : 0;
|
|
break;
|
|
case 657:
|
|
bool flag9 = this.life <= this.lifeMax / 2;
|
|
this.frame.Width = 180;
|
|
int num330 = this.frame.Y / num1;
|
|
if (flag9 && this.noGravity || (double) this.velocity.Y < 0.0)
|
|
{
|
|
if (num330 < 20 || num330 > 23)
|
|
{
|
|
if (num330 < 4 || num330 > 7)
|
|
{
|
|
num330 = 4;
|
|
this.frameCounter = -1.0;
|
|
}
|
|
if (++this.frameCounter >= 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num330;
|
|
if (num330 >= 7)
|
|
num330 = !flag9 ? 7 : 22;
|
|
}
|
|
}
|
|
else if (++this.frameCounter >= 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num330;
|
|
if (num330 >= 24)
|
|
num330 = 20;
|
|
}
|
|
this.frame.Y = num330 * num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y > 0.0)
|
|
{
|
|
if (num330 < 8 || num330 > 10)
|
|
{
|
|
num330 = 8;
|
|
this.frameCounter = -1.0;
|
|
}
|
|
if (++this.frameCounter >= 8.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num330;
|
|
if (num330 >= 10)
|
|
num330 = 10;
|
|
}
|
|
this.frame.Y = num330 * num1;
|
|
break;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0)
|
|
{
|
|
if ((double) this.ai[0] == 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
switch ((int) this.ai[1] / 3 % 3)
|
|
{
|
|
case 1:
|
|
num330 = 14;
|
|
break;
|
|
case 2:
|
|
num330 = 15;
|
|
break;
|
|
default:
|
|
num330 = 13;
|
|
break;
|
|
}
|
|
}
|
|
else if ((double) this.ai[0] == 4.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
switch ((int) this.ai[1] / 15)
|
|
{
|
|
case 1:
|
|
num330 = 11;
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
num330 = 10;
|
|
break;
|
|
default:
|
|
num330 = 12;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bool flag10 = num330 >= 10 && num330 <= 12;
|
|
int num331 = 10;
|
|
if (flag10)
|
|
num331 = 6;
|
|
if (!flag10 && num330 >= 4)
|
|
{
|
|
num330 = 0;
|
|
this.frameCounter = -1.0;
|
|
}
|
|
if (++this.frameCounter >= (double) num331)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
++num330;
|
|
if ((!flag10 || num330 == 13) && num330 >= 4)
|
|
num330 = 0;
|
|
}
|
|
}
|
|
this.frame.Y = num330 * num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.aiStyle == 39 && this.type != 417)
|
|
{
|
|
if ((double) this.ai[0] == 0.0)
|
|
{
|
|
this.rotation = 0.0f;
|
|
if ((double) this.velocity.Y == 0.0)
|
|
this.spriteDirection = this.direction;
|
|
else if ((double) this.velocity.Y < 0.0)
|
|
this.frameCounter = 0.0;
|
|
this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186;
|
|
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 if (this.frameCounter < 32.0)
|
|
this.frame.Y = num1 * 4;
|
|
else
|
|
this.frameCounter = 0.0;
|
|
}
|
|
else if ((double) this.ai[0] == 1.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 7 : num1 * 6) : num1 * 5;
|
|
}
|
|
else if ((double) this.ai[0] == 5.0)
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 5 : num1 * 6) : num1 * 7;
|
|
}
|
|
else
|
|
{
|
|
this.frameCounter = 0.0;
|
|
this.frame.Y = num1 * 7;
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
|
|
public void SimpleFlyMovement(Vector2 desiredVelocity, float moveSpeed)
|
|
{
|
|
if ((double) this.velocity.X < (double) desiredVelocity.X)
|
|
{
|
|
this.velocity.X += moveSpeed;
|
|
if ((double) this.velocity.X < 0.0 && (double) desiredVelocity.X > 0.0)
|
|
this.velocity.X += moveSpeed;
|
|
}
|
|
else if ((double) this.velocity.X > (double) desiredVelocity.X)
|
|
{
|
|
this.velocity.X -= moveSpeed;
|
|
if ((double) this.velocity.X > 0.0 && (double) desiredVelocity.X < 0.0)
|
|
this.velocity.X -= moveSpeed;
|
|
}
|
|
if ((double) this.velocity.Y < (double) desiredVelocity.Y)
|
|
{
|
|
this.velocity.Y += moveSpeed;
|
|
if ((double) this.velocity.Y >= 0.0 || (double) desiredVelocity.Y <= 0.0)
|
|
return;
|
|
this.velocity.Y += moveSpeed;
|
|
}
|
|
else
|
|
{
|
|
if ((double) this.velocity.Y <= (double) desiredVelocity.Y)
|
|
return;
|
|
this.velocity.Y -= moveSpeed;
|
|
if ((double) this.velocity.Y <= 0.0 || (double) desiredVelocity.Y >= 0.0)
|
|
return;
|
|
this.velocity.Y -= moveSpeed;
|
|
}
|
|
}
|
|
|
|
public void HealEffect(int healAmount, bool broadcast = true)
|
|
{
|
|
int index = CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), CombatText.HealLife, healAmount);
|
|
if (!broadcast || Main.netMode != 2 || index == 100)
|
|
return;
|
|
CombatText combatText = Main.combatText[index];
|
|
NetMessage.SendData(81, number: ((int) combatText.color.PackedValue), number2: combatText.position.X, number3: combatText.position.Y, number4: ((float) healAmount));
|
|
}
|
|
|
|
public static void HealEffect(Microsoft.Xna.Framework.Rectangle r, int healAmount, bool broadcast = true)
|
|
{
|
|
int index = CombatText.NewText(r, CombatText.HealLife, healAmount);
|
|
if (!broadcast || Main.netMode != 2 || index == 100)
|
|
return;
|
|
CombatText combatText = Main.combatText[index];
|
|
NetMessage.SendData(81, number: ((int) combatText.color.PackedValue), number2: combatText.position.X, number3: combatText.position.Y, number4: ((float) healAmount));
|
|
}
|
|
|
|
public int FindClosestPlayer() => this.FindClosestPlayer(out float _);
|
|
|
|
public int FindClosestPlayer(out float distanceToPlayer)
|
|
{
|
|
Vector2 center = this.Center;
|
|
float num1 = float.MaxValue;
|
|
int num2 = -1;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
Player player = Main.player[index];
|
|
if (player.active && !player.dead && !player.ghost)
|
|
{
|
|
float num3 = Vector2.DistanceSquared(center, player.Center);
|
|
if ((double) num3 < (double) num1)
|
|
{
|
|
num1 = num3;
|
|
num2 = index;
|
|
}
|
|
}
|
|
}
|
|
if (num2 < 0)
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
Player player = Main.player[index];
|
|
if (player.active)
|
|
{
|
|
float num4 = Vector2.DistanceSquared(center, player.Center);
|
|
if ((double) num4 < (double) num1)
|
|
{
|
|
num1 = num4;
|
|
num2 = index;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
distanceToPlayer = (float) Math.Sqrt((double) num1);
|
|
return num2;
|
|
}
|
|
|
|
public void BigMimicSpawnSmoke()
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(51, number: this.whoAmI, number2: 4f);
|
|
}
|
|
else
|
|
{
|
|
for (int index1 = 0; index1 < 20; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(this.position, this.width, this.height, 54, Alpha: 50, Scale: 1.5f);
|
|
Main.dust[index2].velocity *= 2f;
|
|
Main.dust[index2].noGravity = true;
|
|
}
|
|
for (int index3 = 0; index3 < 3; ++index3)
|
|
{
|
|
for (int index4 = 0; index4 < 2; ++index4)
|
|
{
|
|
int index5 = Gore.NewGore(new Vector2((float) ((double) this.position.X + (double) (this.width * index3) * 0.449999988079071 - 20.0), (float) ((double) this.position.Y + (double) (this.height * index4) * 0.5 + 10.0)), new Vector2(0.0f, 0.0f), 99, 1.1f);
|
|
Main.gore[index5].velocity *= 0.3f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool BigMimicSummonCheck(int x, int y)
|
|
{
|
|
if (Main.netMode == 1 || !Main.hardMode)
|
|
return false;
|
|
int chest1 = Chest.FindChest(x, y);
|
|
if (chest1 < 0)
|
|
return false;
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
for (int index = 0; index < 40; ++index)
|
|
{
|
|
ushort type = Main.tile[Main.chest[chest1].x, Main.chest[chest1].y].type;
|
|
int num4 = (int) Main.tile[Main.chest[chest1].x, Main.chest[chest1].y].frameX / 36;
|
|
if (TileID.Sets.BasicChest[(int) type] && (type != (ushort) 21 || num4 < 5 || num4 > 6) && Main.chest[chest1].item[index] != null && Main.chest[chest1].item[index].type > 0)
|
|
{
|
|
if (Main.chest[chest1].item[index].type == 3092)
|
|
num1 += Main.chest[chest1].item[index].stack;
|
|
else if (Main.chest[chest1].item[index].type == 3091)
|
|
num2 += Main.chest[chest1].item[index].stack;
|
|
else
|
|
++num3;
|
|
}
|
|
}
|
|
if (num3 == 0 && num1 + num2 == 1)
|
|
{
|
|
if (num1 != 1)
|
|
;
|
|
if (TileID.Sets.BasicChest[(int) Main.tile[x, y].type])
|
|
{
|
|
if ((int) Main.tile[x, y].frameX % 36 != 0)
|
|
--x;
|
|
if ((int) Main.tile[x, y].frameY % 36 != 0)
|
|
--y;
|
|
int chest2 = Chest.FindChest(x, y);
|
|
for (int index = 0; index < 40; ++index)
|
|
Main.chest[chest1].item[index] = new Item();
|
|
Chest.DestroyChest(x, y);
|
|
for (int index1 = x; index1 <= x + 1; ++index1)
|
|
{
|
|
for (int index2 = y; index2 <= y + 1; ++index2)
|
|
{
|
|
if (TileID.Sets.BasicChest[(int) Main.tile[index1, index2].type])
|
|
Main.tile[index1, index2].ClearTile();
|
|
}
|
|
}
|
|
int number = 1;
|
|
if (Main.tile[x, y].type == (ushort) 467)
|
|
number = 5;
|
|
NetMessage.SendData(34, number: number, number2: ((float) x), number3: ((float) y), number5: chest2);
|
|
NetMessage.SendTileSquare(-1, x, y, 3);
|
|
}
|
|
int Type = 475;
|
|
if (num2 == 1)
|
|
Type = !WorldGen.crimson ? 473 : 474;
|
|
int number1 = NPC.NewNPC(x * 16 + 16, y * 16 + 32, Type);
|
|
Main.npc[number1].whoAmI = number1;
|
|
NetMessage.SendData(23, number: number1);
|
|
Main.npc[number1].BigMimicSpawnSmoke();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool ShouldFaceTarget(
|
|
ref NPCUtils.TargetSearchResults searchResults,
|
|
NPCUtils.TargetType? overrideTargetType = null)
|
|
{
|
|
NPCUtils.TargetType nearestTargetType = searchResults.NearestTargetType;
|
|
if (overrideTargetType.HasValue)
|
|
nearestTargetType = overrideTargetType.Value;
|
|
switch (nearestTargetType)
|
|
{
|
|
case NPCUtils.TargetType.NPC:
|
|
case NPCUtils.TargetType.TankPet:
|
|
return true;
|
|
case NPCUtils.TargetType.Player:
|
|
bool flag = true;
|
|
Player nearestTankOwner = searchResults.NearestTankOwner;
|
|
if (nearestTankOwner.dead || nearestTankOwner.npcTypeNoAggro[this.type] && this.direction != 0)
|
|
flag = false;
|
|
if (flag)
|
|
{
|
|
float num = (float) ((double) (nearestTankOwner.width + nearestTankOwner.height + this.width + this.height) / 4.0 + 800.0);
|
|
return nearestTankOwner.itemAnimation != 0 || nearestTankOwner.aggro >= 0 || (double) searchResults.NearestTankDistance <= (double) num || this.oldTarget < 0 || this.oldTarget >= (int) byte.MaxValue;
|
|
}
|
|
break;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void FaceTarget()
|
|
{
|
|
this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1;
|
|
this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1;
|
|
}
|
|
|
|
public void TargetClosestUpgraded(bool faceTarget = true, Vector2? checkPosition = null)
|
|
{
|
|
int index1 = -1;
|
|
int index2 = -1;
|
|
int index3 = -1;
|
|
Vector2 center = this.Center;
|
|
if (checkPosition.HasValue)
|
|
center = checkPosition.Value;
|
|
bool flag1 = this.direction == 0;
|
|
float num1 = 9999999f;
|
|
for (int index4 = 0; index4 < (int) byte.MaxValue; ++index4)
|
|
{
|
|
Player player = Main.player[index4];
|
|
if (player.active && !player.dead && !player.ghost)
|
|
{
|
|
float num2 = Vector2.Distance(center, player.Center) - (float) player.aggro;
|
|
bool flag2 = player.npcTypeNoAggro[this.type];
|
|
if (flag2 && !flag1)
|
|
num2 += 1000f;
|
|
if ((double) num2 < (double) num1)
|
|
{
|
|
index1 = index4;
|
|
index2 = -1;
|
|
num1 = num2;
|
|
}
|
|
if (player.tankPet >= 0 && !flag2)
|
|
{
|
|
float num3 = Vector2.Distance(center, Main.projectile[player.tankPet].Center) - 200f;
|
|
if ((double) num3 < (double) num1 && (double) num3 < 200.0 && Collision.CanHit(this.Center, 0, 0, Main.projectile[player.tankPet].Center, 0, 0))
|
|
{
|
|
index2 = player.tankPet;
|
|
num1 = num3;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int index5 = 0; index5 < 200; ++index5)
|
|
{
|
|
NPC npc = Main.npc[index5];
|
|
if (npc.active && npc.type == 548)
|
|
{
|
|
float num4 = Vector2.Distance(center, npc.Center);
|
|
if ((double) num1 > (double) num4)
|
|
{
|
|
index3 = index5;
|
|
index1 = -1;
|
|
index2 = -1;
|
|
num1 = num4;
|
|
}
|
|
}
|
|
}
|
|
if ((double) num1 == 9999999.0)
|
|
return;
|
|
if (index3 >= 0)
|
|
{
|
|
this.target = Main.npc[index3].WhoAmIToTargettingIndex;
|
|
this.targetRect = Main.npc[index3].Hitbox;
|
|
this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1;
|
|
this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1;
|
|
}
|
|
else if (index2 >= 0)
|
|
{
|
|
this.target = Main.projectile[index2].owner;
|
|
this.targetRect = Main.projectile[index2].Hitbox;
|
|
this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1;
|
|
this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1;
|
|
}
|
|
else
|
|
{
|
|
if (index1 < 0 || index1 >= (int) byte.MaxValue)
|
|
index1 = 0;
|
|
Player player = Main.player[index1];
|
|
this.targetRect = player.Hitbox;
|
|
this.target = index1;
|
|
if (player.dead || player.npcTypeNoAggro[this.type] && !flag1)
|
|
faceTarget = false;
|
|
if (!faceTarget)
|
|
return;
|
|
float num5 = (float) ((double) (player.width + player.height + this.width + this.height) / 4.0 + 800.0);
|
|
float num6 = num1 - (float) player.aggro;
|
|
if (player.itemAnimation == 0 && player.aggro < 0 && (double) num6 > (double) num5 && this.oldTarget >= 0 && this.oldTarget < (int) byte.MaxValue)
|
|
return;
|
|
this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1;
|
|
this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1;
|
|
}
|
|
}
|
|
|
|
public void TargetClosest(bool faceTarget = true)
|
|
{
|
|
float num1 = 0.0f;
|
|
float num2 = 0.0f;
|
|
bool flag = false;
|
|
int num3 = -1;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && !Main.player[index].dead && !Main.player[index].ghost)
|
|
{
|
|
float num4 = 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)) - (float) Main.player[index].aggro;
|
|
if (Main.player[index].npcTypeNoAggro[this.type] && this.direction != 0)
|
|
num4 += 1000f;
|
|
if (!flag || (double) num4 < (double) num1)
|
|
{
|
|
flag = true;
|
|
num3 = -1;
|
|
num2 = 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));
|
|
num1 = num4;
|
|
this.target = index;
|
|
}
|
|
if (Main.player[index].tankPet >= 0 && !Main.player[index].npcTypeNoAggro[this.type])
|
|
{
|
|
int tankPet = Main.player[index].tankPet;
|
|
float num5 = Math.Abs(Main.projectile[tankPet].position.X + (float) (Main.projectile[tankPet].width / 2) - this.position.X + (float) (this.width / 2)) + Math.Abs(Main.projectile[tankPet].position.Y + (float) (Main.projectile[tankPet].height / 2) - this.position.Y + (float) (this.height / 2)) - 200f;
|
|
if ((double) num5 < (double) num1 && (double) num5 < 200.0 && Collision.CanHit(this.Center, 1, 1, Main.projectile[tankPet].Center, 1, 1))
|
|
num3 = tankPet;
|
|
}
|
|
}
|
|
}
|
|
if (num3 >= 0)
|
|
{
|
|
int index = num3;
|
|
this.targetRect = new Microsoft.Xna.Framework.Rectangle((int) Main.projectile[index].position.X, (int) Main.projectile[index].position.Y, Main.projectile[index].width, Main.projectile[index].height);
|
|
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;
|
|
}
|
|
else
|
|
{
|
|
if (this.target < 0 || this.target >= (int) byte.MaxValue)
|
|
this.target = 0;
|
|
this.targetRect = new Microsoft.Xna.Framework.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 (Main.player[this.target].npcTypeNoAggro[this.type] && this.direction != 0)
|
|
faceTarget = false;
|
|
if (faceTarget)
|
|
{
|
|
int aggro = Main.player[this.target].aggro;
|
|
int num6 = (Main.player[this.target].height + Main.player[this.target].width + this.height + this.width) / 4;
|
|
if (Main.player[this.target].itemAnimation != 0 || Main.player[this.target].aggro >= 0 || this.oldTarget < 0 || this.oldTarget > 254)
|
|
{
|
|
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 bool DoesntDespawnToInactivity()
|
|
{
|
|
switch (this.type)
|
|
{
|
|
case 8:
|
|
case 9:
|
|
case 11:
|
|
case 12:
|
|
case 14:
|
|
case 15:
|
|
case 36:
|
|
case 40:
|
|
case 41:
|
|
case 88:
|
|
case 89:
|
|
case 90:
|
|
case 91:
|
|
case 92:
|
|
case 96:
|
|
case 97:
|
|
case 99:
|
|
case 100:
|
|
case 113:
|
|
case 114:
|
|
case 115:
|
|
case 118:
|
|
case 119:
|
|
case 128:
|
|
case 129:
|
|
case 130:
|
|
case 131:
|
|
case 134:
|
|
case 135:
|
|
case 136:
|
|
case 246:
|
|
case 247:
|
|
case 248:
|
|
case 249:
|
|
case 263:
|
|
case 267:
|
|
case 328:
|
|
case 379:
|
|
case 380:
|
|
case 392:
|
|
case 393:
|
|
case 394:
|
|
case 396:
|
|
case 397:
|
|
case 398:
|
|
case 400:
|
|
case 422:
|
|
case 437:
|
|
case 438:
|
|
case 439:
|
|
case 440:
|
|
case 488:
|
|
case 492:
|
|
case 493:
|
|
case 507:
|
|
case 517:
|
|
case 548:
|
|
case 549:
|
|
case 551:
|
|
case 564:
|
|
case 565:
|
|
return true;
|
|
case 139:
|
|
if (NPC.npcsFoundForCheckActive[134])
|
|
return true;
|
|
break;
|
|
case 552:
|
|
case 553:
|
|
case 554:
|
|
case 555:
|
|
case 556:
|
|
case 557:
|
|
case 558:
|
|
case 559:
|
|
case 560:
|
|
case 561:
|
|
case 562:
|
|
case 563:
|
|
case 566:
|
|
case 567:
|
|
case 568:
|
|
case 569:
|
|
case 570:
|
|
case 571:
|
|
case 572:
|
|
case 573:
|
|
case 574:
|
|
case 575:
|
|
case 576:
|
|
case 577:
|
|
case 578:
|
|
if (NPC.npcsFoundForCheckActive[548])
|
|
return true;
|
|
break;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void CheckActive()
|
|
{
|
|
if (!this.active || this.DoesntDespawnToInactivity())
|
|
return;
|
|
if (this.townNPC)
|
|
{
|
|
this.AddIntoPlayersTownNPCSlots();
|
|
}
|
|
else
|
|
{
|
|
bool flag = false;
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.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);
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.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 plr = 0; plr < (int) byte.MaxValue; ++plr)
|
|
{
|
|
if (Main.player[plr].active)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle hitbox = Main.player[plr].Hitbox;
|
|
if (rectangle1.Intersects(hitbox))
|
|
{
|
|
flag = true;
|
|
if (this.type != 25 && this.type != 30 && this.type != 33 && this.releaseOwner == (short) byte.MaxValue && this.lifeMax > 0)
|
|
{
|
|
if (Main.slimeRain && Main.slimeRainNPC[this.type])
|
|
Main.player[plr].nearbyActiveNPCs += this.npcSlots * Main.slimeRainNPCSlots;
|
|
else
|
|
Main.player[plr].nearbyActiveNPCs += this.npcSlots;
|
|
}
|
|
}
|
|
if (rectangle2.Intersects(hitbox))
|
|
{
|
|
this.timeLeft = NPC.activeTime;
|
|
this.despawnEncouraged = false;
|
|
if (plr == Main.myPlayer && (this.type == 604 || this.type == 605))
|
|
this.LadyBugLuck(plr, this.type == 605);
|
|
}
|
|
if (this.boss)
|
|
flag = true;
|
|
switch (this.type)
|
|
{
|
|
case 7:
|
|
case 10:
|
|
case 13:
|
|
case 35:
|
|
case 36:
|
|
case 39:
|
|
case 87:
|
|
case (int) sbyte.MaxValue:
|
|
case 128:
|
|
case 129:
|
|
case 130:
|
|
case 131:
|
|
case 392:
|
|
case 393:
|
|
case 394:
|
|
case 491:
|
|
case 492:
|
|
flag = true;
|
|
continue;
|
|
case 399:
|
|
if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 1.0)
|
|
this.timeLeft = NPC.activeTime;
|
|
flag = true;
|
|
continue;
|
|
case 583:
|
|
case 584:
|
|
case 585:
|
|
if (!Main.dayTime && (double) this.ai[2] == 0.0)
|
|
{
|
|
flag = true;
|
|
this.timeLeft = NPC.activeTime;
|
|
continue;
|
|
}
|
|
continue;
|
|
default:
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
--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.extraValue > 0)
|
|
NPC.RevengeManager.CacheEnemy(this);
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AddIntoPlayersTownNPCSlots()
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.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(Main.player[index].Hitbox))
|
|
Main.player[index].townNPCs += this.npcSlots;
|
|
}
|
|
}
|
|
|
|
public void checkDead()
|
|
{
|
|
if (!this.active || this.realLife >= 0 && this.realLife != this.whoAmI || this.life > 0)
|
|
return;
|
|
if (this.type == 604 || this.type == 605)
|
|
NPC.LadyBugKilled(this.Center, this.type == 605);
|
|
if (this.type == 397 || this.type == 396)
|
|
{
|
|
if ((double) this.ai[0] == -2.0)
|
|
return;
|
|
this.ai[0] = -2f;
|
|
this.life = this.lifeMax;
|
|
this.netUpdate = true;
|
|
this.dontTakeDamage = true;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
int index = NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 400);
|
|
Main.npc[index].ai[3] = this.ai[3];
|
|
Main.npc[index].netUpdate = true;
|
|
}
|
|
else if (this.type == 398 && (double) this.ai[0] != 2.0)
|
|
{
|
|
this.ai[0] = 2f;
|
|
this.life = this.lifeMax;
|
|
this.netUpdate = true;
|
|
this.dontTakeDamage = true;
|
|
}
|
|
else if ((this.type == 517 || this.type == 422 || this.type == 507 || this.type == 493) && (double) this.ai[2] != 1.0)
|
|
{
|
|
this.ai[2] = 1f;
|
|
this.ai[1] = 0.0f;
|
|
this.life = this.lifeMax;
|
|
this.dontTakeDamage = true;
|
|
this.netUpdate = true;
|
|
}
|
|
else if (this.type == 548 && (double) this.ai[1] != 1.0)
|
|
{
|
|
this.ai[1] = 1f;
|
|
this.ai[0] = 0.0f;
|
|
this.life = this.lifeMax;
|
|
this.dontTakeDamageFromHostiles = true;
|
|
this.netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
NPC.noSpawnCycle = true;
|
|
if (this.townNPC && this.type != 37 && this.type != 453)
|
|
{
|
|
if (Main.netMode != 2)
|
|
this.NPCLuck();
|
|
bool flag = true;
|
|
NetworkText fullNetName = this.GetFullNetName();
|
|
int index1 = 19;
|
|
if (this.type == 369 || NPCID.Sets.IsTownPet[this.type])
|
|
{
|
|
index1 = 36;
|
|
flag = false;
|
|
}
|
|
NetworkText networkText = NetworkText.FromKey(Lang.misc[index1].Key, (object) fullNetName);
|
|
if (flag)
|
|
{
|
|
for (int index2 = 0; index2 < (int) byte.MaxValue; ++index2)
|
|
{
|
|
Player player = Main.player[index2];
|
|
if (player != null && player.active && player.difficulty != (byte) 2)
|
|
{
|
|
flag = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
this.DropTombstoneTownNPC(networkText);
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(networkText.ToString(), G: (byte) 25, B: (byte) 25);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(networkText, new Color((int) byte.MaxValue, 25, 25));
|
|
break;
|
|
}
|
|
}
|
|
if (Main.netMode != 1 && !Main.dayTime && this.type == 54 && !NPC.AnyNPCs(35))
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && !Main.player[index].dead && Main.player[index].killClothier)
|
|
{
|
|
NPC.SpawnSkeletron();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (this.townNPC && Main.netMode != 1 && this.homeless && WorldGen.prioritizedTownNPCType == this.type)
|
|
WorldGen.prioritizedTownNPCType = 0;
|
|
if (this.DeathSound != null)
|
|
SoundEngine.PlaySound(this.DeathSound, this.position);
|
|
if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
this.DropEoWLoot();
|
|
else if (this.type == 134)
|
|
{
|
|
Vector2 position1 = this.position;
|
|
Vector2 center = Main.player[this.target].Center;
|
|
float num1 = 1E+08f;
|
|
Vector2 position2 = this.position;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && (Main.npc[index].type == 134 || Main.npc[index].type == 135 || Main.npc[index].type == 136))
|
|
{
|
|
float num2 = Math.Abs(Main.npc[index].Center.X - center.X) + Math.Abs(Main.npc[index].Center.Y - center.Y);
|
|
if ((double) num2 < (double) num1)
|
|
{
|
|
num1 = num2;
|
|
position2 = Main.npc[index].position;
|
|
}
|
|
}
|
|
}
|
|
this.position = position2;
|
|
this.NPCLoot();
|
|
this.position = position1;
|
|
}
|
|
else
|
|
this.NPCLoot();
|
|
this.active = false;
|
|
DD2Event.CheckProgress(this.type);
|
|
this.CheckProgressFrostMoon();
|
|
this.CheckProgressPumpkinMoon();
|
|
int npcInvasionGroup = NPC.GetNPCInvasionGroup(this.type);
|
|
if (npcInvasionGroup <= 0 || npcInvasionGroup != Main.invasionType)
|
|
return;
|
|
int num = 1;
|
|
switch (this.type)
|
|
{
|
|
case 216:
|
|
num = 5;
|
|
break;
|
|
case 387:
|
|
num = 0;
|
|
break;
|
|
case 395:
|
|
num = 10;
|
|
break;
|
|
case 471:
|
|
num = 10;
|
|
break;
|
|
case 472:
|
|
num = 0;
|
|
break;
|
|
case 491:
|
|
num = 10;
|
|
break;
|
|
}
|
|
if (num <= 0)
|
|
return;
|
|
Main.invasionSize -= num;
|
|
if (Main.invasionSize < 0)
|
|
Main.invasionSize = 0;
|
|
if (Main.netMode != 1)
|
|
Main.ReportInvasionProgress(Main.invasionSizeStart - Main.invasionSize, Main.invasionSizeStart, npcInvasionGroup + 3, 0);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(78, number: Main.invasionProgress, number2: ((float) Main.invasionProgressMax), number3: ((float) Main.invasionProgressIcon));
|
|
}
|
|
}
|
|
|
|
public void DropTombstoneTownNPC(NetworkText deathText)
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
float num1 = 0.1f;
|
|
if (Main.rand.Next(2) == 0)
|
|
num1 = -0.1f;
|
|
float num2 = (float) Main.rand.Next(-35, 36) * 0.1f;
|
|
while ((double) num2 < 2.0 && (double) num2 > -2.0)
|
|
num2 += (float) Main.rand.Next(-30, 31) * 0.1f;
|
|
int num3 = Main.rand.Next(6);
|
|
int Type = this.type == 17 || this.type == 441 ? Main.rand.Next(5) + 527 : (num3 != 0 ? num3 + 200 : 43);
|
|
int index = Projectile.NewProjectile(this.position.X + (float) (this.width / 2), this.position.Y + (float) (this.height / 2), (float) Main.rand.Next(10, 30) * num1 + num2, (float) Main.rand.Next(-40, -20) * 0.1f, Type, 0, 0.0f, Main.myPlayer);
|
|
Main.projectile[index].miscText = deathText.ToString();
|
|
}
|
|
|
|
public static int GetNPCInvasionGroup(int npcID)
|
|
{
|
|
int num = 0;
|
|
if (npcID <= 216)
|
|
{
|
|
if (npcID <= 111)
|
|
{
|
|
if ((uint) (npcID - 26) > 3U && npcID != 111)
|
|
goto label_18;
|
|
}
|
|
else if ((uint) (npcID - 143) > 2U)
|
|
{
|
|
if ((uint) (npcID - 212) <= 4U)
|
|
goto label_13;
|
|
else
|
|
goto label_18;
|
|
}
|
|
else
|
|
{
|
|
num = 2;
|
|
goto label_18;
|
|
}
|
|
}
|
|
else if (npcID <= 395)
|
|
{
|
|
switch (npcID - 305)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 20:
|
|
case 21:
|
|
case 22:
|
|
case 24:
|
|
case 25:
|
|
num = -2;
|
|
goto label_18;
|
|
case 11:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
case 16:
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 23:
|
|
case 26:
|
|
case 27:
|
|
case 28:
|
|
case 29:
|
|
case 30:
|
|
case 31:
|
|
case 32:
|
|
goto label_18;
|
|
case 33:
|
|
case 34:
|
|
case 35:
|
|
case 36:
|
|
case 37:
|
|
case 38:
|
|
case 39:
|
|
case 40:
|
|
case 41:
|
|
case 42:
|
|
case 43:
|
|
case 44:
|
|
case 45:
|
|
num = -1;
|
|
goto label_18;
|
|
default:
|
|
switch (npcID - 381)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 14:
|
|
num = 4;
|
|
goto label_18;
|
|
default:
|
|
goto label_18;
|
|
}
|
|
}
|
|
}
|
|
else if ((uint) (npcID - 471) > 1U)
|
|
{
|
|
if (npcID != 491)
|
|
{
|
|
if ((uint) (npcID - 547) <= 31U)
|
|
{
|
|
num = -3;
|
|
goto label_18;
|
|
}
|
|
else
|
|
goto label_18;
|
|
}
|
|
else
|
|
goto label_13;
|
|
}
|
|
num = 1;
|
|
goto label_18;
|
|
label_13:
|
|
num = 3;
|
|
label_18:
|
|
return num;
|
|
}
|
|
|
|
private void DropEoWLoot(bool fromCheckDead = true)
|
|
{
|
|
bool flag = true;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && 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();
|
|
}
|
|
else
|
|
this.NPCLoot();
|
|
}
|
|
|
|
private void CheckProgressFrostMoon()
|
|
{
|
|
if (!Main.snowMoon)
|
|
return;
|
|
NetworkText text = NetworkText.Empty;
|
|
int[] numArray = new int[21]
|
|
{
|
|
0,
|
|
25,
|
|
15,
|
|
10,
|
|
30,
|
|
100,
|
|
160,
|
|
180,
|
|
200,
|
|
250,
|
|
300,
|
|
375,
|
|
450,
|
|
525,
|
|
675,
|
|
850,
|
|
1025,
|
|
1325,
|
|
1550,
|
|
2000,
|
|
0
|
|
};
|
|
int progressMax = numArray[NPC.waveNumber];
|
|
switch (NPC.waveNumber)
|
|
{
|
|
case 1:
|
|
text = Lang.GetInvasionWaveText(2, (short) 338, (short) 350);
|
|
break;
|
|
case 2:
|
|
text = Lang.GetInvasionWaveText(3, (short) 338, (short) 350, (short) 342, (short) 348);
|
|
break;
|
|
case 3:
|
|
text = Lang.GetInvasionWaveText(4, (short) 344, (short) 338, (short) 350, (short) 342);
|
|
break;
|
|
case 4:
|
|
text = Lang.GetInvasionWaveText(5, (short) 344, (short) 338, (short) 350, (short) 348);
|
|
break;
|
|
case 5:
|
|
text = Lang.GetInvasionWaveText(6, (short) 344, (short) 350, (short) 348, (short) 347);
|
|
break;
|
|
case 6:
|
|
text = Lang.GetInvasionWaveText(7, (short) 346, (short) 342, (short) 350, (short) 338);
|
|
break;
|
|
case 7:
|
|
text = Lang.GetInvasionWaveText(8, (short) 346, (short) 347, (short) 350, (short) 348, (short) 351);
|
|
break;
|
|
case 8:
|
|
text = Lang.GetInvasionWaveText(9, (short) 346, (short) 344, (short) 348, (short) 347, (short) 342);
|
|
break;
|
|
case 9:
|
|
text = Lang.GetInvasionWaveText(10, (short) 346, (short) 344, (short) 351, (short) 338, (short) 347);
|
|
break;
|
|
case 10:
|
|
text = Lang.GetInvasionWaveText(11, (short) 345, (short) 352, (short) 338, (short) 342);
|
|
break;
|
|
case 11:
|
|
text = Lang.GetInvasionWaveText(12, (short) 345, (short) 344, (short) 342, (short) 343, (short) 338);
|
|
break;
|
|
case 12:
|
|
text = Lang.GetInvasionWaveText(13, (short) 345, (short) 346, (short) 342, (short) 352, (short) 343, (short) 347);
|
|
break;
|
|
case 13:
|
|
text = Lang.GetInvasionWaveText(14, (short) 345, (short) 346, (short) 344, (short) 343, (short) 351);
|
|
break;
|
|
case 14:
|
|
text = Lang.GetInvasionWaveText(15, (short) 345, (short) 346, (short) 344, (short) 343, (short) 347);
|
|
break;
|
|
case 15:
|
|
text = Lang.GetInvasionWaveText(16, (short) 345, (short) 346, (short) 344, (short) 343, (short) 352);
|
|
break;
|
|
case 16:
|
|
text = Lang.GetInvasionWaveText(17, (short) 345, (short) 346, (short) 344, (short) 343, (short) 351, (short) 347);
|
|
break;
|
|
case 17:
|
|
text = Lang.GetInvasionWaveText(18, (short) 345, (short) 346, (short) 344, (short) 343, (short) 348, (short) 351);
|
|
break;
|
|
case 18:
|
|
text = Lang.GetInvasionWaveText(19, (short) 345, (short) 346, (short) 344, (short) 343);
|
|
break;
|
|
case 19:
|
|
text = Lang.GetInvasionWaveText(-1, (short) 345, (short) 346, (short) 344);
|
|
break;
|
|
}
|
|
float num = 0.0f;
|
|
switch (this.type)
|
|
{
|
|
case 338:
|
|
case 339:
|
|
case 340:
|
|
num = 1f;
|
|
break;
|
|
case 341:
|
|
num = 20f;
|
|
break;
|
|
case 342:
|
|
num = 2f;
|
|
break;
|
|
case 343:
|
|
num = 18f;
|
|
break;
|
|
case 344:
|
|
num = 50f;
|
|
break;
|
|
case 345:
|
|
num = 150f;
|
|
break;
|
|
case 346:
|
|
num = 100f;
|
|
break;
|
|
case 347:
|
|
num = 8f;
|
|
break;
|
|
case 348:
|
|
case 349:
|
|
num = 4f;
|
|
break;
|
|
case 350:
|
|
num = 3f;
|
|
break;
|
|
}
|
|
if (Main.expertMode)
|
|
num *= 2f;
|
|
float waveKills = NPC.waveKills;
|
|
NPC.waveKills += num;
|
|
if ((double) NPC.waveKills >= (double) progressMax && progressMax != 0)
|
|
{
|
|
NPC.waveKills = 0.0f;
|
|
++NPC.waveNumber;
|
|
progressMax = numArray[NPC.waveNumber];
|
|
if (text != NetworkText.Empty)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(text.ToString(), (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(text, new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
if (NPC.waveNumber == 15)
|
|
AchievementsHelper.NotifyProgressionEvent(14);
|
|
}
|
|
}
|
|
if ((double) NPC.waveKills == (double) waveKills || (double) num == 0.0)
|
|
return;
|
|
if (Main.netMode != 1)
|
|
Main.ReportInvasionProgress((int) NPC.waveKills, progressMax, 1, NPC.waveNumber);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(78, number: Main.invasionProgress, number2: ((float) Main.invasionProgressMax), number3: 1f, number4: ((float) NPC.waveNumber));
|
|
}
|
|
|
|
private void CheckProgressPumpkinMoon()
|
|
{
|
|
if (!Main.pumpkinMoon)
|
|
return;
|
|
NetworkText text = NetworkText.Empty;
|
|
int[] numArray = new int[16]
|
|
{
|
|
0,
|
|
25,
|
|
40,
|
|
50,
|
|
80,
|
|
100,
|
|
160,
|
|
180,
|
|
200,
|
|
250,
|
|
300,
|
|
375,
|
|
450,
|
|
525,
|
|
675,
|
|
0
|
|
};
|
|
int progressMax = numArray[NPC.waveNumber];
|
|
switch (NPC.waveNumber)
|
|
{
|
|
case 1:
|
|
text = Lang.GetInvasionWaveText(2, (short) 305, (short) 326);
|
|
break;
|
|
case 2:
|
|
text = Lang.GetInvasionWaveText(3, (short) 305, (short) 326, (short) 329);
|
|
break;
|
|
case 3:
|
|
text = Lang.GetInvasionWaveText(4, (short) 305, (short) 326, (short) 329, (short) 325);
|
|
break;
|
|
case 4:
|
|
text = Lang.GetInvasionWaveText(5, (short) 305, (short) 326, (short) 329, (short) 330, (short) 325);
|
|
break;
|
|
case 5:
|
|
text = Lang.GetInvasionWaveText(6, (short) 326, (short) 329, (short) 330, (short) 325);
|
|
break;
|
|
case 6:
|
|
text = Lang.GetInvasionWaveText(7, (short) 305, (short) 329, (short) 330, (short) 327);
|
|
break;
|
|
case 7:
|
|
text = Lang.GetInvasionWaveText(8, (short) 326, (short) 329, (short) 330, (short) 327);
|
|
break;
|
|
case 8:
|
|
text = Lang.GetInvasionWaveText(9, (short) 305, (short) 315, (short) 325, (short) 327);
|
|
break;
|
|
case 9:
|
|
text = Lang.GetInvasionWaveText(10, (short) 326, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327);
|
|
break;
|
|
case 10:
|
|
text = Lang.GetInvasionWaveText(11, (short) 305, (short) 326, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327);
|
|
break;
|
|
case 11:
|
|
text = Lang.GetInvasionWaveText(12, (short) 326, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327);
|
|
break;
|
|
case 12:
|
|
text = Lang.GetInvasionWaveText(13, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327);
|
|
break;
|
|
case 13:
|
|
text = Lang.GetInvasionWaveText(14, (short) 315, (short) 325, (short) 327);
|
|
break;
|
|
case 14:
|
|
text = Lang.GetInvasionWaveText(-1, (short) 325, (short) 327);
|
|
break;
|
|
}
|
|
float num = 0.0f;
|
|
switch (this.type)
|
|
{
|
|
case 305:
|
|
case 306:
|
|
case 307:
|
|
case 308:
|
|
case 309:
|
|
case 310:
|
|
case 311:
|
|
case 312:
|
|
case 313:
|
|
case 314:
|
|
num = 1f;
|
|
break;
|
|
case 315:
|
|
num = 25f;
|
|
break;
|
|
case 325:
|
|
num = 75f;
|
|
break;
|
|
case 326:
|
|
num = 2f;
|
|
break;
|
|
case 327:
|
|
num = 150f;
|
|
break;
|
|
case 329:
|
|
num = 4f;
|
|
break;
|
|
case 330:
|
|
num = 8f;
|
|
break;
|
|
}
|
|
if (Main.expertMode)
|
|
num *= 2f;
|
|
float waveKills = NPC.waveKills;
|
|
NPC.waveKills += num;
|
|
if ((double) NPC.waveKills >= (double) progressMax && progressMax != 0)
|
|
{
|
|
NPC.waveKills = 0.0f;
|
|
++NPC.waveNumber;
|
|
progressMax = numArray[NPC.waveNumber];
|
|
if (text != NetworkText.Empty)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(text.ToString(), (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(text, new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
if (NPC.waveNumber == 15)
|
|
AchievementsHelper.NotifyProgressionEvent(15);
|
|
}
|
|
}
|
|
if ((double) NPC.waveKills == (double) waveKills || (double) num == 0.0)
|
|
return;
|
|
if (Main.netMode != 1)
|
|
Main.ReportInvasionProgress((int) NPC.waveKills, progressMax, 2, NPC.waveNumber);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(78, number: Main.invasionProgress, number2: ((float) Main.invasionProgressMax), number3: 2f, number4: ((float) NPC.waveNumber));
|
|
}
|
|
|
|
public static void ResetKillCount()
|
|
{
|
|
for (int index = 0; index < 663; ++index)
|
|
NPC.killCount[index] = 0;
|
|
}
|
|
|
|
public bool AnyInteractions()
|
|
{
|
|
if (Main.netMode == 0)
|
|
{
|
|
if (this.playerInteraction[Main.myPlayer])
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (this.playerInteraction[index])
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static void SetEventFlagCleared(ref bool eventFlag, int gameEventId)
|
|
{
|
|
bool flag = eventFlag;
|
|
eventFlag = true;
|
|
if (eventFlag == flag)
|
|
return;
|
|
NPC.OnGameEventClearedForTheFirstTime(gameEventId);
|
|
}
|
|
|
|
public static void OnGameEventClearedForTheFirstTime(int gameEventId)
|
|
{
|
|
switch (gameEventId)
|
|
{
|
|
case 4:
|
|
break;
|
|
case 21:
|
|
case 22:
|
|
break;
|
|
default:
|
|
LanternNight.NextNightIsLanternNight = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void NPCLootOld()
|
|
{
|
|
if (Main.netMode == 1 || this.type >= 663)
|
|
return;
|
|
bool flag1 = false;
|
|
bool flag2 = NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3;
|
|
Player closestPlayer = Main.player[(int) Player.FindClosest(this.position, this.width, this.height)];
|
|
if (!flag1)
|
|
{
|
|
this.CountKillForAchievements();
|
|
if (this.GetWereThereAnyInteractions())
|
|
this.CountKillForBannersAndDropThem();
|
|
}
|
|
if (this.type == 23 && Main.hardMode || this.SpawnedFromStatue && NPCID.Sets.NoEarlymodeLootWhenSpawnedFromStatue[this.type] && !Main.hardMode || this.SpawnedFromStatue && (double) NPCID.Sets.StatueSpawnedDropRarity[this.type] != -1.0 && ((double) Main.rand.NextFloat() >= (double) NPCID.Sets.StatueSpawnedDropRarity[this.type] || !this.AnyInteractions()))
|
|
return;
|
|
this.NPCLoot_DropFood(closestPlayer);
|
|
if (this.type == 86)
|
|
{
|
|
int range = Main.expertMode ? 30 : 40;
|
|
if (closestPlayer.RollLuck(range) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3260);
|
|
}
|
|
if (Main.slimeRain && Main.slimeRainNPC[this.type] && !flag1 && !NPC.AnyNPCs(50))
|
|
{
|
|
int num = 150;
|
|
if (NPC.downedSlimeKing)
|
|
num /= 2;
|
|
++Main.slimeRainKillCount;
|
|
if (Main.slimeRainKillCount >= num)
|
|
{
|
|
NPC.SpawnOnPlayer(closestPlayer.whoAmI, 50);
|
|
Main.slimeRainKillCount = -num / 2;
|
|
}
|
|
}
|
|
if (!closestPlayer.ZoneDungeon && !flag1)
|
|
{
|
|
bool flag3 = false;
|
|
if (Main.expertMode && closestPlayer.RollLuck(5) == 0)
|
|
flag3 = true;
|
|
else if (closestPlayer.RollLuck(5) == 0)
|
|
flag3 = true;
|
|
if (this.boss)
|
|
flag3 = false;
|
|
switch (this.type)
|
|
{
|
|
case 1:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
case 535:
|
|
flag3 = false;
|
|
break;
|
|
}
|
|
if (((!Main.hardMode || this.lifeMax <= 1 || this.damage <= 0 || this.friendly ? 0 : ((double) this.position.Y > Main.rockLayer * 16.0 ? 1 : 0)) & (flag3 ? 1 : 0)) != 0 && this.type != 121 && (double) this.value > 0.0)
|
|
{
|
|
if (closestPlayer.ZoneCorrupt || closestPlayer.ZoneCrimson)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 521);
|
|
if (closestPlayer.ZoneHallow)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 520);
|
|
}
|
|
}
|
|
if (this.type == 1 && (double) this.ai[1] > 0.0)
|
|
{
|
|
int Type = (int) this.ai[1];
|
|
if (Type > 0 && Type < 5045)
|
|
{
|
|
int forSlimeItemDrop = NPC.GetStackForSlimeItemDrop(Type);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type, forSlimeItemDrop);
|
|
}
|
|
}
|
|
if (this.type == 22 && this.GivenOrTypeName == "Andrew")
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 867);
|
|
if (this.type == 178 && this.GivenOrTypeName == "Whitney")
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4372);
|
|
if (this.type == 353 && closestPlayer.RollLuck(8) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3352);
|
|
if (this.type == 441 && closestPlayer.RollLuck(8) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3351);
|
|
if (this.type == 227 && closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3350);
|
|
if (this.type == 550 && closestPlayer.RollLuck(6) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3821);
|
|
if (this.type == 208 && closestPlayer.RollLuck(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3548, Main.rand.Next(30, 61));
|
|
if (this.type == 207 && closestPlayer.RollLuck(8) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3349);
|
|
if (Main.hardMode && !flag1 && (double) this.value > 0.0)
|
|
{
|
|
if (!NPC.downedMechBoss1 && closestPlayer.RollLuck(2500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 556);
|
|
else if (!NPC.downedMechBoss2 && closestPlayer.RollLuck(2500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 544);
|
|
else if (!NPC.downedMechBoss3 && closestPlayer.RollLuck(2500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 557);
|
|
}
|
|
if (Main.halloween && (double) this.value > 0.0 && (double) this.value < 500.0 && this.damage < 40 && this.defense < 20 && !flag1)
|
|
{
|
|
if (closestPlayer.RollLuck(2000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1825);
|
|
else if (closestPlayer.RollLuck(2000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1827);
|
|
}
|
|
if (Main.hardMode && (double) this.value > 0.0 && !flag1)
|
|
{
|
|
if (closestPlayer.RollLuck(2500) == 0 && closestPlayer.ZoneJungle)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1533);
|
|
if (closestPlayer.RollLuck(2500) == 0 && closestPlayer.ZoneCorrupt)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1534);
|
|
if (closestPlayer.RollLuck(2500) == 0 && closestPlayer.ZoneCrimson)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1535);
|
|
if (closestPlayer.RollLuck(2500) == 0 && closestPlayer.ZoneHallow)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1536);
|
|
if (closestPlayer.RollLuck(2500) == 0 && closestPlayer.ZoneSnow)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1537);
|
|
}
|
|
if (DD2Event.Ongoing)
|
|
{
|
|
switch (this.type)
|
|
{
|
|
case 552:
|
|
case 553:
|
|
case 554:
|
|
DD2Event.AnnounceGoblinDeath(this);
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 555:
|
|
case 556:
|
|
case 557:
|
|
case 561:
|
|
case 562:
|
|
case 563:
|
|
case 570:
|
|
case 571:
|
|
case 572:
|
|
case 573:
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 558:
|
|
case 559:
|
|
case 560:
|
|
case 568:
|
|
case 569:
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 564:
|
|
if (Main.rand.Next(7) == 0)
|
|
Item.NewItem(this.position, this.Size, 3864);
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem(this.position, this.Size, 3815, 4);
|
|
else
|
|
Item.NewItem(this.position, this.Size, 3814);
|
|
}
|
|
if (Main.rand.Next(Main.expertMode ? 2 : 3) == 0)
|
|
Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom<short>(Main.rand, (short) 3857, (short) 3855));
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 565:
|
|
if (Main.rand.Next(14) == 0)
|
|
Item.NewItem(this.position, this.Size, 3864);
|
|
if (Main.rand.Next(10) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem(this.position, this.Size, 3815, 4);
|
|
else
|
|
Item.NewItem(this.position, this.Size, 3814);
|
|
}
|
|
if (Main.rand.Next(6) == 0)
|
|
Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom<short>(Main.rand, (short) 3857, (short) 3855));
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 574:
|
|
case 575:
|
|
case 578:
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 576:
|
|
if (Main.rand.Next(7) == 0)
|
|
Item.NewItem(this.position, this.Size, 3865);
|
|
if (Main.rand.Next(Main.expertMode ? 2 : 3) == 0)
|
|
Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom<short>(Main.rand, (short) 3809, (short) 3811, (short) 3810, (short) 3812));
|
|
if (Main.rand.Next(Main.expertMode ? 2 : 3) == 0)
|
|
Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom<short>(Main.rand, (short) 3852, (short) 3854, (short) 3823, (short) 3835, (short) 3836));
|
|
if (Main.rand.Next(Main.expertMode ? 4 : 5) == 0)
|
|
Item.NewItem(this.position, this.Size, 3856);
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 577:
|
|
if (Main.rand.Next(14) == 0)
|
|
Item.NewItem(this.position, this.Size, 3865);
|
|
if (Main.rand.Next(6) == 0)
|
|
Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom<short>(Main.rand, (short) 3809, (short) 3811, (short) 3810, (short) 3812));
|
|
if (Main.rand.Next(6) == 0)
|
|
Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom<short>(Main.rand, (short) 3852, (short) 3854, (short) 3823, (short) 3835, (short) 3836));
|
|
if (Main.rand.Next(10) == 0)
|
|
Item.NewItem(this.position, this.Size, 3856);
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (this.type == 68)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1169);
|
|
if (Main.snowMoon)
|
|
{
|
|
int waveNumber = NPC.waveNumber;
|
|
if (Main.expertMode)
|
|
waveNumber += 7;
|
|
int range = (int) ((double) (30 - waveNumber) / 2.5);
|
|
if (Main.expertMode)
|
|
range -= 2;
|
|
if (range < 1)
|
|
range = 1;
|
|
if (this.type == 344)
|
|
NPC.SetEventFlagCleared(ref NPC.downedChristmasTree, 21);
|
|
if (this.type == 345)
|
|
NPC.SetEventFlagCleared(ref NPC.downedChristmasIceQueen, 20);
|
|
if (this.type == 346)
|
|
NPC.SetEventFlagCleared(ref NPC.downedChristmasSantank, 22);
|
|
if ((this.type == 344 || this.type == 345 || this.type == 346) && closestPlayer.RollLuck(range) == 0 && waveNumber >= 15)
|
|
{
|
|
int maxValue = 4;
|
|
if (waveNumber == 16)
|
|
maxValue = 4;
|
|
if (waveNumber == 17)
|
|
maxValue = 3;
|
|
if (waveNumber == 18)
|
|
maxValue = 3;
|
|
if (waveNumber == 19)
|
|
maxValue = 2;
|
|
if (waveNumber >= 20)
|
|
maxValue = 2;
|
|
if (Main.expertMode && Main.rand.Next(3) == 0)
|
|
--maxValue;
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
if (this.type == 344)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1962);
|
|
if (this.type == 345)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1960);
|
|
if (this.type == 346)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1961);
|
|
}
|
|
}
|
|
if (closestPlayer.RollLuck(range) == 0)
|
|
{
|
|
if (this.type == 344)
|
|
{
|
|
int num = Main.rand.Next(3);
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1871, pfix: -1);
|
|
}
|
|
else
|
|
{
|
|
if (num == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1916);
|
|
if (num == 1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1928, pfix: -1);
|
|
if (num == 2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1930, pfix: -1);
|
|
}
|
|
}
|
|
if (this.type == 346)
|
|
{
|
|
int num = Main.rand.Next(2);
|
|
if (num == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1910, pfix: -1);
|
|
if (num == 1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1929, pfix: -1);
|
|
}
|
|
if (this.type == 345)
|
|
{
|
|
if (NPC.waveNumber >= 15 && closestPlayer.RollLuck(30) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1914);
|
|
else if (closestPlayer.RollLuck(15) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1959);
|
|
}
|
|
else
|
|
{
|
|
int num = Main.rand.Next(3);
|
|
if (num == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1931, pfix: -1);
|
|
if (num == 1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1946, pfix: -1);
|
|
if (num == 2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1947, pfix: -1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 341)
|
|
{
|
|
int num = Main.rand.Next(5, 11);
|
|
for (int index = 0; index < num; ++index)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (Main.xMas)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1869);
|
|
}
|
|
if (this.type >= 338 && this.type <= 340 && closestPlayer.RollLuck(5) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type >= 338 && this.type <= 340 && closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1943 + Main.rand.Next(3));
|
|
if (this.type == 342 && Main.rand.Next(3) != 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (Main.pumpkinMoon)
|
|
{
|
|
if (this.type == 325)
|
|
NPC.SetEventFlagCleared(ref NPC.downedHalloweenTree, 4);
|
|
if (this.type == 327)
|
|
NPC.SetEventFlagCleared(ref NPC.downedHalloweenKing, 5);
|
|
int waveNumber = NPC.waveNumber;
|
|
if (Main.expertMode)
|
|
waveNumber += 6;
|
|
int maxValue = (int) ((double) (17 - waveNumber) / 1.25);
|
|
if (Main.expertMode)
|
|
--maxValue;
|
|
if (maxValue < 1)
|
|
maxValue = 1;
|
|
if (waveNumber >= 15)
|
|
{
|
|
if (this.type == 325)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1855);
|
|
if (this.type == 327)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1856);
|
|
}
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
if (this.type == 315 && Main.rand.Next(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1857);
|
|
if (this.type >= 305 && this.type <= 314 && Main.rand.Next(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(1788, 1791));
|
|
if (this.type == 325)
|
|
{
|
|
int num = Main.rand.Next(5);
|
|
if (num == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1829);
|
|
if (num == 1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1831);
|
|
if (num == 2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1835, pfix: -1);
|
|
if (num == 2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1836, Main.rand.Next(30, 61));
|
|
if (num == 3)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1837);
|
|
if (num == 4)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1845, pfix: -1);
|
|
if (Main.expertMode && Main.rand.Next(5) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4444);
|
|
}
|
|
if (this.type == 327)
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
if (num == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1782, pfix: -1);
|
|
if (num == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1783, Main.rand.Next(50, 101));
|
|
if (num == 1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1784, pfix: -1);
|
|
if (num == 1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1785, Main.rand.Next(25, 51));
|
|
if (num == 2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1811);
|
|
if (num == 3)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1826, pfix: -1);
|
|
if (num == 4)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1801, pfix: -1);
|
|
if (num == 5)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1802, pfix: -1);
|
|
if (num == 6)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1798);
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 325)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1729, Main.rand.Next(30, 51));
|
|
if (this.type == 326)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1729, Main.rand.Next(1, 5));
|
|
if (this.type >= 305 && this.type <= 314 && Main.rand.Next(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 326 && Main.rand.Next(6) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 329 && Main.rand.Next(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 330 && Main.rand.Next(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 315)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (Main.halloween && this.lifeMax > 1 && this.damage > 0 && !this.friendly && this.type != 121 && this.type != 23 && (double) this.value > 0.0 && closestPlayer.RollLuck(80) == 0 && !flag1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1774);
|
|
if (Main.xMas && this.lifeMax > 1 && this.damage > 0 && !this.friendly && this.type != 121 && (double) this.value > 0.0 && closestPlayer.RollLuck(13) == 0 && !flag1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1869);
|
|
if (this.lifeMax > 5 && (double) this.value > 0.0 && !this.friendly && Main.hardMode && (double) this.position.Y / 16.0 > (double) Main.UnderworldLayer && !flag1 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2701, Main.rand.Next(20, 51));
|
|
if (this.type == 325 || this.type == 327 || this.type == 344 || this.type == 345 || this.type == 346)
|
|
{
|
|
int num = Main.rand.Next(6) + 6;
|
|
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 == 156 && closestPlayer.RollLuck(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1518);
|
|
if (this.type == 243 && closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1519);
|
|
if (this.type >= 269 && this.type <= 280 && closestPlayer.RollLuck(450) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1517);
|
|
if ((this.type == 158 || this.type == 159) && closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1520);
|
|
if (this.type == 48 && closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1516);
|
|
if (this.type == 176 && closestPlayer.RollLuck(150) == 0 && NPC.downedMechBossAny)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1521);
|
|
if (this.type == 205 && closestPlayer.RollLuck(2) == 0 && NPC.downedMechBossAny)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1611);
|
|
if (this.type == 483 || this.type == 482)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3086, Main.rand.Next(5, 11), pfix: -1);
|
|
if (!Main.hardMode && closestPlayer.RollLuck(100) == 0 && this.HasPlayerTarget && this.lifeMax > 5 && !this.friendly && !flag1 && closestPlayer.RollLuck(4) == 0 && (double) this.position.Y / 16.0 > (double) (Main.maxTilesY - 350) && NPC.downedBoss3)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3282, pfix: -1);
|
|
if (Main.hardMode && this.HasPlayerTarget && Main.player[this.target].ZoneSnow && closestPlayer.RollLuck(300) == 0 && this.HasPlayerTarget && this.lifeMax > 5 && !this.friendly && (double) this.value > 0.0 && !flag1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3289, pfix: -1);
|
|
else if (Main.hardMode && closestPlayer.RollLuck(200) == 0 && this.HasPlayerTarget && this.lifeMax > 5 && !this.friendly && (double) this.value > 0.0 && !flag1)
|
|
{
|
|
if (Main.player[this.target].ZoneJungle && NPC.downedMechBossAny)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3286, pfix: -1);
|
|
else if (Main.player[this.target].ZoneDungeon && NPC.downedPlantBoss && Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3291, pfix: -1);
|
|
else if ((double) this.position.Y / 16.0 > (Main.rockLayer + (double) (Main.maxTilesY * 2)) / 3.0 && !Main.player[this.target].ZoneDungeon && Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3290, pfix: -1);
|
|
}
|
|
int num1 = 1;
|
|
if (Main.expertMode && Main.rand.Next(2) == 0)
|
|
num1 = 2;
|
|
for (int index = 0; index < num1; ++index)
|
|
{
|
|
if (this.type == 461 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 497, pfix: -1);
|
|
if ((this.type == 159 || this.type == 158) && closestPlayer.RollLuck(35) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 900, pfix: -1);
|
|
if (this.type == 251 && closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1311, pfix: -1);
|
|
if (NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3)
|
|
{
|
|
if (this.type == 477)
|
|
{
|
|
if (closestPlayer.RollLuck(20) == 0 && NPC.downedPlantBoss)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2770, pfix: -1);
|
|
++index;
|
|
}
|
|
if (closestPlayer.RollLuck(4) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1570, pfix: -1);
|
|
++index;
|
|
}
|
|
else if (closestPlayer.RollLuck(3) == 0 && NPC.downedPlantBoss)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3292, pfix: -1);
|
|
++index;
|
|
}
|
|
}
|
|
if (this.type == 253 && closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1327, pfix: -1);
|
|
}
|
|
if (NPC.downedPlantBoss)
|
|
{
|
|
if (this.type == 460 && closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3098, pfix: -1);
|
|
if (this.type == 468 && closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3105, pfix: -1);
|
|
if (this.type == 466 && closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3106, pfix: -1);
|
|
if (this.type == 467 && closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3249, pfix: -1);
|
|
if (this.type == 463 && closestPlayer.RollLuck(25) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3107, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3108, Main.rand.Next(100, 201), pfix: -1);
|
|
}
|
|
}
|
|
}
|
|
if (Main.bloodMoon && Main.hardMode && closestPlayer.RollLuck(1000) == 0 && (double) this.value > 0.0 && !flag1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1314, pfix: -1);
|
|
if (this.type == 77 && closestPlayer.RollLuck(150) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 723, pfix: -1);
|
|
if (this.type == 47 && closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4670, pfix: -1);
|
|
if (this.type == 464 && closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4671, pfix: -1);
|
|
if (closestPlayer.RollLuck(100) == 0 || Main.expertMode && closestPlayer.RollLuck(100) == 0)
|
|
{
|
|
int Type1 = -1;
|
|
int Type2 = -1;
|
|
switch (this.type)
|
|
{
|
|
case 34:
|
|
case 83:
|
|
case 84:
|
|
case 179:
|
|
case 289:
|
|
Type1 = 891;
|
|
break;
|
|
case 42:
|
|
case 141:
|
|
case 176:
|
|
case 231:
|
|
case 232:
|
|
case 233:
|
|
case 234:
|
|
case 235:
|
|
Type1 = 887;
|
|
break;
|
|
case 75:
|
|
Type1 = Main.rand.Next(2) != 0 ? 890 : 889;
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
{
|
|
Type2 = Type1 != 889 ? 889 : 890;
|
|
break;
|
|
}
|
|
break;
|
|
case 77:
|
|
case 273:
|
|
case 274:
|
|
case 275:
|
|
case 276:
|
|
Type1 = 886;
|
|
break;
|
|
case 78:
|
|
case 82:
|
|
Type1 = 889;
|
|
break;
|
|
case 79:
|
|
Type1 = Main.rand.Next(2) != 0 ? 890 : 888;
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
{
|
|
Type2 = Type1 != 888 ? 888 : 890;
|
|
break;
|
|
}
|
|
break;
|
|
case 80:
|
|
case 93:
|
|
case 109:
|
|
Type1 = 893;
|
|
break;
|
|
case 81:
|
|
case 183:
|
|
Type1 = 888;
|
|
break;
|
|
case 94:
|
|
case 182:
|
|
Type1 = 892;
|
|
break;
|
|
case 102:
|
|
case 104:
|
|
case 269:
|
|
case 270:
|
|
case 271:
|
|
case 272:
|
|
Type1 = 885;
|
|
break;
|
|
case 103:
|
|
Type1 = 890;
|
|
break;
|
|
case 480:
|
|
Type1 = 3781;
|
|
break;
|
|
}
|
|
if (Type1 != -1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type1, pfix: -1);
|
|
if (Type2 != -1)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type2, pfix: -1);
|
|
}
|
|
int num2 = 1;
|
|
if (Main.expertMode && Main.rand.Next(2) == 0)
|
|
num2 = 2;
|
|
for (int index = 0; index < num2; ++index)
|
|
{
|
|
if (this.type == 290)
|
|
{
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1513, pfix: -1);
|
|
else if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 938, pfix: -1);
|
|
}
|
|
if (this.type == 287 && closestPlayer.RollLuck(6) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 963, pfix: -1);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 977, pfix: -1);
|
|
}
|
|
if (this.type == 291)
|
|
{
|
|
if (closestPlayer.RollLuck(12) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1300, pfix: -1);
|
|
else if (closestPlayer.RollLuck(12) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1254, pfix: -1);
|
|
}
|
|
if (this.type == 292)
|
|
{
|
|
if (closestPlayer.RollLuck(12) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1514, pfix: -1);
|
|
else if (closestPlayer.RollLuck(12) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 679, pfix: -1);
|
|
}
|
|
if (this.type == 293 && closestPlayer.RollLuck(18) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 759, pfix: -1);
|
|
if ((this.type == 281 || this.type == 282) && closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1446, pfix: -1);
|
|
if ((this.type == 283 || this.type == 284) && closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1444, pfix: -1);
|
|
if ((this.type == 285 || this.type == 286) && closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1445, pfix: -1);
|
|
if (this.type >= 269 && this.type <= 280)
|
|
{
|
|
if (closestPlayer.RollLuck(400) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1183, pfix: -1);
|
|
else if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1266, pfix: -1);
|
|
else if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 671, pfix: -1);
|
|
}
|
|
}
|
|
if (this.lifeMax > 100 && this.type != 288 && (double) this.value > 0.0 && this.HasPlayerTarget && Main.hardMode && NPC.downedPlantBoss && Main.player[this.target].ZoneDungeon && !flag1)
|
|
{
|
|
int range = 13;
|
|
if (Main.expertMode)
|
|
range = 9;
|
|
if (closestPlayer.RollLuck(range) == 0 && Main.wallDungeon[(int) Main.tile[(int) this.Center.X / 16, (int) this.Center.Y / 16].wall])
|
|
NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 288);
|
|
}
|
|
if (this.type == 288)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1508, Main.rand.Next(1, 3), pfix: -1);
|
|
if (this.type == 156 && closestPlayer.RollLuck(30) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 683, pfix: -1);
|
|
if ((this.type == 195 || this.type == 196) && (Main.expertMode || closestPlayer.RollLuck(2) == 0))
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3102, pfix: -1);
|
|
if (this.type == 245)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2110, pfix: -1);
|
|
if (closestPlayer.RollLuck(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1294, pfix: -1);
|
|
switch (Main.rand.Next(7))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1258, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1261, Main.rand.Next(60, 100));
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1122, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 899, pfix: -1);
|
|
break;
|
|
case 3:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1248, pfix: -1);
|
|
break;
|
|
case 4:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1295, pfix: -1);
|
|
break;
|
|
case 5:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1296, pfix: -1);
|
|
break;
|
|
case 6:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1297, pfix: -1);
|
|
break;
|
|
}
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2218, Main.rand.Next(4, 9), pfix: -1);
|
|
}
|
|
NPC.SetEventFlagCleared(ref NPC.downedGolemBoss, 6);
|
|
}
|
|
if (this.type == 471 && (Main.expertMode || closestPlayer.RollLuck(2) == 0))
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3052, pfix: -1);
|
|
else if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3053, pfix: -1);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3054, pfix: -1);
|
|
}
|
|
if (this.type == 268)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1332, Main.rand.Next(2, 6));
|
|
if (this.type == 370)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedFishron, 7);
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2588, pfix: -1);
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2609, pfix: -1);
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2611, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2624, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2622, pfix: -1);
|
|
break;
|
|
case 3:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2621, pfix: -1);
|
|
break;
|
|
case 4:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2623, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 614)
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 281, 175, 0.0f, Main.myPlayer, -2f, (float) ((int) this.releaseOwner + 1));
|
|
if (this.type == 109 && !NPC.downedClown)
|
|
{
|
|
NPC.downedClown = true;
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
}
|
|
if (this.type == 153 && closestPlayer.RollLuck(17) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1328, pfix: -1);
|
|
if (this.type == 120)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
if (closestPlayer.RollLuck(400) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1326, pfix: -1);
|
|
}
|
|
else if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1326, pfix: -1);
|
|
}
|
|
if (this.type == 49 && closestPlayer.RollLuck(250) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1325, pfix: -1);
|
|
if (this.type == 185 && closestPlayer.RollLuck(150) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 951, pfix: -1);
|
|
if (this.type == 44 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1320, pfix: -1);
|
|
if (this.type == 44 && closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 88, pfix: -1);
|
|
if (this.type == 110 && closestPlayer.RollLuck(80) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1321, pfix: -1);
|
|
if (this.type == 60 && closestPlayer.RollLuck(150) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1322, pfix: -1);
|
|
if (this.type == 151 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1322, pfix: -1);
|
|
if (this.type == 24 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1323, pfix: -1);
|
|
if (this.type == 109 && closestPlayer.RollLuck(30) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1324, Main.rand.Next(1, 5), pfix: -1);
|
|
if (this.type == 163 || this.type == 238)
|
|
{
|
|
if (closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1308, pfix: -1);
|
|
if (Main.expertMode)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(2, 4));
|
|
else if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(1, 4));
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607);
|
|
}
|
|
else if (Main.rand.Next(4) != 0)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(1, 4));
|
|
else if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(1, 3));
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607);
|
|
}
|
|
}
|
|
if (Main.hardMode && (this.type == 197 || this.type == 206 || this.type == 169 || this.type == 154) && closestPlayer.RollLuck(180) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1306, pfix: -1);
|
|
if (this.type == 244)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6));
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6));
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6));
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 662, Main.rand.Next(30, 60));
|
|
}
|
|
if (this.type == 250 && closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1244, pfix: -1);
|
|
if (this.type == 172)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 754, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 755, pfix: -1);
|
|
}
|
|
if (this.type == 110 && closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 682, pfix: -1);
|
|
if (this.type == 170 || this.type == 180 || this.type == 171)
|
|
{
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4428, pfix: -1);
|
|
else if (closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4613);
|
|
}
|
|
if (this.type == 154 && closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1253, pfix: -1);
|
|
if ((this.type == 169 || this.type == 206) && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 726, pfix: -1);
|
|
if (this.type == 243)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2161, pfix: -1);
|
|
if (this.type == 480 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3269, pfix: -1);
|
|
if (this.type == 198 || this.type == 199 || this.type == 226)
|
|
{
|
|
if (closestPlayer.RollLuck(1000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1172, pfix: -1);
|
|
if (closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1293, pfix: -1);
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2766, Main.rand.Next(1, 3), pfix: -1);
|
|
}
|
|
if (this.type == 78 || this.type == 79 || this.type == 80)
|
|
{
|
|
if (closestPlayer.RollLuck(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 870, pfix: -1);
|
|
if (closestPlayer.RollLuck(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 871, pfix: -1);
|
|
if (closestPlayer.RollLuck(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 872, pfix: -1);
|
|
}
|
|
if (this.type == 473)
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3008, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3014, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3012, pfix: -1);
|
|
break;
|
|
case 3:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3015, pfix: -1);
|
|
break;
|
|
case 4:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3023, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
else if (this.type == 474)
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3006, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3007, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3013, pfix: -1);
|
|
break;
|
|
case 3:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3016, pfix: -1);
|
|
break;
|
|
case 4:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3020, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
else if (this.type == 475)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3029, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3030, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3051, pfix: -1);
|
|
break;
|
|
case 3:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3022, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int type = this.type;
|
|
}
|
|
if (this.type == 473 || this.type == 474 || this.type == 475 || this.type == 476)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 499, Main.rand.Next(5, 11), pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 500, Main.rand.Next(5, 16), pfix: -1);
|
|
}
|
|
if (this.type == 85 && (double) this.value > 0.0)
|
|
{
|
|
if ((double) this.ai[3] == 4.0)
|
|
{
|
|
if (closestPlayer.RollLuck(20) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1312, pfix: -1);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 676, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 725, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1264, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(6))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 437, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 517, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 535, pfix: -1);
|
|
break;
|
|
case 3:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 536, pfix: -1);
|
|
break;
|
|
case 4:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 532, pfix: -1);
|
|
break;
|
|
default:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 554, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 87)
|
|
{
|
|
if (closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4379);
|
|
else if (Main.expertMode)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 575, Main.rand.Next(5, 11) * 2);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 575, Main.rand.Next(5, 11));
|
|
}
|
|
if (this.type >= 212 && this.type <= 215)
|
|
{
|
|
if (!flag1)
|
|
{
|
|
if (closestPlayer.RollLuck(8000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 905, pfix: -1);
|
|
if (closestPlayer.RollLuck(4000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 855, pfix: -1);
|
|
if (closestPlayer.RollLuck(2000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 854, pfix: -1);
|
|
if (closestPlayer.RollLuck(2000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2584, pfix: -1);
|
|
if (closestPlayer.RollLuck(1000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3033, pfix: -1);
|
|
if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 672, pfix: -1);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1277);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1278);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1279);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1280);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1704);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1705);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1710);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1716);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1720);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2379);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2389);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2405);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2843);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3885);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2663);
|
|
if (closestPlayer.RollLuck(150) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3904, Main.rand.Next(6, 11) * 5);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3910);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2238);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2133);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2137);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2143);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2147);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2151);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2155);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3263);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3264);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3265);
|
|
}
|
|
}
|
|
else if (this.type == 216)
|
|
{
|
|
if (closestPlayer.RollLuck(2000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 905, pfix: -1);
|
|
if (closestPlayer.RollLuck(1000) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 855, pfix: -1);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 854, pfix: -1);
|
|
if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2584, pfix: -1);
|
|
if (closestPlayer.RollLuck(250) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3033, pfix: -1);
|
|
if (closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 672, pfix: -1);
|
|
}
|
|
else if (this.type == 491)
|
|
{
|
|
if (closestPlayer.RollLuck(400) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 905, pfix: -1);
|
|
else if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 855, pfix: -1);
|
|
else if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 854, pfix: -1);
|
|
else if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2584, pfix: -1);
|
|
else if (closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3033, pfix: -1);
|
|
else if (closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4471, pfix: -1);
|
|
else if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 672, pfix: -1);
|
|
}
|
|
if ((this.type == 161 || this.type == 431) && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 803 + Main.rand.Next(3));
|
|
if (this.type == 217)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1115, pfix: -1);
|
|
if (this.type == 218)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1116, pfix: -1);
|
|
if (this.type == 219)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1117, pfix: -1);
|
|
if (this.type == 220)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1118, pfix: -1);
|
|
if (this.type == 221)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1119, pfix: -1);
|
|
if (this.type == 167 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 879, pfix: -1);
|
|
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 (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527);
|
|
}
|
|
else if (this.type == 80 && closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 528);
|
|
if (this.type == 524 && closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794, Main.rand.Next(1, 4));
|
|
if (this.type == 525)
|
|
{
|
|
if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794);
|
|
if (closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 522, Main.rand.Next(1, 4));
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527);
|
|
}
|
|
if (this.type == 526)
|
|
{
|
|
if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794);
|
|
if (closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1332, Main.rand.Next(1, 4));
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527);
|
|
}
|
|
if (this.type == 527)
|
|
{
|
|
if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794);
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 528);
|
|
}
|
|
if (this.type == 532)
|
|
{
|
|
if (closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3380);
|
|
if (closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3771);
|
|
}
|
|
if (this.type == 528)
|
|
{
|
|
if (closestPlayer.RollLuck(25) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2802);
|
|
if (closestPlayer.RollLuck(60) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3784 + Main.rand.Next(3));
|
|
}
|
|
else if (this.type == 529)
|
|
{
|
|
if (closestPlayer.RollLuck(25) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2801);
|
|
if (closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3784 + Main.rand.Next(3));
|
|
}
|
|
if ((this.type == 49 || this.type == 51 || this.type == 150 || this.type == 93) && closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 18, pfix: -1);
|
|
if ((this.type == 16 || this.type == 185 || this.type == 167 || this.type == 197) && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 393, pfix: -1);
|
|
if (this.type == 58 && closestPlayer.RollLuck(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 393, pfix: -1);
|
|
if (this.type >= 494 && this.type <= 506)
|
|
{
|
|
if (closestPlayer.RollLuck(80) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 18, pfix: -1);
|
|
else if (closestPlayer.RollLuck(80) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 393, pfix: -1);
|
|
else if (closestPlayer.RollLuck(25) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3285, pfix: -1);
|
|
}
|
|
if (this.type == 21 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 322 || this.type == 323 || this.type == 324 || this.type >= 449 && this.type <= 452)
|
|
{
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 954, pfix: -1);
|
|
else if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 955, pfix: -1);
|
|
else if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1166, pfix: -1);
|
|
else if (closestPlayer.RollLuck(500) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1274, pfix: -1);
|
|
}
|
|
else if (this.type == 6)
|
|
{
|
|
if (closestPlayer.RollLuck(175) == 0)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 956, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 957, pfix: -1);
|
|
break;
|
|
default:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 958, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 42 || this.type == 43 || this.type >= 231 && this.type <= 235)
|
|
{
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 960, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 961, pfix: -1);
|
|
break;
|
|
default:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 962, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 31 || this.type == 32 || this.type == 294 || this.type == 295 || this.type == 296)
|
|
{
|
|
if (closestPlayer.RollLuck(450) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 959, pfix: -1);
|
|
if (closestPlayer.RollLuck(300) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1307, pfix: -1);
|
|
}
|
|
if ((this.type == 174 || this.type == 179 || this.type == 182 || this.type == 183) && closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 996);
|
|
if ((this.type == 98 || this.type == 83 || this.type == 94 || this.type == 81) && closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 996);
|
|
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 == 98 && closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4611);
|
|
if (this.type == 86)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 526);
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 856);
|
|
}
|
|
if (this.type == 224 && closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4057);
|
|
if (this.type == 186 || this.type == 432)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 40, Main.rand.Next(1, 10));
|
|
if (this.type == 225)
|
|
{
|
|
if (closestPlayer.RollLuck(45) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1243);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(2, 7));
|
|
}
|
|
if (this.type == 537)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(2, 4));
|
|
int range = 8000;
|
|
if (Main.expertMode)
|
|
range = (int) ((double) range * 0.7);
|
|
if (closestPlayer.RollLuck(range) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1309, pfix: -1);
|
|
}
|
|
if (this.type >= 333 && this.type <= 336 && closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1906);
|
|
if (this.netID == -4)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3111, Main.rand.Next(25, 51));
|
|
int range = 100;
|
|
if (Main.expertMode)
|
|
range = (int) ((double) range * 0.7);
|
|
if (closestPlayer.RollLuck(range) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1309, pfix: -1);
|
|
}
|
|
else if (this.type == 1 || this.type == 16 || this.type == 138 || this.type == 141 || this.type == 147 || this.type == 184 || this.type == 187 || this.type == 204 || this.type == 302 || this.type >= 333 && this.type <= 336 || this.type == 535)
|
|
{
|
|
int Stack = Main.rand.Next(1, 3);
|
|
if (this.netID == -6 || this.netID == -7 || this.netID == -8 || this.netID == -9)
|
|
Stack += Main.rand.Next(1, 4);
|
|
int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Stack);
|
|
if (this.netID <= 1 && this.netID != -1 && this.netID != -2 && this.netID != -5 && this.netID != -6)
|
|
{
|
|
Main.item[number].color = this.color;
|
|
NetMessage.SendData(88, number: number, number2: 1f);
|
|
}
|
|
int range = 10000;
|
|
if (Main.expertMode)
|
|
range = (int) ((double) range * 0.7);
|
|
if (closestPlayer.RollLuck(range) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1309, pfix: -1);
|
|
}
|
|
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 || this.type == 183)
|
|
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 || this.type == 317 || this.type == 318 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194 || this.type == 133)
|
|
{
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 236);
|
|
else if (closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 38);
|
|
}
|
|
if (this.type == 104 && closestPlayer.RollLuck(60) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 485, pfix: -1);
|
|
if (this.type == 58)
|
|
{
|
|
if (closestPlayer.RollLuck(250) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 263);
|
|
else if (closestPlayer.RollLuck(30) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 118);
|
|
}
|
|
if (this.type == 102 && closestPlayer.RollLuck(250) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 263);
|
|
if (this.type == 3 || this.type == 591 || this.type == 590 || this.type == 331 || this.type == 332 || this.type == 132 || this.type == 161 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 200 || this.type == 223 || this.type == 319 || this.type == 320 || this.type == 321 || this.type >= 430 && this.type <= 436)
|
|
{
|
|
if (closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 216, pfix: -1);
|
|
if (closestPlayer.RollLuck(250) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1304, pfix: -1);
|
|
if (this.type == 590 || this.type == 591)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 8, Main.rand.Next(5, 21));
|
|
}
|
|
if ((this.type == 587 || this.type == 586) && closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4608, Main.rand.Next(5, 7));
|
|
if ((this.type == 620 || this.type == 621) && closestPlayer.RollLuck(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4608, Main.rand.Next(7, 11));
|
|
if ((this.type == 587 || this.type == 586) && closestPlayer.RollLuck(15) == 0)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4273);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4381);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4325);
|
|
break;
|
|
}
|
|
}
|
|
if (this.type == 620)
|
|
{
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4270);
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4317);
|
|
}
|
|
if (this.type == 621)
|
|
{
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4272);
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4317);
|
|
}
|
|
if (this.type == 618)
|
|
{
|
|
if (closestPlayer.RollLuck(5) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4269);
|
|
if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4054);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4608, Main.rand.Next(7, 11));
|
|
}
|
|
if (!Main.dayTime && Main.bloodMoon && !this.SpawnedFromStatue && !flag1)
|
|
{
|
|
if ((this.type == 587 || this.type == 586 || this.type == 489 || this.type == 490 || this.type == 109 || this.type == 621 || this.type == 620 || this.type == 619) && closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4271);
|
|
if ((this.type == 53 || this.type == 536 || this.type == 618) && closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4271);
|
|
}
|
|
if ((this.type == 489 || this.type == 490) && (Main.expertMode || closestPlayer.RollLuck(2) == 0))
|
|
{
|
|
if (closestPlayer.RollLuck(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3212, pfix: -1);
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3213, pfix: -1);
|
|
}
|
|
if (this.type == 223 && closestPlayer.RollLuck(20) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1135, pfix: -1);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1136, 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 || this.type == 66) && closestPlayer.RollLuck(35) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 272, pfix: -1);
|
|
if ((double) this.value > 0.0 && Main.hardMode && (double) this.position.Y / 16.0 < Main.worldSurface + 10.0 && ((double) this.Center.X / 16.0 < 380.0 || (double) this.Center.X / 16.0 > (double) (Main.maxTilesX - 380)) && !flag1 && closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1315);
|
|
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 == 536)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3478);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3479);
|
|
}
|
|
if (this.type == 54)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 260);
|
|
if (this.type == 368)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2222);
|
|
if ((this.type == 69 || this.type == 581 || this.type == 580 || this.type == 508 || this.type == 509) && closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 323, Main.rand.Next(1, 3));
|
|
if (this.type == 582 && closestPlayer.RollLuck(6) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 323);
|
|
if ((this.type == 580 || this.type == 508 || this.type == 581 || this.type == 509) && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3772);
|
|
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 == 483 || this.type == 482)
|
|
{
|
|
if (closestPlayer.RollLuck(30) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3109);
|
|
if (closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4400);
|
|
}
|
|
if ((this.type == 6 || this.type == 94) && closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 68);
|
|
if ((this.type == 181 || this.type == 173 || this.type == 239 || this.type == 182 || this.type == 240) && closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1330);
|
|
if (this.type == 7 || this.type == 8 || this.type == 9)
|
|
{
|
|
if (closestPlayer.RollLuck(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) && (closestPlayer.RollLuck(50) == 0 || Main.expertMode && closestPlayer.RollLuck(50) == 0))
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 215);
|
|
if ((this.type == 47 || this.type == 464) && closestPlayer.RollLuck(75) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 243);
|
|
if ((this.type == 168 || this.type == 470) && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, (int) Utils.SelectRandom<short>(Main.rand, (short) 3757, (short) 3758, (short) 3759));
|
|
if (this.type == 533)
|
|
{
|
|
if (closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3795);
|
|
else if (closestPlayer.RollLuck(30) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3770);
|
|
}
|
|
if (this.type == 551)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3859, pfix: -1);
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3827, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3870, pfix: -1);
|
|
break;
|
|
default:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3858, pfix: -1);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3863, pfix: -1);
|
|
if (Main.rand.Next(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3883, pfix: -1);
|
|
}
|
|
}
|
|
if (this.type == 4)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2112, pfix: -1);
|
|
if (closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1299);
|
|
int num3 = 1;
|
|
for (int index = 0; index < num3; ++index)
|
|
{
|
|
if (WorldGen.crimson)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20) + 10);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20) + 10);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20) + 10);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2171, Main.rand.Next(3) + 1);
|
|
}
|
|
else
|
|
{
|
|
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 == 266)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20, 46));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20, 46));
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2104, pfix: -1);
|
|
if (closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3060);
|
|
}
|
|
}
|
|
if (this.type == 267 && NPC.AnyNPCs(266))
|
|
{
|
|
int Stack1 = Main.rand.Next(2, 6);
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
if (Main.expertMode)
|
|
Stack1 += Main.rand.Next(2, 6);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1329, Stack1);
|
|
}
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
int Stack2 = Main.rand.Next(5, 13);
|
|
if (Main.expertMode)
|
|
Stack2 += Main.rand.Next(6, 14);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Stack2);
|
|
}
|
|
if (Main.rand.Next(2) == 0 && closestPlayer.statLife < closestPlayer.statLifeMax2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
}
|
|
if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
{
|
|
int Stack = Main.rand.Next(1, 3);
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
if (Main.expertMode)
|
|
++Stack;
|
|
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)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
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 (closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 994);
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2111, pfix: -1);
|
|
}
|
|
}
|
|
if (Main.rand.Next(4) == 0 && closestPlayer.statLife < closestPlayer.statLifeMax2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
}
|
|
if (this.type == 222)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2108, pfix: -1);
|
|
int Type = Main.rand.Next(3);
|
|
switch (Type)
|
|
{
|
|
case 0:
|
|
Type = 1121;
|
|
break;
|
|
case 1:
|
|
Type = 1123;
|
|
break;
|
|
case 2:
|
|
Type = 2888;
|
|
break;
|
|
}
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type, pfix: -1);
|
|
if (closestPlayer.RollLuck(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1132, pfix: -1);
|
|
if (closestPlayer.RollLuck(15) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1170);
|
|
if (closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2502);
|
|
if (Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1129);
|
|
else if (Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(842, 845));
|
|
if (Main.rand.Next(4) != 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1130, Main.rand.Next(10, 30));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2431, Main.rand.Next(16, 27));
|
|
}
|
|
NPC.SetEventFlagCleared(ref NPC.downedQueenBee, 8);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
}
|
|
if (this.type == 35)
|
|
{
|
|
if (Main.expertMode)
|
|
this.DropBossBags();
|
|
else if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1281, pfix: -1);
|
|
else if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1273, pfix: -1);
|
|
else if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1313, pfix: -1);
|
|
}
|
|
if (this.type == 113)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2105, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 367, pfix: -1);
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int num4 = Main.rand.Next(4);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, num4 != 3 ? 489 + num4 : 2998, 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 && !flag1)
|
|
{
|
|
int num5 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int num6 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
int num7 = this.width / 2 / 16 + 1;
|
|
for (int index1 = num5 - num7; index1 <= num5 + num7; ++index1)
|
|
{
|
|
for (int index2 = num6 - num7; index2 <= num6 + num7; ++index2)
|
|
{
|
|
if ((index1 == num5 - num7 || index1 == num5 + num7 || index2 == num6 - num7 || index2 == num6 + num7) && !Main.tile[index1, index2].active())
|
|
{
|
|
Main.tile[index1, index2].type = WorldGen.crimson ? (ushort) 347 : (ushort) 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 == 439)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedAncientCultist, 9);
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3372, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3549, pfix: -1);
|
|
WorldGen.TriggerLunarApocalypse();
|
|
}
|
|
if (this.type == 398)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedMoonlord, 10);
|
|
NPC.LunarApocalypseIsUp = false;
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3373, pfix: -1);
|
|
if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4469, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3384, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3460, Main.rand.Next(70, 91), pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Utils.SelectRandom<int>(Main.rand, 3063, 3389, 3065, 1553, 3930, 3541, 3570, 3571, 3569), pfix: -1);
|
|
}
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 402:
|
|
case 405:
|
|
case 407:
|
|
case 409:
|
|
case 411:
|
|
if ((this.type != 406 || Main.rand.Next(3) == 0) && NPC.ShieldStrengthTowerStardust > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(493));
|
|
break;
|
|
}
|
|
break;
|
|
case 412:
|
|
case 413:
|
|
case 414:
|
|
case 415:
|
|
case 416:
|
|
case 417:
|
|
case 418:
|
|
case 419:
|
|
case 518:
|
|
if (NPC.ShieldStrengthTowerSolar > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(517));
|
|
break;
|
|
}
|
|
break;
|
|
case 420:
|
|
case 421:
|
|
case 423:
|
|
case 424:
|
|
if (NPC.ShieldStrengthTowerNebula > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(507));
|
|
break;
|
|
}
|
|
break;
|
|
case 422:
|
|
int num8 = Main.rand.Next(25, 41) / 2;
|
|
if (Main.expertMode)
|
|
num8 = (int) ((double) num8 * 1.5);
|
|
for (int index = 0; index < num8; ++index)
|
|
Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3456, Main.rand.Next(1, 4));
|
|
NPC.downedTowerVortex = true;
|
|
NPC.TowerActiveVortex = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
case 425:
|
|
case 426:
|
|
case 427:
|
|
case 429:
|
|
if (NPC.ShieldStrengthTowerVortex > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(422));
|
|
break;
|
|
}
|
|
break;
|
|
case 493:
|
|
int num9 = Main.rand.Next(25, 41) / 2;
|
|
if (Main.expertMode)
|
|
num9 = (int) ((double) num9 * 1.5);
|
|
for (int index = 0; index < num9; ++index)
|
|
Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3459, Main.rand.Next(1, 4));
|
|
NPC.downedTowerStardust = true;
|
|
NPC.TowerActiveStardust = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
case 507:
|
|
int num10 = Main.rand.Next(25, 41) / 2;
|
|
if (Main.expertMode)
|
|
num10 = (int) ((double) num10 * 1.5);
|
|
for (int index = 0; index < num10; ++index)
|
|
Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3457, Main.rand.Next(1, 4));
|
|
NPC.downedTowerNebula = true;
|
|
NPC.TowerActiveNebula = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
case 517:
|
|
int num11 = Main.rand.Next(25, 41) / 2;
|
|
if (Main.expertMode)
|
|
num11 = (int) ((double) num11 * 1.5);
|
|
for (int index = 0; index < num11; ++index)
|
|
Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3458, Main.rand.Next(1, 4));
|
|
NPC.downedTowerSolar = true;
|
|
NPC.TowerActiveSolar = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 381:
|
|
case 382:
|
|
case 383:
|
|
case 385:
|
|
case 386:
|
|
case 389:
|
|
case 390:
|
|
case 520:
|
|
if (closestPlayer.RollLuck(8) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2860, Main.rand.Next(8, 21));
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 381:
|
|
case 382:
|
|
case 383:
|
|
case 385:
|
|
case 386:
|
|
case 389:
|
|
case 390:
|
|
case 520:
|
|
if (closestPlayer.RollLuck(600) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2798);
|
|
if (closestPlayer.RollLuck(600) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2800);
|
|
if (closestPlayer.RollLuck(600) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2882);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 383:
|
|
case 386:
|
|
case 389:
|
|
if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2806);
|
|
if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2807);
|
|
if (closestPlayer.RollLuck(200) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2808);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
switch (this.type)
|
|
{
|
|
case 381:
|
|
case 382:
|
|
case 385:
|
|
case 390:
|
|
if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2803);
|
|
if (closestPlayer.RollLuck(200) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2804);
|
|
if (closestPlayer.RollLuck(200) == 0)
|
|
{
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2805);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (this.type == 395)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Utils.SelectRandom<int>(Main.rand, 2797, 2749, 2795, 2796, 2880, 2769));
|
|
if (this.type == 390 && closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2771);
|
|
if ((this.type == 116 || this.type == 117 || this.type == 118 || this.type == 119) && (!Main.expertMode || Main.rand.Next(5) == 0))
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 139 && Main.rand.Next(2) == 0)
|
|
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)
|
|
{
|
|
if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1303, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 282, Main.rand.Next(1, 5));
|
|
}
|
|
if (this.type == 63 && closestPlayer.RollLuck(50) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4649);
|
|
if (this.type == 64 && closestPlayer.RollLuck(50) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4650);
|
|
if (this.type == 481 && Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3094, Main.rand.Next(40, 81));
|
|
if (this.type == 481 && closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3187 + Main.rand.Next(3));
|
|
if (this.type == 481 && closestPlayer.RollLuck(40) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4463);
|
|
if (this.type == 21 || this.type == 44 || this.type == 167 || this.type == 201 || this.type == 202 || this.type == 481 || this.type == 203 || this.type == 322 || this.type == 323 || this.type == 324 || this.type >= 449 && this.type <= 452)
|
|
{
|
|
if (closestPlayer.RollLuck(25) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 118);
|
|
else if (this.type == 44)
|
|
{
|
|
if (closestPlayer.RollLuck(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)
|
|
{
|
|
if (Main.slimeRain)
|
|
{
|
|
Main.StopSlimeRain();
|
|
AchievementsHelper.NotifyProgressionEvent(16);
|
|
}
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2430);
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2493, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(256, 259));
|
|
Main.rand.Next(2);
|
|
if (Main.rand.Next(3) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2585);
|
|
else
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2610);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 998);
|
|
}
|
|
NPC.SetEventFlagCleared(ref NPC.downedSlimeKing, 11);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
}
|
|
if (this.type == 23 && closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 116);
|
|
if (this.type == 24 && closestPlayer.RollLuck(250) == 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 || this.type >= 294 && this.type <= 296)
|
|
{
|
|
if (closestPlayer.RollLuck(250) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 932);
|
|
else if (closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3095);
|
|
else if (closestPlayer.RollLuck(65) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 327);
|
|
else if (!Main.expertMode)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 154, Main.rand.Next(1, 4));
|
|
if (Main.expertMode)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 154, Main.rand.Next(2, 7));
|
|
}
|
|
if (this.type == 26 || this.type == 27 || this.type == 28 || this.type == 29 || this.type == 111)
|
|
{
|
|
if (closestPlayer.RollLuck(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 == 175 && closestPlayer.RollLuck(100) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1265, pfix: -1);
|
|
if ((this.type == 42 || this.type >= 231 && this.type <= 235) && (Main.expertMode || Main.rand.Next(3) != 0))
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 209);
|
|
if (this.type == 204 && (Main.expertMode || Main.rand.Next(2) == 0))
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 209);
|
|
if (this.type == 43)
|
|
{
|
|
if (closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4648);
|
|
else if (Main.expertMode || Main.rand.Next(2) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 210);
|
|
}
|
|
if (this.type == 39 && closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4610);
|
|
if (this.type == 65)
|
|
{
|
|
if (closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 268);
|
|
else if (closestPlayer.RollLuck(25) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4651);
|
|
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 == 541)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3783);
|
|
if ((this.type == 542 || this.type == 543 || this.type == 544 || this.type == 545) && closestPlayer.RollLuck(10) == 0 && Main.IsItAHappyWindyDay)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 4669);
|
|
if (this.type == 542 && closestPlayer.RollLuck(8) == 0)
|
|
{
|
|
int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319);
|
|
Main.item[number].color = new Color(189, 148, 96, (int) byte.MaxValue);
|
|
NetMessage.SendData(88, number: number, number2: 1f);
|
|
}
|
|
if (this.type == 543 || this.type == 544)
|
|
{
|
|
if (closestPlayer.RollLuck(25) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527);
|
|
if (closestPlayer.RollLuck(8) == 0)
|
|
{
|
|
int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319);
|
|
Main.item[number].color = this.type != 544 ? new Color(112, 85, 89, (int) byte.MaxValue) : new Color(145, 27, 40, (int) byte.MaxValue);
|
|
NetMessage.SendData(88, number: number, number2: 1f);
|
|
}
|
|
}
|
|
if (this.type == 545)
|
|
{
|
|
if (closestPlayer.RollLuck(25) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 528);
|
|
if (closestPlayer.RollLuck(8) == 0)
|
|
{
|
|
int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319);
|
|
Main.item[number].color = new Color(158, 113, 164, (int) byte.MaxValue);
|
|
NetMessage.SendData(88, number: number, number2: 1f);
|
|
}
|
|
}
|
|
if (this.type == 125 || this.type == 126)
|
|
{
|
|
int Type = 125;
|
|
if (this.type == 125)
|
|
Type = 126;
|
|
if (!NPC.AnyNPCs(Type))
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2106, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 549, Main.rand.Next(25, 41));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1225, Main.rand.Next(15, 31));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.value = 0.0f;
|
|
this.boss = false;
|
|
}
|
|
}
|
|
else if (Main.expertMode)
|
|
{
|
|
if (this.type == (int) sbyte.MaxValue || this.type == 134)
|
|
this.DropBossBags();
|
|
}
|
|
else if (this.type == (int) sbyte.MaxValue)
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2107, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 547, Main.rand.Next(25, 41));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1225, Main.rand.Next(15, 31));
|
|
}
|
|
else if (this.type == 134)
|
|
{
|
|
if (Main.rand.Next(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2113, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 548, Main.rand.Next(25, 41));
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1225, Main.rand.Next(15, 31));
|
|
}
|
|
if (this.type == 262)
|
|
{
|
|
if (Main.expertMode)
|
|
{
|
|
this.DropBossBags();
|
|
}
|
|
else
|
|
{
|
|
if (closestPlayer.RollLuck(7) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2109, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1141, pfix: -1);
|
|
if (closestPlayer.RollLuck(20) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1182, pfix: -1);
|
|
if (closestPlayer.RollLuck(50) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1305, pfix: -1);
|
|
if (closestPlayer.RollLuck(4) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1157, pfix: -1);
|
|
if (closestPlayer.RollLuck(10) == 0)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3021, pfix: -1);
|
|
int num12 = 1;
|
|
for (int index = 0; index < num12; ++index)
|
|
{
|
|
int num13 = Main.rand.Next(7);
|
|
if (!NPC.downedPlantBoss)
|
|
num13 = 0;
|
|
switch (num13)
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 758, pfix: -1);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 771, Main.rand.Next(50, 150));
|
|
break;
|
|
case 1:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1255, pfix: -1);
|
|
break;
|
|
case 2:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 788, pfix: -1);
|
|
break;
|
|
case 3:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1178, pfix: -1);
|
|
break;
|
|
case 4:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1259, pfix: -1);
|
|
break;
|
|
case 5:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1155, pfix: -1);
|
|
break;
|
|
case 6:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3018, pfix: -1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
int num14 = NPC.downedPlantBoss ? 1 : 0;
|
|
NPC.SetEventFlagCleared(ref NPC.downedPlantBoss, 12);
|
|
if (num14 == 0)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[33].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[33].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if ((this.boss || this.type == 125 || this.type == 126 || this.type == 491 || this.type == 551 || this.type == 576 || this.type == 577 || this.type == 564 || this.type == 565) && closestPlayer.RollLuck(10) == 0)
|
|
{
|
|
if (this.type == 4)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1360);
|
|
if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1361);
|
|
if (this.type == 266)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1362);
|
|
if (this.type == 35)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1363);
|
|
if (this.type == 222)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1364);
|
|
if (this.type == 113)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1365);
|
|
if (this.type == 134)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1366);
|
|
if (this.type == (int) sbyte.MaxValue)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1367);
|
|
if (this.type == 125)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1368);
|
|
if (this.type == 126)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1369);
|
|
if (this.type == 262)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1370);
|
|
if (this.type == 245)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1371);
|
|
if (this.type == 50)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2489);
|
|
if (this.type == 370)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2589);
|
|
if (this.type == 439)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3357);
|
|
if (this.type == 491)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3359);
|
|
if (this.type == 395)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3358);
|
|
if (this.type == 398)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3595);
|
|
if (this.type == 551)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3866);
|
|
if (this.type == 564 || this.type == 565)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3867);
|
|
if (this.type == 576 || this.type == 577)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3868);
|
|
}
|
|
if (this.boss)
|
|
{
|
|
if (this.type == 4)
|
|
NPC.SetEventFlagCleared(ref NPC.downedBoss1, 13);
|
|
else if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
NPC.SetEventFlagCleared(ref NPC.downedBoss2, 14);
|
|
else if (this.type == 266)
|
|
NPC.SetEventFlagCleared(ref NPC.downedBoss2, 14);
|
|
else if (this.type == 35)
|
|
NPC.SetEventFlagCleared(ref NPC.downedBoss3, 15);
|
|
if (this.type == (int) sbyte.MaxValue)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedMechBoss3, 18);
|
|
NPC.downedMechBossAny = true;
|
|
}
|
|
if (this.type == 134)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedMechBoss1, 16);
|
|
NPC.downedMechBossAny = true;
|
|
}
|
|
string typeName = this.TypeName;
|
|
int Stack = Main.rand.Next(5, 16);
|
|
int Type = 28;
|
|
if (this.type == 113)
|
|
Type = 188;
|
|
else if (this.type == 222)
|
|
Type = 1134;
|
|
else if (this.type > 113 && this.type < 222)
|
|
Type = 499;
|
|
else if (this.type == 245 || this.type == 262)
|
|
Type = 499;
|
|
else if (this.type == 370)
|
|
Type = 499;
|
|
else if (this.type == 395)
|
|
Type = 499;
|
|
else if (this.type == 439)
|
|
Type = 499;
|
|
else if (this.type == 398)
|
|
Type = 3544;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type, Stack);
|
|
int num15 = Main.rand.Next(5) + 5;
|
|
for (int index = 0; index < num15; ++index)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
if (this.type == 125 || this.type == 126)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedMechBoss2, 17);
|
|
NPC.downedMechBossAny = true;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Plural", (object) Language.GetTextValue("Enemies.TheTwins")), (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Plural", (object) NetworkText.FromKey("Enemies.TheTwins")), new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
else if (this.type == 398)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Single", (object) Language.GetTextValue("Enemies.MoonLord")), (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Single", (object) NetworkText.FromKey("Enemies.MoonLord")), new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Single", (object) typeName), (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Single", (object) this.GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
if (this.type == 113 && Main.netMode != 1)
|
|
{
|
|
bool hardMode = Main.hardMode;
|
|
if (!flag1)
|
|
WorldGen.StartHardmode();
|
|
if (NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && !hardMode)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[32].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[32].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
NPC.SetEventFlagCleared(ref hardMode, 19);
|
|
}
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
}
|
|
if (!flag2 && NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && Main.hardMode)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[32].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[32].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
this.NPCLoot_DropCommonLifeAndMana(closestPlayer);
|
|
this.NPCLoot_DropMoney(closestPlayer);
|
|
}
|
|
|
|
public void NPCLoot()
|
|
{
|
|
if (Main.netMode == 1 || this.type >= 663)
|
|
return;
|
|
Player closestPlayer = Main.player[(int) Player.FindClosest(this.position, this.width, this.height)];
|
|
if (true)
|
|
{
|
|
this.CountKillForAchievements();
|
|
if (this.GetWereThereAnyInteractions())
|
|
{
|
|
if (this.IsNPCValidForBestiaryKillCredit())
|
|
Main.BestiaryTracker.Kills.RegisterKill(this);
|
|
this.CountKillForBannersAndDropThem();
|
|
}
|
|
}
|
|
if (this.type == 23 && Main.hardMode || this.SpawnedFromStatue && NPCID.Sets.NoEarlymodeLootWhenSpawnedFromStatue[this.type] && !Main.hardMode || this.SpawnedFromStatue && (double) NPCID.Sets.StatueSpawnedDropRarity[this.type] != -1.0 && ((double) Main.rand.NextFloat() >= (double) NPCID.Sets.StatueSpawnedDropRarity[this.type] || !this.AnyInteractions()))
|
|
return;
|
|
int num = !NPC.downedMechBoss1 || !NPC.downedMechBoss2 ? 0 : (NPC.downedMechBoss3 ? 1 : 0);
|
|
this.DoDeathEvents_BeforeLoot(closestPlayer);
|
|
this.NPCLoot_DropItems(closestPlayer);
|
|
this.DoDeathEvents(closestPlayer);
|
|
if (num == 0 && NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && Main.hardMode)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[32].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[32].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
this.NPCLoot_DropMoney(closestPlayer);
|
|
this.NPCLoot_DropHeals(closestPlayer);
|
|
}
|
|
|
|
private bool IsNPCValidForBestiaryKillCredit()
|
|
{
|
|
switch (this.type)
|
|
{
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
return this.boss;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private void DoDeathEvents_BeforeLoot(Player closestPlayer)
|
|
{
|
|
switch (this.type)
|
|
{
|
|
case 125:
|
|
case 126:
|
|
if (!NPC.AnyNPCs(this.type == 125 ? 126 : 125))
|
|
break;
|
|
this.value = 0.0f;
|
|
this.boss = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void NPCLoot_DropItems(Player closestPlayer)
|
|
{
|
|
DropAttemptInfo info = new DropAttemptInfo()
|
|
{
|
|
player = closestPlayer,
|
|
npc = this,
|
|
IsExpertMode = Main.expertMode,
|
|
IsMasterMode = Main.masterMode,
|
|
IsInSimulation = false,
|
|
rng = Main.rand
|
|
};
|
|
Main.ItemDropSolver.TryDropping(info);
|
|
}
|
|
|
|
public static void ResetBadgerHatTime()
|
|
{
|
|
NPC.EoCKilledToday = false;
|
|
NPC.WoFKilledToday = false;
|
|
}
|
|
|
|
private void DoDeathEvents_DropBossPotionsAndHearts()
|
|
{
|
|
int Stack = Main.rand.Next(5, 16);
|
|
int Type = 28;
|
|
if (this.type == 113)
|
|
Type = 188;
|
|
else if (this.type == 222)
|
|
Type = 1134;
|
|
else if (this.type == 657)
|
|
Type = 499;
|
|
else if (this.type > 113 && this.type < 222)
|
|
Type = 499;
|
|
else if (this.type == 636)
|
|
Type = 499;
|
|
else if (this.type == 245 || this.type == 262)
|
|
Type = 499;
|
|
else if (this.type == 370)
|
|
Type = 499;
|
|
else if (this.type == 395)
|
|
Type = 499;
|
|
else if (this.type == 439)
|
|
Type = 499;
|
|
else if (this.type == 398)
|
|
Type = 3544;
|
|
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 == 4)
|
|
NPC.EoCKilledToday = true;
|
|
else if (this.type == 113)
|
|
NPC.WoFKilledToday = true;
|
|
if (!NPC.EoCKilledToday || !NPC.WoFKilledToday)
|
|
return;
|
|
NPC.ResetBadgerHatTime();
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 5004);
|
|
}
|
|
|
|
private void DoDeathEvents_CelebrateBossDeath()
|
|
{
|
|
if (this.type == 125 || this.type == 126)
|
|
{
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Plural", (object) Language.GetTextValue("Enemies.TheTwins")), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Plural", (object) NetworkText.FromKey("Enemies.TheTwins")), new Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
else if (this.type == 398)
|
|
{
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Single", (object) Language.GetTextValue("Enemies.MoonLord")), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Single", (object) NetworkText.FromKey("Enemies.MoonLord")), new Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
else if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Single", (object) this.TypeName), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Single", (object) this.GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
|
|
private void CreateBrickBoxForWallOfFlesh()
|
|
{
|
|
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 = WorldGen.crimson ? (ushort) 347 : (ushort) 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DoDeathEvents_SummonDungeonSpirit(Player closestPlayer)
|
|
{
|
|
if (this.lifeMax <= 100 || this.type == 288 || (double) this.value <= 0.0 || !this.HasPlayerTarget || !Main.hardMode || !NPC.downedPlantBoss || !Main.player[this.target].ZoneDungeon)
|
|
return;
|
|
int range = 13;
|
|
if (Main.expertMode)
|
|
range = 9;
|
|
if (closestPlayer.RollLuck(range) != 0 || !Main.wallDungeon[(int) Main.tile[(int) this.Center.X / 16, (int) this.Center.Y / 16].wall])
|
|
return;
|
|
NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 288);
|
|
}
|
|
|
|
private void DoDeathEvents_AdvanceSlimeRain(Player closestPlayer)
|
|
{
|
|
if (!Main.slimeRain || !Main.slimeRainNPC[this.type] || NPC.AnyNPCs(50))
|
|
return;
|
|
int num = 150;
|
|
if (NPC.downedSlimeKing)
|
|
num /= 2;
|
|
++Main.slimeRainKillCount;
|
|
if (Main.slimeRainKillCount < num)
|
|
return;
|
|
NPC.SpawnOnPlayer(closestPlayer.whoAmI, 50);
|
|
Main.slimeRainKillCount = -num / 2;
|
|
}
|
|
|
|
private void NPCLoot_DropHeals(Player closestPlayer)
|
|
{
|
|
this.NPCLoot_DropCommonLifeAndMana(closestPlayer);
|
|
switch (this.type)
|
|
{
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
if (Main.rand.Next(4) != 0 || closestPlayer.statLife >= closestPlayer.statLifeMax2)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 116:
|
|
case 117:
|
|
case 118:
|
|
case 119:
|
|
if (Main.expertMode && Main.rand.Next(5) != 0)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 139:
|
|
if (Main.rand.Next(2) != 0)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 267:
|
|
if (Main.rand.Next(2) != 0 || closestPlayer.statLife >= closestPlayer.statLifeMax2)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 305:
|
|
case 306:
|
|
case 307:
|
|
case 308:
|
|
case 309:
|
|
case 310:
|
|
case 311:
|
|
case 312:
|
|
case 313:
|
|
case 314:
|
|
case 329:
|
|
case 330:
|
|
if (closestPlayer.RollLuck(4) != 0)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 315:
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 325:
|
|
case 327:
|
|
case 344:
|
|
case 345:
|
|
case 346:
|
|
int num1 = Main.rand.Next(6) + 6;
|
|
for (int index = 0; index < num1; ++index)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 326:
|
|
if (closestPlayer.RollLuck(6) != 0)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 338:
|
|
case 339:
|
|
case 340:
|
|
if (closestPlayer.RollLuck(5) != 0)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 341:
|
|
int num2 = Main.rand.Next(5, 11);
|
|
for (int index = 0; index < num2; ++index)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
case 342:
|
|
if (Main.rand.Next(3) == 0)
|
|
break;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void DoDeathEvents(Player closestPlayer)
|
|
{
|
|
this.DoDeathEvents_AdvanceSlimeRain(closestPlayer);
|
|
this.DoDeathEvents_SummonDungeonSpirit(closestPlayer);
|
|
switch (this.type)
|
|
{
|
|
case 4:
|
|
NPC.SetEventFlagCleared(ref NPC.downedBoss1, 13);
|
|
break;
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
case 266:
|
|
if (this.boss)
|
|
{
|
|
if (!NPC.downedBoss2 || Main.rand.Next(2) == 0)
|
|
WorldGen.spawnMeteor = true;
|
|
NPC.SetEventFlagCleared(ref NPC.downedBoss2, 14);
|
|
break;
|
|
}
|
|
break;
|
|
case 22:
|
|
if (Collision.LavaCollision(this.position, this.width, this.height))
|
|
{
|
|
NPC.SpawnWOF(this.position);
|
|
break;
|
|
}
|
|
break;
|
|
case 35:
|
|
if (this.boss)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedBoss3, 15);
|
|
break;
|
|
}
|
|
break;
|
|
case 50:
|
|
if (Main.slimeRain)
|
|
{
|
|
Main.StopSlimeRain();
|
|
AchievementsHelper.NotifyProgressionEvent(16);
|
|
}
|
|
NPC.SetEventFlagCleared(ref NPC.downedSlimeKing, 11);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(7);
|
|
break;
|
|
}
|
|
break;
|
|
case 109:
|
|
if (!NPC.downedClown)
|
|
{
|
|
NPC.downedClown = true;
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(7);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 113:
|
|
if (Main.netMode != 1)
|
|
{
|
|
this.CreateBrickBoxForWallOfFlesh();
|
|
bool hardMode = Main.hardMode;
|
|
WorldGen.StartHardmode();
|
|
if (NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && !hardMode)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[32].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[32].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
NPC.SetEventFlagCleared(ref hardMode, 19);
|
|
break;
|
|
}
|
|
break;
|
|
case 125:
|
|
case 126:
|
|
if (this.boss)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedMechBoss2, 17);
|
|
NPC.downedMechBossAny = true;
|
|
break;
|
|
}
|
|
break;
|
|
case (int) sbyte.MaxValue:
|
|
if (this.boss)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedMechBoss3, 18);
|
|
NPC.downedMechBossAny = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 134:
|
|
if (this.boss)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedMechBoss1, 16);
|
|
NPC.downedMechBossAny = true;
|
|
break;
|
|
}
|
|
break;
|
|
case 216:
|
|
NPC.SpawnBoss((int) this.position.X, (int) this.position.Y, 662, this.target);
|
|
break;
|
|
case 222:
|
|
NPC.SetEventFlagCleared(ref NPC.downedQueenBee, 8);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(7);
|
|
break;
|
|
}
|
|
break;
|
|
case 245:
|
|
NPC.SetEventFlagCleared(ref NPC.downedGolemBoss, 6);
|
|
break;
|
|
case 262:
|
|
int num = NPC.downedPlantBoss ? 1 : 0;
|
|
NPC.SetEventFlagCleared(ref NPC.downedPlantBoss, 12);
|
|
if (num == 0)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[33].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[33].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
break;
|
|
break;
|
|
case 325:
|
|
if (Main.pumpkinMoon)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedHalloweenTree, 4);
|
|
break;
|
|
}
|
|
break;
|
|
case 327:
|
|
if (Main.pumpkinMoon)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedHalloweenKing, 5);
|
|
break;
|
|
}
|
|
break;
|
|
case 344:
|
|
if (Main.snowMoon)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedChristmasTree, 21);
|
|
break;
|
|
}
|
|
break;
|
|
case 345:
|
|
if (Main.snowMoon)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedChristmasIceQueen, 20);
|
|
break;
|
|
}
|
|
break;
|
|
case 346:
|
|
if (Main.snowMoon)
|
|
{
|
|
NPC.SetEventFlagCleared(ref NPC.downedChristmasSantank, 22);
|
|
break;
|
|
}
|
|
break;
|
|
case 370:
|
|
NPC.SetEventFlagCleared(ref NPC.downedFishron, 7);
|
|
break;
|
|
case 398:
|
|
NPC.SetEventFlagCleared(ref NPC.downedMoonlord, 10);
|
|
NPC.LunarApocalypseIsUp = false;
|
|
break;
|
|
case 402:
|
|
case 405:
|
|
case 407:
|
|
case 409:
|
|
case 411:
|
|
if (NPC.ShieldStrengthTowerStardust > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(493));
|
|
break;
|
|
}
|
|
break;
|
|
case 412:
|
|
case 413:
|
|
case 414:
|
|
case 415:
|
|
case 416:
|
|
case 417:
|
|
case 418:
|
|
case 419:
|
|
case 518:
|
|
if (NPC.ShieldStrengthTowerSolar > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(517));
|
|
break;
|
|
}
|
|
break;
|
|
case 420:
|
|
case 421:
|
|
case 423:
|
|
case 424:
|
|
if (NPC.ShieldStrengthTowerNebula > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(507));
|
|
break;
|
|
}
|
|
break;
|
|
case 422:
|
|
NPC.downedTowerVortex = true;
|
|
NPC.TowerActiveVortex = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
case 425:
|
|
case 426:
|
|
case 427:
|
|
case 429:
|
|
if (NPC.ShieldStrengthTowerVortex > 0)
|
|
{
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(422));
|
|
break;
|
|
}
|
|
break;
|
|
case 439:
|
|
NPC.SetEventFlagCleared(ref NPC.downedAncientCultist, 9);
|
|
WorldGen.TriggerLunarApocalypse();
|
|
break;
|
|
case 493:
|
|
NPC.downedTowerStardust = true;
|
|
NPC.TowerActiveStardust = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
case 507:
|
|
NPC.downedTowerNebula = true;
|
|
NPC.TowerActiveNebula = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
case 517:
|
|
NPC.downedTowerSolar = true;
|
|
NPC.TowerActiveSolar = false;
|
|
WorldGen.UpdateLunarApocalypse();
|
|
WorldGen.MessageLunarApocalypse();
|
|
break;
|
|
case 552:
|
|
case 553:
|
|
case 554:
|
|
if (DD2Event.Ongoing)
|
|
{
|
|
DD2Event.AnnounceGoblinDeath(this);
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 555:
|
|
case 556:
|
|
case 557:
|
|
case 558:
|
|
case 559:
|
|
case 560:
|
|
case 561:
|
|
case 562:
|
|
case 563:
|
|
case 564:
|
|
case 565:
|
|
case 568:
|
|
case 569:
|
|
case 570:
|
|
case 571:
|
|
case 572:
|
|
case 573:
|
|
case 574:
|
|
case 575:
|
|
case 576:
|
|
case 577:
|
|
case 578:
|
|
if (DD2Event.ShouldDropCrystals())
|
|
{
|
|
Item.NewItem(this.position, this.Size, 3822);
|
|
break;
|
|
}
|
|
break;
|
|
case 614:
|
|
int Damage = 175;
|
|
if (this.SpawnedFromStatue)
|
|
Damage = 0;
|
|
Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 281, Damage, 0.0f, Main.myPlayer, -2f, (float) ((int) this.releaseOwner + 1));
|
|
break;
|
|
case 636:
|
|
NPC.SetEventFlagCleared(ref NPC.downedEmpressOfLight, 23);
|
|
break;
|
|
case 657:
|
|
NPC.SetEventFlagCleared(ref NPC.downedQueenSlime, 24);
|
|
break;
|
|
case 661:
|
|
if (Main.netMode != 1 && this.GetWereThereAnyInteractions())
|
|
{
|
|
int Type = 636;
|
|
if (!NPC.AnyNPCs(Type))
|
|
{
|
|
Vector2 vector2 = this.Center + new Vector2(0.0f, -200f) + Main.rand.NextVector2Circular(50f, 50f);
|
|
NPC.SpawnBoss((int) vector2.X, (int) vector2.Y, Type, closestPlayer.whoAmI);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (!this.boss)
|
|
return;
|
|
this.DoDeathEvents_DropBossPotionsAndHearts();
|
|
this.DoDeathEvents_CelebrateBossDeath();
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(7);
|
|
}
|
|
|
|
private void NPCLoot_DropCommonLifeAndMana(Player closestPlayer)
|
|
{
|
|
if (this.type != 16 && this.type != 81 && this.type != 121 && closestPlayer.RollLuck(6) == 0 && this.lifeMax > 1 && this.damage > 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0 && closestPlayer.statMana < closestPlayer.statManaMax2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 184);
|
|
else if (Main.rand.Next(2) == 0 && closestPlayer.statLife < closestPlayer.statLifeMax2)
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58);
|
|
}
|
|
if (this.type == 16 || this.type == 81 || this.type == 121 || closestPlayer.RollLuck(2) != 0 || this.lifeMax <= 1 || this.damage <= 0 || closestPlayer.statMana >= closestPlayer.statManaMax2)
|
|
return;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 184);
|
|
}
|
|
|
|
private void NPCLoot_DropMoney(Player closestPlayer)
|
|
{
|
|
float num1 = 0.0f;
|
|
float luck = closestPlayer.luck;
|
|
int num2 = 1;
|
|
if ((double) Main.rand.NextFloat() < (double) Math.Abs(luck))
|
|
num2 = 2;
|
|
for (int index = 0; index < num2; ++index)
|
|
{
|
|
float num3 = this.value;
|
|
if (this.midas)
|
|
num3 *= (float) (1.0 + (double) Main.rand.Next(10, 51) * 0.00999999977648258);
|
|
float num4 = num3 * (float) (1.0 + (double) Main.rand.Next(-20, 76) * 0.00999999977648258);
|
|
if (Main.rand.Next(2) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(5, 11) * 0.00999999977648258);
|
|
if (Main.rand.Next(4) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(10, 21) * 0.00999999977648258);
|
|
if (Main.rand.Next(8) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(15, 31) * 0.00999999977648258);
|
|
if (Main.rand.Next(16) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(20, 41) * 0.00999999977648258);
|
|
if (Main.rand.Next(32) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(25, 51) * 0.00999999977648258);
|
|
if (Main.rand.Next(64) == 0)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(50, 101) * 0.00999999977648258);
|
|
if (Main.bloodMoon)
|
|
num4 *= (float) (1.0 + (double) Main.rand.Next(101) * 0.00999999977648258);
|
|
if (index == 0)
|
|
num1 = num4;
|
|
else if ((double) luck < 0.0)
|
|
{
|
|
if ((double) num4 < (double) num1)
|
|
num1 = num4;
|
|
}
|
|
else if ((double) num4 > (double) num1)
|
|
num1 = num4;
|
|
}
|
|
float num5 = num1 + (float) this.extraValue;
|
|
while ((int) num5 > 0)
|
|
{
|
|
if ((double) num5 > 1000000.0)
|
|
{
|
|
int num6 = (int) ((double) num5 / 1000000.0);
|
|
if (num6 > 50 && Main.rand.Next(5) == 0)
|
|
num6 /= Main.rand.Next(3) + 1;
|
|
if (Main.rand.Next(5) == 0)
|
|
num6 /= Main.rand.Next(3) + 1;
|
|
int Stack = num6;
|
|
while (Stack > 999)
|
|
{
|
|
Stack -= 999;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 74, 999);
|
|
}
|
|
num5 -= (float) (1000000 * num6);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 74, Stack);
|
|
}
|
|
else if ((double) num5 > 10000.0)
|
|
{
|
|
int Stack = (int) ((double) num5 / 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;
|
|
num5 -= (float) (10000 * Stack);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 73, Stack);
|
|
}
|
|
else if ((double) num5 > 100.0)
|
|
{
|
|
int Stack = (int) ((double) num5 / 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;
|
|
num5 -= (float) (100 * Stack);
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 72, Stack);
|
|
}
|
|
else
|
|
{
|
|
int Stack = (int) num5;
|
|
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;
|
|
num5 -= (float) Stack;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 71, Stack);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static int GetStackForSlimeItemDrop(int item)
|
|
{
|
|
int num = 1;
|
|
switch (item)
|
|
{
|
|
case 8:
|
|
num = Main.rand.Next(5, 11);
|
|
break;
|
|
case 166:
|
|
num = Main.rand.Next(2, 7);
|
|
break;
|
|
case 965:
|
|
num = Main.rand.Next(20, 46);
|
|
break;
|
|
default:
|
|
if (item >= 11 && item <= 14 || item >= 699 && item <= 702)
|
|
{
|
|
num = Main.rand.Next(3, 9);
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
num += 5;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
switch (item)
|
|
{
|
|
case 71:
|
|
num = Main.rand.Next(50, 100);
|
|
break;
|
|
case 72:
|
|
num = Main.rand.Next(20, 100);
|
|
break;
|
|
case 73:
|
|
num = Main.rand.Next(1, 3);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public bool ExcludedFromDeathTally()
|
|
{
|
|
if (this.netID >= 0)
|
|
return NPCID.Sets.PositiveNPCTypesExcludedFromDeathTally[this.netID];
|
|
return this.netID == -5 || this.netID == -1;
|
|
}
|
|
|
|
private void CountKillForBannersAndDropThem()
|
|
{
|
|
int index1 = Item.NPCtoBanner(this.BannerID());
|
|
if (index1 <= 0 || this.ExcludedFromDeathTally())
|
|
return;
|
|
++NPC.killCount[index1];
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(83, number: index1);
|
|
int num = ItemID.Sets.KillsToBanner[Item.BannerToItem(index1)];
|
|
if (NPC.killCount[index1] % num != 0 || index1 <= 0)
|
|
return;
|
|
int npc = Item.BannerToNPC(index1);
|
|
int index2 = this.lastInteraction;
|
|
if (!Main.player[index2].active || Main.player[index2].dead)
|
|
index2 = this.FindClosestPlayer();
|
|
NetworkText text = NetworkText.FromKey("Game.EnemiesDefeatedAnnouncement", (object) NPC.killCount[index1], (object) NetworkText.FromKey(Lang.GetNPCName(npc).Key));
|
|
if (index2 >= 0 && index2 < (int) byte.MaxValue)
|
|
text = NetworkText.FromKey("Game.EnemiesDefeatedByAnnouncement", (object) Main.player[index2].name, (object) NPC.killCount[index1], (object) NetworkText.FromKey(Lang.GetNPCName(npc).Key));
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(text.ToString(), (byte) 250, (byte) 250, (byte) 0);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(text, new Color(250, 250, 0));
|
|
break;
|
|
}
|
|
int Type = Item.BannerToItem(index1);
|
|
Vector2 position = this.position;
|
|
if (index2 >= 0 && index2 < (int) byte.MaxValue)
|
|
position = Main.player[index2].position;
|
|
Item.NewItem((int) position.X, (int) position.Y, this.width, this.height, Type);
|
|
}
|
|
|
|
private bool GetWereThereAnyInteractions() => this.realLife < 0 ? this.AnyInteractions() : Main.npc[this.realLife].AnyInteractions();
|
|
|
|
private void CountKillForAchievements()
|
|
{
|
|
switch (this.type)
|
|
{
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
if (!this.boss)
|
|
break;
|
|
AchievementsHelper.NotifyNPCKilled(this);
|
|
break;
|
|
case 125:
|
|
case 126:
|
|
if (NPC.AnyNPCs(this.type == 126 ? 125 : 126))
|
|
break;
|
|
AchievementsHelper.NotifyNPCKilled(this);
|
|
AchievementsHelper.CheckMechaMayhem(this.type);
|
|
break;
|
|
case (int) sbyte.MaxValue:
|
|
case 134:
|
|
AchievementsHelper.CheckMechaMayhem(this.type);
|
|
AchievementsHelper.NotifyNPCKilled(this);
|
|
break;
|
|
default:
|
|
AchievementsHelper.NotifyNPCKilled(this);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void NPCLoot_DropFood(Player closestPlayer)
|
|
{
|
|
int Type = 0;
|
|
int range = 0;
|
|
switch (this.type)
|
|
{
|
|
case 6:
|
|
case 173:
|
|
Type = 4015;
|
|
range = 100;
|
|
break;
|
|
case 34:
|
|
Type = 4018;
|
|
range = 100;
|
|
break;
|
|
case 39:
|
|
case 156:
|
|
Type = 4025;
|
|
range = 30;
|
|
break;
|
|
case 44:
|
|
Type = 4037;
|
|
range = 10;
|
|
break;
|
|
case 48:
|
|
Type = 4016;
|
|
range = 50;
|
|
break;
|
|
case 65:
|
|
case 67:
|
|
Type = 4035;
|
|
range = 50;
|
|
break;
|
|
case 69:
|
|
case 508:
|
|
case 509:
|
|
case 580:
|
|
case 581:
|
|
Type = 4012;
|
|
range = 15;
|
|
break;
|
|
case 120:
|
|
case 137:
|
|
case 138:
|
|
Type = 4011;
|
|
range = 150;
|
|
break;
|
|
case 122:
|
|
Type = 4017;
|
|
range = 75;
|
|
break;
|
|
case 150:
|
|
case 184:
|
|
Type = 4026;
|
|
range = 150;
|
|
break;
|
|
case 152:
|
|
case 177:
|
|
Type = 4023;
|
|
range = 15;
|
|
break;
|
|
case 154:
|
|
case 206:
|
|
Type = 4027;
|
|
range = 75;
|
|
break;
|
|
case 163:
|
|
case 164:
|
|
case 165:
|
|
case 238:
|
|
case 530:
|
|
case 531:
|
|
Type = 4020;
|
|
range = 30;
|
|
break;
|
|
case 170:
|
|
case 171:
|
|
case 180:
|
|
Type = 3532;
|
|
range = 15;
|
|
break;
|
|
case 224:
|
|
Type = 4021;
|
|
range = 50;
|
|
break;
|
|
case 289:
|
|
Type = 4018;
|
|
range = 50;
|
|
break;
|
|
case 290:
|
|
Type = 4013;
|
|
range = 21;
|
|
break;
|
|
case 291:
|
|
case 292:
|
|
case 293:
|
|
Type = 4013;
|
|
range = 7;
|
|
break;
|
|
case 469:
|
|
Type = 4037;
|
|
range = 100;
|
|
break;
|
|
case 480:
|
|
case 481:
|
|
Type = 4029;
|
|
range = 50;
|
|
break;
|
|
case 482:
|
|
case 483:
|
|
Type = 4036;
|
|
range = 50;
|
|
break;
|
|
case 494:
|
|
case 495:
|
|
case 496:
|
|
case 497:
|
|
case 498:
|
|
case 499:
|
|
case 500:
|
|
case 501:
|
|
case 502:
|
|
case 503:
|
|
case 504:
|
|
case 505:
|
|
case 506:
|
|
Type = 4030;
|
|
range = 75;
|
|
break;
|
|
case 542:
|
|
case 543:
|
|
case 544:
|
|
case 545:
|
|
case 546:
|
|
Type = 4028;
|
|
range = 30;
|
|
break;
|
|
}
|
|
if (this.SpawnedFromStatue || Type == 0 || range == 0 || closestPlayer.RollLuck(range) != 0)
|
|
return;
|
|
Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type);
|
|
}
|
|
|
|
public static void CatchNPC(int i, int who = -1)
|
|
{
|
|
if (!Main.npc[i].active)
|
|
return;
|
|
if (Main.netMode == 1)
|
|
{
|
|
Main.npc[i].active = false;
|
|
NetMessage.SendData(70, number: i, number2: ((float) who));
|
|
}
|
|
else
|
|
{
|
|
if (Main.npc[i].catchItem <= (short) 0)
|
|
return;
|
|
if (Main.npc[i].SpawnedFromStatue)
|
|
{
|
|
Vector2 position = Main.npc[i].Center - new Vector2(20f);
|
|
Utils.PoofOfSmoke(position);
|
|
Main.npc[i].active = false;
|
|
NetMessage.SendData(23, number: i);
|
|
NetMessage.SendData(106, number: ((int) position.X), number2: position.Y);
|
|
}
|
|
else
|
|
{
|
|
new Item().SetDefaults((int) Main.npc[i].catchItem);
|
|
Item.NewItem((int) Main.player[who].Center.X, (int) Main.player[who].Center.Y, 0, 0, (int) Main.npc[i].catchItem, noGrabDelay: true);
|
|
Main.npc[i].active = false;
|
|
NetMessage.SendData(23, number: i);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void DropBossBags()
|
|
{
|
|
int itemType = -1;
|
|
if (this.type == 50)
|
|
itemType = 3318;
|
|
if (this.type == 4)
|
|
itemType = 3319;
|
|
if (this.type >= 13 && this.type <= 15)
|
|
itemType = 3320;
|
|
if (this.type == 266)
|
|
itemType = 3321;
|
|
if (this.type == 222)
|
|
itemType = 3322;
|
|
if (this.type == 35)
|
|
itemType = 3323;
|
|
if (this.type == 113)
|
|
itemType = 3324;
|
|
if (this.type == 134)
|
|
itemType = 3325;
|
|
if (this.type == 125 || this.type == 126)
|
|
itemType = 3326;
|
|
if (this.type == (int) sbyte.MaxValue)
|
|
itemType = 3327;
|
|
if (this.type == 262)
|
|
itemType = 3328;
|
|
if (this.type == 245)
|
|
itemType = 3329;
|
|
if (this.type == 370)
|
|
itemType = 3330;
|
|
if (this.type == 439)
|
|
itemType = 3331;
|
|
if (this.type == 398)
|
|
itemType = 3332;
|
|
if (this.type == 551)
|
|
itemType = 3860;
|
|
this.DropItemInstanced(this.position, this.Size, itemType);
|
|
}
|
|
|
|
public void DropItemInstanced(
|
|
Vector2 Position,
|
|
Vector2 HitboxSize,
|
|
int itemType,
|
|
int itemStack = 1,
|
|
bool interactionRequired = true)
|
|
{
|
|
if (itemType <= 0)
|
|
return;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Item.NewItem((int) Position.X, (int) Position.Y, (int) HitboxSize.X, (int) HitboxSize.Y, itemType, itemStack);
|
|
break;
|
|
case 2:
|
|
int number = Item.NewItem((int) Position.X, (int) Position.Y, (int) HitboxSize.X, (int) HitboxSize.Y, itemType, itemStack, true);
|
|
Main.timeItemSlotCannotBeReusedFor[number] = 54000;
|
|
for (int remoteClient = 0; remoteClient < (int) byte.MaxValue; ++remoteClient)
|
|
{
|
|
if (Main.player[remoteClient].active && (this.playerInteraction[remoteClient] || !interactionRequired))
|
|
NetMessage.SendData(90, remoteClient, number: number);
|
|
}
|
|
Main.item[number].active = false;
|
|
break;
|
|
}
|
|
this.value = 0.0f;
|
|
}
|
|
|
|
public void PlayerInteraction(int player)
|
|
{
|
|
if (this.realLife < 0 ? this.playerInteraction[player] : Main.npc[this.realLife].playerInteraction[player])
|
|
return;
|
|
if (this.type == 13 || this.type == 14 || this.type == 15)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 13 || Main.npc[index].type == 14 || Main.npc[index].type == 15))
|
|
Main.npc[index].ApplyInteraction(player);
|
|
}
|
|
}
|
|
if (this.type == 134 || this.type == 135 || this.type == 136)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 134 || Main.npc[index].type == 135 || Main.npc[index].type == 136))
|
|
Main.npc[index].ApplyInteraction(player);
|
|
}
|
|
}
|
|
if (this.type == 35 || this.type == 36)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 35 || Main.npc[index].type == 36))
|
|
Main.npc[index].ApplyInteraction(player);
|
|
}
|
|
}
|
|
if (this.type == 113 || this.type == 114)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 113 || Main.npc[index].type == 114))
|
|
Main.npc[index].ApplyInteraction(player);
|
|
}
|
|
}
|
|
if (this.type >= (int) sbyte.MaxValue && this.type <= 131)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type >= (int) sbyte.MaxValue && Main.npc[index].type <= 131)
|
|
Main.npc[index].ApplyInteraction(player);
|
|
}
|
|
}
|
|
if (this.type >= 245 && this.type <= 249)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type >= 245 && Main.npc[index].type <= 249)
|
|
Main.npc[index].ApplyInteraction(player);
|
|
}
|
|
}
|
|
if ((this.type == 396 || this.type == 397) && Main.npc[(int) this.ai[3]].active && Main.npc[(int) this.ai[3]].type == 398)
|
|
Main.npc[(int) this.ai[3]].ApplyInteraction(player);
|
|
if ((this.type == 393 || this.type == 394) && Main.npc[(int) this.ai[0]].active && Main.npc[(int) this.ai[0]].type == 395)
|
|
Main.npc[(int) this.ai[0]].ApplyInteraction(player);
|
|
if (this.type == 492 && Main.npc[(int) this.ai[0]].active && Main.npc[(int) this.ai[0]].type == 491)
|
|
Main.npc[(int) this.ai[0]].ApplyInteraction(player);
|
|
this.ApplyInteraction(player);
|
|
}
|
|
|
|
public void ApplyInteraction(int player)
|
|
{
|
|
if (this.realLife >= 0)
|
|
Main.npc[this.realLife].playerInteraction[player] = true;
|
|
else
|
|
this.playerInteraction[player] = true;
|
|
if (player >= (int) byte.MaxValue)
|
|
return;
|
|
if (this.realLife >= 0)
|
|
Main.npc[this.realLife].lastInteraction = player;
|
|
else
|
|
this.lastInteraction = player;
|
|
}
|
|
|
|
public static bool CanReleaseNPCs(int who)
|
|
{
|
|
float num1 = 0.7f;
|
|
if (Main.netMode != 1)
|
|
num1 += 0.05f;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active)
|
|
{
|
|
++num3;
|
|
if ((int) Main.npc[index].releaseOwner == who)
|
|
++num2;
|
|
}
|
|
}
|
|
int num4 = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
++num4;
|
|
}
|
|
int num5 = (int) (200.0 * (double) num1 / (double) num4);
|
|
return (double) num3 < 200.0 * (double) num1 && num2 < num5;
|
|
}
|
|
|
|
public static void ReleaseNPC(int x, int y, int Type, int Style, int who)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
NetMessage.SendData(71, number: x, number2: ((float) y), number3: ((float) Type), number4: ((float) Style));
|
|
}
|
|
else
|
|
{
|
|
if (Type < 0 || Type >= 663 || !Main.npcCatchable[Type] || !NPC.CanReleaseNPCs(who))
|
|
return;
|
|
switch (Type)
|
|
{
|
|
case 148:
|
|
int Type1 = Type + Main.rand.Next(2);
|
|
int index1 = NPC.NewNPC(x, y, Type1);
|
|
Main.npc[index1].releaseOwner = (short) who;
|
|
break;
|
|
case 356:
|
|
int index2 = NPC.NewNPC(x, y, Type);
|
|
Main.npc[index2].ai[2] = (float) Style;
|
|
Main.npc[index2].releaseOwner = (short) who;
|
|
break;
|
|
case 583:
|
|
case 584:
|
|
case 585:
|
|
int index3 = NPC.NewNPC(x, y, Type);
|
|
Main.npc[index3].releaseOwner = (short) who;
|
|
Main.npc[index3].ai[2] = 2f;
|
|
Main.npc[index3].TargetClosest();
|
|
Main.npc[index3].ai[3] = 0.0f;
|
|
Main.npc[index3].netUpdate = true;
|
|
break;
|
|
case 614:
|
|
int index4 = NPC.NewNPC(x, y, Type);
|
|
Main.npc[index4].releaseOwner = (short) who;
|
|
int num = Main.player[who].direction;
|
|
if (Style > 2)
|
|
{
|
|
Style -= 2;
|
|
Main.npc[index4].SpawnedFromStatue = true;
|
|
}
|
|
if (Style == 1)
|
|
num = 1;
|
|
if (Style == 2)
|
|
num = -1;
|
|
Main.npc[index4].direction = num;
|
|
Main.npc[index4].spriteDirection = num;
|
|
Main.npc[index4].netUpdate = true;
|
|
break;
|
|
default:
|
|
int index5 = NPC.NewNPC(x, y, Type);
|
|
Main.npc[index5].releaseOwner = (short) who;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void SlimeRainSpawns(int plr)
|
|
{
|
|
int checkScreenHeight = Main.LogicCheckScreenHeight;
|
|
int checkScreenWidth = Main.LogicCheckScreenWidth;
|
|
float num1 = 15f;
|
|
Player player = Main.player[plr];
|
|
if ((double) player.position.Y > Main.worldSurface * 16.0 + (double) (checkScreenHeight / 2) || (double) player.nearbyActiveNPCs > (double) num1)
|
|
return;
|
|
int maxValue1 = 45 + (int) (450.0 * (double) (player.nearbyActiveNPCs / num1));
|
|
if (Main.expertMode)
|
|
maxValue1 = (int) ((double) maxValue1 * 0.85);
|
|
if (Main.rand.Next(maxValue1) != 0)
|
|
return;
|
|
int minValue1 = (int) ((double) player.Center.X - (double) checkScreenWidth);
|
|
int maxValue2 = minValue1 + checkScreenWidth * 2;
|
|
int minValue2 = (int) ((double) player.Center.Y - (double) checkScreenHeight * 1.5);
|
|
int maxValue3 = (int) ((double) player.Center.Y - (double) checkScreenHeight * 0.75);
|
|
int num2 = Main.rand.Next(minValue1, maxValue2);
|
|
int num3 = Main.rand.Next(minValue2, maxValue3);
|
|
int index1 = num2 / 16;
|
|
int index2 = num3 / 16;
|
|
if (index1 < 10 || index1 > Main.maxTilesX + 10 || (double) index2 < Main.worldSurface * 0.3 || (double) index2 > Main.worldSurface || Collision.SolidTiles(index1 - 3, index1 + 3, index2 - 5, index2 + 2) || Main.wallHouse[(int) Main.tile[index1, index2].wall])
|
|
return;
|
|
int index3 = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 1);
|
|
if (Main.rand.Next(200) == 0)
|
|
Main.npc[index3].SetDefaults(-4);
|
|
else if (Main.expertMode)
|
|
{
|
|
if (Main.rand.Next(7) == 0)
|
|
{
|
|
Main.npc[index3].SetDefaults(-7);
|
|
}
|
|
else
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
return;
|
|
Main.npc[index3].SetDefaults(-3);
|
|
}
|
|
}
|
|
else if (Main.rand.Next(10) == 0)
|
|
{
|
|
Main.npc[index3].SetDefaults(-7);
|
|
}
|
|
else
|
|
{
|
|
if (Main.rand.Next(5) >= 2)
|
|
return;
|
|
Main.npc[index3].SetDefaults(-3);
|
|
}
|
|
}
|
|
|
|
public static bool Spawning_SandstoneCheck(int x, int y)
|
|
{
|
|
if (!WorldGen.InWorld(x, y, 10))
|
|
return false;
|
|
int num = 0;
|
|
for (int index1 = 0; index1 < 8; ++index1)
|
|
{
|
|
Tile tile1 = Main.tile[x, y + index1];
|
|
if (tile1.active() && TileID.Sets.Conversion.Sand[(int) tile1.type])
|
|
{
|
|
++num;
|
|
for (int index2 = 1; index2 <= 4; ++index2)
|
|
{
|
|
Tile tile2 = Main.tile[x + index2, y + index1];
|
|
if (tile2.active() && TileID.Sets.Conversion.Sand[(int) tile2.type])
|
|
++num;
|
|
else
|
|
break;
|
|
}
|
|
for (int index3 = 1; index3 <= 4; ++index3)
|
|
{
|
|
Tile tile3 = Main.tile[x - index3, y + index1];
|
|
if (tile3.active() && TileID.Sets.Conversion.Sand[(int) tile3.type])
|
|
++num;
|
|
else
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
return num >= 40;
|
|
}
|
|
|
|
public static bool Spawning_FlyingAntlionCheck(int x, int y)
|
|
{
|
|
if (!WorldGen.InWorld(x, y, 10))
|
|
return false;
|
|
for (int index = 0; index < 50 && y - index >= 10; ++index)
|
|
{
|
|
Tile tile = Main.tile[x, y - index];
|
|
if (!WallID.Sets.Conversion.HardenedSand[(int) tile.wall] && !WallID.Sets.Conversion.Sandstone[(int) tile.wall])
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private static int RollDragonflyType(int tileType = 2) => tileType == 53 ? (int) Main.rand.NextFromList<short>((short) 595, (short) 598, (short) 600) : (int) Main.rand.NextFromList<short>((short) 596, (short) 597, (short) 599);
|
|
|
|
public static void SpawnNPC()
|
|
{
|
|
if (NPC.noSpawnCycle)
|
|
{
|
|
NPC.noSpawnCycle = false;
|
|
}
|
|
else
|
|
{
|
|
bool windyForButterflies = NPC.TooWindyForButterflies;
|
|
bool flag1 = (double) Main.windSpeedTarget < -0.2 || (double) Main.windSpeedTarget > 0.2;
|
|
NPC.RevengeManager.CheckRespawns();
|
|
bool flag2 = false;
|
|
int index1 = 0;
|
|
int index2 = 0;
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
for (int index3 = 0; index3 < (int) byte.MaxValue; ++index3)
|
|
{
|
|
if (Main.player[index3].active)
|
|
++num2;
|
|
}
|
|
float num3 = 0.0f;
|
|
for (int index4 = 0; index4 < 200; ++index4)
|
|
{
|
|
if (Main.npc[index4].active)
|
|
{
|
|
switch (Main.npc[index4].type)
|
|
{
|
|
case 315:
|
|
case 325:
|
|
case 327:
|
|
case 328:
|
|
case 344:
|
|
case 345:
|
|
case 346:
|
|
num3 += Main.npc[index4].npcSlots;
|
|
continue;
|
|
default:
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
float num4 = (float) (int) ((double) NPC.defaultMaxSpawns * (2.0 + 0.300000011920929 * (double) num2));
|
|
for (int index5 = 0; index5 < (int) byte.MaxValue; ++index5)
|
|
{
|
|
if (Main.player[index5].active && !Main.player[index5].dead)
|
|
{
|
|
bool flag3 = false;
|
|
if (!Main.player[index5].isNearNPC(398, (float) NPC.MoonLordFightingDistance))
|
|
{
|
|
if (Main.slimeRain)
|
|
NPC.SlimeRainSpawns(index5);
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
bool flag13 = false;
|
|
bool flag14 = NPC.downedPlantBoss && Main.hardMode;
|
|
bool itAhappyWindyDay = Main.IsItAHappyWindyDay;
|
|
if (Main.player[index5].active && Main.invasionType > 0 && Main.invasionDelay == 0 && Main.invasionSize > 0 && (double) Main.player[index5].position.Y < Main.worldSurface * 16.0 + (double) NPC.sHeight)
|
|
{
|
|
int num5 = 3000;
|
|
if ((double) Main.player[index5].position.X > Main.invasionX * 16.0 - (double) num5 && (double) Main.player[index5].position.X < Main.invasionX * 16.0 + (double) num5)
|
|
flag6 = true;
|
|
else if (Main.invasionX >= (double) (Main.maxTilesX / 2 - 5) && Main.invasionX <= (double) (Main.maxTilesX / 2 + 5))
|
|
{
|
|
for (int index6 = 0; index6 < 200; ++index6)
|
|
{
|
|
if (Main.npc[index6].townNPC && (double) Math.Abs(Main.player[index5].position.X - Main.npc[index6].Center.X) < (double) num5)
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
flag6 = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.player[index5].ZoneTowerSolar || Main.player[index5].ZoneTowerNebula || Main.player[index5].ZoneTowerVortex || Main.player[index5].ZoneTowerStardust)
|
|
flag6 = true;
|
|
int index7 = (int) ((double) Main.player[index5].position.X + (double) (Main.player[index5].width / 2)) / 16;
|
|
int index8 = (int) ((double) Main.player[index5].position.Y + (double) (Main.player[index5].height / 2)) / 16;
|
|
if (Main.wallHouse[(int) Main.tile[index7, index8].wall])
|
|
flag5 = true;
|
|
if (Main.tile[index7, index8].wall == (ushort) 87)
|
|
flag4 = true;
|
|
bool flag15 = 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[index5].position.Y > (double) (Main.UnderworldLayer * 16))
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 2.0);
|
|
else if ((double) Main.player[index5].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[index5].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.pumpkinMoon || Main.snowMoon) && (double) Main.player[index5].position.Y < Main.worldSurface * 16.0)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.2);
|
|
NPC.maxSpawns *= 2;
|
|
}
|
|
}
|
|
else if (Main.dayTime && Main.eclipse)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.2);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.89999997615814);
|
|
}
|
|
if (Main.player[index5].ZoneSnow && (double) Main.player[index5].position.Y / 16.0 < Main.worldSurface)
|
|
{
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns + (double) NPC.maxSpawns * (double) Main.cloudAlpha);
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * (1.0 - (double) Main.cloudAlpha + 1.0) / 2.0);
|
|
}
|
|
if (Main.drunkWorld && Main.tile[index7, index8].wall == (ushort) 86)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.3);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.79999995231628);
|
|
}
|
|
if (Main.player[index5].ZoneDungeon)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.3);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.79999995231628);
|
|
}
|
|
else if (Main.player[index5].ZoneSandstorm)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * (Main.hardMode ? 0.400000005960464 : 0.899999976158142));
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * (Main.hardMode ? 1.5 : 1.20000004768372));
|
|
}
|
|
else if (Main.player[index5].ZoneUndergroundDesert)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.200000002980232);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 3.0);
|
|
}
|
|
else if (Main.player[index5].ZoneJungle)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.5);
|
|
}
|
|
else if (Main.player[index5].ZoneCorrupt || Main.player[index5].ZoneCrimson)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.65);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.29999995231628);
|
|
}
|
|
else if (Main.player[index5].ZoneMeteor)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.10000002384186);
|
|
}
|
|
if (Main.player[index5].ZoneHallow && (double) Main.player[index5].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.wofNPCIndex >= 0 && (double) Main.player[index5].position.Y > (double) (Main.UnderworldLayer * 16))
|
|
{
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.300000011920929);
|
|
NPC.spawnRate *= 3;
|
|
}
|
|
if ((double) Main.player[index5].nearbyActiveNPCs < (double) NPC.maxSpawns * 0.2)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.600000023841858);
|
|
else if ((double) Main.player[index5].nearbyActiveNPCs < (double) NPC.maxSpawns * 0.4)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.699999988079071);
|
|
else if ((double) Main.player[index5].nearbyActiveNPCs < (double) NPC.maxSpawns * 0.6)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.800000011920929);
|
|
else if ((double) Main.player[index5].nearbyActiveNPCs < (double) NPC.maxSpawns * 0.8)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.899999976158142);
|
|
if ((double) Main.player[index5].position.Y / 16.0 > (Main.worldSurface + Main.rockLayer) / 2.0 || Main.player[index5].ZoneCorrupt || Main.player[index5].ZoneCrimson)
|
|
{
|
|
if ((double) Main.player[index5].nearbyActiveNPCs < (double) NPC.maxSpawns * 0.2)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.699999988079071);
|
|
else if ((double) Main.player[index5].nearbyActiveNPCs < (double) NPC.maxSpawns * 0.4)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.899999976158142);
|
|
}
|
|
if (Main.player[index5].invis)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.20000004768372);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.800000011920929);
|
|
}
|
|
if (Main.player[index5].calmed)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.29999995231628);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.699999988079071);
|
|
}
|
|
if (Main.player[index5].sunflower)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.20000004768372);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.800000011920929);
|
|
}
|
|
if (Main.player[index5].enemySpawns)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.5);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 2.0);
|
|
}
|
|
if (Main.player[index5].ZoneWaterCandle || Main.player[index5].inventory[Main.player[index5].selectedItem].type == 148)
|
|
{
|
|
if (!Main.player[index5].ZonePeaceCandle && Main.player[index5].inventory[Main.player[index5].selectedItem].type != 3117)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.75);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.5);
|
|
}
|
|
}
|
|
else if (Main.player[index5].ZonePeaceCandle || Main.player[index5].inventory[Main.player[index5].selectedItem].type == 3117)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.3);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.699999988079071);
|
|
}
|
|
if (Main.player[index5].ZoneWaterCandle && (double) Main.player[index5].position.Y / 16.0 < Main.worldSurface * 0.349999994039536)
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.5);
|
|
if (Main.player[index5].isNearFairy())
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.20000004768372);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.800000011920929);
|
|
}
|
|
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 (Main.getGoodWorld)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.800000011920929);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.20000004768372);
|
|
}
|
|
if (Main.GameModeInfo.IsJourneyMode)
|
|
{
|
|
CreativePowers.SpawnRateSliderPerPlayerPower power = CreativePowerManager.Instance.GetPower<CreativePowers.SpawnRateSliderPerPlayerPower>();
|
|
if (power != null && power.GetIsUnlocked())
|
|
{
|
|
if (!power.GetShouldDisableSpawnsFor(index5))
|
|
{
|
|
float num6;
|
|
if (power.GetRemappedSliderValueFor(index5, out num6))
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate / (double) num6);
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * (double) num6);
|
|
}
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
}
|
|
if ((Main.pumpkinMoon || Main.snowMoon) && (double) Main.player[index5].position.Y < Main.worldSurface * 16.0)
|
|
{
|
|
NPC.maxSpawns = (int) ((double) NPC.defaultMaxSpawns * (2.0 + 0.3 * (double) num2));
|
|
NPC.spawnRate = 20;
|
|
}
|
|
if (DD2Event.Ongoing && Main.player[index5].ZoneOldOneArmy)
|
|
{
|
|
NPC.maxSpawns = NPC.defaultMaxSpawns;
|
|
NPC.spawnRate = NPC.defaultSpawnRate;
|
|
}
|
|
if (flag6)
|
|
{
|
|
NPC.maxSpawns = (int) ((double) NPC.defaultMaxSpawns * (2.0 + 0.3 * (double) num2));
|
|
NPC.spawnRate = 20;
|
|
}
|
|
if (Main.player[index5].ZoneDungeon && !NPC.downedBoss3)
|
|
NPC.spawnRate = 10;
|
|
if (!flag6 && (!Main.bloodMoon && !Main.pumpkinMoon && !Main.snowMoon || Main.dayTime) && (!Main.eclipse || !Main.dayTime) && !Main.player[index5].ZoneDungeon && !Main.player[index5].ZoneCorrupt && !Main.player[index5].ZoneCrimson && !Main.player[index5].ZoneMeteor && !Main.player[index5].ZoneOldOneArmy)
|
|
{
|
|
if ((double) Main.player[index5].Center.Y / 16.0 > (double) Main.UnderworldLayer)
|
|
{
|
|
if ((double) Main.player[index5].townNPCs == 1.0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
flag5 = true;
|
|
if (Main.rand.Next(10) == 0)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.5);
|
|
}
|
|
else
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.25);
|
|
}
|
|
else if ((double) Main.player[index5].townNPCs == 2.0)
|
|
{
|
|
if (Main.rand.Next(4) != 0)
|
|
flag5 = true;
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.5);
|
|
}
|
|
else
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.5);
|
|
}
|
|
else if ((double) Main.player[index5].townNPCs >= 3.0)
|
|
{
|
|
if (Main.rand.Next(10) != 0)
|
|
flag5 = true;
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.5);
|
|
}
|
|
else
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 2.0);
|
|
}
|
|
}
|
|
else if ((double) Main.player[index5].townNPCs == 1.0)
|
|
{
|
|
flag5 = true;
|
|
if (Main.player[index5].ZoneGraveyard)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.66);
|
|
if (Main.rand.Next(9) == 1)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
}
|
|
else if (Main.rand.Next(3) == 1)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
else
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 2.0);
|
|
}
|
|
else if ((double) Main.player[index5].townNPCs == 2.0)
|
|
{
|
|
flag5 = true;
|
|
if (Main.player[index5].ZoneGraveyard)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 2.33);
|
|
if (Main.rand.Next(6) == 1)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
}
|
|
else if (Main.rand.Next(3) != 0)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
else
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 3.0);
|
|
}
|
|
else if ((double) Main.player[index5].townNPCs >= 3.0)
|
|
{
|
|
flag5 = true;
|
|
if (Main.player[index5].ZoneGraveyard)
|
|
{
|
|
NPC.spawnRate = (int) ((double) NPC.spawnRate * 3.0);
|
|
if (Main.rand.Next(3) == 1)
|
|
{
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!Main.expertMode || Main.rand.Next(30) != 0)
|
|
flag12 = true;
|
|
NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6);
|
|
}
|
|
}
|
|
}
|
|
bool flag16 = false;
|
|
if (Main.player[index5].active && !Main.player[index5].dead && (double) Main.player[index5].nearbyActiveNPCs < (double) NPC.maxSpawns && Main.rand.Next(NPC.spawnRate) == 0)
|
|
{
|
|
bool flag17 = Main.player[index5].ZoneTowerNebula || Main.player[index5].ZoneTowerSolar || Main.player[index5].ZoneTowerStardust || Main.player[index5].ZoneTowerVortex;
|
|
NPC.spawnRangeX = (int) ((double) (NPC.sWidth / 16) * 0.7);
|
|
NPC.spawnRangeY = (int) ((double) (NPC.sHeight / 16) * 0.7);
|
|
NPC.safeRangeX = (int) ((double) (NPC.sWidth / 16) * 0.52);
|
|
NPC.safeRangeY = (int) ((double) (NPC.sHeight / 16) * 0.52);
|
|
if (Main.player[index5].inventory[Main.player[index5].selectedItem].type == 1254 || Main.player[index5].inventory[Main.player[index5].selectedItem].type == 1299 || Main.player[index5].scope)
|
|
{
|
|
float num7 = 1.5f;
|
|
if (Main.player[index5].inventory[Main.player[index5].selectedItem].type == 1254 && Main.player[index5].scope)
|
|
num7 = 1.25f;
|
|
else if (Main.player[index5].inventory[Main.player[index5].selectedItem].type == 1254)
|
|
num7 = 1.5f;
|
|
else if (Main.player[index5].inventory[Main.player[index5].selectedItem].type == 1299)
|
|
num7 = 1.5f;
|
|
else if (Main.player[index5].scope)
|
|
num7 = 2f;
|
|
NPC.spawnRangeX += (int) ((double) (NPC.sWidth / 16) * 0.5 / (double) num7);
|
|
NPC.spawnRangeY += (int) ((double) (NPC.sHeight / 16) * 0.5 / (double) num7);
|
|
NPC.safeRangeX += (int) ((double) (NPC.sWidth / 16) * 0.5 / (double) num7);
|
|
NPC.safeRangeY += (int) ((double) (NPC.sHeight / 16) * 0.5 / (double) num7);
|
|
}
|
|
int minValue1 = (int) ((double) Main.player[index5].position.X / 16.0) - NPC.spawnRangeX;
|
|
int maxValue1 = (int) ((double) Main.player[index5].position.X / 16.0) + NPC.spawnRangeX;
|
|
int minValue2 = (int) ((double) Main.player[index5].position.Y / 16.0) - NPC.spawnRangeY;
|
|
int maxValue2 = (int) ((double) Main.player[index5].position.Y / 16.0) + NPC.spawnRangeY;
|
|
int num8 = (int) ((double) Main.player[index5].position.X / 16.0) - NPC.safeRangeX;
|
|
int num9 = (int) ((double) Main.player[index5].position.X / 16.0) + NPC.safeRangeX;
|
|
int num10 = (int) ((double) Main.player[index5].position.Y / 16.0) - NPC.safeRangeY;
|
|
int num11 = (int) ((double) Main.player[index5].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 index9 = 0; index9 < 50; ++index9)
|
|
{
|
|
int index10 = Main.rand.Next(minValue1, maxValue1);
|
|
int index11 = Main.rand.Next(minValue2, maxValue2);
|
|
if (!Main.tile[index10, index11].nactive() || !Main.tileSolid[(int) Main.tile[index10, index11].type])
|
|
{
|
|
if (flag17 || !Main.wallHouse[(int) Main.tile[index10, index11].wall])
|
|
{
|
|
if (!flag6 && (double) index11 < Main.worldSurface * 0.349999994039536 && !flag12 && ((double) index10 < (double) Main.maxTilesX * 0.45 || (double) index10 > (double) Main.maxTilesX * 0.55 || Main.hardMode))
|
|
{
|
|
num1 = (int) Main.tile[index10, index11].type;
|
|
index1 = index10;
|
|
index2 = index11;
|
|
flag15 = true;
|
|
flag3 = true;
|
|
}
|
|
else if (!flag6 && (double) index11 < Main.worldSurface * 0.449999988079071 && !flag12 && Main.hardMode && Main.rand.Next(10) == 0)
|
|
{
|
|
num1 = (int) Main.tile[index10, index11].type;
|
|
index1 = index10;
|
|
index2 = index11;
|
|
flag15 = true;
|
|
flag3 = true;
|
|
}
|
|
else
|
|
{
|
|
for (int index12 = index11; index12 < Main.maxTilesY && index12 < maxValue2; ++index12)
|
|
{
|
|
if (Main.tile[index10, index12].nactive() && Main.tileSolid[(int) Main.tile[index10, index12].type])
|
|
{
|
|
if (index10 < num8 || index10 > num9 || index12 < num10 || index12 > num11)
|
|
{
|
|
num1 = (int) Main.tile[index10, index12].type;
|
|
index1 = index10;
|
|
index2 = index12;
|
|
flag15 = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (!flag3 && Main.player[index5].afkCounter >= NPC.AFKTimeNeededForNoWorms)
|
|
flag5 = true;
|
|
if (flag15)
|
|
{
|
|
int num12 = index1 - NPC.spawnSpaceX / 2;
|
|
int num13 = index1 + NPC.spawnSpaceX / 2;
|
|
int num14 = index2 - NPC.spawnSpaceY;
|
|
int num15 = index2;
|
|
if (num12 < 0)
|
|
flag15 = false;
|
|
if (num13 > Main.maxTilesX)
|
|
flag15 = false;
|
|
if (num14 < 0)
|
|
flag15 = false;
|
|
if (num15 > Main.maxTilesY)
|
|
flag15 = false;
|
|
if (flag15)
|
|
{
|
|
for (int index13 = num12; index13 < num13; ++index13)
|
|
{
|
|
for (int index14 = num14; index14 < num15; ++index14)
|
|
{
|
|
if (Main.tile[index13, index14].nactive() && Main.tileSolid[(int) Main.tile[index13, index14].type])
|
|
{
|
|
flag15 = false;
|
|
break;
|
|
}
|
|
if (Main.tile[index13, index14].lava())
|
|
{
|
|
flag15 = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (index1 >= num8 && index1 <= num9)
|
|
flag16 = true;
|
|
}
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
if (flag15 || flag15)
|
|
break;
|
|
}
|
|
}
|
|
if (flag15)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(index1 * 16, index2 * 16, 16, 16);
|
|
for (int index15 = 0; index15 < (int) byte.MaxValue; ++index15)
|
|
{
|
|
if (Main.player[index15].active)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.player[index15].position.X + (double) (Main.player[index15].width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) Main.player[index15].position.Y + (double) (Main.player[index15].height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
flag15 = false;
|
|
}
|
|
}
|
|
}
|
|
if (flag15)
|
|
{
|
|
if (Main.player[index5].ZoneDungeon && (!Main.tileDungeon[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2 - 1].wall == (ushort) 0))
|
|
flag15 = false;
|
|
if (Main.tile[index1, index2 - 1].liquid > (byte) 0 && Main.tile[index1, index2 - 2].liquid > (byte) 0 && !Main.tile[index1, index2 - 1].lava())
|
|
{
|
|
if (Main.tile[index1, index2 - 1].honey())
|
|
flag8 = true;
|
|
else
|
|
flag7 = true;
|
|
}
|
|
int index16 = (int) Main.player[index5].Center.X / 16;
|
|
int index17 = (int) ((double) Main.player[index5].Bottom.Y + 8.0) / 16;
|
|
if (Main.tile[index1, index2].type == (ushort) 367)
|
|
flag10 = true;
|
|
else if (Main.tile[index1, index2].type == (ushort) 368)
|
|
flag9 = true;
|
|
else if (Main.tile[index16, index17].type == (ushort) 367)
|
|
flag10 = true;
|
|
else if (Main.tile[index16, index17].type == (ushort) 368)
|
|
{
|
|
flag9 = true;
|
|
}
|
|
else
|
|
{
|
|
int num16 = Main.rand.Next(20, 31);
|
|
int num17 = Main.rand.Next(1, 4);
|
|
if (index1 - num16 < 0)
|
|
num16 = index1;
|
|
if (index2 - num16 < 0)
|
|
num16 = index2;
|
|
if (index1 + num16 >= Main.maxTilesX)
|
|
num16 = Main.maxTilesX - index1 - 1;
|
|
if (index2 + num16 >= Main.maxTilesY)
|
|
num16 = Main.maxTilesY - index2 - 1;
|
|
for (int index18 = index1 - num16; index18 <= index1 + num16; index18 += num17)
|
|
{
|
|
int num18 = Main.rand.Next(1, 4);
|
|
for (int index19 = index2 - num16; index19 <= index2 + num16; index19 += num18)
|
|
{
|
|
if (Main.tile[index18, index19].type == (ushort) 367)
|
|
flag10 = true;
|
|
if (Main.tile[index18, index19].type == (ushort) 368)
|
|
flag9 = true;
|
|
}
|
|
}
|
|
int num19 = Main.rand.Next(30, 61);
|
|
int num20 = Main.rand.Next(3, 7);
|
|
if (index16 - num19 < 0)
|
|
num19 = index16;
|
|
if (index17 - num19 < 0)
|
|
num19 = index17;
|
|
if (index16 + num19 >= Main.maxTilesX)
|
|
num19 = Main.maxTilesX - index16 - 2;
|
|
if (index17 + num19 >= Main.maxTilesY)
|
|
num19 = Main.maxTilesY - index17 - 2;
|
|
for (int index20 = index16 - num19; index20 <= index16 + num19; index20 += num20)
|
|
{
|
|
int num21 = Main.rand.Next(3, 7);
|
|
for (int index21 = index17 - num19; index21 <= index17 + num19; index21 += num21)
|
|
{
|
|
if (Main.tile[index20, index21].type == (ushort) 367)
|
|
flag10 = true;
|
|
if (Main.tile[index20, index21].type == (ushort) 368)
|
|
flag9 = true;
|
|
}
|
|
}
|
|
}
|
|
if (flag8)
|
|
flag15 = false;
|
|
if ((num1 == 477 || num1 == 492) && !Main.bloodMoon && !Main.eclipse && Main.invasionType <= 0 && !Main.pumpkinMoon && !Main.snowMoon && !Main.slimeRain && Main.rand.Next(100) < 10)
|
|
flag15 = false;
|
|
}
|
|
if (flag15)
|
|
{
|
|
if ((double) index2 > Main.rockLayer && index2 < Main.UnderworldLayer && !Main.player[index5].ZoneDungeon && !flag6)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
int num22 = Main.rand.Next(5, 15);
|
|
if (index1 - num22 >= 0 && index1 + num22 < Main.maxTilesX)
|
|
{
|
|
for (int index22 = index1 - num22; index22 < index1 + num22; ++index22)
|
|
{
|
|
for (int index23 = index2 - num22; index23 < index2 + num22; ++index23)
|
|
{
|
|
if (Main.tile[index22, index23].wall == (ushort) 62)
|
|
flag11 = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int index24 = (int) Main.player[index5].position.X / 16;
|
|
int index25 = (int) Main.player[index5].position.Y / 16;
|
|
if (Main.tile[index24, index25].wall == (ushort) 62)
|
|
flag11 = true;
|
|
}
|
|
}
|
|
if ((double) index2 < Main.rockLayer && index2 > 200 && !Main.player[index5].ZoneDungeon && !flag6)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
int num23 = Main.rand.Next(5, 15);
|
|
if (index1 - num23 >= 0 && index1 + num23 < Main.maxTilesX)
|
|
{
|
|
for (int index26 = index1 - num23; index26 < index1 + num23; ++index26)
|
|
{
|
|
for (int index27 = index2 - num23; index27 < index2 + num23; ++index27)
|
|
{
|
|
if (WallID.Sets.Conversion.Sandstone[(int) Main.tile[index26, index27].wall] || WallID.Sets.Conversion.HardenedSand[(int) Main.tile[index26, index27].wall])
|
|
flag13 = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int index28 = (int) Main.player[index5].position.X / 16;
|
|
int index29 = (int) Main.player[index5].position.Y / 16;
|
|
if (WallID.Sets.Conversion.Sandstone[(int) Main.tile[index28, index29].wall] || WallID.Sets.Conversion.HardenedSand[(int) Main.tile[index28, index29].wall])
|
|
flag13 = true;
|
|
}
|
|
}
|
|
flag2 = false;
|
|
int type = (int) Main.tile[index1, index2].type;
|
|
int num24 = (int) Main.tile[index1, index2 - 1].wall;
|
|
if (Main.tile[index1, index2 - 2].wall == (ushort) 244 || Main.tile[index1, index2].wall == (ushort) 244)
|
|
num24 = 244;
|
|
bool flag18 = (double) new Point(index7 - index1, index8 - index2).X * (double) Main.windSpeedTarget > 0.0;
|
|
int tileType = NPC.SpawnNPC_TryFindingProperGroundTileType(type, index1, index2);
|
|
int newNPC = 200;
|
|
if (Main.player[index5].ZoneTowerNebula)
|
|
{
|
|
bool flag19 = true;
|
|
int Type = 0;
|
|
while (flag19)
|
|
{
|
|
Type = Utils.SelectRandom<int>(Main.rand, 424, 424, 424, 423, 423, 423, 421, 421, 421, 421, 421, 420);
|
|
flag19 = false;
|
|
if (Type == 424 && NPC.CountNPCS(Type) >= 2)
|
|
flag19 = true;
|
|
if (Type == 423 && NPC.CountNPCS(Type) >= 3)
|
|
flag19 = true;
|
|
if (Type == 420 && NPC.CountNPCS(Type) >= 2)
|
|
flag19 = true;
|
|
}
|
|
if (Type != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type, 1);
|
|
}
|
|
else if (Main.player[index5].ZoneTowerVortex)
|
|
{
|
|
bool flag20 = true;
|
|
int Type = 0;
|
|
while (flag20)
|
|
{
|
|
Type = Utils.SelectRandom<int>(Main.rand, 429, 429, 429, 429, 427, 427, 425, 425, 426);
|
|
flag20 = false;
|
|
if (Type == 425 && NPC.CountNPCS(Type) >= 3)
|
|
flag20 = true;
|
|
if (Type == 426 && NPC.CountNPCS(Type) >= 3)
|
|
flag20 = true;
|
|
if (Type == 429 && NPC.CountNPCS(Type) >= 4)
|
|
flag20 = true;
|
|
}
|
|
if (Type != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type, 1);
|
|
}
|
|
else if (Main.player[index5].ZoneTowerStardust)
|
|
{
|
|
int Type = Utils.SelectRandom<int>(Main.rand, 411, 411, 411, 409, 409, 407, 402, 405);
|
|
if (Type != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type, 1);
|
|
}
|
|
else if (Main.player[index5].ZoneTowerSolar)
|
|
{
|
|
bool flag21 = true;
|
|
int Type = 0;
|
|
while (flag21)
|
|
{
|
|
Type = Utils.SelectRandom<int>(Main.rand, 518, 419, 418, 412, 417, 416, 415);
|
|
flag21 = false;
|
|
if (Type == 415 && NPC.CountNPCS(Type) >= 2)
|
|
flag21 = true;
|
|
if (Type == 416 && NPC.CountNPCS(Type) >= 1)
|
|
flag21 = true;
|
|
if (Type == 518 && NPC.CountNPCS(Type) >= 2)
|
|
flag21 = true;
|
|
if (Type == 412 && NPC.CountNPCS(Type) >= 1)
|
|
flag21 = true;
|
|
}
|
|
if (Type != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type, 1);
|
|
}
|
|
else if (flag3)
|
|
{
|
|
int maxValue3 = 8;
|
|
int maxValue4 = 30;
|
|
bool flag22 = (double) Math.Abs(index1 - Main.maxTilesX / 2) / (double) (Main.maxTilesX / 2) > 0.330000013113022 && (Main.wallLight[(int) Main.tile[index7, index8].wall] || Main.tile[index7, index8].wall == (ushort) 73);
|
|
if (flag22 && NPC.AnyDanger())
|
|
flag22 = false;
|
|
if (Main.player[index5].ZoneWaterCandle)
|
|
{
|
|
maxValue3 = 3;
|
|
maxValue4 = 10;
|
|
}
|
|
if (flag6 && Main.invasionType == 4)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 388);
|
|
else if (flag22 && Main.hardMode && NPC.downedGolemBoss && (!NPC.downedMartians && Main.rand.Next(maxValue3) == 0 || Main.rand.Next(maxValue4) == 0) && !NPC.AnyNPCs(399))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 399);
|
|
else if (flag22 && Main.hardMode && NPC.downedGolemBoss && (!NPC.downedMartians && Main.rand.Next(maxValue3) == 0 || Main.rand.Next(maxValue4) == 0) && !NPC.AnyNPCs(399) && (Main.player[index5].inventory[Main.player[index5].selectedItem].type == 148 || Main.player[index5].ZoneWaterCandle))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 399);
|
|
else if (Main.hardMode && !NPC.AnyNPCs(87) && !flag5 && Main.rand.Next(10) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 87, 1);
|
|
else if (Main.hardMode && !NPC.AnyNPCs(87) && !flag5 && Main.rand.Next(10) == 0 && (Main.player[index5].inventory[Main.player[index5].selectedItem].type == 148 || Main.player[index5].ZoneWaterCandle))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 87, 1);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 48);
|
|
}
|
|
else if (flag6)
|
|
{
|
|
switch (Main.invasionType)
|
|
{
|
|
case 1:
|
|
if (Main.hardMode && !NPC.AnyNPCs(471) && Main.rand.Next(30) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 471);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(9) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 29);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 26);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 111);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 27);
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 28);
|
|
break;
|
|
case 2:
|
|
if (Main.rand.Next(7) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 145);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 143);
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 144);
|
|
break;
|
|
case 3:
|
|
if (Main.invasionSize < Main.invasionSizeStart / 2 && Main.rand.Next(20) == 0 && !NPC.AnyNPCs(491) && !Collision.SolidTiles(index1 - 20, index1 + 20, index2 - 40, index2 - 10))
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, (index2 - 10) * 16, 491);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(30) == 0 && !NPC.AnyNPCs(216))
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 216);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(11) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 215);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(9) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 252);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(7) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 214);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 213);
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 212);
|
|
break;
|
|
case 4:
|
|
int Type1 = 0;
|
|
int num25 = Main.rand.Next(7);
|
|
bool flag23 = (double) (Main.invasionSizeStart - Main.invasionSize) / (double) Main.invasionSizeStart >= 0.300000011920929 && !NPC.AnyNPCs(395);
|
|
if (Main.rand.Next(45) == 0 & flag23)
|
|
Type1 = 395;
|
|
else if (num25 >= 6)
|
|
{
|
|
if (Main.rand.Next(20) == 0 & flag23)
|
|
{
|
|
Type1 = 395;
|
|
}
|
|
else
|
|
{
|
|
int num26 = Main.rand.Next(2);
|
|
if (num26 == 0)
|
|
Type1 = 390;
|
|
if (num26 == 1)
|
|
Type1 = 386;
|
|
}
|
|
}
|
|
else if (num25 >= 4)
|
|
{
|
|
int num27 = Main.rand.Next(5);
|
|
Type1 = num27 >= 2 ? (num27 >= 4 ? 388 : 381) : 382;
|
|
}
|
|
else
|
|
{
|
|
int num28 = Main.rand.Next(4);
|
|
if (num28 == 3)
|
|
{
|
|
if (!NPC.AnyNPCs(520))
|
|
Type1 = 520;
|
|
else
|
|
num28 = Main.rand.Next(3);
|
|
}
|
|
if (num28 == 0)
|
|
Type1 = 385;
|
|
if (num28 == 1)
|
|
Type1 = 389;
|
|
if (num28 == 2)
|
|
Type1 = 383;
|
|
}
|
|
if (Type1 != 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type1, 1);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else if (num24 == 244)
|
|
{
|
|
if (flag7)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 55);
|
|
else if ((double) index2 > Main.worldSurface)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 447);
|
|
else
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 300);
|
|
}
|
|
else if (Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 359);
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 448);
|
|
else if (Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 357);
|
|
}
|
|
else if (Main.player[index5].RollLuck(2) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 624);
|
|
Main.npc[newNPC].timeLeft *= 10;
|
|
}
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 443);
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 539);
|
|
else if (Main.halloween && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 303);
|
|
else if (Main.xMas && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 337);
|
|
else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 540);
|
|
else if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, (int) Utils.SelectRandom<short>(Main.rand, (short) 299, (short) 538));
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 46);
|
|
}
|
|
else if (!NPC.savedBartender && DD2Event.ReadyToFindBartender && !NPC.AnyNPCs(579) && Main.rand.Next(80) == 0 && !flag7)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 579);
|
|
else if (Main.tile[index1, index2].wall == (ushort) 62 | flag11)
|
|
{
|
|
if (Main.tile[index1, index2].wall == (ushort) 62 && Main.rand.Next(8) == 0 && !flag7 && (double) index2 >= Main.rockLayer && index2 < Main.maxTilesY - 210 && !NPC.savedStylist && !NPC.AnyNPCs(354))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 354);
|
|
else if (Main.hardMode && Main.rand.Next(10) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 163);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 164);
|
|
}
|
|
else if (((WallID.Sets.Conversion.HardenedSand[(int) Main.tile[index1, index2].wall] ? 1 : (WallID.Sets.Conversion.Sandstone[(int) Main.tile[index1, index2].wall] ? 1 : 0)) | (flag13 ? 1 : 0)) != 0 && WorldGen.checkUnderground(index1, index2) && NPC.Spawning_FlyingAntlionCheck(index1, index2))
|
|
{
|
|
float num29 = 1f;
|
|
if ((double) index2 > (Main.rockLayer * 2.0 + (double) Main.maxTilesY) / 3.0)
|
|
num29 *= 0.5f;
|
|
else if ((double) index2 > Main.rockLayer)
|
|
num29 *= 0.75f;
|
|
if (Main.rand.Next(20) == 0 && !flag7 && !NPC.savedGolfer && !NPC.AnyNPCs(589))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 589);
|
|
else if (Main.hardMode && Main.rand.Next((int) (33.0 * (double) num29)) == 0 && !flag5 && (double) index2 > Main.worldSurface + 100.0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 510);
|
|
else if (Main.rand.Next((int) (33.0 * (double) num29)) == 0 && !flag5 && (double) index2 > Main.worldSurface + 100.0 && NPC.CountNPCS(513) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 513);
|
|
else if (Main.hardMode && Main.rand.Next(5) != 0)
|
|
{
|
|
List<int> intList = new List<int>();
|
|
if (Main.player[index5].ZoneCorrupt)
|
|
{
|
|
intList.Add(525);
|
|
intList.Add(525);
|
|
}
|
|
if (Main.player[index5].ZoneCrimson)
|
|
{
|
|
intList.Add(526);
|
|
intList.Add(526);
|
|
}
|
|
if (Main.player[index5].ZoneHallow)
|
|
{
|
|
intList.Add(527);
|
|
intList.Add(527);
|
|
}
|
|
if (intList.Count == 0)
|
|
{
|
|
intList.Add(524);
|
|
intList.Add(524);
|
|
}
|
|
if (Main.player[index5].ZoneCorrupt || Main.player[index5].ZoneCrimson)
|
|
{
|
|
intList.Add(533);
|
|
intList.Add(529);
|
|
}
|
|
else
|
|
{
|
|
intList.Add(530);
|
|
intList.Add(528);
|
|
}
|
|
intList.Add(532);
|
|
int Type2 = Utils.SelectRandom<int>(Main.rand, intList.ToArray());
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type2);
|
|
intList.Clear();
|
|
}
|
|
else
|
|
{
|
|
int Type3 = Utils.SelectRandom<int>(Main.rand, 69, 580, 580, 580, 581);
|
|
if (Main.rand.Next(15) == 0)
|
|
Type3 = 537;
|
|
else if (Main.rand.Next(10) == 0)
|
|
{
|
|
switch (Type3)
|
|
{
|
|
case 580:
|
|
Type3 = 508;
|
|
break;
|
|
case 581:
|
|
Type3 = 509;
|
|
break;
|
|
}
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type3);
|
|
}
|
|
}
|
|
else if (Main.hardMode & flag7 && Main.player[index5].ZoneJungle && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 157);
|
|
else if (Main.hardMode & flag7 && Main.player[index5].ZoneCrimson && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 242);
|
|
else if (Main.hardMode & flag7 && Main.player[index5].ZoneCrimson && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 241);
|
|
else if (((!flag12 ? 1 : (NPC.savedAngler ? 0 : (!NPC.AnyNPCs(376) ? 1 : 0))) & (flag7 ? 1 : 0)) != 0 && ((index1 < WorldGen.oceanDistance || index1 > Main.maxTilesX - WorldGen.oceanDistance) && Main.tileSand[tileType] && (double) index2 < Main.rockLayer || num1 == 53 && WorldGen.oceanDepths(index1, index2)))
|
|
{
|
|
bool flag24 = false;
|
|
if (!NPC.savedAngler && !NPC.AnyNPCs(376) && (double) index2 < Main.worldSurface - 10.0)
|
|
{
|
|
int num30 = -1;
|
|
for (int j = index2 - 1; j > index2 - 50; --j)
|
|
{
|
|
if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2))
|
|
{
|
|
num30 = j + 2;
|
|
break;
|
|
}
|
|
}
|
|
if (num30 > index2)
|
|
num30 = index2;
|
|
if (num30 > 0 && !flag16)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, num30 * 16, 376);
|
|
flag24 = true;
|
|
}
|
|
}
|
|
if (!flag24)
|
|
{
|
|
int num31 = -1;
|
|
int num32 = -1;
|
|
if ((double) index2 < Main.worldSurface && index2 > 50)
|
|
{
|
|
for (int j = index2 - 1; j > index2 - 50; --j)
|
|
{
|
|
if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2))
|
|
{
|
|
num31 = j + 2;
|
|
if (!WorldGen.SolidTile(index1, num31 + 1) && !WorldGen.SolidTile(index1, num31 + 2))
|
|
{
|
|
num32 = num31 + 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (num31 > index2)
|
|
num31 = index2;
|
|
if (num32 > index2)
|
|
num32 = index2;
|
|
}
|
|
if (num31 > 0 && !flag16 && Main.rand.Next(10) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num31 * 16, 602);
|
|
else if (Main.rand.Next(10) == 0)
|
|
{
|
|
int num33 = Main.rand.Next(3);
|
|
if (num33 == 0 && num31 > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num31 * 16, 625);
|
|
else if (num33 == 1 && num32 > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num32 * 16, 615);
|
|
else if (num33 == 2 && num32 > 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num32 * 16, 627);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, num32 * 16, 626);
|
|
}
|
|
}
|
|
else if (Main.rand.Next(40) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 220);
|
|
else if (Main.rand.Next(18) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 221);
|
|
else if (Main.rand.Next(8) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 65);
|
|
else if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 67);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 64);
|
|
}
|
|
}
|
|
else if (!flag7 && !NPC.savedAngler && !NPC.AnyNPCs(376) && (index1 < WorldGen.beachDistance || index1 > Main.maxTilesX - WorldGen.beachDistance) && Main.tileSand[tileType] && (double) index2 < Main.worldSurface)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 376);
|
|
else if (!flag12 & flag7 && ((double) index2 > Main.rockLayer && Main.rand.Next(2) == 0 || tileType == 60))
|
|
{
|
|
bool flag25 = false;
|
|
if (tileType == 60 && (double) index2 < Main.worldSurface && index2 > 50 && Main.rand.Next(3) == 0 && Main.dayTime)
|
|
{
|
|
int num34 = -1;
|
|
for (int j = index2 - 1; j > index2 - 50; --j)
|
|
{
|
|
if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2))
|
|
{
|
|
num34 = j + 2;
|
|
break;
|
|
}
|
|
}
|
|
if (num34 > index2)
|
|
num34 = index2;
|
|
if (num34 > 0 && !flag16)
|
|
{
|
|
flag25 = true;
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
flag25 = true;
|
|
NPC.NewNPC(index1 * 16 + 8, num34 * 16, 617);
|
|
}
|
|
else if (!flag1 && (double) Main.cloudAlpha == 0.0)
|
|
{
|
|
flag25 = true;
|
|
int num35 = Main.rand.Next(1, 4);
|
|
for (int index30 = 0; index30 < num35; ++index30)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num34 * 16 - 16, 613);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num34 * 16 - 16, 612);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!flag25)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(3) > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 102);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 58);
|
|
}
|
|
}
|
|
else if (!flag12 & flag7 && (double) index2 > Main.worldSurface && Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(3) > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 103);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 63);
|
|
}
|
|
else if (flag7 && Main.rand.Next(4) == 0 && (index1 > WorldGen.oceanDistance && index1 < Main.maxTilesX - WorldGen.oceanDistance || (double) index2 > Main.worldSurface + 50.0))
|
|
{
|
|
if (Main.player[index5].ZoneCorrupt)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 57);
|
|
else if ((double) index2 < Main.worldSurface && index2 > 50 && Main.rand.Next(3) != 0 && Main.dayTime)
|
|
{
|
|
int num36 = -1;
|
|
for (int j = index2 - 1; j > index2 - 50; --j)
|
|
{
|
|
if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2))
|
|
{
|
|
num36 = j + 2;
|
|
break;
|
|
}
|
|
}
|
|
if (num36 > index2)
|
|
num36 = index2;
|
|
if (num36 > 0 && !flag16)
|
|
{
|
|
if (Main.rand.Next(5) == 0 && (num1 == 2 || num1 == 477))
|
|
NPC.NewNPC(index1 * 16 + 8, num36 * 16, 616);
|
|
else if (num1 == 53)
|
|
{
|
|
if (Main.rand.Next(2) == 0 && !flag1 && (double) Main.cloudAlpha == 0.0)
|
|
{
|
|
int num37 = Main.rand.Next(1, 4);
|
|
for (int index31 = 0; index31 < num37; ++index31)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num36 * 16 - 16, 613);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num36 * 16 - 16, 612);
|
|
}
|
|
}
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, num36 * 16, 608);
|
|
}
|
|
else if (Main.rand.Next(2) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num36 * 16, 362);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, num36 * 16, 364);
|
|
}
|
|
else if (num1 == 53)
|
|
NPC.NewNPC(index1 * 16 + 8, num36 * 16, 607);
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 592);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 55);
|
|
}
|
|
else if (num1 == 53)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 607);
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 592);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 55);
|
|
}
|
|
else if (NPC.downedGoblins && Main.player[index5].RollLuck(20) == 0 && !flag7 && (double) index2 >= Main.rockLayer && index2 < Main.maxTilesY - 210 && !NPC.savedGoblin && !NPC.AnyNPCs(105))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 105);
|
|
else if (Main.hardMode && Main.player[index5].RollLuck(20) == 0 && !flag7 && (double) index2 >= Main.rockLayer && index2 < Main.maxTilesY - 210 && !NPC.savedWizard && !NPC.AnyNPCs(106))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 106);
|
|
else if (flag12)
|
|
{
|
|
if (Main.player[index5].ZoneGraveyard)
|
|
{
|
|
if (!flag7)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 606);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 610);
|
|
}
|
|
}
|
|
else if ((double) index2 <= Main.worldSurface && (index1 < WorldGen.beachDistance || index1 > Main.maxTilesX - WorldGen.beachDistance))
|
|
{
|
|
if (flag7)
|
|
{
|
|
int num38 = -1;
|
|
int num39 = -1;
|
|
if ((double) index2 < Main.worldSurface && index2 > 50)
|
|
{
|
|
for (int j = index2 - 1; j > index2 - 50; --j)
|
|
{
|
|
if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2))
|
|
{
|
|
num38 = j + 2;
|
|
if (!WorldGen.SolidTile(index1, num38 + 1) && !WorldGen.SolidTile(index1, num38 + 2))
|
|
{
|
|
num39 = num38 + 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (num38 > index2)
|
|
num38 = index2;
|
|
if (num39 > index2)
|
|
num39 = index2;
|
|
}
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
int num40 = Main.rand.Next(3);
|
|
if (num40 == 0 && num38 > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num38 * 16, 625);
|
|
else if (num40 == 1 && num39 > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num39 * 16, 615);
|
|
else if (num40 == 2 && num39 > 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num39 * 16, 627);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, num39 * 16, 626);
|
|
}
|
|
}
|
|
else if (num38 > 0 && !flag16)
|
|
NPC.NewNPC(index1 * 16 + 8, num38 * 16, 602);
|
|
}
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 602);
|
|
}
|
|
else
|
|
{
|
|
int cattailX;
|
|
int cattailY;
|
|
if ((tileType == 2 || tileType == 477 || tileType == 53) && !windyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(2) == 0 && (double) index2 <= Main.worldSurface && NPC.FindCattailTop(index1, index2, out cattailX, out cattailY))
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(cattailX * 16 + 8, cattailY * 16, 601);
|
|
else
|
|
NPC.NewNPC(cattailX * 16 + 8, cattailY * 16, NPC.RollDragonflyType(tileType));
|
|
if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(cattailX * 16 + 8 - 16, cattailY * 16, NPC.RollDragonflyType(tileType));
|
|
if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(cattailX * 16 + 8 + 16, cattailY * 16, NPC.RollDragonflyType(tileType));
|
|
}
|
|
else if (flag7)
|
|
{
|
|
if ((double) index2 < Main.worldSurface && index2 > 50 && Main.rand.Next(3) != 0 && Main.dayTime)
|
|
{
|
|
int num41 = -1;
|
|
for (int j = index2 - 1; j > index2 - 50; --j)
|
|
{
|
|
if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2))
|
|
{
|
|
num41 = j + 2;
|
|
break;
|
|
}
|
|
}
|
|
if (num41 > index2)
|
|
num41 = index2;
|
|
if (num41 > 0 && !flag16)
|
|
{
|
|
switch (num1)
|
|
{
|
|
case 53:
|
|
if (Main.rand.Next(2) == 0 && !flag1 && (double) Main.cloudAlpha == 0.0)
|
|
{
|
|
int num42 = Main.rand.Next(1, 4);
|
|
for (int index32 = 0; index32 < num42; ++index32)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num41 * 16 - 16, 613);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num41 * 16 - 16, 612);
|
|
}
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, num41 * 16, 608);
|
|
break;
|
|
case 60:
|
|
if (Main.rand.Next(2) == 0 && !flag1 && (double) Main.cloudAlpha == 0.0)
|
|
{
|
|
int num43 = Main.rand.Next(1, 4);
|
|
for (int index33 = 0; index33 < num43; ++index33)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num41 * 16 - 16, 613);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8 + Main.rand.Next(-16, 17), num41 * 16 - 16, 612);
|
|
}
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, num41 * 16, 617);
|
|
break;
|
|
default:
|
|
if (Main.rand.Next(5) == 0 && (num1 == 2 || num1 == 477))
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, num41 * 16, 616);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, num41 * 16, 362);
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, num41 * 16, 364);
|
|
break;
|
|
}
|
|
}
|
|
else if (num1 == 53)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 607);
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 592);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 55);
|
|
}
|
|
else if (num1 == 53)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 607);
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 592);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 55);
|
|
}
|
|
else
|
|
{
|
|
switch (tileType)
|
|
{
|
|
case 2:
|
|
case 109:
|
|
case 477:
|
|
case 492:
|
|
bool flag26 = (double) index2 <= Main.worldSurface;
|
|
if (Main.raining && index2 <= Main.UnderworldLayer)
|
|
{
|
|
if ((double) index2 >= Main.rockLayer && Main.rand.Next(5) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(639, 646));
|
|
break;
|
|
}
|
|
if ((double) index2 >= Main.rockLayer && Main.rand.Next(5) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(646, 653));
|
|
break;
|
|
}
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 448);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 357);
|
|
break;
|
|
}
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 593);
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 230);
|
|
break;
|
|
}
|
|
if (((Main.dayTime || Main.numClouds > 55 || (double) Main.cloudBGActive != 0.0 ? 0 : ((double) Star.starfallBoost > 3.0 ? 1 : 0)) & (flag26 ? 1 : 0)) != 0 && Main.player[index5].RollLuck(2) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 484);
|
|
break;
|
|
}
|
|
if (((windyForButterflies || Main.dayTime ? 0 : (Main.rand.Next(NPC.fireFlyFriendly) == 0 ? 1 : 0)) & (flag26 ? 1 : 0)) != 0)
|
|
{
|
|
int Type4 = 355;
|
|
if (tileType == 109)
|
|
Type4 = 358;
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type4);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 - 16, index2 * 16, Type4);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 + 16, index2 * 16, Type4);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16 - 16, Type4);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16 + 16, Type4);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((((double) Main.cloudAlpha != 0.0 || Main.dayTime ? 0 : (Main.rand.Next(5) == 0 ? 1 : 0)) & (flag26 ? 1 : 0)) != 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 611);
|
|
break;
|
|
}
|
|
if (((!Main.dayTime || Main.time >= 18000.0 ? 0 : ((uint) Main.rand.Next(3) > 0U ? 1 : 0)) & (flag26 ? 1 : 0)) != 0)
|
|
{
|
|
int num44 = Main.rand.Next(4);
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 442);
|
|
break;
|
|
}
|
|
switch (num44)
|
|
{
|
|
case 0:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 297);
|
|
break;
|
|
case 1:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 298);
|
|
break;
|
|
default:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 74);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (((windyForButterflies || Main.raining || !Main.dayTime ? 0 : (Main.rand.Next(NPC.butterflyChance) == 0 ? 1 : 0)) & (flag26 ? 1 : 0)) != 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 444);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 356);
|
|
if (Main.rand.Next(4) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 - 16, index2 * 16, 356);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8 + 16, index2 * 16, 356);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (((!windyForButterflies || Main.raining || !Main.dayTime ? 0 : (Main.rand.Next(NPC.butterflyChance / 2) == 0 ? 1 : 0)) & (flag26 ? 1 : 0)) != 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 605);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(2) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (Main.rand.Next(2) == 0 & flag26)
|
|
{
|
|
int num45 = Main.rand.Next(4);
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 442);
|
|
break;
|
|
}
|
|
switch (num45)
|
|
{
|
|
case 0:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 297);
|
|
break;
|
|
case 1:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 298);
|
|
break;
|
|
default:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 74);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (index2 > Main.UnderworldLayer)
|
|
{
|
|
newNPC = NPC.SpawnNPC_SpawnLavaBaitCritters(index1, index2);
|
|
break;
|
|
}
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 443);
|
|
break;
|
|
}
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0 & flag26)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 539);
|
|
break;
|
|
}
|
|
if (Main.halloween && Main.rand.Next(3) != 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 303);
|
|
break;
|
|
}
|
|
if (Main.xMas && Main.rand.Next(3) != 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 337);
|
|
break;
|
|
}
|
|
if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 540);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if ((double) index2 >= Main.rockLayer && index2 <= Main.UnderworldLayer)
|
|
{
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(639, 646));
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (flag26)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, (int) Utils.SelectRandom<short>(Main.rand, (short) 299, (short) 538));
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if ((double) index2 >= Main.rockLayer && index2 <= Main.UnderworldLayer)
|
|
{
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(646, 653));
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 46);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case 53:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(366, 368));
|
|
break;
|
|
case 60:
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 445);
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 361);
|
|
break;
|
|
case 147:
|
|
case 161:
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 148);
|
|
break;
|
|
}
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 149);
|
|
break;
|
|
default:
|
|
if ((double) index2 <= Main.worldSurface)
|
|
return;
|
|
goto case 2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (Main.player[index5].ZoneDungeon)
|
|
{
|
|
int num46 = 0;
|
|
if (Main.tile[index1, index2].wall == (ushort) 94 || Main.tile[index1, index2].wall == (ushort) 96 || Main.tile[index1, index2].wall == (ushort) 98)
|
|
num46 = 1;
|
|
if (Main.tile[index1, index2].wall == (ushort) 95 || Main.tile[index1, index2].wall == (ushort) 97 || Main.tile[index1, index2].wall == (ushort) 99)
|
|
num46 = 2;
|
|
if (Main.player[index5].RollLuck(7) == 0)
|
|
num46 = Main.rand.Next(3);
|
|
bool flag27 = !NPC.downedBoss3;
|
|
if (Main.drunkWorld && (double) Main.player[index5].position.Y / 16.0 < (double) (Main.dungeonY + 40))
|
|
flag27 = false;
|
|
if (flag27)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 68);
|
|
else if (!NPC.savedMech && Main.rand.Next(5) == 0 && !flag7 && !NPC.AnyNPCs(123) && (double) index2 > Main.rockLayer)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 123);
|
|
else if (flag14 && Main.rand.Next(30) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 287);
|
|
else if (flag14 && num46 == 0 && Main.rand.Next(15) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 293);
|
|
else if (flag14 && num46 == 1 && Main.rand.Next(15) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 291);
|
|
else if (flag14 && num46 == 2 && Main.rand.Next(15) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 292);
|
|
else if (flag14 && !NPC.AnyNPCs(290) && num46 == 0 && Main.rand.Next(35) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 290);
|
|
else if (flag14 && (num46 == 1 || num46 == 2) && Main.rand.Next(30) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 289);
|
|
else if (flag14 && Main.rand.Next(20) == 0)
|
|
{
|
|
int num47 = 281;
|
|
if (num46 == 0)
|
|
num47 += 2;
|
|
if (num46 == 2)
|
|
num47 += 4;
|
|
int Type5 = num47 + Main.rand.Next(2);
|
|
if (!NPC.AnyNPCs(Type5))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type5);
|
|
}
|
|
else if (flag14 && Main.rand.Next(3) != 0)
|
|
{
|
|
int num48 = 269;
|
|
if (num46 == 0)
|
|
num48 += 4;
|
|
if (num46 == 2)
|
|
num48 += 8;
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, num48 + Main.rand.Next(4));
|
|
}
|
|
else if (Main.player[index5].RollLuck(35) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 71);
|
|
else if (num46 == 1 && Main.rand.Next(3) == 0 && !NPC.NearSpikeBall(index1, index2))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 70);
|
|
else if (num46 == 2 && Main.rand.Next(5) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 72);
|
|
else if (num46 == 0 && Main.rand.Next(7) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 34);
|
|
else if (Main.rand.Next(7) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 32);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 294);
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 295);
|
|
break;
|
|
case 2:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 296);
|
|
break;
|
|
default:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 31);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-14);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(5) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-13);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.player[index5].ZoneMeteor)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 23);
|
|
else if (DD2Event.Ongoing && Main.player[index5].ZoneOldOneArmy)
|
|
DD2Event.SpawnNPC(ref newNPC);
|
|
else if ((double) index2 <= Main.worldSurface && !Main.dayTime && Main.snowMoon)
|
|
{
|
|
int waveNumber = NPC.waveNumber;
|
|
if (Main.rand.Next(30) == 0 && NPC.CountNPCS(341) < 4)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 341);
|
|
else if (waveNumber >= 20)
|
|
{
|
|
int num49 = Main.rand.Next(3);
|
|
if ((double) num3 < (double) num2 * (double) num4)
|
|
{
|
|
switch (num49)
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345);
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346);
|
|
break;
|
|
default:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (waveNumber >= 19)
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 4 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 5 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 7 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345);
|
|
else if (waveNumber >= 18)
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 3 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 4 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 6 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345);
|
|
else if (waveNumber >= 17)
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 3 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 5 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345);
|
|
else if (waveNumber >= 16)
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 4 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 352)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345);
|
|
else if (waveNumber >= 15)
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 3 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345);
|
|
else if (waveNumber == 14)
|
|
{
|
|
if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(345))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345);
|
|
else if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(346))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346);
|
|
else if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(344))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344);
|
|
else if (Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343);
|
|
}
|
|
else
|
|
newNPC = waveNumber != 13 ? (waveNumber != 12 ? (waveNumber != 11 ? (waveNumber != 10 ? (waveNumber != 9 ? (waveNumber != 8 ? (waveNumber != 7 ? (waveNumber != 6 ? (waveNumber != 5 ? (waveNumber != 4 ? (waveNumber != 3 ? (waveNumber != 2 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342)) : (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 350))) : (Main.rand.Next(8) != 0 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 348))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(8) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344))) : (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 2 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 350) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(4) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 350) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(2) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 2 ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 352)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 347) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 343)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 352)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 345));
|
|
}
|
|
else if ((double) index2 <= Main.worldSurface && !Main.dayTime && Main.pumpkinMoon)
|
|
{
|
|
int waveNumber = NPC.waveNumber;
|
|
int num50;
|
|
if (NPC.waveNumber >= 15)
|
|
{
|
|
if ((double) num3 < (double) num2 * (double) num4)
|
|
newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
}
|
|
else
|
|
{
|
|
switch (waveNumber)
|
|
{
|
|
case 2:
|
|
newNPC = Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326);
|
|
break;
|
|
case 3:
|
|
newNPC = Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329);
|
|
break;
|
|
case 4:
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(10) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325);
|
|
break;
|
|
case 5:
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(5) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325);
|
|
break;
|
|
case 6:
|
|
newNPC = Main.rand.Next(7) != 0 || NPC.CountNPCS(325) >= 2 ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325);
|
|
break;
|
|
case 7:
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(5) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
break;
|
|
case 8:
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(5) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
break;
|
|
case 9:
|
|
newNPC = Main.rand.Next(8) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(8) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(315) ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
break;
|
|
case 10:
|
|
newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(315) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(5) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
break;
|
|
case 11:
|
|
if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(327))
|
|
num50 = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
newNPC = Main.rand.Next(7) != 0 || NPC.CountNPCS(325) >= 2 ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(315) ? (Main.rand.Next(10) != 0 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325);
|
|
break;
|
|
case 12:
|
|
if (Main.rand.Next(7) == 0 && NPC.CountNPCS(327) < 2)
|
|
num50 = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
newNPC = Main.rand.Next(7) != 0 || NPC.CountNPCS(325) >= 2 ? (Main.rand.Next(7) != 0 || NPC.CountNPCS(315) >= 2 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(5) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 326) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325);
|
|
break;
|
|
case 13:
|
|
if (Main.rand.Next(7) == 0 && NPC.CountNPCS(327) < 2)
|
|
num50 = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
newNPC = Main.rand.Next(5) != 0 || NPC.CountNPCS(325) >= 3 ? (Main.rand.Next(5) != 0 || NPC.CountNPCS(315) >= 3 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 329) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325);
|
|
break;
|
|
case 14:
|
|
if (Main.rand.Next(5) == 0 && NPC.CountNPCS(327) < 3)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 327);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(5) == 0 && NPC.CountNPCS(325) < 3)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 325);
|
|
break;
|
|
}
|
|
if ((double) num3 < (double) num2 * (double) num4)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 315);
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(305, 315));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) index2 <= Main.worldSurface && Main.dayTime && Main.eclipse)
|
|
{
|
|
bool flag28 = false;
|
|
if (NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3)
|
|
flag28 = true;
|
|
newNPC = !flag28 || Main.rand.Next(80) != 0 || NPC.AnyNPCs(477) ? (Main.rand.Next(50) != 0 || NPC.AnyNPCs(251) ? (!NPC.downedPlantBoss || Main.rand.Next(5) != 0 || NPC.AnyNPCs(466) ? (!NPC.downedPlantBoss || Main.rand.Next(20) != 0 || NPC.AnyNPCs(463) ? (!NPC.downedPlantBoss || Main.rand.Next(20) != 0 || NPC.CountNPCS(467) >= 2 ? (Main.rand.Next(15) != 0 ? (!flag28 || Main.rand.Next(13) != 0 ? (Main.rand.Next(8) != 0 ? (!NPC.downedPlantBoss || Main.rand.Next(7) != 0 ? (!NPC.downedPlantBoss || Main.rand.Next(5) != 0 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 166) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 462)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 461)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 162)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 460)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 468)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 469)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 253)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 159)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 467)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 463)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 466)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 251)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 477);
|
|
}
|
|
else if (NPC.fairyLog && Main.player[index5].RollLuck(500) == 0 && !NPC.AnyHelpfulFairies() && (double) index2 >= (Main.worldSurface + Main.rockLayer) / 2.0 && index2 < Main.maxTilesY - 300)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(583, 586));
|
|
Main.npc[newNPC].ai[2] = 2f;
|
|
Main.npc[newNPC].TargetClosest();
|
|
Main.npc[newNPC].ai[3] = 0.0f;
|
|
}
|
|
else if (!flag7 && (!Main.dayTime || Main.tile[index1, index2].wall > (ushort) 0) && Main.tile[index7, index8].wall == (ushort) 244 && !Main.eclipse && !Main.bloodMoon && Main.player[index5].RollLuck(30) == 0 && NPC.CountNPCS(624) <= Main.rand.Next(3))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 624);
|
|
else if (!flag7 && !Main.eclipse && !Main.bloodMoon && Main.player[index5].RollLuck(10) == 0 && (double) index2 >= Main.worldSurface * 0.800000011920929 && (double) index2 < Main.worldSurface * 1.10000002384186 && NPC.CountNPCS(624) <= Main.rand.Next(3) && (!Main.dayTime || Main.tile[index1, index2].wall > (ushort) 0) && (Main.tile[index1, index2].wall == (ushort) 2 || Main.tile[index1, index2].wall == (ushort) 196 || Main.tile[index1, index2].wall == (ushort) 197 || Main.tile[index1, index2].wall == (ushort) 198 || Main.tile[index1, index2].wall == (ushort) 199))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 624);
|
|
else if (((!Main.hardMode ? 0 : (num1 == 70 ? 1 : 0)) & (flag7 ? 1 : 0)) != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 256);
|
|
else if (num1 == 70 && (double) index2 <= Main.worldSurface && Main.rand.Next(3) != 0)
|
|
{
|
|
if (!Main.hardMode && Main.rand.Next(6) == 0 || Main.rand.Next(12) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 360);
|
|
else if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(3) != 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 260);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 259);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 258) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 257);
|
|
}
|
|
else
|
|
newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, (int) byte.MaxValue) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 254);
|
|
}
|
|
else if (num1 == 70 && Main.hardMode && (double) index2 >= Main.worldSurface && Main.rand.Next(3) != 0)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(5) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 374);
|
|
else if (!Main.hardMode && Main.rand.Next(4) == 0 || Main.rand.Next(8) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 360);
|
|
else if (Main.rand.Next(4) == 0)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(3) != 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 260);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 259);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 258) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 257);
|
|
}
|
|
else if (Main.player[index5].ZoneCorrupt && Main.rand.Next(65) == 0 && !flag5)
|
|
newNPC = !Main.hardMode || Main.rand.Next(4) == 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 7, 1) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 98, 1);
|
|
else if (Main.hardMode && (double) index2 > Main.worldSurface && Main.player[index5].RollLuck(75) == 0)
|
|
newNPC = Main.rand.Next(2) != 0 || !Main.player[index5].ZoneCorrupt || NPC.AnyNPCs(473) ? (Main.rand.Next(2) != 0 || !Main.player[index5].ZoneCrimson || NPC.AnyNPCs(474) ? (Main.rand.Next(2) != 0 || !Main.player[index5].ZoneHallow || NPC.AnyNPCs(475) ? (!Main.player[index5].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 85) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 629)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 475)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 474)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 473);
|
|
else if (Main.hardMode && (double) index2 <= Main.worldSurface && !Main.dayTime && (Main.rand.Next(20) == 0 || Main.rand.Next(5) == 0 && Main.moonPhase == 4))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 82);
|
|
else if (Main.hardMode && Main.halloween && (double) index2 <= Main.worldSurface && !Main.dayTime && Main.rand.Next(10) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 304);
|
|
else if (tileType == 60 && Main.player[index5].RollLuck(500) == 0 && !Main.dayTime)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 52);
|
|
else if (tileType == 60 && (double) index2 > Main.worldSurface && Main.rand.Next(60) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 219);
|
|
else if ((double) index2 > Main.worldSurface && index2 < Main.maxTilesY - 210 && !Main.player[index5].ZoneSnow && !Main.player[index5].ZoneCrimson && !Main.player[index5].ZoneCorrupt && !Main.player[index5].ZoneJungle && !Main.player[index5].ZoneHallow && Main.rand.Next(8) == 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 448);
|
|
else
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 357);
|
|
}
|
|
else if ((double) index2 > Main.worldSurface && index2 < Main.maxTilesY - 210 && !Main.player[index5].ZoneSnow && !Main.player[index5].ZoneCrimson && !Main.player[index5].ZoneCorrupt && !Main.player[index5].ZoneJungle && !Main.player[index5].ZoneHallow && Main.rand.Next(13) == 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 447);
|
|
else
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 300);
|
|
}
|
|
else if ((double) index2 > Main.worldSurface && (double) index2 < (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && !Main.player[index5].ZoneSnow && !Main.player[index5].ZoneCrimson && !Main.player[index5].ZoneCorrupt && !Main.player[index5].ZoneHallow && Main.rand.Next(13) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 359);
|
|
else if ((double) index2 < Main.worldSurface && Main.player[index5].ZoneJungle && Main.rand.Next(7) == 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 445);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 361);
|
|
}
|
|
else if (tileType == 225 && Main.rand.Next(2) == 0)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(4) != 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 176);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-18);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-19);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-20);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-21);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(8))
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 231);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-56);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-57);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 232);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-58);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-59);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 233);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-60);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-61);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 234);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-62);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-63);
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 235);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-64);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-65);
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 42);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-16);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-17);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (tileType == 60 && Main.hardMode && Main.rand.Next(3) != 0)
|
|
{
|
|
if ((double) index2 < Main.worldSurface && !Main.dayTime && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 152);
|
|
else if ((double) index2 < Main.worldSurface && Main.dayTime && Main.rand.Next(4) != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 177);
|
|
else if ((double) index2 > Main.worldSurface && Main.rand.Next(100) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 205);
|
|
else if ((double) index2 > Main.worldSurface && Main.rand.Next(5) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 236);
|
|
else if ((double) index2 > Main.worldSurface && Main.rand.Next(4) != 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 176);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-18);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-19);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-20);
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.npc[newNPC].SetDefaults(-21);
|
|
}
|
|
else if (Main.rand.Next(3) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 175);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
else
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 153);
|
|
}
|
|
else if (tileType == 226 & flag4)
|
|
newNPC = Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 198) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 226);
|
|
else if (num24 == 86 && Main.rand.Next(8) != 0)
|
|
{
|
|
switch (Main.rand.Next(8))
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 231);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-56);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-57);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 232);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-58);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-59);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 233);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-60);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-61);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 234);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-62);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-63);
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 235);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-64);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-65);
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 42);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-16);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-17);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else if (tileType == 60 && (double) index2 > (Main.worldSurface + Main.rockLayer) / 2.0)
|
|
{
|
|
if (Main.rand.Next(4) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 204);
|
|
else if (Main.rand.Next(4) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 43);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(8))
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 231);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-56);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-57);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 232);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-58);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-59);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 233);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-60);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-61);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 234);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-62);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-63);
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 235);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-64);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-65);
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 42);
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-16);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-17);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (tileType == 60 && Main.rand.Next(4) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 51);
|
|
else if (tileType == 60 && Main.rand.Next(8) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 56);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
else if (Sandstorm.Happening && Main.player[index5].ZoneSandstorm && TileID.Sets.Conversion.Sand[tileType] && NPC.Spawning_SandstoneCheck(index1, index2))
|
|
{
|
|
if (!NPC.downedBoss1 && !Main.hardMode)
|
|
newNPC = Main.rand.Next(2) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 69) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 61)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 546);
|
|
else if (Main.hardMode && Main.rand.Next(20) == 0 && !NPC.AnyNPCs(541))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 541);
|
|
else if (Main.hardMode && !flag5 && Main.rand.Next(3) == 0 && NPC.CountNPCS(510) < 4)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, (index2 + 10) * 16, 510);
|
|
else if (Main.hardMode && !flag5 && Main.rand.Next(2) == 0)
|
|
{
|
|
int Type6 = 542;
|
|
if (TileID.Sets.Corrupt[tileType])
|
|
Type6 = 543;
|
|
if (TileID.Sets.Crimson[tileType])
|
|
Type6 = 544;
|
|
if (TileID.Sets.Hallow[tileType])
|
|
Type6 = 545;
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type6);
|
|
}
|
|
else
|
|
newNPC = !Main.hardMode || tileType != 53 || Main.rand.Next(3) != 0 ? (!Main.hardMode || tileType != 112 || Main.rand.Next(3) != 0 ? (!Main.hardMode || tileType != 234 || Main.rand.Next(3) != 0 ? (!Main.hardMode || tileType != 116 || Main.rand.Next(3) != 0 ? (Main.rand.Next(2) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 581) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 580)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 546)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 80)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 630)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 79)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 78);
|
|
}
|
|
else if (Main.hardMode && tileType == 53 && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 78);
|
|
else if (Main.hardMode && tileType == 112 && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 79);
|
|
else if (Main.hardMode && tileType == 234 && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 630);
|
|
else if (Main.hardMode && tileType == 116 && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 80);
|
|
else if (Main.hardMode && !flag7 && (double) index2 < Main.rockLayer && (tileType == 116 || tileType == 117 || tileType == 109 || tileType == 164))
|
|
{
|
|
if (NPC.downedPlantBoss && !Main.dayTime && Main.time < 16200.0 && (double) index2 < Main.worldSurface && Main.rand.Next(10) == 0 && !NPC.AnyNPCs(661))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 661);
|
|
else if ((double) Main.cloudAlpha > 0.0 && !NPC.AnyNPCs(244) && Main.rand.Next(12) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 244);
|
|
else
|
|
newNPC = Main.dayTime || Main.rand.Next(2) != 0 ? (Main.rand.Next(10) == 0 || Main.player[index5].ZoneWaterCandle && Main.rand.Next(10) == 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 86) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 75)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 122);
|
|
}
|
|
else if (!flag5 && Main.hardMode && Main.rand.Next(50) == 0 && !flag7 && (double) index2 >= Main.rockLayer && (tileType == 116 || tileType == 117 || tileType == 109 || tileType == 164))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 84);
|
|
else if (tileType == 204 && Main.player[index5].ZoneCrimson || tileType == 199 || tileType == 200 || tileType == 203 || tileType == 234)
|
|
{
|
|
if (Main.hardMode && (double) index2 >= Main.rockLayer && Main.rand.Next(5) == 0 && !flag5)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 182);
|
|
else if (Main.hardMode && (double) index2 >= Main.rockLayer && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 268);
|
|
else if (Main.hardMode && Main.rand.Next(3) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 183);
|
|
if (Main.rand.Next(3) == 0)
|
|
Main.npc[newNPC].SetDefaults(-24);
|
|
else if (Main.rand.Next(3) == 0)
|
|
Main.npc[newNPC].SetDefaults(-25);
|
|
}
|
|
else if (Main.hardMode && (double) index2 >= Main.rockLayer && Main.rand.Next(40) == 0 && !flag5)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 179);
|
|
else if (Main.hardMode && (Main.rand.Next(2) == 0 || (double) index2 > Main.worldSurface))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 174);
|
|
else if (Main.tile[index1, index2].wall > (ushort) 0 && Main.rand.Next(4) != 0 || Main.rand.Next(8) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 239);
|
|
else if (Main.rand.Next(2) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 181);
|
|
}
|
|
else
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 173);
|
|
if (Main.rand.Next(3) == 0)
|
|
Main.npc[newNPC].SetDefaults(-22);
|
|
else if (Main.rand.Next(3) == 0)
|
|
Main.npc[newNPC].SetDefaults(-23);
|
|
}
|
|
}
|
|
else if (tileType == 22 && Main.player[index5].ZoneCorrupt || tileType == 23 || tileType == 25 || tileType == 112 || tileType == 163)
|
|
{
|
|
if (Main.hardMode && (double) index2 >= Main.rockLayer && Main.rand.Next(3) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 101);
|
|
Main.npc[newNPC].ai[0] = (float) index1;
|
|
Main.npc[newNPC].ai[1] = (float) index2;
|
|
Main.npc[newNPC].netUpdate = true;
|
|
}
|
|
else if (Main.hardMode && Main.rand.Next(3) == 0)
|
|
newNPC = Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 81) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 121);
|
|
else if (Main.hardMode && (double) index2 >= Main.rockLayer && Main.rand.Next(40) == 0 && !flag5)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 83);
|
|
else if (Main.hardMode && (Main.rand.Next(2) == 0 || (double) index2 > Main.rockLayer))
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 94);
|
|
}
|
|
else
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 6);
|
|
if (Main.rand.Next(3) == 0)
|
|
Main.npc[newNPC].SetDefaults(-11);
|
|
else if (Main.rand.Next(3) == 0)
|
|
Main.npc[newNPC].SetDefaults(-12);
|
|
}
|
|
}
|
|
else if ((double) index2 <= Main.worldSurface)
|
|
{
|
|
bool flag29 = (double) Math.Abs(index1 - Main.maxTilesX / 2) / (double) (Main.maxTilesX / 2) > 0.330000013113022;
|
|
if (flag29 && NPC.AnyDanger())
|
|
flag29 = false;
|
|
if (Main.player[index5].ZoneGraveyard && !flag7 && (num1 == 2 || num1 == 477) && Main.rand.Next(10) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 606);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 610);
|
|
}
|
|
else if (Main.player[index5].ZoneSnow && Main.hardMode && (double) Main.cloudAlpha > 0.0 && !NPC.AnyNPCs(243) && Main.player[index5].RollLuck(20) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 243);
|
|
else if (!Main.player[index5].ZoneSnow && Main.hardMode && (double) Main.cloudAlpha > 0.0 && NPC.CountNPCS(250) < 2 && Main.rand.Next(10) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 250);
|
|
else if (flag29 && Main.hardMode && NPC.downedGolemBoss && (!NPC.downedMartians && Main.rand.Next(100) == 0 || Main.rand.Next(400) == 0) && !NPC.AnyNPCs(399))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 399);
|
|
else if (!Main.player[index5].ZoneGraveyard && Main.dayTime)
|
|
{
|
|
int num51 = Math.Abs(index1 - Main.spawnTileX);
|
|
if (!flag7 && num51 < Main.maxTilesX / 2 && Main.rand.Next(15) == 0 && (tileType == 2 || tileType == 477 || tileType == 109 || tileType == 492 || tileType == 147 || tileType == 161))
|
|
{
|
|
if (tileType == 147 || tileType == 161)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 148);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 149);
|
|
}
|
|
else if (!windyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(NPC.butterflyChance / 2) == 0 && (double) index2 <= Main.worldSurface)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 444);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 356);
|
|
if (Main.rand.Next(4) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 - 16, index2 * 16, 356);
|
|
if (Main.rand.Next(4) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 + 16, index2 * 16, 356);
|
|
}
|
|
else if (windyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(NPC.butterflyChance) == 0 && (double) index2 <= Main.worldSurface)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 605);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(2) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
if (Main.rand.Next(4) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 604);
|
|
}
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 443);
|
|
else if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0 && (double) index2 <= Main.worldSurface)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 539);
|
|
else if (Main.halloween && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 303);
|
|
else if (Main.xMas && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 337);
|
|
else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 540);
|
|
else if (Main.rand.Next(3) == 0 && (double) index2 <= Main.worldSurface)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, (int) Utils.SelectRandom<short>(Main.rand, (short) 299, (short) 538));
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 46);
|
|
}
|
|
else if (!flag7 && index1 > WorldGen.beachDistance && index1 < Main.maxTilesX - WorldGen.beachDistance && Main.rand.Next(12) == 0 && tileType == 53)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(366, 368));
|
|
}
|
|
else
|
|
{
|
|
int cattailX;
|
|
int cattailY;
|
|
if ((tileType == 2 || tileType == 477 || tileType == 53) && !windyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(3) != 0 && (double) index2 <= Main.worldSurface && NPC.FindCattailTop(index1, index2, out cattailX, out cattailY))
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(cattailX * 16 + 8, cattailY * 16, 601);
|
|
else
|
|
NPC.NewNPC(cattailX * 16 + 8, cattailY * 16, NPC.RollDragonflyType(tileType));
|
|
if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(cattailX * 16 + 8 - 16, cattailY * 16, NPC.RollDragonflyType(tileType));
|
|
if (Main.rand.Next(3) == 0)
|
|
NPC.NewNPC(cattailX * 16 + 8 + 16, cattailY * 16, NPC.RollDragonflyType(tileType));
|
|
}
|
|
else if (!flag7 && num51 < Main.maxTilesX / 3 && Main.dayTime && Main.time < 18000.0 && (tileType == 2 || tileType == 477 || tileType == 109 || tileType == 492) && Main.rand.Next(4) == 0 && (double) index2 <= Main.worldSurface && NPC.CountNPCS(74) + NPC.CountNPCS(297) + NPC.CountNPCS(298) < 6)
|
|
{
|
|
int num52 = Main.rand.Next(4);
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 442);
|
|
}
|
|
else
|
|
{
|
|
switch (num52)
|
|
{
|
|
case 0:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 297);
|
|
break;
|
|
case 1:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 298);
|
|
break;
|
|
default:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 74);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (!flag7 && num51 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && (tileType == 2 || tileType == 477 || tileType == 109 || tileType == 492 || tileType == 147))
|
|
{
|
|
int num53 = Main.rand.Next(4);
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
{
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 442);
|
|
}
|
|
else
|
|
{
|
|
switch (num53)
|
|
{
|
|
case 0:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 297);
|
|
break;
|
|
case 1:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 298);
|
|
break;
|
|
default:
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 74);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (!flag7 && num51 > Main.maxTilesX / 3 && tileType == 2 && Main.rand.Next(300) == 0 && !NPC.AnyNPCs(50))
|
|
NPC.SpawnOnPlayer(index5, 50);
|
|
else if (tileType == 53 && (index1 < WorldGen.beachDistance || index1 > Main.maxTilesX - WorldGen.beachDistance))
|
|
{
|
|
if (!flag7 && Main.rand.Next(10) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 602);
|
|
else if (flag7)
|
|
{
|
|
int num54 = -1;
|
|
int num55 = -1;
|
|
if ((double) index2 < Main.worldSurface && index2 > 50)
|
|
{
|
|
for (int j = index2 - 1; j > index2 - 50; --j)
|
|
{
|
|
if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2))
|
|
{
|
|
num54 = j + 2;
|
|
if (!WorldGen.SolidTile(index1, num54 + 1) && !WorldGen.SolidTile(index1, num54 + 2))
|
|
{
|
|
num55 = num54 + 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (num54 > index2)
|
|
num54 = index2;
|
|
if (num55 > index2)
|
|
num55 = index2;
|
|
}
|
|
if (Main.rand.Next(10) == 0)
|
|
{
|
|
int num56 = Main.rand.Next(3);
|
|
if (num56 == 0 && num54 > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num54 * 16, 625);
|
|
else if (num56 == 1 && num55 > 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num55 * 16, 615);
|
|
else if (num56 == 2 && num55 > 0)
|
|
{
|
|
if (Main.player[index5].RollLuck(NPC.goldCritterChance) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, num55 * 16, 627);
|
|
else
|
|
NPC.NewNPC(index1 * 16 + 8, num55 * 16, 626);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (!flag7 && tileType == 53 && Main.rand.Next(5) == 0 && NPC.Spawning_SandstoneCheck(index1, index2) && !flag7)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 69);
|
|
else if (tileType == 53 && !flag7)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 61);
|
|
else if (!flag7 && num51 > Main.maxTilesX / 3 && (Main.rand.Next(15) == 0 || !NPC.downedGoblins && WorldGen.shadowOrbSmashed && Main.rand.Next(7) == 0))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 73);
|
|
else if (Main.raining && Main.rand.Next(4) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 224);
|
|
else if (!flag7 && Main.raining && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 225);
|
|
else if (((flag7 ? 0 : (num24 == 0 ? 1 : 0)) & (itAhappyWindyDay ? 1 : 0) & (flag18 ? 1 : 0)) != 0 && Main.rand.Next(3) != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 594);
|
|
else if (((flag7 || num24 != 0 ? 0 : (num1 == 2 ? 1 : (num1 == 477 ? 1 : 0))) & (itAhappyWindyDay ? 1 : 0) & (flag18 ? 1 : 0)) != 0 && Main.rand.Next(10) != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 628);
|
|
else if (!flag7)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 1);
|
|
switch (tileType)
|
|
{
|
|
case 60:
|
|
Main.npc[newNPC].SetDefaults(-10);
|
|
break;
|
|
case 147:
|
|
case 161:
|
|
Main.npc[newNPC].SetDefaults(147);
|
|
break;
|
|
default:
|
|
if (Main.halloween && Main.rand.Next(3) != 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(302);
|
|
break;
|
|
}
|
|
if (Main.xMas && Main.rand.Next(3) != 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(Main.rand.Next(333, 337));
|
|
break;
|
|
}
|
|
if (Main.rand.Next(3) == 0 || num51 < 200 && !Main.expertMode)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-3);
|
|
break;
|
|
}
|
|
if (Main.rand.Next(10) == 0 && (num51 > 400 || Main.expertMode))
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-7);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!Main.player[index5].ZoneGraveyard && !windyForButterflies && (tileType == 2 || tileType == 477 || tileType == 109 || tileType == 492) && !Main.raining && Main.rand.Next(NPC.fireFlyChance) == 0 && (double) index2 <= Main.worldSurface)
|
|
{
|
|
int Type7 = 355;
|
|
if (tileType == 109)
|
|
Type7 = 358;
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, Type7);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 - 16, index2 * 16, Type7);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8 + 16, index2 * 16, Type7);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16 - 16, Type7);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16 + 16, Type7);
|
|
}
|
|
else if ((Main.halloween || Main.player[index5].ZoneGraveyard) && Main.rand.Next(12) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 301);
|
|
else if (Main.player[index5].ZoneGraveyard && Main.rand.Next(30) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 316);
|
|
else if (Main.rand.Next(6) == 0 || Main.moonPhase == 4 && Main.rand.Next(2) == 0)
|
|
{
|
|
if (Main.hardMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 133);
|
|
else if (Main.halloween && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(317, 319));
|
|
else if (Main.rand.Next(2) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 2);
|
|
if (Main.rand.Next(4) == 0)
|
|
Main.npc[newNPC].SetDefaults(-43);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 190);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-38);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 191);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-39);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 192);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-40);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 193);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-41);
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 194);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-42);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.hardMode && Main.rand.Next(50) == 0 && Main.bloodMoon && !NPC.AnyNPCs(109))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 109);
|
|
else if (Main.rand.Next(250) == 0 && (Main.bloodMoon || Main.player[index5].ZoneGraveyard))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 53);
|
|
else if (Main.rand.Next(250) == 0 && (Main.bloodMoon || Main.player[index5].ZoneGraveyard))
|
|
NPC.NewNPC(index1 * 16 + 8, index2 * 16, 536);
|
|
else if (!Main.dayTime && Main.moonPhase == 0 && Main.hardMode && Main.rand.Next(3) != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 104);
|
|
else if (!Main.dayTime && Main.hardMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 140);
|
|
else if (Main.bloodMoon && Main.rand.Next(5) < 2)
|
|
newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 490) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 489);
|
|
else if (num1 == 147 || num1 == 161 || num1 == 163 || num1 == 164 || num1 == 162)
|
|
newNPC = Main.player[index5].ZoneGraveyard || !Main.hardMode || Main.rand.Next(4) != 0 ? (Main.player[index5].ZoneGraveyard || !Main.hardMode || Main.rand.Next(3) != 0 ? (!Main.expertMode || Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 161) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 431)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 155)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 169);
|
|
else if (Main.raining && Main.rand.Next(2) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 223);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.npc[newNPC].SetDefaults(-54);
|
|
else
|
|
Main.npc[newNPC].SetDefaults(-55);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int num57 = Main.rand.Next(7);
|
|
int maxValue5 = 12;
|
|
int maxValue6 = 20;
|
|
if (Main.player[index5].statLifeMax <= 100)
|
|
{
|
|
maxValue5 = 5 - Main.CurrentFrameFlags.ActivePlayersCount / 2;
|
|
if (maxValue5 < 2)
|
|
maxValue5 = 2;
|
|
}
|
|
if (Main.player[index5].ZoneGraveyard && Main.rand.Next(maxValue6) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 632);
|
|
else if (Main.rand.Next(maxValue5) == 0)
|
|
newNPC = !Main.expertMode || Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 590) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 591);
|
|
else if (Main.halloween && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(319, 322));
|
|
else if (Main.xMas && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(331, 333));
|
|
else if (num57 == 0 && Main.expertMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 430);
|
|
else if (num57 == 2 && Main.expertMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 432);
|
|
else if (num57 == 3 && Main.expertMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 433);
|
|
else if (num57 == 4 && Main.expertMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 434);
|
|
else if (num57 == 5 && Main.expertMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 435);
|
|
else if (num57 == 6 && Main.expertMode && Main.rand.Next(3) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 436);
|
|
}
|
|
else
|
|
{
|
|
switch (num57)
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 3);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-26);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-27);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 132);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-28);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-29);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 186);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-30);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-31);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 187);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-32);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-33);
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 188);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-34);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-35);
|
|
break;
|
|
}
|
|
break;
|
|
case 5:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 189);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-36);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-37);
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 200);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-44);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-45);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (Main.player[index5].ZoneGraveyard)
|
|
Main.npc[newNPC].target = index5;
|
|
}
|
|
}
|
|
else if ((double) index2 <= Main.rockLayer)
|
|
{
|
|
if (!flag5 && Main.rand.Next(50) == 0 && !Main.player[index5].ZoneSnow)
|
|
newNPC = !Main.hardMode ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 10, 1) : (Main.rand.Next(3) == 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 10, 1) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 95, 1));
|
|
else if (Main.hardMode && Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 140);
|
|
else if (Main.hardMode && Main.rand.Next(4) != 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 141);
|
|
else if (tileType == 147 || tileType == 161 || Main.player[index5].ZoneSnow)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 147);
|
|
}
|
|
else
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 1);
|
|
if (Main.rand.Next(5) == 0)
|
|
Main.npc[newNPC].SetDefaults(-9);
|
|
else if (Main.rand.Next(2) == 0)
|
|
Main.npc[newNPC].SetDefaults(1);
|
|
else
|
|
Main.npc[newNPC].SetDefaults(-8);
|
|
}
|
|
}
|
|
else if (index2 > Main.maxTilesY - 190)
|
|
newNPC = !Main.hardMode || NPC.savedTaxCollector || Main.rand.Next(20) != 0 || NPC.AnyNPCs(534) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(40) != 0 || NPC.AnyNPCs(39) ? (Main.rand.Next(14) != 0 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(3) != 0 ? (!Main.hardMode || !NPC.downedMechBossAny || Main.rand.Next(5) == 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 60) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 151)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 59)) : (Main.rand.Next(10) != 0 ? (!Main.hardMode || !NPC.downedMechBossAny || Main.rand.Next(5) == 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 62) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 156)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 66))) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 24)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 39, 1)) : NPC.SpawnNPC_SpawnLavaBaitCritters(index1, index2)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 534);
|
|
else if (NPC.SpawnNPC_CheckToSpawnRockGolem(index1, index2, tileType, index5))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 631);
|
|
else if (Main.rand.Next(60) == 0)
|
|
newNPC = !Main.player[index5].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 217) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 218);
|
|
else if ((tileType == 116 || tileType == 117 || tileType == 164) && Main.hardMode && !flag5 && Main.rand.Next(8) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 120);
|
|
else if ((num1 == 147 || num1 == 161 || num1 == 162 || num1 == 163 || num1 == 164 || num1 == 200) && !flag5 && Main.hardMode && Main.player[index5].ZoneCorrupt && Main.rand.Next(30) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 170);
|
|
else if ((num1 == 147 || num1 == 161 || num1 == 162 || num1 == 163 || num1 == 164 || num1 == 200) && !flag5 && Main.hardMode && Main.player[index5].ZoneHallow && Main.rand.Next(30) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 171);
|
|
else if ((num1 == 147 || num1 == 161 || num1 == 162 || num1 == 163 || num1 == 164 || num1 == 200) && !flag5 && Main.hardMode && Main.player[index5].ZoneCrimson && Main.rand.Next(30) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 180);
|
|
else if (Main.hardMode && Main.player[index5].ZoneSnow && Main.rand.Next(10) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 154);
|
|
else if (!flag5 && Main.rand.Next(100) == 0 && !Main.player[index5].ZoneHallow)
|
|
newNPC = !Main.hardMode ? (!Main.player[index5].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 10, 1) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 185)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 95, 1);
|
|
else if (Main.player[index5].ZoneSnow && Main.rand.Next(20) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 185);
|
|
else if (!Main.hardMode && Main.rand.Next(10) == 0 || Main.hardMode && Main.rand.Next(20) == 0)
|
|
{
|
|
if (Main.player[index5].ZoneSnow)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 184);
|
|
else if (Main.rand.Next(3) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 1);
|
|
Main.npc[newNPC].SetDefaults(-6);
|
|
}
|
|
else
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 16);
|
|
}
|
|
else if (!Main.hardMode && Main.rand.Next(4) == 0)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 1);
|
|
if (Main.player[index5].ZoneJungle)
|
|
Main.npc[newNPC].SetDefaults(-10);
|
|
else if (Main.player[index5].ZoneSnow)
|
|
Main.npc[newNPC].SetDefaults(184);
|
|
else
|
|
Main.npc[newNPC].SetDefaults(-6);
|
|
}
|
|
else if (Main.rand.Next(2) == 0)
|
|
{
|
|
if (Main.rand.Next(35) == 0 && NPC.CountNPCS(453) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 453);
|
|
else if (!Main.hardMode && Main.rand.Next(80) == 0 || Main.rand.Next(200) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 195);
|
|
else if (Main.hardMode && (double) index2 > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && Main.rand.Next(300) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 172);
|
|
else if ((double) index2 > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && (Main.rand.Next(200) == 0 || Main.rand.Next(50) == 0 && (Main.player[index5].armor[1].type == 4256 || Main.player[index5].armor[1].type >= 1282 && Main.player[index5].armor[1].type <= 1287) && Main.player[index5].armor[0].type != 238))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 45);
|
|
else if (flag10 && Main.rand.Next(4) != 0)
|
|
newNPC = Main.rand.Next(6) == 0 || NPC.AnyNPCs(480) || !Main.hardMode ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 481) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 480);
|
|
else if (flag9 && Main.rand.Next(5) != 0)
|
|
newNPC = Main.rand.Next(6) == 0 || NPC.AnyNPCs(483) ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 482) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 483);
|
|
else if (Main.hardMode && Main.rand.Next(10) != 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
if (Main.player[index5].ZoneSnow)
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 197);
|
|
}
|
|
else
|
|
{
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 77);
|
|
if ((double) index2 > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && Main.rand.Next(5) == 0)
|
|
Main.npc[newNPC].SetDefaults(-15);
|
|
}
|
|
}
|
|
else
|
|
newNPC = !Main.player[index5].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 110) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 206);
|
|
}
|
|
else if (!flag5 && (Main.halloween || Main.player[index5].ZoneGraveyard) && Main.rand.Next(30) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 316);
|
|
else if (Main.rand.Next(20) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 44);
|
|
else if (num1 == 147 || num1 == 161 || num1 == 162)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 167);
|
|
else if (Main.player[index5].ZoneSnow)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 185);
|
|
else if (Main.rand.Next(3) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, NPC.cavernMonsterType[Main.rand.Next(2), Main.rand.Next(3)]);
|
|
else if (Main.player[index5].ZoneGlowshroom && (num1 == 70 || num1 == 190))
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 635);
|
|
else if (Main.halloween && Main.rand.Next(2) == 0)
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, Main.rand.Next(322, 325));
|
|
else if (Main.expertMode && Main.rand.Next(3) == 0)
|
|
{
|
|
int num58 = Main.rand.Next(4);
|
|
newNPC = num58 != 0 ? (num58 != 0 ? (num58 != 0 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 452) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 451)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 450)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 449);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 21);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-47);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-46);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 201);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-49);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-48);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 202);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-51);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-50);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
newNPC = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 203);
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.npc[newNPC].SetDefaults(-53);
|
|
break;
|
|
}
|
|
Main.npc[newNPC].SetDefaults(-52);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
newNPC = !Main.hardMode || !(Main.player[index5].ZoneHallow & Main.rand.Next(2) == 0) ? (!Main.player[index5].ZoneJungle ? (!Main.player[index5].ZoneGlowshroom || num1 != 70 && num1 != 190 ? (!Main.hardMode || !Main.player[index5].ZoneHallow ? (!Main.hardMode || Main.rand.Next(6) <= 0 ? (num1 == 147 || num1 == 161 || num1 == 162 ? (!Main.hardMode ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 150) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 169)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 49)) : (Main.rand.Next(3) != 0 || num1 != 147 && num1 != 161 && num1 != 162 ? NPC.NewNPC(index1 * 16 + 8, index2 * 16, 93) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 150))) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 137)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 634)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 51)) : NPC.NewNPC(index1 * 16 + 8, index2 * 16, 138);
|
|
if (Main.npc[newNPC].type == 1 && Main.player[index5].RollLuck(180) == 0)
|
|
Main.npc[newNPC].SetDefaults(-4);
|
|
if (Main.netMode != 2 || newNPC >= 200)
|
|
break;
|
|
NetMessage.SendData(23, number: newNPC);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static bool SpawnNPC_CheckToSpawnRockGolem(
|
|
int spawnTileX,
|
|
int spawnTileY,
|
|
int tileType,
|
|
int plr)
|
|
{
|
|
return Main.hardMode && (tileType == 1 || TileID.Sets.Conversion.Moss[tileType]) && !Main.player[plr].ZoneSnow && Main.rand.Next(30) == 0 && !WorldGen.SolidTile(spawnTileX - 1, spawnTileY - 4) && !WorldGen.SolidTile(spawnTileX, spawnTileY - 4) && !WorldGen.SolidTile(spawnTileX + 1, spawnTileY - 4);
|
|
}
|
|
|
|
private static int SpawnNPC_SpawnLavaBaitCritters(int spawnTileX, int spawnTileY)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
return NPC.NewNPC(spawnTileX * 16 + 8, spawnTileY * 16, 655);
|
|
if (Main.dayTime)
|
|
return NPC.NewNPC(spawnTileX * 16 + 8, spawnTileY * 16, 653);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(spawnTileX * 16 + 8 - 16, spawnTileY * 16, 654);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(spawnTileX * 16 + 8 + 16, spawnTileY * 16, 654);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(spawnTileX * 16 + 8, spawnTileY * 16 - 16, 654);
|
|
if (Main.rand.Next(NPC.fireFlyMultiple) == 0)
|
|
NPC.NewNPC(spawnTileX * 16 + 8, spawnTileY * 16 + 16, 654);
|
|
return NPC.NewNPC(spawnTileX * 16 + 8, spawnTileY * 16, 654);
|
|
}
|
|
|
|
private static int SpawnNPC_TryFindingProperGroundTileType(int spawnTileType, int x, int y)
|
|
{
|
|
if (!NPC.IsValidSpawningGroundTile(x, y))
|
|
{
|
|
for (int y1 = y + 1; y1 < y + 30; ++y1)
|
|
{
|
|
if (NPC.IsValidSpawningGroundTile(x, y1))
|
|
return (int) Main.tile[x, y1].type;
|
|
}
|
|
}
|
|
return spawnTileType;
|
|
}
|
|
|
|
private static bool IsValidSpawningGroundTile(int x, int y)
|
|
{
|
|
Tile tile = Main.tile[x, y];
|
|
return tile.nactive() && Main.tileSolid[(int) tile.type] && !Main.tileSolidTop[(int) tile.type] && !TileID.Sets.IsSkippedForNPCSpawningGroundTypeCheck[(int) tile.type];
|
|
}
|
|
|
|
public static bool FindCattailTop(int landX, int landY, out int cattailX, out int cattailY)
|
|
{
|
|
cattailX = landX;
|
|
cattailY = landY;
|
|
if (!WorldGen.InWorld(landX, landY, 31))
|
|
return false;
|
|
int maxValue = 1;
|
|
for (int index1 = landX - 30; index1 <= landX + 30; ++index1)
|
|
{
|
|
for (int index2 = landY - 20; index2 <= landY + 20; ++index2)
|
|
{
|
|
Tile tile = Main.tile[index1, index2];
|
|
if (tile != null && tile.active() && tile.type == (ushort) 519 && tile.frameX >= (short) 180 && Main.rand.Next(maxValue) == 0)
|
|
{
|
|
cattailX = index1;
|
|
cattailY = index2;
|
|
++maxValue;
|
|
}
|
|
}
|
|
}
|
|
return cattailX != landX || cattailY != landY;
|
|
}
|
|
|
|
public static bool FindTreeBranch(
|
|
int landX,
|
|
int landY,
|
|
out int treeBranchX,
|
|
out int treeBranchY)
|
|
{
|
|
treeBranchX = landX;
|
|
treeBranchY = landY;
|
|
if (!WorldGen.InWorld(landX, landY, 11))
|
|
return false;
|
|
int maxValue = 1;
|
|
for (int index1 = landX - 10; index1 <= landX + 10; ++index1)
|
|
{
|
|
for (int index2 = landY - 30; index2 <= landY + 30; ++index2)
|
|
{
|
|
Tile tile = Main.tile[index1, index2];
|
|
if (tile != null && tile.active() && TileID.Sets.IsATreeTrunk[(int) tile.type])
|
|
{
|
|
int num1 = (int) tile.frameX / 22;
|
|
int num2 = (int) tile.frameY / 66;
|
|
if ((num1 == 3 && num2 == 0 || num1 == 3 && num2 == 3 || num1 == 4 && num2 == 1 || num1 == 4 && num2 == 3 || num1 == 2 && num2 == 3) && Main.rand.Next(maxValue) == 0)
|
|
{
|
|
treeBranchX = index1;
|
|
treeBranchY = index2;
|
|
++maxValue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return treeBranchX != landX || treeBranchY != landY;
|
|
}
|
|
|
|
public static bool AnyDanger(bool quickBossNPCCheck = false)
|
|
{
|
|
bool flag = false;
|
|
if (NPC.MoonLordCountdown > 0)
|
|
flag = true;
|
|
if (Main.invasionType > 0)
|
|
flag = true;
|
|
if (Main.snowMoon || Main.pumpkinMoon || DD2Event.Ongoing)
|
|
flag = true;
|
|
if (!flag)
|
|
{
|
|
if (quickBossNPCCheck)
|
|
{
|
|
flag |= Main.CurrentFrameFlags.AnyActiveBossNPC;
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && (Main.npc[index].boss || NPCID.Sets.DangerThatPreventsOtherDangers[Main.npc[index].type]))
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public static bool AnyoneNearCultists()
|
|
{
|
|
int firstNpc = NPC.FindFirstNPC(437);
|
|
if (firstNpc == -1)
|
|
return false;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = Utils.CenteredRectangle(Main.npc[firstNpc].Center, new Vector2(2500f, 1500f));
|
|
Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 0, 2500, 1500);
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
{
|
|
r.X = (int) Main.player[index].Center.X - (int) vector2.X;
|
|
r.Y = (int) Main.player[index].Center.Y - (int) vector2.Y;
|
|
if (rectangle.Intersects(r))
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static void SpawnWOF(Vector2 pos)
|
|
{
|
|
if ((double) pos.Y / 16.0 < (double) (Main.maxTilesY - 205) || Main.wofNPCIndex >= 0 || Main.netMode == 1 || NPC.AnyNPCs(113))
|
|
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;
|
|
while (true)
|
|
{
|
|
try
|
|
{
|
|
if (!WorldGen.SolidTile(i, num2 - num3) && Main.tile[i, num2 - num3].liquid < (byte) 100)
|
|
{
|
|
num2 -= num3;
|
|
break;
|
|
}
|
|
if (!WorldGen.SolidTile(i, num2 + num3) && Main.tile[i, num2 + num3].liquid < (byte) 100)
|
|
{
|
|
num2 += num3;
|
|
break;
|
|
}
|
|
++num3;
|
|
}
|
|
catch
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
if (num2 < Main.maxTilesY - 180)
|
|
num2 = Main.maxTilesY - 180;
|
|
int Y = num2 * 16;
|
|
int index1 = NPC.NewNPC(x, Y, 113);
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) Main.npc[index1].TypeName), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[index1].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
|
|
public static void SpawnSkeletron()
|
|
{
|
|
bool flag1 = true;
|
|
bool flag2 = false;
|
|
Vector2 vector2 = Vector2.Zero;
|
|
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)
|
|
{
|
|
if (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);
|
|
}
|
|
else if (Main.npc[number].type == 54)
|
|
{
|
|
flag2 = true;
|
|
vector2 = Main.npc[number].position;
|
|
num1 = Main.npc[number].width;
|
|
num2 = Main.npc[number].height;
|
|
}
|
|
}
|
|
}
|
|
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 npcNameValue = Lang.GetNPCNameValue(35);
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) npcNameValue), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Lang.GetNPCName(35).ToNetworkText()), new Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
|
|
public static void SpawnOnPlayer(int plr, int Type)
|
|
{
|
|
if (Main.netMode == 1 || Type == 262 && NPC.AnyNPCs(262))
|
|
return;
|
|
switch (Type)
|
|
{
|
|
case 245:
|
|
if (NPC.AnyNPCs(245))
|
|
break;
|
|
try
|
|
{
|
|
int num1 = (int) Main.player[plr].Center.X / 16;
|
|
int num2 = (int) Main.player[plr].Center.Y / 16;
|
|
int i = 0;
|
|
int num3 = 0;
|
|
for (int index1 = num1 - 20; index1 < num1 + 20; ++index1)
|
|
{
|
|
for (int index2 = num2 - 20; index2 < num2 + 20; ++index2)
|
|
{
|
|
if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 237 && Main.tile[index1, index2].frameX == (short) 18 && Main.tile[index1, index2].frameY == (short) 0)
|
|
{
|
|
i = index1;
|
|
num3 = index2;
|
|
}
|
|
}
|
|
}
|
|
if (i <= 0 || num3 <= 0)
|
|
break;
|
|
int num4 = num3 - 15;
|
|
int num5 = num3 - 15;
|
|
for (int j = num3; j > num3 - 50; --j)
|
|
{
|
|
if (WorldGen.SolidTile(i, j))
|
|
{
|
|
num4 = j;
|
|
break;
|
|
}
|
|
}
|
|
for (int j = num3; j < num3 + 50; ++j)
|
|
{
|
|
if (WorldGen.SolidTile(i, j))
|
|
{
|
|
num5 = j;
|
|
break;
|
|
}
|
|
}
|
|
int num6 = (num4 + num4 + num5) / 3;
|
|
int index = NPC.NewNPC(i * 16 + 8, num6 * 16, 245, 100);
|
|
Main.npc[index].target = plr;
|
|
string typeName = Main.npc[index].TypeName;
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) typeName), (byte) 175, (byte) 75);
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[index].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
catch
|
|
{
|
|
break;
|
|
}
|
|
case 370:
|
|
Player player1 = Main.player[plr];
|
|
if (!player1.active || player1.dead)
|
|
break;
|
|
for (int index3 = 0; index3 < 1000; ++index3)
|
|
{
|
|
Projectile projectile = Main.projectile[index3];
|
|
if (projectile.active && projectile.bobber && projectile.owner == plr)
|
|
{
|
|
int index4 = NPC.NewNPC((int) projectile.Center.X, (int) projectile.Center.Y + 100, 370);
|
|
string typeName = Main.npc[index4].TypeName;
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) typeName), (byte) 175, (byte) 75);
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[index4].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case 398:
|
|
if (NPC.AnyNPCs(Type))
|
|
break;
|
|
Player player2 = Main.player[plr];
|
|
NPC.NewNPC((int) player2.Center.X, (int) player2.Center.Y - 150, Type);
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) Language.GetTextValue("Enemies.MoonLord")), (byte) 175, (byte) 75);
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) NetworkText.FromKey("Enemies.MoonLord")), new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
default:
|
|
bool flag = false;
|
|
int num7 = 0;
|
|
int num8 = 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 num9 = (int) ((double) Main.player[plr].position.X / 16.0) - NPC.safeRangeX;
|
|
int num10 = (int) ((double) Main.player[plr].position.X / 16.0) + NPC.safeRangeX;
|
|
int num11 = (int) ((double) Main.player[plr].position.Y / 16.0) - NPC.safeRangeY;
|
|
int num12 = (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 index5 = 0; index5 < 1000; ++index5)
|
|
{
|
|
for (int index6 = 0; index6 < 100; ++index6)
|
|
{
|
|
int index7 = Main.rand.Next(minValue1, maxValue1);
|
|
int index8 = Main.rand.Next(minValue2, maxValue2);
|
|
if (!Main.tile[index7, index8].nactive() || !Main.tileSolid[(int) Main.tile[index7, index8].type])
|
|
{
|
|
if ((!Main.wallHouse[(int) Main.tile[index7, index8].wall] || index5 >= 999) && (Type != 50 || index5 >= 500 || Main.tile[index8, index8].wall <= (ushort) 0))
|
|
{
|
|
for (int index9 = index8; index9 < Main.maxTilesY; ++index9)
|
|
{
|
|
if (Main.tile[index7, index9].nactive() && Main.tileSolid[(int) Main.tile[index7, index9].type])
|
|
{
|
|
if (index7 < num9 || index7 > num10 || index9 < num11 || index9 > num12 || index5 == 999)
|
|
{
|
|
int type = (int) Main.tile[index7, index9].type;
|
|
num7 = index7;
|
|
num8 = index9;
|
|
flag = true;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (flag && Type == 50 && index5 < 900)
|
|
{
|
|
int num13 = 20;
|
|
if (!Collision.CanHit(new Vector2((float) num7, (float) (num8 - 1)) * 16f, 16, 16, new Vector2((float) num7, (float) (num8 - 1 - num13)) * 16f, 16, 16) || !Collision.CanHit(new Vector2((float) num7, (float) (num8 - 1 - num13)) * 16f, 16, 16, Main.player[plr].Center, 0, 0))
|
|
{
|
|
num7 = 0;
|
|
num8 = 0;
|
|
flag = false;
|
|
}
|
|
}
|
|
if (flag && index5 < 999)
|
|
{
|
|
int num14 = num7 - NPC.spawnSpaceX / 2;
|
|
int num15 = num7 + NPC.spawnSpaceX / 2;
|
|
int num16 = num8 - NPC.spawnSpaceY;
|
|
int num17 = num8;
|
|
if (num14 < 0)
|
|
flag = false;
|
|
if (num15 > Main.maxTilesX)
|
|
flag = false;
|
|
if (num16 < 0)
|
|
flag = false;
|
|
if (num17 > Main.maxTilesY)
|
|
flag = false;
|
|
if (flag)
|
|
{
|
|
for (int index10 = num14; index10 < num15; ++index10)
|
|
{
|
|
for (int index11 = num16; index11 < num17; ++index11)
|
|
{
|
|
if (Main.tile[index10, index11].nactive() && Main.tileSolid[(int) Main.tile[index10, index11].type])
|
|
{
|
|
flag = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
if (flag || flag)
|
|
break;
|
|
}
|
|
if (flag && index5 < 999)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(num7 * 16, num8 * 16, 16, 16);
|
|
for (int index12 = 0; index12 < (int) byte.MaxValue; ++index12)
|
|
{
|
|
if (Main.player[index12].active)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.player[index12].position.X + (double) (Main.player[index12].width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) Main.player[index12].position.Y + (double) (Main.player[index12].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)
|
|
break;
|
|
NPC.SpawnBoss(num7 * 16 + 8, num8 * 16, Type, plr);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void SpawnBoss(
|
|
int spawnPositionX,
|
|
int spawnPositionY,
|
|
int Type,
|
|
int targetPlayerIndex)
|
|
{
|
|
int number = NPC.NewNPC(spawnPositionX, spawnPositionY, Type, 1);
|
|
if (number == 200)
|
|
return;
|
|
Main.npc[number].target = targetPlayerIndex;
|
|
Main.npc[number].timeLeft *= 20;
|
|
string typeName = Main.npc[number].TypeName;
|
|
if (Main.netMode == 2 && number < 200)
|
|
NetMessage.SendData(23, number: number);
|
|
if (Type == 134 || Type == (int) sbyte.MaxValue || Type == 126 || Type == 125)
|
|
AchievementsHelper.CheckMechaMayhem();
|
|
if (Type == 125)
|
|
{
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Lang.misc[48].Value, (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(Lang.misc[48].ToNetworkText(), new Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (Type == 316 || Type == 662 || Type == 82 || Type == 126 || Type == 50 || Type == 398 || Type == 551)
|
|
return;
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) typeName), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[number].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
}
|
|
|
|
public static int NewNPC(
|
|
int X,
|
|
int Y,
|
|
int Type,
|
|
int Start = 0,
|
|
float ai0 = 0.0f,
|
|
float ai1 = 0.0f,
|
|
float ai2 = 0.0f,
|
|
float ai3 = 0.0f,
|
|
int Target = 255)
|
|
{
|
|
if (Main.getGoodWorld)
|
|
{
|
|
if (Type == 46)
|
|
Type = 614;
|
|
if (Type == 62)
|
|
Type = 66;
|
|
}
|
|
int nextNPC = -1;
|
|
if (Type == 222)
|
|
{
|
|
for (int index = 199; index >= 0; --index)
|
|
{
|
|
if (!Main.npc[index].active)
|
|
{
|
|
nextNPC = index;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index = Start; index < 200; ++index)
|
|
{
|
|
if (!Main.npc[index].active)
|
|
{
|
|
nextNPC = index;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (nextNPC < 0)
|
|
return 200;
|
|
Main.npc[nextNPC] = new NPC();
|
|
Main.npc[nextNPC].SetDefaults(Type);
|
|
Main.npc[nextNPC].whoAmI = nextNPC;
|
|
NPC.GiveTownUniqueDataToNPCsThatNeedIt(Type, nextNPC);
|
|
Main.npc[nextNPC].position.X = (float) (X - Main.npc[nextNPC].width / 2);
|
|
Main.npc[nextNPC].position.Y = (float) (Y - Main.npc[nextNPC].height);
|
|
Main.npc[nextNPC].active = true;
|
|
Main.npc[nextNPC].timeLeft = (int) ((double) NPC.activeTime * 1.25);
|
|
Main.npc[nextNPC].wet = Collision.WetCollision(Main.npc[nextNPC].position, Main.npc[nextNPC].width, Main.npc[nextNPC].height);
|
|
Main.npc[nextNPC].ai[0] = ai0;
|
|
Main.npc[nextNPC].ai[1] = ai1;
|
|
Main.npc[nextNPC].ai[2] = ai2;
|
|
Main.npc[nextNPC].ai[3] = ai3;
|
|
Main.npc[nextNPC].target = Target;
|
|
if (Type == 50)
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) Main.npc[nextNPC].TypeName), (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[nextNPC].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
return nextNPC;
|
|
}
|
|
|
|
private static void GiveTownUniqueDataToNPCsThatNeedIt(int Type, int nextNPC)
|
|
{
|
|
if (NPC.TypeToDefaultHeadIndex(Type) == -1 && Type != 453)
|
|
return;
|
|
Main.npc[nextNPC].GivenName = NPC.getNewNPCName(Type);
|
|
ITownNPCProfile profile;
|
|
if (TownNPCProfiles.Instance.GetProfile(Type, out profile))
|
|
{
|
|
Main.npc[nextNPC].townNpcVariationIndex = profile.RollVariation();
|
|
Main.npc[nextNPC].GivenName = profile.GetNameForVariant(Main.npc[nextNPC]);
|
|
}
|
|
Main.npc[nextNPC].needsUniqueInfoUpdate = true;
|
|
}
|
|
|
|
public void TransformVisuals(int oldType, int newType)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
if (oldType == 158 && newType == 159 || oldType == 159 && newType == 158)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item8, this.position);
|
|
int index1 = Gore.NewGore(new Vector2(this.position.X, this.position.Y - 10f), this.velocity, 99, this.scale);
|
|
Main.gore[index1].velocity *= 0.3f;
|
|
int index2 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), this.velocity, 99, this.scale);
|
|
Main.gore[index2].velocity *= 0.3f;
|
|
int index3 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) this.height - 10.0)), this.velocity, 99, this.scale);
|
|
Main.gore[index3].velocity *= 0.3f;
|
|
}
|
|
else if (oldType == 478 && newType == 479)
|
|
{
|
|
for (int index4 = 0; index4 < 30; ++index4)
|
|
{
|
|
int index5 = Dust.NewDust(this.position, this.width, this.height, 238, SpeedY: -2f);
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.dust[index5].noGravity = true;
|
|
}
|
|
Gore.NewGore(this.position, this.velocity, 684, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 685, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 686, this.scale);
|
|
Gore.NewGore(this.position, this.velocity, 684 + Main.rand.Next(3), this.scale);
|
|
}
|
|
else if (oldType == 406 && newType == 405)
|
|
{
|
|
float num1 = (float) Main.rand.Next(10, 21);
|
|
float num2 = 6.283185f * Main.rand.NextFloat();
|
|
Vector2 vector2_1 = new Vector2(22f, 22f);
|
|
for (float num3 = 0.0f; (double) num3 < (double) num1; ++num3)
|
|
{
|
|
Dust dust = Main.dust[Dust.NewDust(this.Center, 0, 0, 229)];
|
|
Vector2 vector2_2 = Vector2.UnitY.RotatedBy((double) num3 * 6.28318548202515 / (double) num1 + (double) num2);
|
|
dust.position = this.Center + vector2_2 * vector2_1 / 2f;
|
|
dust.velocity = vector2_2;
|
|
dust.noGravity = true;
|
|
dust.scale = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 1.79999995231628);
|
|
dust.velocity *= dust.scale;
|
|
dust.fadeIn = Main.rand.NextFloat() * 2f;
|
|
}
|
|
}
|
|
if (oldType == 428 && newType == 427)
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
{
|
|
int Type = Utils.SelectRandom<int>(Main.rand, 229, 240);
|
|
Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, Type)];
|
|
dust.noGravity = true;
|
|
dust.scale = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 1.79999995231628);
|
|
dust.fadeIn = 0.25f;
|
|
dust.velocity *= dust.scale / 2f;
|
|
}
|
|
}
|
|
if (oldType == 427 && newType == 426)
|
|
{
|
|
for (int index = 0; index < 30; ++index)
|
|
{
|
|
int Type = Utils.SelectRandom<int>(Main.rand, 229, 240, 240);
|
|
Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, Type)];
|
|
dust.noGravity = true;
|
|
dust.scale = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 1.79999995231628);
|
|
dust.fadeIn = 0.25f;
|
|
dust.velocity *= dust.scale * 0.75f;
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
|
|
public void Teleport(Vector2 newPos, int Style = 0, int extraInfo = 0)
|
|
{
|
|
int extraInfo1 = 0;
|
|
if (Style == 4)
|
|
extraInfo1 = this.lastPortalColorIndex;
|
|
float dustCountMult = (double) this.teleportTime > 0.0 ? 0.3f : 1f;
|
|
Vector2 position = this.position;
|
|
Main.TeleportEffect(this.getRect(), Style, extraInfo1, dustCountMult, otherPosition: newPos);
|
|
this.position = newPos;
|
|
if (Style == 4)
|
|
{
|
|
this.lastPortalColorIndex = extraInfo;
|
|
extraInfo1 = this.lastPortalColorIndex;
|
|
}
|
|
Main.TeleportEffect(this.getRect(), Style, extraInfo1, dustCountMult, TeleportationSide.Exit, position);
|
|
this.teleportTime = 1f;
|
|
this.teleportStyle = Style;
|
|
if (Main.netMode != 2 || Style == 4)
|
|
return;
|
|
NetMessage.SendData(65, number: 1, number2: ((float) this.whoAmI), number3: newPos.X, number4: newPos.Y, number5: Style);
|
|
}
|
|
|
|
public void Transform(int newType)
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
int extraValue = this.extraValue;
|
|
bool flag = false;
|
|
if ((double) this.value == 0.0)
|
|
flag = true;
|
|
int[] numArray1 = new int[5];
|
|
int[] numArray2 = new int[5];
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
numArray1[index] = this.buffType[index];
|
|
numArray2[index] = this.buffTime[index];
|
|
}
|
|
int height = this.height;
|
|
int type = this.type;
|
|
int life = this.life;
|
|
int lifeMax = this.lifeMax;
|
|
Vector2 velocity = this.velocity;
|
|
this.position.Y += (float) this.height;
|
|
int spriteDirection = this.spriteDirection;
|
|
bool spawnedFromStatue = this.SpawnedFromStatue;
|
|
this.SetDefaults(newType);
|
|
this.SpawnedFromStatue = spawnedFromStatue;
|
|
this.spriteDirection = spriteDirection;
|
|
this.TargetClosest();
|
|
this.velocity = velocity;
|
|
this.position.Y -= (float) this.height;
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
this.buffType[index] = numArray1[index];
|
|
this.buffTime[index] = numArray2[index];
|
|
}
|
|
if (flag)
|
|
this.value = 0.0f;
|
|
if (this.lifeMax == lifeMax)
|
|
this.life = life;
|
|
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;
|
|
}
|
|
this.extraValue = extraValue;
|
|
if (Main.netMode == 2)
|
|
{
|
|
this.netUpdate = true;
|
|
NetMessage.SendData(23, number: this.whoAmI);
|
|
NetMessage.SendData(54, number: this.whoAmI);
|
|
}
|
|
this.TransformVisuals(type, newType);
|
|
NPC.GiveTownUniqueDataToNPCsThatNeedIt(this.type, this.whoAmI);
|
|
if (this.townNPC)
|
|
{
|
|
this.homeless = true;
|
|
WorldGen.CheckAchievement_RealEstate();
|
|
}
|
|
this.altTexture = 0;
|
|
}
|
|
|
|
public int checkArmorPenetration(int armorPenetration)
|
|
{
|
|
if (armorPenetration <= 0)
|
|
return 0;
|
|
return armorPenetration > this.defense && this.defense >= 0 ? this.defense / 2 : armorPenetration / 2;
|
|
}
|
|
|
|
public double StrikeNPCNoInteraction(
|
|
int Damage,
|
|
float knockBack,
|
|
int hitDirection,
|
|
bool crit = false,
|
|
bool noEffect = false,
|
|
bool fromNet = false)
|
|
{
|
|
if (Main.netMode == 0)
|
|
++NPC.ignorePlayerInteractions;
|
|
return this.StrikeNPC(Damage, knockBack, hitDirection, crit, noEffect, fromNet);
|
|
}
|
|
|
|
public double StrikeNPC(
|
|
int Damage,
|
|
float knockBack,
|
|
int hitDirection,
|
|
bool crit = false,
|
|
bool noEffect = false,
|
|
bool fromNet = false)
|
|
{
|
|
bool flag = Main.netMode == 0;
|
|
if (flag && NPC.ignorePlayerInteractions > 0)
|
|
{
|
|
--NPC.ignorePlayerInteractions;
|
|
flag = false;
|
|
}
|
|
if (!this.active || this.life <= 0)
|
|
return 0.0;
|
|
double num1 = (double) Damage;
|
|
int Defense = this.defense;
|
|
if (this.ichor)
|
|
Defense -= 20;
|
|
if (this.betsysCurse)
|
|
Defense -= 40;
|
|
if (Defense < 0)
|
|
Defense = 0;
|
|
double dmg = Main.CalculateDamageNPCsTake((int) num1, Defense);
|
|
if (crit)
|
|
dmg *= 2.0;
|
|
if ((double) this.takenDamageMultiplier > 1.0)
|
|
dmg *= (double) this.takenDamageMultiplier;
|
|
if (((double) this.takenDamageMultiplier > 1.0 || Damage != 9999) && this.lifeMax > 1)
|
|
{
|
|
if (this.friendly)
|
|
{
|
|
CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), crit ? CombatText.DamagedFriendlyCrit : CombatText.DamagedFriendly, (int) dmg, crit);
|
|
}
|
|
else
|
|
{
|
|
Color color = crit ? CombatText.DamagedHostileCrit : CombatText.DamagedHostile;
|
|
if (fromNet)
|
|
color = crit ? CombatText.OthersDamagedHostileCrit : CombatText.OthersDamagedHostile;
|
|
CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), color, (int) dmg, crit);
|
|
}
|
|
}
|
|
if (dmg < 1.0)
|
|
return 0.0;
|
|
if (flag)
|
|
this.PlayerInteraction(Main.myPlayer);
|
|
this.justHit = true;
|
|
if ((this.type == 438 || this.type == 379) && Main.netMode != 1)
|
|
{
|
|
int index = (int) (-(double) this.ai[3] - 1.0);
|
|
if (index > -1 && (double) Main.npc[index].localAI[0] == 0.0)
|
|
Main.npc[index].localAI[0] = 1f;
|
|
}
|
|
if (this.townNPC)
|
|
{
|
|
if ((this.aiStyle != 7 ? 0 : ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0 || (double) this.ai[0] == 16.0 ? 1 : ((double) this.ai[0] == 17.0 ? 1 : 0))) != 0)
|
|
{
|
|
NPC npc = Main.npc[(int) this.ai[2]];
|
|
if (npc.active)
|
|
{
|
|
npc.ai[0] = 1f;
|
|
npc.ai[1] = (float) (300 + Main.rand.Next(300));
|
|
npc.ai[2] = 0.0f;
|
|
npc.localAI[3] = 0.0f;
|
|
npc.direction = hitDirection;
|
|
npc.netUpdate = true;
|
|
}
|
|
}
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = (float) (300 + Main.rand.Next(300));
|
|
this.ai[2] = 0.0f;
|
|
this.localAI[3] = 0.0f;
|
|
this.direction = hitDirection;
|
|
this.netUpdate = true;
|
|
}
|
|
if (this.aiStyle == 8 && Main.netMode != 1)
|
|
{
|
|
if (this.type == 172)
|
|
this.ai[0] = 450f;
|
|
else if (this.type == 283 || this.type == 284)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
this.ai[0] = 390f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else if (this.type == 533)
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
this.ai[0] = 181f;
|
|
this.netUpdate = true;
|
|
}
|
|
}
|
|
else
|
|
this.ai[0] = 400f;
|
|
this.TargetClosest();
|
|
}
|
|
if (this.aiStyle == 97 && Main.netMode != 1)
|
|
{
|
|
this.localAI[1] = 1f;
|
|
this.TargetClosest();
|
|
}
|
|
if (this.type == 371)
|
|
{
|
|
dmg = 0.0;
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 4f;
|
|
this.dontTakeDamage = true;
|
|
}
|
|
if (this.type == 346 && (double) this.life >= (double) this.lifeMax * 0.5 && (double) this.life - dmg < (double) this.lifeMax * 0.5)
|
|
Gore.NewGore(this.position, this.velocity, 517);
|
|
if (this.type == 184)
|
|
this.localAI[0] = 60f;
|
|
if (this.type == 535)
|
|
this.localAI[0] = 60f;
|
|
if (this.type == 185)
|
|
this.localAI[0] = 1f;
|
|
if (!this.immortal)
|
|
{
|
|
if (this.realLife >= 0)
|
|
{
|
|
Main.npc[this.realLife].life -= (int) dmg;
|
|
this.life = Main.npc[this.realLife].life;
|
|
this.lifeMax = Main.npc[this.realLife].lifeMax;
|
|
}
|
|
else
|
|
this.life -= (int) dmg;
|
|
}
|
|
if ((double) knockBack > 0.0 && (double) this.knockBackResist > 0.0)
|
|
{
|
|
float num2 = knockBack * this.knockBackResist;
|
|
if (this.onFire2)
|
|
num2 *= 1.1f;
|
|
if ((double) num2 > 8.0)
|
|
num2 = 8f + (num2 - 8f) * 0.9f;
|
|
if ((double) num2 > 10.0)
|
|
num2 = 10f + (num2 - 10f) * 0.8f;
|
|
if ((double) num2 > 12.0)
|
|
num2 = 12f + (num2 - 12f) * 0.7f;
|
|
if ((double) num2 > 14.0)
|
|
num2 = 14f + (num2 - 14f) * 0.6f;
|
|
if ((double) num2 > 16.0)
|
|
num2 = 16f;
|
|
if (crit)
|
|
num2 *= 1.4f;
|
|
int num3 = (int) dmg * 10;
|
|
if (Main.expertMode)
|
|
num3 = (int) dmg * 15;
|
|
if (num3 > this.lifeMax)
|
|
{
|
|
if (hitDirection < 0 && (double) this.velocity.X > -(double) num2)
|
|
{
|
|
if ((double) this.velocity.X > 0.0)
|
|
this.velocity.X -= num2;
|
|
this.velocity.X -= num2;
|
|
if ((double) this.velocity.X < -(double) num2)
|
|
this.velocity.X = -num2;
|
|
}
|
|
else if (hitDirection > 0 && (double) this.velocity.X < (double) num2)
|
|
{
|
|
if ((double) this.velocity.X < 0.0)
|
|
this.velocity.X += num2;
|
|
this.velocity.X += num2;
|
|
if ((double) this.velocity.X > (double) num2)
|
|
this.velocity.X = num2;
|
|
}
|
|
if (this.type == 185)
|
|
num2 *= 1.5f;
|
|
float num4 = this.noGravity ? num2 * -0.5f : num2 * -0.75f;
|
|
if ((double) this.velocity.Y > (double) num4)
|
|
{
|
|
this.velocity.Y += num4;
|
|
if ((double) this.velocity.Y < (double) num4)
|
|
this.velocity.Y = num4;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!this.noGravity)
|
|
this.velocity.Y = (float) (-(double) num2 * 0.75) * this.knockBackResist;
|
|
else
|
|
this.velocity.Y = (float) (-(double) num2 * 0.5) * this.knockBackResist;
|
|
this.velocity.X = num2 * (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, dmg);
|
|
}
|
|
}
|
|
else
|
|
this.HitEffect(hitDirection, dmg);
|
|
if (this.HitSound != null)
|
|
SoundEngine.PlaySound(this.HitSound, this.position);
|
|
if (this.realLife >= 0)
|
|
Main.npc[this.realLife].checkDead();
|
|
else
|
|
this.checkDead();
|
|
return dmg;
|
|
}
|
|
|
|
public static void LadyBugKilled(Vector2 Position, bool GoldLadyBug = false)
|
|
{
|
|
Main.ladyBugRainBoost += NPC.ladyBugRainTime;
|
|
int player = Main.myPlayer;
|
|
if (!Main.player[player].active || Main.player[player].dead)
|
|
return;
|
|
Vector2 vector2 = Position - Main.player[player].Center;
|
|
int num1 = 400;
|
|
if ((double) vector2.Length() >= (double) num1)
|
|
return;
|
|
if ((double) vector2.Length() < 100.0)
|
|
vector2 = new Vector2();
|
|
double num2 = 1.0 - (double) vector2.Length() / (double) num1;
|
|
int num3 = (int) ((double) NPC.ladyBugBadLuckTime * num2);
|
|
if (GoldLadyBug)
|
|
num3 *= 2;
|
|
if (num3 >= Main.player[player].ladyBugLuckTimeLeft)
|
|
return;
|
|
Main.player[player].ladyBugLuckTimeLeft = num3;
|
|
Main.player[player].luckNeedsSync = true;
|
|
}
|
|
|
|
private void LadyBugLuck(int plr, bool GoldLadyBug = false)
|
|
{
|
|
if (this.releaseOwner != (short) byte.MaxValue || Main.player[plr].ladyBugLuckTimeLeft < 0)
|
|
return;
|
|
Vector2 vector2 = this.Center - Main.player[plr].Center;
|
|
int num1 = 800;
|
|
if ((double) vector2.Length() >= (double) num1)
|
|
return;
|
|
if ((double) vector2.Length() < 30.0)
|
|
vector2 = new Vector2();
|
|
double num2 = Math.Pow(1.0 - (double) vector2.Length() / (double) num1, 6.0);
|
|
int num3 = (int) ((double) NPC.ladyBugGoodLuckTime * num2);
|
|
if (GoldLadyBug)
|
|
num3 *= 2;
|
|
if (num3 <= Main.player[plr].ladyBugLuckTimeLeft)
|
|
return;
|
|
Main.player[plr].ladyBugLuckTimeLeft = num3;
|
|
Main.player[plr].luckNeedsSync = true;
|
|
}
|
|
|
|
private void NPCLuck()
|
|
{
|
|
int player = Main.myPlayer;
|
|
if (this.type == 22)
|
|
{
|
|
if (Main.player[player].ladyBugLuckTimeLeft < 0 || !Main.player[player].active || Main.player[player].dead)
|
|
return;
|
|
int num = NPC.ladyBugGoodLuckTime / 3;
|
|
if (num <= Main.player[player].ladyBugLuckTimeLeft)
|
|
return;
|
|
Main.player[player].ladyBugLuckTimeLeft = num;
|
|
Main.player[player].luckNeedsSync = true;
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 54 || !Main.player[player].active || Main.player[player].dead)
|
|
return;
|
|
int num = NPC.ladyBugBadLuckTime / 3;
|
|
if (num >= Main.player[player].ladyBugLuckTimeLeft)
|
|
return;
|
|
Main.player[player].ladyBugLuckTimeLeft = num;
|
|
Main.player[player].luckNeedsSync = true;
|
|
}
|
|
}
|
|
|
|
public void HitEffect(int hitDirection = 0, double dmg = 10.0)
|
|
{
|
|
// ISSUE: The method is too long to display (53918 instructions)
|
|
}
|
|
|
|
public static int CountNPCS(int Type)
|
|
{
|
|
int num = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == Type)
|
|
++num;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public static bool AnyHelpfulFairies()
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && (Main.npc[index].type == 583 || Main.npc[index].type == 584 || Main.npc[index].type == 585) && (double) Main.npc[index].ai[2] > 1.0)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
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 int FindFirstNPC(int Type)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == Type)
|
|
return index;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
public static bool NearSpikeBall(int x, int y)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.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)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) Main.npc[index].ai[1], (int) Main.npc[index].ai[2], 20, 20);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public int FindBuffIndex(int type)
|
|
{
|
|
if (this.buffImmune[type])
|
|
return -1;
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
if (this.buffTime[index] >= 1 && this.buffType[index] == type)
|
|
return index;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
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 buffIndex = -1;
|
|
for (int index3 = 0; index3 < 5; ++index3)
|
|
{
|
|
if (!Main.debuff[this.buffType[index3]])
|
|
{
|
|
buffIndex = index3;
|
|
break;
|
|
}
|
|
}
|
|
if (buffIndex == -1)
|
|
return;
|
|
for (int index4 = buffIndex; index4 < 5; ++index4)
|
|
{
|
|
if (this.buffType[index4] == 0)
|
|
{
|
|
index1 = index4;
|
|
break;
|
|
}
|
|
}
|
|
if (index1 == -1)
|
|
this.DelBuff(buffIndex);
|
|
}
|
|
this.buffType[index1] = type;
|
|
this.buffTime[index1] = time;
|
|
}
|
|
|
|
public void RequestBuffRemoval(int buffTypeToRemove)
|
|
{
|
|
if (buffTypeToRemove < 0 || buffTypeToRemove >= 323 || !BuffID.Sets.CanBeRemovedByNetMessage[buffTypeToRemove])
|
|
return;
|
|
int buffIndex = this.FindBuffIndex(buffTypeToRemove);
|
|
if (buffIndex == -1)
|
|
return;
|
|
this.DelBuff(buffIndex);
|
|
if (Main.netMode != 1)
|
|
return;
|
|
NetMessage.SendData(137, number: this.whoAmI, number2: ((float) buffTypeToRemove));
|
|
}
|
|
|
|
public void DelBuff(int buffIndex)
|
|
{
|
|
this.buffTime[buffIndex] = 0;
|
|
this.buffType[buffIndex] = 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 Microsoft.Xna.Framework.Rectangle getRect() => new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height);
|
|
|
|
public bool CanBeChasedBy(object attacker = null, bool ignoreDontTakeDamage = false) => this.active && this.chaseable && this.lifeMax > 5 && !this.dontTakeDamage | ignoreDontTakeDamage && !this.friendly && !this.immortal;
|
|
|
|
public bool CountsAsACritter => this.lifeMax <= 5 && this.damage == 0 && this.type != 594;
|
|
|
|
public void moneyPing(Vector2 pos)
|
|
{
|
|
SoundEngine.PlaySound(38, pos);
|
|
int Type = 244;
|
|
if (this.extraValue >= 1000000)
|
|
Type = 247;
|
|
else if (this.extraValue >= 10000)
|
|
Type = 246;
|
|
else if (this.extraValue >= 100)
|
|
Type = 245;
|
|
for (int index1 = 0; index1 < 20; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(pos - new Vector2(1f, 2f), 10, 14, Type, Alpha: 254, Scale: 0.25f);
|
|
Main.dust[index2].velocity *= 0.2f;
|
|
}
|
|
}
|
|
|
|
public void IdleSounds()
|
|
{
|
|
if ((this.type == 239 || this.type == 240) && Main.rand.Next(900) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(24, 26));
|
|
else if ((this.type == 62 || this.type == 156) && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(26, 30));
|
|
else if (this.type == 177 && Main.rand.Next(600) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(30, 32));
|
|
else if (this.type == 226 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 32);
|
|
else if (this.type == 153 && Main.rand.Next(1000) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 33);
|
|
else if (this.wet && (this.type == 63 || this.type == 64 || this.type == 103) && Main.rand.Next(1000) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(34, 36));
|
|
else if ((this.type == 198 || this.type == 199) && Main.rand.Next(1000) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(36, 38));
|
|
else if ((this.type == 170 || this.type == 180 || this.type == 171) && Main.rand.Next(600) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(38, 41));
|
|
else if (this.type == 250 && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(41, 44));
|
|
else if (this.type == 580 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 44);
|
|
else if (this.type == 582 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 44);
|
|
else if (this.type == 581 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(44, 47));
|
|
else if (this.type == 508 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 44);
|
|
else if (this.type == 509 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(44, 47));
|
|
else if (this.type == 494 && Main.rand.Next(600) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 47);
|
|
else if (this.type == 467 && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(48, 50));
|
|
else if (this.type == 468 && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(50, 53));
|
|
else if (this.type == 288 && Main.rand.Next(400) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(53, 55));
|
|
else if ((this.type == 524 || this.type == 525 || this.type == 526 || this.type == 527) && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(55, 57));
|
|
else if ((this.type == 496 || this.type == 497) && Main.rand.Next(600) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(57, 59));
|
|
else if (this.type == 389 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(59, 61));
|
|
else if (this.type == 471 && Main.rand.Next(600) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(61, 63));
|
|
else if (this.type == 482 && Main.rand.Next(600) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(63, 66));
|
|
else if (this.type == 388 && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(66, 69));
|
|
else if (this.type == 520 && Main.rand.Next(800) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(69, 73));
|
|
else if (this.type == 477 && Main.rand.Next(600) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 73);
|
|
else if (this.type == 258 && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(74, 78));
|
|
else if (this.type == 252 && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, 78);
|
|
else if (this.type == 469 && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(79, 81));
|
|
else if ((this.type == 253 || this.type == 82) && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(81, 84));
|
|
else if (this.type >= 498 && this.type <= 506 && Main.rand.Next(600) == 0)
|
|
{
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(84, 86));
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 391 || Main.rand.Next(700) != 0)
|
|
return;
|
|
SoundEngine.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(86, 87));
|
|
}
|
|
}
|
|
|
|
public void UpdateAltTexture()
|
|
{
|
|
if (!this.townNPC)
|
|
return;
|
|
int altTexture = this.altTexture;
|
|
bool flag = BirthdayParty.PartyIsUp || this.ForcePartyHatOn;
|
|
if (this.type == 441 || this.type == 453 || this.type == 633)
|
|
flag = false;
|
|
this.altTexture = 0;
|
|
if (flag)
|
|
this.altTexture = 1;
|
|
if (this.type == 633 && this.ShouldBestiaryGirlBeLycantrope())
|
|
this.altTexture = 2;
|
|
if (this.ForcePartyHatOn)
|
|
return;
|
|
this.MakeTransitionEffectsForTextureChanges(altTexture, this.altTexture);
|
|
}
|
|
|
|
private void MakeTransitionEffectsForTextureChanges(int oldAltTexture, int currentAltTexture)
|
|
{
|
|
if (oldAltTexture == 0 && currentAltTexture == 1)
|
|
{
|
|
for (int index = 0; index < 20; ++index)
|
|
Dust.NewDust(this.position, this.width, this.height / 4, 139 + Main.rand.Next(4), SpeedY: -2f);
|
|
}
|
|
if (oldAltTexture == 1 && currentAltTexture == 0)
|
|
Utils.PoofOfSmoke(this.position);
|
|
if (this.type != 633)
|
|
return;
|
|
int num = 2;
|
|
if ((oldAltTexture != 0 || currentAltTexture != num ? (oldAltTexture != num ? 0 : (currentAltTexture == 0 ? 1 : 0)) : 1) == 0)
|
|
return;
|
|
for (int index = 0; index < 20; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 262, SpeedY: -2f);
|
|
dust.noGravity = true;
|
|
dust.scale = 2f;
|
|
}
|
|
}
|
|
|
|
public static void ResetNetOffsets()
|
|
{
|
|
NPC.offSetDelayTime = 180;
|
|
for (int index = 0; index < 200; ++index)
|
|
Main.npc[index].netOffset *= 0.0f;
|
|
}
|
|
|
|
public void UpdateNPC(int i)
|
|
{
|
|
this.whoAmI = i;
|
|
if (!this.active)
|
|
return;
|
|
if (NPC.offSetDelayTime > 0)
|
|
this.netOffset *= 0.0f;
|
|
else if (Main.netMode == 2)
|
|
this.netOffset *= 0.0f;
|
|
else if (Main.multiplayerNPCSmoothingRange <= 0)
|
|
this.netOffset *= 0.0f;
|
|
else if (this.netOffset != new Vector2(0.0f, 0.0f))
|
|
{
|
|
if (NPCID.Sets.NoMultiplayerSmoothingByType[this.type])
|
|
this.netOffset *= 0.0f;
|
|
else if (NPCID.Sets.NoMultiplayerSmoothingByAI[this.aiStyle])
|
|
{
|
|
this.netOffset *= 0.0f;
|
|
}
|
|
else
|
|
{
|
|
float num1 = 2f;
|
|
float npcSmoothingRange = (float) Main.multiplayerNPCSmoothingRange;
|
|
float num2 = this.netOffset.Length();
|
|
if ((double) num2 > (double) npcSmoothingRange)
|
|
{
|
|
this.netOffset.Normalize();
|
|
this.netOffset *= npcSmoothingRange;
|
|
num2 = this.netOffset.Length();
|
|
}
|
|
float num3 = num1 + num2 / npcSmoothingRange * num1;
|
|
Vector2 netOffset = this.netOffset;
|
|
netOffset.Normalize();
|
|
this.netOffset -= netOffset * num3;
|
|
if ((double) this.netOffset.Length() < (double) num3)
|
|
this.netOffset *= 0.0f;
|
|
if (this.townNPC && (double) Vector2.Distance(this.position, new Vector2((float) (this.homeTileX * 16 + 8 - this.width / 2), (float) (this.homeTileY * 16 - this.height) - 0.1f)) < 1.0)
|
|
this.netOffset *= 0.0f;
|
|
}
|
|
}
|
|
this.UpdateAltTexture();
|
|
if (this.type == 368)
|
|
NPC.travelNPC = true;
|
|
if (Main.netMode != 2)
|
|
this.UpdateNPC_CastLights();
|
|
this.UpdateNPC_TeleportVisuals();
|
|
this.UpdateNPC_CritterSounds();
|
|
this.TrySyncingUniqueTownNPCData(i);
|
|
if (this.aiStyle == 7 && (double) this.position.Y > (double) Main.bottomWorld - 640.0 + (double) this.height && Main.netMode != 1 && !Main.xMas)
|
|
{
|
|
this.StrikeNPCNoInteraction(9999, 0.0f, 0);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: 9999f);
|
|
}
|
|
if (Main.netMode == 1)
|
|
{
|
|
bool flag = false;
|
|
int index1 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int index2 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
try
|
|
{
|
|
if (index1 >= 4)
|
|
{
|
|
if (index1 <= Main.maxTilesX - 4)
|
|
{
|
|
if (index2 >= 4)
|
|
{
|
|
if (index2 <= Main.maxTilesY - 4)
|
|
{
|
|
if (Main.tile[index1, index2] == null)
|
|
flag = true;
|
|
else if (Main.tile[index1 - 3, index2] == null)
|
|
flag = true;
|
|
else if (Main.tile[index1 + 3, index2] == null)
|
|
flag = true;
|
|
else if (Main.tile[index1, index2 - 3] == null)
|
|
flag = true;
|
|
else if (Main.tile[index1, index2 + 3] == null)
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
return;
|
|
}
|
|
this.UpdateNPC_BuffFlagsReset();
|
|
this.UpdateNPC_BuffSetFlags();
|
|
this.UpdateNPC_SoulDrainDebuff();
|
|
this.UpdateNPC_BuffClearExpiredBuffs();
|
|
this.UpdateNPC_BuffApplyDOTs();
|
|
this.UpdateNPC_BuffApplyVFX();
|
|
this.UpdateNPC_BloodMoonTransformations();
|
|
float maxFallSpeed;
|
|
this.UpdateNPC_UpdateGravity(out maxFallSpeed);
|
|
if (this.soundDelay > 0)
|
|
--this.soundDelay;
|
|
if (this.life <= 0)
|
|
{
|
|
this.active = false;
|
|
this.UpdateNetworkCode(i);
|
|
this.netUpdate = false;
|
|
this.justHit = false;
|
|
}
|
|
else
|
|
{
|
|
this.oldTarget = this.target;
|
|
this.oldDirection = this.direction;
|
|
this.oldDirectionY = this.directionY;
|
|
float num4 = (float) (1.0 + (double) Math.Abs(this.velocity.X) / 3.0);
|
|
if ((double) this.gfxOffY > 0.0)
|
|
{
|
|
this.gfxOffY -= num4 * this.stepSpeed;
|
|
if ((double) this.gfxOffY < 0.0)
|
|
this.gfxOffY = 0.0f;
|
|
}
|
|
else if ((double) this.gfxOffY < 0.0)
|
|
{
|
|
this.gfxOffY += num4 * this.stepSpeed;
|
|
if ((double) this.gfxOffY > 0.0)
|
|
this.gfxOffY = 0.0f;
|
|
}
|
|
if ((double) this.gfxOffY > 16.0)
|
|
this.gfxOffY = 16f;
|
|
if ((double) this.gfxOffY < -16.0)
|
|
this.gfxOffY = -16f;
|
|
this.TryPortalJumping();
|
|
this.IdleSounds();
|
|
this.AI();
|
|
if (Main.netMode != 2 && this.extraValue > 0)
|
|
{
|
|
int Type = 244;
|
|
float num5 = 30f;
|
|
if (this.extraValue >= 1000000)
|
|
{
|
|
Type = 247;
|
|
num5 *= 0.25f;
|
|
}
|
|
else if (this.extraValue >= 10000)
|
|
{
|
|
Type = 246;
|
|
num5 *= 0.5f;
|
|
}
|
|
else if (this.extraValue >= 100)
|
|
{
|
|
Type = 245;
|
|
num5 *= 0.75f;
|
|
}
|
|
if (Main.rand.Next((int) num5) == 0)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
int index = Dust.NewDust(this.position, this.width, this.height, Type, Alpha: 254, Scale: 0.25f);
|
|
Main.dust[index].velocity *= 0.1f;
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
}
|
|
for (int index = 0; index < 256; ++index)
|
|
{
|
|
if (this.immune[index] > 0)
|
|
--this.immune[index];
|
|
}
|
|
if (!this.noGravity && !this.noTileCollide)
|
|
{
|
|
int x = (int) ((double) this.position.X + (double) (this.width / 2)) / 16;
|
|
int y = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16;
|
|
if (WorldGen.InWorld(x, y) && Main.tile[x, y] == null)
|
|
{
|
|
NPC.gravity = 0.0f;
|
|
this.velocity.X = 0.0f;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
}
|
|
if (!this.noGravity)
|
|
{
|
|
this.velocity.Y += NPC.gravity;
|
|
if ((double) this.velocity.Y > (double) maxFallSpeed)
|
|
this.velocity.Y = maxFallSpeed;
|
|
}
|
|
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 || NPCID.Sets.TakesDamageFromHostilesWithoutBeingFriendly[this.type]))
|
|
{
|
|
if (this.townNPC)
|
|
this.CheckDrowning();
|
|
this.CheckLifeRegen();
|
|
this.GetHurtByOtherNPCs(NPCID.Sets.AllNPCs);
|
|
}
|
|
if (Main.netMode != 1 && (NPC.npcsFoundForCheckActive[210] || NPC.npcsFoundForCheckActive[211]) && !NPCID.Sets.HurtingBees[this.type])
|
|
this.GetHurtByOtherNPCs(NPCID.Sets.HurtingBees);
|
|
if (!this.noTileCollide)
|
|
{
|
|
this.UpdateCollision();
|
|
}
|
|
else
|
|
{
|
|
this.oldPosition = this.position;
|
|
this.oldDirection = this.direction;
|
|
this.position = this.position + this.velocity;
|
|
if (this.onFire && this.boss && Main.netMode != 1 && Collision.WetCollision(this.position, this.width, this.height))
|
|
{
|
|
for (int buffIndex = 0; buffIndex < 5; ++buffIndex)
|
|
{
|
|
if (this.buffType[buffIndex] == 24)
|
|
this.DelBuff(buffIndex);
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode != 1 && !this.noTileCollide && this.lifeMax > 1 && Collision.SwitchTiles(this.position, this.width, this.height, this.oldPosition, 2) && (this.type == 46 || this.type == 148 || this.type == 149 || this.type == 303 || this.type == 361 || this.type == 362 || this.type == 364 || this.type == 366 || this.type == 367 || this.type >= 442 && this.type <= 448 || this.type == 602 || this.type == 608 || this.type == 614))
|
|
{
|
|
this.ai[0] = 1f;
|
|
this.ai[1] = 400f;
|
|
this.ai[2] = 0.0f;
|
|
}
|
|
this.FindFrame();
|
|
this.UpdateNPC_UpdateTrails();
|
|
this.UpdateNetworkCode(i);
|
|
this.CheckActive();
|
|
this.netUpdate = false;
|
|
this.justHit = false;
|
|
}
|
|
}
|
|
|
|
private void TrySyncingUniqueTownNPCData(int npcIndex)
|
|
{
|
|
if (Main.netMode != 1 || !this.needsUniqueInfoUpdate || !this.townNPC && this.type != 453 || this.type == 37)
|
|
return;
|
|
this.needsUniqueInfoUpdate = false;
|
|
NetMessage.SendData(56, number: npcIndex);
|
|
}
|
|
|
|
private void UpdateNetworkCode(int i)
|
|
{
|
|
if (!this.active)
|
|
this.netUpdate = true;
|
|
if (Main.netMode != 2)
|
|
return;
|
|
if (Main.npcStreamSpeed > 0 && !this.townNPC && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > 1.0)
|
|
{
|
|
++this.netStream;
|
|
if ((int) this.netStream > Main.npcStreamSpeed)
|
|
{
|
|
for (int remoteClient = 0; remoteClient < (int) byte.MaxValue; ++remoteClient)
|
|
{
|
|
if (Main.player[remoteClient].active)
|
|
{
|
|
this.netStream = (byte) 0;
|
|
float num = Math.Abs(this.Center.X - Main.player[remoteClient].Center.X) + Math.Abs(this.Center.Y - Main.player[remoteClient].Center.Y);
|
|
if ((double) num < 250.0)
|
|
this.streamPlayer[remoteClient] -= (byte) 8;
|
|
else if ((double) num < 500.0)
|
|
this.streamPlayer[remoteClient] -= (byte) 4;
|
|
else if ((double) num < 1000.0)
|
|
this.streamPlayer[remoteClient] -= (byte) 2;
|
|
else if ((double) num < 1500.0)
|
|
--this.streamPlayer[remoteClient];
|
|
if (this.streamPlayer[remoteClient] <= (byte) 0)
|
|
{
|
|
this.streamPlayer[remoteClient] = (byte) 8;
|
|
NetMessage.SendData(23, remoteClient, number: i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.townNPC)
|
|
this.netSpam = 0;
|
|
if (this.netUpdate2)
|
|
this.netUpdate = true;
|
|
if (!this.active)
|
|
this.netSpam = 0;
|
|
if (this.netUpdate)
|
|
{
|
|
if (this.boss)
|
|
{
|
|
Vector2 vector2 = this.oldPosition - this.position;
|
|
if (this.netSpam <= 15)
|
|
{
|
|
this.netSpam += 5;
|
|
NetMessage.SendData(23, number: i);
|
|
this.netUpdate2 = false;
|
|
}
|
|
else
|
|
this.netUpdate2 = true;
|
|
}
|
|
else if (this.netSpam <= 90)
|
|
{
|
|
this.netSpam += 30;
|
|
NetMessage.SendData(23, number: i);
|
|
this.netUpdate2 = false;
|
|
}
|
|
else
|
|
this.netUpdate2 = true;
|
|
}
|
|
if (this.netSpam > 0)
|
|
--this.netSpam;
|
|
if (!this.active || !this.townNPC || NPC.TypeToDefaultHeadIndex(this.type) <= 0)
|
|
return;
|
|
if (this.homeless != this.oldHomeless || this.homeTileX != this.oldHomeTileX || this.homeTileY != this.oldHomeTileY)
|
|
{
|
|
byte householdStatus = WorldGen.TownManager.GetHouseholdStatus(this);
|
|
NetMessage.SendData(60, number: i, number2: ((float) Main.npc[i].homeTileX), number3: ((float) Main.npc[i].homeTileY), number4: ((float) householdStatus));
|
|
}
|
|
this.oldHomeless = this.homeless;
|
|
this.oldHomeTileX = this.homeTileX;
|
|
this.oldHomeTileY = this.homeTileY;
|
|
}
|
|
|
|
private void UpdateNPC_UpdateTrails()
|
|
{
|
|
int num = NPCID.Sets.TrailingMode[this.type];
|
|
if (num == 0)
|
|
{
|
|
if ((double) this.localAI[3] <= 0.0)
|
|
{
|
|
this.localAI[3] = 2f;
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldPos[0] = this.position + this.netOffset;
|
|
}
|
|
--this.localAI[3];
|
|
}
|
|
if (num == 1)
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldPos[0] = this.position + this.netOffset;
|
|
}
|
|
if (num == 2)
|
|
{
|
|
if ((int) this.ai[0] == 4 || (double) this.ai[0] == 5.0 || (double) this.ai[0] == 6.0)
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
{
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldRot[index] = this.oldRot[index - 1];
|
|
}
|
|
this.oldPos[0] = this.position + this.netOffset;
|
|
this.oldRot[0] = this.rotation;
|
|
}
|
|
else
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index >= 0; --index)
|
|
{
|
|
this.oldPos[index] = this.position + this.netOffset;
|
|
this.oldRot[index] = this.rotation;
|
|
}
|
|
}
|
|
}
|
|
if (num == 3)
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
{
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldRot[index] = this.oldRot[index - 1];
|
|
}
|
|
this.oldPos[0] = this.position + this.netOffset;
|
|
this.oldRot[0] = this.rotation;
|
|
}
|
|
if (num == 4)
|
|
{
|
|
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 + this.netOffset;
|
|
}
|
|
else if (num == 5)
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldPos[0] = this.position + this.netOffset;
|
|
}
|
|
else if (num == 6)
|
|
{
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldPos[0] = this.position + this.netOffset;
|
|
}
|
|
else
|
|
{
|
|
if (num != 7)
|
|
return;
|
|
for (int index = this.oldPos.Length - 1; index > 0; --index)
|
|
{
|
|
this.oldPos[index] = this.oldPos[index - 1];
|
|
this.oldRot[index] = this.oldRot[index - 1];
|
|
}
|
|
this.oldPos[0] = this.position + this.netOffset;
|
|
this.oldRot[0] = this.rotation;
|
|
}
|
|
}
|
|
|
|
private void UpdateNPC_UpdateGravity(out float maxFallSpeed)
|
|
{
|
|
maxFallSpeed = 10f;
|
|
NPC.gravity = 0.3f;
|
|
if (this.type == 258)
|
|
{
|
|
NPC.gravity = 0.1f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
else if (this.type == 425 && (double) this.ai[2] == 1.0)
|
|
{
|
|
NPC.gravity = 0.1f;
|
|
if ((double) this.velocity.Y > 2.0)
|
|
this.velocity.Y = 2f;
|
|
}
|
|
else if ((this.type == 576 || this.type == 577) && (double) this.ai[0] > 0.0 && (double) this.ai[1] == 2.0)
|
|
{
|
|
NPC.gravity = 0.45f;
|
|
if ((double) this.velocity.Y > 32.0)
|
|
this.velocity.Y = 32f;
|
|
}
|
|
else if (this.type == 427 && (double) this.ai[2] == 1.0)
|
|
{
|
|
NPC.gravity = 0.1f;
|
|
if ((double) this.velocity.Y > 4.0)
|
|
this.velocity.Y = 4f;
|
|
}
|
|
else if (this.type == 426)
|
|
{
|
|
NPC.gravity = 0.1f;
|
|
if ((double) this.velocity.Y > 3.0)
|
|
this.velocity.Y = 3f;
|
|
}
|
|
else if (this.type == 541)
|
|
NPC.gravity = 0.0f;
|
|
float num1 = (float) (Main.maxTilesX / 4200);
|
|
float num2 = (float) (((double) this.position.Y / 16.0 - (60.0 + 10.0 * (double) (num1 * num1))) / (Main.worldSurface / 6.0));
|
|
if ((double) num2 < 0.25)
|
|
num2 = 0.25f;
|
|
if ((double) num2 > 1.0)
|
|
num2 = 1f;
|
|
NPC.gravity *= num2;
|
|
if (!this.wet)
|
|
return;
|
|
if (this.honeyWet)
|
|
{
|
|
NPC.gravity = 0.1f;
|
|
maxFallSpeed = 4f;
|
|
}
|
|
else
|
|
{
|
|
NPC.gravity = 0.2f;
|
|
maxFallSpeed = 7f;
|
|
}
|
|
}
|
|
|
|
private void UpdateNPC_SoulDrainDebuff()
|
|
{
|
|
if (!this.soulDrain)
|
|
return;
|
|
int num = 1100;
|
|
for (int index1 = 0; index1 < (int) byte.MaxValue; ++index1)
|
|
{
|
|
if (Main.player[index1].active && !Main.player[index1].dead && (double) (this.Center - Main.player[index1].position).Length() < (double) num && Main.player[index1].inventory[Main.player[index1].selectedItem].type == 3006 && Main.player[index1].itemAnimation > 0)
|
|
{
|
|
if (index1 == Main.myPlayer)
|
|
++Main.player[index1].soulDrain;
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
Vector2 center = this.Center;
|
|
center.X += (float) Main.rand.Next(-100, 100) * 0.05f;
|
|
center.Y += (float) Main.rand.Next(-100, 100) * 0.05f;
|
|
int index2 = Dust.NewDust(center + this.velocity, 1, 1, 235);
|
|
Main.dust[index2].velocity *= 0.0f;
|
|
Main.dust[index2].scale = (float) Main.rand.Next(70, 85) * 0.01f;
|
|
Main.dust[index2].fadeIn = (float) (index1 + 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static Color buffColor(Color newColor, float R, float G, float B, float A)
|
|
{
|
|
newColor.R = (byte) ((double) newColor.R * (double) R);
|
|
newColor.G = (byte) ((double) newColor.G * (double) G);
|
|
newColor.B = (byte) ((double) newColor.B * (double) B);
|
|
newColor.A = (byte) ((double) newColor.A * (double) A);
|
|
return newColor;
|
|
}
|
|
|
|
public Color GetNPCColorTintedByBuffs(Color npcColor)
|
|
{
|
|
float R = 1f;
|
|
float G1 = 1f;
|
|
float B1 = 1f;
|
|
float A = 1f;
|
|
if (this.poisoned)
|
|
{
|
|
R *= 0.65f;
|
|
B1 *= 0.75f;
|
|
npcColor = NPC.buffColor(npcColor, R, G1, B1, A);
|
|
}
|
|
if (this.venom)
|
|
{
|
|
G1 *= 0.45f;
|
|
R *= 0.75f;
|
|
npcColor = NPC.buffColor(npcColor, R, G1, B1, A);
|
|
}
|
|
if (this.midas)
|
|
{
|
|
B1 *= 0.3f;
|
|
R *= 0.85f;
|
|
npcColor = NPC.buffColor(npcColor, R, G1, B1, A);
|
|
}
|
|
if (this.betsysCurse)
|
|
{
|
|
R *= 0.8f;
|
|
G1 *= 0.6f;
|
|
npcColor = NPC.buffColor(npcColor, R, G1, B1, A);
|
|
}
|
|
if (this.oiled)
|
|
{
|
|
R *= 0.7f;
|
|
G1 *= 0.7f;
|
|
B1 *= 0.7f;
|
|
npcColor = NPC.buffColor(npcColor, R, G1, B1, A);
|
|
}
|
|
if (this.stinky)
|
|
{
|
|
R *= 0.7f;
|
|
B1 *= 0.55f;
|
|
npcColor = NPC.buffColor(npcColor, R, G1, B1, A);
|
|
}
|
|
if (this.drippingSlime)
|
|
{
|
|
R *= 0.8f;
|
|
G1 *= 0.8f;
|
|
npcColor = NPC.buffColor(npcColor, R, G1, B1, A);
|
|
}
|
|
if (this.drippingSparkleSlime)
|
|
{
|
|
float B2 = B1 * 0.85f;
|
|
float G2 = G1 * 0.75f;
|
|
npcColor = NPC.buffColor(npcColor, R, G2, B2, A);
|
|
}
|
|
if (this.ichor)
|
|
npcColor = new Color((int) byte.MaxValue, (int) byte.MaxValue, 0, (int) byte.MaxValue);
|
|
if (Main.player[Main.myPlayer].detectCreature && this.lifeMax > 1)
|
|
{
|
|
byte num1;
|
|
byte num2;
|
|
byte num3;
|
|
if (this.friendly || this.catchItem > (short) 0 || this.damage == 0 && this.lifeMax == 5)
|
|
{
|
|
num1 = (byte) 50;
|
|
num2 = byte.MaxValue;
|
|
num3 = (byte) 50;
|
|
}
|
|
else
|
|
{
|
|
num1 = byte.MaxValue;
|
|
num2 = (byte) 50;
|
|
num3 = (byte) 50;
|
|
}
|
|
if ((int) npcColor.R < (int) num1)
|
|
npcColor.R = num1;
|
|
if ((int) npcColor.G < (int) num2)
|
|
npcColor.G = num2;
|
|
if ((int) npcColor.B < (int) num3)
|
|
npcColor.B = num3;
|
|
}
|
|
return npcColor;
|
|
}
|
|
|
|
private void UpdateNPC_BuffApplyVFX()
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
if (this.markedByScytheWhip && Main.rand.Next(3) == 0)
|
|
ParticleOrchestrator.RequestParticleSpawn(true, ParticleOrchestraType.BlackLightningSmall, new ParticleOrchestraSettings()
|
|
{
|
|
MovementVector = Main.rand.NextVector2Circular(1f, 1f),
|
|
PositionInWorld = Main.rand.NextVector2FromRectangle(this.Hitbox)
|
|
});
|
|
if (this.poisoned && Main.rand.Next(30) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 46, Alpha: 120, Scale: 0.2f);
|
|
dust.noGravity = true;
|
|
dust.fadeIn = 1.9f;
|
|
}
|
|
if (this.venom && Main.rand.Next(10) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 171, Alpha: 100, Scale: 0.5f);
|
|
dust.noGravity = true;
|
|
dust.fadeIn = 1.5f;
|
|
}
|
|
if (this.shadowFlame && Main.rand.Next(5) < 4)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, this.position.Y - 2f), this.width + 4, this.height + 4, 27, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 180, Scale: 1.95f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= 0.75f;
|
|
dust.velocity.X *= 0.75f;
|
|
--dust.velocity.Y;
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
dust.noGravity = false;
|
|
dust.scale *= 0.5f;
|
|
}
|
|
}
|
|
if (this.onFire)
|
|
{
|
|
if (Main.rand.Next(4) < 3)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, this.position.Y - 2f), this.width + 4, this.height + 4, 6, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 3.5f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= 1.8f;
|
|
dust.velocity.Y -= 0.5f;
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
dust.noGravity = false;
|
|
dust.scale *= 0.5f;
|
|
}
|
|
}
|
|
Lighting.AddLight((int) ((double) this.position.X / 16.0), (int) ((double) this.position.Y / 16.0 + 1.0), 1f, 0.3f, 0.1f);
|
|
}
|
|
if (this.daybreak)
|
|
{
|
|
if (Main.rand.Next(4) < 3)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, this.position.Y - 2f), this.width + 4, this.height + 4, 158, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 3.5f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= 2.8f;
|
|
dust.velocity.Y -= 0.5f;
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
dust.noGravity = false;
|
|
dust.scale *= 0.5f;
|
|
}
|
|
}
|
|
Lighting.AddLight((int) ((double) this.position.X / 16.0), (int) ((double) this.position.Y / 16.0 + 1.0), 1f, 0.3f, 0.1f);
|
|
}
|
|
if (this.betsysCurse)
|
|
{
|
|
if (Main.rand.Next(4) < 3)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, this.position.Y - 2f), this.width + 4, this.height + 4, 55, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 3.5f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= 2.8f;
|
|
dust.velocity.Y -= 1.5f;
|
|
dust.noGravity = false;
|
|
dust.scale = 0.9f;
|
|
dust.color = new Color(0, 0, 180, (int) byte.MaxValue);
|
|
dust.velocity *= 0.2f;
|
|
}
|
|
Lighting.AddLight((int) ((double) this.position.X / 16.0), (int) ((double) this.position.Y / 16.0 + 1.0), 0.6f, 0.1f, 0.9f);
|
|
}
|
|
if (this.oiled && Main.rand.Next(3) != 0)
|
|
{
|
|
int Alpha = 175;
|
|
Color newColor = new Color(0, 0, 0, 140);
|
|
Vector2 position = this.position;
|
|
position.X -= 2f;
|
|
position.Y -= 2f;
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(position, this.width + 4, this.height + 2, 4, Alpha: Alpha, newColor: newColor, Scale: 1.4f);
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
dust.noLight = true;
|
|
dust.velocity *= 0.2f;
|
|
dust.velocity.Y += 0.2f;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
if (this.dryadWard && (double) this.velocity.X != 0.0 && Main.rand.Next(4) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, (float) ((double) this.position.Y + (double) this.height - 2.0)), this.width + 4, 4, 163, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 1.5f);
|
|
dust.noGravity = true;
|
|
dust.noLight = true;
|
|
dust.velocity *= 0.0f;
|
|
}
|
|
if (this.dryadBane && Main.rand.Next(4) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, this.position.Y), this.width + 4, this.height, 163, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 1.5f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= new Vector2((float) ((double) Main.rand.NextFloat() * 4.0 - 2.0), 0.0f);
|
|
dust.noLight = true;
|
|
}
|
|
if (this.loveStruck && Main.rand.Next(5) == 0)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) Main.rand.Next(-10, 11), (float) Main.rand.Next(-10, 11));
|
|
vector2.Normalize();
|
|
vector2.X *= 0.66f;
|
|
int index = Gore.NewGore(this.position + new Vector2((float) Main.rand.Next(this.width + 1), (float) Main.rand.Next(this.height + 1)), vector2 * (float) Main.rand.Next(3, 6) * 0.33f, 331, (float) Main.rand.Next(40, 121) * 0.01f);
|
|
Main.gore[index].sticky = false;
|
|
Main.gore[index].velocity *= 0.4f;
|
|
Main.gore[index].velocity.Y -= 0.6f;
|
|
}
|
|
if (this.stinky && Main.rand.Next(5) == 0)
|
|
{
|
|
Vector2 vector2_1 = new Vector2((float) Main.rand.Next(-10, 11), (float) Main.rand.Next(-10, 11));
|
|
vector2_1.Normalize();
|
|
vector2_1.X *= 0.66f;
|
|
vector2_1.Y = Math.Abs(vector2_1.Y);
|
|
Vector2 vector2_2 = vector2_1 * (float) Main.rand.Next(3, 5) * 0.25f;
|
|
Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 188, vector2_2.X, vector2_2.Y * 0.5f, 100, Scale: 1.5f);
|
|
dust.velocity *= 0.1f;
|
|
dust.velocity.Y -= 0.5f;
|
|
}
|
|
if (this.dripping && Main.rand.Next(4) != 0)
|
|
{
|
|
Vector2 position = this.position;
|
|
position.X -= 2f;
|
|
position.Y -= 2f;
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(position, this.width + 4, this.height + 2, 211, Alpha: 50, Scale: 0.8f);
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
dust.noLight = true;
|
|
dust.velocity *= 0.2f;
|
|
dust.velocity.Y += 0.2f;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
else
|
|
{
|
|
Dust dust = Dust.NewDustDirect(position, this.width + 8, this.height + 8, 211, Alpha: 50, Scale: 1.1f);
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
dust.noLight = true;
|
|
dust.noGravity = true;
|
|
dust.velocity *= 0.2f;
|
|
++dust.velocity.Y;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
if (this.drippingSlime && Main.rand.Next(4) != 0)
|
|
{
|
|
int Alpha = 175;
|
|
Color newColor = new Color(0, 80, (int) byte.MaxValue, 100);
|
|
Vector2 position = this.position;
|
|
position.X -= 2f;
|
|
position.Y -= 2f;
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(position, this.width + 4, this.height + 2, 4, Alpha: Alpha, newColor: newColor, Scale: 1.4f);
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
dust.noLight = true;
|
|
dust.velocity *= 0.2f;
|
|
dust.velocity.Y += 0.2f;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
if (this.drippingSparkleSlime && Main.rand.Next(4) != 0)
|
|
{
|
|
int Alpha = 150;
|
|
Vector2 position = this.position;
|
|
position.X -= 2f;
|
|
position.Y -= 2f;
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(position, this.width + 4, this.height + 2, 243, Alpha: Alpha);
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
if (Main.rand.Next(2) == 0)
|
|
dust.alpha += 25;
|
|
dust.noLight = true;
|
|
dust.velocity *= 0.2f;
|
|
dust.velocity.Y += 0.2f;
|
|
dust.velocity += this.velocity;
|
|
}
|
|
}
|
|
if (this.onFrostBurn)
|
|
{
|
|
if (Main.rand.Next(4) < 3)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, this.position.Y - 2f), this.width + 4, this.height + 4, 135, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 3.5f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= 1.8f;
|
|
dust.velocity.Y -= 0.5f;
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
dust.noGravity = false;
|
|
dust.scale *= 0.5f;
|
|
}
|
|
}
|
|
Lighting.AddLight((int) ((double) this.position.X / 16.0), (int) ((double) this.position.Y / 16.0 + 1.0), 0.1f, 0.6f, 1f);
|
|
}
|
|
if (this.onFire2)
|
|
{
|
|
if (Main.rand.Next(4) < 3)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(new Vector2(this.position.X - 2f, this.position.Y - 2f), this.width + 4, this.height + 4, 75, this.velocity.X * 0.4f, this.velocity.Y * 0.4f, 100, Scale: 3.5f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= 1.8f;
|
|
dust.velocity.Y -= 0.5f;
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
dust.noGravity = false;
|
|
dust.scale *= 0.5f;
|
|
}
|
|
}
|
|
Lighting.AddLight((int) ((double) this.position.X / 16.0), (int) ((double) this.position.Y / 16.0 + 1.0), 1f, 0.3f, 0.1f);
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
|
|
private void UpdateNPC_BuffApplyDOTs()
|
|
{
|
|
if (this.dontTakeDamage)
|
|
return;
|
|
int amount = this.lifeRegenExpectedLossPerSecond;
|
|
if (this.poisoned)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
this.lifeRegen -= 4;
|
|
}
|
|
if (this.onFire)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
this.lifeRegen -= 8;
|
|
}
|
|
if (this.onFrostBurn)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
this.lifeRegen -= 16;
|
|
if (amount < 2)
|
|
amount = 2;
|
|
}
|
|
if (this.onFire2)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
this.lifeRegen -= 24;
|
|
if (amount < 4)
|
|
amount = 4;
|
|
}
|
|
if (this.venom)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
this.lifeRegen -= 30;
|
|
if (amount < 5)
|
|
amount = 5;
|
|
}
|
|
if (this.shadowFlame)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
this.lifeRegen -= 30;
|
|
if (amount < 5)
|
|
amount = 5;
|
|
}
|
|
if (this.oiled)
|
|
{
|
|
int num1 = (this.onFire ? 2 : 0) + (this.onFrostBurn ? 4 : 0) + (this.onFire2 ? 3 : 0) + (this.shadowFlame ? 8 : 0);
|
|
if (num1 > 0)
|
|
{
|
|
int num2 = num1 * 4 + 12;
|
|
this.lifeRegen -= num2;
|
|
int num3 = num2 / 6;
|
|
if (amount < num3)
|
|
amount = num3;
|
|
}
|
|
}
|
|
if (this.javelined)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
int num4 = 0;
|
|
int num5 = 1;
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
if (Main.projectile[index].active && Main.projectile[index].type == 598 && (double) Main.projectile[index].ai[0] == 1.0 && (double) Main.projectile[index].ai[1] == (double) this.whoAmI)
|
|
++num4;
|
|
}
|
|
this.lifeRegen -= num4 * 2 * 3;
|
|
if (amount < num4 * 3 / num5)
|
|
amount = num4 * 3 / num5;
|
|
}
|
|
if (this.daybreak)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
int num6 = 0;
|
|
int num7 = 4;
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
if (Main.projectile[index].active && Main.projectile[index].type == 636 && (double) Main.projectile[index].ai[0] == 1.0 && (double) Main.projectile[index].ai[1] == (double) this.whoAmI)
|
|
++num6;
|
|
}
|
|
if (num6 == 0)
|
|
num6 = 1;
|
|
this.lifeRegen -= num6 * 2 * 100;
|
|
if (amount < num6 * 100 / num7)
|
|
amount = num6 * 100 / num7;
|
|
}
|
|
if (this.celled)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
int num = 0;
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
if (Main.projectile[index].active && Main.projectile[index].type == 614 && (double) Main.projectile[index].ai[0] == 1.0 && (double) Main.projectile[index].ai[1] == (double) this.whoAmI)
|
|
++num;
|
|
}
|
|
this.lifeRegen -= num * 2 * 20;
|
|
if (amount < num * 20)
|
|
amount = num * 20 / 2;
|
|
}
|
|
if (this.dryadBane)
|
|
{
|
|
int num8 = 4;
|
|
float num9 = 1f;
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
if (NPC.downedBoss1)
|
|
num9 += 0.1f;
|
|
if (NPC.downedBoss2)
|
|
num9 += 0.1f;
|
|
if (NPC.downedBoss3)
|
|
num9 += 0.1f;
|
|
if (NPC.downedQueenBee)
|
|
num9 += 0.1f;
|
|
if (Main.hardMode)
|
|
num9 += 0.4f;
|
|
if (NPC.downedMechBoss1)
|
|
num9 += 0.15f;
|
|
if (NPC.downedMechBoss2)
|
|
num9 += 0.15f;
|
|
if (NPC.downedMechBoss3)
|
|
num9 += 0.15f;
|
|
if (NPC.downedPlantBoss)
|
|
num9 += 0.15f;
|
|
if (NPC.downedGolemBoss)
|
|
num9 += 0.15f;
|
|
if (NPC.downedAncientCultist)
|
|
num9 += 0.15f;
|
|
if (Main.expertMode)
|
|
num9 *= Main.GameModeInfo.TownNPCDamageMultiplier;
|
|
int num10 = (int) ((double) num8 * (double) num9);
|
|
this.lifeRegen -= 2 * num10;
|
|
if (amount < num10)
|
|
amount = num10 / 3;
|
|
}
|
|
if (this.soulDrain && this.realLife == -1)
|
|
{
|
|
if (this.lifeRegen > 0)
|
|
this.lifeRegen = 0;
|
|
this.lifeRegen -= 50;
|
|
if (amount < 5)
|
|
amount = 5;
|
|
}
|
|
if (this.lifeRegen <= -240 && amount < 2)
|
|
amount = 2;
|
|
this.lifeRegenCount += this.lifeRegen;
|
|
while (this.lifeRegenCount >= 120)
|
|
{
|
|
this.lifeRegenCount -= 120;
|
|
if (!this.immortal)
|
|
{
|
|
if (this.life < this.lifeMax)
|
|
++this.life;
|
|
if (this.life > this.lifeMax)
|
|
this.life = this.lifeMax;
|
|
}
|
|
}
|
|
if (amount > 0)
|
|
{
|
|
while (this.lifeRegenCount <= -120 * amount)
|
|
{
|
|
this.lifeRegenCount += 120 * amount;
|
|
int number = this.whoAmI;
|
|
if (this.realLife >= 0)
|
|
number = this.realLife;
|
|
if (!Main.npc[number].immortal)
|
|
Main.npc[number].life -= amount;
|
|
CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), CombatText.LifeRegenNegative, amount, dot: true);
|
|
if (Main.npc[number].life <= 0 && !Main.npc[number].immortal)
|
|
{
|
|
Main.npc[number].life = 1;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Main.npc[number].StrikeNPCNoInteraction(9999, 0.0f, 0);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(28, number: number, number2: 9999f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
while (this.lifeRegenCount <= -120)
|
|
{
|
|
this.lifeRegenCount += 120;
|
|
int number = this.whoAmI;
|
|
if (this.realLife >= 0)
|
|
number = this.realLife;
|
|
if (!Main.npc[number].immortal)
|
|
--Main.npc[number].life;
|
|
CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), CombatText.LifeRegenNegative, 1, dot: true);
|
|
if (Main.npc[number].life <= 0 && !Main.npc[number].immortal)
|
|
{
|
|
Main.npc[number].life = 1;
|
|
if (Main.netMode != 1)
|
|
{
|
|
Main.npc[number].StrikeNPCNoInteraction(9999, 0.0f, 0);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(28, number: number, number2: 9999f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void UpdateNPC_BuffClearExpiredBuffs()
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
for (int buffIndex = 0; buffIndex < 5; ++buffIndex)
|
|
{
|
|
if (this.buffType[buffIndex] > 0 && this.buffTime[buffIndex] <= 0)
|
|
{
|
|
this.DelBuff(buffIndex);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(54, number: this.whoAmI);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void UpdateNPC_BloodMoonTransformations()
|
|
{
|
|
if (Main.netMode == 1 || !Main.bloodMoon)
|
|
return;
|
|
bool flag = false;
|
|
if ((double) this.value == 0.0)
|
|
flag = true;
|
|
if (this.type == 46 || this.type == 303 || this.type == 337 || this.type == 443 || this.type == 540)
|
|
{
|
|
if (WorldGen.crimson)
|
|
this.Transform(464);
|
|
else
|
|
this.Transform(47);
|
|
}
|
|
else if (this.type == 55 || this.type == 230 || this.type == 592 || this.type == 593)
|
|
{
|
|
if (WorldGen.crimson)
|
|
this.Transform(465);
|
|
else
|
|
this.Transform(57);
|
|
}
|
|
else if (this.type == 148 || this.type == 149)
|
|
{
|
|
if (WorldGen.crimson)
|
|
this.Transform(470);
|
|
else
|
|
this.Transform(168);
|
|
}
|
|
if (!flag)
|
|
return;
|
|
this.value = 0.0f;
|
|
}
|
|
|
|
public void UpdateNPC_BuffSetFlags(bool lowerBuffTime = true)
|
|
{
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
if (this.buffType[index] > 0 && this.buffTime[index] > 0)
|
|
{
|
|
if (lowerBuffTime)
|
|
--this.buffTime[index];
|
|
if (this.buffType[index] == 20)
|
|
this.poisoned = true;
|
|
if (this.buffType[index] == 70)
|
|
this.venom = true;
|
|
if (this.buffType[index] == 24)
|
|
this.onFire = true;
|
|
if (this.buffType[index] == 72)
|
|
this.midas = true;
|
|
if (this.buffType[index] == 69)
|
|
this.ichor = true;
|
|
if (this.buffType[index] == 31)
|
|
this.confused = true;
|
|
if (this.buffType[index] == 39)
|
|
this.onFire2 = true;
|
|
if (this.buffType[index] == 44)
|
|
this.onFrostBurn = true;
|
|
if (this.buffType[index] == 103)
|
|
this.dripping = true;
|
|
if (this.buffType[index] == 137)
|
|
this.drippingSlime = true;
|
|
if (this.buffType[index] == 320)
|
|
this.drippingSparkleSlime = true;
|
|
if (this.buffType[index] == 119)
|
|
this.loveStruck = true;
|
|
if (this.buffType[index] == 120)
|
|
this.stinky = true;
|
|
if (this.buffType[index] == 151)
|
|
this.soulDrain = true;
|
|
if (this.buffType[index] == 153)
|
|
this.shadowFlame = true;
|
|
if (this.buffType[index] == 165)
|
|
this.dryadWard = true;
|
|
if (this.buffType[index] == 169)
|
|
this.javelined = true;
|
|
if (this.buffType[index] == 183)
|
|
this.celled = true;
|
|
if (this.buffType[index] == 186)
|
|
this.dryadBane = true;
|
|
if (this.buffType[index] == 189)
|
|
this.daybreak = true;
|
|
if (this.buffType[index] == 203)
|
|
this.betsysCurse = true;
|
|
if (this.buffType[index] == 204)
|
|
this.oiled = true;
|
|
if (this.buffType[index] == 310)
|
|
this.markedByScytheWhip = true;
|
|
if (this.buffType[index] == 313)
|
|
this.markedByFireWhip = true;
|
|
if (this.buffType[index] == 309)
|
|
this.markedBySwordWhip = true;
|
|
if (this.buffType[index] == 315)
|
|
this.markedByThornWhip = true;
|
|
if (this.buffType[index] == 307)
|
|
this.markedByBlandWhip = true;
|
|
if (this.buffType[index] == 319)
|
|
this.markedByMaceWhip = true;
|
|
if (this.buffType[index] == 316)
|
|
this.markedByRainbowWhip = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void UpdateNPC_BuffFlagsReset()
|
|
{
|
|
this.lifeRegen = 0;
|
|
this.soulDrain = false;
|
|
this.poisoned = false;
|
|
this.venom = false;
|
|
this.shadowFlame = false;
|
|
this.onFire = false;
|
|
this.midas = false;
|
|
this.ichor = false;
|
|
this.onFrostBurn = false;
|
|
this.onFire2 = false;
|
|
this.confused = false;
|
|
this.loveStruck = false;
|
|
this.dryadWard = false;
|
|
this.stinky = false;
|
|
this.dripping = false;
|
|
this.drippingSlime = false;
|
|
this.drippingSparkleSlime = false;
|
|
this.daybreak = false;
|
|
this.javelined = false;
|
|
this.celled = false;
|
|
this.dryadBane = false;
|
|
this.betsysCurse = false;
|
|
this.oiled = false;
|
|
this.markedByScytheWhip = false;
|
|
this.markedByThornWhip = false;
|
|
this.markedByFireWhip = false;
|
|
this.markedByRainbowWhip = false;
|
|
this.markedByBlandWhip = false;
|
|
this.markedBySwordWhip = false;
|
|
this.markedByMaceWhip = false;
|
|
this.lifeRegenExpectedLossPerSecond = -1;
|
|
}
|
|
|
|
private void UpdateNPC_TeleportVisuals()
|
|
{
|
|
if ((double) this.teleportTime <= 0.0)
|
|
return;
|
|
if (this.teleportStyle == 0)
|
|
{
|
|
if ((double) Main.rand.Next(100) <= 100.0 * (double) this.teleportTime * 2.0)
|
|
{
|
|
int index = Dust.NewDust(new Vector2((float) this.getRect().X, (float) this.getRect().Y), this.getRect().Width, this.getRect().Height, 159);
|
|
Main.dust[index].scale = this.teleportTime * 1.5f;
|
|
Main.dust[index].noGravity = true;
|
|
Main.dust[index].velocity *= 1.1f;
|
|
}
|
|
}
|
|
else if (this.teleportStyle == 4)
|
|
{
|
|
this.teleportTime -= 0.02f;
|
|
if ((double) Main.rand.Next(100) <= 100.0 * (double) this.teleportTime)
|
|
{
|
|
Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, 263)];
|
|
dust.color = PortalHelper.GetPortalColor(this.lastPortalColorIndex);
|
|
dust.noLight = true;
|
|
dust.noGravity = true;
|
|
dust.scale = 1.2f;
|
|
dust.fadeIn = 0.4f;
|
|
}
|
|
}
|
|
this.teleportTime -= 0.005f;
|
|
}
|
|
|
|
private void UpdateNPC_CritterSounds()
|
|
{
|
|
if (Main.netMode == 2)
|
|
return;
|
|
if (this.type == 611 && !Main.dayTime && Main.rand.Next(700) == 0)
|
|
SoundEngine.PlaySound(46, (int) this.position.X, (int) this.position.Y);
|
|
if (this.type >= 602 && this.type <= 603 && Main.dayTime && Main.rand.Next(1200) == 0)
|
|
SoundEngine.PlaySound(44, (int) this.position.X, (int) this.position.Y);
|
|
if (this.type >= 362 && this.type <= 365)
|
|
{
|
|
if (!Main.dayTime || Main.rand.Next(200) != 0)
|
|
return;
|
|
SoundEngine.PlaySound(30, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else if (this.type == 361 || this.type == 445)
|
|
{
|
|
if ((double) Math.Abs(this.velocity.X) >= 0.5 || Main.dayTime && (double) this.position.Y <= Main.worldSurface * 16.0 || Main.rand.Next(200) != 0)
|
|
return;
|
|
SoundEngine.PlaySound(31, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else if (this.type == 74 || this.type == 297 || this.type == 298 || this.type == 442)
|
|
{
|
|
if (!Main.dayTime || Main.time >= 18000.0 || Main.rand.Next(400) != 0)
|
|
return;
|
|
if (this.type == 74)
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 14);
|
|
else
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 18);
|
|
}
|
|
if (this.type == 297)
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 16);
|
|
if (this.type == 298)
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 17);
|
|
else
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 19);
|
|
}
|
|
if (this.type != 442)
|
|
return;
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 16);
|
|
break;
|
|
case 1:
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 17);
|
|
break;
|
|
case 2:
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 19);
|
|
break;
|
|
case 3:
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 14);
|
|
break;
|
|
default:
|
|
SoundEngine.PlaySound(32, (int) this.position.X, (int) this.position.Y, 18);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 300 && this.type != 447 && this.type != 610 || Main.rand.Next(1800) != 0)
|
|
return;
|
|
SoundEngine.PlaySound(33, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
}
|
|
|
|
private void UpdateNPC_CastLights()
|
|
{
|
|
if (this.type >= 442 && this.type <= 448 || this.type == 539 || this.type == 592 || this.type == 593 || this.type == 601 || this.type == 605 || this.type == 627)
|
|
{
|
|
this.position = this.position + this.netOffset;
|
|
Color color = Lighting.GetColor((int) this.Center.X / 16, (int) this.Center.Y / 16);
|
|
if (color.R > (byte) 20 || color.B > (byte) 20 || color.G > (byte) 20)
|
|
{
|
|
int num1 = (int) color.R;
|
|
if ((int) color.G > num1)
|
|
num1 = (int) color.G;
|
|
if ((int) color.B > num1)
|
|
num1 = (int) color.B;
|
|
int num2 = num1 / 30;
|
|
if (Main.rand.Next(300) < num2)
|
|
{
|
|
int index = Dust.NewDust(this.position, this.width, this.height, 43, Alpha: 254, newColor: new Color((int) byte.MaxValue, (int) byte.MaxValue, 0), Scale: 0.5f);
|
|
Main.dust[index].velocity *= 0.0f;
|
|
}
|
|
}
|
|
this.position = this.position - this.netOffset;
|
|
}
|
|
if (this.type >= 254 && this.type <= 261 || this.type == 160 || this.type == 634 || this.type == 635)
|
|
{
|
|
float num3 = (float) Main.rand.Next(28, 42) * 0.005f + (float) (270 - (int) Main.mouseTextColor) / 500f;
|
|
float num4 = 0.1f;
|
|
float num5 = (float) (0.300000011920929 + (double) num3 / 2.0);
|
|
float num6 = 0.6f + num3;
|
|
float num7 = 0.35f;
|
|
if (this.type == 634)
|
|
num7 = 0.65f;
|
|
Lighting.AddLight((int) this.Center.X / 16, (int) this.Center.Y / 16, num4 * num7, num5 * num7, num6 * num7);
|
|
}
|
|
if (this.type == 209)
|
|
{
|
|
float num8 = (float) Main.rand.Next(28, 42) * 0.005f + (float) (270 - (int) Main.mouseTextColor) / 500f;
|
|
float num9 = 0.1f;
|
|
float num10 = (float) (0.300000011920929 + (double) num8 / 2.0);
|
|
float num11 = (float) (0.400000005960464 + (double) num8 / 2.0);
|
|
float num12 = 0.35f;
|
|
Lighting.AddLight((int) this.Center.X / 16, (int) this.Center.Y / 16, num9 * num12, num10 * num12, num11 * num12);
|
|
if ((double) this.ai[0] == 12.0)
|
|
Lighting.AddLight(this.Top, 0.3f, 0.1f, 0.1f);
|
|
}
|
|
if (this.type != 44)
|
|
return;
|
|
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);
|
|
}
|
|
|
|
private void GetHurtByOtherNPCs(bool[] acceptableNPCIDs)
|
|
{
|
|
if (this.dontTakeDamageFromHostiles)
|
|
return;
|
|
int specialHitSetter = 1;
|
|
float damageMultiplier = 1f;
|
|
if (this.immune[(int) byte.MaxValue] != 0)
|
|
return;
|
|
Microsoft.Xna.Framework.Rectangle hitbox1 = this.Hitbox;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
NPC thatNPC = Main.npc[index];
|
|
if (acceptableNPCIDs[thatNPC.type] && thatNPC.active && !thatNPC.friendly && thatNPC.damage > 0)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle hitbox2 = thatNPC.Hitbox;
|
|
NPC.GetMeleeCollisionData(hitbox1, index, ref specialHitSetter, ref damageMultiplier, ref hitbox2);
|
|
if (hitbox1.Intersects(hitbox2) && (this.type != 453 || !NPCID.Sets.Skeletons[thatNPC.type]) && thatNPC.type != 624)
|
|
this.BeHurtByOtherNPC(index, thatNPC);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void BeHurtByOtherNPC(int npcIndex, NPC thatNPC)
|
|
{
|
|
int num1 = 30;
|
|
if (this.type == 548)
|
|
num1 = 20;
|
|
int Damage1 = Main.DamageVar((float) thatNPC.damage);
|
|
int num2 = 6;
|
|
int hitDirection1 = (double) thatNPC.Center.X > (double) this.Center.X ? -1 : 1;
|
|
double num3 = this.StrikeNPCNoInteraction(Damage1, (float) num2, hitDirection1);
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: ((float) Damage1), number3: ((float) num2), number4: ((float) hitDirection1));
|
|
this.netUpdate = true;
|
|
this.immune[(int) byte.MaxValue] = num1;
|
|
if (this.dryadWard)
|
|
{
|
|
int Damage2 = (int) num3 / 3;
|
|
int num4 = 6;
|
|
hitDirection1 *= -1;
|
|
thatNPC.StrikeNPCNoInteraction(Damage2, (float) num4, hitDirection1);
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(28, number: npcIndex, number2: ((float) Damage2), number3: ((float) num4), number4: ((float) hitDirection1));
|
|
thatNPC.netUpdate = true;
|
|
thatNPC.immune[(int) byte.MaxValue] = num1;
|
|
}
|
|
if (!NPCID.Sets.HurtingBees[thatNPC.type])
|
|
return;
|
|
int damage = this.damage;
|
|
int num5 = 6;
|
|
int hitDirection2 = hitDirection1 * -1;
|
|
thatNPC.StrikeNPCNoInteraction(damage, (float) num5, hitDirection2);
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(28, number: npcIndex, number2: ((float) damage), number3: ((float) num5), number4: ((float) hitDirection2));
|
|
thatNPC.netUpdate = true;
|
|
thatNPC.immune[(int) byte.MaxValue] = num1;
|
|
}
|
|
|
|
private void CheckLifeRegen()
|
|
{
|
|
if (this.life >= this.lifeMax)
|
|
return;
|
|
++this.friendlyRegen;
|
|
if (this.dryadWard)
|
|
this.friendlyRegen += 10;
|
|
if (this.friendlyRegen <= 180)
|
|
return;
|
|
this.friendlyRegen = 0;
|
|
++this.life;
|
|
this.netUpdate = true;
|
|
}
|
|
|
|
public void GetImmuneTime(int fromWho, int time)
|
|
{
|
|
if (fromWho == -1)
|
|
{
|
|
for (int index = 0; index < this.immune.Length; ++index)
|
|
this.immune[index] = time;
|
|
}
|
|
else
|
|
{
|
|
if (fromWho < 0 || fromWho >= this.immune.Length)
|
|
return;
|
|
this.immune[fromWho] = time;
|
|
}
|
|
}
|
|
|
|
private void UpdateCollision()
|
|
{
|
|
this.Collision_WalkDownSlopes();
|
|
this.Collision_WaterCollision(this.Collision_LavaCollision());
|
|
if (!this.wet)
|
|
{
|
|
this.lavaWet = false;
|
|
this.honeyWet = false;
|
|
}
|
|
if (this.wetCount > (byte) 0)
|
|
--this.wetCount;
|
|
bool fall = this.Collision_DecideFallThroughPlatforms();
|
|
this.oldVelocity = this.velocity;
|
|
this.collideX = false;
|
|
this.collideY = false;
|
|
this.FishTransformationDuringRain();
|
|
Vector2 cPosition;
|
|
int cWidth;
|
|
int cHeight;
|
|
this.GetTileCollisionParameters(out cPosition, out cWidth, out cHeight);
|
|
Vector2 velocity = this.velocity;
|
|
this.ApplyTileCollision(fall, cPosition, cWidth, cHeight);
|
|
if (this.wet)
|
|
{
|
|
if (this.honeyWet)
|
|
this.Collision_MoveWhileWet(velocity, this.honeyMovementSpeed);
|
|
else if (this.lavaWet)
|
|
this.Collision_MoveWhileWet(velocity, this.lavaMovementSpeed);
|
|
else
|
|
this.Collision_MoveWhileWet(velocity, this.waterMovementSpeed);
|
|
}
|
|
else
|
|
this.Collision_MoveWhileDry();
|
|
if (this.aiStyle == 67)
|
|
{
|
|
this.Collision_MoveSnailOnSlopes();
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 72 || this.type == 247 || this.type == 248 || this.type >= 542 && this.type <= 545 || NPCID.Sets.BelongsToInvasionOldOnesArmy[this.type] && this.noGravity)
|
|
return;
|
|
this.Collision_MoveSlopesAndStairFall(fall);
|
|
if (!this.townNPC)
|
|
return;
|
|
Collision.StepConveyorBelt((Entity) this, 1f);
|
|
}
|
|
}
|
|
|
|
private void Collision_MoveWhileDry()
|
|
{
|
|
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.oldDirection = this.direction;
|
|
this.position = this.position + this.velocity;
|
|
}
|
|
|
|
private void ApplyTileCollision(bool fall, Vector2 cPosition, int cWidth, int cHeight)
|
|
{
|
|
if (this.type == 72)
|
|
this.Collision_MoveBlazingWheel();
|
|
else if (this.type >= 542 && this.type <= 545)
|
|
this.Collision_MoveSandshark(fall, cPosition, cWidth, cHeight);
|
|
else if (this.type == 405 || this.type == 406)
|
|
this.Collision_MoveStardustCell(fall, cPosition, cWidth, cHeight);
|
|
else if (this.type == 417)
|
|
this.Collision_MoveSolarSroller(fall, cPosition, cWidth, cHeight);
|
|
else
|
|
this.Collision_MoveNormal(fall, cPosition, cWidth, cHeight);
|
|
}
|
|
|
|
private void Collision_MoveSlopesAndStairFall(bool fall)
|
|
{
|
|
if (fall)
|
|
this.stairFall = true;
|
|
if (this.aiStyle == 7)
|
|
{
|
|
int x = (int) this.Center.X / 16;
|
|
int y = (int) this.position.Y / 16;
|
|
if (WorldGen.InWorld(x, y))
|
|
{
|
|
int num = 16;
|
|
bool flag = false;
|
|
if (Main.tile[x, y] != null && Main.tile[x, y].active() && Main.tileSolid[(int) Main.tile[x, y].type])
|
|
flag = true;
|
|
if (!this.townNPC)
|
|
flag = false;
|
|
if (!Main.dayTime || Main.eclipse)
|
|
flag = true;
|
|
else if (this.homeTileY - (int) ((double) this.position.Y + (double) this.height) / 16 > num)
|
|
flag = true;
|
|
if (flag)
|
|
this.stairFall = ((double) this.position.Y + (double) this.height - 8.0) / 16.0 < (double) this.homeTileY;
|
|
}
|
|
}
|
|
Vector2 cPosition;
|
|
int cWidth;
|
|
int cHeight;
|
|
this.GetTileCollisionParameters(out cPosition, out cWidth, out cHeight);
|
|
Vector2 vector2 = this.position - cPosition;
|
|
Vector4 vector4 = Collision.SlopeCollision(cPosition, this.velocity, cWidth, cHeight, NPC.gravity, this.stairFall);
|
|
if (Collision.stairFall)
|
|
this.stairFall = true;
|
|
else if (!fall)
|
|
this.stairFall = false;
|
|
if (Collision.stair && (double) Math.Abs(vector4.Y - this.position.Y) > 8.0)
|
|
{
|
|
this.gfxOffY -= vector4.Y - this.position.Y;
|
|
this.stepSpeed = 2f;
|
|
}
|
|
this.position.X = vector4.X;
|
|
this.position.Y = vector4.Y;
|
|
this.velocity.X = vector4.Z;
|
|
this.velocity.Y = vector4.W;
|
|
this.position = this.position + vector2;
|
|
}
|
|
|
|
private void Collision_MoveSnailOnSlopes()
|
|
{
|
|
Vector4 vector4 = Collision.SlopeCollision(this.position, this.velocity, this.width, this.height, NPC.gravity);
|
|
if ((double) this.position.X != (double) vector4.X || (double) this.position.Y != (double) vector4.Y)
|
|
{
|
|
if ((double) this.ai[2] == 0.0 && (double) this.velocity.Y > 0.0 && (this.direction < 0 && (double) this.rotation == 1.57000005245209 && this.spriteDirection == 1 || this.direction > 0 && (double) this.rotation == 4.71000003814697 && this.spriteDirection == -1))
|
|
this.direction *= -this.direction;
|
|
this.ai[2] = 2f;
|
|
this.directionY = 1;
|
|
this.rotation = 0.0f;
|
|
}
|
|
this.position.X = vector4.X;
|
|
this.position.Y = vector4.Y;
|
|
this.velocity.X = vector4.Z;
|
|
this.velocity.Y = vector4.W;
|
|
}
|
|
|
|
private void Collision_MoveNormal(bool fall, Vector2 cPosition, int cWidth, int cHeight) => this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall);
|
|
|
|
private void Collision_MoveSandshark(bool fall, Vector2 cPosition, int cWidth, int cHeight) => this.velocity = Collision.AdvancedTileCollision(TileID.Sets.ForAdvancedCollision.ForSandshark, cPosition, this.velocity, cWidth, cHeight, fall, fall);
|
|
|
|
private void Collision_MoveSolarSroller(bool fall, Vector2 cPosition, int cWidth, int cHeight)
|
|
{
|
|
this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall);
|
|
if ((double) this.ai[0] != 6.0 || !(this.velocity != this.oldVelocity))
|
|
return;
|
|
--this.ai[2];
|
|
this.ai[3] = 1f;
|
|
if ((double) this.ai[2] <= 0.0)
|
|
return;
|
|
if ((double) this.velocity.X != 0.0 && (double) this.velocity.X != (double) this.oldVelocity.X)
|
|
{
|
|
this.velocity.X = (float) (-(double) this.oldVelocity.X * 0.899999976158142);
|
|
this.direction *= -1;
|
|
}
|
|
if ((double) this.velocity.Y == 0.0 || (double) this.velocity.Y == (double) this.oldVelocity.Y)
|
|
return;
|
|
this.velocity.Y = (float) (-(double) this.oldVelocity.Y * 0.899999976158142);
|
|
}
|
|
|
|
private void Collision_MoveStardustCell(bool fall, Vector2 cPosition, int cWidth, int cHeight)
|
|
{
|
|
this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall);
|
|
if (!(this.velocity != this.oldVelocity))
|
|
return;
|
|
if ((double) this.velocity.X != 0.0 && (double) this.velocity.X != (double) this.oldVelocity.X)
|
|
this.velocity.X = (float) (-(double) this.oldVelocity.X * 0.800000011920929);
|
|
if ((double) this.velocity.Y == 0.0 || (double) this.velocity.Y == (double) this.oldVelocity.Y)
|
|
return;
|
|
this.velocity.Y = (float) (-(double) this.oldVelocity.Y * 0.800000011920929);
|
|
}
|
|
|
|
private void Collision_MoveBlazingWheel()
|
|
{
|
|
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.noSlopeCollision(Position, this.velocity, Width, Height, true, true);
|
|
}
|
|
|
|
private void Collision_MoveWhileWet(Vector2 oldDryVelocity, float Slowdown = 0.5f)
|
|
{
|
|
if (Collision.up)
|
|
this.velocity.Y = 0.01f;
|
|
Vector2 vector2 = this.velocity * Slowdown;
|
|
if ((double) this.velocity.X != (double) oldDryVelocity.X)
|
|
{
|
|
vector2.X = this.velocity.X;
|
|
this.collideX = true;
|
|
}
|
|
if ((double) this.velocity.Y != (double) oldDryVelocity.Y)
|
|
{
|
|
vector2.Y = this.velocity.Y;
|
|
this.collideY = true;
|
|
}
|
|
this.oldPosition = this.position;
|
|
this.oldDirection = this.direction;
|
|
this.position = this.position + vector2;
|
|
}
|
|
|
|
public void GetTileCollisionParameters(out Vector2 cPosition, out int cWidth, out int cHeight)
|
|
{
|
|
cPosition = this.position;
|
|
cWidth = this.width;
|
|
cHeight = this.height;
|
|
if (this.type == 594)
|
|
{
|
|
int num = (int) (44.0 + 20.0 * (double) this.ai[1]);
|
|
cPosition.Y += (float) num;
|
|
cHeight += num;
|
|
cPosition.X += (float) (cWidth / 2);
|
|
cWidth = (int) (6.0 + 26.0 * (double) this.ai[1]);
|
|
cPosition.X -= (float) (cWidth / 2);
|
|
}
|
|
if (this.type == 243)
|
|
cHeight = 90;
|
|
if (this.type == 290)
|
|
cHeight = 40;
|
|
if (this.type == 351)
|
|
cHeight = 40;
|
|
if (this.type == 482)
|
|
cHeight = 40;
|
|
if (this.type == 351 || this.type == 343 || this.type == 348 || this.type == 349)
|
|
cHeight = 40;
|
|
if (this.type == 391)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 390 && (double) Main.npc[index].ai[0] == (double) this.whoAmI)
|
|
{
|
|
cHeight = 62;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 415)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == 416 && (double) Main.npc[index].ai[0] == (double) this.whoAmI)
|
|
{
|
|
cHeight = 62;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (this.type == 576 || this.type == 577)
|
|
{
|
|
cPosition.X += 32f;
|
|
cWidth -= 64;
|
|
}
|
|
if (cHeight == this.height)
|
|
return;
|
|
cPosition.Y += (float) (this.height - cHeight);
|
|
}
|
|
|
|
private void FishTransformationDuringRain()
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
if (this.type == 230 && this.wet)
|
|
{
|
|
int direction = this.direction;
|
|
Vector2 velocity = this.velocity;
|
|
this.Transform(55);
|
|
this.direction = direction;
|
|
this.velocity = velocity;
|
|
this.wet = true;
|
|
if ((double) this.velocity.Y >= 0.0)
|
|
return;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else if (this.type == 55 && !this.wet && Main.raining)
|
|
{
|
|
int direction = this.direction;
|
|
Vector2 velocity = this.velocity;
|
|
this.Transform(230);
|
|
this.direction = direction;
|
|
this.velocity = velocity;
|
|
this.homeTileX = (int) ((double) this.position.X / 16.0) + 10 * this.direction;
|
|
}
|
|
else if (this.type == 593 && this.wet)
|
|
{
|
|
int direction = this.direction;
|
|
Vector2 velocity = this.velocity;
|
|
this.Transform(592);
|
|
this.direction = direction;
|
|
this.velocity = velocity;
|
|
this.wet = true;
|
|
if ((double) this.velocity.Y >= 0.0)
|
|
return;
|
|
this.velocity.Y = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
if (this.type != 592 || this.wet || !Main.raining)
|
|
return;
|
|
int direction = this.direction;
|
|
Vector2 velocity = this.velocity;
|
|
this.Transform(593);
|
|
this.direction = direction;
|
|
this.velocity = velocity;
|
|
this.homeTileX = (int) ((double) this.position.X / 16.0) + 10 * this.direction;
|
|
}
|
|
}
|
|
|
|
private bool Collision_DecideFallThroughPlatforms()
|
|
{
|
|
bool flag1 = false;
|
|
if (this.type == 2 || this.type == -43 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194 || this.type == 317 || this.type == 318 || this.type == 133)
|
|
flag1 = true;
|
|
if (this.aiStyle == 10)
|
|
flag1 = true;
|
|
if (this.aiStyle == 5)
|
|
flag1 = true;
|
|
if (this.aiStyle == 40)
|
|
flag1 = true;
|
|
if (this.aiStyle == 44)
|
|
flag1 = true;
|
|
if (this.type == 467)
|
|
flag1 = true;
|
|
if (this.type == 477)
|
|
flag1 = true;
|
|
if (this.aiStyle == 14)
|
|
flag1 = true;
|
|
if (this.type == 173)
|
|
flag1 = true;
|
|
if (this.type == 469 && (double) this.ai[2] == 1.0)
|
|
flag1 = true;
|
|
if (this.aiStyle == 3 && this.directionY == 1)
|
|
flag1 = true;
|
|
if (this.type == 210 || this.type == 211)
|
|
flag1 = true;
|
|
if (this.type == 50 && this.target >= 0 && (double) Main.player[this.target].position.Y > (double) this.position.Y + (double) this.height)
|
|
flag1 = true;
|
|
if (this.type == 657 && this.target >= 0 && (double) Main.player[this.target].position.Y > (double) this.Bottom.Y)
|
|
flag1 = true;
|
|
if (this.type == 247 || this.type == 248)
|
|
flag1 = true;
|
|
if (this.type == 245 && this.target >= 0 && (double) Main.player[this.target].position.Y > (double) this.position.Y + (double) this.height)
|
|
flag1 = true;
|
|
if (this.type >= 542 && this.type <= 545)
|
|
flag1 = true;
|
|
if (this.aiStyle == 107 && this.directionY == 1)
|
|
flag1 = true;
|
|
if (this.type == 418)
|
|
flag1 = true;
|
|
if (this.aiStyle == 87 && (double) Main.player[this.target].position.Y > (double) this.position.Y + (double) this.height)
|
|
flag1 = true;
|
|
if (this.type == 405 || this.type == 406)
|
|
flag1 = true;
|
|
if (this.type == 490)
|
|
flag1 = true;
|
|
if (this.type == 301)
|
|
flag1 = true;
|
|
if (this.aiStyle == 7)
|
|
{
|
|
int num = 16;
|
|
bool flag2 = false;
|
|
if (this.townNPC && (!Main.dayTime || Main.invasionType > 0 || Main.eclipse))
|
|
flag2 = true;
|
|
else if (this.homeTileY - (int) ((double) this.position.Y + (double) this.height) / 16 > num)
|
|
flag1 = true;
|
|
if (flag2 && ((double) this.position.Y + (double) this.height - 8.0) / 16.0 < (double) (this.homeTileY - 1))
|
|
flag1 = true;
|
|
}
|
|
return flag1;
|
|
}
|
|
|
|
private bool Collision_WaterCollision(bool lava)
|
|
{
|
|
bool flag;
|
|
if (this.type == 72 || this.aiStyle == 21 || this.aiStyle == 67 || this.type == 376 || this.type == 579 || this.type == 541)
|
|
{
|
|
flag = false;
|
|
this.wetCount = (byte) 0;
|
|
lava = false;
|
|
}
|
|
else
|
|
{
|
|
flag = Collision.WetCollision(this.position, this.width, this.height);
|
|
if (Collision.honey)
|
|
this.honeyWet = true;
|
|
}
|
|
if (this.aiStyle == 116)
|
|
this.wetCount = (byte) 10;
|
|
if (flag)
|
|
{
|
|
if (this.onFire && !this.lavaWet && Main.netMode != 1)
|
|
{
|
|
for (int buffIndex = 0; buffIndex < 5; ++buffIndex)
|
|
{
|
|
if (this.buffType[buffIndex] == 24)
|
|
this.DelBuff(buffIndex);
|
|
}
|
|
}
|
|
if (!this.wet && this.wetCount == (byte) 0)
|
|
{
|
|
this.wetCount = (byte) 10;
|
|
if (!lava)
|
|
{
|
|
if (this.honeyWet)
|
|
{
|
|
for (int index1 = 0; index1 < 10; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 152);
|
|
--Main.dust[index2].velocity.Y;
|
|
Main.dust[index2].velocity.X *= 2.5f;
|
|
Main.dust[index2].scale = 1.3f;
|
|
Main.dust[index2].alpha = 100;
|
|
Main.dust[index2].noGravity = true;
|
|
}
|
|
if (this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && !this.noGravity)
|
|
SoundEngine.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else if (this.type != 617 && this.type != 616 && this.type != 625)
|
|
{
|
|
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, Dust.dustWater());
|
|
Main.dust[index4].velocity.Y -= 4f;
|
|
Main.dust[index4].velocity.X *= 2.5f;
|
|
Main.dust[index4].scale *= 0.8f;
|
|
Main.dust[index4].alpha = 100;
|
|
Main.dust[index4].noGravity = true;
|
|
}
|
|
if (this.type != 376 && this.type != 579 && this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && this.aiStyle != 68 && this.type != 362 && this.type != 364 && this.type != 361 && this.type != 445 && !this.noGravity || this.type == 615)
|
|
SoundEngine.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.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && !this.noGravity)
|
|
SoundEngine.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.type == 620 && (double) this.GetTargetData().Center.Y < (double) this.Center.Y)
|
|
this.velocity.Y -= 8f;
|
|
if (this.wetCount == (byte) 0)
|
|
{
|
|
this.wetCount = (byte) 10;
|
|
if (!this.lavaWet)
|
|
{
|
|
if (this.honeyWet)
|
|
{
|
|
for (int index7 = 0; index7 < 10; ++index7)
|
|
{
|
|
int index8 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 152);
|
|
--Main.dust[index8].velocity.Y;
|
|
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.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 300 && this.type != 59 && this.aiStyle != 39 && !this.noGravity)
|
|
SoundEngine.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
else if (this.type != 617 && this.type != 616 && this.type != 625)
|
|
{
|
|
for (int index9 = 0; index9 < 30; ++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, Dust.dustWater());
|
|
Main.dust[index10].velocity.Y -= 4f;
|
|
Main.dust[index10].velocity.X *= 2.5f;
|
|
Main.dust[index10].scale *= 0.8f;
|
|
Main.dust[index10].alpha = 100;
|
|
Main.dust[index10].noGravity = true;
|
|
}
|
|
if (this.type != 376 && this.type != 579 && this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && this.aiStyle != 68 && this.type != 362 && this.type != 364 && this.type != 361 && this.type != 445 && !this.noGravity || this.type == 615)
|
|
SoundEngine.PlaySound(19, (int) this.position.X, (int) this.position.Y, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int index11 = 0; index11 < 10; ++index11)
|
|
{
|
|
int index12 = 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[index12].velocity.Y -= 1.5f;
|
|
Main.dust[index12].velocity.X *= 2.5f;
|
|
Main.dust[index12].scale = 1.3f;
|
|
Main.dust[index12].alpha = 100;
|
|
Main.dust[index12].noGravity = true;
|
|
}
|
|
if (this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && !this.noGravity)
|
|
SoundEngine.PlaySound(19, (int) this.position.X, (int) this.position.Y);
|
|
}
|
|
}
|
|
}
|
|
return lava;
|
|
}
|
|
|
|
private bool Collision_LavaCollision()
|
|
{
|
|
int num = Collision.LavaCollision(this.position, this.width, this.height) ? 1 : 0;
|
|
if (num == 0)
|
|
return num != 0;
|
|
this.lavaWet = true;
|
|
if (this.lavaImmune)
|
|
return num != 0;
|
|
if (this.dontTakeDamage)
|
|
return num != 0;
|
|
if (Main.netMode == 1)
|
|
return num != 0;
|
|
if (this.immune[(int) byte.MaxValue] != 0)
|
|
return num != 0;
|
|
this.AddBuff(24, 420);
|
|
this.immune[(int) byte.MaxValue] = 30;
|
|
this.StrikeNPCNoInteraction(50, 0.0f, 0);
|
|
if (Main.netMode != 2)
|
|
return num != 0;
|
|
if (Main.netMode == 0)
|
|
return num != 0;
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: 50f);
|
|
return num != 0;
|
|
}
|
|
|
|
private void Collision_WalkDownSlopes()
|
|
{
|
|
Vector2 velocity = this.velocity;
|
|
Vector4 vector4 = Collision.WalkDownSlope(this.position, this.velocity, this.width, this.height, NPC.gravity);
|
|
this.position.X = vector4.X;
|
|
this.position.Y = vector4.Y;
|
|
this.velocity.X = vector4.Z;
|
|
this.velocity.Y = vector4.W;
|
|
}
|
|
|
|
public static void setFireFlyChance()
|
|
{
|
|
if (Main.rand == null)
|
|
Main.rand = new UnifiedRandom((int) DateTime.Now.Ticks);
|
|
if (WorldGen.genRand.Next(9) == 0)
|
|
{
|
|
NPC.fireFlyChance = Main.rand.Next(5, 10);
|
|
NPC.fireFlyFriendly = Main.rand.Next(1, 4);
|
|
NPC.fireFlyMultiple = Main.rand.Next(3, 8);
|
|
}
|
|
else if (WorldGen.genRand.Next(3) == 0)
|
|
{
|
|
NPC.fireFlyChance = 999999;
|
|
NPC.fireFlyFriendly = 999999;
|
|
NPC.fireFlyMultiple = 999999;
|
|
}
|
|
else
|
|
{
|
|
NPC.fireFlyChance = Main.rand.Next(10, 60);
|
|
NPC.fireFlyFriendly = Main.rand.Next(2, 15);
|
|
NPC.fireFlyMultiple = Main.rand.Next(6, 30);
|
|
}
|
|
NPC.butterflyChance = Main.rand.Next(1, 25);
|
|
if (WorldGen.genRand.Next(4) != 0)
|
|
return;
|
|
NPC.butterflyChance = 999999;
|
|
}
|
|
|
|
public Color GetBestiaryEntryColor() => Color.White;
|
|
|
|
public Color GetAlpha(Color newColor)
|
|
{
|
|
if (this.IsABestiaryIconDummy)
|
|
newColor = Color.White;
|
|
float num1 = (float) ((int) byte.MaxValue - this.alpha) / (float) byte.MaxValue;
|
|
int r1 = (int) ((double) newColor.R * (double) num1);
|
|
int g1 = (int) ((double) newColor.G * (double) num1);
|
|
int b1 = (int) ((double) newColor.B * (double) num1);
|
|
int a = (int) newColor.A - this.alpha;
|
|
if (this.type == 402)
|
|
return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue);
|
|
if (this.type == 484)
|
|
return new Color(250, 250, 250, 200);
|
|
if (this.type >= 542 && this.type <= 545 && r1 + g1 + b1 > 10 && r1 + g1 + b1 >= 60)
|
|
{
|
|
r1 *= 2;
|
|
g1 *= 2;
|
|
b1 *= 2;
|
|
if (r1 > (int) byte.MaxValue)
|
|
r1 = (int) byte.MaxValue;
|
|
if (g1 > (int) byte.MaxValue)
|
|
g1 = (int) byte.MaxValue;
|
|
if (b1 > (int) byte.MaxValue)
|
|
b1 = (int) byte.MaxValue;
|
|
}
|
|
if (this.type == 662)
|
|
{
|
|
Color color = Color.Lerp(Color.White, Color.Cyan, 0.5f);
|
|
color.A /= (byte) 4;
|
|
return color * this.Opacity;
|
|
}
|
|
if (this.type >= 454 && this.type <= 459 || this.type == 521)
|
|
{
|
|
newColor = Color.Lerp(newColor, Color.White, 0.4f);
|
|
newColor.A = (byte) 150;
|
|
newColor *= (float) a / (float) byte.MaxValue;
|
|
return newColor;
|
|
}
|
|
if (this.type == 636)
|
|
{
|
|
newColor = Color.Lerp(newColor, Color.White, 0.25f);
|
|
return newColor * this.Opacity;
|
|
}
|
|
if (this.type == 440)
|
|
{
|
|
byte num2 = 180;
|
|
if (Main.expertMode)
|
|
num2 = (byte) 210;
|
|
byte num3 = (byte) ((double) num2 * (double) num1);
|
|
return new Color((int) num3, (int) num3, (int) num3, (int) num3);
|
|
}
|
|
if (this.type == 583 || this.type == 584 || this.type == 585)
|
|
{
|
|
newColor = Color.Lerp(newColor, Color.White, 0.5f);
|
|
return newColor;
|
|
}
|
|
if (this.type == 516)
|
|
return new Color(this.alpha, this.alpha, this.alpha, this.alpha);
|
|
if (this.type == 522)
|
|
return new Color((int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha);
|
|
if (this.type == 523)
|
|
return new Color((int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha);
|
|
if (this.type == 395 || this.type == 519)
|
|
{
|
|
newColor = Color.Lerp(newColor, Color.White, 0.4f);
|
|
return newColor;
|
|
}
|
|
if (this.type == 370 && (double) this.ai[0] != -1.0 && (double) this.ai[0] < 9.0)
|
|
{
|
|
float num4 = MathHelper.Lerp(num1, 1f, 0.25f);
|
|
if ((double) num4 > 1.0)
|
|
num4 = 1f;
|
|
b1 = (int) ((double) newColor.B * (double) num4);
|
|
}
|
|
if (this.type == 30)
|
|
return new Color(250, 250, 250, 100);
|
|
if (!this.IsABestiaryIconDummy && (this.type == 25 || this.type == 30 || this.type == 59 || this.type == 60))
|
|
return new Color(200, 200, 200, 0);
|
|
if (this.type == 360)
|
|
{
|
|
int r2 = (int) newColor.R;
|
|
int g2 = (int) newColor.G;
|
|
int b2 = (int) newColor.B;
|
|
if (r2 < 75)
|
|
r2 = 75;
|
|
if (g2 < 175)
|
|
g2 = 175;
|
|
if (b2 < (int) byte.MaxValue)
|
|
b2 = (int) byte.MaxValue;
|
|
return new Color(r2, g2, b2, (int) byte.MaxValue);
|
|
}
|
|
if (this.type == 655)
|
|
{
|
|
int r3 = (int) newColor.R;
|
|
int g3 = (int) newColor.G;
|
|
int b3 = (int) newColor.B;
|
|
if (r3 < (int) byte.MaxValue)
|
|
r3 = (int) byte.MaxValue;
|
|
if (g3 < 100)
|
|
g3 = 100;
|
|
if (b3 < 50)
|
|
b3 = 50;
|
|
return new Color(r3, g3, b3, (int) byte.MaxValue);
|
|
}
|
|
if (this.type == 352)
|
|
return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 200);
|
|
if (this.type == 72)
|
|
{
|
|
r1 = (int) newColor.R;
|
|
g1 = (int) newColor.G;
|
|
b1 = (int) newColor.B;
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 288)
|
|
return new Color(200, 200, 200, 0);
|
|
if (this.type == 289)
|
|
return new Color(250, 250, 250, 50);
|
|
if (this.type >= 254 && this.type <= 261)
|
|
{
|
|
b1 = (int) byte.MaxValue;
|
|
if (r1 < 100)
|
|
r1 = 100;
|
|
if (g1 < 150)
|
|
g1 = 150;
|
|
}
|
|
else if (this.type == 374 || this.type == 634 || this.type == 635)
|
|
{
|
|
b1 = (int) byte.MaxValue;
|
|
if (r1 < 100)
|
|
r1 = 100;
|
|
if (g1 < 150)
|
|
g1 = 150;
|
|
}
|
|
else
|
|
{
|
|
if (this.type == 549)
|
|
{
|
|
newColor = Color.Lerp(newColor, Color.White, 0.4f);
|
|
newColor *= (float) a / (float) byte.MaxValue;
|
|
return newColor;
|
|
}
|
|
if (this.type == 64 || this.type == 63 || this.type == 75 || this.type == 103 || this.type == 400)
|
|
{
|
|
r1 = (int) ((double) newColor.R * 1.5);
|
|
g1 = (int) ((double) newColor.G * 1.5);
|
|
b1 = (int) ((double) newColor.B * 1.5);
|
|
if (r1 > (int) byte.MaxValue)
|
|
r1 = (int) byte.MaxValue;
|
|
if (g1 > (int) byte.MaxValue)
|
|
g1 = (int) byte.MaxValue;
|
|
if (b1 > (int) byte.MaxValue)
|
|
b1 = (int) byte.MaxValue;
|
|
}
|
|
}
|
|
}
|
|
if (a < 0)
|
|
a = 0;
|
|
if (a > (int) byte.MaxValue)
|
|
a = (int) byte.MaxValue;
|
|
return new Color(r1, g1, b1, a);
|
|
}
|
|
|
|
public Color GetColor(Color newColor)
|
|
{
|
|
if (this.IsABestiaryIconDummy)
|
|
newColor = this.GetBestiaryEntryColor();
|
|
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 bool ShouldBestiaryGirlBeLycantrope()
|
|
{
|
|
if (Main.bloodMoon && !Main.dayTime)
|
|
return true;
|
|
return Main.moonPhase == 0 && !Main.dayTime;
|
|
}
|
|
|
|
public string GetChat()
|
|
{
|
|
Recipe.FindRecipes();
|
|
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;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
bool flag13 = false;
|
|
bool flag14 = false;
|
|
bool flag15 = false;
|
|
bool flag16 = false;
|
|
bool flag17 = false;
|
|
object substitutionObject = Lang.CreateDialogSubstitutionObject(this);
|
|
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 == 54)
|
|
flag9 = true;
|
|
else if (Main.npc[index].type == 160)
|
|
flag10 = true;
|
|
else if (Main.npc[index].type == 178)
|
|
flag11 = true;
|
|
else if (Main.npc[index].type == 229)
|
|
flag12 = true;
|
|
else if (Main.npc[index].type == 209)
|
|
flag13 = true;
|
|
else if (Main.npc[index].type == 208)
|
|
flag14 = true;
|
|
else if (Main.npc[index].type == 353)
|
|
flag15 = true;
|
|
else if (Main.npc[index].type == 22)
|
|
flag16 = true;
|
|
else if (Main.npc[index].type == 441)
|
|
flag17 = true;
|
|
}
|
|
}
|
|
string str = "";
|
|
string specialEventText = "";
|
|
if (this.type == 17)
|
|
{
|
|
if (this.HasSpecialEventText("Merchant", out specialEventText))
|
|
str = specialEventText;
|
|
else if (!NPC.downedBoss1 && Main.rand.Next(3) == 0)
|
|
str = 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:
|
|
str = Lang.dialog(4);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(5);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(6);
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.time > 37800.0)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(7);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(8);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(9);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(10);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(11);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(12);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.bloodMoon)
|
|
{
|
|
if (flag2 & flag7 && Main.rand.Next(3) == 0)
|
|
{
|
|
str = Lang.dialog(13);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(14);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(15);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(16);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(17);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.time < 9720.0)
|
|
str = Main.rand.Next(2) != 0 ? Lang.dialog(19) : Lang.dialog(18);
|
|
else if (Main.time > 22680.0)
|
|
{
|
|
str = Main.rand.Next(2) != 0 ? Lang.dialog(21) : Lang.dialog(20);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(22);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(23);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(24);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 18)
|
|
{
|
|
if (this.HasSpecialEventText("Nurse", out specialEventText))
|
|
str = specialEventText;
|
|
else if (Main.bloodMoon)
|
|
{
|
|
if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax2 * 0.66)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(25);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(26);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(27);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(28);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(29);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(30);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(31);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.rand.Next(3) == 0 && !NPC.downedBoss3)
|
|
str = Lang.dialog(32);
|
|
else if (flag6 && Main.rand.Next(4) == 0)
|
|
str = Lang.dialog(33);
|
|
else if (flag3 && Main.rand.Next(4) == 0)
|
|
str = Lang.dialog(34);
|
|
else if (flag16 && Main.rand.Next(4) == 0)
|
|
str = Lang.dialog(35);
|
|
else if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax2 * 0.33)
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(36);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(37);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(38);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(39);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(40);
|
|
break;
|
|
}
|
|
}
|
|
else if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax2 * 0.66)
|
|
{
|
|
switch (Main.rand.Next(7))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(41);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(42);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(43);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(44);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(45);
|
|
break;
|
|
case 5:
|
|
str = Lang.dialog(46);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(47);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("NurseChatter.", substitutionObject));
|
|
int num = Main.rand.Next(4 + all.Length);
|
|
str = num < 4 ? (num != 0 ? (num != 1 ? (num != 2 ? Lang.dialog(51) : Lang.dialog(50)) : Lang.dialog(49)) : Lang.dialog(48)) : all[num - 4].FormatWith(substitutionObject);
|
|
}
|
|
}
|
|
else if (this.type == 19)
|
|
{
|
|
if (this.HasSpecialEventText("ArmsDealer", out specialEventText))
|
|
str = specialEventText;
|
|
else if (flag16 && NPC.downedBoss3 && !Main.hardMode)
|
|
str = Lang.dialog(58);
|
|
else if (flag2 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(59);
|
|
else if (flag2 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(60);
|
|
else if (flag4 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(61);
|
|
else if (flag6 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(62);
|
|
else if (flag6 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(63);
|
|
else if (Main.bloodMoon)
|
|
{
|
|
str = Main.rand.Next(2) != 0 ? Lang.dialog(65) : Lang.dialog(64);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(66);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(67);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(68);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 20)
|
|
{
|
|
if (this.HasSpecialEventText("Dryad", out specialEventText))
|
|
str = specialEventText;
|
|
else if (DD2Event.DownedInvasionT1 && Main.rand.Next(6) == 0)
|
|
str = !DD2Event.DownedInvasionT2 ? Language.GetTextValueWith("DryadSpecialText.AfterDD2Tier1", substitutionObject) : Language.GetTextValueWith("DryadSpecialText.AfterDD2Tier2", substitutionObject);
|
|
else if (!NPC.downedBoss2 && Main.rand.Next(3) == 0)
|
|
str = !WorldGen.crimson ? Lang.dialog(69) : Lang.dialog(332);
|
|
else if (flag3 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(70);
|
|
else if (flag1 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(71);
|
|
else if (flag5 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(72);
|
|
else if (flag10 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(238);
|
|
else if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(73);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(74);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(75);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(76);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str = !WorldGen.crimson ? Lang.dialog(77) : Lang.dialog(333);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(78);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(79);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(80);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(81);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 37)
|
|
{
|
|
if (Main.dayTime)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(82);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(83);
|
|
break;
|
|
default:
|
|
str = 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:
|
|
str = Lang.dialog(85);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(86);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(87);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(88);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(89);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(90);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(91);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(92);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 38)
|
|
{
|
|
if (this.HasSpecialEventText("Demolitionist", out specialEventText))
|
|
str = specialEventText;
|
|
else if (!NPC.downedBoss2 && Main.rand.Next(3) == 0)
|
|
str = Lang.dialog(93);
|
|
else if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(94);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(95);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(96);
|
|
break;
|
|
}
|
|
}
|
|
else if ((DD2Event.DownedInvasionT1 || DD2Event.Ongoing) && Main.rand.Next(5) == 0)
|
|
str = Language.GetTextValueWith("DemolitionistSpecialText.AfterDD2Start", substitutionObject);
|
|
else if (flag3 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(97);
|
|
else if (flag3 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(98);
|
|
else if (flag2 && Main.rand.Next(4) == 0)
|
|
str = Lang.dialog(99);
|
|
else if (flag4 && Main.rand.Next(4) == 0)
|
|
str = Lang.dialog(100);
|
|
else if (!Main.dayTime)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(101);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(102);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(103);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(104);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(105);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(106);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(107);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(108);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(109);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 54)
|
|
{
|
|
if (this.HasSpecialEventText("Clothier", out specialEventText))
|
|
str = specialEventText;
|
|
else if (!flag7 && Main.rand.Next(2) == 0)
|
|
str = Lang.dialog(110);
|
|
else if (flag10 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(237);
|
|
else if (Main.bloodMoon)
|
|
str = Lang.dialog(111);
|
|
else if (flag2 && Main.rand.Next(4) == 0)
|
|
str = Lang.dialog(112);
|
|
else if (Main.player[Main.myPlayer].head == 24)
|
|
{
|
|
str = Lang.dialog(113);
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(6))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(114);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(115);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(116);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(117);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(118);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(119);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 105)
|
|
str = Lang.dialog(120);
|
|
else if (this.type == 107)
|
|
{
|
|
if (this.homeless)
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(121);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(122);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(123);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(124);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(125);
|
|
break;
|
|
}
|
|
}
|
|
else if (this.HasSpecialEventText("GoblinTinkerer", out specialEventText))
|
|
str = specialEventText;
|
|
else if (flag7 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(126);
|
|
else if (flag15 && Main.rand.Next(5) == 0)
|
|
{
|
|
str = Lang.dialog(309);
|
|
}
|
|
else
|
|
{
|
|
LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("GoblinTinkererChatter.", substitutionObject));
|
|
int num = Main.rand.Next(all.Length + 5);
|
|
if (num >= 5)
|
|
str = all[num - 5].FormatWith(substitutionObject);
|
|
else if (!Main.dayTime)
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog((int) sbyte.MaxValue);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(128);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(129);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(130);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(131);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(132);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(133);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(134);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(135);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(136);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 106)
|
|
str = Lang.dialog(137);
|
|
else if (this.type == 108)
|
|
{
|
|
if (this.homeless)
|
|
{
|
|
int num = Main.rand.Next(3);
|
|
if (num == 0)
|
|
str = Lang.dialog(138);
|
|
else if (num == 1 && !Main.player[Main.myPlayer].Male)
|
|
{
|
|
str = Lang.dialog(139);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 1:
|
|
str = Lang.dialog(140);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(141);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.HasLuckTextForWizard(out specialEventText))
|
|
str = specialEventText;
|
|
else if (this.HasSpecialEventText("Wizard", out specialEventText))
|
|
str = specialEventText;
|
|
else if (DD2Event.DownedInvasionT1 && Main.rand.Next(6) == 0)
|
|
str = Language.GetTextValueWith("WizardSpecialText.AfterDD2Tier1", substitutionObject);
|
|
else if (Main.player[Main.myPlayer].Male & flag16 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(142);
|
|
else if (Main.player[Main.myPlayer].Male & flag6 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(143);
|
|
else if (Main.player[Main.myPlayer].Male & flag8 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(144);
|
|
else if (!Main.player[Main.myPlayer].Male & flag2 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(145);
|
|
else if (!Main.player[Main.myPlayer].Male & flag7 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(146);
|
|
else if (!Main.player[Main.myPlayer].Male & flag4 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(147);
|
|
else if (!Main.dayTime)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(148);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(149);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(150);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(5))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(151);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(152);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(153);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(154);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(155);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 123)
|
|
str = Lang.dialog(156);
|
|
else if (this.type == 124)
|
|
{
|
|
if (this.homeless)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(157);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(158);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(159);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(160);
|
|
break;
|
|
}
|
|
}
|
|
else if (this.HasSpecialEventText("Mechanic", out specialEventText))
|
|
str = specialEventText;
|
|
else if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(4))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(161);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(162);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(163);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(164);
|
|
break;
|
|
}
|
|
}
|
|
else if (flag8 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(165);
|
|
else if (flag3 && Main.rand.Next(6) == 0)
|
|
{
|
|
str = Lang.dialog(166);
|
|
}
|
|
else
|
|
{
|
|
LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("MechanicChatter.", substitutionObject));
|
|
int num = Main.rand.Next(3 + all.Length);
|
|
str = num < 3 ? (num != 0 ? (num != 1 ? Lang.dialog(169) : Lang.dialog(168)) : Lang.dialog(167)) : all[num - 3].FormatWith(substitutionObject);
|
|
}
|
|
}
|
|
else if (this.type == 22)
|
|
{
|
|
if (this.HasSpecialEventText("Guide", out specialEventText))
|
|
str = specialEventText;
|
|
else if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(170);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(171);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(172);
|
|
break;
|
|
}
|
|
}
|
|
else if (LanternNight.LanternsUp && !NPC.downedMoonlord)
|
|
str = Language.GetTextValue("GuideSpecialText.Lantern1");
|
|
else if (LanternNight.LanternsUp && NPC.downedMoonlord)
|
|
str = Language.GetTextValue("GuideSpecialText.Lantern2");
|
|
else if (Main.eclipse)
|
|
str = Language.GetTextValue("GuideSpecialText.Eclipse");
|
|
else if (Main.slimeRain)
|
|
str = Language.GetTextValue("GuideSpecialText.SlimeRain");
|
|
else if (!Main.dayTime)
|
|
str = Lang.dialog(173);
|
|
else if (Main.hardMode & flag17 && Main.rand.Next(8) == 0)
|
|
str = Language.GetTextValueWith("GuideChatter.Chatter_1", substitutionObject);
|
|
else if (Main.hardMode && Main.rand.Next(8) == 0)
|
|
{
|
|
str = Language.GetTextValue("GuideChatter.Chatter_2");
|
|
}
|
|
else
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(174);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(175);
|
|
break;
|
|
default:
|
|
str = Lang.dialog(176);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 142)
|
|
{
|
|
int num = Main.rand.Next(3);
|
|
if (this.HasSpecialEventText("Santa", out specialEventText))
|
|
{
|
|
str = specialEventText;
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(224);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(225);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(226);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 160)
|
|
{
|
|
int num = Main.rand.Next(6);
|
|
if (this.HasSpecialEventText("Truffle", out specialEventText))
|
|
str = specialEventText;
|
|
else if (flag4 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(232);
|
|
else if (flag9 && Main.rand.Next(6) == 0)
|
|
{
|
|
str = Lang.dialog(236);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(231);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(233);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(234);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(235);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(240);
|
|
break;
|
|
case 5:
|
|
str = Lang.dialog(241);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 178)
|
|
{
|
|
int num = Main.rand.Next(5);
|
|
if (this.HasSpecialEventText("Steampunker", out specialEventText))
|
|
str = specialEventText;
|
|
else if (Main.bloodMoon && Main.rand.Next(3) == 0)
|
|
str = Lang.dialog(245);
|
|
else if (flag13 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(246);
|
|
else if (flag12 && Main.rand.Next(6) == 0)
|
|
{
|
|
str = Lang.dialog(247);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(242);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(243);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(244);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(248);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(249);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 207)
|
|
{
|
|
int num = Main.rand.Next(3);
|
|
if (this.HasSpecialEventText("DyeTrader", out specialEventText))
|
|
str = specialEventText;
|
|
else if (flag12 && Main.rand.Next(6) == 0)
|
|
{
|
|
str = Lang.dialog(260);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(257);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(258);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(259);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 208)
|
|
{
|
|
if (NPC.freeCake)
|
|
{
|
|
str = Language.GetTextValueWith("PartyGirlSpecialText.Cake" + (object) Main.rand.Next(1, 4), substitutionObject);
|
|
}
|
|
else
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
if (this.HasSpecialEventText("PartyGirl", out specialEventText))
|
|
str = specialEventText;
|
|
else if (DD2Event.DownedInvasionT1 && Main.rand.Next(5) == 0)
|
|
str = Language.GetTextValueWith("PartyGirlSpecialText.AfterDD2Tier1", substitutionObject);
|
|
else if (Main.player[Main.myPlayer].Male && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(268);
|
|
else if (flag15 && Main.rand.Next(5) == 0)
|
|
{
|
|
str = Lang.dialog(310);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(265);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(266);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(267);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(269);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(270);
|
|
break;
|
|
case 5:
|
|
str = Lang.dialog(271);
|
|
break;
|
|
case 6:
|
|
str = Lang.dialog(272);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 209)
|
|
{
|
|
if (this.HasSpecialEventText("Cyborg", out specialEventText))
|
|
str = specialEventText;
|
|
else if (flag12 && Main.rand.Next(6) == 0)
|
|
str = Lang.dialog(284);
|
|
else if (flag11 && Main.rand.Next(6) == 0)
|
|
{
|
|
str = Lang.dialog(283);
|
|
}
|
|
else
|
|
{
|
|
LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("CyborgChatter.", substitutionObject));
|
|
int num = Main.rand.Next(5 + all.Length);
|
|
if (num >= 5)
|
|
str = all[num - 5].FormatWith(substitutionObject);
|
|
else if (num == 0)
|
|
str = Lang.dialog(280);
|
|
else if (num == 1)
|
|
str = Lang.dialog(281);
|
|
else if (num == 2)
|
|
str = Lang.dialog(282);
|
|
else if (num == 3)
|
|
str = Lang.dialog(285);
|
|
else if (num == 4)
|
|
str = Lang.dialog(286);
|
|
}
|
|
}
|
|
else if (this.type == 227)
|
|
{
|
|
int num = Main.rand.Next(5);
|
|
if (this.HasSpecialEventText("Painter", out specialEventText))
|
|
str = specialEventText;
|
|
else if (Main.hardMode && Main.rand.Next(7) == 0)
|
|
str = Lang.dialog(250);
|
|
else if (flag14 && Main.rand.Next(6) == 0)
|
|
{
|
|
str = Lang.dialog(251);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(252);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(253);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(254);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog((int) byte.MaxValue);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(256);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 228)
|
|
{
|
|
int num = Main.rand.Next(4);
|
|
if (this.HasSpecialEventText("WitchDoctor", out specialEventText))
|
|
str = specialEventText;
|
|
else if (flag2 && Main.rand.Next(4) == 0)
|
|
{
|
|
str = Lang.dialog(263);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(261);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(262);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(264);
|
|
break;
|
|
case 3:
|
|
str = Language.GetTextValueWith("WitchDoctorSpecialText.AfterDD2Tier1", substitutionObject);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 229)
|
|
{
|
|
LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("PirateChatter.", substitutionObject));
|
|
int num = Main.rand.Next(6 + all.Length);
|
|
if (num >= 6)
|
|
str = all[num - 6].FormatWith(substitutionObject);
|
|
else if (this.HasSpecialEventText("Pirate", out specialEventText))
|
|
str = specialEventText;
|
|
else if (!Main.player[Main.myPlayer].Male && Main.rand.Next(5) == 0)
|
|
{
|
|
str = Lang.dialog(276);
|
|
}
|
|
else
|
|
{
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(273);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(274);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(275);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(277);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(278);
|
|
break;
|
|
case 5:
|
|
str = Lang.dialog(279);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 354)
|
|
str = Lang.dialog(Main.rand.Next(315, 319));
|
|
else if (this.type == 353)
|
|
{
|
|
if (this.HasSpecialEventText("Stylist", out specialEventText))
|
|
str = specialEventText;
|
|
else if (Main.bloodMoon)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(304);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(305);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(306);
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.dayTime && Main.time < 16200.0 && Main.rand.Next(3) == 0)
|
|
str = Lang.dialog(311);
|
|
else if (Main.player[Main.myPlayer].Male && Main.rand.Next(3) == 0)
|
|
{
|
|
switch (Main.rand.Next(2))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(293);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(300);
|
|
break;
|
|
}
|
|
}
|
|
else if (!Main.player[Main.myPlayer].Male && Main.rand.Next(3) == 0)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(291);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(292);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(312);
|
|
break;
|
|
}
|
|
}
|
|
else if (flag14 & flag7 & flag2 & flag3 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(307);
|
|
else if (flag14 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(302);
|
|
else if (flag6 && Main.rand.Next(5) == 0)
|
|
str = Lang.dialog(303);
|
|
else if (flag13 && Main.rand.Next(5) == 0)
|
|
{
|
|
str = Lang.dialog(308);
|
|
}
|
|
else
|
|
{
|
|
LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("StylistChatter.", substitutionObject));
|
|
int num1 = Main.moonPhase < 3 ? 5 : 4;
|
|
int num2 = Main.rand.Next(num1 + all.Length);
|
|
if (num2 >= num1)
|
|
str = all[num2 - num1].FormatWith(substitutionObject);
|
|
else if (Main.moonPhase < 3)
|
|
{
|
|
switch (num2)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(287);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(288);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(289);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(290);
|
|
break;
|
|
case 4:
|
|
str = Lang.dialog(294);
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.moonPhase < 6)
|
|
{
|
|
switch (num2)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(295);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(296);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(297);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(298);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (num2)
|
|
{
|
|
case 0:
|
|
str = Lang.dialog(299);
|
|
break;
|
|
case 1:
|
|
str = Lang.dialog(301);
|
|
break;
|
|
case 2:
|
|
str = Lang.dialog(313);
|
|
break;
|
|
case 3:
|
|
str = Lang.dialog(314);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (this.type == 368)
|
|
str = !this.HasSpecialEventText("TravellingMerchant", out specialEventText) ? (!flag16 || Main.rand.Next(5) != 0 ? (!flag1 || Main.rand.Next(5) != 0 ? (!flag9 || Main.rand.Next(5) != 0 ? Lang.dialog(Main.rand.Next(322, 331)) : Lang.dialog(321)) : Lang.dialog(320)) : Lang.dialog(319)) : specialEventText;
|
|
else if (this.type == 376)
|
|
str = Lang.dialog(Main.rand.Next(353, 356));
|
|
else if (this.type == 369)
|
|
str = Main.rand.Next(5) != 0 || Main.LocalPlayer.anglerQuestsFinished <= 1 ? (!this.HasSpecialEventText("Angler", out specialEventText) ? (!Main.bloodMoon ? (Main.anglerQuestFinished ? (!flag4 || Main.rand.Next(5) != 0 ? Language.SelectRandom(Lang.CreateDialogFilter("AnglerChatter.", substitutionObject)).FormatWith(substitutionObject) : Lang.dialog(347)) : Lang.dialog(Main.rand.Next(334, 338))) : (Main.rand.Next(3) != 0 ? (Main.anglerQuestFinished ? Lang.dialog(Main.rand.Next(350, 353)) : Lang.dialog(Main.rand.Next(348, 350))) : Language.SelectRandom(Lang.CreateDialogFilter("AnglerSpecialText.BloodMoonFishing")).FormatWith(substitutionObject))) : specialEventText) : Lang.AnglerQuestCountChat(this);
|
|
else if (this.type == 453)
|
|
str = !this.HasSpecialEventText("SkeletonMerchant", out specialEventText) ? Lang.dialog(Main.rand.Next(356, 364)) : specialEventText;
|
|
else if (this.type == 441)
|
|
str = !this.HasSpecialEventText("TaxCollector", out specialEventText) ? (!(Main.rand.Next(6) == 0 & flag4) ? (!(Main.rand.Next(6) == 0 & flag3) ? (!(Main.rand.Next(6) == 0 & flag6) ? (!(Main.rand.Next(6) == 0 & flag1) ? Lang.dialog(Main.rand.Next(364, 370)) : Lang.dialog(374)) : Lang.dialog(373)) : Lang.dialog(372)) : Lang.dialog(371)) : specialEventText;
|
|
else if (this.type == 579)
|
|
str = Language.GetTextValue("BartenderSpecialText.FirstMeeting");
|
|
else if (this.type == 550)
|
|
str = !this.HasSpecialEventText("Bartender", out specialEventText) ? Lang.BartenderChat(this) : specialEventText;
|
|
else if (this.type == 589)
|
|
str = Main.rand.Next(2) != 0 ? Language.GetTextValue("GolferSpecialText.FirstMeeting2") : Language.GetTextValue("GolferSpecialText.FirstMeeting1");
|
|
else if (this.type == 588)
|
|
str = Main.rand.Next(3) == 0 || !this.HasSpecialEventText("Golfer", out specialEventText) ? (Main.rand.Next(3) != 0 ? Lang.GolferChat(this) : Language.SelectRandom(Lang.CreateDialogFilter((Main.LocalPlayer.golferScoreAccumulated < 2000 ? (Main.LocalPlayer.golferScoreAccumulated < 1000 ? (Main.LocalPlayer.golferScoreAccumulated < 500 ? "GolferQuestsChatterBeginner" : "GolferQuestsChatterApprentice") : "GolferQuestsChatterJourneyman") : "GolferQuestsChatterMaster") + ".")).FormatWith(substitutionObject)) : specialEventText;
|
|
else if (this.type == 633)
|
|
str = this.ShouldBestiaryGirlBeLycantrope() || !this.HasSpecialEventText("BestiaryGirl", out specialEventText) ? Lang.BestiaryGirlChat(this) : specialEventText;
|
|
else if (this.type == 637)
|
|
str = !this.HasSpecialEventText("Cat", out specialEventText) ? Lang.CatChat(this) : specialEventText;
|
|
else if (this.type == 638)
|
|
str = !this.HasSpecialEventText("Dog", out specialEventText) ? Lang.DogChat(this) : specialEventText;
|
|
else if (this.type == 656)
|
|
str = !this.HasSpecialEventText("Bunny", out specialEventText) ? Lang.BunnyChat(this) : specialEventText;
|
|
return str;
|
|
}
|
|
|
|
public object Clone() => this.MemberwiseClone();
|
|
|
|
public bool HasLuckTextForWizard(out string specialEventText)
|
|
{
|
|
specialEventText = (string) null;
|
|
object substitutionObject = Lang.CreateDialogSubstitutionObject(this);
|
|
if (Main.rand.Next(3) != 0)
|
|
return false;
|
|
float normalizedLuck = Main.player[Main.myPlayer].NormalizedLuck;
|
|
if ((double) normalizedLuck == 0.0)
|
|
return false;
|
|
string startsWith = (double) normalizedLuck >= -0.600000023841858 ? ((double) normalizedLuck >= -0.400000005960464 ? ((double) normalizedLuck >= -0.200000002980232 ? ((double) normalizedLuck >= 0.0 ? ((double) normalizedLuck >= 0.25 ? ((double) normalizedLuck >= 0.5 ? ((double) normalizedLuck >= 0.75 ? "WizardSpecialText.LuckIsGodly" : "WizardSpecialText.LuckIsAmazing") : "WizardSpecialText.LuckIsGreat") : "WizardSpecialText.LuckIsGood") : "WizardSpecialText.LuckIsBad") : "WizardSpecialText.LuckIsPoor") : "WizardSpecialText.LuckIsTerrible") : "WizardSpecialText.LuckIsCursed";
|
|
specialEventText = Language.SelectRandom(Lang.CreateDialogFilter(startsWith)).FormatWith(substitutionObject);
|
|
return true;
|
|
}
|
|
|
|
public bool HasSpecialEventText(string specialTextCategoryKey, out string specialEventText)
|
|
{
|
|
specialEventText = (string) null;
|
|
object substitutionObject = Lang.CreateDialogSubstitutionObject(this);
|
|
return Main.LocalPlayer.ZoneGraveyard && Main.rand.Next(3) == 0 && this.GetSpecialEventTextIfNotEmpty(specialTextCategoryKey + "SpecialText.Graveyard", substitutionObject, ref specialEventText) || BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0 && !NPCID.Sets.HasNoPartyText[this.type] && this.GetSpecialEventTextIfNotEmpty(specialTextCategoryKey + "SpecialText.Party", substitutionObject, ref specialEventText) || Main.raining && !Main.IsItStorming && Main.rand.Next(3) == 0 && this.GetSpecialEventTextIfNotEmpty(specialTextCategoryKey + "SpecialText.Rain", substitutionObject, ref specialEventText) || Main.IsItAHappyWindyDay && Main.rand.Next(3) == 0 && this.GetSpecialEventTextIfNotEmpty(specialTextCategoryKey + "SpecialText.Windy", substitutionObject, ref specialEventText) || Main.IsItStorming && Main.rand.Next(3) == 0 && this.GetSpecialEventTextIfNotEmpty(specialTextCategoryKey + "SpecialText.Storm", substitutionObject, ref specialEventText);
|
|
}
|
|
|
|
public bool GetSpecialEventTextIfNotEmpty(
|
|
string specialTextKey,
|
|
object substitutes,
|
|
ref string specialEventText)
|
|
{
|
|
LocalizedText localizedText = Language.SelectRandom(Lang.CreateDialogFilter(specialTextKey));
|
|
if (localizedText == LocalizedText.Empty)
|
|
return false;
|
|
specialEventText = localizedText.FormatWith(substitutes);
|
|
return true;
|
|
}
|
|
|
|
public void CheckDrowning()
|
|
{
|
|
bool flag = Collision.DrownCollision(this.position, this.width, this.height, 1f);
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (flag)
|
|
{
|
|
if (++this.breathCounter >= 7)
|
|
{
|
|
this.breathCounter = 0;
|
|
--this.breath;
|
|
if (this.breath <= 0)
|
|
{
|
|
this.friendlyRegen = 0;
|
|
this.breath = 0;
|
|
this.life -= 2;
|
|
if (this.life % 24 < 2)
|
|
this.netUpdate = true;
|
|
if (this.life <= 0)
|
|
{
|
|
this.life = 1;
|
|
this.StrikeNPCNoInteraction(2, 0.0f, 0);
|
|
if (Main.netMode != 0)
|
|
NetMessage.SendData(28, number: this.whoAmI, number2: 2f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.breath += 3;
|
|
if (this.breath > 200)
|
|
this.breath = 200;
|
|
this.breathCounter = 0;
|
|
}
|
|
}
|
|
if (!flag || Main.rand.Next(20) != 0 || this.lavaWet || this.honeyWet)
|
|
return;
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
if (this.type == 369)
|
|
num2 = 8;
|
|
Dust.NewDust(new Vector2(this.position.X + (float) ((10 + num1) * this.direction), (float) ((double) this.position.Y + (double) num2 + 4.0)), this.width - 8, 8, 34, Scale: 1.2f);
|
|
}
|
|
|
|
public void TryPortalJumping()
|
|
{
|
|
if (!this.townNPC || Main.netMode == 1)
|
|
return;
|
|
PortalHelper.TryGoingThroughPortals((Entity) this);
|
|
}
|
|
|
|
public static void GetMeleeCollisionData(
|
|
Microsoft.Xna.Framework.Rectangle victimHitbox,
|
|
int enemyIndex,
|
|
ref int specialHitSetter,
|
|
ref float damageMultiplier,
|
|
ref Microsoft.Xna.Framework.Rectangle npcRect)
|
|
{
|
|
NPC npc1 = Main.npc[enemyIndex];
|
|
if ((npc1.type >= 430 && npc1.type <= 436 || npc1.type == 591) && (double) npc1.ai[2] > 5.0)
|
|
{
|
|
int num = 34;
|
|
if (npc1.spriteDirection < 0)
|
|
{
|
|
npcRect.X -= num;
|
|
npcRect.Width += num;
|
|
}
|
|
else
|
|
npcRect.Width += num;
|
|
damageMultiplier *= 1.25f;
|
|
}
|
|
else if (npc1.type >= 494 && npc1.type <= 495 && (double) npc1.ai[2] > 5.0)
|
|
{
|
|
int num = 18;
|
|
if (npc1.spriteDirection < 0)
|
|
{
|
|
npcRect.X -= num;
|
|
npcRect.Width += num;
|
|
}
|
|
else
|
|
npcRect.Width += num;
|
|
damageMultiplier *= 1.25f;
|
|
}
|
|
else if (npc1.type == 460)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 30, 14);
|
|
rectangle.X = (int) npc1.Center.X;
|
|
if (npc1.direction < 0)
|
|
rectangle.X -= rectangle.Width;
|
|
rectangle.Y = (int) npc1.position.Y + npc1.height - 20;
|
|
if (!victimHitbox.Intersects(rectangle))
|
|
return;
|
|
npcRect = rectangle;
|
|
damageMultiplier *= 1.35f;
|
|
}
|
|
else if (npc1.type == 417 && (double) npc1.ai[0] == 6.0 && (double) npc1.ai[3] > 0.0 && (double) npc1.ai[3] < 4.0)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = Utils.CenteredRectangle(npc1.Center, new Vector2(100f));
|
|
if (!victimHitbox.Intersects(rectangle))
|
|
return;
|
|
npcRect = rectangle;
|
|
damageMultiplier *= 1.35f;
|
|
}
|
|
else if (npc1.type == 466)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 30, 8);
|
|
rectangle.X = (int) npc1.Center.X;
|
|
if (npc1.direction < 0)
|
|
rectangle.X -= rectangle.Width;
|
|
rectangle.Y = (int) npc1.position.Y + npc1.height - 32;
|
|
if (!victimHitbox.Intersects(rectangle))
|
|
return;
|
|
npcRect = rectangle;
|
|
damageMultiplier *= 1.75f;
|
|
}
|
|
else if (npc1.type == 576 || npc1.type == 577)
|
|
{
|
|
NPC npc2 = npc1;
|
|
bool flag = true;
|
|
int y = npc2.frame.Y;
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 30, 8);
|
|
switch (y)
|
|
{
|
|
case 15:
|
|
specialHitSetter = 2;
|
|
rectangle.Width = 120;
|
|
rectangle.Height = 30;
|
|
num2 = 24;
|
|
break;
|
|
case 16:
|
|
specialHitSetter = 2;
|
|
rectangle.Width = 120;
|
|
rectangle.Height = 60;
|
|
num1 = 10;
|
|
break;
|
|
case 17:
|
|
specialHitSetter = 2;
|
|
rectangle.Width = 100;
|
|
rectangle.Height = 90;
|
|
num1 = 50;
|
|
break;
|
|
case 18:
|
|
specialHitSetter = 2;
|
|
rectangle.Width = 100;
|
|
rectangle.Height = 50;
|
|
num1 = 90;
|
|
num2 = 10;
|
|
break;
|
|
default:
|
|
flag = false;
|
|
break;
|
|
}
|
|
if (!flag)
|
|
return;
|
|
rectangle.X = (int) npc2.Center.X - num1 * npc2.direction;
|
|
if (npc2.direction < 0)
|
|
rectangle.X -= rectangle.Width;
|
|
rectangle.Y = (int) npc2.Center.Y - rectangle.Height + num2;
|
|
if (!victimHitbox.Intersects(rectangle))
|
|
return;
|
|
npcRect = rectangle;
|
|
damageMultiplier *= 1.75f;
|
|
}
|
|
else
|
|
{
|
|
if (npc1.type != 552 && npc1.type != 553 && npc1.type != 554 || (double) npc1.ai[0] <= 0.0 || (double) npc1.ai[0] >= 24.0)
|
|
return;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 34, 14);
|
|
rectangle.X = (int) npc1.Center.X;
|
|
if (npc1.direction < 0)
|
|
rectangle.X -= rectangle.Width;
|
|
rectangle.Y = (int) npc1.position.Y + npc1.height - 20;
|
|
if (!victimHitbox.Intersects(rectangle))
|
|
return;
|
|
npcRect = rectangle;
|
|
damageMultiplier *= 1.35f;
|
|
}
|
|
}
|
|
|
|
public string GetBestiaryCreditId() => ContentSamples.NpcBestiaryCreditIdsByNpcNetIds[this.netID];
|
|
|
|
public override string ToString() => "name:" + this.TypeName + ", active:" + this.active.ToString() + ", whoAmI:" + (object) this.whoAmI;
|
|
}
|
|
}
|