Commit Graph

1285 Commits

Author SHA1 Message Date
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
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
TemporalOroboros edd6500d78 /obj/screen --> /atom/movable/screen (#54403)
Repaths screen objects to /atom/movable
2020-11-08 23:07:15 -03: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
ATH1909 deade8f968 Gamer(025) moment 2020-10-25 15:52:40 -05: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
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
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
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
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
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
uomo 1593579262 Fixes some bugs with the detective's revolver. (#53107) 2020-08-24 20:48:02 -03:00
TemporalOroboros 6e950daccc Defines damage flags. (#53158) 2020-08-24 08:20:33 -03:00
Rohesie eda7c6ca55 Overlay lighting component (#52413)
Sparks no longer lag, projectile beams move super smoothly, same with mobs and whatnot. This also allows for easy expansion into directional lights, field-of-view, wee-woo rotating lights or whatever.

It does have a downside: things right-clicked or checked through the alt+click tab will show the light overlay:


This is a BYOND limitation, very well worth it IMO.

🆑
add: Smooth movable lighting system implemented. Projectiles, sparks, thrown flashlights or moving mobs with lights should be much smoother and less laggy.
balance: Light sources no longer stack in range, though they still do in intensity.
/🆑
2020-08-22 14:56:38 +12:00
kingofkosmos 3263decaad Personalized combat messages part 2 (#52890)
Adds more "personalized" combat messages for all participants in a fight: the attacker, the victim and the spectators
2020-08-13 11:34:57 -03:00
Fhaxaris a4cc16d2a3 No more flipping your gun instead of reloading. (#52868)
Now you do both regardless.
2020-08-12 14:20:03 -03:00
Timberpoes 19c3bbde31 Cleanup up all instances of using var/ definitions in proc parameters. (#52728)
* var/list cleanup

* The rest of the owl

* plushvar bad

* Can't follow my own advice.
2020-08-07 12:23:42 -03:00
skoglol c88a09e211 Merge pull request #52736 from Jared-Fogle/syringe-gun-sprite
Added sprite for empty syringe gun, loading sound
2020-08-07 08:30:56 +02:00
ShizCalev b4121e4746 Sharpness fixes (#52720)
* Sharpness fixes

* fix
2020-08-06 15:05:27 -03:00
ArcaneMusic e4ee108f4e Contributes more missing belt, back, and otherwise ERRORing sprites. (#52670)
* I'm crying over all these beeeeeeelts

* Removes ?

* Provides some close enough substitutes for inhands
2020-08-06 19:23:51 +02:00
ShizCalev ce7eb9fbec sprites, code 2020-08-05 09:23:26 -04:00
Jared-Fogle a9a4712600 Added sprite for empty syringe gun, loading sound 2020-08-04 21:54:42 -07:00
ShizCalev 04ff2e7eb5 Ballistic gun icon / overlay / ammo fixes. Adds support for suppressors to extend outside of a gun's 32x32 icon. (#52634)
* Ballistic gun fixes

* More fixes
2020-08-03 03:43:13 -03:00
ShizCalev 3eeef6c272 Cleans up some unused procs and makes is_blocked_turf a turf proc. (#52482)
* Cleans up some unused procs and makes is_blocked_turf a turf proc.

* Update code/game/turfs/turf.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-07-30 02:20:35 -03:00
Ryll Ryll 46dd89b07a [READY] Wounds part 2: Piercing wounds, dismemberment changes, housekeeping (#51786)
* pierce the heavens

* starts doing projs

* continue pierce

* before armor

* before sharpness redefine

* rename sharp defines, before further implementation

* finishing undoing atk_type back to sharpness

* neatens up sharpness defines, FALSE -> SHARP_NONE

* more piercing, removes brute damage bleed, bubblegum no longer wound

* starts letting embeds get in on the fun

* half with embed

* work on dismembering

* continued embed work

* more moving bandaging to limbs

* more dismemberment work

* removing embed pierce stuff

* tweaking bullets

* more docs and work on dismemberment

* spans, piercing, guns

* dismemberment and scar fixes

* bee changes

* bullets embedding

* more bullet and dismember work

* dismemberment, surgery, piercing, formaldehyde,

* pleases travis

* pierce smite

* nicer on blood

* Auto stash before rebase of "tgstation/master"

* more neatening

* wounds only consider up to 35 damage, wounds on l6 and 762

* updates hulk

* balance

* defines

* lower slug to 50 brute to accommodate wounds

* adds differentiation for having flesh/bones/both in mobs

* moves scar descs to json, renames organic_state

* excises removed healing skill

* fixes logs, inconsistencies, some balance changes

* untab

* slight compress

* a

* kills pointed global list

* dmdoc

* halfway through roh

* finishes roh review

* okay NOW i finished roh's reviews

* roh roh roh your boat

* gently down the stream

* global lists

* list ops, fix scanner for bone gel improvised fix

* travis moment

* sounds added and moved

* pellet clouds can join the fun fully, slight gun balancing for wounds

* doc moment

* unconflicts myself

* update hulk

* Update code/_onclick/item_attack.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* crying ascii face

* final rohview

* oops

* final final

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-07-23 23:19:30 -03:00
spookydonut d17080167c Fix leading slashes and turn on linting for it 2020-07-21 13:02:04 +08:00
Timberpoes a24d6f5adb Exosuit Fabricator tgui Total Conversion - An Ode to Roboticists (#52073)
* First draft

* tgui interface bluescreen guards

* Preparing for cyborg module sub-categories

* The rest of the owl

* Stop duplicate say messgaes

* Implement interface handling for obstructed exits

* Pocket lint

* Documentation and misc. code cleanup

* Implement searching in interface

* tgui pocket lint and build

* Coding style consistency and changes. Rebuild tgui.

* Update default bitflags

* Address potential edge case bluescreen.

* orange man good

* Remove emag_act with obsolete functionality

* Standardise variable naming conventions

* tgui 4.0 update

* tgui 4.0 update

* Port a couple of usability improvements from concept branch.

* Fix new ui_act input.

* Actually fix new ui_act input

* Port some small improvements from concept branch.

* Rebuild tgui

* Made department of redundancy department redundant.

* Rebuild tgui.
2020-07-18 19:09:24 +03: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
ShizCalev 254536072e [s] sanity checks vv_edit_var() values (#52255)
cl ShizCalev
fix: Added some sanity checking for varedit values.
/cl
* sanity checks vv_edit_var() values

* this should be an or

* one more fix
2020-07-16 10:20:41 +12:00
ShizCalev 7cbbe3502c Fixes runtime when doing things with a ballistic gun without a magazine loaded 2020-07-07 20:23:01 -04:00
skoglol ad4b78a5c5 Merge pull request #52034 from ShizCalev/energy-gun-icons-m2
Unfucks worn energy gun icons... again
2020-07-07 16:27:05 +02:00
skoglol 615f824010 Merge pull request #52036 from ShizCalev/gun-overlay-fix
Fixes L6 inhands
2020-07-07 16:23:55 +02:00
skoglol 959270568a Merge pull request #52037 from ShizCalev/gun-magazine-overlay-fix
Fixes magazine overlays not working
2020-07-07 16:23:10 +02:00
ShizCalev 5c5e1a3454 Merge branch 'master' into energy-gun-icons-m2 2020-07-05 22:39:39 -04:00
ShizCalev fdf5ac35ee Fixes some minor ingition_message grammar issues (#51889) 2020-07-06 14:07:17 +12:00
ShizCalev f8bfc93b2b fixes magazine overlays 2020-07-05 21:40:52 -04:00
ShizCalev c250a1a67a Fixes L6 inhands 2020-07-05 21:39:34 -04:00
ShizCalev 87dc1306fb kiss 2020-07-05 19:45:36 -04:00
ShizCalev 704aa41a84 esniper sprite 2020-07-05 19:34:46 -04:00
ShizCalev 8b0fb19212 unfucked laser cannon 2020-07-05 18:36:03 -04:00
ShizCalev 59bc79057c Unfucks worn gun icons again 2020-07-05 18:22:18 -04:00