//////////////// public override void Initialize() { this.IsRightClick = false; this.DowseFxTimer = 0; this.TileData = new TileData(); this.WitchingData = new WitchingTargetData(); this.DiviningData = new DiviningTargetData(); }
protected bool CastRareNpcDowse(Player player, Vector2 aiming_at, int tile_range) { var mymod = (DowsingMod)this.mod; var modplayer = player.GetModPlayer <DowsingPlayer>(); bool dowsed = false; var npc_poses = this.GetNpcPositions(); NPC npc = null; var rare_npc_type_list = WitchingTargetData.GetCurrentRareNpcTypes(); if (rare_npc_type_list.Count == 0) { return(false); } var rare_npc_type_set = new HashSet <int>(rare_npc_type_list); int traveled = 0; this.CurrentBeamTravelDistance = 0; this.CastDowseBeamWithinCone(player, aiming_at, new Utils.PerLinePoint(delegate(int tile_x, int tile_y) { if (!TileWorldHelpers.IsWithinMap(tile_x, tile_y) || traveled >= tile_range) { return(false); } if (npc_poses.ContainsKey(tile_x) && npc_poses[tile_x].ContainsKey(tile_y)) { npc = Main.npc[npc_poses[tile_x][tile_y]]; if (rare_npc_type_set.Contains(npc.type)) { dowsed = true; } } if (dowsed) { this.RenderRodHitFX(player, tile_x, tile_y); } else { traveled++; if (TileHelpers.IsSolid(Framing.GetTileSafely(tile_x, tile_y), false, false)) { traveled++; } } this.CurrentBeamTravelDistance = traveled; if ((mymod.DEBUGFLAGS & 1) != 0) { DebugHelpers.Print("current rare npcs", (this.III++) + " " + string.Join(",", rare_npc_type_set.ToArray()), 20); //var dust = Dust.NewDustPerfect( new Vector2( tile_x * 16, tile_y * 16 ), 259, Vector2.Zero, 0, Color.Red, 0.75f ); //dust.noGravity = true; } return(!dowsed); })); return(dowsed); }
private void RunRodPassiveBehavior() { var mymod = (DowsingMod)this.mod; if (this.WitchingData.IsVirtualTargetDowsed) { WitchingTargetData.RunSpawnRateGauging(this.player); } }