I found some here: https://docs.spacebar.chat/setup/server/#setup
Note that the attacker needs to already have access to your Microsoft 365 account to do any of this. Fuck copilot and all, but this isn’t something they couldn’t achieve before.
Love how the free spot is “no conclave update” lol
One attendee and the shooter are dead
It depends entirely on the company you work for. Even then, I wouldn’t exactly describe the work as “chill”
This would make a pretty evil Zedruu gift
Thematically awesome/terrifying
I patched together some version of this using nested dictionaries:
var abilities: Dictionary = {
AbilityData.Trigger.BEFORE_ATTACK : {},
AbilityData.Trigger.ON_ATTACK : {},
AbilityData.Trigger.ON_HIT : {},
AbilityData.Trigger.ON_KILL : {},
AbilityData.Trigger.ON_DEATH : {},
AbilityData.Trigger.ON_JUMP : {},
AbilityData.Trigger.PASSIVE : {}
}
with each value being another key:value pair of { "ability_id": <ability-node> }
so I can keep a reference to the Ability node and use dictionary functions like .has() to check if a character has a specific ability:
func has_ability(ability_data: AbilityData) -> bool:
if abilities[ability_data.trigger_type].has(ability_data.id):
return true
return false
Then when a trigger fires, it calls this (I omitted the return code):
// Activates all abilities with the specified trigger type. Returns an array containing each ability that was activated this way.
//trigger_type is an enum
//data is just a resource containing things like position, target, ability owner, etc
func trigger(trigger_type: AbilityData.Trigger, data: AbilityActivationData) -> Array[Ability]:
var abilities_to_activate: Dictionary = abilities.get(trigger_type)
// Loops through the list of Ability nodes.
for ability in abilities_to_activate.values():
ability.activate(data)
abilities_activated.append(ability)
This seems to work, but it still gives me that tickling sensation that it could be a little cleaner.
I think I understand…
Instead of the player iterating through and calling all of its abilities, the ability just connects directly to whichever signal it needs on the player?
My current setup is to add each Ability as a node to the player, so right now it follows the “call down, signal up” adage that I hear everyone say. What would be a good way to implment the other way? I assume I should rework my current setup otherwise it’d be “signal down, signal up”?
Win11 doesn’t let you past setup if you dont have an internet connection.
Walls are in shambles rn
I switched to heroes of the storm and I’m actually finding it more fun than league has been lately. Games are quicker and more straightforward, also has MULTIPLE MAPS!!
Well I’ll be damned!
Try forge, it has AI you can play against if your friends don’t wanna play.
Oh hey, a Star Wars The Gathering mechanic got ported to the actual game!
Here’s an absolute banger build I cooked up:
Basically spin around the tileset vacuuming up as many enemies as you can. After the tornado ends, cast Sickening Pulse immediately. Funny business ensues.
It actually does pretty well in steel path missions, but it does almost no damage to high armour units, even with 10 corrosive stacks. Also completely useless against Overguard units, since for some reason Elemental Sandstorm doesn’t seem to apply to them.
Just finished building my [[Gonti, Lord of Luxury]] deck… This is an interesting sidegrade. The extra colours are nice, although it’ll make it harder to go big mana with [[Cabal Coffers]] and crew. I guess that’s why they gave him the first ability.
Also this is a really cool artwork!
Treasure Shelob :o
Thanks for your input! The other commenters pointed out that I can use Godot’s is_instance_valid()
function to check if the bullet’s owner exists before attempting to call anything on it, so will be reworking the system to use #2 + that.
Yep it’s not near finished. This is one of those projects that’s sat in my “keep an eye on it” bookmarks for a good while, I figured I’d post it to get some attention on it, because it does look very promising.