mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Merge pull request #1534 from caelaislinn/master
blast doors, lockdown comp, pets
This commit is contained in:
@@ -9,32 +9,29 @@
|
||||
circuit = "/obj/item/weapon/circuitboard/lockdown"
|
||||
var/connected_doors
|
||||
var/department*/
|
||||
var/list/displayedNetworks
|
||||
|
||||
New()
|
||||
..()
|
||||
connected_doors = new/list()
|
||||
displayedNetworks = new/list()
|
||||
//only load blast doors for map-defined departments for the moment
|
||||
//door networks are hardcoded here.
|
||||
switch(department)
|
||||
if("Engineering")
|
||||
//Antiqua SinguloEngineering
|
||||
connected_doors.Add("Engineering Primary Access")
|
||||
connected_doors.Add("Engineering Secondary Access")
|
||||
connected_doors.Add("Fore Maintenance Access")
|
||||
connected_doors.Add("Aft Maintenance Access")
|
||||
connected_doors.Add("Particle Accelerator Rad Shielding")
|
||||
connected_doors.Add("Foreward Emitter Array Rad Shielding")
|
||||
connected_doors.Add("Aftward Emitter Array Rad Shielding")
|
||||
connected_doors.Add("Starboard Observation Rad Shielding")
|
||||
connected_doors.Add("Atmospheric Storage Rad Shielding")
|
||||
connected_doors.Add("Construction Storage Rad Shielding")
|
||||
connected_doors.Add("Engineering Secure Storage")
|
||||
//Antiqua RustEngineering
|
||||
connected_doors.Add("Port vessel entry")
|
||||
connected_doors.Add("Starboard vessel entry")
|
||||
connected_doors.Add("Central aft shell access")
|
||||
connected_doors.Add("Port aft shell access")
|
||||
connected_doors.Add("Starboard aft shell access")
|
||||
connected_doors.Add("Engineering")
|
||||
//Antiqua Engineering
|
||||
connected_doors.Add("Reactor core")
|
||||
connected_doors.Add("Control Room")
|
||||
connected_doors.Add("Vent Seal")
|
||||
connected_doors.Add("Rig Storage")
|
||||
connected_doors.Add("Fore Port Shutters")
|
||||
connected_doors.Add("Fore Starboard Shutters")
|
||||
connected_doors.Add("Electrical Storage Shutters")
|
||||
connected_doors.Add("Locker Room Shutters")
|
||||
connected_doors.Add("Breakroom Shutters")
|
||||
connected_doors.Add("Observation Shutters")
|
||||
//exodus engineering
|
||||
if("Medbay")
|
||||
//Exodus Medbay
|
||||
connected_doors.Add("Genetics Outer Shutters")
|
||||
@@ -47,14 +44,20 @@
|
||||
|
||||
for(var/net in connected_doors)
|
||||
connected_doors[net] = new/list()
|
||||
world << "network: [net]"
|
||||
|
||||
//loop through the world, grabbing all the relevant doors
|
||||
spawn(1)
|
||||
for(var/obj/machinery/door/poddoor/D in world)
|
||||
if(D.id in connected_doors)
|
||||
var/list/L = connected_doors[D.id]
|
||||
L.Add(D)
|
||||
ConnectDoors()
|
||||
|
||||
proc/ConnectDoors()
|
||||
for(var/list/L in connected_doors)
|
||||
for(var/item in L)
|
||||
L.Remove(item)
|
||||
//
|
||||
for(var/obj/machinery/door/poddoor/D in world)
|
||||
if(D.network in connected_doors)
|
||||
var/list/L = connected_doors[D.network]
|
||||
L.Add(D)
|
||||
|
||||
attack_ai(mob/user)
|
||||
attack_hand(user)
|
||||
@@ -71,7 +74,8 @@
|
||||
return
|
||||
|
||||
var/t = "<B>Lockdown Control</B><BR>"
|
||||
t += "<A href='?src=\ref[src];close=1'>Close</A><hr>"
|
||||
t += "<A href='?src=\ref[src];refresh=1'>Refresh</A><BR>"
|
||||
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
|
||||
t += "<table border=1>"
|
||||
var/empty = 1
|
||||
for(var/curNetId in connected_doors)
|
||||
@@ -80,36 +84,57 @@
|
||||
continue
|
||||
empty = 0
|
||||
t += "<tr>"
|
||||
t += "<td><b>" + curNetId + "<b></td>"
|
||||
t += "<td><b><a href='?src=\ref[src];open_net=[curNetId]'>Disable lockdown</a> / <a href='?src=\ref[src];close_net=[curNetId]'>Enable lockdown</a></b></td>"
|
||||
t += "</tr>"
|
||||
|
||||
for(var/obj/machinery/door/poddoor/D in connected_doors[curNetId])
|
||||
t += "<tr>"
|
||||
if(istype(D,/obj/machinery/door/poddoor/shutters))
|
||||
t += "<td> Shutter</td>"
|
||||
else
|
||||
t += "<td> Blast door</td>"
|
||||
if(D.density)
|
||||
//t += "<td><a href='?src=\ref[D];open=1'>Open</a> - Close</td>"
|
||||
t += "Closed"
|
||||
else
|
||||
//t += "<td>Open - <a href='?src=\ref[D];close=1'>Close</a></td>"
|
||||
t += "Open"
|
||||
if(curNetId in displayedNetworks)
|
||||
t += "<td><a href='?src=\ref[src];hide_net=[curNetId]'>\[-\]</a><b> " + curNetId + "<b></td>"
|
||||
t += "<td colspan=\"2\"><b><a href='?src=\ref[src];open_net=[curNetId]'>Open all</a> / <a href='?src=\ref[src];close_net=[curNetId]'>Close all</a></b></td>"
|
||||
t += "</tr>"
|
||||
|
||||
for(var/obj/machinery/door/poddoor/D in connected_doors[curNetId])
|
||||
t += "<tr>"
|
||||
t += "<td>[D.id]</td>"
|
||||
|
||||
if(istype(D,/obj/machinery/door/poddoor/shutters))
|
||||
t += "<td>Shutter ([D.density ? "Closed" : "Open"])</td>"
|
||||
else
|
||||
t += "<td>Blast door ([D.density ? "Closed" : "Open"])</td>"
|
||||
t += "<td><b><a href='?src=\ref[D];toggle=1'>Toggle</a></b></td>"
|
||||
t += "</tr>"
|
||||
else
|
||||
t += "<td><a href='?src=\ref[src];show_net=[curNetId]'>\[+\]</a> <b>" + curNetId + "<b></td>"
|
||||
t += "</table>"
|
||||
if(empty)
|
||||
t += "\red No networks connected.<br>"
|
||||
t += "<A href='?src=\ref[src];refresh=1'>Refresh</A><BR>"
|
||||
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
|
||||
user << browse(t, "window=lockdown;size=500x800")
|
||||
user << browse(t, "window=lockdown;size=550x600")
|
||||
onclose(user, "lockdown")
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
|
||||
if( href_list["close"] )
|
||||
usr << browse(null, "window=lockdown")
|
||||
usr.machine = null
|
||||
return
|
||||
|
||||
if( href_list["show_net"] )
|
||||
displayedNetworks.Add(href_list["show_net"])
|
||||
updateDialog()
|
||||
|
||||
if( href_list["hide_net"] )
|
||||
if(href_list["hide_net"] in displayedNetworks)
|
||||
displayedNetworks.Remove(href_list["hide_net"])
|
||||
updateDialog()
|
||||
|
||||
if( href_list["toggle_id"] )
|
||||
var/idTag = href_list["toggle_id"]
|
||||
for(var/net in connected_doors)
|
||||
for(var/obj/machinery/door/poddoor/D in connected_doors[net])
|
||||
if(D.id == idTag)
|
||||
if(D.density)
|
||||
D.open()
|
||||
else
|
||||
D.close()
|
||||
break
|
||||
|
||||
if( href_list["open_net"] )
|
||||
var/netTag = href_list["open_net"]
|
||||
@@ -117,8 +142,6 @@
|
||||
if(D.density) //for some reason, there's no var saying whether the door is open or not >.>
|
||||
spawn(0)
|
||||
D.open()
|
||||
src.updateDialog()
|
||||
return
|
||||
|
||||
if( href_list["close_net"] )
|
||||
var/netTag = href_list["close_net"]
|
||||
@@ -126,25 +149,5 @@
|
||||
if(!D.density)
|
||||
spawn(0)
|
||||
D.close()
|
||||
src.updateDialog()
|
||||
return
|
||||
|
||||
if( href_list["close_all"] )
|
||||
for(var/netTag in connected_doors)
|
||||
for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
|
||||
if(!D.density)
|
||||
spawn(0)
|
||||
D.close()
|
||||
src.updateDialog()
|
||||
return
|
||||
|
||||
if( href_list["open_all"] )
|
||||
for(var/netTag in connected_doors)
|
||||
for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
|
||||
if(D.density)
|
||||
spawn(0)
|
||||
D.open()
|
||||
src.updateDialog()
|
||||
return
|
||||
|
||||
src.updateDialog()
|
||||
|
||||
@@ -4,6 +4,19 @@
|
||||
icon = 'rapid_pdoor.dmi'
|
||||
icon_state = "pdoor1"
|
||||
var/id = ""
|
||||
var/network = ""
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if( href_list["open"] )
|
||||
open()
|
||||
if( href_list["close"] )
|
||||
close()
|
||||
if( href_list["toggle"] )
|
||||
if(src.density)
|
||||
open()
|
||||
else
|
||||
close()
|
||||
|
||||
/obj/machinery/door/poddoor/Bumped(atom/AM)
|
||||
if(!density)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Shutters"
|
||||
icon = 'rapid_pdoor.dmi'
|
||||
icon_state = "shutter1"
|
||||
desc = "Steel-reinforced privacy."
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/New()
|
||||
..()
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster
|
||||
|
||||
var/obj/item/device/radio/headset/ears = null
|
||||
var/obj/item/device/radio/headset/l_ear = null
|
||||
/mob/living/simple_animal/New()
|
||||
..()
|
||||
verbs -= /mob/verb/observe
|
||||
@@ -126,38 +126,15 @@
|
||||
|
||||
|
||||
//Speaking
|
||||
if(speak_chance)
|
||||
if(prob(speak_chance))
|
||||
if(speak && speak.len)
|
||||
if((emote_hear && emote_hear.len) || (emote_see && emote_see.len))
|
||||
var/length = speak.len
|
||||
if(emote_hear && emote_hear.len)
|
||||
length += emote_hear.len
|
||||
if(emote_see && emote_see.len)
|
||||
length += emote_see.len
|
||||
var/randomValue = rand(1,length)
|
||||
if(randomValue <= speak.len)
|
||||
say(pick(speak))
|
||||
else
|
||||
randomValue -= speak.len
|
||||
if(emote_see && randomValue <= emote_see.len)
|
||||
emote(pick(emote_see),1)
|
||||
else
|
||||
emote(pick(emote_hear),2)
|
||||
else
|
||||
say(pick(speak))
|
||||
else
|
||||
if(!(emote_hear && emote_hear.len) && (emote_see && emote_see.len))
|
||||
emote(pick(emote_see),1)
|
||||
if((emote_hear && emote_hear.len) && !(emote_see && emote_see.len))
|
||||
emote(pick(emote_hear),2)
|
||||
if((emote_hear && emote_hear.len) && (emote_see && emote_see.len))
|
||||
var/length = emote_hear.len + emote_see.len
|
||||
var/pick = rand(1,length)
|
||||
if(pick <= emote_see.len)
|
||||
emote(pick(emote_see),1)
|
||||
else
|
||||
emote(pick(emote_hear),2)
|
||||
if(prob(speak_chance))
|
||||
var/length = speak.len + emote_hear.len + emote_see.len
|
||||
if(speak.len && prob((speak.len / length) * 100))
|
||||
say(pick(speak))
|
||||
else if(emote_see.len && prob((emote_see.len / length) * 100))
|
||||
emote("auto",1,pick(emote_see))
|
||||
else if(emote_hear.len)
|
||||
emote("auto",2,pick(emote_hear))
|
||||
//var/act,var/m_type=1,var/message = null
|
||||
|
||||
|
||||
//Atmos
|
||||
@@ -278,8 +255,11 @@
|
||||
m_type = 2
|
||||
else
|
||||
message = "<B>[src]</B> [message]"
|
||||
if("auto")
|
||||
message = "<B>[src]</B> [message]"
|
||||
else
|
||||
src << text("Invalid Emote: []", act)
|
||||
if(!message)
|
||||
src << text("Invalid Emote: []", act)
|
||||
if ((message && src.stat == 0))
|
||||
if (m_type & 1)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
//kobold
|
||||
/mob/living/simple_animal/kobold
|
||||
name = "kobold"
|
||||
desc = "A small, rat-like creature."
|
||||
icon = 'mob.dmi'
|
||||
icon_state = "kobold_idle"
|
||||
icon_living = "kobold_idle"
|
||||
icon_dead = "kobold_dead"
|
||||
speak = list("You no take candle!","Ooh, pretty shiny.","Me take?","Where gold here...","Me likey.")
|
||||
speak_emote = list("mutters","hisses","grumbles")
|
||||
emote_hear = list("mutters under it's breath.","grumbles.", "yips!")
|
||||
emote_see = list("looks around suspiciously.", "scratches it's arm.","putters around a bit.")
|
||||
speak_chance = 15
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meat
|
||||
response_help = "pets the"
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "kicks the"
|
||||
|
||||
/mob/living/simple_animal/kobold/Life()
|
||||
..()
|
||||
if(prob(15) && turns_since_move)
|
||||
flick("kobold_act",src)
|
||||
|
||||
/mob/living/simple_animal/kobold/Move(var/dir)
|
||||
..()
|
||||
flick("kobold_walk",src)
|
||||
|
||||
/mob/living/simple_animal/kobold/munchkin
|
||||
name = "Munchkin"
|
||||
@@ -2,26 +2,26 @@
|
||||
name = "\improper Parrot"
|
||||
desc = "It's a parrot! No dirty words!"
|
||||
icon = 'mob.dmi'
|
||||
icon_state = "cat"
|
||||
icon_living = "cat"
|
||||
icon_dead = "cat_dead"
|
||||
icon_state = "parrot"
|
||||
icon_living = "parrot"
|
||||
icon_dead = "parrot_dead"
|
||||
speak = list("Hi","Hello!","Cracker?","BAWWWWK george mellons griffing me")
|
||||
speak_emote = list("squawks","says","yells")
|
||||
emote_hear = list("squawks","bawks")
|
||||
emote_see = list("flutters its wings", "glares at you")
|
||||
speak_chance = 1
|
||||
emote_hear = list("squawks.","bawks.")
|
||||
emote_see = list("flutters its wings.", "glares at you.")
|
||||
speak_chance = 5
|
||||
turns_per_move = 5
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/cracker/
|
||||
response_help = "pets the"
|
||||
response_disarm = "gently moves aside the"
|
||||
response_harm = "swats the"
|
||||
|
||||
ears = new /obj/item/device/radio/headset/heads/ce()
|
||||
l_ear = new /obj/item/device/radio/headset/headset_eng()
|
||||
|
||||
/mob/living/simple_animal/parrot/DrProfessor
|
||||
name = "Doctor Professor Parrot, PhD"
|
||||
desc = "That's the Doctor Professor. He has more degrees than all of the engineering team put together, and has several published papers on quantum cracker theory."
|
||||
speak = list(":e Check the singlo, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN RIG SUIT?",":e OH GOD ITS FREE CALL THE SHUTTLE")
|
||||
speak = list(":e Check the singlo, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN RIG SUIT?",":e OH GOD ITS FREE CALL THE SHUTTLE",":e Open secure storage please.",":e I think something happened to the containment field...")
|
||||
response_harm = "is attacked in the face by"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cracker/
|
||||
@@ -33,8 +33,8 @@
|
||||
if(user.stat) return
|
||||
|
||||
var/dat = "<div align='center'><b>Inventory of [name]</b></div><p>"
|
||||
if(ears)
|
||||
dat += "<br><b>Headset:</b> [ears] (<a href='?src=\ref[src];remove_inv=ears'>Remove</a>)"
|
||||
if(l_ear)
|
||||
dat += "<br><b>Headset:</b> [l_ear] (<a href='?src=\ref[src];remove_inv=ears'>Remove</a>)"
|
||||
else
|
||||
dat += "<br><b>Headset:</b> <a href='?src=\ref[src];add_inv=ears'>Nothing</a>"
|
||||
|
||||
@@ -54,10 +54,10 @@
|
||||
var/remove_from = href_list["remove_inv"]
|
||||
switch(remove_from)
|
||||
if("ears")
|
||||
if(ears)
|
||||
if(l_ear)
|
||||
src.say(":e BAWWWWWK LEAVE THE HEADSET BAWKKKKK!")
|
||||
ears.loc = src.loc
|
||||
ears = null
|
||||
l_ear.loc = src.loc
|
||||
l_ear = null
|
||||
else
|
||||
usr << "\red There is nothing to remove from its [remove_from]."
|
||||
return
|
||||
@@ -72,7 +72,7 @@
|
||||
return
|
||||
switch(add_to)
|
||||
if("ears")
|
||||
if(ears)
|
||||
if(l_ear)
|
||||
usr << "\red It's already wearing something."
|
||||
return
|
||||
else
|
||||
@@ -86,6 +86,6 @@
|
||||
|
||||
usr.drop_item()
|
||||
item_to_add.loc = src
|
||||
src.ears = item_to_add
|
||||
src.l_ear = item_to_add
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
if(lastgenlev != 0)
|
||||
overlays += image('power.dmi', "teg-op[lastgenlev]")
|
||||
|
||||
#define GENRATE 0.05 // generator output coefficient from Q
|
||||
#define MAX_SAFE_OUTPUT 500000
|
||||
#define GENRATE 0.1 // generator output coefficient from Q
|
||||
#define MAX_SAFE_OUTPUT 1000000
|
||||
|
||||
/obj/machinery/power/generator/process()
|
||||
|
||||
@@ -108,6 +108,9 @@
|
||||
|
||||
if(stat & (BROKEN|NOPOWER)) return
|
||||
|
||||
if(lastgenlev > MAX_SAFE_OUTPUT)
|
||||
electrocute_mob(user, get_area(src), src, 0.7)
|
||||
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/power/generator/proc/interact(mob/user)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
return
|
||||
rpm = 0.9* rpm + 0.1 * rpmtarget
|
||||
var/datum/gas_mixture/environment = inturf.return_air()
|
||||
var/transfer_moles = environment.total_moles/10
|
||||
var/transfer_moles = environment.total_moles/50
|
||||
//var/transfer_moles = rpm/10000*capacity
|
||||
var/datum/gas_mixture/removed = inturf.remove_air(transfer_moles)
|
||||
gas_contained.merge(removed)
|
||||
@@ -274,8 +274,9 @@
|
||||
return
|
||||
user.machine = src
|
||||
|
||||
var/dat = "<TT><B>Gas turbine remote control system</B>"
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A><BR>"
|
||||
var/dat = "<TT><B>Gas turbine remote control system</B>BR"
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</A><br>"
|
||||
dat += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
|
||||
dat += "<HR>"
|
||||
|
||||
if(src.doors.len)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 192 KiB After Width: | Height: | Size: 194 KiB |
+2421
-2413
File diff suppressed because it is too large
Load Diff
+7571
-7569
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user