Commit Graph

4290 Commits

Author SHA1 Message Date
Tim
eab009467a [NO GBP] Fix girder construction balloon_alert runtimes (#66079)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-04-10 20:39:40 -07:00
tralezab
b34f810f0c Festival Sect is back in 2022! (#64731)
Adds the "Festival Sect" to chaplains, focusing on healing and religious acts through music.
2022-04-10 16:35:28 -05:00
cacogen
07022a3ffb Makes navigate verb use landmarks instead of navigation beacons (#65906)
About The Pull Request

#65741 replaced wayfinding pinpointers with the navigate verb.

However, one of the features of wayfinding pinpointers was the ability to edit the codes of the navigation beacons they pointed to in order to change the names of the destinations in their list.

While it makes sense that an in-game object can be fallible, it doesn't make a lot of sense for a UI button that creates a path only the player can see. People will expect it to be objective and reliable.

So this removes that in favour of landmarks that add their location to a global list used by the verb on LateInitialize() and delete themselves afterwards.

StrongDMM_4KNvlSYNy5.png

This also adds "Nearest Way Up" and "Nearest Way Down" to the navigate destination list. This paths to the nearest staircase or ladder.
Why It's Good For The Game

    Removes confusion for newer players on the off-chance somebody decides to modify destination names of wayfinding beacons
    Makes mapping these easier, because instead of placing an underfloor navigation beacon, you're placing a map pin that is above most things on the map
    Makes the existence of this feature more obvious to mappers by replacing underfloor wayfinding beacons that look identical to other navigation beacons with bright red pins (I noticed when looking at Ice Box for this PR that some wayfinding beacons have been removed in areas that have been remapped since I placed them)
    Somewhat compensates for the inability to path between z levels by allowing players to find the nearest ladder or staircase instead (does nothing to indicate destinations on other z levels or the direction they're in though)

Changelog

cl
del: Navigate verb uses landmarks now, which means that underfloor wayfinding beacons (which could be used to change the names of destinations) are gone
qol: Adds Nearest Way Up and Nearest Way Down to the navigate list, which point to the nearest ladder or staircase up or down
fix: Fixes runtime with navigation verb paths where deleted paths were still attempting to animate
/cl
2022-04-11 09:32:01 +12:00
BluBerry016
b93671dffb Tunes Up The Syndicate Infiltrator (#65880) 2022-04-10 09:54:13 -07:00
Son-of-Space
ac7b6dd320 Replaces all "Space" warning posters with "Cold" and "Gas Mask" posters on IceBox (#65935) 2022-04-10 09:46:38 -07:00
Tim
b1a793f840 Refactor and improve antimagic to be more robust (#64124)
This refactors the antimagic component to use and have bitflags, documentation, defines, code comments, named arguments, and renames variable names for clarity. 

- /obj/effect/proc_holder/spell/aoe_turf/conjure/creature/cult is not used anywhere and has been removed
- /obj/effect/proc_holder/spell/targeted/turf_teleport/blink/cult is not used anywhere and has been removed

- New sound effects are played when magic is blocked. Depending on the type of magic being used it will be either:

- Equipping antimagic now properly updates the magic buttons
- Any magic being blocked or restricting casting now displays a message
- MAGIC_RESISTANCE_MIND now properly blocks telepathy effects
- Removes blood splatter when fireball is blocked
- Magic projectiles for staff of locker no longer spawn lockers when blocked by antimagic
- Fire breath is no longer blocked by antimagic
- Spellcards are now blocked by antimagic

Any antimagic on a mob blocks that magic type from being casted. (certain spells such as mime abilities completely ignore antimagic)

- Foilhats prevent someone from casting mind magic (telepathy, mindswap, etc.)
- Bibles, ritual Totems, nullrods, holymelons, and TRAIT_HOLY prevent someone from casting unholy magic (cult spells, etc.)
- Nullrods, ritual totem, and holymelons prevent someone from casting wizard magic (fireball, magic missile, etc.)
- Immorality talismans, berserker suits, and TRAIT_ANTIMAGIC prevents all types of magic (except stuff like mime abilities)
- Touch of Madness and Mindswap is now blocked with MAGIC_RESISTANCE and MAGIC_RESISTANCE_MIND
- Voice of god is now blocked with MAGIC_RESISTANCE_HOLY and MAGIC_RESISTANCE_MIND
2022-04-08 20:04:09 -05:00
Tim
49601be605 Replace girder to_chat messages with balloon alerts (#65873) 2022-04-07 03:22:09 -07:00
John Willard
de2e373357 Refactors janitor cartridge to a tablet app (#65942)
Removes old janitor cartridge app and replaces it with a tablet one.
Also adds the pimpin' ride to the list of tracked items, too.
Makes Janitors spawn with said app, too.
2022-04-06 19:51:45 -05:00
Tim
1f255063d0 Fix reinforced girders to only use plasteel for construction (#65766) 2022-04-05 22:36:50 -04:00
tralezab
4cbd6039ff Beds, Sofas, Slimes, And Jellypeople now provide a soft landing (#65918)
* soft landing initial commit

* better doc, now correctly checks isatom for the signal

* Update code/datums/elements/soft_landing.dm

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* moves sofa init back, style changes

* Apply suggestions from code review

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>

* Apply suggestions from code review

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>

* i'm not feeling so good

* adds missing . operator, and renames single letter var

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-04-05 21:10:07 -04:00
John Willard
2db00c7dc5 standardizes default unfasten wrench (#65425)
I'll do more in the future but I'll limit myself to this because I'm tired, bored, and don't want to make so many PRs touching the same things that I have to deal with conflicts each time one is merged.
Just as an example, screwdriver's gotta be done as well, does the exact same thing wrenches do, I believe.
Standardizes (and touches) each time default_unfasten_wrench is used.

Fixes tool logs, since it relies on tool acts to exist, I'm trying to move as many tool acts to its proper proc. Like a spiritual successor to the tool superpack PRs.

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
2022-04-04 12:44:14 -07:00
Ebb-Real
a2f7842d04 Bandana GAGS: craftable, dyable and customizable + bandana neckerchief refractor (#65760)
expansion: You can now dye bandanas with washing machines and customize bandanas from inside the clothesmate.
2022-04-03 04:25:31 -04:00
Kapu1178
1d0eadcb12 Kapulimbs (#65523)
* i wanna go to bed so im pushing this

* It compiles but doesn't work yet

* It works!

* I WANT TO DIE

* Appease linters

* some CI fixes

* Address reviews + oversight

* Limb grower fix

* more icon fixes

* forgot to hit save

* I'm a dumbass

* Removes bodypart parent from unit test

* Fixes monkeys and CI

* Grammar pass

* I hate zombie code so much

* General code cleanup

* THE SHITCODERS ARE COMING FOR MY VARS

* THE UNIT TESTS ARE COMING FOR MY SHITCODE

* Reviews + skirts

* Removes an unused DMI

* Why didn't I do this in the first place?

* HAIR REFACTOR

* Haha whoops

* How did I miss this

* Admin spawned creatures now have their features

* Optimize me harder

* minor fix i need to push to merge master

* Fixes hair (maybe) and a runtime

* Maybe fixes mirrors

* Attempts to fix women

* Fixes hair on dismembered heads and a grammar change

* Caps lock did me dirty

* address reviews

* icon failures fix + missed reviews

* Fixes: Facehuggers and Regenerate_limb

* Fixes ethereal color pref appearance

* How the fuck did this not break everything else horribly?

* JESUS FUCKING CHRIST IM A MORON

* Fixes compile

* I'm not high I swear

* Im a dipshiiiit

* grumble grumble

* Fixes a visual bug with digitigrade legs. Adds \improper to roundstart species names. Added two new clothing-related helper procs. Renamed a couple procs to be more accurate. Adds SHOULD_CALL_PARENT(TRUE) to examine_more. Addresses reviews.

* Forgot this little readability thing.

* Updates CODEOWNERS

* Me when I forget how github works

* mapload me harder

* Last second fixes
2022-04-01 21:07:46 -04:00
TiviPlus
41c1378320 COMSIG_ATOM_CREATED -> COMSIG_ATOM_INITIALIZED_ON (#65809)
Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com>
2022-03-31 16:44:03 -07:00
LemonInTheDark
50689f89a4 Action button refactor/rework: Enhanced Dragging (#65180)
About The Pull Request

I noticed a lot of strange and un-intuitive behavior in action buttons, and got stung by the bloat bug. Damn it hug #58027
I'll do my best to explain what I've changed and why, might get a bit long.
If you want a better idea, read the commits. Most of em are pretty solid, if long.

Whelp. Here we go.
How do action buttons currently work

All action buttons are draggable, to any place on the screen. They're held in an actions list on the player's mob.
Their location in this list determines their position on the top of the screen. If one is dragged away from the top, its position in the list is "saved". This looks really bad.
If two buttons are dragged over each other, their positions swap. (inside the actions list too)
If a button is shift clicked, it is brought back to the position it started at.
If the action collapse button that you likely just mentally edit out is alt clicked, it resets the position of all action buttons on the screen.
If an action is ctrl clicked, it is "locked". This prevents any future position changes, and also enables a saving feature. With this saving feature, locked button positions persist between rounds. So your first o2 canister will always start where you saved it, etc.
Actions and buttons are a one to one link. While there is functionality to share action buttons between two players, this means showing the same object to both. So one player can move a button on another's screen. Horrendous.
This also makes code that modifies properties of the screen object itself very clunky.
Why is this bad

A: None knew pretty much any of this information. It is actually documented, just in a horribly formatted screen tip on the collapse button, you know the one we all mentally delete from the hud.
B: None of this is intuitive. Dragging buttons makes the hud look much worse, and you get no feedback that you even can drag them. Depressing
C: We use actions to make new options clear to the player. This means players can have a lot of action buttons on the hud. This gets cluttery
D: The collapse button is useless. It lets you clear your screen if someone like me fucks up and gives you 2000 actions, but outside of that it just hides all information from you. You never want to see none of your action buttons, just a filtered list of them.
E: On a technical level, they're quite messy, and not fully functionally complete. This is depressing.
What I've done

Assuming the above to be true, how do we fix them?
Well first I'm going to go over everything I changed, including links to major commits. I'll then describe the finished product, and why I made the decisions I did.

Oh and I've moved some of the more niche or technical discussion to dropdowns. Hopefully this makes finding the major functional changes easier

Adds helper procs for turning screen_loc strings into more manageable arrays. This doesn't fully support all of the screen_loc spec, but it's enough for what I'm doing. (f54865f)

Uses these helper procs to improve existing code (6273b93)

Fixes an issue with tooltip code itself. If you tried to hold down a mouse button while dragging onto a tooltip enabled object, it would silently fail. The js made assumptions about the order args came in, which broke when buttons were held down (e0e42f6)

Adds a signal linked to /client/Click(). Surprised we didn't have this before honestly (c491a4a)

Makes /client/MouseDrag() return parent. If we don't do this, any overrides of MouseDrag will never actually be called (2190b2a)
Refactors how action buttons work under the hood (53ccce2)
Basically, rather then generating one button per action, we generate one button per viewer

Starts to change button behavior, more cleanup

Changes the mouse cursor when an action button is dragged. Hopefully
this makes moving things feel less like an accident, and makes you doing
it more clear

Removes the moved and locked vars. This will be more relevant later, but
for now:

Moved exists as a sort of budget "We've been dragged" variable. We can
handle this more cleanly, and the movable type doesn't care about it

Locked is a very old variable that is also not something that the
movable type "owns". It's more an action button thing that's been moved
down.
It exists so an action can be locked in place, and in that locking, be
treated as a "saved location"
(21e20fc)

Because I've nuked move, we don't need to directly set our button's
position. We can use the default_button_position var instead. This is
quite handy.

Please ignore position_action, I will explain that later
(83e265e)

Removes the buttons locked pref

It was another obscure part of action buttons, basically do buttons
start "locked" or not. See previous discussion of locked
(b58b1bd)

Major rework starts here

Alright. Sorry for this, this is where me not commiting regularly starts
to suck. I'll do my best though.

Rather then figuring out an action button's position via a combination
of the moved and ordered vars, we use a separate location var to store
one of a few defines. This makes life later much easier.

Adds tooltip support for dragging action buttons. The way the tooltip
just froze in place when dragging really bugged me, and lead to some
nasty visual artifacts.
This is a bit messy because the drag procs are horrible, but it's
workable

Dropping a button on another button will no longer swap their positions
Behavior instead depends on the target button.

If it's a part of a group (A concept I will explain later) the dragged
button is simply inserted before it in the group's list.

If it's floating on the general hud, we instead position the dragged
button to its right. There's extra logic here to ensure buttons will
never overflow the screen, but I'll get into that later.

Alright. That's most of the refactoring. Time for the larger behavior
changes.

Adds a button palette. This is a separate dropdown that renders
underneath buttons.

image

The idea is to allow for a conceptual separation between "important"
buttons and the ones that end up cluttering the screen.

You can click on the dropdown to open it, then any later clicks that
don't involve actions in some way will autoclose it.

My goal is to come up with an alternative for the action button that
just acted as a way to hide all buttons on screen. Not convinced it saw
much use.

As a side effect of removing that, I've moved its tooltip stuff to the
palette. I've properly formatted it, so hopefully it's easier to read
then the jumble that we used to have.

(You can alt click the palette button to reset all button positions)

Oh and the palette can scroll, since as you'll see later it has a
limited size.
image

Moving on from that, I've added what amounts to action landing buttons.
These allow buttons to rejoin groups, or be positioned at the end of a
line of buttons.
image

They've got a 32x32 hitbox, and only show up when dragging. Hopefully
this makes the system more clear just by dragging an action.

Oh and I've changed how button position updating works. The old system
of calling update_action_buttons on mob every time an action button
changes position is gone, mostly because I've setup more robust
grouping. Will discuss when I get to huds

(0d1e93f)
Adds the backbone behind action button position changes (94133bd)

Moves hud defines to the global folder, safer this way (7260117)

Adds color changing to the palette button, giving some heads up for buttons being inserted into the palette automatically
image
image
Ensures a landing button is always shown, even if it needs to break the
max row rule
Makes palettes auto contract if they have no buttons inside them
Prevents palettes from being opened if they have no buttons inside them
(f9417f3)
How it looks
2022-02-26.02-30-10.mp4
Why It's Good For The Game

Players have more control over the clutter on their screen.
Buttons are available, but not in the way,
Since any player move of a button saves it, any lack of clarity in the way buttons work will be forced out by buttons not just resetting when a new game starts.
We don't overlap any existing screen elements, unless the upper button list gets really long.
The code is much less crummy (I think, may have made it worse it's hard for me to judge my own work)

If it ends up not being as usable as I'd like, I'll rip out the existing changes and just implement the qol and backend stuff. I think it's worth doing though.
Changelog

cl
add: Expanded heavily on action buttons
add: Adds an action button dropdown that sits just under the normal list in the top left. You can drag new buttons onto it to insert them. Click on it to show its contents, do what you want to do, then click again anywhere to contract it. Alt click it to reset all button positions
add: Action buttons will now remember their position between rounds. So if you really like your flashlight right next to your player for some reason, we support that now
add: When you start to drag an action button, docking ports will appear in places that it can be inserted into. (Outside of just floating somewhere on your screen of course)
del: Removed action button locking, and the associated preference. I'm reasonably sure literally none uses this, but if you do hit me up
qol: Dragging an action button will now give you an outline of its size around your cursor
fix: You can no longer cause the screen to expand by putting an action button on the edge of widescreen, and then resizing to standard.
refactor: Refactors action and button code significantly. lots of little things.
/cl
2022-04-01 09:40:20 +13:00
AnturK
fbba5abb72 Fish refactor. (#65785)
Refactors fish into proper paths.
Removes aquarium behaviour intermediary datums.
Moves fish functionality out of aquarium content component.
Fixes flopping animation resetting on dropping.

Simplifies everything. There should be no player facing changes.

The animate signal is kinda weak method of solving the animate queue issue but it seemed least intrusive to me.
Open to any better ideas.
2022-03-31 14:05:55 +13:00
dragomagol
82daae0649 Renames some security accesses + misc (#65679)
Renames ACCESS_SEC_DOORS to ACCESS_BRIG_ENTRANCE
Renames ACCESS_FORENSICS_LOCKERS to ACCESS_FORENSICS
Adds a helper for detective access (because I forgot it in my first PR, oops)
Changes gulag item reclaimer access from ACCESS_SECURITY to ACCESS_BRIG
2022-03-28 22:58:10 +01:00
Zephyr
a00df2ed76 Hazardous Area Component | Free Golem Soft-Restriction (#65720)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-03-28 14:49:50 -07:00
Ryll Ryll
f8794c441b Mystery boxes no longer cut off each other's audio (#65655)
I put mystery boxes on their own sound channel so they could cancel out the full music clip when someone took an item from them, but this causes issues because only one box could be playing a sound clip at a time, and they'd cut each other off if there were multiple. Now they reserve their own channels for their duration, then release them, so they can all play at the same time. Accordingly, their sounds now fall off quicker so having multiple of them nearby won't destroy your ear drums.
2022-03-26 10:27:29 +00:00
cacogen
c4f6ce0f26 Adds proper sound effects to attacks against flora (#65508)
* Adds proper sound effects to attacking flora

* Normalises all the sounds to make them as loud as possible and the same volume

* named arguments
2022-03-26 01:49:04 -07:00
san7890
a6c2992bd3 DeltaStation's Recreation Area Rework, (LUNG CANCER EDITION) (#65588) 2022-03-25 17:09:45 -07:00
John Willard
deee7dc5bd improves meatspike code, makes it use default buckle (#65041)
* improves meatspike code, makes it use default buckle

* small edit to make checks run again

trying to see if somehow this is my fault?? i doubt it.

* lets simpleanimals get buckled again
2022-03-20 12:00:19 -07:00
GoblinBackwards
f0559c8e7e checks if airlock type actually exists (#65494) 2022-03-17 10:45:43 +01:00
Fikou
567c012be6 replaces the punching bag sprite, removing fitness.dmi (#65492)
Replaces the punching bag sprite, removing fitness.dmi
2022-03-16 18:25:12 -03:00
Gandalf
ed06adde60 [MDB IGNORE] 3/4th medkit sprites + firstaid > medkit (#65230)
imageadd: Medkit sprites have now been updated to proper 3/4th perpsective.
2022-03-11 23:44:48 -05:00
Gandalf
684eab3d31 Converts SFX keys into DEFINES (#65146)
About The Pull Request

Simply converts all instances of soundkeys that use get_sfx from strings into defines.

E.g. "sparks" is now SFX_SPARKS
Why It's Good For The Game

It makes life a lot easier when you're looking for a sound effect. You just type SFX_ and you get suggestions in VSC. Plus, it looks better.

image
Changelog

Not player facing.
2022-03-11 10:09:18 +13:00
Tastyfish
fbb9f7d767 New weight machine sprites and names (#65335)
imageadd: New sprites for the weight machines.
2022-03-09 23:19:20 -05:00
Luc
afc1e44ee2 Tool act superpack 2 (#64428)
About The Pull Request

Continuation of #64375, extracting tool behavior from attackby() and moving it into discrete _act procs. This is about as many files as I had in the last version, as I still want this to be reviewable.

As before, I've tested everything in game and it works as it previously did.
Why It's Good For The Game

The more code moved out of attackby, the more modular things become.
Changelog

cl
refactor: Moves more tool behavior out of attackby().
/cl
2022-03-08 11:43:22 +13:00
cacogen
a62dac9c2d Janitorial cart improvements (#64818)
About The Pull Request

    You now right-click to wet your mop and left-click to put it away to prevent having to double-click to get rid of it when it's not completely wet
    Can right-click with an empty hand to remove mop and skip radial menu
    You now right-click to put things in the trash bag (prevents trash bag unintentionally eating things, such as the crowbar you were trying to use to empty the cart)
    Left-clicking skips radial menu when there's only one item in the cart
    Can fill open reagent containers from drainables like the janitorial cart (useful to empty it)
    Adds examine hints for these changes
    Right-clicking to splash reagents now requires combat mode (this is because it interfered with using right-click to empty)
    Cyborg cleaning modules now use the NODROP trait to prevent them being put in the cart, instead of their own copypasted var and proc
    Fixes overlays not immediately updating when filling janitorial cart
    Fixes bludgeoning janitorial cart when filling it

Why It's Good For The Game

Should make it less clunky and more enjoyable to use.
Changelog

cl
add: Right-clicking to splash reagents requires combat mode
add: Remember the above
qol: You now right-click the janitorial cart to wet mops and left-click to put them away
qol: You can right-click the janitorial cart with an empty hand to quickly remove your mop
qol: You now right-click to put things in the trash bag
qol: Left-clicking the cart with an empty hand will skip the radial menu if there's only one item in the cart
add: Adds examine hints for these changes
fix: Fixes overlays not immediately updating when filling janitorial cart
fix: Fixes bludgeoning janitorial cart when filling it
add: You can right-click with "glass" reagent containers (e.g. buckets) to fill from drainable containers like janitorial carts
code: Improvements to janitorial cart code
/cl
2022-03-08 10:40:18 +13:00
MMMiracles
bf4463dac0 Tramstation Dorm Rework (#65188) 2022-03-06 10:25:14 -07:00
John Willard
cab70f4d1a Restores old monkey knockdowns (monkey nerf) (#65080)
Monkey knockdown used to be on Crossed until it was made an AI here: 55238

Now it instead uses COMSIG_ATOM_ENTERED, which only takes into account walking over the monkey. Something that you can't do unless you are non-dense or they are lying on the floor, in which case you aren't even knocking them down?
Now it uses COMSIG_MOVABLE_CROSS instead so it's how it used to be, actually functional and useful.
2022-03-03 13:45:52 -08:00
axietheaxolotl
376aa36626 Medical Revamp: Resprites and Jumpsuit/Under Changes (#65236)
New sprites for the CMO's turtleneck/skirtleneck, paramedic jumpsuit/jumpskirt, virologist jumpsuit/jumpskirt, and chemist jumpsuit/jumpskirt
2022-03-03 14:53:36 -03:00
小月猫
b757fce02a New in-wall engine sprites (#64839)
adds new variants for each sized engine to look like they are in walls (basically cut down sprites with their density set to false (because they dont take up the full tiles, especially the huge engines are 3x3 but only take up 1x3, they must have no density or they block way more than they should))

before: dumb looking gap
image

after: nice clean engine (and box trams are soul filled, also, trams kinda too small to really get any sort of diagnal design working)
image

showcase of each sized thruster:
image

added new structures that act like walls but arent turfs, and can only be used (and can be used!) on trams!
comes with 3 types, iron, plastitanium, and titanium. supports more types being added if you want but these are basically all that a tram needs to use:
Untitled.1.mp4

also removed a duplicated APC in a maint on tram, and removed cycle helpers from random maint airlocks that arent actually meant to cycle (they are solo)
Why It's Good For The Game

engines are kinda too bulky and organically shaped so they dont really fit some designs such as tram as a good example, in wall designs allow you to add thrusters onto any shaped ship easily without worrying about ensuring the walls around them being shaped right, as it appears to have the bulk of the engine merged inside the wall
Changelog

cl Nari Harimoto
imageadd: New thruster sprites to allow for in-wall designs
fix: removed cycle helpers from 2 random tram maint airlocks that arent meant to cycle (solo airlocks) and a duplicated APC in tram maint
expansion: the tram now has new walls! they are structures that function like walls so as to be built on the tram, create and deconstruct via the new tram girder (screwdriver on the girder to deconstruct, there is no displaced version ie wrench)
/cl
2022-03-02 09:06:51 +13:00
Wallem
782006a07e Updates all storage bag icons (#64978)
imageadd: Changes all storage bag sprites
2022-02-25 16:36:54 -05:00
Tim
ea176dad32 Change hydroponics tray and chem dispenser AltClick behavior to be used by RMB (#64939) 2022-02-23 16:29:10 -08:00
tralezab
6b40645cd6 Fixes ratfish harddels, minor code improvements to moisture traps (#65100) 2022-02-22 17:41:59 -08:00
SMOSMOSMOSMOSMO
52b9dc2e66 Fixes being able to create walls out of sheets that arent linked to a material (#65063) 2022-02-22 12:56:32 -08:00
tralezab
59bcead233 Adds Ratfish to moisture traps. (#64888)
* ratfish

* ratfish

* ratfish

* ratfish

* ratfish
2022-02-21 23:33:55 -05:00
cake xensen
44fbe266e4 Fix chainlink fence doors having incorrect icon/density (#64882)
Fence doors used a var to track if they were opened or not, but it doesn't sync consistently with the density var. Density was getting set when updating icon state instead of when toggling the door. This removes the unneeded open var and flips density only during toggle.
2022-02-20 23:31:18 -06:00
MrMelbert
8fb928b85b Adds some contextual screentips to botany related things (#64954) 2022-02-18 01:06:11 -08:00
Ryll Ryll
36f4395a6e replaces uses_integrity with just setting a very high integrity (#64873) 2022-02-18 01:00:44 -08:00
Mothblocks
c79c7d51a7 Contextual screentips -- Screentips now show you what items/objects can do (#64502)
Adds the foundational system for contextual screentips, which will show you what you can do with objects/items, including through context, such as what you are holding.

Provides several helper elements for most use cases, and applies it to a handful of common objects in order to show the full breadth of the system.

Changes screentips preference from on/off to on/off/only with context. Players who originally had it on off will have it migrated to only with context, though can re-disable it.
2022-02-15 17:29:43 -06:00
cacogen
a3a40e2994 Gives Omega soap 800 uses instead of 301 (#64813)
* Buffs Omega soap from 300 uses to 800

- Changes cleanspeed and mopspeed vars to use SECONDS define instead of straight deciseconds
- Renames mopcap to max_reagent_volume for clarity
- Puts the slowest child of soap (homemade) first
- Clarifies/improves a couple of my 3 year old comments on soaps
- Makes homemade soap grind into the reagents of the recipe
- Capitalises Omega in Omega soap because it's supposed to be and it makes it more impressive
-  Makes Omega soap description tie into the name

* Changes mopcap to max_reagent_volume in janicart.dm

* Adds specific grind results to soaps lacking them

Craftable ones are 1 reagent less than their recipes require
2022-02-11 01:15:24 -08:00
Ghom
c5d2b2e51e Fixes layering issues brought by the FoV PR. (#63903)
* Fixed most (not all) incorrect planes and layers detected by the unit test.
2022-02-09 19:40:00 +01:00
Cameron!
95dad15410 Wrench interactions with closets migrated to wrench_act_secondary (#64724)
Backend cleanup of the code involving anchoring and unanchoring lockers.
Moved feedback to balloon alerts as well.
2022-02-08 18:22:27 -03:00
necromanceranne
906fb0682b Ballistic to Energy: Autorifles for Thermal Pistols; Adds .38 Crate to Cargo (#64280)
About The Pull Request
The design doc behind this PR, which is only mildy been deviated from on some of the end particulars. Cobby-Approved! Maintainer Discussed!
https://hackmd.io/@6DbtsAKCTtW_9MByKFjZqg/r1xYKCNOt

Cargo Changes
Cargo has had all WT-550's removed and replaced with Thermal Pistols.
Cargo can now order Thermal Pistols, a kind of energy/ballistic hybrid weapon shooting chunks of altered nanites into people. We couldn't use them in people, so maybe we'll use them as bullets! Magma/Ice bullets, to be exact.
You can, after paying a whopping 4K on a goodie pack (you have to pay from your own personal account) buy a .38 revolver. This is mostly to help some poor detective who lost their revolve in what I'm sure will be an inevitable scramble for ballistics. If even the 4K pricetag isn't enough, at least it requires detective access to open the pack...I hope.
Some of the crates that contained autorifle related items have been changed/removed.

unknown (2)

securarevolver 4 0

Science Changes
Ballistic Weaponry node no longer exists, and has been replaced with Exotic Ammo as both the pre-requisite to other nodes, as well as being able to be researched as soon as the Weaponry node is unlocked and not Advanced Weaponry.

Thermal Pistols
-Fairly average bullet statistics; 10 AP but shooting into Energy armor. 20 damage (Brute for cryo, Burn for inferno). Decent wounding potential, but individually much lower ammo counts than lasers.
-Bought in twinned pairs in a two gun holster (just for normal sized energy guns). They're normal sized.
-Each gun has 8 shots (thereabouts). 16 between two.
-Cryo pistols do a knockdown and extra damage against extremely hot targets. Inferno pistols do an explosion cantered on the target against extremely cold targets.
-The guns are EMP-proof.

Why It's Good For The Game
The current gameplay loop of crew combatants is them relying on backup and retreating as necessary to reload their weapons during fights. The ability to repeatedly harry opponents in the field reloads is something that should be moved away from for crew equipment, as it emphasizes lone wolf tactics and one-man army problems, with boxes full of spare ammo usually allowing any single combatant to outlast multiple foes. In addition, ballistics often are not subject to the same (interesting) limitations of energy weapons, so they're typically a no-brainer choice. We shouldn't have such an easy choice be readily available like that.

The thermal pistols present a more challenging weapon to use as a solo combatant but become far more versatile and potent when paired with a decent buddy and basic level co-ordination. They're not a straightforward choice for every situation, but instead are a weapon employed given the right circumstances for them to shine.

In addition to the gameplay issues that ballistics pose, we're in a goddamn spacegame. Unless the ballistics are noticeably weird (they're not), we should expect that our more advanced research station has some pretty odd guns of the energy variety.

Changelog
🆑 Necromanceranne, quin
add: Adds the Inferno and Cryo Pistols. A hybrid energy/ballistic weapon, to cargo. It can be purchased in either a goodies pack or a normal crate order.
add: Thermal Pistols do more damage and a special based on temperature of the target hit.
add: Inferno pistols cause an explosion when they hit a severely cold target.
add: Cryo pistols cause a knockdown and extra damage if they hit a severely hot target.
add: There is a special nanite pistol, which is admin spawned. Don't tell anyone about the forbidden ballistic energy gun.
add: You can order a .38 revolver as a goodie pack. It is expensive.
del: Removes WT-550's from cargo and related content from the techweb/protolathes.
balance: Exotic Ammo is now much earlier in the tech web to take the place of Ballistic Weaponry.
/🆑
2022-02-07 11:29:08 -05:00
TemporalOroboros
6be8e0feee Adds an option to generate typecaches as zebras. (#63710)
About The Pull Request

Adds an argument to typecache generation that allows specifying the whether to include/exclude types in the input list.
Also adds another argument to specify whether to remove falsey values after the typecache is generated.
Why It's Good For The Game

Might make zaps slightly faster???
Honestly I just thought it would be a good way to condense some whitelist/blacklist typecache sets.
2022-02-07 14:23:38 +13:00
Mothblocks
068f5df349 Add new surgery tgui (#64579)
* Move element to component, start UI, move assets into their own directory

* Complete UI

* Stop when another surgery is started

* Set your real zone since I forgot you actually need to start the surgery too

* Bring this back since I was just removing it as part of a cleanup for asset cache, but I can't prove it's not used anymore

* Remove unnecessary constructor I was using for something else

* Fix signal override
2022-02-06 22:04:06 +02:00
Fikou
0a5571a32c xeno egg now updates its icon properly when burst (#64648) 2022-02-06 13:13:06 +01:00
Tim
612808cbd2 Rotation component refactor and improvements (#64441)
This adds some new defines and flags for the rotation component that lets us remove lots of c/p code chunks. I also added documentation to all the rotation defines that currently exist and in other spots that had weird behavior.

New rotation flags:

ROTATION_GHOSTS_ALLOWED - checks if ghosts are able to manipulate objects in config and lets them rotate the object
ROTATION_IGNORE_ANCHORED - this skips checking if an object is anchored (which normally prevents us from rotating) Used mainly for chairs.
ROTATION_NO_FLIPPING - this removes the flip verb from possible right click rotation options. Used for pipes that have custom flipping verbs instead
ROTATION_NEEDS_ROOM - this checks if an object needs to have an empty spot available in target direction. Used for windows and railings.

Objects can now be rotated in the direction based on which LMB or RMB you click with when you ALT click it. LMB is counter clockwise. RMB is clockwise. Before some objects could only be rotated clockwise. Now any object that inherits the rotation component can be rotated in either direction.

There was also a bug with wheelchairs that existed from when they were ported over from another codebase. The rotation logic was broken and never allowed anyone to rotate them. This has been fixed.

Rotation for IV_drips was enabled however Alt Click was being used for another proc and rotation was ignored because of this. I removed the rotation component due to this since I didn't want to change the hotkeys for IV drips since those have an actual effect on gameplay interactions while rotation does not.

Fingerprints are no longer added when something gets rotated. Only a few objects had this enabled but I believe this interaction was very spammy and unnecessary. I can readd this as a flag if needed but for now it's removed.

Alert balloons have replaced a lot of rotation to_chat() messages for the same reason as fingerprints. Rotating objects has almost no effect on gameplay and will only clutter a player's message log.

The hotkeys for pipe interactions had to be redone since Alt clicking was already being used in some situations. For regular pipes: Right clicking now changes the pipe layer. Alt clicking rotates the pipe. For Trinary pipes: Right clicking now flips the pipe device. Alt clicking rotates the device.

ComponentInitialize() is a deprecated function and the AddComponent proc was moved to Initialize for several objects.
2022-02-06 09:10:39 -03:00