mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 12:37:26 +01:00
@@ -99,7 +99,7 @@
|
||||
var/canmove = 1.0
|
||||
var/eye_stat = null//Living, potentially Carbon
|
||||
|
||||
|
||||
var/name_archive //For admin things like possession
|
||||
|
||||
var/timeofdeath = 0.0//Living
|
||||
var/cpr_time = 1.0//Carbon
|
||||
|
||||
@@ -10,69 +10,73 @@
|
||||
if(!ticker || wavesecret)
|
||||
return
|
||||
|
||||
wavesecret = 1
|
||||
for(var/i = 0 to number)
|
||||
spawn(rand(10,100))
|
||||
spawn_meteor()
|
||||
spawn(meteor_wave_delay)
|
||||
wavesecret = 0
|
||||
|
||||
/proc/spawn_meteors(var/number = meteors_in_small_wave)
|
||||
for(var/i = 0; i < number; i++)
|
||||
spawn(0)
|
||||
spawn_meteor()
|
||||
|
||||
/proc/spawn_meteor()
|
||||
|
||||
var/startx
|
||||
var/starty
|
||||
var/endx
|
||||
var/endy
|
||||
var/turf/pickedstart
|
||||
var/turf/pickedgoal
|
||||
switch(pick(1,2,3,4))
|
||||
if(1) //NORTH
|
||||
starty = world.maxy-3
|
||||
startx = rand(1, world.maxx-1)
|
||||
endy = 1
|
||||
endx = rand(1, world.maxx-1)
|
||||
if(2) //EAST
|
||||
starty = rand(1,world.maxy-1)
|
||||
startx = world.maxx-3
|
||||
endy = rand(1, world.maxy-1)
|
||||
endx = 1
|
||||
if(3) //SOUTH
|
||||
starty = 3
|
||||
startx = rand(1, world.maxx-1)
|
||||
endy = world.maxy-1
|
||||
endx = rand(1, world.maxx-1)
|
||||
if(4) //WEST
|
||||
starty = rand(1, world.maxy-1)
|
||||
startx = 3
|
||||
endy = rand(1,world.maxy-1)
|
||||
endx = world.maxx-1
|
||||
pickedstart = locate(startx, starty, 1)
|
||||
pickedgoal = locate(endx, endy, 1)
|
||||
wavesecret = 1
|
||||
for(var/i = 0 to number)
|
||||
spawn(rand(10,100))
|
||||
spawn_meteor(pickedstart, pickedgoal)
|
||||
spawn(meteor_wave_delay)
|
||||
wavesecret = 0
|
||||
var/max_i = 10//number of tries to spawn meteor.
|
||||
|
||||
/proc/spawn_meteors(var/turf/pickedstart, var/turf/pickedgoal, var/number = meteors_in_small_wave)
|
||||
for(var/i = 0; i < number; i++)
|
||||
spawn(0)
|
||||
spawn_meteor(pickedstart, pickedgoal)
|
||||
|
||||
/proc/spawn_meteor(var/turf/pickedstart, var/turf/pickedgoal)
|
||||
do
|
||||
switch(pick(1,2,3,4))
|
||||
if(1) //NORTH
|
||||
starty = world.maxy-3
|
||||
startx = rand(1, world.maxx-1)
|
||||
endy = 1
|
||||
endx = rand(1, world.maxx-1)
|
||||
if(2) //EAST
|
||||
starty = rand(1,world.maxy-1)
|
||||
startx = world.maxx-3
|
||||
endy = rand(1, world.maxy-1)
|
||||
endx = 1
|
||||
if(3) //SOUTH
|
||||
starty = 3
|
||||
startx = rand(1, world.maxx-1)
|
||||
endy = world.maxy-1
|
||||
endx = rand(1, world.maxx-1)
|
||||
if(4) //WEST
|
||||
starty = rand(1, world.maxy-1)
|
||||
startx = 3
|
||||
endy = rand(1,world.maxy-1)
|
||||
endx = world.maxx-1
|
||||
|
||||
pickedstart = locate(startx, starty, 1)
|
||||
pickedgoal = locate(endx, endy, 1)
|
||||
max_i--
|
||||
if(max_i<=0) return
|
||||
|
||||
while (!istype(pickedstart, /turf/space) || pickedstart.loc.name != "Space" ) //FUUUCK, should never happen.
|
||||
|
||||
var/route = rand(1,5)
|
||||
var/turf/tempgoal = pickedgoal
|
||||
for(var/i, i < route, i++)
|
||||
tempgoal = get_step(tempgoal,rand(1,8))
|
||||
|
||||
var/obj/effect/meteor/M
|
||||
switch(rand(1, 100))
|
||||
if(1 to 15)
|
||||
M = new /obj/effect/meteor/big(pickedstart)
|
||||
if(16 to 75)
|
||||
|
||||
if(1 to 10)
|
||||
M = new /obj/effect/meteor/big( pickedstart )
|
||||
if(11 to 75)
|
||||
M = new /obj/effect/meteor( pickedstart )
|
||||
if(76 to 100)
|
||||
M = new /obj/effect/meteor/small( pickedstart )
|
||||
|
||||
M.dest = tempgoal
|
||||
|
||||
do
|
||||
sleep(1)
|
||||
M.dest = pickedgoal
|
||||
spawn(0)
|
||||
walk_towards(M, M.dest, 1)
|
||||
while (!istype(M.loc, /turf/space) || pickedstart.loc.name != "Space" ) //FUUUCK, should never happen.
|
||||
|
||||
return
|
||||
|
||||
@@ -133,12 +137,7 @@
|
||||
if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view
|
||||
shake_camera(M, 3, 1)
|
||||
if (A)
|
||||
if(isobj(A))
|
||||
del(A)
|
||||
else
|
||||
A.meteorhit(src)
|
||||
src.hits--
|
||||
return
|
||||
explosion(src.loc, 0, 1, 2, 3, 0)
|
||||
playsound(src.loc, 'meteorimpact.ogg', 40, 1)
|
||||
if (--src.hits <= 0)
|
||||
if(prob(15) && !istype(A, /obj/structure/grille))
|
||||
|
||||
@@ -26,11 +26,12 @@ Buildable meters
|
||||
var/pipe_type = 0
|
||||
//var/pipe_dir = 0
|
||||
var/pipename
|
||||
force = 7
|
||||
icon = 'pipe-item.dmi'
|
||||
icon_state = "simple"
|
||||
item_state = "buildpipe"
|
||||
flags = TABLEPASS|FPRINT
|
||||
w_class = 4
|
||||
w_class = 3
|
||||
level = 2
|
||||
|
||||
/obj/item/pipe/New(var/loc, var/pipe_type as num, var/dir as num, var/obj/machinery/atmospherics/make_from = null)
|
||||
|
||||
+50
-37
@@ -93,7 +93,7 @@ var/list/supply_groups = new()
|
||||
icon_state = "request"
|
||||
circuit = "/obj/item/weapon/circuitboard/ordercomp"
|
||||
var/temp = null
|
||||
|
||||
var/reqtime = 0 //Cooldown for requisitions - Quarxink
|
||||
/obj/machinery/computer/ordercomp/New()
|
||||
// add the supply pack groups, if they haven't already been added
|
||||
if(supply_groups.len == 0)
|
||||
@@ -154,10 +154,12 @@ var/list/supply_groups = new()
|
||||
//if((locate(/mob/living) in T) && (!locate(/mob/living/carbon/monkey) in T)) return 0 //old check for living excluded monkeys
|
||||
if((locate(/mob/living) in T)) return 0
|
||||
if((locate(/obj/item/device/radio/beacon) in T)) return 0
|
||||
if((locate(/obj/mecha) in T)) return 0
|
||||
for(var/atom/ATM in T)
|
||||
if((locate(/mob/living/carbon) in ATM)) return 0 // allow simple_animals to be transported in containers
|
||||
if((locate(/mob/living/silicon) in ATM)) return 0
|
||||
if((locate(/obj/item/device/radio/beacon) in ATM)) return 0
|
||||
if((locate(/obj/mecha ) in ATM)) return 0
|
||||
|
||||
return 1
|
||||
|
||||
@@ -302,44 +304,55 @@ var/list/supply_groups = new()
|
||||
src.temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
|
||||
else if (href_list["printform"])
|
||||
var/supplytype = href_list["printform"]
|
||||
var/datum/supply_packs/P = new supplytype ()
|
||||
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(src.loc)
|
||||
var/idname = "Unknown"
|
||||
var/idrank = "Unknown"
|
||||
var/reason = input(usr,"Reason:","Why do you require this item?","")
|
||||
if (!reqtime)
|
||||
var/supplytype = href_list["printform"]
|
||||
var/datum/supply_packs/P = new supplytype ()
|
||||
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(src.loc)
|
||||
var/idname = "Unknown"
|
||||
var/idrank = "Unknown"
|
||||
var/reason = input(usr,"Reason:","Why do you require this item?","")
|
||||
|
||||
reqform.name = "Requisition Form - [P.name]"
|
||||
reqform.overlays += "paper_words"
|
||||
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
|
||||
reqform.name = "Requisition Form - [P.name]"
|
||||
reqform.overlays += "paper_words"
|
||||
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
|
||||
|
||||
if (istype(usr:wear_id, /obj/item/weapon/card/id))
|
||||
if(usr:wear_id.registered)
|
||||
idname = usr:wear_id.registered
|
||||
if(usr:wear_id.assignment)
|
||||
idrank = usr:wear_id.assignment
|
||||
if (istype(usr:wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = usr:wear_id
|
||||
if(pda.owner)
|
||||
idname = pda.owner
|
||||
if(pda.ownjob)
|
||||
idrank = pda.ownjob
|
||||
else
|
||||
idname = usr.name
|
||||
|
||||
reqform.info += "REQUESTED BY: [idname]<br>"
|
||||
reqform.info += "RANK: [idrank]<br>"
|
||||
reqform.info += "REASON: [reason]<br>"
|
||||
reqform.info += "SUPPLY CRATE TYPE: [P.name]<br>"
|
||||
reqform.info += "Contents:<br><ul>"
|
||||
|
||||
for(var/B in P.contains)
|
||||
var/thepath = text2path(B)
|
||||
var/atom/B2 = new thepath ()
|
||||
reqform.info += "<li>[B2.name]</li>"
|
||||
reqform.info += "</ul><hr>"
|
||||
reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:<br>"
|
||||
|
||||
reqtime = 5 //5 second cooldown initiated after each printed req, change the number to change the cooldown (in seconds) - Quarxink
|
||||
spawn(0)
|
||||
while(reqtime >=1 && src)
|
||||
sleep(10)
|
||||
reqtime --
|
||||
reqtime = 0
|
||||
|
||||
if (istype(usr:wear_id, /obj/item/weapon/card/id))
|
||||
if(usr:wear_id.registered)
|
||||
idname = usr:wear_id.registered
|
||||
if(usr:wear_id.assignment)
|
||||
idrank = usr:wear_id.assignment
|
||||
if (istype(usr:wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = usr:wear_id
|
||||
if(pda.owner)
|
||||
idname = pda.owner
|
||||
if(pda.ownjob)
|
||||
idrank = pda.ownjob
|
||||
else
|
||||
idname = usr.name
|
||||
|
||||
reqform.info += "REQUESTED BY: [idname]<br>"
|
||||
reqform.info += "RANK: [idrank]<br>"
|
||||
reqform.info += "REASON: [reason]<br>"
|
||||
reqform.info += "SUPPLY CRATE TYPE: [P.name]<br>"
|
||||
reqform.info += "Contents:<br><ul>"
|
||||
|
||||
for(var/B in P.contains)
|
||||
var/thepath = text2path(B)
|
||||
var/atom/B2 = new thepath ()
|
||||
reqform.info += "<li>[B2.name]</li>"
|
||||
reqform.info += "</ul><hr>"
|
||||
reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:<br>"
|
||||
|
||||
for (var/mob/V in hearers(src))
|
||||
V.show_message("<b>[src]</b>'s monitor flashes, \"[reqtime] seconds remaining until another requisition form may be printed.\"")
|
||||
else if (href_list["vieworders"])
|
||||
src.temp = "Current approved orders: <BR><BR>"
|
||||
for(var/S in supply_shuttle_shoppinglist)
|
||||
@@ -433,7 +446,7 @@ var/list/supply_groups = new()
|
||||
if(!supply_shuttle_at_station || supply_shuttle_moving) return
|
||||
|
||||
if (!supply_can_move())
|
||||
usr << "\red The supply shuttle can not transport station employees or homing beacons."
|
||||
usr << "\red The supply shuttle can not transport station employees, exosuits, or homing beacons."
|
||||
return
|
||||
|
||||
src.temp = "Shuttle sent.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
|
||||
@@ -271,6 +271,18 @@
|
||||
/proc/possess(obj/O as obj in world)
|
||||
set name = "Possess Obj"
|
||||
set category = "Object"
|
||||
var/turf/T = get_turf(O)
|
||||
|
||||
if(T)
|
||||
log_admin("[key_name(usr)] has possessed [O] ([O.type]) at ([T.x], [T.y], [T.z])")
|
||||
message_admins("[key_name(usr)] has possessed [O] ([O.type]) at ([T.x], [T.y], [T.z])", 1)
|
||||
else
|
||||
log_admin("[key_name(usr)] has possessed [O] ([O.type]) at an unknown location")
|
||||
message_admins("[key_name(usr)] has possessed [O] ([O.type]) at an unknown location", 1)
|
||||
|
||||
if(!usr.control_object) //If you're not already possessing something...
|
||||
usr.name_archive = usr.real_name
|
||||
|
||||
usr.loc = O
|
||||
usr.real_name = O.name
|
||||
usr.name = O.name
|
||||
@@ -281,10 +293,17 @@
|
||||
set name = "Release Obj"
|
||||
set category = "Object"
|
||||
//usr.loc = get_turf(usr)
|
||||
|
||||
if(usr.control_object && usr.name_archive) //if you have a name archived and if you are actually relassing an object
|
||||
usr.real_name = usr.name_archive
|
||||
usr.name = usr.real_name
|
||||
usr.update_clothing() //So the name is updated properly
|
||||
|
||||
usr.loc = O.loc // Appear where the object you were controlling is -- TLE
|
||||
usr.client.eye = usr
|
||||
usr.control_object = null
|
||||
|
||||
|
||||
/proc/givetestverbs(mob/M as mob in world)
|
||||
set desc = "Give this guy possess/release verbs"
|
||||
set category = "Debug"
|
||||
|
||||
@@ -873,6 +873,8 @@
|
||||
/obj/machinery/power/apc/proc/malfoccupy(var/mob/living/silicon/ai/malf)
|
||||
if(!istype(malf))
|
||||
return
|
||||
if(src.z != 1)
|
||||
return
|
||||
src.occupant = new /mob/living/silicon/ai(src,malf.laws,null,1)
|
||||
src.occupant.adjustOxyLoss(malf.getOxyLoss())
|
||||
src.occupant.name = "[malf.name] APC Copy"
|
||||
|
||||
@@ -108,6 +108,13 @@
|
||||
if(istext(text))
|
||||
details = text
|
||||
|
||||
proc/add_details(var/text)
|
||||
if(istext(text))
|
||||
if(!details)
|
||||
details = text
|
||||
else
|
||||
details += " [text]"
|
||||
|
||||
proc/get_details()
|
||||
return details
|
||||
|
||||
@@ -241,4 +248,16 @@ proc/feedback_set_details(var/variable,var/details)
|
||||
|
||||
if(!FV) return
|
||||
|
||||
FV.set_details(details)
|
||||
FV.set_details(details)
|
||||
|
||||
proc/feedback_add_details(var/variable,var/details)
|
||||
if(!blackbox) return
|
||||
|
||||
variable = sql_sanitize_text(variable)
|
||||
details = sql_sanitize_text(details)
|
||||
|
||||
var/datum/feedback_variable/FV = blackbox.find_feedback_datum(variable)
|
||||
|
||||
if(!FV) return
|
||||
|
||||
FV.add_details(details)
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Reference in New Issue
Block a user