

The gunblades vibrate, not shoot. They’re like that battery powered knife that allegedly cuts tomatoes 1% better.
I’m not making fun, btw, I fucking love gunblades. They should shoot, though. Lightning’s shoots.


The gunblades vibrate, not shoot. They’re like that battery powered knife that allegedly cuts tomatoes 1% better.
I’m not making fun, btw, I fucking love gunblades. They should shoot, though. Lightning’s shoots.


So are you paid by the comment or what?


I do get to, actually, through a little process called shame.
You want to be able to control everyone and force them to act the way you want them to act.
We already do this. You cannot murder, you can’t piss in public, a lot of states don’t allow open carry, you can be shooed off the premises for smoking in the wrong areas. And, you can’t pull your dick out. “Controlling” the way people act is actually absurdly common.


I’m asking you to keep your cock in your pants.
It is so fucked that in modern life I have to waste my time with conservatives trying to endlessly relitigate exactly what about being a pedophile is bad, and with tech fetishists exactly why being an asshole in public is wrong.
Spaceballs, if you’re standing somewhere over the grand canyon with your phone out, obviously filming a family of three that does not want to be filmed, what the fuck are you doing? Do you find joy in being an unlikeable loser? Do you often think you just aren’t lonely enough?
I don’t know what it is you want me to say to you. In my ideal world, Facebook wouldn’t be allowed to make this product in the first place.


This is like asking how we decide that your cock isn’t visible through your pants. Learn to be modest, I don’t know.


There is a trick I learned from Firebelley Games (a youtube channel) that is just as simple to spin up and use as the Enum + match strategy but without sacrificing any versatility.
I actually like it better than the Node-based pattern because you don’t have to set up much boilerplate, and you really don’t need to think about how different state classes might share data. Plus, none of it will clog up your scene tree or need to be pointlessly instantiated by the engine.
If you’re on mobile, I would recommend reading this in horizontal view.
This is all it takes to spin one up:
class_name Player2D extends Node2D
var _state_machine := CallableStateMachine.new();
func _ready() -> void:
_state_machine.add_state(
_state_idle_update,
Callable(),
Callable()
);
_state_machine.add_state(
_state_jump_update,
_state_jump_enter,
Callable()
);
# Set first state
_state_machine.switch_to(_state_idle_update);
func _process(_delta: float) -> void:
_state_machine.update();
# These are your state functions.
func _state_idle_update() -> void;
func _state_jump_update() -> void;
func _state_jump_enter() -> void;
The only thing your state machine actually needs to know is which functions are paired together. You can use Callable() to fill in any steps you’re not actually using.
func _ready() -> void:
_state_machine.add_state(
_state_idle_update, # update
_state_idle_enter, # enter
Callable(), # exit
);
You call update() yourself, so its timing is completely under your control.
func _process(delta: float) -> void:
velocity.y += 9.8 * delta;
_state_machine.update();
move_and_slide();
States are keyed by their own update step, so there’s no extra overhead for string names or Enums or the like, and you still get your IDE’s tab autocomplete to help you with 'em.
func _state_idle_update() -> void:
if Input.is_action_pressed('jump'):
_state_machine.switch_to(_state_jump_update);
All state functions exist within the Player2D script, so you have complete access to any shared data or component that Player2D does.
var _anim: AnimatedSprite2D = $An...;
var _jump_times := 0;
func _state_idle_enter() -> void:
_anim.play('idle');
_jump_times = 0;
func _state_jump_enter() -> void:
_anim.play('jump');
_jump_times += 1;
A basic implementation of CallableStateMachine is none too complicated, and you can reuse it anywhere.
class_name CallableStateMachine extends RefCounted
var _states_map := {} as Dictionary[Callable, CallableState];
var _current_state: CallableState = null;
func add_state(update: Callable, enter: Callable, exit: Callable) -> void:
_states_map.set(update, CallableState.new(update, enter, exit));
func switch_to(update: Callable) -> void:
if not _states_map.has(update):
return;
exit();
_current_state = _states_map.get(update);
enter();
func update() -> void:
if _current_state:
_current_state.update.call();
func enter() -> void:
if _current_state:
_current_state.enter.call();
func exit() -> void:
if _current_state:
_current_state.exit.call();
# This is just a struct to package the set of functions.
class CallableState extends RefCounted:
var update: Callable;
var enter: Callable;
var exit: Callable;
func _init(update: Callable, enter: Callable, exit: Callable) -> void:
self.update = update;
self.enter = enter;
self.exit = exit;
You can do a lot from this base setup, too. I have mine setup such that if I name my functions like this:
func _state_idle() -> void;
func _state_idle__update(delta: float) -> void;
func _state_idle__unhandled_input(event: InputEvent) -> void;
func _state_idle__exit() -> void;
My state machine automatically knows which step each function is for by the keyword after the double-unders (e.g. ‘__update’), as well as that the nameless _state_idle() is the enter step and the key that I use to switch_to().


