Merge branch 'master' into development

# Conflicts:
#	maps/aurora/aurora-4_mainlevel.dmm
This commit is contained in:
skull132
2018-05-29 22:49:41 +03:00
16 changed files with 167 additions and 94 deletions
@@ -0,0 +1,13 @@
--
-- Serverside changes to allow News published by players
--
ALTER TABLE `ss13_news_stories`
CHANGE COLUMN `time_stamp` `publish_at` DATETIME NULL DEFAULT NULL AFTER `is_admin_message`,
ADD COLUMN `publish_until` DATETIME NULL DEFAULT NULL AFTER `publish_at`,
ADD COLUMN `ic_timestamp` DATETIME NULL DEFAULT NULL AFTER `publish_until`,
ADD COLUMN `approved_by` VARCHAR(50) NULL DEFAULT NULL AFTER `created_at`,
ADD COLUMN `approved_at` DATETIME NULL DEFAULT NULL AFTER `approved_by`,
ADD COLUMN `url` VARCHAR(250) NULL DEFAULT NULL AFTER `publish_until`;
ALTER TABLE `ss13_news_channels`
CHANGE COLUMN `announcement` `announcement` VARCHAR(200) NULL DEFAULT NULL COLLATE 'utf8_bin' AFTER `is_admin_channel`;
+1 -1
View File
@@ -40,7 +40,7 @@
catch(var/exception/ec)
log_debug("SSnews: Error when loading channel: [ec]")
continue
var/DBQuery/news_query = dbcon.NewQuery("SELECT body, author, is_admin_message, message_type, time_stamp FROM ss13_news_stories WHERE deleted_at IS NULL AND channel_id = :channel_id: ORDER BY created_at DESC")
var/DBQuery/news_query = dbcon.NewQuery("SELECT body, author, is_admin_message, message_type, ic_timestamp, url FROM ss13_news_stories WHERE deleted_at IS NULL AND channel_id = :channel_id: AND publish_at < NOW() AND (publish_until > NOW() OR publish_until IS NULL) AND approved_at IS NOT NULL ORDER BY publish_at DESC")
news_query.Execute(list("channel_id" = channel_query.item[1]))
while(news_query.NextRow())
CHECK_TICK
+44 -10
View File
@@ -133,11 +133,6 @@ var/list/sacrificed = list()
target.hallucination = min(target.hallucination, 500)
return 0
//If you dont have blood, blood magic doesnt work on you
if(target.is_mechanical())
attacker << "<span class='danger'>You sense that your powers can not effect them.</span>"
return 0
target.take_overall_damage(0, rand(5, 20)) // You dirty resister cannot handle the damage to your mind. Easily. - even cultists who accept right away should experience some effects
// Resist messages go!
if(initial_message) //don't do this stuff right away, only if they resist or hesitate.
@@ -181,11 +176,51 @@ var/list/sacrificed = list()
var/choice = alert(target,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit")
waiting_for_input[target] = 0
if(choice == "Submit") //choosing 'Resist' does nothing of course.
cult.add_antagonist(target.mind)
converting -= target
target.hallucination = 0 //sudden clarity
playsound(target, 'sound/effects/bloodcult.ogg', 100, 1)
if(!target.is_mechanical())
cult.add_antagonist(target.mind)
converting -= target
target.hallucination = 0 //sudden clarity
playsound(target, 'sound/effects/bloodcult.ogg', 100, 1)
else
converting -= target
//If we are dealing with a IPC then ask the caster what construct they want
var/construct_class = alert(attacker, "Please choose which type of construct you wish to create.",,"Juggernaut","Wraith","Artificer")
playsound(target, 'sound/effects/bloodcult.ogg', 100, 1)
//Spawn some remains
new target.species.remains_type(target.loc) //spawns a skeleton based on the species remain type
target.invisibility = 101
var/atom/movable/overlay/animation = new /atom/movable/overlay( target.loc )
animation.icon_state = "blank"
animation.icon = 'icons/mob/mob.dmi'
animation.master = target
flick("dust-h", animation)
qdel(animation)
//Spawn the selected construct
switch(construct_class)
if("Juggernaut")
var/mob/living/simple_animal/construct/armoured/Z = new /mob/living/simple_animal/construct/armoured (get_turf(target.loc))
Z.key = target.key
qdel(target)
cult.add_antagonist(Z.mind)
Z << "<B>You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike.</B>"
Z << "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>"
if("Wraith")
var/mob/living/simple_animal/construct/wraith/Z = new /mob/living/simple_animal/construct/wraith (get_turf(target.loc))
Z.key = target.key
qdel(target)
cult.add_antagonist(Z.mind)
Z << "<B>You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.</B>"
Z << "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>"
if("Artificer")
var/mob/living/simple_animal/construct/builder/Z = new /mob/living/simple_animal/construct/builder (get_turf(target.loc))
Z.key = target.key
qdel(target)
cult.add_antagonist(Z.mind)
Z << "<B>You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs</B>"
Z << "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>"
sleep(100) //proc once every 10 seconds
return 1
@@ -1064,7 +1099,6 @@ var/list/sacrificed = list()
/////////////////////////////////////////TWENTY-FIFTH RUNE
/obj/effect/rune/proc/armor(var/mob/living/user)
if(istype(src,/obj/effect/rune))
user.say("N'ath reth sh'yro eth d[pick("'","`")]raggathnor!")
else
+1
View File
@@ -20,6 +20,7 @@
var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H) //BS12 EDIT
H.equip_to_slot_or_del(B, slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
+1 -1
View File
@@ -82,7 +82,7 @@
if (C == user)
user.visible_message("[user] climbs on \the [src].","You climb on \the [src].")
else
visible_message("<span class='notice'>\The [C] has been laid on \the [src] by [user].</span>", 3)
visible_message("<span class='notice'>\The [C] has been laid on \the [src] by [user].</span>")
if (C.client)
C.client.perspective = EYE_PERSPECTIVE
C.client.eye = src
+1 -32
View File
@@ -1367,35 +1367,4 @@
Remember; once you have been afflicted with brain trauma you are over four times as likely to suffer it again! Keep your patient's best interests at heart.
</body>
</html>
"}
/obj/item/weapon/book/manual/brainwashing
name = "Disloyal to Loyal: The Legality of Brainwashing"
icon_state ="rulebook"
author = "Dr. Fredrick Richards"
title = "Disloyal to Loyal: The Legality of Brainwashing"
dat = {"<html>
<head>
<style>
h1 {font-size: 21px; margin: 15px 0px 5px;}
h2 {font-size: 15px; margin: 15px 0px 5px;}
li {margin: 2px 0px 2px 15px;}
ul {margin: 5px; padding: 0px;}
ol {margin: 5px; padding: 0px 15px;}
body {font-size: 13px; font-family: Verdana;}
</style>
</head>
<body>
<h1>Disloyal to Loyal: The Legality of Brainwashing</h1>
<h2>by Doctor Fredrick Richards with help from the NanoTrasen Legal Department</h2>
While it may be tempting as a Captain, Head of Security, or sometimes an officer to go around distributing anti-psychotics to maintain the peace, there are a few Corporate regulations and rules that must be kept in mind before even considering obtaining the medication.<BR><BR>
<h2>Pre-injection</h2>
Generally, anti-psychotic medications should only be given out to criminals who have been charged with crimes that typically have Hold until Transfer, Cyborgification, and Loyalty Implant sentences, however some exceptions may apply. It is important to note that when using medicine to rehabilitate a criminal, the criminal in question is now legally considered a medical patient. In Tau Ceti space, it is illegal to prescribe, consume, or force a patient to consume anti-psychotic medication as a non-medical professional. As such, a non-medical personnel who injects or feeds prisoners with anti-psychotics may be charged with Suspicious Conduct, Excessive Use of Force In Detainment, Mistreatment of Prisoners, Neglect of Duty, Assault, Exceeding Official Powers, Mistreatment of Prisoners, and/or Gross Negligence. A trained and licensed medical professional are legally required to perform an evaluation first, and must be the one to perform the injection.<BR><BR>
<h2>Post-injection</h2>
It is your duty as a member of the security department to oversee the health and well-being of prisoners and parolees. Those who have been giving anti-psychotic medication must be carefully monitored for their behaviour. Prisoners who skip doses, or overdose, are a threat to themselves and the people near them. If in the case of an overdose occurs, or a dose is missed, medical personnel should be contacted immediately and the situation dealt with appropriately. Failure to do so may result in Gross Negligence charges and potential demotion.
</body>
</html>
"}
"}
@@ -103,7 +103,8 @@
/obj/item/clothing/glasses/hud/health,
/obj/item/weapon/crowbar,
/obj/item/device/flashlight,
/obj/item/weapon/extinguisher/mini
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/reagent_containers/inhaler
)
/obj/item/weapon/storage/belt/medical/emt
+1
View File
@@ -13,6 +13,7 @@
var/damtype = "brute"
var/force = 0
var/armor_penetration = 0
var/noslice = 0 // To make it not able to slice things.
var/being_shocked = 0
@@ -62,7 +62,7 @@
/obj/structure/closet/jcloset/fill()
new /obj/item/clothing/under/rank/janitor(src)
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/device/radio/headset/headset_service(src)
new /obj/item/weapon/cartridge/janitor(src)
new /obj/item/clothing/gloves/black(src)
new /obj/item/clothing/head/soft/purple(src)
@@ -90,6 +90,7 @@
new /obj/item/weapon/storage/fancy/candle_box(src)
new /obj/item/weapon/storage/fancy/candle_box(src)
new /obj/item/weapon/deck/tarot(src)
new /obj/item/device/radio/headset/headset_service(src)
return
+1 -1
View File
@@ -185,7 +185,7 @@
pocell.charge = pocell.maxcharge
qdel(src)
return
else if(W.sharp)
else if(W.sharp && !W.noslice)
if(seed.kitchen_tag == "pumpkin") // Ugggh these checks are awful.
user.show_message("<span class='notice'>You carve a face into [src]!</span>", 1)
new /obj/item/clothing/head/pumpkinhead (user.loc)
@@ -18,6 +18,7 @@
w_class = 1
slot_flags = SLOT_EARS
sharp = 1
noslice = 1
unacidable = 1 //glass
var/mode = SYRINGE_DRAW
var/image/filling //holds a reference to the current filling overlay
+27
View File
@@ -56,6 +56,33 @@
-->
<div class="commit sansserif">
<h2 class="date">29 May 2018</h2>
<h3 class="author">Kaedwuff updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">You can no longer slice fruit (or anything else) with a syringe.</li>
</ul>
<h2 class="date">28 May 2018</h2>
<h3 class="author">Kaedwuff updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">The janitor's closet now has service headsets in it again.</li>
<li class="tweak">The chaplain now also gets a service headset again.</li>
</ul>
<h2 class="date">25 May 2018</h2>
<h3 class="author">Arrow768 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">IPCs can be converted to the cult again, but only serve as constructs.</li>
</ul>
<h3 class="author">LordFowl updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixes the number 3 being broadcasted from surgery tables.</li>
</ul>
<h3 class="author">PoZe updated:</h3>
<ul class="changes bgimages16">
<li class="maptweak">Veding machines at Centcomm don't charge money for their products. Hail NanoTrasen!</li>
</ul>
<h2 class="date">22 May 2018</h2>
<h3 class="author">Arrow768 updated:</h3>
<ul class="changes bgimages16">
+15
View File
@@ -5508,3 +5508,18 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
used items using the vending machines.
Lohikar:
- bugfix: Unathi can no longer chew on holograms.
2018-05-25:
Arrow768:
- rscadd: IPCs can be converted to the cult again, but only serve as constructs.
LordFowl:
- bugfix: Fixes the number 3 being broadcasted from surgery tables.
PoZe:
- maptweak: Veding machines at Centcomm don't charge money for their products. Hail
NanoTrasen!
2018-05-28:
Kaedwuff:
- bugfix: The janitor's closet now has service headsets in it again.
- tweak: The chaplain now also gets a service headset again.
2018-05-29:
Kaedwuff:
- bugfix: You can no longer slice fruit (or anything else) with a syringe.
+35 -9
View File
@@ -8133,13 +8133,20 @@
},
/area/centcom/living)
"atb" = (
/obj/machinery/vending/snack,
/obj/machinery/vending/snack{
name = "Free Chocolate Corp";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "floor"
},
/area/centcom/living)
"atc" = (
/obj/machinery/vending/cola,
/obj/machinery/vending/cola{
name = "Free Robust Softdrinks";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "floor"
},
@@ -12573,7 +12580,7 @@
/area/centcom/specops)
"aBL" = (
/obj/machinery/vending/snack{
name = "hacked Getmore Chocolate Corp";
name = "Free Chocolate Corp";
prices = list()
},
/turf/unsimulated/floor{
@@ -12672,7 +12679,7 @@
/area/centcom/specops)
"aBY" = (
/obj/machinery/vending/cola{
name = "Robust Softdrinks";
name = "Free Robust Softdrinks";
prices = list()
},
/turf/unsimulated/floor{
@@ -12739,7 +12746,7 @@
/area/shuttle/specops/centcom)
"aCh" = (
/obj/machinery/vending/cigarette{
name = "cigarette machine";
name = "Free Cigarette Machine";
prices = list()
},
/turf/unsimulated/floor{
@@ -15939,7 +15946,10 @@
},
/area/centcom/holding)
"aJv" = (
/obj/machinery/vending/coffee,
/obj/machinery/vending/coffee{
name = "Free Hot Drinks machine";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "green";
dir = 4
@@ -16190,7 +16200,10 @@
},
/area/centcom/holding)
"aJW" = (
/obj/machinery/vending/cigarette,
/obj/machinery/vending/cigarette{
name = "Free Cigarette Machine";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "green";
dir = 4
@@ -18517,7 +18530,8 @@
icon_state = "floor"
},
/obj/machinery/vending/snack{
can_move = 0
name = "Free Chocolate Corp";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "wood_siding4"
@@ -18614,7 +18628,8 @@
icon_state = "floor"
},
/obj/machinery/vending/cola{
can_move = 0
name = "Free Robust Softdrinks";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "wood_siding8"
@@ -20553,6 +20568,10 @@
/area/tdome)
"aTh" = (
/obj/machinery/vending/cigarette,
/obj/machinery/vending/cigarette{
name = "Free Cigarette Machine";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "redbluefull";
dir = 8
@@ -20592,6 +20611,10 @@
/area/tdome/tdomeobserve)
"aTm" = (
/obj/machinery/vending/coffee,
/obj/machinery/vending/coffee{
name = "Free Hot Drinks machine";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "redbluefull";
dir = 8
@@ -20678,7 +20701,10 @@
},
/area/tdome/tdomeobserve)
"aTx" = (
/obj/machinery/vending/snack,
/obj/machinery/vending/snack{
name = "Free Chocolate Corp";
prices = list()
},
/turf/unsimulated/floor{
icon_state = "redbluefull";
dir = 8
+22 -38
View File
@@ -11819,21 +11819,7 @@
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/table/rack,
/obj/item/weapon/storage/box/firingpins,
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
/obj/structure/sign/nosmoking_2{
pixel_y = 32
},
/obj/machinery/camera/network/security{
c_tag = "Security - Armoury Entrance";
network = list("Security","Armoury")
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/table/rack,
/turf/simulated/floor/tiled/dark,
/area/security/armoury)
@@ -62463,7 +62449,6 @@
/obj/machinery/light{
dir = 1
},
/obj/item/weapon/book/manual/brainwashing,
/turf/simulated/floor/carpet,
/area/crew_quarters/captain)
"cnT" = (
@@ -62505,7 +62490,6 @@
pixel_x = 5;
pixel_y = -30
},
/obj/item/weapon/book/manual/brainwashing,
/turf/simulated/floor/tiled/dark,
/area/crew_quarters/heads/hos)
"cnW" = (
@@ -64449,6 +64433,8 @@
/turf/simulated/floor/tiled/dark,
/area/security/security_office)
"csw" = (
/obj/item/clothing/gloves/combat,
/obj/item/weapon/handcuffs,
/obj/structure/table/standard,
/obj/structure/window/reinforced{
dir = 1
@@ -64456,8 +64442,6 @@
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/clothing/gloves/combat,
/obj/item/weapon/handcuffs,
/turf/simulated/floor/tiled/dark,
/area/security/security_office)
"csx" = (
@@ -96547,11 +96531,11 @@ aja
aja
crQ
crZ
csi
css
csC
csM
csX
crQ
csr
csr
csr
csr
asw
auk
avI
@@ -96808,7 +96792,7 @@ csj
cst
csD
csN
csY
csr
asx
auk
avJ
@@ -97061,10 +97045,10 @@ cmy
crO
crS
csb
csk
csu
csE
csO
crU
crU
crU
crU
csZ
asy
aul
@@ -97579,7 +97563,7 @@ csm
csw
csG
csQ
ctb
csr
asA
aum
avK
@@ -97836,7 +97820,7 @@ csn
csx
csH
csR
ctc
csr
asB
aun
avM
@@ -98093,7 +98077,7 @@ cso
csy
csI
csS
ctd
crQ
asC
auo
avN
@@ -98347,8 +98331,8 @@ cmI
crX
csg
csp
csz
csJ
csp
csp
csT
cte
cnQ
@@ -98593,12 +98577,12 @@ aaV
adY
clC
aja
crg
crf
crm
cru
crC
cmD
crN
crC
cmD
aja
crY
@@ -98607,7 +98591,7 @@ csq
csA
csK
csU
ctf
crQ
asE
aup
avK
@@ -98861,10 +98845,10 @@ afe
afe
afe
csr
csB
csr
csL
csV
ctg
csr
asF
aun
avM