Commit Graph

117 Commits

Author SHA1 Message Date
vuonojenmustaturska 8ddc9677c7 examine-code refactor (#44636)
* 1/4 done? maybe?

* more

* stuff

* incremental stuff

* stuff

* stuff & things

* mostly done but not yet

* stuffing

* stuffing 2: electric boogaloo

* Git Commit and the Kingdom of the Crystal Skull

* make it actually compile

* found more stuff

* fixes

* fix AI laws appearing out of order

* fix windows

* should be the remaining stuff

* this time for real

* i guess it should compile too

* fix sechuds
2019-06-19 22:07:57 +02:00
Menshin db7ddeee4a Fix the CHECK_MULTIPLE_BITFIELDS macro (#43505)
Found by TGMC people, the CHECK_MULTIPLE_BITFIELDS macro wasn't
parenthesing the == rvalue, so

CHECK_MULTIPLE_BITFIELDS(var, flag1 | flag 2)

would come as
(var & (flag 1 | flag 2)) == flag 1 | flag2

instead of
(var & (flag 1 | flag 2)) == (flag 1 | flag2)

making the check always pass when a second flag was checked.

Only /datum/component/footstep/proc/play_footstep() was using it in that
way though and it doesn't seems it was impacting it much.
2019-04-06 12:36:05 -07:00
Menshin 5127c72ea3 * Added an option to transfer (and update) source overlays on an alternate appearance image
* Fixed a missing Alien Queen action icon (switch size)
2019-01-20 18:37:08 +01:00
kevinz000 7370de6961 Fixes projectiles not hitting people resting, a bit of refactoring of how projectile target collision is done (#42241)
* Fixes projectiles not hitting mobs, some refactoring too

* some stuff for projectile can hit target to work with not being ontop of an object

* Yeah let's just refactor bullet_act while we're at it.

* Yeah let's just refactor bullet_act while we're at it.

* Yeah let's just refactor bullet_act while we're at it.

* CanPass returns true to projectiles regardless of hit

* snakecase?
2019-01-19 11:17:42 +13:00
coiax 881e8c1ab9 Refactors NODROP flag into TRAIT_NODROP (#42109)
* Refactors NODROP flag into TRAIT_NODROP

🆑 coiax
fix: Anti-drop implants can no longer be used to drop objects that they
were not responsible for sticking to a person's hand.
fix: Backfiring with a Barnyard spellbook will now play a spooky horse sound.
refactor: Refactors the way that "NODROP" items work to a new system,
there should be no change in functionality.
/🆑

Various items in the codebase were doing weird hoop jumps in order to
preserve the nodrop flag's state when it also wanted to change it, so I
moved it to a trait system.

I may have gone overboard with the type of unique trait sources, but
those can be changed later. My long term plan is make a general "CURSED"
nodrop origin, which means you can unlock cursed items by being hit with
a bolt of door opening or something. But that's for another PR, this has
no functionality changes, apart from some slightly modified descriptions
on cursed masks.

- Removed a bunch of redundant voice changing code for all the voice
changing animal masks, used two new clothing flags for this purpose.
- Also refactored a bit the animal masks, making new cursed subtypes that play
the sound when created.

* Drop location
2019-01-17 15:24:30 -05:00
Jack Edge 054647c382 Refactors container_type into reagents.flags 2018-12-18 13:47:11 +00:00
kevinz000 15c9b20ff3 Fixes projectile infinite loops, adds new UNSTOPPABLE movement_type, forcedodge variable on projectiles scrapped (#41915)
cl coiax
fix: Dead monkeys now produce miasma.
/cl

Previously any time there was a dead monkey, it would constantly runtime with incompatible component warnings.
2018-12-16 13:00:44 +13:00
ninjanomnom 4a1c6e7e8f Makes floating a movetype instead of a movable var 2018-10-31 12:19:18 -04:00
ShizCalev f30dde0691 Adds examine messages to fire/lava/freeze/acid proofed clothing items. (#40800)
cl ShizCalev
tweak: Clothing (bags, gloves, belts, uniforms, armor, ect) will now inform you if they are resistant to frost, fire, acid, and lava when examined.
/cl
2018-10-17 23:44:19 +13:00
kevinz000 3e7184c975 Combat/Stun (slip) overhaul staging, mobility flags, adds crawling (#39967)
Aiming to implement the framework oranges has detailed in https://tgstation13.org/phpBB/viewtopic.php?f=10&t=19102
Moves canmove to a bitflag in a new variable called mobility_flags, that will allow finer grain control of what someone can do codewise, for example, letting them move but not stand up, or stand up but not move.

Adds Immobilize()d status effect that freezes movement but does not prevent anything else.
Adds Paralyze()d which is oldstun "You can't do anything at all and knock down).
Stun() will now prevent any item/UI usage and movement (which is similar to before).
Knockdown() will now only knockdown without preventing item usage/movement.
People knocked down will be able to crawl at softcrit-speeds
Refactors some /mob variables and procs to /mob/living.
update_canmove() refactored to update_mobility() and will handle mobility_flags instead of the removed canmove

cl
rscadd: Crawling is now possible if you are down but not stunned. Obviously, you will be slower.
/cl
Refactors are done. I'd rather get this merged faster than try to fine tune stuff like slips. The most obvious gameplay effect this pr has will be crawling, and I believe I made tiny tweaks but I can't find it Anything I missed or weird behavior should be reported.
2018-10-11 11:22:21 +13:00
vuonojenmustaturska a287380797 Stops using the rad insulation component to provide default rad insulation features in order to save a bit of memory (#40662)
* henk

* oh yeah this

* undo this meme

* stuff
2018-10-06 14:28:28 +02:00
ShizCalev 009bde3c5e fixes ventcrawling & flying mobs making footstep sounds (#40317) 2018-09-18 11:15:20 -04:00
cyclowns efe3f1e9de [READY] Fusion: Prepare to Die Edition (and more) (#39499)
tweak: Fusion has been reworked to be a whole lot deadlier!

tweak: You can now use analyzers on gas mixtures holders (canisters, pipes, turfs, etc) that have undergone fusion to see the power of the fusion reaction that occurred.

balance: Several gases' fusion power and fusion's gas creation has been reworked to make its tier system more linear and less cheese-able.


Fusion, even after my rework, is still kinda lackluster in the 'risk <-> reward' department. It's pretty easy to bypass the consequences of fusion as it stands right now, so I wanted to change that. I think you can suspend your disbelief enough for the new effects. Also, there are a couple balance changes to fusion that I'll outline more below that I noticed happening and theorized could happen, so I tackled those here as well.

More specific reasoning for every change:

    Addition of nuclear particles/tesla zap

As said before, I thought fusion should be more dangerous. As to why these specifically, I chose the addition of nuclear particles because I felt like it was at least decently thematically appropriate, and had a lot of potential to look visually interesting. The sprite is pretty much just a downscaled gumball with some added fluff. They all have random colors that are chosen when created, and fire out from the fusion holder's turf in random angles and with a 1 decisecond delay. I chose tesla zaps because.. well, they're pretty cool, felt reasonable enough (an extremely powerful release of energy goes well with fusion) and they mix up the damage types caused by fusion (brute from explosion, burn from zap, tox from radiation/particles). I added TESLA_FUSION_FLAGS because the tesla zaps defaultly just ended up exploding whatever they came out of (canisters usually) and ruined the whole thing.

    BZ fusion power nerf, nitryl fusion power buff

These go hand in hand. When I first made BZ useful for fusion, I completely forgot (or maybe it just wasn't merged yet, don't remember) that xenobio started with a BZ canister. So, it was super easy to cheese high/super tier fusion by just stealing the canister from xenobio. Thus, I switched BZ's role in fusions progression to nitryl instead, which is harder to make and currently doesn't see much usefulness outside of making it for stimulum.

    Fusion analyzing, addition of analyzer_results to datum/gas_mixture

I quickly realized after my fusion rework that there wasn't any ingame way to really quantify how good a fusion reaction was, which is a mistake on my part. Now, you can analyze the power of a fusion reaction and its tier after it happens. I added analyzer_results, since reaction_results worked in a matter that didn't fit what I wanted (reset completely every react() cycle) and I didn't want to change it. analyzer_results is only ever initialized when it's actually going to be used, which currently is only for fusion.

    Overall fusion code cleanup

Pretty self-explanatory. I moved all the effects (radiation, tesla zap, etc) to one area instead of having it happen separately for every tier. Now the tiers just set variables used for those effects. Apologies if the diff is kinda hard to read.

    Changes to gases created

Low tier is now BZ/CO2, mid tier is nitryl/N2O, high tier is stimulum/pluoxium, and super tier is tritium.
Gas creation numbers are lower across the board, mostly for bz/nitryl/stim.
BZ/nitryl/stim were added in low quantities to the tiers to help with the progression of the various tiers. It didn't really make sense that before, super tier fusion gave stimulum/pluox when the only feasible way to get super tier fusion was using stimulum, and the low tier rewards were straight up useless. Tritium for super tier was chosen because I think it's the gas with the most potential of causing a massive disaster in this scenario.

    Plasma no longer counts towards gases fused

Before this change, I realized that you could just stack as much plasma as humanly possible and a minimum amount of trit to instantly get several thousand moles of BZ and potentially other gases for free. No thank you.

I'm still not 100% satisfied with fusion, so expect more PRs like this in the future.
2018-08-05 22:48:16 +12:00
Tad Hardesty 9a5684556a Fix flags_1 overlap and VV, remove CTF deathrattle (#38711) 2018-06-26 16:38:04 -04:00
Tad Hardesty 05107047dc Merge pull request #38098 from kevinz000/transit_space_refactor
Transit space refactor
2018-06-16 12:40:37 -07:00
vuonojenmustaturska 9c0b5fa881 Turn /datum.isprocessing into a datum flag (#38193) 2018-06-05 15:59:46 -07:00
kevinz000 7bf86ed53f Refactors transit requests to turf_reservations. 2018-06-04 16:30:15 -07:00
vuonojenmustaturska c65a99f130 Move NODROP_1, DROPDEL_1, ABSTRACT_1 and NOBLUDGEON_1 to item_flags where they belong (#38171)
* (mostly) nodrop

* (mostly) dropdel

* (mostly) abstract

* nobludgeon

* things i missed

* forgot one

* unintended changes

* energy handcuffs
2018-06-01 11:36:31 +02:00
vuonojenmustaturska 4f0b0b7ec1 Replaces /atom.initialized and .admin_spawned with flags (#37981)
kill .initialized and .admin_spawned from /atom
2018-05-24 02:20:50 -07:00
kevinz000 8023d94b20 tesla_act refactors and balancing (#37369)
experimental: Tesla damage has been reworked to structures and objects have been worked with a linear scaling.

experimental: All tesla weapons now no longer need to hit a mob to arc lightning; however, they will no longer stun, and only hit each target once.

tesla_zap vars are now a single bitfield.
2018-05-23 13:40:03 +12:00
vuonojenmustaturska 1eccbcca18 Adds an EMP protection component, allowing ANYTHING to be protected from EMP (#37671)
The component is initialized with any combination of three flags, EMP_PROTECT_SELF protects against effects that target the object itself, EMP_PROTECT_WIRES protects against wires being messed with similar to the NO_EMP_WIRES_1 flag which this PR removes, EMP_PROTECT_CONTENTS protects against things that are inside the object like organs, internal "non-virtual" power cells and the like

This enables (but doesn't introduce) new mechanics such as adding EMP shielding at runtime to any atom, or taking it away.
2018-05-22 11:38:02 +12:00
vuonojenmustaturska fd4c753a04 replaces BANG_PROTECT_2 with a component, also kills OMNITONGUE_2 and flags_2 (#37597)
* kill BANG_PROTECT_2

* let's put this back in

* dirty

* kill OMNITONGUE_2

This is a write-only variable, probably leftover from some refactor years ago

* kill flags_2
2018-05-02 14:13:41 -04:00
vuonojenmustaturska 3eb30b16f3 Replaces HEALS_EARS_2 with a component, adds a wearertargeting parent component for future use (#37530)
code: HEALS_EARS_2 is removed in favor of the earhealing component

code: wearertargeting component is available to subtype for components that want to target the wearer of an item rather than the item itself
2018-04-30 10:32:59 +12:00
vuonojenmustaturska ccf8fc5bc5 Kills off three more flags from flags_2 (#37529)
code: More flags have been moved to their appropriate places
SLOWS_WHILE_IN_HAND
FROZEN
NO_MAT_REDEMPTION

all moved to item_flags
2018-04-30 10:32:23 +12:00
vuonojenmustaturska 98f8ca7553 Moves several clothing-specific flags from /atom to their proper type (#37486)
* lavaproof

* more flags

* it compiles

* Remove a couple of lists
2018-04-28 13:22:28 -05:00
oranges ecd0d8b538 Merge pull request #37476 from AnturK/thisalwaysbuggedme
Uppercases slot defines.
2018-04-28 13:13:56 +12:00
vuonojenmustaturska 640f2cf693 Adds a stationloving component to replace a couple of flags and SSinbounds with (#37436)
* station lovin' happened so fast

* Update stationloving.dm

* less qdel memes

* imbue soul signal

* rename imbue soul signal

* dupemode

* henk

* Update atoms_movable.dm

* Update nuclearbomb.dm

* Update nuclearbomb.dm
2018-04-27 14:35:53 +02:00
AnturK 4c5a43eeb8 Prefix for item flag slot defines. 2018-04-27 10:30:48 +02:00
pigeons 6135ec864f Refactors bitflag macro values into bitshifts (#37234)
* Refactors bitflag values into bitshifts

* minor formatting edits

* Unbitshifts a macro set that skipped 3 for whatever reason
2018-04-19 18:36:35 -04:00
fludd12 97534f2ac3 [Ready] Slime Crossbreeding! (Part 1 of 2!) (#35986)
* Slime Crossbreeding!

* Shifts a few things around.

* Prismatic extracts!

* Self-sustaining extracts!

* Consuming extracts!

* Recurring extracts!

* Whups!

* Regenerative extracts!

* Stabilized (unfinished)

* More stabilized!

* This took more effort than it should have.

* Industrial extracts!

* Icons!

* Colors the crosses.

* Bugfixes galore!

* Burning extracts!

* Sounds!

* Starts on burning extracts.

* Charged extracts!

* Minor adjustments to the adamantine shield.

* Fixes map! Ready!

* Fixes problem children, changes consuming extracts

* I'm an idiot.

* Fixes playsounds, unnecessary srcs.

* Removes a gross text2path

* Resolves a conflict

* More AnturK fixes.

* Fixes two other things, too.

* Burning black extracts use shapeshifting now.

* Love Potion now mostly RP in use, aligns user factions.

* Iterative discovery of status effects.
2018-03-21 21:04:26 +01:00
vuonojenmustaturska 440e888c1f Clean up all sorts of crap, mostly defines (#36105)
* cleanbot

* rejuv

* more crap

* more crap

* still compiles

* clean

* is_crap
2018-03-05 02:07:27 +11:00
Cruix f76b3e3b29 Added map generation lava protection to the syndicate lava base (#34764)
* Added mapping helper for preventing lava river generation

* Added lava protection to the syndicate base bridge

* Re-added decals to the syndicate lava base bridge
2018-01-29 11:02:33 +01:00
Jordan Brown fec2d66318 Datum var cleanup (#34314)
* Consolidates datum var location

* Move ui_screen to /datum/tgui

* Move focusers to datum.dm. Move fingerprintslast to /atom

* Remove focusers list, makes mobs check if their focus is QDELETED in Life()

* Consolidate use_tag and var_edited into datum_flags

* Revert garbage comment

* Thought I already removed this

* Remove the var_edited preservation

* Removes focus QDELETED handling
2018-01-21 22:38:56 -05:00
Jack Edge 04a4a7e76b Replaces CLEAN_ON_MOVE_1 flag with cleaning component
CLEAN_ON_MOVE_1 is a flag checked on every atom movable's Moved() and
triggers a janiborg/upgraded janicart clean on the turf if present.

Replacing this with a component does the same thing and frees up a flag
slot.

Also fixes a bug where a spawned in "upgraded" janicart wouldn't
actually clean the floors.
2017-12-23 14:12:33 +00:00
ExcessiveUseOfCobblestone fabd7af52f hello! 2017-11-08 20:39:17 -05:00
AnturK a001f58480 _1 2017-10-12 08:08:10 +02:00
AnturK 1df4082525 Fixes ruins spawning over shuttle docks 2017-10-11 22:46:50 +02:00
ShizCalev 51c48409a6 Stops putting RCD, bluespace bags, and staves into ORM (#31093)
* Stops putting RCD, bluespace, and staves into ORM

* CB

* Chat message
2017-09-29 19:33:19 -05:00
Ian Turk 7460f2c5b8 Replaced flags with flags_1 2017-08-16 13:01:15 -06:00
Ian Turk 371f1ba4f0 Replace all secondary flags with bitflags stored in the flags_2 var 2017-08-15 16:01:35 -06:00
shizcalev 719612ba3b ALLOW ME TO BREAK THE ICE 2017-07-26 20:44:42 -04:00
kevinz000 aa61650035 Pixel projectile ricochets and reflections! (#27551)
Adds flags to atoms to allow them to reflect projectiles based on that projectile's reflection chance!
(can be overridden later for angle-based chances but this is good for now, ja?)
Gives titanium walls an 80% chance to reflect beams and 30% chance to reflect everything else!
Mostly-realistic reflection angles
If the math isn't fucked (I tested and the glitches seem to be from pixel projectile movement, not the math itself), this means we can have pixel projectile reflectors soon 😂😂😂😂😂
🆑
rscadd: Nanotrasen's new titanium wall blueprints are smooth enough that it can reflect projectiles!
/🆑
https://puu.sh/vYzMA/4f00c2a4a1.gif

o ya if this goes through i'll add pixel projectile support for reflectors when i have time so we can finally dump legacy b00lits.
2017-05-27 18:13:51 +12:00
AnturK 83e90cca22 Fixes clicking things under windows/doors. (#27292) 2017-05-18 07:05:41 -03:00
Cyberboss 72f171495a Adds a list of bitflags 2017-05-11 09:46:47 -04:00
coiax f993f9ce36 Refactors ear damage into ear organs (#26044)
* Refactors ear damage into ear organs

🆑 coiax
add: Centcom would like to inform all employees that they have ears.
add: Adds "ear" organs to all carbons. These organs store ear damage and
deafness. A carbon without any ears is deaf. Genetic
deafness functions as before.
/🆑

- `ear_damage` and `ear_deaf` vars removed from /mob.
- All mobs have a `can_hear` proc, which returns TRUE always except for
carbons.
- Carbons need to have an ear organ that has 0 `deaf` var.

- Explanation of how ear damage works is in the code, it hasn't been
changed from previously. Deafness is applied in number of Life ticks
until you regain hearing, while damage is long team, heals slower, and
when high enough, can cause flashbangs to make you go permamently deaf,
as before.

- Wearing earmuffs halves the healing time of deafness, and promotes
healing long term ear damage, as before. Earmuffs now have a secondary
flag HEALS_EARS, which currently only they own.

* Changes how soundbang deafness works slightly

* Ear organ icon

* Code review I

* Makes fully healing carbons not dependent on having a dna and species

* Gives monkeys and aliens ears

* Whoops

* Split organs into seperate files

* Tweaks.

* Un-removes brain damage lines

* Moved procs onto /mob for ear stuff

* Massages things into compiling

* Replacement of spam_flag with world.time tracker
2017-04-22 08:51:03 -04:00
coiax 02fa74903d Moves tesla_ignore from var on /mob/living to secondary flag (#26273)
Only granted by wizards learning the spell lightning bolt, so I don't
think it needs to be a var on /mob/living.
2017-04-17 10:13:02 -04:00
coiax 7554b5f454 Language datums; removes the talk wheel (#25333)
* Initial burst of languages

* Scratchings of beginnings

* Code review I

* Compilation!

* You can now understand your own speech

* Fixes whispering

* Gets typecaches working again

* Remie's `PASS`ing

* Back to pass() to stop the compiler whining

* Why can't drones check their languages

* Everyone speaks how they should

* Removes world string debug stuff

* Currently failing to massage radio code into working

* The radio transmits the languages!

* ,0 to talk common

* Replaces speech wheel with language menu

* Observers can speak all languages

* pAIs now speak languages FOREVER

* New action button for language menu

* pAIs have an action button to open their language menu

* AIs can talk and all that

* AIs have a language menu button

* Fixes supermatter making strange noises

* Fixes AI holopads

* Fixes request consoles

* Fixes bots making strange sounds

* Meaningless MMI change

* Some caching of datums

* Brains in MMIs speak common

* Ratvarian AIs can only speak Ratvarian

* Tables can speak common, apparently

* Removes var in args

* Fixes the (AI Eye) problem

Thanks to Shadowmobile for their help with this one.

* Fixes tape recorders

* Fixes humans being able to speak in languages they did not know

* Adds some new posibrain names

Honk.

* The voice analyzer replies in the language you spoke to it

* Gives swarmers only swarmer language

* `initial_languages` var.

* OMNITONGUE, clockwork restrictions

* Fixes barmaid and bardrone language abilities

* Code review I

* Omnitongue correction

* Code review II

* Removes force_compose var
2017-04-02 21:03:40 +02:00
coiax 92682e37c9 New bitflag CLEAN_ON_MOVE (#25060)
* New bitflag CLEAN_ON_MOVE

Time to use those highspeed bitflag slots.

If an atom/movable has CLEAN_ON_MOVE set, it will behave like a janitor
cyborg when moving.

Current owners of the CLEAN_ON_MOVE flag are janitor cyborgs and the
janitor's pimping ride (when upgraded).

Also moves BLOCK_GAS_SMOKE_EFFECT and THICKMATERIAL to seperate flags.

* Stop double floor buffer upgrades

* Also have a pre-upgraded janicart, why not

* Display the buffer if you got it
2017-03-22 09:32:24 +13:00
coiax cb38468e0c Merges HEADBANGPROTECT and EARBANGPROTECT into new secondary flag (#24881)
Unless we get a clothing item that can be worn on the head, and the
ears, and only protects from loud noises in one of the configurations,
this isn't going to be an issue.

Frees up another flag slot, all hail the secondary flags.
2017-03-13 22:00:43 +13:00
coiax f1d1e6f5e9 Demotes HANDSLOW to secondary flag (#24878)
It's used in literally four places, it doesn't need a high speed
bitflag slot.
2017-03-13 21:59:48 +13:00