Tracking added for AI's and Observers
Instead of calling GetVoice() over and over for everyone that can hear you we're checking a variable that is updated with Life()
removed a bunch of my debug verbs.
Conflicts:
code/game/machinery/telecomms/broadcaster.dm
code/modules/mob/dead/observer/observer.dm
code/modules/mob/living/carbon/human/human_defines.dm
code/modules/mob/living/silicon/say.dm
- Complete rewrite of the chemsmoke spawning code (everything that happens after the reaction to create the smoke).
- Moved it into it's own file since it's a little longer than the old one code-wise.
- Tweaked the smoke sprites; gave chemsmoke directions for more randomization, and tweaked the timing of their animations so they are smooth now.
Most of the code is documented, so you should be able to follow what's going on just reading through it. In short though:
- Chemsmoke now affects a circular area with a variable range depending on the total amount of chemsmoke created (no more 1-of-each-ingredient smoke grenades - sorry).
- The carried reagent volume in the cloud balances itself according to how big the affected area is (larger area, less carried reagent per turf).
- The carried reagent has more volume the closer you are to the centre of the cloud.
- The visual smoke effect scales with how big the affected area is.
Conflicts:
code/game/objects/effects/effect_system.dm
icons/effects/96x96.dmi
2 for loops is more expensive then what we're doing here.
Also we check to see if virus2 is populated before starting a for loop
Conflicts:
code/modules/mob/living/carbon/human/life.dm
code/modules/mob/living/carbon/monkey/life.dm
pretty much the same effeciencies from human/life()
no need to updatehealth() over and over and over
no need to process environment if everything is normal
etc.
Conflicts:
code/modules/mob/living/carbon/monkey/life.dm
Before: We process a whole lot of bullshit for no real reason most of the time because temperatures are perfect.
Now: We check if our temperatures and environment are within normal bounds and get the hell out of the proc.
Also: Mobs that are long dead or just dead mobs spawned at round start won't process Life(), those 3 clowns don't need Life(), those jerks.
Conflicts:
code/modules/mob/living/carbon/human/life.dm
We do a bit of pre-processing to see if we want to do checks on all the organs.
First we don't even do preprocessing unless we have damage of some kind
afterwards we process what is hurt until it gets better or overall we get worse
when we go ahead and check everything else out again.
Can add a safety check in life every 30 ticks or so go ahead and check every organ again but I don't think it's needed.
Conflicts:
code/modules/mob/living/carbon/human/human_defines.dm
code/modules/mob/living/carbon/human/life.dm
code/modules/organs/organ.dm
* adding a 'restore_all_organs' function to living creatures
* adding a 'restore_blood_loss' function to humans
* fixing changeling stasis power to heal organ and blood damage
* fixing adming rejuvinate verb to fix organ and blood damage
Conflicts:
code/modules/mob/living/carbon/human/human_damage.dm
code/modules/organs/organ_external.dm
html/changelog.html
Worked with Neca, he wanted some things changed, Nerfed dionea's
regeneration by removing their ability to regenerate from toxin damage,
making plant-b-gone even more effective.
Cryokinesis was nerfed due to its ability to ensure death to anyone who
does not have access to medical treatment.
Before: AI's on new APC system would constantly add more and more power usage to the APC
After: AI's no longer handle their power consumption, that has been pushed off to an /obj/machinery/ai_powersupply dummy object which will process the power usage. This is much cleaner because machinery objects are already processed properly for the new system and keeps us from having to rewrite a bunch of AI code to bring the AI in line with how the new APC system works.
Conflicts:
code/modules/mob/living/silicon/ai/ai.dm
With new APC zone methods having non-machines use_power in their master_contrller called processes means
that they don't update the zone's flag to recalculate power usage and will continue to increase the
per-tick power usage each tick. AI should be the only problem with this unless robutts have a life() tick
to use_power on the area when inside a charger or something really stupid.
Before: Every tick each HUD item would recalculate and redo images for every mob in view. For items like the secHUD where we're transversing implants and the various records this gets very expensive.
After: Mobs use their hud_list variable to store varius huditem images, when conditions change for those specific huditem images it updates the specific ones on demand. As a backup every 30 ticks or so the mob will update all of their hud_list.
Also: moved proc/RoundHealth() from 2 seperate locations into __HELPERS/mobs.dm
Conflicts:
code/__HELPERS/mobs.dm
code/game/objects/items/weapons/implants/implanter.dm
code/modules/mob/dead/observer/observer.dm
code/modules/mob/living/carbon/human/human_damage.dm
code/modules/mob/living/carbon/human/life.dm
code/modules/mob/living/living.dm
code/modules/mob/living/living_defines.dm
code/modules/mob/living/silicon/silicon.dm
code/modules/virus2/helpers.dm
code/setup.dm
icons/mob/hud.dmi
We won't regenerate the list for Manifests every tick while viewing the manifest, instead we have a global variable for it PDA_Manifest that we Cut() if there is a change to the manifest then when the next player goes to view the manifest on their PDA it will recreate the list that one time.
Some sections of the PDA will no longer auto-refresh every tick because...well that's dumb.
Modes that will no longer autoupdate at all: Viewing medical/sec records, viewing notes (will update when you change them of course), and the station alert menu.
Modes that will only autoupdate every 5 ticks: APC list (Because it's a huge fuck off list), the manifest, mulebots and secbots screens, supply requests/orders, and janitor supply locator)
Some other things that I just can't remember right now.
Conflicts:
code/defines/obj.dm