muh
Code:
module Genocide_Movement
class :Game_Character
def passable?(x, y, d, s = EVENT_DISTANCE, n = get_new_coordinates(x, y, d, s))
# Get new coordinates
new_x, new_y, dx, dy = *n
# If coordinates are outside of map: impassable
return false unless $game_map.valid?(new_x, new_y)
# If through is ON: passable
return true if @through
# Get move distance
s *= 0.25
# Standfeld berechnen
fx, fy = x.to_field, y.to_field
# Überprüfen, ob neues Feld betreten wird
cx = ((x - fx).abs < s and 0 < dx*(new_x - x))
cy = ((y - fy).abs < s and 0 < dy*(new_y - y))
#if cx and cy
# return false unless $game_map.passable?(fx, fy, d) and $game_map.passable?(fx + dx, fy + dy, 10 - d)
if cx
return false unless $game_map.passable?(fx, fy, 5 + dx) and $game_map.passable?(fx + dx, fy, 5 - dx)
# Wenn y-Koordinate *,5 ist, Feld daneben prüfen
if y != fy
unless $game_map.passable?(fx, fy + (y <=> fy), 5 + dx) and
$game_map.passable?(fx + dx, fy + (y <=> fy), 5 - dx)
return false
end
unless $game_map.passable?(fx + dx, fy + (y <=> fy), 8) and
$game_map.passable?(fx + dx, fy + (y <=> fy), fy + dy, 2)
return false
end
end
end
if cy
return false unless $game_map.passable?(fx, fy, 5 - 3*dy) and $game_map.passable?(fx, fy + dy, 5 + 3*dy)
# Wenn x-Koordinate *,5 ist, Feld daneben prüfen
if x != fx
unless $game_map.passable?(fx + (x <=> fx), fy, 5 - 3*dy) and
$game_map.passable?(fx + (x <=> fx), fy + dy, 5 + 3*dy)
return false
end
unless $game_map.passable?(fx + (x <=> fx), fy + dy, 4) and
$game_map.passable?(fx + (x <=> fx), fy + dy, 6)
return false
end
end
end
# Loop all events
for event in $game_map.events.values
next if event == self or event.through
# If through is OFF and (self is player => partner graphic as character)
# and event coordinates are consistent with move destination
if #not event.through and event.character_name != "" and
(self != $game_player or event.character_name != "") and
(event.x - new_x).abs < 1 and (event.y - new_y).abs < 1
# impassable
return false
end
end
# If self is not player, player through is OFF coordinates are consistent
# with move destination and your own graphic is the character
if self != $game_player and not $game_player.through and
@character_name != "" and ($game_player.x - new_x).abs < 1 and
($game_player.y - new_y).abs < 1
# impassable
return false
end
# passable
return true
end
end
end
diese boolsche algebra ist die hölle ._.
wie immer ein ostereierscript...viel spaß beim eier bugs finden. habs nicht ausreichend getestet.^^
falls du was finden solltest bescheid geben und mir auf die finger haun.