Commit Graph

645 Commits

Author SHA1 Message Date
phil235 cc947b1eeb Fixes spacevines being immune to melee attack (typo). (#20907)
Fixes robotic legs missing a side to their sprite.
Fixes blob attacks destroying objs below intact floors (the blob's attack does not remove the floor's tile)
Now all objs hidden below floors don't take damage from fires, instead of just pipes and cables.
2016-10-12 09:01:03 +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 b5b4037e2e More istypes replaced with helpers (#20767)
* shouldn't you be merging these by now

* my oh my do we have a lot of these

* a fellow pedantic shit
2016-10-03 13:40:13 +13:00
Joan Lung bdcb16113a Adds a few turf istype helpers (#20754)
* a very calming act
when the world is too much, too fast

* i'm tired
but i have to be efficient, infinite

* lick your lips at the sight of me
a fantasy made reality
2016-10-01 19:25:46 +02: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 194398cbbd Merge branch 'master' of https://github.com/tgstation/-tg-station into PreliminaryDamageRefactor
# Conflicts:
#	code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
#	code/game/objects/effects/portals.dm
2016-09-29 01:44:27 +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
phil235 b8681e9f30 Merge branch 'master' of https://github.com/tgstation/-tg-station into EffectToStructure
# Conflicts:
#	code/modules/events/spacevine.dm
2016-09-27 20:03:26 +02: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
Razharas c4ad0dbdf1 Fixes planted kudzu missing colour and desc (#20681)
* Fixes planted kudzu missing colour and desc

Fixes planted kudzu missing colour and desc

* Fixes language issues

Fixes language issues
2016-09-27 17:56:29 +02:00
Cheridan 70ff2a9355 Merge pull request #20661 from bgobandit/2spooky
Makes the station 2% more scary.
2016-09-25 12:48:56 -05:00
oranges f3cdf22d78 Adds pizza delivery from another unamed station (#20643) 2016-09-24 17:55:25 -05:00
bgobandit 3010f362f1 Makes the station 2% more scary. 2016-09-24 03:57:16 -04:00
phil235 443a4501ec Carbon Dismemberment , second attempt. (#20461)
* - I rearranged X_defense.dm mob files, more damage_procs.dm.Here's what's inside:
* X_defense.dm: is for the procs of attacks onto the mob, all the XXX_act() proc (things happening to the mob), as well as protection check and get procs (armor, ear prot, projectile dismemberment)
* damage_procs.dm: actual damage procs like adjustBruteLoss() getfireloss, any proc that handles damaging.

- some bugfixes with gibspawner effects.
- monkey's bodyparts can be dismembered and are used to create its icon.
- brains are no longer carbons.
- all carbon have bodyparts that can be dropped when the mob is gibbed.
- adminspawned bodyparts now have a default icon.
- robotic parts are now a child of bodyparts.
- health analyzer on alien/monkey shows damage on each limb
- added admin option to add/remove bodyparts for all carbon (instead of just remove on humans)
- Fixes keycheck message spam for janicart and all when trying to move.
- Fixes bug with buckling to a scooter while limbless.
- removed arg "hit_zone" in proj's on_hit() because we can already use the def_zone var (where hit_zone got its value)
- Fixes mob not getting any damage when hit by a projectile on their missing limb, despite a hit message shown). carbon/apply_damage() now when we specify a def_zone and the corresponding BP is missing we default to the chest instead of stopping the proc. Consistently with how human/attacked_by() default to its attack to chest if missing limb.
- Fixes mini uzi icon when empty and no mag (typo).
- I renamed and changed a bit check_eye_prot and ear prot
- renamed flash_eyes to flash_act()
- I made a soundbang_act() similar to flash_act but for loud bangs.
- added a gib and dust animation to larva.
- husked monkeys
- no damage overlay for husk or skeleton.
- damage overlay for robotic limb now.
- no damage overlay when organic bodypart husked.
- one handed human with a bloody hand still get a bloody single hand overlay.
- fix admin heal being unable to heal robotic bodyparts.
- slightly touched robotic bodypart sprites (head one pixel too high)
- Fixes 18532 "beheaded husk has hair".
- Fixes 18584 "Ling stasis appearance bug"
- no more eyes or lipstick on husks.
- can remove flashes/wires/cells from robot chest and head with crowbar.
- Fixes not being able to surgically amputate robotic arm/leg.

* More merge conflict fixes and adding the new files I forgot to add.

* of course I forgot birdstation

* More typos and stuff I forgot to undo.

* Fixing a typo in examine.dm
Removing an unnecessary check.
Making admin heal regenerate limbs on all carbons.
Monkey-human transformation now transfer missing limbs info and presence of a cavity implant.
NODISMEMBER species can still lack a limb if the mob lacked a limb and changed into that new species.
Changeling Regenerate ability now also regenerate limbs when in monkey form. (and remove some cryptic useless code)

* Fixing more conflicts with remie's multihands PR.

* Fixes runtime with hud when calling build_hand_slots().
Fixes lightgeist healing not working.
Fixes null.handle_fall() runtimes with pirate mobs.
Fixes typo in has_left_hadn() and has_right_hand().

* Derp, forgot to remove debug message.
2016-09-12 19:33:50 +02:00
Remie Richards c50fa5729c Merge branch 'master' of https://github.com/tgstation/-tg-station into many_hands_make_light_work 2016-09-10 20:28:23 +01:00
MMMiracles 1b4318f1a2 Combat Bears (#20215)
* adds bear

* bear armor dlc

* bear upgrades galore
2016-09-04 09:51:03 +12:00
Remie Richards 00738bd2a3 More than 2 hands!? WHAAAAAAT 2016-09-02 16:10:16 +01:00
Incoming5643 540fa28339 Quality of life pull for my recent commits (#20210)
* Quality of life pull for my recent commits:

RPGloot will no longer try to place scrolls in secret satchels, as this would slowly turn the drop table into these fairly useless joke items.

Goes through and genders most(all) the pets in the game so the gender change potion can work on them. Many previously hard defined generic animals can now be either male or female.

* Secret satchel is now a bit more aggressive with making sure a satchel is placed

D E F I N E S

* "quality"

* Not Canon
2016-08-31 09:23:54 +12:00
Shadowlight213 1765e66e89 abort and refund 2016-08-26 18:18:11 -07:00
Shadowlight213 e54b42b3b9 Increases total attempts to 3.
Doubles the wait time between each attempt
2016-08-26 13:40:25 -07:00
Shadowlight213 a31c6eeb82 Fixes the ghost role spawn infinite loop. 2016-08-25 11:11:21 -07:00
oranges 6a66ba65db Merge pull request #19924 from Shadowlight213/Readstorm
Changes radiation storm random event into a weather type.
2016-08-25 10:28:23 +12:00
oranges 169c9f3d04 Merge pull request #20028 from Shadowlight213/powerfailure
Adds the grid check random event from baystation.
2016-08-24 16:06:49 +12:00
Shadowlight213 7e09f1bc77 Removes SMES power failure.
changes exception system to use critical_machine variable on machines.
Tcomms machines and the AI have their areas exempted.
If the PA is assembled, engineering is exempted.
2016-08-22 19:24:59 -07:00
Shadowlight213 e0d2a9f434 Removes some limits and ups the max disable time to 2 minutes. 2016-08-22 00:03:55 -07:00
Shadowlight213 15f91e8058 Improvements. 2016-08-21 21:54:25 -07:00
Shadowlight213 70c02bb365 Let's err on the side of caution and make the engineering smes immune. 2016-08-21 21:30:06 -07:00
Shadowlight213 74ae1a75fb Adds the grid check random event from baystation. 2016-08-21 21:22:43 -07:00
Shadowlight213 02f4d6cf0b Removes auto maint access
Slightly increases rad damage.
2016-08-21 18:58:22 -07:00
Shadowlight213 68a877a12b Merge branch 'master' of https://github.com/tgstation/tgstation into Readstorm 2016-08-21 18:53:33 -07:00
Joan Lung 7bf05eec58 Plasmamen no longer die instantly to the wizard cursed items event 2016-08-20 21:16:27 -04:00
Joan Lung daf1cab2a8 BLOB HOTFIX 2016-08-17 11:17:27 -04:00
Joan Lung cbf733dbc4 Does something, likely to be important, to blob (#19831)
🆑 Joan
rscadd: Once the blob alert message is sent in the blob game mode, all mobs get to see how many tiles the blob has until it wins, via the Status tab.
rscdel: Removed/merged a bunch of blob chems, you probably don't care about the specifics.
tweak: The remaining blob chems should, overall, be more powerful.
tweak: Shield blobs soak brute damage less well.
tweak: Flashbangs do higher damage to blobs up close, but their damage falls off faster.
experiment: Shield blobs now cost 15 resources to make instead of 10. Node blobs now cost 50 resources to make instead of 60.
experiment: Expanding/attacking now costs 4 resources instead of 5, and blobs can now ATTACK DIAGONALLY. Diagonal attacks are weaker than normal attacks, especially against cyborgs(which may be entirely immune, depending), and they remain unable to expand diagonally.
rscadd: Shield blobs no longer block atmos while under half health. Shield blobs are still immune to fire, even if they can't block atmos.
tweak: Blobs should block explosions less well.
rscadd: Blob cores and nodes are no longer immune to fire and no longer block atmos.
rscadd: Blobs can only auto-expand one tile at a time per expanding thing, and should be easier to beat back in general.
tweak: Blobbernauts now attack faster.
tweak: Blob Overminds attack mobs slower but can attack non-mobs much faster.
rscadd: Blob Overminds start with some amount of resources; in the gamemode, it's 80 divided by the number of overminds, in the event, it's 20 plus the number of active players, and otherwise, it's 60.
bugfix: You can no longer move blob cores into space, onto the mining shuttle, white ship, gulag shuttle, or solars.
bugfix: Blob rounds might be less laggy, if they were laggy?
tweak: Blobs don't heal as fast, excluding the core.
experiment: Blobs are marginally less destructive to their environment.
/🆑

Objective:
maybe possibly make blob something you can fight instead of wishing the blob didn't exist?
but also make the blob lethal enough that it can still deal with the crew if it knows what it's doing(and still lose if the crew is good instead of snowballing forever)
2016-08-17 15:48:28 +12:00
Shadowlight213 0863636e98 Changes radiation storm random event into a weather type. 2016-08-16 19:35:45 -07:00
Joan Lung d3bd0054d4 panic 2016-08-15 10:23:50 -04:00
Joan Lung 79c6be3cf4 Revenants now spawn 2016-08-14 13:56:30 -04:00
oranges e3e6ea5859 Merge pull request #19703 from AnturK/adminabuse
Various admin requested minor features.
2016-08-06 13:31:25 +12:00
AnturK a2b80f7f52 What song is this? 2016-08-04 21:01:29 +02:00
unknown 5ea9203c7f Added some has_buckled_mobs() checks. 2016-08-02 23:39:29 -07:00
lordpidey ec2f666f29 Devil agent (#19391)
add: Added Devil agent gamemode, where multiple devils are each trying to buy more souls than the next in line.
add: If you've already sold your soul, you can sell it again to a different devil. You can even go back and forth for INFINITE POWER.

This adds a new gamemode. Devil Agent. It works much like Double Agent, except devils instead of traitors, and instead of killing, the devil simply has to control more souls than the enemy.

Also, whether this is included in the rotation depends on the config settings. By default, it will be disabled.
2016-07-31 17:02:21 +12:00
NikNakFlak 8be7f7115f Reduces meteors 2016-07-17 16:23:37 -07:00
Joan Lung 9323f7e9de Merge pull request #19207 from coiax/set-at-own-risk
Added (SETCODE) button for nuclear code request
2016-07-09 08:37:59 -04:00
coiax 4c5e478ed6 Observers can auto-orbit meteors; space dust event (#19142)
* Observers can auto-orbit meteors; space dust event

During a meteor shower, observers can automatically orbit
threatening meteors and watch them hit the station.

Added Major Space Dust event, which is a meteor shower
containing only space dust.

Reduced chance of RNG meteor event.

Fixes bug where meteors wouldn't move when spawned.
2016-07-09 18:16:11 +12:00
Jack Edge 4fbc1475fe Added (SETCODE) button for nuclear code request
🆑
add: When a player uses a communication console to ask for the codes to
the self destruct, for better or for worse, the admins can set them with
a single click. Whether the admins a) click the button b) actually give
the random person the codes, is another thing entirely.
/🆑

- Also tidied up prayer code to use some new admin defines
- Adds the random_nukecode() proc, which returns a random numeric string
between "00000" and "99999". No more requiring it to be at least 10000,
we have the power of ZERO PADDING.
2016-07-08 09:10:33 +01:00
coiax add934e0aa "vines", "plants" faction gives immunity to kuzdu (#18540)
* "vines", "plants" faction gives immunity to kuzdu

Adding "vines" and "plants" to podpeople's factions only makes them
immune to the snare of the venus human trap. Now added some checks to
spacevine.dm which checks for vine immunity, and a check in
mob/living.dm (apparently).

Podpeople (and venus human traps) are now no longer damaged,
poisoned or obstructed by space vines. Explosive vines still damage
them, because there's an actual explosion.

* Some grammar fixes for venus human traps

* Fixes compile error

* Pod people are now vine immune, completely
2016-07-08 12:48:29 +12:00
kevinz000 a49d6c063e Spacevine Tweaks (#19098)
* health

* fix

* whatdidibreak

* fixed

* worksproperly

* fixes
2016-07-05 16:27:01 -04:00
Joan Lung 431ac17a8e Merge pull request #19106 from coiax/multiple-angle-rod-penetration
Immovable rods now notify ghosts when created
2016-07-04 13:23:13 -04:00
Xhuis 2ab3f554d9 Refactors weather into a subsystem (#19003)
Weather has been refactored from a weather control machine on the lavaland z-level into a subsystem. All existing weather has been changed to accommodate this change, and their code has been optimized by using addtimer() instead of sleep().

The new subsystem also supports adding weather to any z-level; for instance, if you made a weather called /datum/weather/rain_storm and made it target z-level 3 with a 100% probability, the rain storm would occur as much as possible with 5-10 minute intermissions. These intermissions take into account the weather's duration.
2016-07-04 13:55:36 +12:00
Jack Edge 05eed7fe4d Fixes bug with Centcom shuttle loan 2016-07-03 21:40:55 +01:00
Jack Edge ad1f180cc4 Immovable rods now notify ghosts when created
🆑 coiax
rscadd: Immovable rods now notify ghosts when created, allowing them to
orbit it and follow their path of destruction through the station.
fix: Fixed bugs where no meteors would come or go from the south.
Seriously, that was a real bug. Meteor showers are now about 33%
stronger as a result.
/🆑

- Immovable rods also cancel out if they collide (and decay into a
number of high energy particles, such as smoke, and more smoke).
- Replaces spawn(0) in meteor code with an addtimer.
2016-07-03 12:36:06 +01:00