mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 04:27:35 +01:00
Map update, CE now knows wire colors, added some old BS12 stuff (AI upload sprite, warning stripes), complete mute can still be adminhelped, removed gooncode in hallucinations, fixed the poweroffline event.
Map update has a redone CE's office and AI upload. Explosions now let admins jump to them.
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
var/datum/reagents/reagents = null
|
||||
|
||||
//Detective Work, used for the duplicate data points kept in the scanners
|
||||
var/atom/original_atom = null
|
||||
var/atom/movable/original_atom = null
|
||||
|
||||
//var/chem_is_open_container = 0
|
||||
// replaced by OPENCONTAINER flags and atom/proc/is_open_container()
|
||||
|
||||
@@ -34,6 +34,24 @@
|
||||
var/blocked = 0 //Player cannot attack/heal while set
|
||||
|
||||
|
||||
/obj/machinery/computer/aistatus
|
||||
name = "AI Status Panel"
|
||||
icon = 'mainframe.dmi'
|
||||
icon_state = "left"
|
||||
// brightnessred = 0
|
||||
// brightnessgreen = 2
|
||||
// brightnessblue = 0
|
||||
|
||||
/obj/machinery/computer/aistatus/attack_hand(mob/user as mob)
|
||||
if(stat & NOPOWER)
|
||||
user << "\red The status panel has no power!"
|
||||
return
|
||||
if(stat & BROKEN)
|
||||
user << "\red The status panel is broken!"
|
||||
return
|
||||
user << "\red I don't understand any of this!"
|
||||
return
|
||||
|
||||
/obj/machinery/computer/aiupload
|
||||
name = "AI Upload"
|
||||
desc = "Used to upload laws to the AI."
|
||||
@@ -42,6 +60,10 @@
|
||||
var/mob/living/silicon/ai/current = null
|
||||
var/opened = 0
|
||||
|
||||
/obj/machinery/computer/aiupload/mainframe
|
||||
name = "AI Mainframe Upload"
|
||||
icon = 'mainframe.dmi'
|
||||
icon_state = "aimainframe"
|
||||
|
||||
/obj/machinery/computer/borgupload
|
||||
name = "Cyborg Upload"
|
||||
@@ -50,6 +72,11 @@
|
||||
circuit = "/obj/item/weapon/circuitboard/borgupload"
|
||||
var/mob/living/silicon/robot/current = null
|
||||
|
||||
/obj/machinery/computer/borgupload/mainframe
|
||||
name = "Borg Mainframe Upload"
|
||||
icon = 'mainframe.dmi'
|
||||
icon_state = "aimainframe"
|
||||
|
||||
|
||||
/obj/machinery/computer/station_alert
|
||||
name = "Station Alert Computer"
|
||||
|
||||
@@ -293,3 +293,13 @@
|
||||
layer = 2
|
||||
icon = 'tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_pie")
|
||||
|
||||
/obj/decal/warning_stripes
|
||||
icon = 'decal_warning_stripes.dmi'
|
||||
layer = 2
|
||||
|
||||
/obj/decal/warning_stripes/New()
|
||||
..()
|
||||
|
||||
loc.overlays += src
|
||||
del src
|
||||
@@ -1,10 +1,11 @@
|
||||
/datum/event/power_offline
|
||||
var/list/protected_areas = list(/area/ai_monitored/storage/eva, /area/engine, /area/toxins/xenobiology, /area/turret_protected/ai)
|
||||
var/list/protected_areas = list(, , , )
|
||||
|
||||
Announce()
|
||||
for(var/obj/machinery/power/apc/a in world)
|
||||
if(!a.crit && a.z == 1)
|
||||
if(a.area in protected_areas)
|
||||
if(istype(a.area, /area/ai_monitored/storage/eva) || istype(a.area, /area/engine)\
|
||||
|| istype(a.area, /area/toxins/xenobiology) || istype(a.area, /area/turret_protected/ai))
|
||||
continue
|
||||
a.eventoff = 1
|
||||
a.update()
|
||||
|
||||
@@ -18,6 +18,24 @@
|
||||
H.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat/white(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
|
||||
var/list/wire_index = list(
|
||||
"Orange" = 1,
|
||||
"Dark red" = 2,
|
||||
"White" = 3,
|
||||
"Yellow" = 4,
|
||||
"Red" = 5,
|
||||
"Blue" = 6,
|
||||
"Green" = 7,
|
||||
"Grey" = 8,
|
||||
"Black" = 9,
|
||||
"Pink" = 10,
|
||||
"Brown" = 11,
|
||||
"Maroon" = 12)
|
||||
H.mind.store_memory("<b>The door wires are as follows:</b>")
|
||||
H.mind.store_memory("<b>Power:</b> [wire_index[airlockIndexToWireColor[2]]] and [wire_index[airlockIndexToWireColor[3]]]")
|
||||
H.mind.store_memory("<b>Backup Power:</b> [wire_index[airlockIndexToWireColor[5]]] and [wire_index[airlockIndexToWireColor[6]]]")
|
||||
H.mind.store_memory("<b>Door Bolts:</b> [wire_index[airlockIndexToWireColor[4]]]")
|
||||
H << "\blue You have memorised the important wires for the vessel. Use them wisely."
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
|
||||
M << 'explosionfar.ogg'
|
||||
if (adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] (<a href=\"byond://?src=%admin_ref%;teleto=\ref[epicenter]\">Jump</a>)")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
tension_master.explosion()
|
||||
|
||||
@@ -58,6 +58,82 @@ AI MODULES
|
||||
usr << "[src.current.name] selected for law changes."
|
||||
|
||||
|
||||
/*Module Storage Unit/Closet! Solid, only modules fit in it.*/
|
||||
/obj/structure/aiuploadcloset
|
||||
name = "AI Mainframe Module Storage Unit"
|
||||
icon = 'mainframe.dmi'
|
||||
icon_state = "right-closed"
|
||||
density = 1
|
||||
|
||||
var/open = 0 /*It's closed!*/
|
||||
|
||||
/obj/structure/aiuploadcloset/New()
|
||||
..()
|
||||
new /obj/item/weapon/aiModule/reset(src)
|
||||
new /obj/item/weapon/aiModule/purge(src)
|
||||
new /obj/item/weapon/aiModule/nanotrasen(src)
|
||||
new /obj/item/weapon/aiModule/paladin(src)
|
||||
new /obj/item/weapon/aiModule/asimov(src)
|
||||
new /obj/item/weapon/aiModule/safeguard(src)
|
||||
new /obj/item/weapon/aiModule/protectStation(src)
|
||||
new /obj/item/weapon/aiModule/quarantine(src)
|
||||
new /obj/item/weapon/aiModule/teleporterOffline(src)
|
||||
new /obj/item/weapon/aiModule/oxygen(src)
|
||||
new /obj/item/weapon/aiModule/oneHuman(src)
|
||||
new /obj/item/weapon/aiModule/freeform(src)
|
||||
for(var/obj/item/weapon/aiModule/M in src)
|
||||
M.pixel_x = rand(-10, 10)
|
||||
M.pixel_y = rand(-10, 10)
|
||||
|
||||
/obj/structure/aiuploadcloset/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/aiModule))
|
||||
user.drop_item()
|
||||
W.loc = get_turf(src)
|
||||
else
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/structure/aiuploadcloset/attack_hand(mob/user as mob)
|
||||
if(!open)
|
||||
var/temp_count
|
||||
for(var/obj/item/weapon/aiModule/M in src)
|
||||
M.loc = src.loc
|
||||
temp_count++
|
||||
|
||||
user << "\blue You open the module storage unit, [temp_count > 0 ? "and take out all the modules." : "\red but it's empty!"]"
|
||||
open = 1
|
||||
icon_state = "right-open"
|
||||
|
||||
else
|
||||
var/temp_count
|
||||
for(var/obj/item/weapon/aiModule/M in get_turf(src))
|
||||
M.loc = src
|
||||
temp_count++
|
||||
|
||||
user << "\blue [temp_count > 0 ? "You put all the modules back into the module storage unit, and then close it." : "You close the module storage unit."]"
|
||||
open = 0
|
||||
icon_state = "right-closed"
|
||||
|
||||
/obj/structure/aiuploadcloset/ex_act(severity)
|
||||
switch(severity)
|
||||
if (1)
|
||||
for(var/obj/item/weapon/aiModule/M in src)
|
||||
M.loc = src.loc
|
||||
M.ex_act(severity)
|
||||
del(src)
|
||||
if (2)
|
||||
if (prob(50))
|
||||
for(var/obj/item/weapon/aiModule/M in src)
|
||||
M.loc = src.loc
|
||||
M.ex_act(severity)
|
||||
del(src)
|
||||
if (3)
|
||||
if (prob(5))
|
||||
for(var/obj/item/weapon/aiModule/M in src)
|
||||
M.loc = src.loc
|
||||
M.ex_act(severity)
|
||||
del(src)
|
||||
|
||||
|
||||
/obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/C)
|
||||
if (istype(C, /obj/machinery/computer/aiupload))
|
||||
var/obj/machinery/computer/aiupload/comp = C
|
||||
|
||||
@@ -343,7 +343,7 @@ FINGERPRINT CARD
|
||||
if (!istype(usr, /mob/living/silicon))
|
||||
if (length(src.fingerprints))
|
||||
if (src.amount > 1)
|
||||
var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( (ismob(src.loc) ? src.loc.loc : src.loc) )
|
||||
var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card(get_turf(src))
|
||||
F.amount = --src.amount
|
||||
src.amount = 1
|
||||
src.icon_state = "fingerprint1"
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
M.client.muted_complete = !M.client.muted_complete
|
||||
log_admin("[key_name(usr)] has [(M.client.muted_complete ? "completely muted" : "voiced (complete)")] [key_name(M)].")
|
||||
message_admins("\blue [key_name_admin(usr)] has [(M.client.muted_complete ? "completely muted" : "voiced (complete)")] [key_name_admin(M)].", 1)
|
||||
M << "You have been [(M.client.muted_complete ? "completely muted" : "voiced (complete)")]. You are unable to speak or even adminhelp"
|
||||
M << "You have been [(M.client.muted_complete ? "completely muted" : "voiced (complete)")]. You are unable to speak."
|
||||
|
||||
if (href_list["c_mode"])
|
||||
if ((src.rank in list( "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
if (!msg)
|
||||
return
|
||||
|
||||
if (usr.client && usr.client.muted_complete)
|
||||
return
|
||||
// if (usr.client && usr.client.muted_complete)
|
||||
// return
|
||||
|
||||
for (var/mob/M in world)
|
||||
if (M.client && M.client.holder && (M.client.holder.level != -3))
|
||||
|
||||
@@ -243,7 +243,7 @@ proc/check_panel(mob/M)
|
||||
M << "\red <B>[my_target] flails around wildly.</B>"
|
||||
my_target.show_message("\red <B>[src] has been attacked by [my_target] </B>", 1) //Lazy.
|
||||
|
||||
//src.health -= P.power
|
||||
src.health -= P.force
|
||||
|
||||
|
||||
return
|
||||
@@ -256,12 +256,13 @@ proc/check_panel(mob/M)
|
||||
O << "\red <B>[my_target] stumbles around.</B>"
|
||||
|
||||
New()
|
||||
..()
|
||||
spawn(300)
|
||||
if(my_target)
|
||||
my_target.hallucinations -= src
|
||||
del(src)
|
||||
step_away(src,my_target,2)
|
||||
proccess()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
proc/updateimage()
|
||||
@@ -283,8 +284,7 @@ proc/check_panel(mob/M)
|
||||
my_target << currentimage
|
||||
|
||||
|
||||
proc/proccess()
|
||||
if(!my_target) spawn(5) .()
|
||||
process()
|
||||
if(src.health < 0)
|
||||
collapse()
|
||||
return
|
||||
@@ -312,7 +312,6 @@ proc/check_panel(mob/M)
|
||||
|
||||
if(prob(15))
|
||||
step_away(src,my_target,2)
|
||||
spawn(5) .()
|
||||
|
||||
proc/collapse()
|
||||
collapse = 1
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
+6158
-6160
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user