Commit Graph

35 Commits

Author SHA1 Message Date
Joan Lung
57d7c91aff Input-based teleportation paper no longer allows you to abuse the delay in inputting a location (#21059)
* Input-based teleportation paper no longer allows you to abuse the delay in inputting a location

* why do we CARE if we can't move there normally we're fucking teleporting

* Not as restrictive
2016-10-20 12:50:33 +02:00
Cheridan
62f59a0682 Merge pull request #20894 from lzimann/cancelbuttons
Adds a cancel button to some inputs
2016-10-11 07:38:36 -05:00
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
Lzimann
d0bc42f189 Adds a cancel button to some inputs
- Teleport scrolls
- The admin-pm verb
- To add a ban(in the place where you put the ban reason)
- When you edit/add a new note.
2016-10-09 21:28:14 -03: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
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
LatD
fe76e64641 Origin tech changes and some fixes 2016-05-17 20:57:01 +03:00
Remie Richards
4e821d8657 Atoms may now have many mobs buckled to them, as opposed to one, this is controlled by the new max_buckled_mobs var on atoms, defaults to 1 as to not change any current functionality 2016-03-07 18:03:25 +00:00
AnturK
c3fd11dc54 Adds cancel button to teleporation scroll 2016-02-26 22:33:12 +01:00
KorPhaeron
d8a37204e7 Makes burn_state use defines 2015-12-13 05:36:55 -06:00
phil235
d3ee910211 Makes effect system code more OOP.
obj/effect/effect is now renamed obj/effect/particle_effect for better usability.
datum/effect/system and /datum/effect/effect/system are now both /datum/effect_system.
Fixes a bug where wall mounted igniters (and other spark producing objects) didn't produce sparks sometimes.
Moved explosion_particles.dm into the effect_system folder, because it has effect_systems code.
2015-10-21 23:28:29 +02:00
phil235
47909d525f Changes smoke to behave more like foam. Each covered tile has one smoke cloud. This makes smoke clouds much less random, especially in terms of reagent application.
Also smoke reaction now uses the TOUCH method instead of VAPOR, to differentiate smoke and foam. Mob without internals or gas masks also ingests reagents in the smoke.
Moved nanofrost smoke code to effects/effect_system/effects_smoke.dm
2015-10-15 21:52:37 +02:00
bear1ake
f697ae90f5 removes a bunch of .0 2015-09-10 20:57:30 +09:00
Firecage
4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02:00
phil235
e8d3deafab Merge branch 'master' of https://github.com/tgstation/-tg-station into AcidFix
Conflicts:
	code/modules/clothing/masks/gasmask.dm
2015-06-28 15:22:21 +02:00
Ikarrus
8759f56f6f Squashed Commits 2015-06-27 00:09:16 -06:00
phil235
b0cd6d34b1 Lots of work on acids, smoke, foam, reagents reaction() proc.
- fixed the fraction argument in reaction(...., INGESTED, fraction) so the proper amounts of each reagent react, not all of it.
- slight optimization of datum/reagents/reaction()
- small optimization /datum/reagent/proc/reaction_mob
- the smoke's reagents no longer do direct transfer upon crossed()/move() but uses "reagents.reaction( mob, TOUCH)" only.
- fixes no ingesting smoke if it's in the dark.
- removed block gas smoke effect flag from clown mask and other non "actual" gas mask.
- refactor how protection against touched chems being absorbed is done. get_permeability_protection() to get that protection. No more

simple RNG get touched or not, now the amount that touches you depends on your protection and the volume in question.
- changes acid_act to take volume into account.
- chem_smoke now uses process() just like foam, we remove the reaction from crossed() and Move(), it's only done in process() now.
- optimization of effect/smoke, OOP! And now all smoke effects use objprocessing instead of shitty sleep/spawn
- removed mob var/coughedtime.
- add a volume check to item/acid_act(), there's a threshold to be able to melt and then a probability to melt (acidpwr&volume).
- greatly lowered the amount of reagent in the smoke from dead blobspore (so the volume isn't enough for melting)
- human/acid_act(): damage to limbs depends on acidpwr&volume.
- fixes metalfoam not working.
- smoke powder: only one start() call.
- Amound of smoke objects depends on amount of smoke recipe created.
- Adds an argument to add_reagent() to block automatic call of handle_reaction()
- When using reagents/proc/trans_to(), reactions are now only handled after every reagent is transfered and not before.
- Amount of smoke objects depends on amount of smoke reagent created.
- radius of foam reaction depends on amount of foam reagent created.
- The amount of other reagents inside the smoke/foam decides the life expectancy of the effect.
- The amount of reagents in each small smoke cloud/foam cell depends on the amount of other reagents in the initial reaction but also

how much smoke/foam was created (more smoke means dilution of the reagents).
- smoke/foam's reagent reaction on mob decreases the life expectancy of the effect (to avoid reagent duplication)
- The amount of reagent reacting with atoms is less if the life expectancy is high.(to avoid reagent duplication)
- The amount of movement from the smoke now depends on the number of smoke clouds created.
- removing some useless code in chem_grenade/prime().
- When calling human/acid_act(), item acid melting chance lowers after each each successful melt in the list, some of the acid is

"used" to melt that item so the next items have a lower chance to melt (to make melting every clothing harder).
- remove the banned reagent list from sprays, not needed anymore now that acid is nerfed.
- chem_grenade reaction, if there's no reagent left after reaction (smoke/foam/etc, reagents cleared) you don't get the steam effect

and immediate reaction with all atoms around the grenade explosion. (Fixes foam cleaner grenade deleting bloodstains around it as soon

as the grenade explodes, even if the foam hasn't reached the tile yet).
- melted storage items now drop their content instead of deleting everything.
2015-06-22 00:35:24 +02:00
Remie Richards
17654037db Ports Mloc's Refactor of buckling, All /obj can now buckle things. HE Pipes now change colour based on heat. 2015-01-14 19:07:18 +00:00
tkdrg
063a19c814 Fixes wizard slipping on all the area soaps 2014-11-22 19:24:57 -03:00
Incoming
d2982a4b8e Adds drones, blobbernauts, magicarp, and chaos magicarp to the staff/wand of change
Makes it so player controlled mobs with a ranged attack can actually use said ranged attack
Fixes #5551 because it's vaguely magic related anyways
2014-10-30 14:29:06 -04:00
Ergovisavi
d2917b7992 Fixes an issue with teleportation scrolls and mining vouchers that allow you to gain unlimited uses from them. 2014-03-02 05:00:57 -08:00
Razharas
e299b62400 Merge pull request #2817 from Sugarette/spellcheck
Spell check of origin_tech variables in items that no one deconstructs anyway
2014-02-20 16:25:57 -08:00
Sugarette
b48583a587 Merge pull request #3 from Sugarette/master
Wonder if it works
2014-02-18 22:07:56 +03:00
Hornygranny
2134add41b Items with throw_range over 7 reduced to throw_range 7. This does not affect players as there's no way to extend your vision range. 2014-02-17 15:44:07 -08:00
Sugarette
a319c216b3 Fixed origin_tech in lesser scroll 2014-02-17 10:51:48 +03:00
Hornygranny
9e14c22747 Reduces throwspeeds on all items to realistic levels. 2014-02-15 19:58:03 -08:00
Cheridan
bb9c09df46 Obsoletes flags = FPRINT | TABLEPASS*
*TABLEPASS was already totally obsolete.
FPRINT was used, but it was on virtually everything anyway.

Removes those flags from every instance where they were used. Also assigned and removed other flags where it made sense.

If it is desired, I can revive the flag as NOFPRINT, which would retain the original functionality, though inverted. That way it would be be used only  where it was intentional (holodeck items could use this for example).
2013-12-30 15:03:17 -06:00
giacomand@gmail.com
edbae4d9d5 - More runtime fixes.
- Committed carn's fix to events happening every 5 minutes, on the dot.
 - Changed some more turf which play sound so they do not play to everyone in the area.
 - Made the join screen a little bigger for the "view player polls" option.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5801 316c924e-a436-60f5-8080-3fe189b3f50e
2013-03-02 16:51:57 +00:00
giacomand@gmail.com
a3b74c9d2b - Multiple runtime fixes.
- Moved some fingerprint procs to detective_work.dm.
 - Removed some unnecessary del() usage in the detective code.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5800 316c924e-a436-60f5-8080-3fe189b3f50e
2013-03-02 01:19:02 +00:00
Kortgstation@gmail.com
f4afd0fe2c Added wizard apprentices/magic contracts (devoid of any madoka references due to enormous self restraint)
You can buy a contract from the spellbook, same as any other artefact. Using the contract will pull a ghost (with wizard set to yes in preferences) and have them become the apprentice. The person using the contract chooses from 3 sets of 2 spells each for the new apprentice to learn. The sets are as follows:

Destruction: fireball/magic missile

Bluespace manipulation: jaunt/teleport

Robeless: knock/mindswap

The apprentice chooses their name and gets an objective to keep the wizard alive. For game ticker purposes, they count as traitors, so the round will still end if the main wizard dies. The apprentice spawns in normal blue robes and with a one use telescroll in their pocket.

If the contract is unable to find a ghost to become a wizard it will remain usable until it spawns one successfully. If the wizard changes their mind/there are no ghosts available, they can attack the spellbook with an unused contract to refund their spell point.

Redid the spellbook to have descriptions of spells visible before purchasing/fixed some of the cooldown times (from memory, some may still be wrong).

Updated the changelog.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5702 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-14 00:25:59 +00:00
aranclanos@hotmail.com
a8cb1dc4f8 Some improvement to the teleport scroll and spell code. It unbuckles the user now.
Thanks to Nodrak~

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5565 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-17 06:22:29 +00:00
giacomand@gmail.com
9afc2cbe7f -Chemical implants can now hold 50 units instead of 10.
-Made mutagen a catalyst instead of an ingredient. Fixes Issue 1100.
-Spellbook and Teleport Scroll doesn't show up for other players now.
-Added a syndicate intercom in the wizard's den.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5072 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-15 08:03:05 +00:00
giacomand@gmail.com
6a2d78bc94 -Killed the updateDialog lag. I added a check to see if there were any mobs to update, if not it will stop checking until a user uses the machine again. I had to replace all the machine = src and machine = null with procs to help make it manageable. I believe this is one of the culprits causing the server to lag as the round goes on, as more players will interact with machines.
-Atmos delay is now based on active players, to help fight lag for massive player rounds.

-Changed some for(blah in world) loops to use the correct lists.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4958 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-25 19:15:51 +00:00
johnsonmt88@gmail.com
e3b3ff836b The wizard's teleport scroll now only works if the wizard actually has it. Fixes issue 997.
I've also moved the teleport scroll define from defines/obj/weapon.dm into scrolls.dm

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4846 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-11 23:07:34 +00:00
johnsonmt88@gmail.com
28aabc9810 More file structure stuff!
Cleaned up the files themselves.
Everything in code/game/objects should now be in proper files or places with the exception of the files in the /weapons/ sub-folder.

There's two instances of me not following the exact file structure.
- /obj/item/brain has been moved to a file in mob/living/carbon/brain
- /obj/item/clothing/mask/facehugger has been moved into mob/living/carbon/alien/special
Both of these may not make sense according to the object structure, but they do make sense logically. If it's a problem just move them.

Next up: Finish the files in the weapon folder, then start moving defines down.


My god I hope I havent broken everything.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4547 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-26 03:32:58 +00:00