Commit Graph

71 Commits

Author SHA1 Message Date
Giacom
9b7a1bec2a Merge pull request #1535 from Incoming5643/StaffAnimation
Repairs and Expands the Staff of Change
2013-10-11 07:28:58 -07:00
Jordie
416cbee62c Xrays shoot everything but walls 2013-10-09 18:05:33 +11:00
Incoming
f36507723a Fixes my extra side of potatos
Removes the !isanimal and !isrobot checks from robot creation. A fix has been suggested for the pull currently dealing with MMI that will stop the runtimes. https://github.com/tgstation/-tg-station/pull/1529
Keep in mind that if that request is not ultimately pulled the fix will need to be added to this pull to prevent runtimes from the game trying to take DNA from non-carbon based life.
2013-10-08 16:04:38 -04:00
Jordie
272038e2e7 Xray guns unique and buildable 2013-10-09 01:31:39 +11:00
Incoming
9fb9ed20ed Repairs and expands the staff of change:
*Staff of change now has a 20% chance of turning you into a simple animal (all have been tested to make sure they're properly controllable.
*Staff of change now works on simple animals, adding on_hit doesn't double up damage on simple animals or try to inflict non-brute damage because it's hardcoded to avoid inflicting damage to animals in the generic projectile. Special guns seem to work fine on animals (like the syringe gun for example).
*Mutant races were not updating properly thanks the DNA revamp, so that's been fixed and expanded to include all current races.
*Transfering identity for MMI's in newly created robots has been disabled for animal -> robot because it doesn't work properly for them, robot -> robot also apparently NEVER worked and has likewise been disabled.
2013-10-07 21:41:42 -04:00
ACCount12
110e0f420a Sparks! 2013-09-29 21:25:38 +13:00
ACCount12
78e91a59c1 Sparks! 2013-09-29 21:23:13 +13:00
ACCount12
824e7db801 Update bullets.dm 2013-09-06 14:35:27 -07:00
ACCount12
46cfbd2d2b Update bullets.dm 2013-09-06 14:27:30 -07:00
Robson Richards
e1b1c3c6b0 Commits Buff, Stechkin AGAIN 2013-08-29 20:50:32 +01:00
AlexanderUlanH
9082f884d6 Some Fixes
Fixed problems with projectiles hitting walls, and added a missing check
in floral mutarays that caused runtimes when it hit a non-carbon.
2013-06-20 18:33:32 -04:00
AlexanderUlanH
2fcf26667c Overhauled Projectiles
Changed atom's bullet_act to call the projectile's on_hit, and changed
most bullet_acts to call on_hit as well.  Removed some now-unnecessary
snowflake code.

These changes will make projectiles which should effect non-mobs, such
as the gyrojet and the ion rifle, work properly.  Inanimate objects can
now be empulsed with the ion rifle, whose projectiles used to dissipate
on hitting anything but a mob.  Gyrojets now explode on most objects, as
opposed to just on walls and mobs, and the snowflake code that made them
work on walls is no longer necessary.  The code for pulse rifles'
breaking walls has been moved from a check in turf to a check in pulse
beams, and has been expanded to include structures, allowing them to
(slowly) break girders.  For coders, it means that on_hit is a reliable
proc for the effect of a bullet's hitting an object.
2013-06-19 23:24:00 -04:00
carnie
043028db83 Resolves #283
DNA modification uses normally distributed random numbers. Radiation strength dictates the standard deviation of the change in the hex character which is hit (higher output means greater chance for a large change) . Similarly, radiation duration dictates how likely we are to hit the hex-character we clicked on (longer duration means more likely to hit). Irradiation is strength*duration. All balancing is done via multiplier defines so you can rebalance it easily.

DNA blocks and structuring all use defines. Making modification/expansion easier. I'll likely expand this into a datum-based system to allow more interesting features, reduce code further and allow admins to interact with the way dna strings behave.

DNA strings can be spliced together using merge_text().
 e.g. string 1: "Hello World"
 string 2: "Seeya______"
 result: "Seeya World"
 This isn't used except for admin-spawnable SE injectors at the moment.

r_hair, g_hair, b_hair, r_facial, g_facial, b_facial, r_eyes, g_eyes, b_eyes were removed and made into 3 short hex-colors.

Skin tones now support colours other than shades of brown. I've had to restrict it heavily until other stuff is done. Skin tones include Albino Caucasian, Oriental, Mediterranean, etc.

Data disks and DNA injectors were reworked to use associative lists so transferring data is just a matter of doing list.Copy()

var/dna is now defined at /mob/living/carbon level. Only monkeys and humans may have dna currently. Support is there for all carbon-based lifeforms to have dna.

DNA modifier console has almost all controls on one screen.

UIs and UEs can be injected separately (appearance and name, respectively)

dna helper procs like ready_dna() and such were changed to make them more versatile. There is now a hardset_dna() proc as an alternative to ready_dna which can initialize dna with properties passed into it or update an existing dna string (useful for cloning and antag spawning)

Every block of SEs are in randomised positions.

Disabled automatic logging of world.log, as it produced undesirable behaviour.

Mr Muggles and God Emperor of Mankind disks removed.

Floor() removed. (it was completely uneccesary, that is what round() is).

Fixed spelling mistakes in modularchangling.dm (thanks tenebrosity)

Tanning removed from beaches (again)

Experimental: monkeys and humans do not have dna until first attempt to read dna (using check_dna_integrity(mob))
This is mainly due to the way everything is hardcoded into New().

Changelog.html updated
Signed-off-by: carnie <elly1989@rocketmail.com>
2013-04-24 09:37:30 +01:00
carnie
5ca166cae0 Refactored underwear to use datum/sprite_accessory/underwear similar to hair and facial_hair.
People may select any underwear (regardless of gender) at a dresser, but not in preferences.
random_underwear(gender) will return a random pair of underwear suitable for your gender.
Removed an unused variable in sprite_accessory

The new_player preferences screen now randomizes character slots for which there is no data (so no more bald, fat, white guys in diapers greeting new players)
datum/preferences character settings are randomised at New().
replaced /datum/preferences/proc/randomize_appearance_for(human/H) with /datum/preferences/proc/random_character(), it does the same stuff without the copying to a mob. Basically, now when you want to make a random character you just do var/datum/preferences/A = new(); A.copy_to(human_mob), randomisation of appearance and name will already be done. Easy.

Reworked the savefile updating/versioning code to make it easier to work with. I've used it to update underwear preferences to the new system as an example.

Signed-off-by: carnie <elly1989@rocketmail.com>
2013-03-28 11:11:40 +00:00
petethegoat@gmail.com
8ff7285645 Updates HUD stuff!
The main goal was to remove all the pointless shit in the UI style dmis, but this commit actually goes a bit deeper than that.

Formally renames the "hurt" intent to "harm", in line with everything else in the world.

Removes the old screen1_... .dmis. They've been replaced with screen_... .dmis. They function much the same.
screen_gen.dmi is used for things which apply to multiple UI styles, such as storage slot sprites, or the intent selector. (These can still be overridden in HUD code, though.)

Item action buttons have been changed to use a template from the UI style, and the icon_state of the item.
var/icon_action_button has been removed- varvar/action_button_name must be used instead to add action buttons for items.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5826 316c924e-a436-60f5-8080-3fe189b3f50e
2013-03-08 21:32:00 +00:00
giacomand@gmail.com
504342b4a7 - PA particles and projectiles will now be garbage collected. I have tested it to make sure that they are no longer in memory.
- You should no longer open doors when being pushed back in a pod/shuttle.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5750 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-20 23:29:07 +00:00
giacomand@gmail.com
d2a41eea90 - Added plastic explosive wire(s). It has a single wire which when cut/pulsed will cause it to explode. Yeah you can attach a signaler to it.
- 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
2013-02-13 12:45:57 +00:00
giacomand@gmail.com
87b611aec0 - Fixed some bugs with traffic computer. Added some more functions for NTSL, which I think will really expand the functionality of it. time() will return the time in the number variable, timestamp(format) will return it in string.
- Increased the allowed w_class things in secure briefcases. Equalized the amount of stuff you can put in a briefcase with the backpack.
 - The staff of animation will turn animations onto their side, if they were created by a different user.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5658 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-06 10:33:29 +00:00
Kortgstation@gmail.com
c66a06d177 Added 3 more slime types so the evolution tree would be symmetrical again.
Added a bullet act to resin doors/nerfed their health.

Removed larva/drone from the possible xeno transformations with staff of change so using it doesn't always derail into a xeno round/the wizard getting facehugged.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5638 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-01 10:16:54 +00:00
giacomand@gmail.com
d9c3a3fd4c - Spiders are slower and take more damage from cold/heat.
- Increased the announce time for infestations.
- Made the staff of animation mimics not care about staffs being dropped, they will not attack their creator ever.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5538 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-13 04:16:31 +00:00
petethegoat@gmail.com
ef8369409e Committed Cael Aislinn's proposed commit: http://forums.nanotrasen.com/viewtopic.php?f=16&t=11641
- Xenos suit and helm (completely obscuring, and almost indistinguishable from drones) (admin spawned only for now). 
- Facehuggers now have different icon states for being thrown and after impregnation. 
- New death, unconscious and sleeping icons for aliens. 
- New icon (and projectile type) for neuroxotin. 
- New infection overlay images for telling aliens about pregnant humans (3 icons, showing the progression of the infestation). 
- New system for handling alien impregnation (alien embryos are an object inside the mob, instead of a disease). 
- Players can be operated surgically to remove the alien embryos (targetting the chest: scalpel, surgical saw, hemostat, retractors. If the embryo is nearly fully developed, it might come out alive though. 
- Corgis can now get impregnated. 
- There is a short animated overlay of a chestburster when it comes time to burst chests. 
- Alien larva now have three different icon sets, depending on their growth (25% they are bloody and pale, 25% - 75% they are pale, 75% onwards they are deep red).


Fixed up table smashing, and added rack smashing in the same way.
Added new north/south facing for the large alien queen.
Updated the changelog.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5493 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-08 16:30:45 +00:00
rockdtben@gmail.com
169c96db1b Too remove potential excessive garbage collection per tick. We will be reusing lists for overlays instead of deleting and creating them.
the .Cut() proc on a list will empty a list by default. This also will set the len to 0.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5465 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-04 15:11:06 +00:00
giacomand@gmail.com
9941bb8587 Added mimics! There's the classic crate (chest) mimic which waits until somebody is close before trying to attack them. You can fill him with loot by putting items on him on your map. This was done by changing the base initialize proc to an /atom/movable and then instead of looping through the world for objects, instead loop for atom movables.
The next type of mimic is for the staff of animation! They will copy the icon of the object they're copying and will set themselves stats based on the object too. They will not attack the bearer of the staff which made them animated.

Added the option to get the staff on the wizard's spell book.

Added a "friends" var to hostile mobs. It will make the simple animal ignore friends when choosing targets.

Changed the statues from /obj/effect/showcase to /obj/structure/showcase.

Added a new variable to projectiles, "shot_from" is the gun that shot the projectile. It's used to determine what staff animated the mob and it will then add that staff, so it can ignore it when choosing targets.

Added a wander var for simple animals, turning it to 0 will stop the simple animal from moving when idle.



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5246 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-02 04:38:43 +00:00
Kortgstation@gmail.com
0c4f441cb5 Added Cheridan's slime sprites to replace roros. Replaced all mentions of roro/metroid with slime. Once Cheri has the rest of the sprites/Phol gets mutant race sprites I'll start work on redoing metroid/slime code with Giacom and adding breeding.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5223 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-29 04:12:22 +00:00
Kortgstation@gmail.com
09e9762e40 Added a check for the items w_class when you try equipping it to a suit storage slot. This means the ion rifle, SAW, and staff of change will no longer fit on armour.
Added a new gun/projectile which deals brainloss as well as causes hallucinations.

Replaced the pulse rifle in stationCollision with the new gun.

Gave the HoS gateway access so he can banish people.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5201 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-26 12:50:25 +00:00
Kortgstation@gmail.com
afe9e93c05 Fixed name of the medical rig
Fixed the exile implant locker.

Made syndicate simple animals slightly squishier (block chance lowered).

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5160 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-22 08:15:07 +00:00
Kortgstation@gmail.com
ab4c92e066 Using summon guns gives a message to the the user to confirm it working.
Added a new borg upgrade module which requires illegal tech and combat tech to make. It allows you to give them their emagged equipment without fucking with their laws.

New LMG by Ausops (both sprites and code). Right now appears only in Summon Guns, but may appear elsewhere in time.

Grilles now have a bullet act, so they no longer magically absorb infinite bullets.

Updated changelog.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5037 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-11 07:43:49 +00:00
aranclanos@hotmail.com
d25a5d5aa3 Fixes issue 1001.
Fixes issue 994. (Chemsprayers are not included)
Fixes issue 990.
Adding some instant admin logs and server logs for some stuff in emitters/PA. See image. http://i.imgur.com/7kQpH.png

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4904 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-17 14:27:23 +00:00
Kortgstation@gmail.com
18608f3ca6 Added Syndicate NPCs/sprites for them. They come in a few varieties, some with shields and swords, some with guns(yes they shoot). They're simple animals, but they drop a corpse landmark when they die, so you can loot them normally.
A plea to admins: Dont fucking spawn these everywhere, they're meant to be used as badguys in away missions, not for you to fuck up every round by spawning 70 of them.

Clowns also drop a real (lootable) body on death.

Added new corpse types. Syndicates as well as several civillian jobs.

Added a new area/copied a shuttle icon over into floors as part of work on my map.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4839 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-09 19:22:14 +00:00
petethegoat@gmail.com
99745c2295 Fixes issue 929.
Changed nuke ops to use buffed C20Rs again, hurray!
Cleaned up the nuke shuttle code in preparation for fixing issue 854, and renamed var/derp.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4701 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-16 12:42:58 +00:00
d_h2005@yahoo.com
a3ca5e7ded The yield mode on the somatoray gun now uses a diminishing-returns formula to determine the chance of increasing yield (instead of a hard cap at 2)! Cleaned up somatoray code a bit too.
Doctor's Delight, the miracle drug, now requires tricordrazine to brew.
Fixes Issue 858. The text is now gender sensitive.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4571 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-28 03:17:13 +00:00
johnsonmt88@gmail.com
44cf1c4106 Runtime fix.
runtime error: Cannot execute null.apply effect().
proc name: on hit (/obj/item/projectile/energy/floramut/on_hit)
source file: special.dm,85

Moved ninja gloves into the gloves sub-folder in clothing instead of space suits.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4545 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-26 00:37:47 +00:00
johnsonmt88@gmail.com
240d910679 Meteor guns!
It's a gun that fires meteors! Admin spawn only.

They do not shoot 'real' meteors, they shoot a projectile that acts like meteors.

Note: The meteor projectile calls 'meteorhit()' which some objects and turfs do not have, so some things won't really be affected by them.

The gun itself has a potato battery, meaning it starts with a charge of 100 and has a maximum charge of 300. It costs 100 to fire and recharges 100 every 5 ticks.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4538 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-25 16:39:18 +00:00
baloh.matevz
c0465614da - Mutantraces are no longer a variable tied to human mobs, but rather a variable tied to dna. As such, changelings who absorb people with a mutantrace will now transform back into the mutantrace when they transform into their DNA.
- Fixed issue 784.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4440 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-16 17:13:28 +00:00
elly1989@rocketmail.com
e0b538ea77 Runtime fix: getFlatIcon() - Will no longer runtime should overlays contain any nulls. (Interesting note: I was intending to fix this to try speed up update_icons() even more but it turns out BYOND really dislikes overlays += null. the optimisation took twice as long o.O)
Removed unused caching code from getFlatIcon(). We handle our own caching using datacore.dm

Runtime fix: datacore wasn't checking the type of object in the wear_id inventory slot. I've removed that so it now uses mind.assigned_role instead.
The following runtime has occured 1 time(s).
runtime error: undefined variable /obj/item/device/pda/warden/var/assignment
proc name: manifest (/obj/effect/datacore/proc/manifest)
  source file: datacore.dm,14
  usr: null
  src: the datacore (/obj/effect/datacore)

Runtime fix: staff-of-change projectiles were runtiminng when transforming somebody with implants. Cause: forgot a "continue" >.<
The following runtime has occured 4 time(s).
runtime error: Cannot modify null.layer.
proc name: wabbajack (/obj/item/projectile/change/proc/wabbajack)
  source file: change.dm,37
  usr: 0
  src: the bolt of change (/obj/item/projectile/change)



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4412 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 23:46:03 +00:00
Kortgstation@gmail.com
0ed6f00100 Cleaned up the wizards spellbook, it no longer has the option of using client verb spells instead of object based ones. Object based spells are superior in every way and are the ones currently tracked by Erro, the client verbs weren't even supported anymore so there was really no reason for a ton of if statements everywhere/code for three different spellbook types (including one that used telecrystals).
Changed the config, item list, wizard spawn gear etc to eliminate the possibility of the old type of spell book

Removed commented out (non functional) code from change.dm

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4383 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-12 20:22:08 +00:00
elly1989@rocketmail.com
a79f049ebd Moves mob/var/datum/changeling/changeling to datum/mind/var/datum/changeling (changeling datums are now held by minds rather than mobs)
As such, changelings can now be reported at round-end, even after gibbing. Resolves Issue 251

Changeling power proc_holders are now datums rather than objects.
Condensed all those changeling stings down a bit. This will make fixing issue 351 easier to fix

Replaced changeling fakedeath and a number of checks for the zombiepowder reagent with a bitflag: mob/var/status_flags & FAKEDEATH
setting the FAKEDEATH flag will make the mob appear dead in exactly the same way changeling parasting and parapens worked. I've updated changelings and zombiepowder to work with this flag.

Bug fixes for the staff of change. There was a type mismatch and I typo'd "alien" as "xeno" so xenos were not being randomly picked.

TODO:
changeling purchased verbs could probably be moved to mind/special_verbs. Likewise, other modular antag proc-holders can be merged with the changeling system using the same type of datum. (namely wizards)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4377 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-12 05:43:39 +00:00
elly1989@rocketmail.com
81bff7c5f5 Important!
Minds part2 - Carn loses her mind.

The way datum/mind stuff works has been changed a lot. I really can't explain everything. If you have any questions it'd just be easier if you leave a comment or ask me in coderbus.
Generally, minds now represent IC characters rather than following a client around constantly. Minds can change owners, mobs, (names WIP).

Technical babble:
The var/current and var/original variables of the mind datum must always be of type mob/living (or null). Please do not mind.transfer_to(ghost_mob). If you want to ghost somebody use ghostize()! It will do all the technical stuff for you.

mob/dead/observer/var/corpse was removed. mob/dead/observer/var/mind is now used as a reference to the last mind the player had (so respawning code has something to reference), but also because mind.current is a far more useful way of tracking a corpse. If somebody triggers a mind.transfer_to() call on your corpse, your mind will be tranfered to another mob/living or something...that will then be considered your corpse. This could allow for more interesting mind_transfers. For instance, the "raise corpse" rune ghostizes any player in the corpse to be raised and selectes a random dead player to take possesion of their character! The person possesing them will have all of their memories, objectives, etc. The poor guy who was originally the owner cannot re-enter body if there is another player in his body...but if that player is ghosted he can once again return. Exorcisms anybody?

Changes to cloning and hydroponics. I will likely have to rework these later as they're hacky as hell right now.

A lot of stuff is now handled by Login/Logout rather than in hundreds of different places. One such example, mind datums get their variables updated at Login and Logout.

Fixed a few minor bugs. I'll update the issues manually in a bit because I literally cannot think atm.

TL;DR guide:
-If you want to make somebody a ghost use ghostize(). Or you will need to find a doctor to stitch your bits back on. :)
-You don't have to worry about making minds. Simply doing key="carnwennan" or whatever will either: A) make a new mind and initialise it if there isn't one or B) take possession of the mind currently attached to the mob.
-It's safe to transfer a mind even if a key isn't in-body (e.g. they are ghosted/admin-observing etc!) Minds have an active variable which tracks whether they are currently synced with a key. This is to avoid dragging ghosts back into their bodies when say, a wizard mind_transfers them.
-Transferring a mind whilst var/active=1 will cause the following: mob.key = mind.key. So no need to do that separately (in fact you'll lag things if you do, so don't)
-If you do want to initialize a mind manually, say if you don't have a client to login to the mob yet, simply do new_mob.mind_initialize(). Simple! When someody is logged into that mob they will take ownership of the mind and it will sync up.

