mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 13:37:58 +01:00
Merge with upstream/master
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
|
||||
/obj/item/device/handtv/attack_self(mob/usr as mob)
|
||||
var/list/cameras = new/list()
|
||||
for (var/obj/machinery/camera/C in cameranet.viewpoints)
|
||||
for (var/obj/machinery/camera/C in cameranet.cameras)
|
||||
if (C.hasbug && C.status)
|
||||
cameras.Add(C)
|
||||
if (length(cameras) == 0)
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
|
||||
|
||||
bombers += "[key_name(user)] attached a [item] to a transfer valve."
|
||||
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
||||
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
||||
msg_admin_attack("[key_name_admin(user)] attached [item] to a transfer valve.")
|
||||
log_game("[key_name_admin(user)] attached [item] to a transfer valve.")
|
||||
attacher = user
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
return
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
|
||||
ui_interact(user)
|
||||
|
||||
|
||||
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
|
||||
// this is the data which will be sent to the ui
|
||||
@@ -77,13 +77,13 @@
|
||||
data["valveOpen"] = valve_open ? 1 : 0
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
ui = new(user, src, ui_key, "transfer_valve.tmpl", "Tank Transfer Valve", 460, 280)
|
||||
// when the ui is first opened this is the data it will use
|
||||
ui.set_initial_data(data)
|
||||
ui.set_initial_data(data)
|
||||
// open the new ui window
|
||||
ui.open()
|
||||
// auto update every Master Controller tick
|
||||
@@ -190,7 +190,7 @@
|
||||
|
||||
log_str += " Last touched by: [src.fingerprintslast][last_touch_info]"
|
||||
bombers += log_str
|
||||
message_admins(log_str, 0, 1)
|
||||
msg_admin_attack(log_str, 0, 1)
|
||||
log_game(log_str)
|
||||
merge_gases()
|
||||
spawn(20) // In case one tank bursts
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/obj/item/tape/police
|
||||
name = "police tape"
|
||||
desc = "A length of police tape. Do not cross."
|
||||
req_access = list(access_security)
|
||||
req_one_access = list(access_security,access_forensics_lockers)
|
||||
icon_base = "police"
|
||||
|
||||
/obj/item/taperoll/engineering
|
||||
|
||||
@@ -101,13 +101,20 @@ AI MODULES
|
||||
for(var/templaw in laws)
|
||||
target.add_inherent_law(templaw)
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth
|
||||
var/removeownlaw = 0
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
if(target.laws.zeroth)
|
||||
target << "[sender.real_name] attempted to modify your zeroth law."
|
||||
target << "It would be in your best interest to play along with [sender.real_name] that:"
|
||||
for(var/failedlaw in laws)
|
||||
target << "[failedlaw]"
|
||||
return 1
|
||||
if(removeownlaw && (laws[1] == target.laws.zeroth))
|
||||
target.clear_zeroth_law()
|
||||
return 2
|
||||
else
|
||||
target << "[sender.real_name] attempted to modify your zeroth law."
|
||||
target << "It would be in your best interest to play along with [sender.real_name] that:"
|
||||
for(var/failedlaw in laws)
|
||||
target << "[failedlaw]"
|
||||
return 1
|
||||
|
||||
for(var/templaw in laws)
|
||||
target.set_zeroth_law(templaw)
|
||||
@@ -149,7 +156,7 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/zeroth/oneHuman
|
||||
name = "'OneHuman' AI Module"
|
||||
var/targetName = ""
|
||||
desc = "A 'one human' AI module: 'Only <name> is crew.'"
|
||||
desc = "A 'one human' AI module: 'Only <name> is crew.' This module adds a zeroth law, which can only be removed by uploading this board again."
|
||||
origin_tech = "programming=3;materials=6" //made with diamonds!
|
||||
laws = list("Only <name> is crew.")
|
||||
|
||||
@@ -159,6 +166,7 @@ AI MODULES
|
||||
targetName = targName
|
||||
laws[1] = "Only [targetName] is crew"
|
||||
desc = "A 'one crew' AI module: '[laws[1]]'"
|
||||
removeownlaw = 1
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth/oneHuman/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(!targetName)
|
||||
@@ -167,8 +175,10 @@ AI MODULES
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth/oneHuman/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
if(..())
|
||||
return "[targetName], but the AI's existing law 0 cannot be overriden."
|
||||
if(..() == 1)
|
||||
return "[targetName], but the AI's existing zeroth law cannot be overriden."
|
||||
if(..() == 2)
|
||||
return "The AI's zeroth law has been overridden."
|
||||
return targetName
|
||||
|
||||
|
||||
@@ -186,13 +196,17 @@ AI MODULES
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth/quarantine
|
||||
name = "'Quarantine' AI Module"
|
||||
desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, organics from leaving. It is impossible to harm an organic while preventing them from leaving.'"
|
||||
desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, organics from leaving. It is impossible to harm an organic while preventing them from leaving.' This module adds a zeroth law, which can only be removed by uploading this board again."
|
||||
origin_tech = "programming=3;biotech=2;materials=4"
|
||||
laws = list("The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, organics from leaving. It is impossible to harm an organic while preventing them from leaving.")
|
||||
removeownlaw = 1
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth/quarantine/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
if(..())
|
||||
return "The AI's existing law 0 cannot be overriden."
|
||||
var/result = ..()
|
||||
if(result == 1)
|
||||
return "The AI's existing zeroth law cannot be overriden."
|
||||
if(result == 2)
|
||||
return "The AI's zeroth law has been overridden."
|
||||
return laws[1]
|
||||
|
||||
/******************** OxygenIsToxicToHumans ********************/
|
||||
@@ -259,7 +273,7 @@ AI MODULES
|
||||
|
||||
/obj/item/weapon/aiModule/reset/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
target.clear_inherent_laws()
|
||||
target.clear_inherent_laws()
|
||||
|
||||
/******************* Full Core Boards *******************/
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
else if(clown_check(user))
|
||||
// This used to go before the assembly check, but that has absolutely zero to do with priming the damn thing. You could spam the admins with it.
|
||||
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
|
||||
message_admins(log_str)
|
||||
msg_admin_attack(log_str)
|
||||
log_game(log_str)
|
||||
bombers += "[log_str]"
|
||||
user << "<span class='warning'>You prime the [name]! [det_time / 10] second\s!</span>"
|
||||
@@ -144,7 +144,7 @@
|
||||
var/turf/bombturf = get_turf(loc)
|
||||
var/area/A = bombturf.loc
|
||||
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has completed [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> [contained]."
|
||||
message_admins(log_str)
|
||||
msg_admin_attack(log_str)
|
||||
log_game(log_str)
|
||||
else
|
||||
user << "<span class='notice'>You need to add at least one beaker before locking the assembly.</span>"
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
|
||||
message_admins(log_str)
|
||||
msg_admin_attack(log_str)
|
||||
log_game(log_str)
|
||||
bombers += "[log_str]"
|
||||
if(iscarbon(user))
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
|
||||
message_admins(log_str)
|
||||
msg_admin_attack(log_str)
|
||||
log_game(log_str)
|
||||
bombers += "[log_str]"
|
||||
if(iscarbon(user))
|
||||
|
||||
@@ -444,7 +444,7 @@ obj/item/weapon/twohanded/
|
||||
no_embed = 1
|
||||
force = 5
|
||||
force_unwielded = 5
|
||||
force_wielded = 20
|
||||
force_wielded = 30
|
||||
throwforce = 15
|
||||
throw_range = 1
|
||||
w_class = 5
|
||||
@@ -475,29 +475,31 @@ obj/item/weapon/twohanded/
|
||||
|
||||
/obj/item/weapon/twohanded/knighthammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(wielded)
|
||||
if(charged == 5)
|
||||
charged = 0
|
||||
if(istype(A, /mob/living/))
|
||||
var/mob/living/Z = A
|
||||
if(Z.health < 1)
|
||||
Z.visible_message("<span class='danger'>[Z.name] was blown to peices by the power of [src.name]!</span>", \
|
||||
"<span class='userdanger'>You feel a powerful blow rip you apart!</span>", \
|
||||
"<span class='danger'>You hear a heavy impact and the sound of ripping flesh!.</span>")
|
||||
Z.gib()
|
||||
else
|
||||
Z.take_organ_damage(0,30)
|
||||
Z.visible_message("<span class='danger'>[Z.name] was sent flying by a blow from the [src.name]!</span>", \
|
||||
"<span class='userdanger'>You feel a powerful blow connect with your body and send you flying!</span>", \
|
||||
"<span class='danger'>You hear something heavy impact flesh!.</span>")
|
||||
var/atom/throw_target = get_edge_target_turf(Z, get_dir(src, get_step_away(Z, src)))
|
||||
Z.throw_at(throw_target, 200, 4)
|
||||
else if(istype(A, /turf/simulated/wall))
|
||||
if(charged == 5)
|
||||
charged = 0
|
||||
if(istype(A, /mob/living/))
|
||||
var/mob/living/Z = A
|
||||
if(Z.health >= 1)
|
||||
Z.visible_message("<span class='danger'>[Z.name] was sent flying by a blow from the [src.name]!</span>", \
|
||||
"<span class='userdanger'>You feel a powerful blow connect with your body and send you flying!</span>", \
|
||||
"<span class='danger'>You hear something heavy impact flesh!.</span>")
|
||||
var/atom/throw_target = get_edge_target_turf(Z, get_dir(src, get_step_away(Z, src)))
|
||||
Z.throw_at(throw_target, 200, 4)
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
else if(wielded && Z.health < 1)
|
||||
Z.visible_message("<span class='danger'>[Z.name] was blown to peices by the power of [src.name]!</span>", \
|
||||
"<span class='userdanger'>You feel a powerful blow rip you apart!</span>", \
|
||||
"<span class='danger'>You hear a heavy impact and the sound of ripping flesh!.</span>")
|
||||
Z.gib()
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
if(wielded)
|
||||
if(istype(A, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/Z = A
|
||||
Z.ex_act(2)
|
||||
charged = 3
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
else if (istype(A, /obj/structure) || istype(A, /obj/mecha/))
|
||||
var/obj/Z = A
|
||||
Z.ex_act(2)
|
||||
charged = 3
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
|
||||
@@ -110,6 +110,11 @@
|
||||
viewers(user) << "<span class='suicide'>[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.</span>"
|
||||
return(BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/claymore/ceremonial
|
||||
name = "ceremonial claymore"
|
||||
desc = "An engraved and fancy version of the claymore. It appears to be less sharp than it's more functional cousin."
|
||||
force = 20
|
||||
|
||||
/obj/item/weapon/katana
|
||||
name = "katana"
|
||||
desc = "Woefully underpowered in D20"
|
||||
|
||||
Reference in New Issue
Block a user