Commit Graph

112 Commits

Author SHA1 Message Date
Mykhailo Bykhovtsev
b23f17bc64 Fixing old/new bugs/runtimes (#5763)
Fixes #3410

Ranged hostile mob stop if they are in range of fire, instead of keep going to point blank range. They also try to get to person within 6 tiles, not point blank.

Hostile mobs also check if their target is in the view or not.

Fixes #4468

Fixes #2867

Fixes #2721

Fixes #2678

Character input limit in Security/Medecal records was increased from 1024 to 3027 for all fields, to keep it consistent with character setup records. Fixes #5766

Fixes Energy net turret sprites. Updates spawned ionrifle turret to allow for two modes, adds lethal turret sprite for ionrifle.
2018-12-16 15:23:42 +02:00
Werner
2447da3d6e Adds additional logging to figure out what causes NULL job entries in the db (#5494)
Adds additional logging to figure out what causes NULL job entries in the db
Adds logging of the alt_titles the chars join with.
2018-11-01 11:42:48 +02:00
Werner
e3560362d8 Only Announce Faxes if someone doesnt have their PDA linked (#5291)
* Adds the ability to announce a fax only if someone doesnt have their PDA linked,

* Added SQL migration of expansion of do injunctions

* Changes "warning" to "reprimand"
2018-10-07 00:18:38 +02:00
Karolis
4065e29e86 Vue.js UI implementation (#4868)
This UI is going to be more integrated with BYOND host objects. It's update principal is very different from nanoui's. It is based around state that is being synchronized with server and client (browser). Such synchronization has it's problems, like it can't handle rapid changes, what could cause client and server to become out of sync and client state to be discard.
2018-08-04 20:19:29 +03:00
Werner
4e63821d1e Adds a notification system (#4931)
Allows to set up notifications if a specific player connects.
2018-07-01 22:47:50 +03:00
Werner
aab67e5e2e News Loader Changes (#4788)
Some changes to the news loader to prep for player news.
2018-05-24 20:59:35 +03:00
Werner
6158575afc Load static lore news from the DB at the start of the round (#4618)
Converts the news network into a subsystem
Loads news from a database at the start of the round
No longer ties the PDAs to the tcoms system to access the news (which was broken anyway)
Removes the trivial news event
Adds the already existing virology / xenobiology containment events to the rotation
2018-04-29 22:47:30 +03:00
Werner
cfd1900ee4 Security Fines (#4634)
Allows security to fine criminals with the sentencing console
Prints a human readable copy of the charges and the applied sentence
2018-04-29 20:34:49 +03:00
Werner
ed504cbe20 Add a approval step to cargo_items (#4639)
Expands the cargo table to require the approval of items before they are displayed on the server, enabling the creation of a module in the web interface.
2018-04-29 17:35:06 +03:00
Werner
d4c2268c4e Poll Fix + Link (#4655)
Fixes the permissions required for polling / the button not showing up for devs.
Adds the option to display a link in the poll
2018-04-25 23:01:58 +03:00
Erki
be323e7fac Fixes final ticket logging bugs (#4643) 2018-04-19 22:42:43 +02:00
Werner
ad1833815c Adds a SQL migration to fix a oversight (#4623)
Adds a SQL migration to allow the path_old and suppliers_old in the cargo_items table to be nulled.
Sets their default to null aswell
2018-04-16 23:01:03 +03:00
Werner
a61801d80d Combines the ss13_admin and ss13_player table. (#4540)
Combines the ss13_admin and ss13_player table into one.

I kinda want to rewrite the entire backend logic since its somewhat dated.
2018-04-08 16:30:38 +03:00
LordFowl
64e386785c Abling Disability (#4485)
This PR implements a system for manipulating a client's color safely and also ports a prioritization system for sorting client color from /tg/. Currently this PR also implements client coloration in the form of color blindness, namely:
Monochromacy
Deuteranopia
Tritanopia
Protanopia

DTP are mild brain traumas, whereas monocrhomacy is a severe brain trauma.
Furthermore, this PR removes the Needs Glasses prompt in character creation, and replaces it with a disability selector, allowing people to more closely refine their special little snowflakes.
Current disabilities available:
Nervousness
Nearsightedness
Deuteranopia
Tritanopia
Protanopia
Deafness
Muteness
2018-04-05 21:57:50 +03:00
Werner
8733d9b2ae Private Polls (#4488)
Allows to set poll results to private
2018-04-02 14:30:32 +03:00
Werner
d89798cf7e Various Cargo Improvements (#4435)
Implements #4434
The reason for the order can now be viewed in the cargo control application
Calculate the shuttle fee per order
It is now possible to pay for orders that have been approved by cargo before they are shipped to the station
A mainfest spawns in the crates
Schema Changes:
The supplier, path and amount columns have been retired and are no longer used
Instead the following columns will be used:
supplier - the short name of the supplier that will be used
price - the price for the items
items - the items and their variables

If you are storing the cargo items in the SQL DB, then you dont have to do anything.
They will be migrated automatically to the new format

If you are storing the cargo items in JSON Files then you have to rewrite the files to adhere to the new format.
A example file of the new format is included
2018-03-31 23:26:23 +03:00
Erki
18baa01d0a Ticket improvements (#4432)
Adds some features and fixes some shit:

Closing of tickets sent to Discord will now alert discord as well.
Adds a reminder period for tickets which starts after they're opened. It's intended to remind staff to close their tickets. Say, something like 10 minutes since opening sounds like a solid idea. If the staff who claimed it is offline, then all staff are reminded of it.
Adds the logging of all tickets to the database at the end of round. Sortable by staff closing, person opening, time opened, time closed, and round ID. This is primarily for Aboshehab.
2018-03-25 16:32:12 +03:00
Werner
24433b2e9f Adds a gui to create polls (#4429)
Also expands the API with poll related options.
It is a known limitation that options that have not been voted for are not returned by the api
2018-03-25 12:55:27 +03:00
Werner
089cc9de0c Saves the client version connecting to the server (#4273)
Saves the byond version and build of the client connecting to the server to the database.
2018-02-19 19:36:17 +02:00
Lohikar
2fddb0a25c Bag styles (#4099)
changes:

You can now select in preferences if you want to take a generic (grey) bag instead of your job-specific variant.
Cleaned up some leftover bagcode from before the bag type vars.
2018-01-21 01:05:33 +02:00
Lohikar
90886a3076 Branded IPCs (#3388)
This PR adds 2 subtypes of industrial and two subtypes of baseline, one for each cybernetics manufacturer. Sprites by BRAINOS.

other changes:

IPCs can now be flashed or flashbanged.
Admin spawn paths have been added for subspecies that did not have them.
IPCs are no longer slowed by being cold.
2018-01-21 00:34:06 +02:00
Erki
97c1343189 Deletable mirrors and indexing for faster searching (#4026)
Makes individual mirrors deletable as per admin request.
Adds indexes for queries in isbanned() to make them roll faster.
2017-12-31 14:28:00 +01:00
Karolis
00ead7d560 Added webhook implementation of discord integration (#3748)
Adds ability to get server updates to Discord using webhook API, instead of complicated bot API. Simple config options make it a breeze to add / remove linked channels.
2017-12-23 23:56:20 +02:00
chaoko99
c0ee47579d Adds a preference to have an intent check for guns (#3653)
what title says
2017-12-17 11:37:16 +02:00
Werner
ff853542b1 Cargo Overhaul (#3221)
Changes cargo to be based on credits instead of items

The following is still ToDo:

 Test SQL Loading + Add flyway migration
 Add changelog
 Restore the PDA Application
2017-09-14 21:32:06 +03:00
skull132
ee503f015f aaaaaaaaaaaaa 2017-07-21 12:34:19 +03:00
Erki Meinberg
f541c68cc0 Saner mirrors (#3119) 2017-07-20 20:46:25 +03:00
Lohikar
42f91d8117 Remove privacy poll & other tweaks/fixes (#2863)
changes:

Removed the privacy poll as it is unused.
Observing no longer creates a new mannequin, instead fetching one from SSmobs.
Observer ghosts now have a description again.
Converted new_player.dm to absolute pathing.
Fixed a bad init on holomaps.
Removed a sleep from light fixture Initialize().
Added a queue length stat to the MC panel for Icon Smoothing.
Halved time taken to create lighting overlay objects.
Species & body marking lists are now sorted alphabetically.
Commented out calls to lighting profiler to remove overhead of string interpolation in some procs.
Blood dries instantly if present during mapload instead of setting a timer.
2017-07-01 21:53:39 +03:00
Alberyk
17354e5109 Ports body markings from polaris (#2607)
Ports the body marking system from polaris. And I think I got all the SQL related procs.
2017-06-06 00:43:45 +03:00
skull132
a3ec0cf45d Better SQL prepared statements (#2474)
The system used to be of complexity O(n^2). Essentially two for loops running per every argument. Which ended up being surprisingly slow (there were instances where I saw the argument parser as using quite a lot of CPU time).

This replaces it with a more linear algorithm. It's somewhere near O(n) where n is the length of the unparsed query. Which is more stable and faaaster. This comes with two changes, however:

Parameters inside the query now have to be delimited from both sides with : (colons). The alternative to this would be to use something like $n or just assume that space marks the end of a marker. Only the former is workable, the latter would break a few queries already.
Arguments in the argument array no longer have to be prefixed by : (colons). So, while in the query you would write :thing:, you'd initialize the array of args as: list("thing" = somevar). It could be made to work without it, but eh, I think this is fine.
Argument validation is slightly weaker. What I mean by this is that with the old system, unused keys would result in an error. This is no longer a thing. Missing keys will still result in an error, however.
One more improvement: double delimiting removes an edge case where if key A partially covers key B, depending on the order, key A would mangle key B.
Updated and tested all queries that I could find. So this should be good.
2017-05-29 21:17:41 +03:00
skull132
4678b8bbcc Implement signatures (#2098) 2017-05-27 12:39:22 +03:00
skull132
7039840323 Implements IPIntel, Panic Bunker, and custom access control (#2436)
What it says on the tin.

IPIntel and BYOND account age relating panic bunker settings from TG. Also implements methods for potentially tagging VM users. Ontop of all of this, creates a spiffy UI for admins with R_SERVER to adjust the settings of the entire suite at runtime.
2017-05-26 13:26:58 +03:00
Lohikar
bc441ab9d6 Miscellaneous Tweaks (#1720)
changes:

Refactored footstep sounds to use less operations & only calculate for human-types.
Improved the logging detail of the lighting profiler.
Fixed some shuttle corners that weren't correctly working with parallax space.
Converted get_turf() into a compiler macro.
Solars are now dynamically lit.
Silenced warning from lighting overlays pooling themselves when updated on a space tile.
Fixed a bug where securing a girder was instant when it was supposed to have a delay.
2017-02-07 18:46:39 +02:00
skull132
b1b4ce00a8 Implement SQL migrations with Flyway (#1661)
Has a readme and everything.

Tables to be dropped with this:

ss13_customitems
ss13_bot_cache
ss13_feedback_archive
ss13_news
ss13_stats_ie
2017-01-29 21:14:58 +02:00
Lohikar
0cba68911d Lighting Overhaul & General process improvements (#1612)
This is it. The big one.
Risk: Very large. This modifies or rewrites several important systems.
Some things still need balancing, but that's probably better done if/when this hits dev.

changes:

New smooth lighting system.
Machinery split into three processes: machinery, powernet, pipenet Removed due to breakage. Refactored into multi-step process.
Mob process rewritten.
NanoUI process rewritten.
Objects process rewritten.
Tweaked color output of station lights.
Slime core lights now emit colored light.
Fixed light update frequency issue with fire alarms, hydroponics trays, and airlocks.
Increased light emission from bolted airlocks.
Miscellaneous performance improvements.
New datum pool implementation.
New lighting usage profiler.
Lighting system now tracks UV light, which is not visible to players.
Space now has a parallax effect.
Disabled Spin View verbs due to incompatibility with the new lighting system.
Disabled hallucination view spin due to incompatibility with the new lighting system.
Lighting system now initializes in the lobby before the round starts to reduce BoR deadtime.
Added UV light tracking to lighting engine; dionae now gain energy exclusively from UV light.
Added colored lighting to a few consoles that used default (white) light.
2017-01-29 01:13:54 +02:00
Werner
494a9f4523 Add new column to whitelist_status (#1538) 2017-01-12 23:06:54 +02:00
skull132
22c43472ae More Merge Fixes (#1304)
* Fixes SQL saving of hex numbers
* Removes completed TODO-MERGE notes
* Changes one instance of Galactic Common to Ceti Basic
* Renames instances of blind.layer to blind.invisibility (as is proper)
* Fixes the SQL schema some more
* Implements pAI saving
2016-12-26 02:34:29 +02:00
skull132
24258106da SQL Saves - Season 2 Episode 2 - The Fixening (#1286)
Update the schema
 Modify player_preferences and character related tables
 Readd the incidents + missing CCIAA tables to it
 Fix loading
 Fix saving
 Make it impossible to edit character name after a while
 Sanity check so you cannot enter without a valid (saved) character
 Fix New Character button
 Remove debug messages

Fixes #600 
Fixes #588
2016-12-25 00:56:36 +02:00
LordFowl
51bd200d7c Porting Apollo Infractions Computer (#1033)
Ports Apollo's infraction's system, creating a permanent criminal record for every character. Every minor or medium infraction accrued over the course of a round is added to the character's permanent security record which is available at vanilla records councils. Antagonists are automatically exempt from this process, and players can exercise control over what charges they consider canon or not.

Brigging a person is now dependent on the criminal sentencing computer, which reads a person's ID and applies a brig timer automatically for the charges selected. Personnel without ID's will have to be brigged manually.
2016-12-23 01:00:04 +02:00
Werner
2c9203951f Overhauls stats gathering to include the game_id (#1211)
Changed Stats gathering to include game_id.
Removed a duplicate proc that's never used.

This introduces a breaking chance in the feedback table.
The table should be renamed and recreated with the new schema.
2016-12-12 23:15:09 +02:00
skull132
7ec9dfa156 Fixes #1103 & discord spam (#1106)
Fixes the robot FT saving issue and the discord spam that comes from BOREALIS using @here for CC messages. To be fixed more thoroughly in dev.
2016-11-02 22:38:05 +02:00
skull132
66fa45b588 IE Stats (#1028)
Data with which we can determine how widespread actual HTML5 and CSS3 capability is.
2016-10-01 14:11:12 +03:00
Werner
6bd2247d07 API Update 2 (#932)
This is another Update to the API that adds / changes:

Unified Naming of API Comands and API Functions. --> They are now called "API Commands" across all files and the DB
Moves API Related procs from world.dm to api.dm
Adds a proc to write the API commands to the db (so there is no need to manually maintain the list of API commands)
The name change needs to be done before the API is live.

No changelog because there is already a entry
2016-09-17 18:01:02 +03:00
Werner
0a2df816c6 API Update (#876)
This adds some useful functions to the API and redefines the way the params are checked.

API Versioning
Very important to be able to check from the client if the serverside API is still compatible with the client implementation
Refactored Params
Mark params as required / optional
Different types of params (string / integer / list / select / senderkey)
Name and description for params
API Function to get all the functions a specific ip/token combo is allowed to use
API Function to get details about a specific API function
2016-09-11 15:53:20 +03:00
Werner
fb25382405 Rewrite API (#825)
he /world/Topic() API has been rewritten.

General function:

The API is initialized upon roundstart and generates a list of possible api requests from /code/datums/api.dm
Once a request is made the following checks are performed:
If a query parameter is set (the function that should be called)
If the ip is ratelimited (or rate-limit-whitelisted)
The query is authenticated against the db using ip, function and key
If these checks pass, it is validated that the api command exists
Then the api command is called, all supplied params are passed through
Each API function returns 1 no matter if it failed or succeded
Additional info is provided in the statuscode, response and data vars
The statuscode, response and data are send back to the caller (through list2params)
The data var is json encoded before sending it back
This is not backward compatible to the current API
Current API Clients need to be updated
2016-09-04 21:41:44 +02:00
skull132
c331042b9c Antag Competition Implementation (#703)
Nominating for worst code 2016

Adds in custom objectives for the antag competition
Adds in a verb for players to assign their character's allegiences and to later edit them
Adds in a verb for players to request objectives relating to the contest
Adds in the logging of contest results
Modifies the objective system to facilitate objectives that require regular checking (such as the brigging one, which was not functional up until now)
2016-08-09 01:36:21 +03:00
skull132
b5b1f7abad Not hard-deleting characters (#552)
Characters are no longer hard deleted from the database.
This makes it so that persistent records about characters can't be fucked up.
2016-07-11 16:53:42 +03:00
skull132
3663ddcfed Welcome Screen (#535)
The idea is to consolidate all of the spam that you see on the lower right panel into one concrete, semi-persistent pop-up window. Utilizing bootstrap, it'll show you a neat welcome screen, the message of the day, staff memos (if accessible), and a personalized set of notifications. The system is set up for easy future expansion, as well.
2016-07-11 16:48:58 +03:00
Werner
7b25937ce9 CCIA Records (#520)
Display CCIA Records and Actions on the Employment Computer.
2016-07-09 03:13:04 +03:00
skull132
f60d46f2ba Unban Reason When Lifting Bans (#446)
Unbanning staff will now be prompted to enter a reason for lifting the ban. The log of a ban being lifted will now also be entered into the player's notes.
2016-06-24 16:29:11 +03:00