Crossed() is a byond builtin which is called automatically when two movable atoms overlap (as a side effect of Move(), but not when loc or x/y/z is changed). Previously, turf/Entered() iterated through all objects in the turf in order to tell them an object had entered; with this change, HasEntered() becomes redundant and can be eliminated.
This may reduce lag when a large number of objects are moving in a small space (singularity, mining conveyors, etc) but should cause no changes to functionality at all.
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.
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.
Moves the shard define into glass.dm
The "You step in the broken glass!" message only appears if you aren't wearing shoes.
Other misc changes and fixes.
Camera bug acts as a mini-camera computer with access to all bugged cameras.
Adjusts camera checks to determine who is looking through them; instead of checking their machine, it now checks the client eye.
Adds camera bug to the uplink list with a cost of 2TC.
-Removes the unused/dumb access stuff from space cash.
-Fixes a bug where dice would vanish if you used a hand labeller on them.
-Moves space cash/coins/mint sprites into their own file, economy.dmi. Moves mineral sheets into mining.dmi.
-Coins are flippable! Features unique flipping sprites and sound effects, and two-headed coins.
-Oh and better sprites for wooden closets too.
Also removes the smallDelivery loop in /mob/proc/get_contents(). It's amazing that proc worked at all, it really does do what it's described as doing. I'm leaving it for now, as the game seems to have gotten on well enough so far, and it'll probably just increase processing for no gain if I fix it.
A lot of different calls for update_inv_[slot] now won't call for update_icons.dm(). Such as dropping, throwing, picking up objects, moving objects around your gear, using your active hand, firing guns, stripping, etc.
All the different calls for UpdateDamageIcon() now they won't call for update_icons()
The different sprites of humans/monkeys will now have their own layer, humans starting with MUTANTRACE_LAYER in layer -1 to R_HAND_LAYER in layer -20, so the sprites don't get messy overlapping eachother if update_icons() is not called. To help this change, all layers numbers were changed, R_HAND_LAYER used to be 1, now it's 20. (This can be changed back if it ends up being confusing or ugly to read)
TL;RL I removed 90% of the calls for update_icons() modifying the different update procs of update_icons.dm of monkeys/humans. The goal is to reduce lag.
JUST IN CASE, lying down will call for update_icons(), so players have an easy way to update their icons if something goes horribly wrong. Which won't. I hope.
Fixes issue 842. Handcuffs sprites appearing on the player's UI if this one was handcuffed. Because I liked this we'll call it feature and add some awesome sprites made by Cheridan, you'll now have a new sprite on your UI telling you "you're handcuffed buddy!". (Also he named the sprites so don't blame me)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5809 316c924e-a436-60f5-8080-3fe189b3f50e
The AI has been moved to Research Division, and Telecoms has been moved into the former AI chamber. Affected areas: Telecoms Satellite, Research Division South & Command Sector.
-Reduced tech levels of subspace equipment
-Removed CE's teleporter access (No longer needed to access tcomms)
-Reduced grey space suit slowdown
-Increased voidsuit slowdown
-Engineering and mining hardsuits hold different equipment now
-Updated Changelog
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5734 316c924e-a436-60f5-8080-3fe189b3f50e
- Gave the c4 a little bit more power.
- Added a new icon for the staff of animation. Created by Teh Wolf.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5698 316c924e-a436-60f5-8080-3fe189b3f50e
-Fixes some misc typos and a bug with examining tower cap logs that nobody ever noticed anyway.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5685 316c924e-a436-60f5-8080-3fe189b3f50e
-Makes grass a normal grown object, tiles are made via attackby. Removes the specialized code needed to handle harvesting floortiles.
-Adjusts seed sprites in the .dmi to be consistent, and adds code to randomize their position on the map.
-Adds biotech level 1 to wood tiles to match grass tiles.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5622 316c924e-a436-60f5-8080-3fe189b3f50e
I got about half-way through changing these when SuperSayu came up and said he fixed this a while ago but never posted the fix. So technically half of these were fixed by me and half by him. Credit to both of us!
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5564 316c924e-a436-60f5-8080-3fe189b3f50e
Moved the spellbook define into spellbook.dm, in the wizard gamemode folder.
Moved the old spells.dm to unused.
Added some new guns to summon guns.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5549 316c924e-a436-60f5-8080-3fe189b3f50e
* Smart fridge smartly shows (x5)(x10)(x25)(All) vend options based on quantity stored
* Gateway fix: When the away mission gate is calibrated, you will come out facing south. Matters somewhat when walking through in an exosuit. Also one pedantic text edit.
* Drink volume estimation:
* * Moved "half-full" to 26%-66% rather than 25%-49%
* * Moved "almost full" to 67%-90% rather than 50%-111% (1/.9)
Also removed /obj/item/weapon/directions and /obj/item/weapon/paperscrap.
They've been replaced by /obj/item/weapon/paper/crumpled and /obj/item/weapon/paper/crumpled/bloody.
Updated 2.1.0 and all away missions.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5497 316c924e-a436-60f5-8080-3fe189b3f50e
Standardization of the object tree and some modified functionality.
Moved a lot of storage/*_kit and similar boxes to storage/box/* ; most of these can now be found in boxes.dm. First aid kits remain a separate item type.
Replacement Light boxes pick up lights (for example broken ones) when used on them
Moved weapon/secstorage to storage/secure
Moved plant bags, ore satchel, trash bag, and sheet snatcher to storage/bag, in bags.dm
Fixed reagent_containers and snacks to pass through attackby() so the use_to_pickup code works. This affects plant bags, trash bags, and pill bottles.
Dice packs are now pill bottles, and all pill bottles can pick up dice.
Added error handling to uplink/generate_menu() so that one mistyped string doesn't bork the whole syndie uplink menu, since strings cannot be type-checked at compile time.
Cigarette packs and crayon boxes are now storage/fancy, however they retain existing update_icon() code.
Added a comment to storage.dm so that future people know where to look for use_to_pickup and allow_quick_gather code.
Updated all maps.
I've tried to test this thoroughly but I wouldn't be surprised if there were a few lingering issues. Try not to panic if you encounter any.
Full (i think) list of changed paths:
/obj/item/weapon/storage/flashbang_kit > /obj/item/weapon/storage/box/flashbangs
/obj/item/weapon/storage/body_bag_box > /obj/item/weapon/storage/box/bodybags
/obj/item/weapon/storage/chemimp_kit > /obj/item/weapon/storage/box/chemimp
/obj/item/weapon/storage/trackimp_kit > /obj/item/weapon/storage/box/trackimp
/obj/item/weapon/storage/seccart_kit > /obj/item/weapon/storage/box/seccarts
/obj/item/weapon/storage/handcuff_kit > /obj/item/weapon/storage/box/handcuffs
/obj/item/weapon/cigpacket > /obj/item/weapon/storage/fancy/cigarettes
/obj/item/weapon/storage/mousetraps > /obj/item/weapon/storage/box/mousetraps
/obj/item/weapon/storage/PDAbox > /obj/item/weapon/storage/box/PDAs
/obj/item/weapon/storage/id_kit > /obj/item/weapon/storage/box/ids
/obj/item/weapon/storage/lightbox/mixed > /obj/item/weapon/storage/box/lights/mixed
/obj/item/weapon/storage/donkpocket_kit > /obj/item/weapon/storage/box/donkpockets
/obj/item/weapon/storage/beakerbox > /obj/item/weapon/storage/box/beakers
/obj/item/weapon/storage/syringes > /obj/item/weapon/storage/box/syringes
/obj/item/weapon/storage/gl_kit > /obj/item/weapon/storage/box/rxglasses
/obj/item/weapon/storage/diskbox > /obj/item/weapon/storage/box/disks
/obj/item/weapon/storage/stma_kit > /obj/item/weapon/storage/box/masks
/obj/item/weapon/storage/lglo_kit > /obj/item/weapon/storage/box/gloves
/obj/item/weapon/storage/lightbox/bulbs > /obj/item/weapon/storage/box/lights/bulbs
/obj/item/weapon/plantbag > /obj/item/weapon/storage/bag/plants
/obj/item/weapon/storage/satchel > /obj/item/weapon/storage/bag/ore
/obj/item/weapon/trashbag > /obj/item/weapon/storage/bag/trash
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5494 316c924e-a436-60f5-8080-3fe189b3f50e
Credit goes to CodenameB and Spike68 for the original proposed commit. Althought it ended up changing, this commit still uses all of their suicide messages. Thanks to carn for pseudo-coding the base of the system that I ended up using to implement this.
The suicide verb checks the item in your active hand and calls that item's suicide_act(). (/obj/item/proc/suicide_act(mob/user)) The proc displays the suicide message to any viewers and returns a damage type. The suicide verb then applies 175 damage to the mob divided by the number of damage types. If the proc returns null (meaning that the item does not have a suicide_act() defined) the regular suicide occurs.
To any coder wanting to add items to this:
- You MUST return one or more damage types. "return (BRUTELOSS|FIRELOSS)" for example.
- Please do not manually type in the item's name; use [src] to refrence an it instead. It'll save time down the road if an item gets renamed. It also helps handle any child of that item without copy/pasting the proc to each child.
- Please do not use 'usr' for anything.
Parrots can now see which item they are holding onto in the stat panel.
The toy crossbow should once again work properly. Fixes Issue 1227.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5468 316c924e-a436-60f5-8080-3fe189b3f50e
Removed defines/obj/toy.dm and moved the defines down to objects/items/toys.dm
Moved a big chunk of defines out of defines/obj/weapon.dm and into their respective .dm files.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5441 316c924e-a436-60f5-8080-3fe189b3f50e
-Made chemistry a bit less reinforced.
-Moved more engineering equipment to access_engine_equip.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5413 316c924e-a436-60f5-8080-3fe189b3f50e
-Changed the exchange rate for plasma to supply points to 2:1
-Admins can now see photos in newscaster channels when using the button in the fun tab.
-Updated changelog.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5383 316c924e-a436-60f5-8080-3fe189b3f50e
-Permission from Erro to remove the "redeem a mech by colllecting all the toys" feature. Removed the description from the mech toys too.
-Fixed a possible exploit with ghost following to create more than one follow loop.
-Re-added send mob to the player panel.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5377 316c924e-a436-60f5-8080-3fe189b3f50e
Added Xmas and Xmas Eve holiday-features:
>If ALLOW_HOLIDAYS is in config.txt, random (harmless) wrapped presents will be placed under all xmas trees on z-level 1. :3
>Ian will start wearing a santahat
Added content for the end of the Mayan Calander.
Fixed the spelling of -invisible- pens
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5226 316c924e-a436-60f5-8080-3fe189b3f50e
-Adds weed control crates, orderable by cargo techs, for the purpose of kudzu control.
-You can now construct folders with cardboard sheets.
-Moves newspaper sprites out of weapons.dmi
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5206 316c924e-a436-60f5-8080-3fe189b3f50e
Slightly improved beartrap code while I was there, mostly standardisation and formatting stuff as usual.
Fixed the Chaplain's PDA spawn.
Reduced the chance of stealthy hulk wall smashing. All but one of the messages will attempt to go over the radio now.
Changed hulk resist text colour to red because it was barely readable in green.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5191 316c924e-a436-60f5-8080-3fe189b3f50e
Moved some mob vars to carbon:
mob/var/handcuffed -> mob/living/carbon/var/handcuffed
mob/var/legcuffed -> mob/living/carbon/var/legcuffed
As a result, I've turned some procs into pure virtual procs and moved their code into carbon.dm.
mob/proc/restrained() -> mob/living/carbon/restrained()
mob/proc/can_use_hands() -> mob/living/carbon/can_use_hands()
The hand and legcuff portion of mob/proc/u_equip() was moved into mob/living/carbon/u_equip().
The handcuffed portion of mob/proc/show_inv() was moved into mob/living/carbon/show_inv().
Fixes issue 1114.
Made parrots immune to bear traps since parrots should be flying over them anyway.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5184 316c924e-a436-60f5-8080-3fe189b3f50e
-Changed the focus from the high-res scanner to the regular scanner. It will simply scan the fingerprints and display them to the detective. For extra functionality, it'll store it's findings in a log and then you can print it out in a report by using attack_self().
-Detectives can now use the medical computer.
-Removed the pda forensic scanning functionality.
-Got rid of now useless high-res scanner computer. Got rid of the now useless fingerprint cards.
-Added a medical computer to the detective's office and replaced the useless medical cabinet with an empty one.
Other
-Got rid of diseases magically moving down a stage.
-Optimized playsound()
-Added an attack_self() to sprayers so that you can change the reagent use of them between 5 and 10.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5168 316c924e-a436-60f5-8080-3fe189b3f50e
Fixes issue 1118. duplicating trashbags
Fixes issue 1117. evidence bag issues
Syndie shuttle can now travel to mining and the tcomms sat.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5152 316c924e-a436-60f5-8080-3fe189b3f50e
Removed /obj/item/weapon/camera while I was at it (unused).
New cameras are in modules/paperwork/photography.dm.
Standardised folder and paper naming a leetle bit.
Added a new gamekit sprite, also from BS12.
Path changes!
/obj/item/weapon/camera_test > /obj/item/device/camera
Updated all maps with the path changes, excepting oldstation.dmm.
Updated the changelog.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5116 316c924e-a436-60f5-8080-3fe189b3f50e
-Added a verb to empty the contents of the sprayer onto the floor.
-Admin spawnable only poisonousness apple added.
-Apples will always be eaten in one bite, to balance it, the apple can only hold 20 reagents now.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5104 316c924e-a436-60f5-8080-3fe189b3f50e