Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ AI_119_Dandelion()

void Terraria.NPC.AI_119_Dandelion ( )
inlineprivate

Definition at line 40194 of file NPC.cs.

40195 {
40196 if (!Main.IsItAHappyWindyDay && timeLeft > 10)
40197 {
40198 timeLeft = 10;
40199 }
40200 bool flag = false;
40201 float num = 0f;
40202 float num2 = 0f;
40205 if (targetData.Type == NPCTargetType.Player)
40206 {
40207 Rectangle hitbox = targetData.Hitbox;
40208 float windSpeedCurrent = Main.windSpeedCurrent;
40209 num = (float)hitbox.Center.X - base.Center.X;
40210 num2 = Math.Abs(num);
40211 flag = Math.Abs((float)hitbox.Center.Y - base.Center.Y) < 100f && num2 < 600f && ((num > 0f && windSpeedCurrent > 0f) || (num < 0f && windSpeedCurrent < 0f));
40212 }
40213 if (ai[0] == 1f)
40214 {
40215 localAI[0] = 0f;
40216 if (num2 < 500f)
40217 {
40218 localAI[0] = 1f;
40219 }
40220 if (Main.netMode == 1)
40221 {
40222 return;
40223 }
40224 if (!flag)
40225 {
40226 ai[0] = 0f;
40227 netUpdate = true;
40228 }
40229 else
40230 {
40231 if (localAI[0] != 1f)
40232 {
40233 return;
40234 }
40235 localAI[1] += 1f;
40236 if (localAI[1] > 80f)
40237 {
40238 ai[0] = 0f;
40239 netUpdate = true;
40240 }
40241 else
40242 {
40243 if (localAI[1] != 40f)
40244 {
40245 return;
40246 }
40247 for (int i = 0; i < 1 + Main.rand.Next(3); i++)
40248 {
40249 int num3 = -1;
40250 if (num > 0f)
40251 {
40252 num3 = 1;
40253 }
40254 Vector2 vector = new Vector2(num3 * Main.rand.Next(-2, 10), 10 + Main.rand.Next(-6, 6));
40255 Vector2 vector2 = new Vector2(2f * (float)num3, -2f);
40256 vector2 += vector * 0.25f;
40257 if (vector2.Y > -3f)
40258 {
40259 vector2.Y = -3f;
40260 }
40261 Vector2 vector3 = base.Center + vector;
40262 vector3.X += num3 * 6;
40263 int num4 = 7;
40264 Projectile.NewProjectile(GetSpawnSource_ForProjectile(), vector3, vector2, 836, num4, 1f, Main.myPlayer, 0f, target);
40265 }
40266 netUpdate = true;
40267 }
40268 }
40269 }
40270 else if (ai[0] == 0f)
40271 {
40272 localAI[0] = 0f;
40273 localAI[1] = 0f;
40274 if (Main.netMode != 1 && flag)
40275 {
40276 ai[0] = 1f;
40277 netUpdate = true;
40278 }
40279 }
40280 }
static double Abs(double value)
int timeLeft
Definition NPC.cs:457
float[] localAI
Definition NPC.cs:449
NPCAimedTarget GetTargetData(bool ignorePlayerTankPets=true)
Definition NPC.cs:864
float[] ai
Definition NPC.cs:447
IEntitySource GetSpawnSource_ForProjectile()
Definition NPC.cs:87526
bool netUpdate
Definition NPC.cs:507
int target
Definition NPC.cs:459
static void TargetClosestDownwindFromNPC(NPC searcher, float distanceMaxX, bool faceTarget=true, Vector2? checkPosition=null)
Definition NPCUtils.cs:289

References System.Math.Abs(), Terraria.NPC.ai, Terraria.NPC.GetSpawnSource_ForProjectile(), Terraria.NPC.GetTargetData(), Terraria.Main.IsItAHappyWindyDay, Terraria.NPC.localAI, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.NPC.netUpdate, Terraria.Projectile.NewProjectile(), Terraria.Main.rand, Terraria.NPC.target, Terraria.Utilities.NPCUtils.TargetClosestDownwindFromNPC(), Terraria.NPC.timeLeft, Microsoft.Xna.Framework.Graphics.Vector2, and Terraria.Main.windSpeedCurrent.

Referenced by Terraria.NPC.AI().