Mysterious Figure
kiwifarms.net
- Joined
- Sep 9, 2023
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
bear hammer said:That kind of reminds me of the dream I had about her while I was banned.
In the dream I was walking out of a movie theater, and I just randomly met Zoey. We just instantly clicked and ended up talking for hours about kiwi farms, about forum drama and such. It was like some strange parasocial bond forged in pure autism.
Dream zoey was funny, chill, and way more self aware than I expected. At the end of the night she offered to drive me home, and the whole thing felt weirdly wholesome.
Then I woke up and felt this pit in my stomach like, “Oh. Right. She doesn’t exist in my life."
pub fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World) -> RunState {
let mut positions = ecs.write_storage::<Position>();
let players = ecs.read_storage::<Player>();
let mut viewsheds = ecs.write_storage::<Viewshed>();
let entities = ecs.entities();
let combat_stats = ecs.read_storage::<Attributes>();
let mut map = ecs.fetch_mut::<Map>();
let mut wants_to_melee = ecs.write_storage::<WantsToMelee>();
let mut entity_moved = ecs.write_storage::<EntityMoved>();
let mut doors = ecs.write_storage::<Door>();
let mut blocks_visibility = ecs.write_storage::<BlocksVisibility>();
let mut blocks_movement = ecs.write_storage::<BlocksTile>();
let mut renderables = ecs.write_storage::<Renderable>();
let bystanders = ecs.read_storage::<Bystander>();
let vendors = ecs.read_storage::<Vendor>();
let mut result = RunState::AwaitingInput;
let mut swap_entities : Vec<(Entity, i32, i32)> = Vec::new();
for (entity, _player, pos, viewshed) in (&entities, &players, &mut positions, &mut viewsheds).join() {
if pos.x + delta_x < 0 || pos.x + delta_x > map.width-1 || pos.y + delta_y < 0 || pos.y + delta_y > map.height - 1 { return RunState::AwaitingInput; }
let destination_idx = map.xy_idx(pos.x + delta_x, pos.y + delta_y);
let entities_at_destination: Vec<Entity> = map.tile_content[destination_idx].iter().cloned().collect();
for potential_target in entities_at_destination {
map.populate_blocked();
if potential_target == entity { return AwaitingInput }
let bystander = bystanders.get(potential_target);
let vendor = vendors.get(potential_target);
if bystander.is_some() || vendor.is_some() {
swap_entities.push((potential_target, pos.x, pos.y));
pos.x = min(map.width-1 , max(0, pos.x + delta_x));
pos.y = min(map.height-1, max(0, pos.y + delta_y));
entity_moved.insert(entity, EntityMoved{}).expect("Unable to insert marker");
viewshed.dirty = true;
let mut ppos = ecs.write_resource::<Point>();
ppos.x = pos.x;
ppos.y = pos.y;
result = RunState:PlayerTurn;
} else {
let target = combat_stats.get(potential_target);
if let Some(_target) = target {
wants_to_melee.insert(entity, WantsToMelee{ target: potential_target }).expect("Add target failed");
return RunState:PlayerTurn;
}
}
let door = doors.get_mut(potential_target);
/*if let Some(door) = door {
//TODO interact with doors and chests etc. with an Interact key like E for more intentional play
let glyph = renderables.get_mut(*potential_target).unwrap();
match door.open {
false => {
door.open = true;
blocks_visibility.remove(*potential_target);
blocks_movement.remove(*potential_target);
glyph.glyph = rltk::to_cp437('/');
viewshed.dirty = true;
}
true => {
/*
door.open = false;
blocks_visibility.insert(*potential_target, BlocksVisibility {}).expect("Couldn't add closing Door to blocks_visibility @player.rs");
blocks_movement.insert(*potential_target, BlocksTile{}).expect("Couldn't add closing Door to blocks_movement @player.rs");
glyph.glyph = rltk::to_cp437('+');
viewshed.dirty = true;
*/
}
_ => {
panic!("Door in unknown state @player.rs")
}
}
}
*/
if let Some(door) = door {
door.open = true;
blocks_visibility.remove(potential_target);
blocks_movement.remove(potential_target);
let glyph = renderables.get_mut(potential_target).unwrap();
glyph.glyph = rltk::to_cp437('/');
viewshed.dirty = true;
result = RunState:PlayerTurn;
}
}
map.populate_blocked();
if !map.blocked[destination_idx] {
pos.x = min(map.width-1 , max(0, pos.x + delta_x));
pos.y = min(map.height-1, max(0, pos.y + delta_y));
entity_moved.insert(entity, EntityMoved{}).expect("Unable to insert marker");
viewshed.dirty = true;
let mut ppos = ecs.write_resource::<Point>();
ppos.x = pos.x;
ppos.y = pos.y;
result = RunState:PlayerTurn;
match map.tiles[destination_idx] {
TileType:DownStairs => result = RunState::NextLevel,
TileType::UpStairs => result = RunState:PreviousLevel,
_ => {}
}
}
}
for m in swap_entities.iter() {
let their_pos = positions.get_mut(m.0);
if let Some(their_pos) = their_pos {
their_pos.x = m.1;
their_pos.y = m.2;
result = RunState:PlayerTurn;
}
}
result
}
John Deere 6359TL007 | |
turbocharged diesel | |
6-cylinder | |
liquid-cooled | |
Displacement | 359 ci 5.9 L |
Bore/Stroke | 4.193x4.331 inches 107 x 110 mm |
Power | 114.4 hp 85.3 kW |
Rated RPM | 2400 |
Starter volts | 12 |
Oil capacity | 13.21 qts 12.5 L |
Coolant capacity | 20.1 qts 19.0 L |
No need. This meme is about online friends/partners who want to chill irl but can't cuz of physical distance and that makes them sad. We've all been there methinks. So I'm guessing you wanted to share that meme with someone who relates!View attachment 7275200
No I'm not explaining, fuck you.