Goonstation Forums
[Feature] Making Spatial Tears more "fun" - Printable Version

+- Goonstation Forums (https://forum.ss13.co)
+-- Forum: Discussion (https://forum.ss13.co/forumdisplay.php?fid=6)
+--- Forum: Patches (https://forum.ss13.co/forumdisplay.php?fid=30)
+--- Thread: [Feature] Making Spatial Tears more "fun" (/showthread.php?tid=10517)



[Feature] Making Spatial Tears more "fun" - kyle2143 - 05-21-2018

Do you fucking hate Spatial Tears? Well get ready to stop. Or get ready to learn to hate them in a whole new way.

Now, instead of being unable to pass through Spatial Tears, you can! But it's not so simple. It teleports you to a random non-space/non-dense tile on the other side of the tear and you take a slight amount of random damage(brute,burn,tox). Currently only Humans and Silicons can pass through the Tear, I was thinking about allowing Silicons to pass through completely unimpeded, but couldn't commit either way so they take damage, it can be removed if that's preferred.

The other exciting part is that now when the Spatial Tear first appears, it spawns a small amount of random critters. Most of them, dangerous. Now security should have something to do to protect the station besides beating up greyshirts and chasing changelings. 

The final thing is that I added a "new" random event, Multiple Spatial Tears. Now that they are passable and a bit more interesting than just blocking people off, I felt like spawning several of them could be fun. This could be removed

Video demonstration:   https://streamable.com/yp0kj

Onto the more technical side to describe what was done.

- All the changes were made to /datums/randomevents/spatial_tear.dm. I made a new datum which contains an individual tear. The random event "Spatial Tear" now creates one of those datums and adds it to a list of individual tears. Similarly the Multiple Spatial Tears just does the same that loops a random amount of times between 3 and 7. (If I got for loop indexing right)

- Each individual tear contains a list of turfs adjacent turfs from the North/South or East/West depending on whether it's a Vertical or Horizontal tear as it creates each tear object(the single tile forcefield object). Then it removes any turf that is space or dense so it usually becomes a relatively short list. When a human or sillicon mob enters the object it simply picks a random turf from that list on the other side of the Spatial Tear. I was pretty pleased with myself about that actually, making the list small, and just selecting a random element when a mob passes through. Which was much more efficient than my first attempt at it. 

- There were some "problems" I came across that could be corrected if anyone wants. The main one was spawning critters. My original plan was to have them spawn at random intervals throughout the duration of the Spatial Tear, but I wasn't really sure how to get that working and settled just for spawning them at the start. 

- The other problem was getting the list of critters to spawn from. I wanted to use the "critters" list in /datum/adventure_submode/critter and just pick from it, but for the life of me I could not get it to work. I literally spent 3 hours on it constantly getting runtime errors whenever I tried to spawn them that way. 

- Assigning damage to silicons, currently cyborgs will take damage, I stole that from somewhere else, but AI shells and whatnot will not. I figured that was fine since there are very few of them anyway.

- The last one is that Multiple and Single spatial tear events are now both available in the random event rotation at the same rate since they are in that object path. I didn't want to mess with that code so I just left it as is. Maybe make the single tear a minor even, I'm not sure.

https://github.com/goonstation/goonstation-2016/pull/60


RE: [Feature] Making Spatial Tears more "fun" - Noah Buttes - 05-21-2018

I'm going to recommend removing wendigo kings from the spawn list entirely and replacing the zombies with skeleton variants.

Wendigo kings are robust as hell and zombies are incredibly frustrating to fight since they just instant kill you if they manage to knock you down.


RE: [Feature] Making Spatial Tears more "fun" - kyle2143 - 05-21-2018

Ah, yeah I can make that change. Honestly I don't know if I've ever run into a windingo, but they seemed funny so I added them in. and I'll change zombies too. I forgot that they were strong.

Edit: yeah it's done. That's the easiest thing to change, the way I have it now so I can add or remove whatever to make it better.


RE: [Feature] Making Spatial Tears more "fun" - Frank_Stein - 05-21-2018

Eh, I'm not really a fan of the idea. There's already events that create mobs, events that teleports you, and events that cause damage. Having one that does all of that feels like more of the same.

Spatial tears unique feature is pathway blocking walls. I'd rather see something that builds off that concept than just add a bunch of mobs and danger


RE: [Feature] Making Spatial Tears more "fun" - kyle2143 - 05-21-2018

(05-21-2018, 07:45 PM)Frank_Stein Wrote: Eh, I'm not really a fan of the idea. There's already events that create mobs, events that teleports you, and events that cause damage. Having one that does all of that feels like more of the same.

Spatial tears unique feature is pathway blocking walls. I'd rather see something that builds off that concept than just add a bunch of mobs and danger

That's fair. Personally I always felt like spatial tears were very boring since it just prevented you from going from one place to another, my idea was to sort of keep that same theme of area denial, while also not forcing you to stand still for 3 minutes when trying to get across.

And that's why I chose the random teleportation and damage, to make it suitably dangerous to cross the tear that it would prevent you from doing so if you didn't have a good enough reason. Plus I chose the part about spawning critters so there is a bit more to the event than preventing you from going where you want. And so that the event would have a lasting impact on the station much like the other events such as the meteor storm, ion storm, and radiation storm(treating people for mutation and radiation sickness after the storm has passed) Plus it kind of fit thematically in my mind: a tear in space-time, random things would pop out of such a thing. 

The thing that springs to mind that caused this was a week or so ago I was in a round on destiny or clarion where a spatial tear appeared a minute before the shuttle arrived blocking off half the station. I was trapped on the wrong side with like 5 other people, but the RD tried to come to the rescue with the Port-A-Sci and get people across one by one. But he took a while and the tear event ended before he moved half of us, so we just had to walk to the shuttle after waiting. 

I really can't think of a way to make area denial fun as a randomized event. 

Also there is no event in the standard rotation that creates mobs AFAIK.


RE: [Feature] Making Spatial Tears more "fun" - Frank_Stein - 05-21-2018

(05-21-2018, 08:16 PM)kyle2143 Wrote: Also there is no event in the standard rotation that creates mobs AFAIK.

Smaller, shifting walls with timed openings, with clear sight on the other end.
(05-21-2018, 08:16 PM)kyle2143 Wrote: I really can't think of a way to make area denial fun as a randomized event. 
It's not announced, but wasps will randomly spawn on the station


RE: [Feature] Making Spatial Tears more "fun" - babayetu83 - 05-30-2018

i think you should keep the stronger mobs in. multiple ways to skin a cat here (0.1% chance of them spawning, spawning at reduced health, spawning and nothing else spawns from tears, chance to be a friendly mob)


RE: [Feature] Making Spatial Tears more "fun" - kyle2143 - 06-01-2018

I made two more changes that I think will help this. I'm posting both commits on the bottom.

The first makes it very likely that passing through the tear will sever one of your limbs, a further deterrent to trying to pass it without good reason. Also, the base damage amounts for brute,tox,burn have been raised from 5-20 to 10-40. Very dangerous. (Also, the way I handled severing a random limb sickens me, but it works. I copied code from the Rathen's Secret spell that severs random limbs, I couldn't find a good proc anywhere that just allows you to sever lspecified limbs on a mob with a simple call)

The second commit added another very dangerous critter that can spawn. My favorite critter as a matter of fact, the man eating plant. As I said before anyone who implements this can easily change the critters that spawn and the probability of each spawning so I don't think my changing this here is too important but the man eater really is the best critter by far, I only forgot it because it wasn't in the list I compiled my list of critters from.

https://github.com/goonstation/goonstation-2016/commit/228e97078f6bf6afa8eb66fa7570e1404fc77b74

https://github.com/goonstation/goonstation-2016/commit/0a7b0deb7ad5aa4d484637e8479f8939e247b382