-Removed the priorityqueue datum. It is now a list()
-priorityqueue/proc/insert is now a helper /proc/sorted_insert() as it may be helpful in maintaining pre-sorted lists or insertion sorts.
-Replaced priorityqueue/proc/extract_last() calls with calls to pop(), which already existed.
-Removed last few references to "bestF" (from old awful A) in lighting and MC
-Replaced a section were it'd append to the end of the returned path list and then reverse the list. Now it inserts at the start of the list.
The panel itself has been updated with subcategories and additional options. The "air regulator" option was removed because what even does that mean. The Suit Up option has been fixed, and should work properly now. Additional items include an all-access ID, RCD, flashlight, light replacer, plasteel, cable, floorbot, medbot, gas mask, and emergency air tank.
The hrefs var was moved out of global scope because that's a terrible place for something so generically named.
The Spawn Item and Spawn Canister dialogs now use a browser window instead of a pick list. This window is cached per user.
Sandbox's Spawn Airlock option gets a new interface. It allows you to pick the accesses of the new airlock, as well as its paintjob, name, glass inserts where appropriate, and an option to make the access list "require one" instead of "require all." It adds an airlock frame which can be repositioned; attack-hand-ing the airlock frame (if it has the airlock builder datum attached) will now open the window.
An administrative option has been added to the sandbox panel, which is configurable through game_options.txt. Because the item spawning uses a persistent browser window, it is susceptible to spamming. The added option forces the window closed after each item is spawned. This only affects the item and canister selection windows, and not the whole sandbox panel.
They will use the new proc autoshuttlecall() in the emergency_shuttle controller.
Instead of taking a loop on world, there's a new list, shuttle_caller_list, it includes all communication consoles and AIs.
Fixed some weird things regarding recalling the shuttle if the arriving time of the shuttle was bigger than 10 minutes.
Removed overriding of event values via feeding in an associative list into datum/round_event/New(). Instead you can do basic initializations (i.e. feed it constants) by doing new /datum/round_event{variablename=5;}(). This method is handled well by the compiler (it's the same method the maps use), so it will detect unrecognized variablenames etc.
More complex initializations for post setup() stuff can be done by accessing variables directly Event.variablename = whatever;
round_events now have a processing variable, which effectively pauses them.
Removes the old tgstation database. It has been merged into the newer feedback database.
All mentions of the old database have been replaced with the new one.
This includes updating tgstation_schema.sql and dbconfig.txt.
Removes README feedback.txt as it is now covered by the new schema.
Removes the unused forum DB stuff, including forumdbconfig.txt.
Updates the config, including both config.txt and game_options.txt. Many options have been moved into the latter.
Updates configuration.dm to reflect these changes.
Removes the config var/feature_object_spell_system as it did nothing.
The "Your server failed to establish a connection with the x database." message will now only show if you have sql_enabled.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5777 316c924e-a436-60f5-8080-3fe189b3f50e
- Added a new area proc, mob_activate, which is called by a living mob's Life(). You can use it to have mobs react differently to different areas.dm
- Used the above change to make transit areas push mobs backwards.
- Fixed the server room air alarm from freaking out.
- Reverted my change to singularities, they will now pull correctly.
- Made the wire interface screen bigger to accommodate for different fonts.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5749 316c924e-a436-60f5-8080-3fe189b3f50e
http://forums.nanotrasen.com/viewtopic.php?f=16&t=12245#p189186
Ported all the random events to Pete/Gia's event system:
>Event system now supports weighting. default is 10. a weight of 5 is half as likely as default, 20 twice as likely....etc.
>Increased the frequency of events (dust happens over 60% of the time though)
>tidied up some ninja code: ninjas now get ~5 objectives. So they are hardmode.
>made the gravity toggle into a random event
>event system now supports round-start events
>event system now supports holiday events
>event system now supports events which can only happen after the round has lasted a certain number of ticks
>event system now supports max_occurrences for events. Setting any event's max_occurrences to 0 will stop it randomly occurring
>events now support being fed associative lists inside new(). This allows you to override their variables easily.
>wormhole events no longer cause loads of lag. They are extremely deadly. wormholes should be avoided
Other:
>replaced the procs for fetching candidates for ninjas and aliums with /proc/get_candidates(be_special_flag), it returns a list of active clients with that be_special preference enabled.
>minor fixes to minds
>your memories are displayed to you at Login()
>removed aliens_allowed
>removed ninjas_allowed
>pick_n_take() is now more efficient (uses Cut() rather than Remove()
Things I added:
- Made the pandemic call ..() instead of doing the checks itself.
- Made the staff of animation use more charge.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5720 316c924e-a436-60f5-8080-3fe189b3f50e
http://forums.nanotrasen.com/viewtopic.php?f=16&t=12096
> UpdateAffectingLights() is a bit less silly. It now uses oview() to find lights which could be shining on it. It only searches a maximum of LIGHTING_MAX_LUMINOSITY_STATIC-1 away from itself, as this is all it needs to do (reducing the number of atoms it searches/lights it updates).
> UpdateAffectingLights() is called more sensibly, generally it will only be called when opacity actually changes on a lit turf (or something in a lit turf), as opposed to before where it would be called simply if something was opaque.
> Fixes a typo in cheap_hypotenuse(), it will now work correctly.
> Added circular lighting (using cheap_hypotenuse, a cheap linear approximation of pythagoras theorem). Old square lighting is toggable by commenting out #define LIGHTING_CIRCULAR
> Wall-fixed lighting will break when Move()ed. This means their lighting will not be updating whilst the singulo is on a rampage (which would cause lots of lighting updates). This should help reduce lighting updates a fair bit in such circumstances. Also the lord of darkness actually creates darkness! omg
>Halved the theoretical number of calls to UpdateAffectingLights() by turfs being deleted/created (aka replaced), by moving relevant code from New/Del into ChangeTurf(). Tidied ChangeTurf up a little.
>SpaceVines now update opacity correctly (this somewhat worries me though)
>Reduced the range of dynamic lighting effects for most objects. Fixed the bug where mob luminosity could try to go negative when dropping many held active flashlights.
>Space area no longer uses dynamic lighting. (at request)
>Fewer shades of darkness (reduced from 7 to 6) - means fewer shift_to_subarea calls and makes lower luminosity lights appear brighter
>Turfs can be luminous, removed the warnings. capped luminosity effects of turfs to a radius of 1.
>PDAS ARE NO LONGER SUNS!
>ChangeTurf() no longer replaces turfs with turfs of the same type. This means that singulos will no longer replace space with space with space over and over and over every tick
>there is a cpu-usage cap thingy on the lighting process(). It's currently set to (a ridiculously high) 98. This simply stops the process attempting to do any more work when the server is already dying. If you're feeling brave you could probably reduce further.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5650 316c924e-a436-60f5-8080-3fe189b3f50e
- Time to tidy up my old projects: Moved a few of my old, unfinished projects to unused: liquid simulation, brewing, heavy cables and logic gates/cables.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5621 316c924e-a436-60f5-8080-3fe189b3f50e
- Moved explosion capping to explosion code, overridable by setting a proc parameter, which defaults to off, obviously.
- Reduced r-walls' explosion resistance from 25 to 15. They can now be destroyed by strong bombs.
- Added liquid processing to the sun part of the MC
- Added additional calls to atmos processing to the MC. You can enable this by (manually, with the debug controller verb) enabling the fast_atmos_1 .. 3 variables in the configuration datum. The intent of this is to enable it in a few rounds to see if it is possible to make atmos calls more common.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5607 316c924e-a436-60f5-8080-3fe189b3f50e
- Added a verb that breaks all airgroups into individually processing tiles and a verb that forces a group-rejoin attempt on all airgroups. Once the verb to break all air groups is used, they will not attempt to recreate until the recreate verb is used. In other words, this is for debugging, not goofing around. Verbs available in debug verbs.
- Some atmos code standardization
- Decreased the pressure resistance of most items by a factor of 10, meaning pressure will finally actually move items around!
I also attempted to speed up air movement, but it caused runtimes and everything moved in checkered patterns and I got scared so I didn't include it in this commit.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5554 316c924e-a436-60f5-8080-3fe189b3f50e
The old one still exists, mainly so the associated admin buttons still work.
At some point I'll add a nice little panel for event stuff and remove the old procs.
event.dm is pretty well commented, and it should be pretty easy to figure it out.
Casualties of the change are space dust (which should probably be implemented separately if we want it back), the black hole event (which was awful), space ninjas (which didn't turn up), ionstorms (the non-admin ones sucked anyway) and CLANG, which I will probably add at some point, if no one else does first.
Also, I removed pierott's throat from the disease outbreak list. f that s.
Thanks to Sukasa and BS12, as my system is loosely based off of theirs.
Thanks Giacom for help with structuring and especially commenting this.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5511 316c924e-a436-60f5-8080-3fe189b3f50e
The wizard round will carry on even if the wizard dies
The malf round will carry on even if the AI dies. When the AI dies the shuttle will become callable. If the AI takesover the station or causes the station to explode, the round will end like normal.
Rev will carry on playing even when all heads or all rev heads die. The shuttle will become callable when this is true.
-Properly fixed the PDA runtime without adding special snowflakes.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5489 316c924e-a436-60f5-8080-3fe189b3f50e
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
I did find that your be special preferences, i.e: be alien, be traitor, be changeling and etc, are shared between preferences. I'll ask if this is intentional or not.
-Some minor stuff.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5175 316c924e-a436-60f5-8080-3fe189b3f50e
Before, when making a link to an admin tool, you done this:
<a href='?src=\ref[C.holder];parameter=1;>link</a>
Now, we do not need to use a reference to direct it to places like usr or usr.client.holder (or client, but you never needed src for that anyway)
usr: <a href='?_src_=usr;parameter=1;>link</a>
holder: <a href='?_src_=holder;parameter=1;>link</a>
This basically allows us to move a LOT of code outside of loops as we no longer have to create a \ref for every recipient of the message. They can all be sent identical links. A simple example of this would be in pray.dm Although it's most noticeable in the adminhelp code which is vastly simplified.
Adminhelp name spotting code thingy...whatever... looks for ckey matches first, then surnames, then forenames. This is to stop it possibly weirding out if there is a station full of "Ed"s of "Sarah"s
Prayer code no longer loads a new icon into memory every time a prayer is sent. Use image() not icon()!
key_name() no longer needs a reference for it's admin_link argument.
message_admin() pretty much doesn't need those extra arguments for finding and replacing %holder_ref%. I've got to go through all the code to check before I remove it though.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5105 316c924e-a436-60f5-8080-3fe189b3f50e
- The current, file-based ban system is now a legacy system, the use of which is strongly discouraged for servers, which are constantly online.
- Added a database-based banning system, with a new baning panel, accessible through the 'banning panel' verb. Servers, which use this new banning system, will get the new panel up even if they use the old 'unban panel' or 'display job bans' verbs. These remain there for legacy support purposes. (Panel screenshot below)
- The most notable benefits of the new system are the ability to add offline bans, meaning the person does not have to be connected for a ban to be applied to their name. The second benefit is the ability to look up all previous bans that the person had.
- The major disadvantage is the complete incompatibility between the old and new system, meaning you have to either do a lot of copy-pasting or playing around in code to sync the old system with the new one. Servers upgrading to this system might want to consider a purge of all bans, if they don't want to go through this. Due to the incompatibility, there are no transition tools provided. Please contact me (errorage/rageroro) in #coderbus for help in syncing your database. The /tg/ legacy and database systems have been synced.
- The server configuration defaults to use the legacy system, as the new one requires the database to be set up. Please hash BAN_LEGACY_SYSTEM in config.txt as explained, to use the new system. If the database connection fails, the server reverts to the legacy system.
If any bugs or errors appear with either the legacy or new ban system, please let me know ASAP. The same applies if there are any syncronization problems between the legacy and new system, resulting in banned people unbanned or unbanned people banned.
Panel screenshot:
http://www.kamletos.si/new%20ban%20panel2.PNG
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5034 316c924e-a436-60f5-8080-3fe189b3f50e
Adminhelp now loops through all clients in var/list/admins rather than every client in the world.
Both SERVER and FUN can toggle random events on/off.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5029 316c924e-a436-60f5-8080-3fe189b3f50e
SERVER HOSTS:
This commit replaces the existing admin-rank system. It is now more customizable.
Admin.txt essentially works the same as it always has. Each line should look like:
ckey - admin rank
There is now however, an admin_ranks.txt. This textfile allows you to define ranks like so:
admin rank +ADMIN +FUN +BUILD
the +KEYWORD are flags adding permissions to that rank. There are brief descriptions in the text-file explaining what they do.
You can now name the ranks anything you like, and give them the permissions you want them to have. This allows, for instance, ranks like:
Game Admin on disciplinary +ADMIN +BAN
This would give that game admin only the tools they need to admin. They would not have access to 'fun' verbs which control events and antags.
There's lots of things you can do. For instance, a coder rank whom can debug stuff but cannot do admin tasks:
Codermin +DEBUG +VAREDIT +SERVER
There's lots you can do. As it evolves it will hopefully become more flexible.
admin_ranks.txt defaults to use the old admin rank names.
Apologies in advance as there will be a lot of anomalies, such as ranks losing verbs they once had. Please let me know about any problems. I can fix them quite easily simply by moving verbs between the lists or splitting the lists up into new flags.
CODERS:
There is now a check_rights(flags) proc.
It check is usr is and admin and has -at least one of- the rights specified.
It checks > usr < not src, so keep that in mind!
If you need to check if something other than usr has specific tights, you can do if(holder.rights & R_ADMIN) etc.
KNOWN ISSUES:
+FUN probably needs to be split up into +MOBS and +EVENTS
In-game promotion/demotion is currently disabled. It will be readded after everything else works ok.
Erro's sql rights changes stuff is currently commented out. It will be re-added.
There are still many many verbs which need updating.
Apologies in advance for any inconvenience.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4991 316c924e-a436-60f5-8080-3fe189b3f50e
>tried to make the comments less confusing.
>Removed the procs for rebuilding the lists (they weren't meant to be used and half were broken anyway).
>added a directory. It maps ckey to client like so directory[ckey] = client. It could be used for PMs, banning, and various other admin tools rather than using \ref[]
>var/list/admins is now a list of clients whom are admins.
>var/list/admin_datums is what var/list/admins used to be. A map from ckey -> admin datum
Most of this is so I can add modular admin ranks in a non-horrendous way and fix some existing issues.
>var/list/client_list is now var/list/clients (laziness sorry)
>removed some needless loops and stuff.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4951 316c924e-a436-60f5-8080-3fe189b3f50e