They don’t choose to, but they’re choosing not to now because they can’t afford it?


Poor people don’t have children?


Everything in your life is done for money. Every music record, every pithy article, every donation fund, every non-profit.
If you think that Ben is doing so disproportionately, then say so.
There is nothing I find more irritating than this weasely, faux-innocent JAQing from people who just happen to dislike the person currently leading the charge.


it’s fucked that it took Legos to do so,
Your contempt for the meager simpletons you must suffer the indignity of standing shoulder to shoulder with is not doing us any favors. Leave it at the door.


I also think it’s pretty fucked that it took a Lego collection to wake people up
I imagine this is deeply contemptuous to you, but this is the kind of thing that gets people invested in politics.
For one, there could be a lot of young people here who missed BLM.
For two, the typical person is really fucking cynical. It may just be that this lego thing actually feels achievable, whereas state-sanctioned murder is like… even BLM didn’t accomplish anything.
I understand that this may be embarassing for you, that it’s about legos, but where there is energy, you should lean into it. There are people who care now about what these police are doing, so be the voice in their ear that guides them beyond this one incident.


Make an accusation or don’t, stop being a coward.


Who is ‘we’ exactly? Did I need someone’s permission?
I’m not reading the article because I’m lazy.


should people be able to record it without asking the stabber for permission or not?
You can do this with a clearly visible camera.
You know, I think Goat and his ilk should be allowed to have their secret camera glasses, but only if they’re required by law to look like this.


Well, fucking don’t.


I wouldn’t even like what I do if I had to use this shit.
Stanley Parable button pusher life for real.


The dog can’t decide (as much as it does decide anything) to drool when it hears the bell,
I do think that it is a mistake to assume that the dog is not conscious, or not conscious enough, to know what the bell means.
Like, we could say that the dog is operating purely on instinct, but that would require that we think of them as philosophical zombies completely incapable of self-awareness.
It is also possible that the dog has learned the bell sound as a “word” that means “food” and simply agrees that it would like some food soon. Not all that different from me asking a coworker if they want to get sandwiches.


I’m not entirely sure what conversation you’re wrapping people into. I don’t know what they say about battered wife syndrome, you would have to tell us.
That said, I think you’re missing the push and pull nature of spousal abuse. It’s not just punching your wife, it’s creating an unstable environment that the victim believes they can overcome and that it is valuable to overcome it.
The negative reinforcement side, that is the abuse and the removal of it for “good behavior”, is often paired with shame. The wife is not just ducking an uppercut, she is made to believe that she deserved it. Would you divorce your husband if you thought you were at fault for all of your marital problems? Abuse victims often think that they are lucky someone is even willing to put up with them.
The positive reinforcement side, that is the honeymoon-like love-bombing that happens between abusive episodes, is what the spouse actually wants. But it’s given only intermittently, like a skinner box (another concept you should look up), which creates a dynamic very much like gambling to make an addict of the victim. They spend most of their time trying to figure out how to create those good times without realizing that it’s being deliberately withheld from them like a dangling carrot on stick.
Both of these contribute to why the spouse stays.
If your contention has more to do with operant conditioning not being inherently evil, uh, that would be true. It’s a normal psychological function. Abusers… abuse it, but there are other reasons why it might be useful to associate a sound with food, for instance.
Because the world is sick. I don’t know, what kind of answer are you looking for?