Added superclass invoke for the arcane tome
Added superclass invoke to light switches, removed it's (unused) description.
FLightswitch description repetition derp
examine superclass invoke for gas flow meter, space heater, fire extinguishers, grenades/IEDs, fancy boxes and welder. Changed description for welder and fire extinguisher to show their content in a similar style.
Fixed tank, linen bins and janicart description, and added welder of previous commit (forgot to commit it)
REMOVED icon in mop_bucket description (now provided by item class).
REMOVED unused examine() override in clothing/gloves
REMOVED custom examine() for glass/rag
CHANGED using examine superclass on paperwork/paperbin, removed redundant description code
CHANGED examine superclass for power/apc
ADDED universal maxcharge readout for all the powercell types.
CHANGED using examine superclass on machinery/light, removed redundant description code
FIXED weapon/virusdish use a description field.
TWEAK lowercased some of the portable generators.
Fixed improperness of pacman names
Prevents mech actions from acting on the user's inventory. Fixes#1487.
(Almost) fully prevents inventory use from within a mech, to be more consistent. The internals GUI button still works on the theory that it's emergency equipment.
This ToyAI has been added to the AI subversion bundle, note that since a traitor with this bundle already gets a hacked AI module there's no added benifit to it being there, its just for whimsical traitors who'd enjoy adding a little spice to the AI or false flag the changes as a badmin ioning an AI.
Adjusts the click code to not use client/Click(). The code is largely unchanged, except that it allows the compiler default behaviour of calling atom/Click(), and then forwards the call to mob/ClickOn(). I had some reports that melee combat mixed with movement was behaving oddly, and I believe it may be due to the use of client/Click; the byond documentation says that redefining client/Click() causes additional overhead, and it isn't strictly necessary.
Alters the way double clicks are handled, in an attempt to better handle clickspam, as often occurs during pitched combat. This may also be responsible for the above, but I don't know.
Inserts proximity (aka flag) checks in all afterattack() procs. The old assumption was that unless an item used the USEDELAY flag, afterattack() was only called when adjacent, but this is no longer true. This led to beakers, soap, crayons, etc, all being usable at all ranges.
Removes the NODELAY flag, which was unused. Removes all existing uses of the USEDELAY flag so that it can be readded to things that need extra delay.
Removes the hand_* procs, previously used by restrained actions. Instead, the mob helper mob/RestrainedClickOn() has abosrbed basically all the functionality they were used for, which is really only monkeys with jungle fever.
Adds a special case of the Adjacency() proc for doors. This fixes#136, airlocks being unreachable due to border fire doors. However, this only takes us back to the unpleasant position where you have to open-hand the door, switch to a crowbar, and pry open the firedoor; it still needs a better fix.
This adds two atom procs, attack_tk() and attack_self_tk(). attack_tk is used as per attack_hand; attack_self_tk exists on all atoms (not just items) but is similar to the item proc, but without the assumption that it is in the user's hand.
Removes the functionality where entering throw mode would create a tk grab, as it is redundant.
As a default, attack_tk does the following:
* Creates a telekinetic throw for items and un-anchored objects
* Does an attack_hand (paw, animal, etc) for anchored objects
* Does nothing to mobs
As a default, attack_self_tk does nothing. An attack_self_tk was added to closets to open and close them since that's a common thing.
The following items have added attack_tk procs:
* Fire axe cabinet, extinguisher cabinet, and bedsheet bin will drop into their square instead of putting it in your hand
* Doors only open telekinetically if they require no access
* Chairs will rotate if nobody is buckled to them
* Filing cabinets will remove a paper at random.
* Tables and racks return to prevent telehulk smash
This is INCOMPLETE. Adding proper TK interaction to everything is something best done in pieces.
In particular, interacting with mobs and items both open up the floodgates for bugs, so we/I need to decide how we want it to go before we commit, and then fix bugs along the way. Stumbling forward, fixing bugs, and then changing course halfway would be a bad idea.
Fixes#646, #579, #863
Completely redoes the click code. Moves all click related code into code/_onclick for reference. Also moves hud datum code and all the screen object code I could find into code/_onclick/hud, as it is related. Item attack(), attackby(), afterattack(), and attack_self() have been moved into item_attack.dm for consistency.
Completely removes dummy objects and adds atom.Adjacent(user). This proc checks for border items and anything marked with throwpass for determining whether or not you can reach a given square. A turf helper, ClickCross(), was added to facilitate this.
Removes the monolithic Atom.Click() proc in favor of an overridable click handler attached to mobs. Click code no longer uses the : path operator as a consequence, and mob/lastDblClick has been moved to Client/next_click. A few end arounds were necessary (screen objects, buildmode, and spells), but this has been handled by repurposing Atom.Click(); if you have special click code, insert it in the object's Click() function and return 1 to prevent normal processing.
This update adds support for attack_ghost(); the previous "new" click handler had support for it but was never finished. I have taken the liberty of letting ghosts click portals, the gateway, and the teleporter to jump to the intended target square, and kept the previous default action of examine()ing every damn thing you click. It is to be suggested that you could do more with this proc when ghost interactions are enabled.
This update also adds support for double clicking. It is currently only used for ghosts and AIs, because the original (first) click still registers normally. For both of these, double clicking a square will jump you to it, and double clicking a mob will follow it. In the case of ghosts, double clicking bots and the singularity will also set you following it; if you double click your own corpse, you will re-enter it; this also works if your body is in a closet, sleeper, DNA scanner, etc. Default mobs ignore double clicks as normal.
-- NOTE --
There are two flags which were previously unused or misused by click code: USEDELAY and NODELAY. Ostensibly, USEDELAY would double the normal 1sec delay, and NODELAY would remove it.
Using either of these flags as intended would significantly affect the timing of the game. In particular, USEDELAY is currently applied to guns and about everything else that acts at range. I am adding USEDELAY as a half-second increase for now, but I have not put a significant amount of thought into it. I considered lowering the normal 1sec delay to .8sec to balance it, but the consequences of that on combat involve more calculations than I care to make.
NODELAY seems to never have been used, and I did not implement it, but I could do so trivially.
Replaced the EMP grenades from the uplink with an EMP kit.
The kit contains a grenade, an implant and a flashlight with 5 uses that can EMP any object or mob in melee range.
-Ported Bay's cargo computer category system
-Created a box containing six flashes
-Crates have been tweaked significantly. Crates have been reduced to single item types where possible, namely with expensive crates such as weapons and armor. A total of 28 new crates have been added, including chemical and tracking implants, and raw materials can also be bought from cargo for a significant number of points (subject to change)
*the dice now all have different colors, to make them easy to tell the difference between them at a glance.
*the d2 has been swapped out for a d00, though you can still create a d2 if someone demands it.
*the generic pill bottle full of dice has been replaced with a proper dice bag.
*actually throwing a die will now cause it to roll until the throw ends, at which point it will state the result of the throw. The old method still works as well.
*most new dice have had their sprites edited to be smaller.
*minor grammer corrections.
Places where the D6 and D20 spawned (the library and perma) now spawn with a dice bottle. Said dice bottles now contains a D2, D4, D8, D10, and D12 in addition to the preexisting D6 and D20 for a richer meta-roleplaying experience.
This also fixes an obscure bug where dice could be generated invisible because their initial value was set to 0.
Additionally this fixes the grammer of dice descriptions, which were not using the singular "die".
Syndicate bombs are now structures rather than items. This means they cannot be hidden in lockers and disposals anymore. They also can no longer be used as grenades by crafty traitors.
They now audibly beep as their timer counts down, which is a visible display that can be seen when examined.
The minibomb is based on grenade code with a blast radius of 1,2,4 and is found in syndieminibomb.dm. This is the same power as the default tank transfer bombs spawned on the syndicate shuttle.
It features new sprites by teh_wolf and existing inhands (the default grenade) and is a tiny item.
As a result of introducing an explosive grenade, grenade priming are now logged.
Its crystal cost has tentatively been set at 3.
---
The Syndicate Bomb is all new code contained in explosives.dm with additional wires code at syndicatebomb.dm. It does not make use of any tank transfer valve or grenade code.
The bomb has a blast radius of 2,5,11. This is the same power as the tank transfer bombs in the syndicate shuttle if they are boosted with oxygen.
It features new sprites by teh_wolf and existing inhands (currently using “electronic”) and is a bulky item.
The bomb is set by touching it in your hand or touching it on the ground if it has been wrenched down, allowing first to set a timer (min 10 seconds) and then giving an option to start the countdown. When the bomb is activated it states so to everyone within sight of it, giving a time to detonation in the process.
The bomb can optionally be wrenched to solid ground to foil would be spacers. When the bomb is set to countdown the bolts lock in, and cannot be removed by wrench alone.
The bomb includes a robust wires system for pulse pounding defusal attempts. Once a bomb starts ticking using the wires is the only way to stop it (it is not immune to del of course, but is unacidable).
The wires are as follows:
*Boom: Will detonate the bomb if cut/pulsed while the bomb is live, but will defuse the bomb on cut when it's not timing. Mending this wire is the only way to make a defused bomb potent again.
*Unbolt: If the bomb has been locked to the floor cutting this will free it. Pulsing will hint at its function
*Delay: Adds time (+10) to the timer when pulsed (it does not matter if the bomb is live or not). No function on cut.
*Proceed: Lowers the time when pulsed. If the timer is above 60 it will set it to 60, if it’s between 60 and 21 it will reduce the timer by 10, if it’s between 20 and 11 it will set the timer to 10. This will detonate the bomb when cut if it's timing. Note that this makes randomly cutting more dangerous than pulsing as there’s twice the number of wires that will explode.
*Activate: This will activate the timer if pulsed when the bomb is not timing, or will stop and defuse the bomb if it's cut while it IS timing. Pulsing it on an active bomb will hint at its function and add a little time (+5).
All syndicate bomb primings are logged.
Its crystal cost has tentatively been set at 5.
---
Misc
The “screwed” traitor uplink kit has had its tank transfer bombs replaced with one of each of these two bombs.
>update_mutantrace() is no more, it is now part of update_body()
>Moved a lot of stuff into update_base_icon_state(), this will allow making mutantraces modular.
Almost all icon operations are now removed from human overlays (obviously some are still required for recolouring hair and eyes). Any remaining dynamically generated overlay icons are applied individually. This will allow byond to cache them better. This will also eliminate the bug where humans are initially invisible/unclickable when you first encounter them (due to network latency where the icons are being downloaded).
>UpdateDamageIcons() renamed to update_damage_overlays(), so it has the same sort of name as the other procs
>update_icons=true or false arguments removed from human overaly-update procs, no longer required. (i.e. the update_body() update_inv_whatever etc procs do not call update_icons() - see documentation for details)
>mutantrace icon_states moved into human.dmi
>skeletons are now a mutantrace, not a mutation.
>update_icons system should now be even more efficient (thanks partly to aranclanos)
>documentation rewritten
>copypasted code moved into helper procs - super tidy code :3
Other:
>Removed compile error where the core code was reliant on compiling away mission code. >:[
>s_tone renamed to skin_tone
Modified code/modules/mob/living/carbon/human/update_icons.dm
Modified code/__DEFINES.dm
Modified code/datums/datumvars.dm
Modified code/datums/limbs.dm
Modified code/game/dna.dm
Modified code/game/gamemodes/changeling/changeling_powers.dm
Modified code/game/gamemodes/cult/cult_items.dm
Modified code/game/gamemodes/cult/runes.dm
Modified code/game/machinery/doors/airlock.dm
Modified code/game/machinery/portable_turret.dm
Modified code/game/machinery/teleporter.dm
Modified code/game/mecha/combat/combat.dm
Modified code/game/objects/items.dm
Modified code/game/objects/items/stacks/medical.dm
Modified code/game/objects/items/stacks/sheets/glass.dm
Modified code/game/objects/items/weapons/storage/bible.dm
Modified code/modules/assembly/mousetrap.dm
Modified code/modules/hydroponics/hydroitemcode.dm
Modified code/modules/mob/living/carbon/carbon.dm
Modified code/modules/mob/living/carbon/human/death.dm
Modified code/modules/mob/living/carbon/human/human.dm
Modified code/modules/mob/living/carbon/human/human_damage.dm
Modified code/modules/mob/living/carbon/human/human_defines.dm
Modified code/modules/mob/living/living.dm
Modified code/modules/mob/living/simple_animal/friendly/slime.dm
Modified code/modules/mob/mob_grab.dm
Modified code/modules/power/lighting.dm
Modified code/modules/reagents/Chemistry-Reagents.dm
Modified code/unused/_debug.dm
Modified icons/effects/genetics.dmi
Modified icons/mob/human.dmi
Modified maps/RandomZLevels/wildwest.dm
Modified tgstation.dme
Signed-off-by: carnie <elly1989@rocketmail.com>
Aside from further dehumanizing criminal scum this also serves as a way of correcting the annoying behavior of suit sensors and crew monitoring computers, and chemical implants: if someone isn't wearing an ID card (which prisoners will likely have taken from them) they show up as an Unknown.
Also included a sec hud icon for the prisoner 'job'
Created a new subtype from radios, /obj/item/device/radio/bounced They have no difference except from spawning with their speakers off.
The only reason is to reduce in a 30% the amount of loops in the general channel chat lag.
-Added a locked box of medals to be placed in the Captain's Office. It contains medals the Captain can award his crew.
-Added pinning medals onto others, provided their jumpsuit is exposed
-Added a message when you try to add an accessory to a jumpsuit that already has one.
-Fixed up emagging lockboxes
-Capsaicin can be turned into Condensed Capsaicin via chemistry.
-Alters the effect of pepper spray slightly. Changes it from a paralyze(KO) to weaken(stun like batons, etc), and adds slight lingering confuse effect.
-Adds teargas grenades(pepper spray smoke chem grenades), currently obtainable in Weapons crates and Riot crates.
Supplypacks:
-Adds a roll of film to the bureaucracy crate, and made it a little cheaper.
-Removes the beanbag crate entirely, it redundant. Just print out the beanbag shells at the autolathe.
-The previously-overpacked Riot gear crate comes with 1 less set of equipment, but with more handcuffs. Made cheaper to compensate.