Commit Graph

2374 Commits

Author SHA1 Message Date
Invalid
3fd678a2ae changes the shotgun slug's damage to its previous value of 30 2020-12-26 13:54:18 -06:00
EdgeLordExe
ab3c0e0332 [Fuck Shotties] Makes shotguns specialist weaponry. (#55663)
Shotgun slugs can no longer be made in an autolathe.
    Buckshot rounds can no longer be made in an autolathe.
    Frag12 rounds deal less direct damage, since they fucking explode.
    Pulse shot rounds deal less damage.
    Increased the cooldown on riot shotguns.
    Removed buckshot rounds from all maps.
    Combat shotguns start with beanbags.

Why It's Good For The Game

Shotguns have been overpowered for too long. NT is lasers , syndicate is ballistics.
2020-12-26 09:37:47 +13:00
silicons
1020831b6e ACTUALLY fixes shooting yourself with a gun (#55687) 2020-12-24 00:47:16 -08:00
Timberpoes
6e277b5b4a Syringe gun and rapid fire syringe gun nerfs, uplink reagent gun buffs. (#55642)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-12-22 17:31:20 -08:00
Time-Green
3508fa5d63 Fixes magic locker sprite being weird (#55589)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-12-19 13:20:18 -08:00
TemporalOroboros
0eac787dc0 Buffs the Blastcannon (#55573)
* Unhugboxes the blastcannon

- Flips [/obj/item/gun/blastcannon/var/hugboxed] from [TRUE] to [FALSE]
- Makes the blastcannon's maximum range scale with it's other explosive power
- Documents some class level variables for the blastcannon
2020-12-19 04:11:36 -08:00
tralezab
ade6d47ed1 Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals (#55193)
Huge removal of dead vars, bad timers, and other sloppy jitteriness from beams. They go from checking movement to waiting for a signal.
VARIABLE KILL LIST:

sleep_time: signals baby
finished: signals BAYBEEE
target_oldloc: not only not typecasted as a turf or named as a turf, it was unused. when are we going to use this? the beam starts from the origin!
origin_oldloc: bad name, not typecasted. renamed to originturf
static_beam: how are you an unused variable and still get replaced by signals like really
timing_id: signallllss bbbaaaabbyy
recalculating: you get the drill by now signals baby
base_icon: unused, seemingly replaced by visuals I think
2020-12-18 13:52:55 -08:00
Ryll Ryll
7713a70f4e It's Donk or Don't (#55566) 2020-12-17 20:06:15 -08:00
silicons
7bddb07fc9 fixes the clusterfuck of projectile issues (#55495) 2020-12-16 14:13:31 -08:00
Megarop
0d1b916d61 Changes what makarovs and APS machine pistols look like suppressed (#55346) 2020-12-13 00:11:08 -08:00
NightRed
2b0b4f05a2 X-Ray gun is larger not bag friendly (#55410)
The x-Ray gun was a normal sized object, made it bulky to stop printing several and putting them in bags.

Fixes #55321
2020-12-10 23:38:21 +00:00
Jared-Fogle
0a77d27a1b Replace direct poi_list manipulation with element (#55416)
Replaces GLOB.poi_list |= src and GLOB.poi_list -= src with an element that handles it directly.

More consistent code, especially when a lot of code couldn't decide how to add/remove (some |=, some -=, some .Remove, etc).
2020-12-10 23:30:25 +00:00
silicons
160175ee8b pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#54924)
Yeah uhh this'll probably need testmerging even after it's done because yeah it's a bit big.
If y'all want me to atomize this into two PRs (pass flags vs projectiles) tell me please. Pass flags would have to go in first though, in that case, as new projectile hit handling will rely on pass_flags_self.
Pass flags:

Pass flags handling now uses an atom variable named pass_flags_self.
If any of these match a pass_flag on a thing trying to pass through, it's allowed through by default.
This makes overriding CanAllowThrough unnecessary for the majority of things. I've however not removed overrides for very.. weird cases, like plastic flaps which uses a prob(60) for letting PASSGLASS things through for god knows why.
LETPASSTHROW is now on pass_flags_self
Projectiles:

Not finalized yet, need to do something to make the system I have in mind have less unneeded overhead + snowflake

Basically, for piercing/phasing/otherwise projectiles that go through things instead of hitting the first dense object, I have them use pass_flags flags for two new variables, projectile_phasing and projectile_piercing. Anything with pass_flags_self in the former gets phased through entirely. Anything in the latter gets hit, and the projectile then goes through. on_hit will also register a piercing hit vs a normal hit (so things like missiles can only explode on a normal hit or otherwise, instead of exploding multiple times. Not needed as missiles qdel(src) right now but it's nice to have for the future).

I still need to decide what to do for hit handling proper, as Bump() is still preferred due to it not being as high-overhead as something like scanning on Moved(). I'm thinking I'll make Moved() only scan for cases where it needs to hit a non-dense object - a prone human the user clicked on, anything special like that. Don't know the exact specifics yet, which is why this is still WIP.

Projectiles now use check_pierce() to determine if it goes through something and hits it, doesn't hit it, or doesn't go through something at all (should delete self after hitting). Will likely make an on_pierce proc to be called post-piercing something so you can have !fun! things like projectiles that go down in damage after piercing something. This will likely deprecate the process_hit proc, or at least make it less awful.

scan_for_hit() is now used to attempt to hit something and will return whether the projectile got deleted or not. It will delete the projectile if the projectile does hit something and fails to pierce through it.

scan_moved_turf() (WIP) will be used for handling moving onto a turf.

permutated has been renamed to impacted. Ricocheting projectiles get it reset, allowing projectiles to pierce and potentially hit something again if it goes back around.

A new unit test has been added checking for projectiles with movement type of PHASING. This is because PHASING completely causes projectiles to break down as projectiles mainly sense collisions through Bump. The small boost in performance from using PHASING instead of having all pass flags active/overriding check_pierce is in my opinion not worth the extra snowflake in scan_moved_turf() I'd have to do to deal with having to check for hits manually rather than Bump()ing things.
Movement types

UNSTOPPABLE renamed to PHASING to better describe what it is, going through and crossing everything but not actually bumping.
Why It's Good For The Game

Better pass flags handling allows for less proc overrides, bitflag checks are far less expensive in general.

Fixes penetrating projectiles like sniper penetrators

This system also allows for better handling of piercing projectiles (see above) without too much snowflake code, as you'd only need to modify on_pierce() if you needed to do special handling like dampening damage per target pierced, and otherwise you could just use the standardized system and just set pass flags to what's needed. If you really need a projectile that pierces almost everything, override check_pierce(), which is still going to be easier than what was done before (even with snowflake handling of UNSTOPPABLE flag process_hit() was extremely ugly, now we don't rely on movement types at all.)
2020-12-10 09:29:27 +13:00
TiviPlus
0eaab0bc54 Grep for space indentation (#54850)
#54604 atomizing
Since a lot of the space indents are in lists ill atomize those later
2020-11-30 12:48:40 -05:00
Ghom
f77d48bc36 Fixing robot upgrades sometimes not being removed from lists. (#54842) 2020-11-28 08:01:34 -03:00
Ryll Ryll
1b9777df1f Changes grenade proc names to be more clear (#55181)
Grenades have, for the longest time, used the proc name preprime() to refer to arming a timed grenade so that it will boom in a few seconds, and prime() to refer to the grenade actually going boom (or releasing foam or anything else grenades do when they go off). This was very confusing, so now these two procs are called arm_grenade() and detonate().
2020-11-28 07:44:28 -03:00
MrMelbert
c8536907fc Accidental Consumption post-food refactor cleanup (#55152)
Renames a bunch of vars to be more descriptive
    Removes old references to snacks
    Updates some code slightly
2020-11-26 14:41:26 +00:00
Ghom
4c31b0e116 CanUseTopic() refactor. (#54747)
* CanUseTopic() refactor.

* Forgot about default_can_use_topic. Tested and working.

* Update bin.dm

* no-nonsense.
2020-11-25 13:12:12 +01:00
NightRed
fb51b24d21 Humans have more complicated body temperatures (#54550)
This changes how carbon/humans stabilize body temperature, and changes how damage and wounds are applied based on temperature.

Humans now have a core body temperature along with body temperature. The core temperature is used for natural stabilization and what viruses like fever and shivers target by raising or lowing the core temperature of the mob.
The standard body temperature still exists and acts exactly the same for most items at this time but is now treated as surface temperature in humans.

Damage from body temperature for humans is now based on the core temperature instead of body temperature now.
Humans will now receive burn wounds when the body (surface) temperature is to high for to long.

This causes you to see alerts for the area temperature before you take damage in most cases improving visibility of dangerous situations.
2020-11-24 22:37:36 -08:00
Ryll Ryll
1f1bddfe4f Foam darts and other unembeddable bullets will no longer leave ghost shrapnel (#54994)
Projectiles are assigned the ability to try embedding by the presence of a shrapnel_type variable being set on them, whether or not they actually have a set of embedding stats in their embedding var. By default, children of /obj/projectile/bullet have a shrapnel type set to a generic embedded bullet item, including things like foam darts and lollypop projectiles which shouldn't be able to embed (and certainly not embed as a bullet). While they had their embedding vars set to null, they still had their shrapnel_type set to the embedded bullet type, meaning shooting a person with a dart gun or whatever would leave a failed shrapnel item on the ground where they weren't supposed to.

This fixes that by requiring both a defined shrapnel_type AND a defined embedding var for the embedding stats. Any projectiles without both won't be able to try embedding. I also manually put 'shrapnel_type = null' on any bullet subtypes with embedding = null just to be safe and for consistency.
2020-11-23 19:35:04 -08:00
TemporalOroboros
edd6500d78 /obj/screen --> /atom/movable/screen (#54403)
Repaths screen objects to /atom/movable
2020-11-08 23:07:15 -03:00
Qustinnus
51466a6c4a The clown PDA now has in-built comedy detection for when something happens to the clown and plays a fitting sound. (#54695)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-11-08 16:45:30 -08:00
Jared-Fogle
477d97647e Move death(), gib(), and dust() from /mob to /mob/living (#54810)
These have no reason to exist on /mob, where they noop for any nonliving.
2020-11-08 10:32:04 -05:00
necromanceranne
f3fdb19c60 Speargun: Now actually a gun! Again! (#54289)
Turns the speargun from the syndikit bundle into a bolt action rifle instead of a pnuematic cannon.

The spears the rifle fires embeds using the new bullet embedding system by Ryll. The spears do a lot of fucking damage.

The new bundle includes:

The Ballistic Harpoon Gun

The weapon is a single shot rifle that can be loaded with harpoons. The rifle, being bolt action, requires pulling back the bolt, loading the new harpoon, then locking the bolt every time you wish to fire the weapon. This is more busy work than the pnuematic cannon version, but more reliable in functionality without any messy business with throwing.

The harpoons do 60 force, have a high wound chance against unarmored targets and very high embed chance, with a 100% against unarmored targets. They also have considerable armor piercing at 50, letting you nearly entirely shoot through a ballistic vest.

The weapon is essentially a powered-up single shot mosin or a significantly more powerful improvised shotgun filled with slugs.

The Quiver

Now a bag that goes on your belt. It holds up to 40 harpoons for your harpoon gun. This change was done because the harpoons cannot be retrieved, unlike the magspears, which were simply hacky ninja stars and could be pulled out with surgical tools/wirecutters. Previously you had 20 magspears, which because of their retrievable nature lasted a little longer than you would expect.

Sprites

New back sprites for the harpoon gun, ensuring nobody is missing it when you have it. Additionally, the Mosin Nagant now has it's back sprite as a suit storage sprite.

New sprite for the quiver.
2020-11-06 22:45:20 -08:00
Ghommie
ec50fbd5f5 Merge branch 'master' of https://github.com/tgstation/tgstation into Ghommie-tg27 2020-11-01 14:38:30 +01:00
Timberpoes
497f4498a9 Fixes various shapeshifting-related runtimes and interactions (#54663) 2020-10-29 18:30:10 -03:00
Rohesie
c55bb1b6c8 Basepixels (#54652) 2020-10-28 20:31:13 -07:00
Ghommie
c9f0966156 Non-human mobs can now benefit from held id cards and economy. 2020-10-27 15:59:28 +01:00
ATH1909
deade8f968 Gamer(025) moment 2020-10-25 15:52:40 -05:00
Qustinnus
74755a5a3a Audio falloff re-work, and increased audio range. (#54362)
imo; the ss13 audio-scape is quite barren, you can only hear most things if you can see them, which in my opinion doesn't make much sense. This changes that so you can hear further away, but falloff is much higher, so in reality you will only hear things relatively quietly when they're out of sight.

This PR increases the hearing distance of most sound by 9, excluding sounds such as antag items that are meant to be used stealthily

This PR also replaces Byond's inbuilt falloff system with something I made, (And thanks to potato for helping me throw together a formula for it). This fall-off system makes sound fall off more naturally, with sounds being full volume within a certain range, and then softly falling off until they are completely quiet. This makes for a smoother transition between "This sound is full volume" and "I dont hear this sound".

Co-authored-by: ff <ff>
2020-10-20 17:14:16 -07:00
Emmanuel S
18bd7474b5 Adds the New-and-Improved Training Machine, Training Toolbox! (#54133)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
2020-10-16 15:56:51 -07:00
necromanceranne
eae72b14f2 Fixes weapons with standard bolts, like Mosin Nagants, getting a chambered bullet when they shouldn't. (#54290)
Fixes bolt action guns getting phantom bullets chambered upon initialization.
2020-10-14 21:13:05 -07:00
ZeWaka
9629feed35 Converts A && A.B into A?.B (#54342)
Implements the ?. operator, replacing code like A && A.B with A?.B

BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
2020-10-13 16:43:53 -03:00
PolishUser
bbaeba2e8e HoS and Captain Laserguns are now normal sized (#54281)
Co-authored-by: PolishUser <fakemail@fake.com>
2020-10-11 03:51:28 -07:00
Rohesie
af65c90125 Mobility refactor: no more update_mobility() (#54183)
This is a pretty big change all around. The gist of it is that it moves the mobility_flags into traits or variables that can track the sources, and to which we can append code to react to the events, be it via signals or via on_event-like procs.

For example, MOBILITY_STAND could mean, depending on context, that the mob is either already standing or that it may be able to stand, and thus is lying down.

There was a lot of snowflakery and redefinitions on top of redefinitions, so this is bound to create bugs I'm willing to fix as I learn them.

The end-goal is for every living mob to use the same mobility system, for the traits to mean the same among them, and for no place to just mass-change settings without a way to trace it, such as with mobility_flags = NONE and mobility_flags = ALL

Fixes AIs being able to strip nearby people. They've lost their hands usage.
2020-10-09 16:04:30 -07:00
tralezab
b59cbd60f3 most laser and energy weapons are bigger, lethal lasers are cheaper (#54041)
Nearly all guns except the security disabler is large, meaning it can't fit in backpacks.
2020-10-06 18:37:42 -03:00
Rohesie
3cc7733f34 Moblity refactor: hands blocked and restrained edition. (#53981)
Splits the restrained() proc into component traits: TRAIT_HANDS_BLOCKED for the general inability to use hands and TRAIT_RESTRAINED for the more specific condition that permits arrests.
    Code moved away from the update_mobility() proc so it doesn't have to wait for an update, instead changing based on events. The idea is to eventually kill that proc.
    Wrapper proc added for setting the handcuffed value so we can react to the event of it changing.
    Kills the RestrainedClickOn() proc. That is now just an UnarmedAttack(), in where the ability to use hands can be checked. Monkeys keep their bite attack and humans their self-examine.
2020-09-29 11:23:43 +01:00
Timberpoes
357d272935 Fix skill related runtimes in mindless mobs. (#53691)
Fixes related to mindless mobs using skills
2020-09-24 13:32:22 +02:00
Timberpoes
9b33c17dd7 Fix runtime when gun is destroyed with attached seclight (#53756) 2020-09-24 05:39:02 -03:00
Ryll Ryll
80cefef747 Fixes projectile impacts + messages, embedding, adds deployable landmines (#53436)
* icon and alert anim

* hmm

* projectile and embed fixes

* cap mine

* clean up, fix some issues with projectile embeds

* light

* doc

* icon

* awkward

* icon again
2020-09-23 07:53:55 +02:00
TiviPlus
72fc7213ed Mecha medical and other_equipment refactor (#53637) 2020-09-23 02:40:16 -03:00
necromanceranne
149ad4def6 Sprite stuff: missing belt and suit storage sprites among others (#53804)
About The Pull Request
Adds a bunch of sprites including:

A basic nullrod sprite
Belt sprites for the claymores lol nevermind
Backsprites for the cult blade and changed the chaplain's darkblade to fit on the back.
Suit storage sprites for the dark scythe, the cultblade, the spellblade, the claymores, katana and the nullrod

Suit storage sprites for a whole host of high powered firearms. You can visibly tell someone has shotguns or sniper rifles in their armor vest. How neat.

You can't conceal stunprods in armor suit storage anymore.

Nullrod cultsword (darkblade) also uses a uniquer inhand. Ye.

Also knives and a rolling pin belt sprite, hecc!

I also did some other stuff look there are a lot of sprites and I want to sleep please leave me alone nullrods are fucking stupid.
2020-09-23 01:39:10 -04:00
TiviPlus
ff1631b7b9 Fully removes devil and affiliated shitcode (#53612)
Its all over the place, messy, and overall a bad enough gamemode to be removed from rotation.
A rework would have to tear out everything as is so there is no reason to allow the shitcode to live beyond tripping up everything.
2020-09-23 00:46:21 +01:00
ArcaneMusic
d836946e8e Arcane finishes the fight and adds all the missing belt sprites and a worn sprite Admin Tool. (#53305) 2020-09-16 16:11:23 -03:00
Mike Long
93b8626a2c Makes the syndicate syringe gun start with a syringe loaded. (#53656) 2020-09-14 10:49:55 -04:00
Donkie
53b212ddf2 Process procs now properly utilize deltatime when implementing rates, timers and probabilities (#52981)
* Process procs now properly use deltatime when implementing rates, timers and probabilities

* Review fixes

* Geiger counters cleanup

Made hardsuit geiger code more similar to geiger counter code
Geiger counters are more responsive now

* Moved SS*_DT defines to subsystems.dm

* Rebase fix

* Redefined the SS*_DT defines to use the subsystem wait vars

* Implemented suggested changes by @AnturK

* Commented /datum/proc/process about the deltatime stuff

* Send delta_time as a process parameter instead of the defines

Also DTfied acid_processing

* Dtfied new acid component
2020-09-08 10:24:05 +02:00
Ghilker
5543c6db46 crystal invasion balancing and fixes (Now with extra rework!) (#53399)
Refractored code so that the more_portals() proc gets called by the event instead of a CALLBACK
Balanced mobs spawn from portal and how much damage they deal
Fixed grammar stuff on crystal consume announcement
Ligthing aoe projectile now have a no_stun version for the boss rank
Lowered time needed to use the crystal stabilizer to 7 second total
Crystal mobs have TRAIT_TESLA_SHOCKIMMUNE to prevent boss from hurting himself and the other crystal mobs
Added check at start of event for presence of the supermatter crystal

New: Revamped event a bit, now instead of random portal appearing a random, there will be from 2 to 5 main portals and around those 6 more portals will appear; after that centcomm will announce the position of those new portals. Now the players will have to close those main portals before being able to stabilize the crystal because there will be a shield around it powered by those portals. Everything else will be the same (like how to close the portals and stabilize the crystal)
2020-09-07 16:52:10 -03:00
Shirbu
53df2b2fe6 Reduces the light range of all beam (lasers, disablers, emitter shots) projectiles (#53328) 2020-09-07 16:48:32 -03:00
TiviPlus
ce3d7e2f0d Mecha refactor 2020 (#52902)
-Mechs are a vehicle subtype
-Mech equipment half-rewritten
-Mech actions completely redone
-Cooldown macros
-New movement macros & replacing all var in GLOB.diagonals with ISDIAGONALDIR(var)
-New lazylist macro
-Support for lavaland only mechs
-Removed the tank because fuck off with that hacky shit
-Documentation
-Fuckton of fixes
2020-08-29 23:33:47 -03:00
TiviPlus
ca366c3ea1 Bools and returns super-pr (#53221)
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is

Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
2020-08-28 14:26:37 -07:00