Commit Graph

70 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
xxalpha
4644e99aa7 Changed bloodcrawl to be a spell.
Changed blood crawl to be a spell.

BLOOOOD
2015-08-31 16:24:27 +01:00
Razharas
b42aa8238f Merge pull request #9816 from Sabbat/SabbatArmorRune
Armor rune updated to allow multiple choices based on what you are we…
2015-07-05 05:48:58 +03: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
Sabbat
ecc830118f Armor rune updated to allow multiple choices based on what you are wearing or holding. Adds FUN.
Some nerfed versions of wizard spells can be used by the cult in exchange for unique clothing, these spells require the cult robes or armor in order to use. No armor choices are mandatory you will always have the option of the default choice if all you want is the sword and armor/etc. They are just extra choices for FUN.

"Zealot": Default armor rune. If none of the required clothing is worn this will be chosen automatically. Is the same as ever.
"Summoner": If you are wearing the wizard robe and hat when using the armor rune this choice will be available. User will receive magus robes and hat and nerfed versions of the summon shard and summon shell spells.
"Traveler": Available to people wearing EVA suit and helmet. Replaces the EVA suit and helmet with the cult space suit and space helmet. Gives you a sword.
"Marauder": Available to people wearing the captain's space suit and helmet. Same as Traveler except user is given a spell of summon creature (two creatures). They can and will attack the user.
"Trickster": Available if wearing the RD's reactive teleport armor. Gives you magus robes, a wand of doors, and a nerfed version of Blink.
"Physician": Available if wearing the CMO's labcoat. Gives you a wand of death and wand of life. Represents the CMO's ability to grant or take life, as a doctor.

All of the wands can easily be lost to non-cultists and have the normal limited charges. (Wand of death and life only have 2 and 4 charges respectively.) All spells require the cult robes or space suit, normal armor will not work for casting them.

Like I said, can easily be updated to allow more clothing or items to give the user certain things. I was thinking things like hand teleporter in exchange for teleport spell. That kind of thing. The possibilities are endless.
2015-06-06 02:48:19 -07:00
Cuboos
fcc18020a9 Wizard Sounds has the update. Been a bit since i've done a commit, so forgive me if i did this wrong. Also added the third title song, there a lot of agreement on what to do so i'll just add it as is, if a change needs to be made i'll do it later. 2015-05-29 20:29:37 -07:00
AnturK
e2c869bc77 - Adds generic action and action buttons system 2015-04-11 17:06:43 +02:00
AnturK
6fef7fefea - adds LoS obstacle check
- some sanity checks
- Removes the blowback, now the spell just fizzles harmlessly
2015-03-25 21:44:19 +01:00
AnturK
c7a93d2e6e Adds Lightning Bolt spell 2015-03-24 22:15:22 +01:00
Iamgoofball
9a1036d43b Fixes #6991 2015-02-03 20:26:58 -08:00
tkdrg
7de9a6e1ca Merge pull request #6990 from Incoming5643/only_you_can_prevent_horrific_floating_brains
Magic Mania 1.83: Attack of the Flying Invisible Magic Brains!
2015-01-20 20:20:07 -03:00
Incoming
c46cefd8ff Locks up teleportation spells behind a var, nonabstract_req, that keeps pAI and brain mobs from leaving their respective jail objects.
The crew is none the less emphatically warned of the hilarious danger of putting magic brains in MMIs.
2015-01-11 22:02:19 -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
Firecage
6c7af5eb32 SPANCLASSES!!!!! 2014-08-26 09:52:13 +02:00
paprka
d992c907c6 goodbye rigsuits my old friends 2014-07-29 11:43:34 -07:00
Rolan7
1a1bc162ec Fixes a dreadful typo I made in #3949 where wizards couldn't cast spells unless they were muzzled...
Embarassing.
2014-07-02 16:14:10 -04:00
Rolan7
7decfe8621 Merge branch 'master' of https://github.com/tgstation/-tg-station into MidJuneBugfixes
Conflicts:
	code/modules/mob/living/carbon/carbon.dm
