Commit Graph

62 Commits

Author SHA1 Message Date
SkyratBot
dbed3285c2 [MIRROR] Adds a persistent piggy bank to the vault. (#26890)
* [no gbp] sentience potion reason set via alt-click (#82049)

## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/82047

You set the reason for sentience potion via alt clicking potion
## Changelog
🆑
qol: Sentience potion reason is set via alt-click
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>

* Adds a persistent piggy bank to the vault. (#81900)

## About The Pull Request
This PR adds a **persistent** piggy bank to the station vault that,
while it can hold up to 3300 credits carried between shifts. However,
you can only insert up to 1600 (on top of the 50 creds it
auto-generates) each shift, so it does take a small, itsy bitsy of
patience to fill it to the brim.

## Why It's Good For The Game
I put some effort coding persistent piggy banks when making the
cafeteria PR for the museum away mission a while ago (which apparently
isn't enabled yet because the key holders forgot to ig). It'd be a shame
of all the existing code were only used for a single persistent piggy
bank.

* Piggers

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-04-04 00:03:48 +02:00
SkyratBot
1fe673c71c [MIRROR] Brings the captain's safe off the wall, safes now save their contents (#26922)
* Brings the captain's safe off the wall, safes now save their contents (#81762)

## About The Pull Request

I originally was gonna make the captain's spare ID safe float in the air
if the wall under it was taken down, but it looked poor and was going
against the vision for wall items (and go against the wallening) so my
alternative proposition is this, taking the safe off the wall.
It's now a golden safe (like the one in the vault) but is interacted the
exact same, it's now just a thing on the floor rather than being on a
wall.
I'm not a spriter so I didn't give it a custom icon but if anyone wants
to they can feel free to add one, just a golden version of the regular
safe felt kinda eh.

I also added a wallframe version of the secure safe for when it is taken
down. It will conserve its contents and be permanently locked until put
back up. This doesn't apply to the new captain safe since it isn't a
wall item.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/80588
Prevents people from cheesing the spare and/or it being too easy to
destroy.

## Changelog

🆑
fix: The captain's safe is no longer on the wall, therefore cannot be
cheesed by breaking the wall it sits on.
fix: Tearing down a wall that a safe is on now drops the safe with its
contents, rather than dropping the contents onto the floor. The safe's
contents cannot be interacted with while it's not on a wall.
/🆑

* Brings the captain's safe off the wall, safes now save their contents

* Kilostatiooon

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-04-03 18:06:11 +02:00
SkyratBot
1dd5011776 [MIRROR] Adds pathmaps, refactors pathfinding a bit [MDB IGNORE] (#24414)
* Adds pathmaps, refactors pathfinding a bit (#78684)

## About The Pull Request

Implements /datum/pathfind/sssp, which generates /datum/path_map

/datum/path_maps allow us to very efficently generate paths to any turf
they contain from their central point.

We're effectively running the single source shortest paths algorithm.
We expand from the center turf, adding turfs as they're found, and then
processing them in order of addition.
As we go, we remember what turf "found" us first. Reversing this chain
gives us the shortest possible path from the center turf to any turf in
its range (or the inverse).

This isn't all that useful on its own, outside of a few niche cases
(Like if we wanted to get the farthest reachable turf from the center)
but if we could reuse the map more then once, we'd be able to swarm
to/from a point very easily.

Reuse is a bit troublesome, reqiures a timeout system and a way to
compare different movables trying to get paths.
I've implemented it tho. I've refactored CanAStarPass to take a datum,
/datum/can_pass_info. This is built from a movable and a list of access,
and copies all the properties that would impact pathfinding over onto
itself.

There is one case where we don't do this, pathing over openspace
requires checking if we'd fall through the openspace, and the proc for
that takes an atom.
So instead we use the weakref to the owner that we hold onto, and hold
copies of all the values that would impact the check on the datum.

When someone requests a swarmed path their pass info is compared with
the pass info of all other path_maps centered on their target turf. If
it matches and their requested timeout isn't too short, we just reuse
the map.

Timeout is a tricky thing because the longer a map exists the more out
of date it gets.
I've added a few age defines that let you modulate your level of risk
here. We default to only allowing maps that are currently
being generated, or finished generating in our tick.
Hopefully this prevents falling into trouble, but consumers will need to
allow "failed" movements.

As a part of this datumized pass info, I've refactored pathfinding to
use access lists, rather then id cards directly. This also avoids some
dumbass harddel oppertunities, and prevents an idcard from changing mid
path.

Did a few things to the zPass procs, they took args that they did NOT
need, and I thought it'd be better to yeet em.

If you'd all like I could undo the caching/can_pass_info stuff if you'd
all like. I think it's useful generally because it avoids stuff changing
mid pathfind attempt, but if it's too clunky I could nuke it.

Oh also I added optional args to jps that constricts how it handles
diagonals. I've used this to fix bot paths.

## Why It's Good For The Game

Much of this is redundant currently. I'm adding it because it could have
saved hugglebippers, and because I get the feeling it'll be useful for
"grouping" mobs like bees and such.
We're doing more basic mob work currently and I want to provide extra
tools for that work.

https://github.com/tgstation/tgstation/assets/58055496/66aca1f9-c6e7-4173-9c38-c40516d6d853

## Changelog
🆑
add: Adds swarmed pathfinding, trading accuracy for potential
optimization of used correctly
fix: Bots will no longer take diagonal paths, preventing weirdo looking
path visuals
refactor: Refactored bits of pathfinding code, hopefully easier to add
new pathfinding strategies now
/🆑

* Adds pathmaps, refactors pathfinding a bit

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-10-18 03:31:21 -04:00
SkyratBot
b44715db5d [MIRROR] ex_act() will work on basic mobs again (lol) + Unit Test [MDB IGNORE] (#20919)
* `ex_act()` will work on basic mobs again (lol) + Unit Test

* COnflict

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-05-03 22:51:49 +01:00
SkyratBot
f8f2abb11f [MIRROR] Refactor, improve, and rename canUseTopic to be can_perform_action [MDB IGNORE] (#19391)
* Refactor, improve, and rename canUseTopic to be can_perform_action

* updoot

* https://github.com/tgstation/tgstation/pull/72876

https://github.com/tgstation/tgstation/pull/72876

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-10 04:19:25 +00:00
SkyratBot
1ce77983df [MIRROR] canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE [MDB IGNORE] (#16586)
* canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE

* etes

* eyes

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-10-02 15:54:46 +01:00
SkyratBot
be5ec4d1db [MIRROR] make the safe use balloon alerts [MDB IGNORE] (#11052)
* make the safe use balloon alerts (#64446)

* make the safe use balloon alerts

Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
2022-01-27 15:16:22 +00:00
SkyratBot
7d1d0e1fad [MIRROR] Refactors most spans into span procs (#6315)
* Refactors most spans into span procs

* AA

* a

* AAAAAAAAAAAAAAAAAAAAAA

* Update species.dm

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-16 00:24:49 +01:00
SkyratBot
9ffdf58259 [MIRROR] Some explosions code cleanup (#4276)
* Some explosions code cleanup (#57493)

Clears out two deprecated explosions systems (explosion ids and explosion levels)
Refactors a bunch of contents_explosions procs to be maybe slightly faster.
Cleans up a bunch of ex_act code.
Slightly cleaner code
A few less unused vars on /atom and /turf

* Some explosions code cleanup

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
2021-03-21 01:03:36 +00:00
SkyratBot
18eca27569 [MIRROR] update_appearance (#3508)
* update_appearance

* a

* a

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-19 16:08:09 +00:00
SkyratBot
c487c73f39 [MIRROR] Grep for space indentation (#1969)
* Grep for space indentation

* aa

* Update species.dm

* Update species.dm

* Update maps.dm

* Update examine.dm

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-12-01 12:26:41 +01:00
SkyratBot
ed9698068b [MIRROR] tgui: Safe (#1818)
* tgui: Safe

* 0

* Update tgui.bundle.js

Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2020-11-24 23:59:06 +00:00
jdawg1290
62676e72a8 Force LF line endings with gitattributes and convert repo (#52266)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-07-16 03:02:40 +03:00
Time-Green
c04abab2bf [READY] Makes plumbing mappable and reworks hiding (#49644)
🆑
tweak: Ducts can now be hidden under tiles
code: tile hiding is now an element and way cooler and sexier
/🆑

Ducts can now be hidden under tiles
Plumbing machinery connects can now be hidden aswell
Plumbing can now also be properly mapped in without breaking anything
Plumbing component now uses the normal overlay systeem instead of being a weird exception

You can now add the /datum/element/undertile element to instantly make something hidable under tiles when appropriate.
2020-03-16 20:37:59 +13:00
MrPerson
12eecfd181 Makes raw HTML and browser datum popups UTF-8 aware (#49066)
* Makes raw HTML and browser datum popups UTF-8 aware

Admin menus specifically really shouldn't break just because you named some guy "☺s the Clown"

* Fixed new_player.dm

* Fucking filing cabinets
2020-02-01 22:14:31 +01:00
MrPerson
26093e5ac2 Further update_icon splitup (#48784)
* Further update_icon splitup

After this there'll be just under 100 old update_icon() calls that need fixing.

* Thanks Travis
2020-01-22 10:18:05 -05:00
kingofkosmos
8358169b8e New 'hear' span class (#46369)
* Reverts italics-span back to no color.

* Cleans up many extra spaces and indents.

* Adds 'hear' span class.

* Replaces all 'italics' used in heard messages with 'hear'.
2019-09-14 23:56:34 -07:00
skoglol
5316926510 Fixes some missing adjancency checks. (#44020) 2019-05-21 11:43:35 +02:00
nicbn
c4213f13ab New() -> Initialize() (#41876) 2019-01-03 18:56:15 -08:00
kevinz000
4f648a2f99 Ports vault safe to ui_interact, fixes automatic refreshing being broken (#39255) 2018-07-22 13:22:57 -07:00
kevinz000
f300a5c155 Interaction/Attack Hand Refactor (#36405) 2018-03-23 11:20:54 +01:00
oranges
b7acfbbfc0 Merge pull request #33699 from QualityVan/safedestruction
Makes vault safe slightly less explosion-proof
2018-01-13 23:16:13 +13:00
ShizCalev
fb944a9835 Removes the safe dial multiplier 2018-01-05 16:16:59 -05:00
QualityVan
08070ca5ce Makes safes slightly less explosion-proof 2017-12-19 21:19:50 -05:00
vuonojenmustaturska
a162837faf Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465)
* big batch of loc assignments

* Update emergency.dm

* Update spiders.dm

* Update parrot.dm

* Update ripley.dm

* Update firealarm.dm

* seems to work

* this maybe works?

* brainmemes, again

* stuff

* fix brainmob, camera runtimes
2017-12-13 20:56:39 +01:00
Emmett Gaines
825ab4def4 [512] The great \ref purge (#31824)
* The great \ref purge

* cleanup
2017-10-28 17:20:04 -04:00
Jordan Brown
b6d349e1d4 Remove drop_item, drop_item_v, put_in_hands_or_del (#31386) 2017-10-07 13:36:33 -04:00
Firecage
ee3e8d2846 merge conflict fix 2017-10-05 11:22:57 +02:00
Firecage
2ae0380fef Does some code standardization/consistency 2017-10-05 11:13:47 +02:00
kevinz000
5d0afedcf5 Fixes safes not having adjacency checks (#30859)
* Update safe.dm

* Update safe.dm
2017-09-19 11:56:16 -04:00
vuonojenmustaturska
f2c5657880 Fixes initialize hints for a fair number of mobs and items (#30583)
* Fixes to pets and parrots

Path : /mob/living/simple_animal/pet/dog/corgi/Ian
Path : /mob/living/simple_animal/pet/cat/Runtime
Path : /mob/living/simple_animal/pet/fox/Renault
Path : /mob/living/simple_animal/pet/dog/pug
Path : /mob/living/simple_animal/parrot/Poly

* Floorbot

* paper wizard

* motion camera

* Atmos, cigarettes and pipes, flashlights, pda carts

* borg radio, gps, tape recorder

* alien stuff, chairs, safes

* More fixes

/mob/living/silicon/pai
/mob/living/simple_animal/pet/cat
/mob/living/simple_animal/pet/cat/Runtime
/mob/living/simple_animal/bot/mulebot
/mob/living/simple_animal/bot/ed209
/mob/living/simple_animal/mouse
/mob/living/simple_animal/drone/syndrone
mob/living/simple_animal/drone/syndrone/badass
mob/living/simple_animal/drone/snowflake
obj/item/storage/box/syndie_kit/guardian
/mob/living/simple_animal/hostile/guardian
2017-09-11 13:19:12 -04:00
ShizCalev
59ef81245b Changes some 1s and 0s to TRUE and FALSE (#29144) 2017-07-10 10:31:34 -04:00
swindly
fb28f67110 fixes safes (#25478) 2017-03-26 14:09:29 -03:00
Lzimann
5a618297ce Replaces the default output with the to_chat wrapper. 2017-03-10 01:32:05 -03:00
Cyberboss
5959ac32cc Refactors atom/Initialize. Fixes ruins being initialized twice (#22778)
* Refactors atom/Initialize

Captialized for compiling correctness and to be more inline with Destroy

Will now be called from atom/New if the world initialization loop in SSobj has already run. Should always call the base.

Now comes with the `roundstart` parameter indicating whether or not it was called by SSobj or atom/New

Other fixes/tweaks:
- Renamed a proc called Initialize in abduction consoles to Setup
- Removed /obj/item/device/radio/headset/headset_sec/department: Broken and referenced literally nowhere in the code
- Removed a spawn from the Initialize of turbine_computer which made literally zero sense
- Generalized the proc which fixes RND servers with no id set

Reasoning: It's better to check roundstart per function than to have to duplicate code in New and Initialize. Think of it as a safer New for atoms. If we move enough stuff to it, initial map load performance will increase due to less New calls

* Fixed a thing

* Actually, fuck the police

* >Expecting a merge without errors

* >Not calling ..() in New

* Sanic

* Fix the headset bug

* Makes sure the map loaders dew it right

* Fixes ruins being initialized twice

* Rename roundstart -> mapload

* Revert "Rename roundstart -> mapload"

This reverts commit 667c327fd2ccfa3ce4f4db52eac03f9e8b0f6812.

* Remove unrelated change

* A more direct solution to map loads

* And now we shouldnt need this warning

* Add the new var to SSobj recovery

* Revert "Revert "Rename roundstart -> mapload""

This reverts commit dee07dbd5e4696554ac43aae5b91cce743b9b9e0.

* Line endings
2017-01-23 09:37:45 +01:00
Kyle Spier-Swenson
dedb16826e Speeds up world init. (93s -> 49s) (#21992)
* Speeds up world init.

* Armor is now new inited for obj and the first level of subpaths.
* Actions is now lazyinited and deleted with empty.
* Actiontypes is now only inited when actually used and deleted once it pre-fills actions with the action buttons.
* Pipes now prefill their node list(s) in new() using new /list/ (count) syntax to speed up the list initaliztions and remove the init proc.
* Pipes no longer store their item version, instead creating it on the fly when deconned
* Walls no longer store their metal stacks, instead creating it on the fly when deconned.
* obj, walls, floor, plating, item, machinery, structure, pipe, pipenet, atom, and movable no longer have an (init) proc. (along with a few other smaller examples)
* Atmos can pass checking is now a var with the ability to have a proc be call in advance cases.
  * (as a side effect, I had to fix a few things that were calling atmosCanPass rather then using the pre-calculated list, this should speed up chemfoam and flame effects greatly)

* Reverts upload limit
(remind me one day to defuck this, it could easily be a config thats not editable by vv to make changes easier)

* Makes apc update icon a bit faster.
APC new is some what high on the profile of world init, still not sure why, but this stood out as a waste of cpu so i fixed it.

* Fixes runtime with atmos backpack water tanks.

* Makes smoothing faster (and fixes turfs smoothing twice at init)

* Makes apcs init faster by replacing some spawns with addtimer

* fix transit turfs.
2016-12-08 21:50:15 +13:00
chowdermcarthor
c7e474ccae Neck Slots (#21169)
* Added in a neckslot. Moved some tie items over to said neckslot.

* Changng some stuff to fix the new neckslot items.

* no message

* Altered comment to say that the old tie system is being kept as-is due to armbands and such instead of just avoiding conflicts.

* no message

* Changed the number for this.

* Fixed jaws of life not having a category, thus they only would show up when searched.
2016-10-26 19:03:41 +13:00
Cyberboss
b0a74281dd Someone call that chick from the italian job because this isn't the Worthington 1000 (#21046) 2016-10-20 12:48:15 +02:00
phil235
f6db08af2e Contents_explosion() tweaks (#20934)
* When any object is hit by an explosion, we no longer always call ex_act() on all its contents indiscriminately.
The default contents_explosion() does nothing and it's overriden for certain objects only like storage items, machines with occupants, mechs.

I've also overriden handle_atom_del() for many objects so that any sudden deletion of an object referenced in an object var of its container properly nullifies such references, avoiding potential runtime and updating the container's icon_state (e.g. admin-delete a mixer's beaker and the mixer's sprite updates immediately).

I've tweaked bomb effect on worn clothes, having some armor but not 100% now still protects your clothes somewhat.

Fixes some arguments of ex_act in living/ex_act() and other mobs.

* derp and map fixes.

* dem map fixes, man.

* More work on code that use implants, simplified now that we can use the "implants" carbon var.

* some fixes

* more typos and fixes.
2016-10-16 10:01:37 +13:00
phil235
6809603669 Changes obj/effect/blob,spider,swarmer,energy_net,spacevines to be ob/structures instead, since you can hit and destroy them.
Adds a large ash and large molten item decal (for future use)
simplifies decal/cleanable/replace_decal() code a bit.
Changes construction() proc to on_construction() for consistency, same for deconstruction().
Made a deconstruct() proc for machinery and computer (also for future use).
2016-09-27 19:58:27 +02:00
Remie Richards
00738bd2a3 More than 2 hands!? WHAAAAAAT 2016-09-02 16:10:16 +01:00
Joan Lung
2cfb2d8eed Layers are now defines (#17949)
* Layers are now defines

* this looks better

* GAS_phil_LAYER

* no message

* remove the three unneeded defines

* no message
2016-05-27 22:16:21 +02:00
Cheridan
d662b0e455 Merge pull request #17218 from phil235/FixTalkingInPipes
No longer deaf while inside pipes
2016-04-29 20:34:03 -05:00
Joan Lung
6fc1d4fde4 Blobs can no longer eat the supermatter (#17205)
* Blobs can no longer eat the supermatter

* phil'd

* phil'd
2016-04-29 20:29:20 +02:00
phil235
750eaa4a57 invisibility = 100 and 101 now use defines. 2016-04-29 01:00:05 +02:00
phil235
d5af5ca696 Objects with invisibility = 101 are ignored by procs like view() that are used for say() and visible_message().
Objects that are simply hidden (instead of being abstract things) now always use invisibility = 100.
This fixes not being able to hear what you say while inside a hidden gas/disposal pipe.
Fixes the t-ray scanner revealing abstract object that should never be seen, like spacevine controller.
Fixes not hearing anything during a mob transformation.
2016-04-29 00:04:40 +02:00
phil235
0caa59b21a First commit of this big PR
These are the files with just tiny tweaks. Mostly modify an object's attackby so it does "return ..()" instead of "..()".
If there are other things in this commit, the PR's description will explain them.
2016-04-24 20:26:24 +02:00
Firecage
332bde0f4f Does the rest of the if()'s/ else's 2016-01-17 19:03:12 +02:00
Firecage
4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02:00
kingofkosmos
a7bd5f93e1 "You hear something" set to italics. 2015-04-24 21:06:16 +03:00