Created defines for disabilities and sdisabilities bitflags. Thos areas of code really need attention. Why are there so many blind variables/flags D= disability bitflags are located in setup.dm
Handcuff overlays now update when beepsky/ed-209s cuff you.
Resolves issue 628. Took a stab at tidying up handle_regular_hud_updates() for humans. If it's all working perfectly as it appears to be I'll start doing the same for other mobs. Whomever started 'fixing' this and then just abandoned it with redundant and heavily-broken code should be ashamed :[ It was/is in a real sorry state.
Resolves issue 617. Shades can no longer be weakened (stunbatons etc).
Fixed an issue with one of the antag deaf-sting/rune/whatever-it-was-I-forget causing nearsightedness rather than deafness :P
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3985 316c924e-a436-60f5-8080-3fe189b3f50e
Moved the simple_animal folder into /mob/living.
- Thanks to tortoiseSVN issues, I will have to remove the old simple_animal folder in a second commit.
Moved to living:
- maxHealth
- health
- control_object
- incorporeal_move
Moved to carbon:
- silent
- alien_egg_flag
Moved to human: (human_defines.dm)
- All vars that used to be defined in human.dm
- underwear
- backbag
- miming
Deleted from mob:
- r_epil //Old var, not used anymore
- r_ch_cou //Old var, not used anymore
- r_Tourette //Old var, not used anymore
- spellvoice() //Old proc, not used anymore
- get_damage() //Unused, we have getHealth() that does the same thing
Removed some unticked files that have already been replaced.
This also fixes cyborgs being 'knocked unconscious' by rolling pins and secure breifcases
- Additionally; to knock someone out with a rolling pin you must now be targeting the victims head.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3976 316c924e-a436-60f5-8080-3fe189b3f50e
I'm currently working on moving all of the vars in mob_defines.dm and some procs in mob.dm into more fitting places. For example, ghosts and simple animals can not be cloned, so they do not need a cloneloss var. Cloneloss would be better fitting to /mob/living or even /mob/living/carbon.
By moving these defines into proper children of /mob we lower the amount of resources that must be set aside every time a mob is created and we lower the amount of data that gets transfered between mobs when we combine, transfer or transform them. In theory, this should help free up some resources and combat lag.
Due to how integrated some of these defines are in the rest of the code, I'm going to be committing this cleanup in small batches. Doing it this way instead of one massive commit means that bugs will be easier to locate and identify. It is also less likely to overwhelm players with bugs, and if it still does, it will make it easier for us to revert only the section that is causing problems. Smaller commits also means merging with existing code will be less of a nightmare and has less potential for merging mistakes.
One of my goals in this cleanup is to add a description to every single variable in mob defines. While some of them are self explanatory, there are some there that are used in horribly obscure ways on top of having no comment to describe their use.
-----------------------
Mob defines moved to living:
- last_special*
- bruteloss
- oxyloss
- toxloss
- fireloss
- cloneloss
- brainloss
- halloss
- hallucination
- hallucinations(list)
*Note: I believe this variable is not needed, but the code it is used in (the resist verb) is cluttered and messy. That chunk of code probably use a re-write. I'll put it on my TODO list and if I survive mob_defines I'll try to get around to it but if anyone wants to do it for me, that would certainly help!
-----------------------
Mob procs moved to living:
- getBruteLoss()
- adjustBruteLoss()
- getOxyLoss()
- adjustOxyLoss()
- setOxyLoss()
- getToxLoss()
- adjustToxLoss()
- setToxLoss()
- getFireLoss()
- adjustFireLoss()
- getCloneLoss()
- adjustCloneLoss()
- setCloneLoss()
- getHalLoss()
- adjustHalLoss()
- setHalLoss()
- getBrainLoss()
- adjustBrainLoss()
- setBrainLoss
Mob procs moved to carbon:
getDNA()
setDNA()
-----------------------
Mob verbs moved to carbon:
- Sleep
- Lay down / Get up
-----------------------
The : operator...
The thing that has been killing me through this whole cleanup is people using or copy/pasting the : operator everywhere.
*** Please use obj.var_or_procname. Do not use obj:var_or_procname ***
Using obj:procname will not throw a compiler error if obj does not have that specific var or proc. This means that the coder making changes will NOT be informed of an error which will result in a proc failing, potentially being completely unusable and definatly causing a runtime error.
With that said, I fully anticipate that most bugs (if any) caused by this mob define cleanup to be the result of : operators.
I've been replacing many : operators in favour of the . operator as I've been going, most noteably I went out of my way to remove almost every : operator from the 4000+ line Chemistry-Regents.dm
Exceptions:
- Water: Turf and Atmos related vars. I'm not familiar with the members and methods in those class' hierarchy.
- Silicate: because it's commented out and I honestly dont see it returning.
- Thermite: Turf and Atmos related vars.
- Corn Oil: Turf and Atmos related vars.
Final note: While this may be the source of some mob-related bugs, there are two other revisions that have been committed between now and the last time either of the the two tgstation servers have been updated. These revisions both touch mob-related files. I'm not blaming these other revisions for anything, especially since one of them is mine anyway, I'm just listing them here for refrence to help quickly identify any problems.
- My human/life() changes in r3925
- Carn's life() standardizations in r3933
Stuff unrelated to mob defines:
- Fixed borgs and such being able to go into DNA modifiers.
- Changelog updated and I added Sieve to the list of coders.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3934 316c924e-a436-60f5-8080-3fe189b3f50e
+Added 'Rename' function
+Added ability to add photos to clipboards
%Fixed linebreaks not being replaced with <br> when viewing paper from clipboard
Signed-off-by: Chinsky <comma@nano.(none)>
* Dragging someone while injured (brute) will have a small chance of injuring them further that increases depending on how damaged they are. This coincides with the blood spatters that are already generated.
* Blood is now actually lost from the person being dragged.
* Added splints that can be applied to broken arms and legs, and will reduce effects of broken limbs. These can be removed the same way as handcuffs. They show up on the mob and on examine.
* Added an autoinjector that can only hold five units, but acts like a hypospray.
* Added an advanced medical kit that Medical Doctors spawn with that has Advanced Trauma Kits, Advanced Burn Kits, autoinjectors, and splints.
* Health Scanners now show unsplinted fractures ONLY in arms or legs.
* People in critical (less than -50 health) from external trauma (100+ damage from brute and/or burn) bleeding, and with unsplinted limbs, will send a message to anyone trying to drag them, to warn them it would be a bad idea trying to move them. They will suffer a lot more damage if dragged while lying down.
* The correct procedure is therefore, A) Bring a roller bed, or B) Splint all limbs, stop all bleeding with gauze, and then drag them.
* Fixed CPR being performed at weird health levels.
Culprit code:
/obj/item/clothing/gloves/latex/attackby(obj/item/weapon/cable_coil/O as obj, loc)
if (istype(O) && O.amount==1)
var/obj/item/latexballon/LB = new
if (usr.get_inactive_hand()==src)
usr.before_take_item(src)
usr.put_in_inactive_hand(LB)
else
LB.loc = src.loc
del(O)
del(src)
else
return ..()
I was going to fix said code but after seeing that BALLOON is spelled incorrectly, that it uses amount == 1, balloons have no in-hand sprite AND don't even have a desc I decided I shouldn't waste my time when the authorsimply couldn't be bothered. Commented it out.
Runtime fix for:
untime error: Cannot modify null.icon_state.
proc name: insert key pressed (/client/verb/insert_key_pressed)
source file: mob_movement.dm,84
Cause: AIs don't have intents and stuff.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3911 316c924e-a436-60f5-8080-3fe189b3f50e
Replaced every l_hand = and r_hand = and all that if(hand) crap to use standardised procs. This means we can use procs like Dropped() reliably as they will always be called when things are dropped.
Thorough documentation to come. But generally, if you want a mob's icons to update after deleting something in the inventory...use drop_from_inventory(the_thing_you_wanna_drop) just before deleting it. If you wanna put something in a mob's hands use put_in_hands() (or one of the variants). It'll try putting it in active hand first, then inactive, then the floor. They handle layers, overlays, screenlocs calling various procs such as dropped() etc for you. Easy
mob.equipped() is now mob.get_active_hand() because there was another totally unrelated proc named equipped() and stuff was confusing.
Weakening was made instantaneous.
Minor optimisations for human/handle_regular_status_updates(). I'll port these changes over to the other mobs next. Basically it should stop it constantly incrementing every status effect even after death.
umm... bunch of overlays related fixes... I think that's everything. :/
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3900 316c924e-a436-60f5-8080-3fe189b3f50e
Several head objects path changed so they are not helmets, head means can fit on your head, helmet was securities helmets, space helmets currently still helmet.
Cult restricted job list now has the sec force + cap because you can’t convert them as is.
AI removed from protected traitor jobs as malf is currently effectively out of commission.
A Protected list was added to changling.
Removed the furry mob files that were not checked.
Moved two unchecked files to unused
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3896 316c924e-a436-60f5-8080-3fe189b3f50e
coils. Takes 15 lengths to make, applied the same way as handcuffs, they have
the same effects as handcuffs, but only take 30s to remove if you resist. They
can also be removed by using wirecutters on a handcuffed mob.
- Added 4 new cable colors. Pink (ported from Bay12), orange, cyan and white.
- Engineer tool belts can now also spawn with orange wire, in addition to yellow
and red.
- Tool closets and electrical toolboxes can now spawn with cables in any of the
8 colors.
- Added cablecuff.ogg from bay12, played when you apply cable cuffs on someone
- Added this stuff to the changelog
So yeah, some stuff is credited to bay12, tho some of it was nearly enough
completely recoded.
Screenshots:
http://www.kamletos.si/wire%20colors.pnghttp://www.kamletos.si/cuff%20restraints.png
Revision: r3770
Author: baloh.matevz
traitor factions update. Added some new sprites and weapons.
New weapon: Delivery grenade. Can spawn an x amount of mob/object y in a
constant radius. It is currently used for carp and manhack delivery grenades.
!! Important !!: Certain telecomms computers were causing very nasty machine
disruption through some very silly mishap involving re-programming a computer's
network. Basically, it was breaking machine procs every time you messed with
them. This should hopefully make telecomms a lot more stable.
Fixed a bug where the reflexes nanoaug would not actually dodge the projectile
if the person was clicking directly inside the target's 32x32 border.
I changed around some core PDA messaging functions in preparation to PDA
Chatrooms (yes Legality it's happening). However I'm going to hold off actually
implementing it until Messycakes is either completed with his PDA UI overhaul or
just stops working on it.
Committed two patches from separate people in the forums. Chemical Cigarettes by
Neek (http://nanotrasen.com/phpBB3/viewtopic.php?f=16&t=8775) and Clicking
genetics blocks by Willox
(http://nanotrasen.com/phpBB3/viewtopic.php?f=16&t=8857). Check their respective
threads for more details. Sorry I couldn't get this earlier, guys!
Revision: r3755
Author: vageyenaman
- Item declarations have no place in mob code. MMI and pAI code being the exception.
Removed a cyborg upgrade that made them immune to flashes
- An item that removes one of the very few weaknesses a borg has? No thanks.
Removed mob\living\silicon\robot\robot_defense.dm
- It was an empty file.
Removed uplink.dm and uplink_kits.dm from WorkInProgress
- Duplicate files: they're already in the main chunk of the code.
- They are no longer a work in progress.
Here's hoping I dont break anything with this commit...
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3890 316c924e-a436-60f5-8080-3fe189b3f50e
-Both Ambrosia forms have had their reagent contents modified to prevent going over the 50-unit cap at high potencies. Fixes issue 469. Ambrosia Deus now contains space drugs instead of poison, as it ended up being more deadly in practice than I intended.
-Drinking milk removes capsaicin from your body~
-Frost oil should hurt less upon consumption.
-Liquid plasma can be converted back into solid plasma sheets, by mixing 20 plasma, 5 iron, and 5 frost oil.
-Pumpkins can be carved with knives now.
-Added additional checks to prevent hydro tray stats from going out of bounds when injected with certain chemicals.
-Added effects for holy water on hydro trays.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3883 316c924e-a436-60f5-8080-3fe189b3f50e
- No longer able to be cultists because their objectives completely contradicts robotic laws. Fixes issue 510.
- No longer able to be revolutionaries.
- - There was existing code for this already, but it should function properly now.
- - It now takes into account admin's borging players.
pAI's can no longer see revolutionaries or cultists.
- pAI's get a brand new mind instead of wiping their previous antag status.
- This way it prevents players exploiting the cult/rev hud icons and it does not affect the end-round scores and statistics.
Piano's 'repeat' has a limit of 10.
- This will stop byond from thinking playsong() is an infinite loop and crashing the server.
- Added a check so that players can not bypass the limit without stopping the song first.
- 10 is just an arbitrary number I chose, feel free to change it but keep it within reason... and byond's limits.
Fixed a bunch of 'emergancy' misspellings.
- Commit log worthy material right here.
Fixed a bunch of 'emergancy' misspellings.
- Commit log worthy material right here.
Changelog updated.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3878 316c924e-a436-60f5-8080-3fe189b3f50e
Full details in this thread:
http://nanotrasen.com/phpBB3/viewtopic.php?f=16&t=8898
And a summary of the most important bits:
-Door animations no longer desync and do the open-close-open thing. That's been
around so long most people don't even notice
-Welding tools no longer get their icons desynced
-Fixed unpowered mineral door runtimes
-Chemistry machines now require power to run
-Fixed the proc to apply radiation based on armor, which means that you can
actually not die of radiation as quickly if you wear armor that protects against
radiation
--By fixing this, it also fixed the singularity, so you might want to be careful
next time you run by it naked
--Also means that radiation events take armor into account. How great
-Hopefully have a bugfix to prevent borgs from using lag to enter the game
without an AI or laws, but I cannot test it myself other than that it didn't
break anything
-Disposal sound can only play once every couple of ticks, so no more ear-rape by
disposals!
-Lasertag guns can no longer be used to make lasergun turrets
-Cleaned up stray pixels on several doors and the lasertag guns
-Reworked how falsewalls work, now whenever you attack them with certain tools
(drills, welders, etc...) it instantly turns them into a wall and pushes the
attackby(), meaning you might not even notice that you just drilled down a
falsewall, and at the very least they are much more fitting
-Omni-directional PA console! Never have to worry about rotating that fucking
computer again, because now it does it itself!
-The Marisa robe that spawns in the theater no longer protects like armor
-Tweaked coefficient list for fake insulated gloves (misplaced punctuation
messed up the list a tad)
-Moved falsewalls out of 'transfer_valve.dm' and into 'structures.dm'
-Tweaked smoothwalls so it only connects walls with like minerals (only seen
effect is on the new walls)
--Also added appropriate signs to areas
-Reworked portable turrets to be a lot less laggy, now they determine the
projectile type once, then save it so they don't have to go through else if
chains every time they fire
-Added many sprites from WJohnston, but many are not fully implemented (Mostly
floor ones)
-Added a vending machine for engineering, the Engivend. Apparently it was needed
because of the lack of availability of the Autolathe or whatever.
-Added WJohnston's Dark Gygax sprites, then made a Death Squad Gygax out of
them. A bit tougher than the standard Gygax, improved battery, and is pre-fit
with gear, ideally for 'hit and run' tactics
-New Odysseus construction sprites, also removed the Odysseus Carapace in favor
of plasteel like the Ripley, meaning they in terms of construction, a Ripley is
equivalent to an Odysseus
-Added an 'is_hot()' proc, when called it returns the temperature of the item in
K, while taking into account things like whether or not the item is active or
whatever
-Rewrote the Experimental Welding Tool, now instead of having a super-sized
tank, it uses super-concentrated plasma that is turned into gas inside of it as
its fuel source. Meaning, it will never have to be refilled, but it takes time
for it to fill itself
-Added WJ's firelight sprites and code. Wanted to use them, but haven't had a
chance to really implement them, but still, they're there
-Turrets made with lasertag guns now fire their respective team's bolt
-The turrets also automatically target anyone on the opposing team (But will
continue to shoot at anyone, for shits n' giggles)
-Turrets get corresponding sprites based on team
-Shooting a turret with a different team's laser will disable it for 10 seconds
-You can also make ED-209's for your lasertag games/pissing off sec
-These are constructed just like a regular ED, but instead of a security vest
and taser, it requires a lasertag vest and gun (same colors)
-When geared for lasertag, They will not arrest anyone nor melee them, only
patrol (if set) and shoot
-They have their color schemes as well, and can be disabled just like turrets
-For both turrets and EDs, when geared for lasertag, they will not shoot anyone
on the ground, this was due to very quickly learning how fucking OP that was for
1 turret to stunlock 3 people for eternity
-And when they are geared for lasertag, both the turrets and EDs have their
access changed to maint, clown, and mime (This will not stop any of them from
being shot, however)
-As a side note, you can also make lasertag stationary turrets for any map-
related things
-Now walls are based on a plating system, meaning all walls have a girder with a
mineral plating on top of it.
-As of right now, usable minerals are Silver, Gold, Diamond, Uranium, Plasma,
and Sandstone (Lacking sprites for wood, *cough*)
-This also carries over to falsewalls, so you can make falsewalls out of any of
those minerals
-Also, this carries over to powered doors, meaning you can construct useful
doors out of minerals, so you could have actual diamond forts with doors
requiring access to get in or whatever
-All of these are standardized, and for the most part work just like regular
walls, meaning if you start slicing a wall, it will drop the mineral, or if you
drill it, or whatever
-What was mentioned with the smoothwall tweak above, only walls of the same
mineral will connect, so it all looks very nice
-Doors and walls made of uranium emit radiation when interacted with, with walls
causing a 'ripple' effect, so the more walls nearby, the more radiation you get
hit with
-Doors and walls made of plasma burn. It's a short, quick burn, but can easily
be compounded in large structures
--As a note on plasma walls, I cannot get atmos and plasma walls to play nice
(Since they are airless turfs), so I can't actually get them to ignite based on
air temperature, but when they do ignite, they will auto-magically ignite nearby
plasma walls, with a reduced temperature, meaning that if you want a massive
chain reaction over a huge area, you better use something a bit hotter than a
lighter
--Also, when plasma walls burn, they simply leave behind a girder, while doors
leave assemblies
-Lastly, for nearly any kind of destructive action, Diamond walls are much more
resilient, meaning they will take twice as long to be destroyed, and are immune
to the effects of thermite
(Also, sprites for plasma walls and uranium walls are shite right now, waiting
for replacements)
Update:
-Added cult walls as a 'mineral wall', meaning they will work on the same system
and 'ReplaceWithMineralWall("cult")' will change any turf into a cult wall,
hopefully for some cult-related activities soon
R&D stuff:
-Now instead of 1 sheet or ALL OF THE SHEETS, you enter a number as to how many
sheets you want (it's sanitized to hell as well)
-Minerals no longer multiply when inside RnD machines. (Who fucked that one up?
Goddamn)
-Mech fabricators are both deconstructable, and putting higher level parts
actually improve it, each 'Tier' up is equivalent to +1 tech levels for that, so
a High Powered Micro Laser would give the same bonus as +1 Material Research, a
Pico Manipulator would give the same bonus as +2 Engineering, etc
-Complete with a shitty opened Mech Fab sprite!
-And not shitty overlays so autolathe's animate the material that is put in
them, rather than give everything that's not glass the metal animation
LOL THE JOKES ON YOU I JUST COPY PASTED HIS TOPIC
added a few svn ignores, for thumbs.db and maps/backup
Revision: r3751
Author: petethegoat
Recoded stunbatons, and put them into their own stunbaton.dm. They should
function more or less the same, there's a few differences.
Recoded rechargers, they function exactly the same, but should be a bit more
responsive now.
Fixed issue 475 .
Filing cabinets, photocopiers, and hydroponics trays are now unwrenchable (the
latter by request of Cheridan. It may need balancing, or more steps to
unanchor.)
update_clothing() has been broken up into it's key parts. A full explanation can be found in code/modules/mob/living/carbon/human/update_icons.dm
the tl;dr of it is that overlay updates are no longer called by the gameticker. Instead they are called by procs such as u_equip db_cick etc. This means faster updates (although admittedly, more of them can be called per tick). This however is offset by the fact that specific overlays can be updated now, vastly improving its efficiency. This will especially help when there are large numbers of dead mobs.
Fixed the throw code for TKgrab so it can be toggled.
Cloaking for aliens/humans/ninjas was changed. It's very crude at the moment and for that I apologise. But it works and is very efficient.It also stops cloaked individuals becomming invincible due to people being unable to hit them (even when they know exactly where they are)
Fixed a bunch of bugs with damage-overlays. They were updating FAR FAR to frequently. They were also horribly inefficient. They should now be virtually seamless when updating and only use cached icons, so they aren't affected by lag as badly. This may help with explosions lag a little.
There's still a tonne of stuff I need to refine with this. I'll be refining it down into some helper procs to reduce on code duplication and such
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3811 316c924e-a436-60f5-8080-3fe189b3f50e