Commit Graph

61 Commits

Author SHA1 Message Date
phil235
d3ee910211 Makes effect system code more OOP.
obj/effect/effect is now renamed obj/effect/particle_effect for better usability.
datum/effect/system and /datum/effect/effect/system are now both /datum/effect_system.
Fixes a bug where wall mounted igniters (and other spark producing objects) didn't produce sparks sometimes.
Moved explosion_particles.dm into the effect_system folder, because it has effect_systems code.
2015-10-21 23:28:29 +02:00
phil235
47909d525f Changes smoke to behave more like foam. Each covered tile has one smoke cloud. This makes smoke clouds much less random, especially in terms of reagent application.
Also smoke reaction now uses the TOUCH method instead of VAPOR, to differentiate smoke and foam. Mob without internals or gas masks also ingests reagents in the smoke.
Moved nanofrost smoke code to effects/effect_system/effects_smoke.dm
2015-10-15 21:52:37 +02:00
phil235
2fd2f96238 Simplified update_mutations_overlay(), we no longer rebuild the entire mutation layer with all mutations every time we get or lose a mutation. I reintroduced in on_acquiring and on_losing some code similar to the old lose_indication gain_indication procs.
Fixed lesser form changeling, when humanized via dna injector, the ling no longer keeps its Human Form power.

Simplified the racemut trick in humanize() and monkeyize().

Dna now gets qdel'd, just like reagents, when the mob gets qdel'd.

Some tiny fixes here and there.

Added a changelog.
2015-09-22 02:14:37 +02:00
phil235
f90ee4aa8c - Fixed monkey starting with no dna.
- Fixed bugs with monkeyize/humanize: 7803 (humanized monkey nobloodtype)
- Fixes 9298 monkeyed ling have troubles humanizing themself (already fixed?)
- Fixes despawning clothes when monkeyizing. 11855
- Replaced check_dna_integrity proc by simpler has_dna proc when required.
- created set_species() proc
- fixed space retrovirus not transfering SE (despite having a domutcheck()). Still need to check if it needs a name = real_name.
- I renamed mecha/var/dna to dna_lock to avoid confusion
- I renamed an armor var in a species proc to armor_block to avoid confusion with species/var/armor.
- I removed many if(dna) checks in lots of files.
- I removed duplicate defense procs between human/proc/X and dna.species/proc/X since dna is now always set.
- Anatomic panacea from changeling removes alien embryo correctly. 6247
- Fixes runtime when trying to put dna-less brain mmi into a dnalocked mech.
- Removed carbon/var/list/features, we now only have dna.features and prefs.features
- Remove hulk mutation from lizards and other species (Fixed 6413); only real humans can acquire hulk. (less work on sprites for each ones, fixes lizard tail not in hulk color)
- Fixes cloning not setting up correctly dna UE and dna.real_name
- I fixed the issue with sucked+cloned ling being unable to absorb
- I fixed issue with changeling proc checking if they have the dna already not working.
- Fixed 4095, low health hulk with DAA getting stuck in loop of acquiring/losing hulk.
- I added a second layer for mutations to differientate mutations that go below and above the body layer (Fixes 7858)
- Fixes 10048, the transform to initial appearence button was fucking up the dna.

- Fixes cloning not setting up correctly dna UE and dna.real_name
- Fixed the issue with sucked+cloned ling being unable to absorb
- Fixed issue with changeling proc checking if they have the dna already not working.
- Fixed 4095, low health hulk with DAA getting stuck in loop of acquiring/losing hulk.
- Added a second layer for mutations to differientate mutations that go below and above the body layer (Fixes 7858)
- Fixes 10048, the transform to initial appearence button was fucking up the dna.
2015-09-19 22:18:28 +02:00
bear1ake
f697ae90f5 removes a bunch of .0 2015-09-10 20:57:30 +09:00
duncathan
51c09f16bf makes all Destroy()'s return properly 2015-08-31 00:21:01 -06:00
Ikarrus
a949c80fee Fixes Race Swap Runtime
- Fixes Race Swap Runtime
- Staff of change now assigns lizard name when appropriate
2015-07-06 21:47:30 -06:00
Ikarrus
5e50b2b982 Update and Changelog
Lizard names are now "name1-name2"
2015-07-05 22:20:00 -06:00
Ikarrus
b0cfaf401f Random Names for Lizards
Lizards now have their own list of names to pull from when randomizing their names.
2015-07-05 18:35:56 -06:00
Cheridan
d36c01412f Merge pull request #10238 from Incoming5643/catgirls2015
Catgirls 2015
2015-06-29 21:44:39 -05:00
Incoming5643
2c9401fbc0 Whoops almost killed the miners with cats 2015-06-28 19:44:44 -04:00
Incoming
bb8471ad3b Adds a catgirls version of cursed items
Apologizes for nothing
:3
2015-06-28 15:27:01 -04:00
phil235
b0cd6d34b1 Lots of work on acids, smoke, foam, reagents reaction() proc.
- fixed the fraction argument in reaction(...., INGESTED, fraction) so the proper amounts of each reagent react, not all of it.
- slight optimization of datum/reagents/reaction()
- small optimization /datum/reagent/proc/reaction_mob
- the smoke's reagents no longer do direct transfer upon crossed()/move() but uses "reagents.reaction( mob, TOUCH)" only.
- fixes no ingesting smoke if it's in the dark.
- removed block gas smoke effect flag from clown mask and other non "actual" gas mask.
- refactor how protection against touched chems being absorbed is done. get_permeability_protection() to get that protection. No more

