Commit Graph

248 Commits

Author SHA1 Message Date
Joan Lung
ce13143d9d Replaces yet more istypes with helpers (#20806)
* uses more istype helpers

* oranges is inefficient
2016-10-10 17:48:35 +13:00
phil235
5f835bfc26 Obj damaging system, acid damage, and fire damage refactor (WIP) (#20793)
Please refer to #20867 and #20870 for a easier view of the changes. Those two PRs show all meaningful changes (hopefully) and doesn't show the files changed with just 3 lines changed.

This PR does three things:

    It makes all children of /obj/ use the same damage system.
    Previously to make your new machine/structure be destroyable you needed to give it a var/health, and its own version of many damage related proc such as bullet_act(), take_damage(), attacked_by(), attack_animal(), attack_hulk(), ex_act(), etc... But now, all /obj/ use the same version of those procs at the /obj/ level in code/game/obj_defense.dm. All these obj share the same necessary vars: obj_integrity (health), max_integrity, integrity_failure (optional, below that health level failure happens), and the armor list var which was previously only for items, as well as the resistance_flags bitfield. When you want your new object to be destroyable, you only have to give it a value for those vars and maybe override one proc if you want a special behavior but that's it. This reorganization removes a lot of copypasta (most bullet_act() version for each obj were nearly identical). Two new elements are added to the armor list var: fire and acid armor values.
    How much damage an obj take depends on the armor value for each damage category. But some objects are INDESTRUCTIBLE and simply never take any damage no matter the type.
    The armor categories are:
    -melee(punches, item attacks, xeno/animal/hulk attacks, blob attacks, thrown weapons)
    -bullet
    -laser
    -energy (used by projectiles like ionrifle, taser, and also by EMPs)
    -bio (unused for this, only here because clothes use them when worn)
    -rad (same)
    -bomb (self-explanatory)
    -fire (for fire damage, not for heat damage though)
    -acid
    For machines and structures, when their health reaches zero the object is not just deleted but gets somewhat forcedeconstructed (the proc used is shared with the actual deconstruction system) which can drops things. To not frustrates players most of these objects drop most of the elements necessary to rebuild them (think window dropping shards). Machines drop a machine frame and all components for example (but the frame can then be itself smashed to pieces).
    For clothes, when they are damaged, they get a "damaged" overlay, which can also be seen when worn, similar to the "bloody" overlay.

    It refactors acid. See #20537.
    Some objects are ACID_PROOF and take no damage from acid, while others take varying amounts
    of damage depending on their acid armor value. Some objects are even UNACIDABLE, no acid effect can even land on them. Acid on objects can be washed off using water.

    It changes some aspect of damage from fires.
    All /obj/ can now take fire damage and be flammable, instead of just items. And instead of having just FLAMMABLE objs that become ON_FIRE as soon as some fire touch them (paper), we now have objects that are non flammable but do take damage from fire and become ashes if their health reaches zero (only for items). The damage taken varies depending on the obj's fire armor value and total health. There's also still obj and items that are FIRE_PROOF (although some might still be melted by lava if they're not LAVA_PROOF).
    When a mob is on fire, its clothes now take fire damage and can turn to ashes. Similarly, when a mob takes melee damages, its clothes gets damaged a bit and can turn to shreds. You can repair clothes with cloth that is produceable by botany's biogenerator.

    It also does many minor things:
        Clicking a structure/machine with an item on help intent never results in an attack (so you don't destroy a structure while trying to figure out which tool to use).
        I moved a lot of objects away from /obj/effect, it should only be used for visual effects, decals and stuff, not for things you can hit and destroy.
        I tweaked a bit how clothes shredding from bombs work.
        I made a machine or structure un/anchorable with the wrench, I don't remember which object...
        Since I changed the meaning of the FIRE_PROOF bitflag to actually mean fire immune, I'm buffing the slime extract that you apply on items to make them fire proof. well now they're really 100% fire proof!
        animals with environment_smash = 1 no longer one-hit destroy tables and stuff, we give them a decent obj_damage value so they can destroy most obj relatively fast depending on the animal.
        Probably a million things I forgot.

If you want to know how the damage system works all you need is the three obj vars "obj_integrity", "max_integrity", "integrity_failure", as well as the armor list var and the resistance_flags bitfield, and read the file obj_defense.dm
2016-10-10 11:14:59 +13:00
Joan Lung
dff4db726a Replaces a bunch of istypes with their proper macros (#20739)
* Replaces a bunch of istypes with their proper macros

* i'm not sure doing a 100+ file changed pr on a whim is something you do when bored
especially if you do it by hand because you never actually learned the regex that would let you automate it

* i'm just... gonna do this, because that check was true a lot and it shouldn't matter
2016-09-30 20:21:08 +02:00
phil235
2d2975f783 Some preliminary changes before the damage refactor PR. The changes here do absolutely nothing gamewise.
This just adds some vars that the refactor will use. Putting this in a separate PR prevent the damage refactor PR from becoming too big (number of files changed) and hard to read and review.

Introduces the resistance_flags bitflag that replaces unacidable and burn_state.
Moves the armor var from item to /obj level and gives specific armor values to many objects, the armor list also gets two new armor types: fire and acid, which will be used in the refactor. the new fire and acid armor values are given to plenty of items.
2016-09-27 22:33:08 +02:00
Remie Richards
00738bd2a3 More than 2 hands!? WHAAAAAAT 2016-09-02 16:10:16 +01:00
oranges
ef84942384 Merge pull request #20082 from Xhuis/highlander_patch
[s] Highlander 2.0
2016-08-29 11:27:58 +12:00
Cheridan
7deb370521 FUCK POCKETS (#20129) 2016-08-28 13:06:37 +12:00
Xhuis
77bb8fce3c Highlander 2.0 2016-08-24 18:16:59 -04:00
MrStonedOne
83eca75951 Removes unneeded lighting checks. 2016-08-22 08:56:53 -07:00
bawhoppen
1fecd12aaf no really who is da king (#19537)
add: Added crowns. Make them from gold. Cap gets a fancy one.

Crowns get some armor but are overall worse than sec gear.
2016-08-01 13:58:11 +12:00
NikNakFlak
1f6d41bc28 Color variables for scarves/beanie fix (#19438)
* Does some stuff

* Fixes ties on humans and corgis not applying color and alpha to the overlays

* Renames /datum/dog_fashion vars to reduce confusion
Also fixes issue introduced in d2fd3f36918b9abfa833b75fda8af3c124c85336 where custom DF icon_states (now obj_icon_state) would not carry over to the corgi

* Fixes consistency mess up with dog_fashion
caused by 2595ce2d322cd74653eca2be43f79ad63104e61a
2016-07-25 10:23:34 +02:00
NikNakFlak
1ff1582591 Adds 14 colorful beanies to game/clothesmat (#19408)
Sprites by Nienhaus with edits done to them by me


The colors look almost identical but now only the white, and striped versions of the beanies exist with the other colors being done via color variable.
2016-07-22 10:13:43 +12:00
KorPhaeron
b6d8873994 Hide mask 2016-07-17 18:24:50 -05:00
Core0verload
e666d2e76b ports pockets (from Animus Green) and adds them to some clothing.
This PR ports pockets (from Animus Green) and adds them to some clothing.

 Shoes that support storing items now use pockets system.
 Some hats have 1 small pocket.
 Detective's hat spawns with a flask in it.
 Clown's mask has a single tiny top-secret pocket. Honk!

This PR also includes two or three path fixes. It also fixes internal storages (pockets, storage implant) having less "max depth" than external ones.
2016-07-14 19:36:26 +12:00
MMMiracles
69c676617b Making Space Great Again (implying it ever was): Part Uno (#19085)
Adds space ruins. Balance not included.
Simple mob ghosts actually work now.
Puzzle1 ruin removed due to issues with projectiles.
2016-07-05 00:02:42 +12:00
Kyle Spier-Swenson
0d6bbbb412 stop the pills (#18703)
* RedPills Processing

Now you have to use START_PROCESSING(SSname, thing) (and STOP_PROCESSING)

* Fixes a minor bug.
2016-06-20 12:07:44 +02:00
c0
1a6fa0031d Adds explorer gas mask for lavaland miners 2016-06-11 10:38:53 +03:00
Steelpoint
28e569b356 InitalCommit 2016-06-03 15:32:46 +08:00
AnturK
802cdf9f5c Merge pull request #17839 from optimumtact/watisgoinon
Fix an antipattern when using canUseTopic
2016-05-24 17:46:11 +02:00
Cheridan
c94492664f MMmiracles away mission cleanup (#17873)
* MMmiracles away mission cleanup

* tomb ruin fix
2016-05-23 00:46:04 -05:00
oranges
947e2c5c19 Fix an antipattern when using canUseTopic
remove redundant range checks that are checked in the fixed canUseTopic
2016-05-22 00:23:47 +00:00
KorPhaeron
34a7a89df1 Bone Sprites 2016-05-16 19:35:36 -05:00
Joan Lung
8b656d2603 Merge pull request #17284 from MMMiracles/spookyjookie
Lavaland Ruins
2016-05-13 20:22:56 -04:00
KorPhaeron
d93f87cf96 Removes """""humour"""" 2016-05-12 03:18:05 -05:00
KorPhaeron
0c996d538f Cake Hat 2016-05-10 23:09:27 -05:00
MMMiracles
923aa61501 when u forget to pull for updates before touching a .dmi 2016-05-07 01:35:22 -04:00
MMMiracles
1f4c7857bc more ruins + trigger warnings for the feint of heart 2016-05-07 01:29:00 -04:00
Jack Edge
086eb03c1a Adds collectable HoP hat
- Switches reskinned HoS hat in museum in MetaStation to use HoP hat
 - Adds HoP hat to cargo
 - Collectable HoP hat able to be worn by corgis
2016-05-02 11:37:39 +01:00
TechnoAlchemist
5b19023f24 adds skull helmet. 2016-04-26 13:35:00 -07:00
Jack Edge
8fc75b438d Fixed some remaining variables 2016-04-24 13:21:14 +01:00
Jack Edge
0fd1f3c7e4 Made /datum/dog_fashion 2016-04-24 13:18:43 +01:00
Remie Richards
a3dd455a37 Adds a framework for alternate appearances (override images), the Cardborg costume now makes you look like a real Standard Cyborg 2016-04-02 20:52:00 +01:00
TehZombehz
dcaf8feecf Typo fix 2016-03-28 02:05:51 -05:00
TehZombehz
c83cc45ab2 Regular and smiley paper sack are now wearable if modified
Use a sharp object on an empty regular or smiley face paper sack to
craft their respective wearable paper sack hats.
2016-03-28 01:59:44 -05:00
Isratosh
22f377b02f Bulletproof helmets seclight attachment
Code and icons for bulletproof helmet headlamps
2016-03-11 02:14:04 -07:00
phil235
0ec876d9fe Refactored the item's action system. Items can now hold multiple actions.
The "set internals" button of tank items now turn green when it's used as internals.
Removed research scanner from drones (since cyborgs don't have it, it's more consistent)
Removed the ignore_madkadjust mask var.
The sechailer mask now has an adjust mask action button, so I removed the adjust verb that it was using.
The item's action are now created on item/New() instead of trying to create it every time someone picks the item up.
I split hud/action.dm, the datum/action stuff is now in the datum folder (/datum/action.dm), whereas the code for action buttons is kept in the hud folder under action_button.dm. Also I moved some /datum/action code that was in some files back into datum/action.dm where it belongs.
2016-02-23 19:37:42 +01:00
phil235
91839f5f70 Action buttons will now only update when needed instead of every Life().
The action buttons now update their icon instantly.
Fixes versions of pickup(),equipped() and dropped not calling the parent.
Fixes drone not being able to remove a defib from their storage.
You can now cycle the mime mask by clicking it in your hand.
The action buttons for hardsuit and hooded suits now only appears when you're wearing the suit.
Created two mob helper procs getBeltSlot() and getBackSlot().
Created /datum/species/proc/on_species_loss() to handle stuff when our race change, currently only used by jelly and slime race to remove their exotic blood from our reagents and to remove slime people's action buttons.
2016-02-22 00:34:59 +01:00
phil235
fd16e02cdb Fixes most (non hardsuit) helmets hiding the glasses when they shouldn't.
Fixes not seeing glasses through the riot helmet.
Fixes gas mask protruding from the abductor helmet.
Fixed radiation hood not hiding your hair, earpiece, mask.
Fixes colored justice hats not having an on-mob icon_stat.
Removed BLOCKHAIR bit from var/flags , moved it to flags_inv and renamed to HIDEHAIR
Added HIDEFACIALHAIR bitflag so certain hat/helmet can show just the beard.
Fixed human/update_inv_glasses not checking if our mask hides our glasses.
Fixed check_obscured_slots() not checking if our masj obscur our glasses.
Fixes some bits of flags_inv having the same value.
Fixes crusader hood and other headgear not hiding your identity when they should.
Fixes drone mask icon not appearing.
2016-02-14 00:03:07 +01:00
PKPenguin321
eefeb813a4 gives caps bomb armor 2016-02-07 18:21:09 -08:00
PKPenguin321
6f660075a7 bumps beret armor up 2016-02-07 18:20:01 -08:00
PKPenguin321
c920ae1f15 bumps helmet armor up 2016-02-07 18:15:42 -08:00
tkdrg
2f9cf25120 Merge pull request #15000 from KorPhaeron/hat_buffs
Buffs cakehat
2016-01-31 13:45:55 -03:00
Razharas
0826128459 Merge pull request #14698 from Firecage/absolutepathsandifs
Absolute paths and changes one liner if's/else's/else if's.
2016-01-29 03:15:12 +03:00
KorPhaeron
e3021745a1 Buffs cakehat 2016-01-28 00:51:10 -06:00
PKPenguin321
952e475808 addresses some feedback, hoopefully makes it compile
only part i'm not 100% sure about is the iscarbon, but whatever
2016-01-27 10:01:49 -08:00
PKPenguin321
cde623c4bf fixes up some helmets
i honestly do not know what i am doing any more i am just parroting what @neersighted said to do
fixes https://github.com/tgstation/-tg-station/issues/14904 maybe
2016-01-25 21:06:04 -08:00
Firecage
754491ce4c Changes relatives paths into absolute paths and makes some if()'s better 2016-01-17 01:36:56 +02:00
Lularian
f77ac2a14e tactical gear 2015-12-22 13:59:02 -06:00
Tkdrg
92240a9d95 Fixes invisible mask exploits
This code is awful and full of copy-paste and I can't be assed/can't
manage to figure out how to fix it properly so I just got the hammer and
made it always update everything whenever you toggle a helmet. Exploit's
dead at least.

Fixes #13486
2015-12-18 21:40:23 -03:00
bgobandit
a2241e0f6f Merge branch 'master' of https://github.com/tgstation/-tg-station into lizcannotwag
Conflicts:
	code/modules/client/preferences.dm
	icons/mob/head.dmi
	tgstation.dme
2015-12-17 20:12:32 -05:00