// Token: 0x060001CD RID: 461 RVA: 0x000084D4 File Offset: 0x000068D4 public List <short> get_Rango_hechizo(Celda celda_personaje, HechizoStats datos_hechizo, Mapa mapa) { List <short> list = new List <short>(); foreach (Celda celda in HechizoShape.Get_Lista_Celdas_Rango_Hechizo(celda_personaje, datos_hechizo, this.cuenta.juego.mapa, this.cuenta.juego.personaje.caracteristicas.alcanze.total_stats)) { bool flag = celda == null || list.Contains(celda.id); if (!flag) { bool flag2 = datos_hechizo.es_celda_vacia && this.get_Celdas_Ocupadas.Contains(celda.id); if (!flag2) { bool flag3 = celda.tipo != TipoCelda.NO_CAMINABLE || celda.tipo != TipoCelda.OBJETO_INTERACTIVO; if (flag3) { list.Add(celda.id); } } } } bool es_lanzado_con_vision = datos_hechizo.es_lanzado_con_vision; if (es_lanzado_con_vision) { for (int i = list.Count - 1; i >= 0; i--) { bool flag4 = Pelea.get_Linea_Obstruida(mapa, celda_personaje, mapa.get_Celda_Id(list[i]), this.get_Celdas_Ocupadas); if (flag4) { list.RemoveAt(i); } } } return(list); }
// Token: 0x060001CE RID: 462 RVA: 0x0000861C File Offset: 0x00006A1C public static bool get_Linea_Obstruida(Mapa mapa, Celda celda_inicial, Celda celda_destino, List <short> celdas_ocupadas) { double num = (double)celda_inicial.x + 0.5; double num2 = (double)celda_inicial.y + 0.5; double num3 = (double)celda_destino.x + 0.5; double num4 = (double)celda_destino.y + 0.5; double lastX = (double)celda_inicial.x; double lastY = (double)celda_inicial.y; bool flag = Math.Abs(num - num3) == Math.Abs(num2 - num4); double num5; double num6; double num7; int num8; if (flag) { num5 = Math.Abs(num - num3); num6 = (double)((num3 > num) ? 1 : -1); num7 = (double)((num4 > num2) ? 1 : -1); num8 = 1; } else { bool flag2 = Math.Abs(num - num3) > Math.Abs(num2 - num4); if (flag2) { num5 = Math.Abs(num - num3); num6 = (double)((num3 > num) ? 1 : -1); num7 = (num4 - num2) / num5; num7 *= 100.0; num7 = Math.Ceiling(num7) / 100.0; num8 = 2; } else { num5 = Math.Abs(num2 - num4); num6 = (num3 - num) / num5; num6 *= 100.0; num6 = Math.Ceiling(num6) / 100.0; num7 = (double)((num4 > num2) ? 1 : -1); num8 = 3; } } int num9 = Convert.ToInt32(Math.Round(Math.Floor(Convert.ToDouble(3.0 + num5 / 2.0)))); int num10 = Convert.ToInt32(Math.Round(Math.Floor(Convert.ToDouble(97.0 - num5 / 2.0)))); int num11 = 0; while ((double)num11 < num5) { double num12 = num + num6; double num13 = num2 + num7; int num14 = num8; int num15 = num14; if (num15 != 2) { if (num15 != 3) { bool flag3 = Pelea.get_Es_Celda_Obstruida(Math.Floor(num12), Math.Floor(num13), mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag3) { return(true); } lastX = Math.Floor(num12); lastY = Math.Floor(num13); } else { double num16 = Math.Ceiling(num * 100.0 + num6 * 50.0) / 100.0; double num17 = Math.Floor(num * 100.0 + num6 * 150.0) / 100.0; double num18 = Math.Floor(Math.Abs(Math.Floor(num16) * 100.0 - num16 * 100.0)) / 100.0; double num19 = Math.Ceiling(Math.Abs(Math.Ceiling(num17) * 100.0 - num17 * 100.0)) / 100.0; double num20 = Math.Floor(num13); bool flag4 = Math.Floor(num16) == Math.Floor(num17); if (flag4) { double num21 = Math.Floor(num12); bool flag5 = (num16 == num21 && num17 < num21) || (num17 == num21 && num16 < num21); if (flag5) { num21 = Math.Ceiling(num12); } bool flag6 = Pelea.get_Es_Celda_Obstruida(num21, num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag6) { return(true); } lastX = num21; lastY = num20; } else { bool flag7 = Math.Ceiling(num16) == Math.Ceiling(num17); if (flag7) { double num21 = Math.Ceiling(num12); bool flag8 = (num16 == num21 && num17 < num21) || (num17 == num21 && num16 < num21); if (flag8) { num21 = Math.Floor(num12); } bool flag9 = Pelea.get_Es_Celda_Obstruida(num21, num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag9) { return(true); } lastX = num21; lastY = num20; } else { bool flag10 = Math.Floor(num18 * 100.0) <= (double)num9; if (flag10) { bool flag11 = Pelea.get_Es_Celda_Obstruida(Math.Floor(num17), num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag11) { return(true); } lastX = Math.Floor(num17); lastY = num20; } else { bool flag12 = Math.Floor(num19 * 100.0) >= (double)num10; if (flag12) { bool flag13 = Pelea.get_Es_Celda_Obstruida(Math.Floor(num16), num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag13) { return(true); } lastX = Math.Floor(num16); lastY = num20; } else { bool flag14 = Pelea.get_Es_Celda_Obstruida(Math.Floor(num16), num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag14) { return(true); } lastX = Math.Floor(num16); lastY = num20; bool flag15 = Pelea.get_Es_Celda_Obstruida(Math.Floor(num17), num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag15) { return(true); } lastX = Math.Floor(num17); } } } } } } else { double num22 = Math.Ceiling(num2 * 100.0 + num7 * 50.0) / 100.0; double num23 = Math.Floor(num2 * 100.0 + num7 * 150.0) / 100.0; double num24 = Math.Floor(Math.Abs(Math.Floor(num22) * 100.0 - num22 * 100.0)) / 100.0; double num25 = Math.Ceiling(Math.Abs(Math.Ceiling(num23) * 100.0 - num23 * 100.0)) / 100.0; double num21 = Math.Floor(num12); bool flag16 = Math.Floor(num22) == Math.Floor(num23); if (flag16) { double num20 = Math.Floor(num13); bool flag17 = (num22 == num20 && num23 < num20) || (num23 == num20 && num22 < num20); if (flag17) { num20 = Math.Ceiling(num13); } bool flag18 = Pelea.get_Es_Celda_Obstruida(num21, num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag18) { return(true); } lastX = num21; lastY = num20; } else { bool flag19 = Math.Ceiling(num22) == Math.Ceiling(num23); if (flag19) { double num20 = Math.Ceiling(num13); bool flag20 = (num22 == num20 && num23 < num20) || (num23 == num20 && num22 < num20); if (flag20) { num20 = Math.Floor(num13); } bool flag21 = Pelea.get_Es_Celda_Obstruida(num21, num20, mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag21) { return(true); } lastX = num21; lastY = num20; } else { bool flag22 = Math.Floor(num24 * 100.0) <= (double)num9; if (flag22) { bool flag23 = Pelea.get_Es_Celda_Obstruida(num21, Math.Floor(num23), mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag23) { return(true); } lastX = num21; lastY = Math.Floor(num23); } else { bool flag24 = Math.Floor(num25 * 100.0) >= (double)num10; if (flag24) { bool flag25 = Pelea.get_Es_Celda_Obstruida(num21, Math.Floor(num22), mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag25) { return(true); } lastX = num21; lastY = Math.Floor(num22); } else { bool flag26 = Pelea.get_Es_Celda_Obstruida(num21, Math.Floor(num22), mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag26) { return(true); } lastX = num21; lastY = Math.Floor(num22); bool flag27 = Pelea.get_Es_Celda_Obstruida(num21, Math.Floor(num23), mapa, celdas_ocupadas, (int)celda_destino.id, lastX, lastY); if (flag27) { return(true); } lastY = Math.Floor(num23); } } } } } num = (num * 100.0 + num6 * 100.0) / 100.0; num2 = (num2 * 100.0 + num7 * 100.0) / 100.0; num11++; } return(false); }