simple RNG get touched or not, now the amount that touches you depends on your protection and the volume in question.
- changes acid_act to take volume into account.
- chem_smoke now uses process() just like foam, we remove the reaction from crossed() and Move(), it's only done in process() now.
- optimization of effect/smoke, OOP! And now all smoke effects use objprocessing instead of shitty sleep/spawn
- removed mob var/coughedtime.
- add a volume check to item/acid_act(), there's a threshold to be able to melt and then a probability to melt (acidpwr&volume).
- greatly lowered the amount of reagent in the smoke from dead blobspore (so the volume isn't enough for melting)
- human/acid_act(): damage to limbs depends on acidpwr&volume.
- fixes metalfoam not working.
- smoke powder: only one start() call.
- Amound of smoke objects depends on amount of smoke recipe created.
- Adds an argument to add_reagent() to block automatic call of handle_reaction()
- When using reagents/proc/trans_to(), reactions are now only handled after every reagent is transfered and not before.
- Amount of smoke objects depends on amount of smoke reagent created.
- radius of foam reaction depends on amount of foam reagent created.
- The amount of other reagents inside the smoke/foam decides the life expectancy of the effect.
- The amount of reagents in each small smoke cloud/foam cell depends on the amount of other reagents in the initial reaction but also

how much smoke/foam was created (more smoke means dilution of the reagents).
- smoke/foam's reagent reaction on mob decreases the life expectancy of the effect (to avoid reagent duplication)
- The amount of reagent reacting with atoms is less if the life expectancy is high.(to avoid reagent duplication)
- The amount of movement from the smoke now depends on the number of smoke clouds created.
- removing some useless code in chem_grenade/prime().
- When calling human/acid_act(), item acid melting chance lowers after each each successful melt in the list, some of the acid is

"used" to melt that item so the next items have a lower chance to melt (to make melting every clothing harder).
- remove the banned reagent list from sprays, not needed anymore now that acid is nerfed.
- chem_grenade reaction, if there's no reagent left after reaction (smoke/foam/etc, reagents cleared) you don't get the steam effect

and immediate reaction with all atoms around the grenade explosion. (Fixes foam cleaner grenade deleting bloodstains around it as soon

as the grenade explodes, even if the foam hasn't reached the tile yet).
- melted storage items now drop their content instead of deleting everything.
2015-06-22 00:35:24 +02:00
phil235
d275152a96 Fixes the wizard magic mirror race change.
Fixes the "race swap" wizard event.
2015-06-15 17:01:07 +02:00
Incoming
09f71f7f94 removes the "whoops you're probably going to die by no fault of your own!" races from the staff/wand of change with a new var: dangerous_existence. Currently lists shadowpeople, shadowlings and plasmamen.
Additionally adds that protection to the change races summon events event so the entire station doesn't have a change of exploding into burning death skeletons with no hope for survival.

Adds plasmamen to the blacklist for slime mutation toxin.
2015-05-09 21:04:59 -04:00
Jordie
562766bdb0 Merge pull request #9129 from Incoming5643/begone_ye_jellies
Some Mutantrace Housekeeping
2015-05-02 23:59:15 +10:00
MrStonedOne
bd6d51a0b5 Massive MC and subsystem rewrite
MC:
	No longer tracks a subsystem's cpu usage. This was basically worthless and took up space on the stat panel
	Can calculate wait down to a tenth of a decisecond to make it fps/world.ticklag agnostic
	Now allows subsystems to have a dynamic wait, that is based on a ratio of how long that subsystem has been taking to process(cost). (This system allows for upper and lower bounds, and an changeable cost delta for each subsystem)
	MC can now be told to init a zlevel

All Subsystems:
	Stats panel now allows child subsystems to pass it a message to add to its stats entry. All subsystems have been moved over to this system - This should cut down on subsystems having to copy and paste the stats proc in order to add to it
	All subsystems now properlly handle being given a zlevel in their init proc

Subsystem changes:
	Air:
		Added air to the dynamic wait subsystem. upper bound: 50, lower bound: 5, cost delta: 3 times process cost
		Air now fires 4 times faster when it can do so without lagging things up
		Pipenet has been merged into air
		Atmos machinery now processes with process_atmos(), ticked by air, not machinery.
		Hotspots (the fire object) are now object pooled
	Pipenet:
		Deleted, added to air
	Machinery:
		Moved all atmos calcualtions in all objects's process() to process_atmos().
	Lighting:
		Added Lighting to the dynamic wait subsystem. upper bound: 20, lower bound: 5, cost delta: 3 times process cost
	Ticker:
		Fixed ticker not updating the lobby panel when game start delayed
		Fixed the game start timer updating rapidly from queued fires when game start delay is removed
	Garbage/qdel:
		qdel will now limit its process time to 2ds a fire.
		qdel can now be given hints as a return to Destroy() as to what should be done with the object.
		the options are:
			queue: (default) this is the normal behavior.
			letmelive: old default to non-null/zero. does nothing with the object
			iwillgc: functionally the same as above, mainly to let people working with objects know that the object will not be queued for GC checking
			harddel: this will queue the object to be deleted without storing a soft reference, mainly to save locate() processing time.
			harddel_now: this will del() the object. To allow for a clean removal of every del() not in qdel
		All objects have been updated to the new system, harddel and iwillgc was not added to any new objects.
		Fixed some objects not GCing because they didn't properlly clear references in Destory()
		Fixed some objects getting qdel'ed preventing other objects from getting GCed because they did not null their reference to that object.
2015-04-29 02:00:25 -07:00
Incoming
f59c01e721 sets hardset_dna to clear exotic blood on race changes
sets every instance of race changes to use hardset_dna instead of directly replacing the datum (needs more testing to be sure I didn't break shit)
removes the invisible man race (aka the generic) and shadowlings from the new green slime mutation toxin while I'm in the area
2015-04-23 12:35:37 -04:00
AnturK
e2c869bc77 - Adds generic action and action buttons system 2015-04-11 17:06:43 +02:00
Jordie
d78ca0c57a Merge pull request #8566 from Incoming5643/literal_fun_removal
Magic Mania NaN: The Fun Ends Here
2015-03-30 01:25:52 +11:00
Incoming
50ec2f3224 Makes the ability for wizards to use summon guns, summon magic, and summon events a config option 2015-03-27 01:32:28 -04:00
MrPerson
b6c71dc50d Effect pooling
obj/effect/effect all pool themselves.
PoolOrNew() can now be passed a type and a list instead of a type and a location. In that case, the list will be passed to New() via arglist().
RCD's now delete their spark system and properly garbage collect.
2015-03-24 11:44:49 -07:00
Incoming
c474035261 *Retires Departmental Uprising to the land of admin only access like its brother fake explosion before it *Changes the mechanics of recasting summon events to only reduce the upper limit of the time between event casts (-1 minute each additional cast) as opposed to touching the lower limit as well, which led to events every 15/30 seconds which, while certainly a scene, I admit was a bit much. Casting summon events 5, 6, or 7 times will now at worst result in an event every minute.
*If a wizard round mulligans, summon events will turn off if it was used. Remember that in wizard mulligans any apprentices will need to be dead too.
2015-03-20 21:04:33 -04:00
Remie Richards
736ffafa55 Merge branch 'master' of https://github.com/tgstation/-tg-station into BlobReroll
Conflicts:
	code/game/gamemodes/blob/blobs/blob_mobs.dm
	code/game/gamemodes/blob/blobs/core.dm
2015-03-01 00:18:19 +00:00
Swag McYolosteinen
555840fc1b Merge pull request #7498 from Incoming5643/Fell_Pull_Commit_of_Orc_Slaying_+2
Magic Mania 1.85: RPG loot event
2015-02-22 11:59:09 +01:00
phil235
135293bedf Fixes object processing list by replacing "SSobj.processing.Add" by "SSobj.processing |= " to avoid having duplicated objects in the list, meaning the objects would be processed more than once per iteration.
Fixes Alien embryo processing that was processed twice.
2015-02-14 14:18:49 +01:00
Incoming
81795c81fb Adds a changelog
Adds Robustness
2015-02-09 16:43:18 -05:00
Remie Richards
5b2d3ceada Allows overminds to reroll their chemical at a cost, fixes blob cores being invisible, repaths blob mobs to /hostile/blob 2015-02-08 01:22:51 +00:00
Incoming
ad07210e99 Accidentally set the maximum force of all weapons to 5 #justwizbiz 2015-02-01 14:07:49 -05:00
Incoming
f8b6b53867 Adds the RPG loot wizard event at an uncommon (3) weight
All items in the world at the time of event gain a small bonus/penalty to force and throwforce, and a corresponding silly name.

Taking all suggestions for more prefixes and suffixes. Prefixes should imply a positive or negative quality, but suffixes shouldn't.
2015-02-01 13:31:29 -05:00
Incoming
071e2aee3c fixes conflicts
swaps appretice and wizard icons
2015-01-16 13:45:36 -05:00
Incoming
6f0a50381c Adds an antag hud system for wizards.
The huds won't be activated when there's just one wizard, but when another magic user is brought in the huds will appear for both of them to allow for easy identification in the face of rampant mindswaps and/or identity shinanagans and/or getting turned into a cow by a staff of change.

The huds are on by default in ragin' mages.
2015-01-13 00:14:05 -05:00
phil235
a55e6a70be Fixes malf AI lockdown affecting doors on z levels other than station and mining.
Replaces a lot of z level numbers in code by their respective defines.
Adding a define for the Mining asteroid z level.
2015-01-11 15:39:32 +01:00
carnie
a029a49392 SubSystem rewrite
Misc:

+Fixes unreported issue with initializing lighting on a specific zlevel

+Fixes two similar issues with moveElement and moveRange. Where fromIndex or toIndex could be adjusted incorrectly in certain conditions. Potentially causing bad-sorts, or out of bound errors.

+Rewrites listclearnulls(list/L) to no longer iterate through L.len elements for every null in the list (plus 1). i.e. went from L.len*(number_of_nulls+1) list-element reads (best-case), to L.len list-element reads (worst-case)

+New proc/getElementByVar(list/L, varname, value) which finds the first datum in a list, with a variable named varname, which equals value. You can also feed it atoms instead of lists due to the way the in operator functions.

+Fixes an unreported issue with Yota's list2text rewrite. Under certain conditions, the first element would not be converted into a string. Causing type-mismatch runtimes.

+New global map_ready variable. This is not fully implemented yet, but will be used to avoid duplicate calls to initialize() for map objects.

+All turfs now maintain references to all lights currently illuminating them. This will mean higher memory use unfortunately, due to the huge number of turfs. However, it will speed up updateAffectingLights significantly. I've used list husbandry to reduce baseline memory usage, so it shouldn't be any worse than some past atmos modifications memory-wise.

-Removed 'quadratic lighting', can add this back at some point. Sorry.

+modified the way lum() works slightly, to allow turfs to have overridden delta-lumen. i.e. space cannot be illuminated more than its default ambiance. This allowed removal of some iffy special-snowflake lighting areas implemented by somebody else.

+Lighting images in the dmi can now use arbitrary naming schemes. It is reliant on order now. This allows the dmi to be replaced by simply dropping in a new dmi.

-Removed all subtypes of /area/shuttle. Shuttles now create duplicate 'rooms' of /area/shuttle. (More on this later). This will conflict with most maps. Guide on how to fix to follow.

+All verbs/tools relating to world.tick_lag were refactored to use world.fps. However old config text for setting tick_lag will still work (it converts the value to fps for you)

+MC stats improved using smoothing. They now have their own tab so they dont get in the way when you're playing as an admin.

-removed the push_mob_back stuff due to conflicting changes. Sorry Giacom.

_OK, NOW THE ACTUAL INTERESTING STUFF_

Following systems moved over to subsystem datums:
air_master
garbage_manager
lighting_controller
process_mobs (aka Life())
nanomanager
power
sun
pipenets
AFK kick loops
shuttle_controller (aka emergency shuttle/pods), supply_shuttle and other shuttles
voting
bots
radio
diseases
events
jobs
objects
ticker

Subsystems hooks and variables should be commented fairly in-depth. If anything isn't particularly clear, please make an issue.

Many system-specific global variables have been refactored into

All tickers which previously used world.timeofday now use world.time

some subsystems can iterate before round start. this resolves the issue with votes not working pregame
2014-12-31 13:25:41 +00:00
Cheridan
71385308de Merge pull request #6387 from Incoming5643/goodbye_my_children
Magic Mania 1.8: Summon Spells Rework and The Challenge System
2014-12-26 16:29:36 -06:00
paprka
2371e2ebd8 renames chef to cook 2014-12-22 17:02:06 -08:00
Incoming
0dd71178c4 Magic Mania 1.8: Summon Spells Rework and The Challenge System
Summon Guns and Summon Magic are no longer traditional spells.

When cast by the wizard, he gains a charge for his spell book but no antagonists are created, essentially making his life harder for more power. Both spells can only be cast once like this for a maximum of 2 extra charges.

When cast by very rare chance in summon events, no charages are gained, and there's a 10% chance of someone becoming a survivor, down from 25%. No charges are gained if this happens.

When cast by a badmin they will be given a choice of not creating antags, creating antags at the old chance, or just going in stupid and giving everyone antag.
2014-12-14 22:07:00 -05:00
AnturK
d28e56e5af Fix for #5247 2014-10-15 11:35:53 +02:00
Jordie0608
9dfd0489d1 Renames Fake Explosion to Fake Nuclear Explosion 2014-10-11 03:06:28 +11:00
Cheridan
08be1b34eb Revert "Changes a few green crosses to blue on sprites that I missed last time" 2014-10-04 19:22:10 -05:00
Cheridan
de6edfc1c6 Merge pull request #4818 from Incoming5643/summoneventfixerspecial
Magic Mania 1.75 Appendix A: lets get comparitively reasonable
2014-09-16 09:09:40 -05:00
Incoming
071f9bff0a Fixes up some silly problems with cursed items:
Things won't be called cursed cursed cursed cursed cursed cursed cursed cursed cursed cursed cursed cursed foo's anymore

Cursed Katanas can't get stuck in any other slots now

Things that destroy your ability to go into space now won't spawn on you at all if you happen to be in space when the spawning occurers, but hey don't idle in space just to avoid a luchador mask, magicarp are still a thing.
2014-09-15 19:22:25 -04:00
Cheridan
6587b56a7c Merge pull request #4765 from JJRcop/magicarp-random
Creates new "chaos magicarp" that fires a random projectile each time
2014-09-15 10:22:50 -05:00
JJRcop
97a65cfb04 Changes Shoot() in magicarp to be forwards compatible 2014-09-14 16:07:54 -04:00
Incoming
a8737f8ae4 Stops the exponential hell of petsplosion happening more than once a round it turns out we didn't need 6000 mice
Reduces the lava event from "lets slay all idlers and stop all action for 2 minutes" to "lets greviously wound all idlers and stop all action for 30 seconds"

Makes summon magic/summon guns work fine without a mob attached, this prevents a runtime and some odd messages to the admins

Makes the inviciblity text jive better.
2014-09-14 03:36:38 -04:00
Iamgoofball
af7be3cfdc Update departmentrevolt.dm 2014-09-12 16:41:37 -07:00
Iamgoofball
a15fc94460 Update departmentrevolt.dm 2014-09-12 15:56:45 -07:00
JJRcop
7b0306f7b1 Moved magicarp ammo reroll to new carp called "chaos magicarp", which has 75 health and a 5% chance to spawn instead of a normal magicarp 2014-09-10 14:20:03 -04:00
JJRcop
6bc47e8369 Magicarp now fires a random projectile each time, instead of the same one randomized on New()
Magicarp now randomizes from typesof(initial(projectiletype)) instead of from typesof(/obj/item/projectile/magic) to allow future carps that inherit it to fire whatever they want without changing the code
2014-09-09 19:07:44 -04:00
Iamgoofball
48d3f17ecf グレー marée estación ar fud an google translate
multilingual grey tides
2014-09-08 18:49:45 -07:00