NOTE: a lot is probably broken since this is a pretty massive change. Please let me know asap (with actual info! Shouting at me, "IT BORKED HALP", doesn't help)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4342 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-08 20:51:55 +00:00
sieve32@gmail.com
7bf6788082 -OPTIMIZATION TIME
-Almost every instance of 'for(mob in world)' has been killed. Because GODDAMN was it being run a bunch. Instead, a series of global lists have been made, and they are all handled auto-magically through New()'s, Del()'s, Login()'s, death()'s, etc...

Lists are as follows:
-mob_list : Contains all atom/mobs by ref
-player_list : Like mob_list, but only contains mobs with clients attached
-admin_list : Like player_list, but holds all mobs with clients attached and admin status
-living_mob_list : Contains all mobs that ARE alive, regardless of client status
-dead_mob_list : Contains all mobs that are dead, which comes down to corpses and ghosts
-cable_list : A list containing every obj/structure/cable in existence
Note: There is an object (/obj/item/debuglist) that you can use to check the contents of each of the lists except for cables (Since getting a message saying "a cable," x9001 isn't very helpful)

These lists have been tested as much as I could on my own, and have been mostly implemented. There are still places where they could be used, but for now it's important that the core is working. If this all checks out I would really like to implement it into the MC as well, simply so it doesn't check call Life() on every mob by checking for all the ones in world every damn tick.

Just testing locally I was able to notice improvements with certain aspects, like admin verbs being MUCH more responsive (They checked for every mob in the world every time they were clicked), many sources of needless lag were cut out (Like Adminwho and Who checking every single mob when clicked), and due to the cable_list powernet rebuilding is MUCH more efficient, because instead of checking for every cable in the world every time a powernet was broken (read: A cable was deleted), it runs though the pre-made list, and even with a singulo tearing all the way across the station, the powernet load was VERY small compared to pretty much everything else.

If you want to know how any of this works, check global_lists.dm, there I have it rigorously commented, and it should provide an understanding of what's going on.

Mob related in worlds before this commit: 1262
After: 4
I'm helping


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4179 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-26 03:04:05 +00:00
giacomand@gmail.com
e42419c304 -When a pAI Card is deleted it will now kill the pAI mob inside. This is to stop people from being able to respawn by having their pAI destroyed in a singularity.
-Added a new wire to Cyborgs. The Camera wire allows you to disable the Cyborg's camera. It will show on Security Consoles as "Cyborg-155 (deactivated)". Pulsing it provides you and the Cyborg with a message of the Cyborg's camera focusing loudly. It will also kick anyone who is watching the Cyborg's camera out.

-Traitor Cyborgs, when scrambling their codes, now have a completely disabled camera. It will not show up on Security Consoles at all, even as deactivated.

-Added a new small guide for new Cyborgs. It is similar to the AI's with some more useful information specific to Cyborgs.

-Commented out the old message, it was copy+pasted everywhere.

-Changed RandomBorgWires to not rely on lucking out and landing on a previously unused index.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4089 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-16 16:15:29 +00:00
ericgfwong@hotmail.com
d2fc8b2689 Updated message AIs and Cyborgs get when they spawn
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4027 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-10 19:02:03 +00:00
d_h2005@yahoo.com
507aeac51e Fixing some derps:
-Cocoa pods no longer turn invisible at a certain point.
-Changed some dumb descriptions.
-Fixed larvae UI positioning
-Further adjusted capsaicin/frost oil. Cold is already lethal to metroids, so the extra damage stuff was redundant.
-Fix for somatoray runtimes when shot at metroids and xenos and stuff.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3970 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-02 20:20:13 +00:00
petethegoat@gmail.com
7f5de70b91 Reverted r3944, with the exception of stock_parts.dmi
Fixed issue 605.

Committing minor adjustments to watercloset.dm and paperbin.dm too!

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3947 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-29 15:56:51 +00:00
vageyenaman@gmail.com
9a7675ce5a Implemented Tobba's new lighting system. This grants some infrastructure to allow for colored light sources. It should also, theoretically, but more efficient.
Created a quick variable to let projectiles automatically illuminate.

Implemented some of Ausops' sprites.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3944 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-29 03:43:30 +00:00
johnsonmt88@gmail.com
80b15df54b ** Mob Define Cleanup: Part 1 **
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
2012-06-28 17:06:19 +00:00
elly1989@rocketmail.com
48088b79d9 ugh...this was horrible. I'm really sorry if I fucked anything up, I was literally going braindead towards the end.
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
2012-06-23 21:24:45 +00:00
sieve32@gmail.com
e8851bddf9 More bugfixes!
-Fixes an issue with protolathes being able to be loaded forever
-Adds 3 pairs of Mesons to the EngiVend to compensate for all the missing engineering lockers
-Changed the spawn order for lasertag closets (So you can actually click the different items)
-Makes lasertag turrets and ED-209's much more efficient, prevents them from shooting at downed people, they don't target 'criminals', they cannot be used by the opposing team, most options are auto-magically set on creation and the buttons to change them are disabled (Everything but the on/off and the patrol for ED's, for now), and when emagged, they fire 'omnitag' bolts (Stuns everyone with a vest)
-Gave blue lasertag bolts their own sprite to match the style of the red tags
-Nerfed the amount of radiation from the radium and uranium reagents

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3866 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-19 02:00:02 +00:00
elly1989@rocketmail.com
8961bd96d0 WARNING: This has been thoroughly tested and I'm happy that it's -stable- (it shouldn't runtime). However, it might have a few niggly bugs caused by specific items using no-standard or weird code. Most bugs will be stuff like it not updating overlays and such and can be fixed simply by dropping the item. That being said, if you're not comfortable with this, I'd suggest waiting to update past this revision.
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
2012-06-13 19:03:25 +00:00
petethegoat@gmail.com
4701247c9b Fix for bananium doors having the wrong icon_state. Thanks Mwahahahaha!
Fix for xray projectiles being incorrectly defined. Thanks Mwahahahaha!
Fix for the xray sprites.
Map changes! Mostly changes in maintenance, but also a xenobio change, to make the monkeys not visible from the metroid pen, for Rockdtben.
Also readded the secure storage and lockdown buttons to the CE's office. Thanks Mwahahahaha!

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3765 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-08 14:34:36 +00:00
vageyenaman@gmail.com
f9ee2320fa Not a whole lot going on in this commit, just more work on preparation for the 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!

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3755 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-07 02:31:09 +00:00