2014-06-21 09:00:21 -04:00
Rolan7
98367cb162 Changelings can use hivechat while muzzled.
Monkey-lings can use hivechat.
Lings can return to human form even if monkeyed through genetics.
One-line fix for Destroying Angels (..() wasn't being called)
Spelling correction in Destroying Angel description
2014-06-17 00:13:56 -04:00
Alex
901081fc8f Merge pull request #3924 from Cheridan/stupidfuckingfireballs
Gives spells tablepass
2014-06-16 10:45:03 +01:00
Cheridan
3f1837d21d Gives spells tablepass
hurhurrrrhrurhurh lets make these things that act like projectiles but aren't at all hgluhbglbuhglbuhgbluhguhlgubhgblhhblgbh
2014-06-13 23:01:28 -05:00
Cheridan
b80e9eda57 Nar-Sie update 2014-06-11 14:19:58 -05:00
Cheridan
38ab0be4ad Spells are now anchored.
Space Carp and Bears now take damage from high temperatures.
2014-05-19 15:06:54 -05:00
MrPerson
f1645bcf64 Fixed a serious as fuck bug where wizard spells don't recharge 2014-04-01 05:56:06 -07:00
MrPerson
1fa3dbde0c Make ei nath not destroy brains
Also small tweaks to make spells GC if you use the spellremove() proc.
2014-03-26 08:38:26 -07:00
Perakp
88f62dbfa7 small mime fixes
- mime wall doesn’t disrupt sounds no more
- you can do mime walls even while wearing a muzzle
2014-03-22 12:04:04 +02:00
MrPerson
9eee3e5067 First pass at a qdel() garbage collection system for tgstation
Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.

New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.

ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.
2014-02-23 14:55:12 -08:00
Perakp
6ae1a18970 - Destroying a mindswapper's old body won't destroy the spells.
- Reverts a non-fun change to silly spellcasters.
- Mime's spells are bound to the mob. They do not transfer and can not be lost in mindswap.
2014-01-10 20:04:54 +02:00
Perakp
8ba1e8cd33 - Moves spells from the mob to the mind.
- Construct spells are an exception.
- Spells are transferred whenever a mind is transferred: cloning, pod cloning, borging, staff of changing.
- Spells are not transferred when you create a new mind for a new mob: soul stones, golems, respawns.
- To my surprise, this did not fix the issue where a mind-swapped wizard loses their spells when their original body is destroyed. I do not know why this happens.
- Non-human mobs can't use spells by default. Varedit spell.human_req to do that.
2014-01-10 15:59:55 +02:00
Cheridan
0102191bbc Merge pull request #2247 from Giacom/blinkyoself
Changed blink to only spawn a single static smoke cloud.
2014-01-07 08:28:06 -08:00
Giacomand
3fbeebfb6e Changed blink to only spawn a single static smoke cloud.
Fixed blink not triggering the AI turrets.
2014-01-05 20:41:06 +00:00
Incoming
50838d701d Adds attack logging to learning spells from one time use spellbooks and casting of spells. 2014-01-03 17:40:32 -05:00
Giacom
0cd059432e Merge pull request #2135 from ChuckTheSheep/patch-2
Fixed an oversight in Wizard-Spell targeting code
2014-01-02 10:33:27 -08:00
ChuckTheSheep
56059f67c3 Update spell.dm 2013-12-24 09:31:00 -05:00
ChuckTheSheep
4a59eca9ba Fixed an oversight in Wizard-Spell targeting code
Added an extra safety check to check if targets selected via inputs were actually in range. Previously someone could open a bunch of inputs and activate them from what ever range.
2013-12-23 18:42:15 -05:00
Perakp
0d1ba1eccf Changes mime abilities into spells. Admins can now give these from the 'give spell' menu. Unlike previous mime abilities, these are not transferred when a mime is cloned. 2013-12-21 20:54:07 +02:00
Ricotez
bf58d406a5 Merge pull request #1450 from Incoming5643/wizardspells2
Quickened Spells (ready to merge edition)
2013-09-25 16:01:26 -07:00
supersayu
475042a212 Click code rework
Fixes #646, #579, #863

Completely redoes the click code.  Moves all click related code into code/_onclick for reference.  Also moves hud datum code and all the screen object code I could find into code/_onclick/hud, as it is related.  Item attack(), attackby(), afterattack(), and attack_self() have been moved into item_attack.dm for consistency.

Completely removes dummy objects and adds atom.Adjacent(user).  This proc checks for border items and anything marked with throwpass for determining whether or not you can reach a given square.  A turf helper, ClickCross(), was added to facilitate this.

Removes the monolithic Atom.Click() proc in favor of an overridable click handler attached to mobs.  Click code no longer uses the : path operator as a consequence, and mob/lastDblClick has been moved to Client/next_click.  A few end arounds were necessary (screen objects, buildmode, and spells), but this has been handled by repurposing Atom.Click(); if you have special click code, insert it in the object's Click() function and return 1 to prevent normal processing.

This update adds support for attack_ghost(); the previous "new" click handler had support for it but was never finished.  I have taken the liberty of letting ghosts click portals, the gateway, and the teleporter to jump to the intended target square, and kept the previous default action of examine()ing every damn thing you click.  It is to be suggested that you could do more with this proc when ghost interactions are enabled.

This update also adds support for double clicking.  It is currently only used for ghosts and AIs, because the original (first) click still registers normally.  For both of these, double clicking a square will jump you to it, and double clicking a mob will follow it.  In the case of ghosts, double clicking bots and the singularity will also set you following it; if you double click your own corpse, you will re-enter it; this also works if your body is in a closet, sleeper, DNA scanner, etc.  Default mobs ignore double clicks as normal.

-- NOTE --

There are two flags which were previously unused or misused by click code: USEDELAY and NODELAY.  Ostensibly, USEDELAY would double the normal 1sec delay, and NODELAY would remove it.

Using either of these flags as intended would significantly affect the timing of the game.  In particular, USEDELAY is currently applied to guns and about everything else that acts at range.  I am adding USEDELAY as a half-second increase for now, but I have not put a significant amount of thought into it.  I considered lowering the normal 1sec delay to .8sec to balance it, but the consequences of that on combat involve more calculations than I care to make.

NODELAY seems to never have been used, and I did not implement it, but I could do so trivially.
2013-09-17 18:15:54 -04:00
Incoming
6cf018d5a2 Reworked the equation so that you gain a constant cooldown reduction per rank
Additionally all spells can now use all 5 spell points now (though the functionality to have spells that don't follow this rule is still there).
The new variable "cooldown_min" defines (in deciseconds) what the cooldown should be if all 5 spell points are used on it.
For example if you had a 100 charge_max and a 60 cooldown_min, every rank used on that spell would reduce charge_max by 10
Specifics of how the cooldown is affected for each spell has been commented in
2013-09-14 17:50:34 -04:00
Incoming
e6af82a2e5 Extra charges can now be used to reduce the cool down of a wizard's spells. This effect can stack to different levels depending on the spell. 2013-09-13 17:54:13 -04:00
Ikarrus
1518d285e7 Standardized spelling of all instances of "Centcom"
Centcomm/CentComm -> Centcom
centcomm -> centcom
2013-06-17 20:49:01 -06:00
aranclanos@hotmail.com
47ba70aec9 Fixes issue 1365 - Spells not working for nonhumans mobs.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5811 316c924e-a436-60f5-8080-3fe189b3f50e
2013-03-06 01:40:48 +00:00
petethegoat@gmail.com
58c7f79398 Moved
var/obj/item/weapon/back
var/obj/item/clothing/mask/wear_mask
var/obj/item/weapon/tank/internal

from /mob to /mob/living/carbon.

/mob/proc/abiotic() no longer does any extra checks even if full_body == 1.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5722 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-17 18:53:09 +00:00
johnsonmt88@gmail.com
b86d90c6c2 Couple of bugfixes:
Wizards can no longer cast spells when muzzled. Fixes issue 843.

You can no longer take bags of holding or mechs to the clown planet. Fixes issue 1061.

Removed the infared sensor from the autolathe construct list. Fixes issue 1092.
- The infared sensor already does nothing, the code for it seems to have been removed ages ago, so there's no harm in doing this.
- Commenting out the define caused a few problems that I couldn't quite figure out. I'll leave it for now with a warning.

Removed the ability for pAI's to set arrest status. Dead players really shouldn't be allowed to grief people like that. Fixes issue 1093.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5060 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-14 01:17:40 +00:00
elly1989@rocketmail.com
4d9876fd65 Fixes issues with pen bbcode. Replacetext did not work correctly after I changed text2list - (It was missing 'needles' at the beginning of 'haystacks').
>dd_replacetext and dd_replacetext_case are now replacetext and replacetextEx respectively.
>replacetext and replacetextEx works using strings only; it doesn't convert it into a list and then back into a string.

Fixes some dumb-dumbs in textlist and text2listEx
> "<" where there should be a "<="
> no else case for when the separator is longer than the text (causing empty lists to be returned)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4971 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-27 21:21:17 +00:00
d_h2005@yahoo.com
60bce6c53b -Adds a new wizard artifact, the gem-encrusted hardsuit. Attack protection is equal to the highest values of robes + normal rig suit, and it allows spellcasting like a normal set of robes. Maybe now wizards can stop dying after blinking into space/teleporting to Borg Deathsquad Arrived.
And hopefully they WON'T use it to explore the derelict all around every round. We'll see.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4794 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-02 05:34:03 +00:00
giacomand@gmail.com
4595e70d27 Fixed Issue 897
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4654 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-08 07:04:22 +00:00
giacomand@gmail.com
0b0719f2bb -Made wizard require at least 20 players, instead of any. This is hopefully stop a low pop wizard from killing the whole crew and not calling the shuttle until an admin intervenes.
-Made nuke ops require at least 20 players. I did this because 15 wasn't low enough and it is a 5 heavily manned organized team vs 10 crew members who are just going along their own business.
-Made the spells only target living mobs. This was because the spells were listing the AI eye as a target.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4573 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-28 11:24:59 +00:00
baloh.matevz
44fb70ffd4 - Changed all "male" and "female" assignments to use the constants MALE and FEMALE.
- Added a message_admins() message which is sent if a character setup mismatch is detected to help diagnose the problem.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4496 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-19 17:56:51 +00:00
elly1989@rocketmail.com
4073ac9b00 Replaced all 'file.extension' references with 'relativepath/file.extension' using a script by thvortex of ss13-daedalus.
All credits to the author for this handy little script.
I Committed the modified python script to tool directory. Although it needs to be in the root folder of your repo to work.

To notice the improved compile times, in dreammaker go to Build > Preferences > and untick "automatically set file_dir for subfolders"

If this commit inteferes with any large projects just revert it, do your thing, then rerun the script. Easy-peasy.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4488 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-18 16:33:40 +00:00