Commit Graph

30 Commits

Author SHA1 Message Date
c0 1dea7ac78b Defines 2016-03-02 00:23:50 +03:00
c0 af5276467b Allows aliens/monkeys to use magic and arm-mounted guns 2016-03-01 23:52:58 +03:00
Firecage 754491ce4c Changes relatives paths into absolute paths and makes some if()'s better 2016-01-17 01:36:56 +02:00
KorPhaeron eeb2653070 Dual Wield 2015-12-20 00:22:35 -06:00
Razharas 93b9f96cfa Merge pull request #11341 from bgobandit/suicideisnotajoke
Adds/tweaks several suicide messages.
2015-09-06 06:42:00 +03:00
bgobandit ca34015b85 Removes minibomb suicide message. Fixes wand suicide message. 2015-09-02 23:07:40 -04:00
duncathan 51c09f16bf makes all Destroy()'s return properly 2015-08-31 00:21:01 -06:00
Firecage 4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02: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
dannno a0b2e72b4c gun suicide messages 2015-02-01 11:04:40 -05:00
Cheridan 793243763d Merge pull request #7185 from paprka/inhandrefactor
Inhand refactor
2015-01-20 22:16:06 -06:00
Cheridan 29af018796 Some fixes
-Fixes magic wands having electronic firing pins, now have FANCY CRYSTAL SHARDS
-Fixes grammer issue.
-Fixes code not compiling due to outdated proc
2015-01-20 21:41:36 -06:00
paprka f58096575c refactors guns 2015-01-18 23:28:24 -08:00
paprka 1b6831dab1 splits gun.dmi up into multiple files 2015-01-17 15:34:30 -08: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
Menshin 05378c014d * fixes #3765 (shotguns sawing off)
* fixes #994 (clumsy guns firing)
* fixes #6443 (laser tags firing without vest on)
* fixes #6262 (optimizing revolver reloading)
2014-12-21 01:35:49 +01:00
Menshin bdca196312 Fix wands losing a charge even when no shot was actually fired (#4588). 2014-08-27 19:54:46 +02:00
Incoming c83728bba1 Magic Mania 1.6: Baby's Day Out
*Adds unique sprites for the staves of door creation and chaos
**Item sprites
**Inhands
**Onbacks

*Fixes #3232 in a way that isn't terrible

*Basically this is the part of 1.5 that should have been done back when it was added
*Please raise wizard rates :3
2014-04-17 19:35:42 -04:00
Mloc-Hibernia 8af8a43d6f Initial pass to convert LF to CRLF
Signed-off-by: Mloc-Hibernia <colmohici@gmail.com>
2014-03-24 08:53:40 +00: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
Incoming 45cf5ec20c Various Bugfixes
Fixes #2534
Fixes #2431
Fixes #2493
Fixes #2500
2014-02-01 11:29:37 -05:00
sirbayer d1a06a21dc Mysterious compile errors gone. 2014-01-06 18:49:55 -08:00
sirbayer 45cb745b6b Merge branch 'master' of https://github.com/tgstation/-tg-station into srsbsns-deadlyboolets
Conflicts:
	code/modules/projectiles/guns/magic.dm
2014-01-06 17:59:15 -08:00
sirbayer a0a73d1ab5 Jesus Christ it compiles 2013-12-30 16:30:36 -08:00
Cheridan bb9c09df46 Obsoletes flags = FPRINT | TABLEPASS*
*TABLEPASS was already totally obsolete.
FPRINT was used, but it was on virtually everything anyway.

Removes those flags from every instance where they were used. Also assigned and removed other flags where it made sense.

If it is desired, I can revive the flag as NOFPRINT, which would retain the original functionality, though inverted. That way it would be be used only  where it was intentional (holodeck items could use this for example).
2013-12-30 15:03:17 -06:00
Incoming c9f69869f2 Aranclanos Fix Omnibus
*Removes zapping oneself by attackselfing a wand, leaving clicking yourself while holding the wand the only way to do it because...
*Removes the warnings for zapping yourself with bad wands. Careful with that wand of death, kids!
*Removed some redundant lines
*Adds logging/sounds to zapping yourself
*Removed the change to wizard_continuous_rounds. It will become it's own PR
*Removed some redundant lines
*Uses the mob/living revive() proc to heal/raise people using the wand/staff of animation
2013-12-14 19:40:58 -05:00
Incoming c396c3ae8a Suggestion implimentation patch!
*Span classes the whole update
*Spellbooks no longer vanish after being used, instead used spellbooks now have various bad effects should they be attempted to learned from again (the original reader won't acidentally fall to this, as they will just say "I've already read this"). Leave em out as traps for people or properly dispose of your trash! Or...
*The charge spell can now attempt to recharge one use spellbooks so someone else can learn the spell. This only has a 20% success rate and will destroy the book should it fail (even if the book was actually unused). You can't attempt this on the wizard's spellbook
*The "staff of nothing" (functional) placeholder now uses the generic staff sprites
*Spellbooks can now be placed in bookshelves just like normal books
*The teleport spell won't yank anchored things anymore, but as a consolation it will warp the entire contents of a tile should it be targeted. The code has been tweeked so this shouldn't effect the server too bad even if large numbers of items are warped to unique locations this way
2013-12-12 00:24:51 -05:00
Incoming b7b05d53ec Code optimization and copypasta removal:
the teleport wand now uses do_teleport
the polymorph wand now uses wabbajack in both instances

You can now click on yourself while holding a wand to cast it on yourself in addition to clicking on the wand itself.

Changed how guns/magic are given out slightly. Previously no antag could get a gun/magic thing (including survivors made by the spell in the case of multicasting) but now antags who aren't the wizard or an apprentice of the wizard also get one.

Fixed a few bugs on accidentally burning charges by click in places tht wouldn't actually fire the wand/staff
2013-12-10 01:04:16 -05:00
Incoming 51d12a7512 Adds all sprites for all wands, books, and the staff of healing
Fixes an issue where someone spamming a wand might lose charges without actually firing the bolt
Removes a few missed bugtesting lines
Adds a var (variable_charges) to be disabled for wands with assured max charges for future use
2013-12-09 12:46:34 -05:00
Incoming 4ac8a4164c Summon Magic / Charge / Wands&Staffs / One time spellbooks / New Apprentice
---

Summon Magic:

This new wizard spell works much like summon guns except it instead brings the crew magical tools and weapons. There are preexisting artifacts (minus some that would cause huge confusion/balance issues) as well as new spellbooks, wands, and a staff. The chance of survivor antag is the same as summon guns.

---

Charge:

This new spell allows for the recharging of otherwise unrefillable wands, but there's a heavy chance that the total number of charges will decrease with each casting until eventually they're impossible to keep recharging. As a bonus the charge spell can also be used to charge batteries and things that run on batteries (such as energy weapons). This carries the same max charge weardown penalties however. Lastly this spell allows a wizard to charge other wizards with a grab, reseting their spell cooldown. They cannot use it to charge themselves. It has a 60 second cooldown.

The wizard cannot buy this spell himself, it only comes randomly to the crew during Summon Magic and with the new apprentice loadout.

---

Wands&Staffs:

Magic weapons have been overhauled into their own catagory so there won't be any more weirdness with batteries in staves or apparent magic resistance on things that reflect energy weapons.

Wands have been added, these wands come precharged with a number of shots that can be fired off at their leasure but cannot be recharged once emptied (unless the charge spell is used). They come in a varity of exciting flavors:

*Death: Slays instantly but has very few shots (1 to 3)
*Resurrection: Revives and/or heals instantly but has very few shots (1 to 3)
*Polymorph: Same function as the staff of change
*Teleport: Weaponized blink spell that doesn't respect space tiles and can also warp away machinery or items (but not turf)
*Door Creation: Puts easy access wooden doors in walls
*Fireball: Same function (but slightly lower damage) as the fireball spell
*Nothing: Lame and useless

Wands can also be used on the user (unlike staves) by clicking on them. Warning messages have been added to a few wands so people don't accidentally zap themselves with the wand of death unless they really want to.

Wands cannot be aquired by the wizard directly, and are only spawned during castings of summon magic.

There is also a new staff, the staff of healing, which works as a recharging version of the wand of resurrection. The new apprentice starts with one of these, and they can also be found during summon magic. The wizard cannot purchase it directly, and as a stave he could not use it on himself anyways.

---

One time spellbooks:

Found exclusively in summon magic are one time use spellbooks that can teach any player a robeless spell. Once read the book vanishes.

Books come in the following flavors:
*fireball
*smoke
*blind
*mindswap
*forcewall
*knock
*curse of the horsemen
*charge (described above)

---

New apprentice:

A fourth loadout for apprentice wizards has been added. This wizard is intended as a support role and comes with forcewall (for cover) and charge (used to keep him and the wizard well stocked in laser weaponry or to restore the wizard's cooldowns). It also comes equiped with a free Staff of Healing for keeping the wizard alive. Shoot the medic first folks.
2013-12-04 21:00:36 -05:00