mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 21:48:21 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -172,6 +172,7 @@
|
||||
temperature_expose(datum/gas_mixture/air, temperature, volume)
|
||||
if(temperature > T0C+200)
|
||||
health -= 0.01 * temperature
|
||||
update()
|
||||
proc/expand(var/turf/T = null)
|
||||
if(!prob(health)) return//TODO: Change this to prob(health + o2 mols or such)
|
||||
if(!T)
|
||||
|
||||
@@ -85,11 +85,16 @@
|
||||
else
|
||||
for(var/i = 1, i <= rand(1,3), i++)
|
||||
switch(rand(1,100))
|
||||
if(1 to 40)
|
||||
if(1 to 30)
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
kill_objective.owner = traitor
|
||||
kill_objective.find_target()
|
||||
traitor.objectives += kill_objective
|
||||
if(31 to 40)
|
||||
var/datum/objective/protect/protect_objective = new
|
||||
protect_objective.owner = traitor
|
||||
protect_objective.find_target()
|
||||
traitor.objectives += protect_objective
|
||||
else
|
||||
var/datum/objective/steal/steal_objective = new
|
||||
steal_objective.owner = traitor
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/captain(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/device/pda/captain(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/armor/captain(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/caphat(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses)
|
||||
|
||||
@@ -111,8 +111,8 @@
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/security(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/device/pda/security(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/storage/gearharness(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/secsoft(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/red(H), H.slot_gloves)
|
||||
H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_s_store)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
src.target = T
|
||||
if(!src.target || src.target == null)
|
||||
for (var/turf/space/D in view(7,src))
|
||||
if(!(D in floorbottargets) && D != src.oldtarget && (D.loc.name != "Space"))
|
||||
if(!(D in floorbottargets) && D != src.oldtarget && (D.loc.name != "Space") && !istype(D.loc, /area/shuttle))
|
||||
src.oldtarget = D
|
||||
src.target = D
|
||||
break
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/var/list/geneticsrecords = list()
|
||||
//Cloning revival method.
|
||||
//The pod handles the actual cloning while the computer manages the clone profiles
|
||||
|
||||
@@ -34,6 +35,8 @@
|
||||
var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything.
|
||||
var/wantsscan = 1
|
||||
var/wantspod = 1
|
||||
var/poddir = 8 //Which dir relative to the computer it is in.
|
||||
var/scandir = 8
|
||||
|
||||
//The return of data disks?? Just for transferring between genetics machine/cloning machine.
|
||||
//TO-DO: Make the genetics machine accept them.
|
||||
@@ -65,17 +68,15 @@
|
||||
/obj/machinery/computer/cloning/New()
|
||||
..()
|
||||
spawn(5)
|
||||
src.scanner = locate(/obj/machinery/dna_scannernew, get_step(src, WEST))
|
||||
// src.scanner = locate(/obj/machinery/dna_scannernew, get_step(src, EAST))
|
||||
// src.pod1 = locate(/obj/machinery/clonepod, get_step(src, EAST))
|
||||
src.pod1 = locate(/obj/machinery/clonepod, get_step(src, WEST))
|
||||
src.scanner = locate(/obj/machinery/dna_scannernew, get_step(src, scandir))
|
||||
src.pod1 = locate(/obj/machinery/clonepod, get_step(src, poddir))
|
||||
|
||||
src.temp = ""
|
||||
if (isnull(src.scanner) && wantsscan)
|
||||
src.temp += " <font color=red>SCNR-ERROR</font>"
|
||||
if (isnull(src.pod1) && wantspod)
|
||||
src.temp += " <font color=red>POD1-ERROR</font>"
|
||||
else
|
||||
else if (wantspod)
|
||||
src.pod1.connected = src
|
||||
|
||||
if (src.temp == "")
|
||||
@@ -138,7 +139,7 @@
|
||||
if(2)
|
||||
dat += "<h4>Current records</h4>"
|
||||
dat += "<a href='byond://?src=\ref[src];menu=1'>Back</a><br><br>"
|
||||
for(var/datum/data/record/R in src.records)
|
||||
for(var/datum/data/record/R in geneticsrecords)
|
||||
dat += "<a href='byond://?src=\ref[src];view_rec=\ref[R]'>[R.fields["id"]]-[R.fields["name"]]</a><br>"
|
||||
|
||||
if(3)
|
||||
@@ -220,7 +221,7 @@
|
||||
var/obj/item/weapon/card/id/C = usr.equipped()
|
||||
if (istype(C)||istype(C, /obj/item/device/pda))
|
||||
if(src.check_access(C))
|
||||
src.records.Remove(src.active_record)
|
||||
geneticsrecords.Remove(src.active_record)
|
||||
del(src.active_record)
|
||||
src.temp = "Record deleted."
|
||||
src.menu = 2
|
||||
@@ -290,7 +291,7 @@
|
||||
src.temp = "Unable to initiate cloning cycle." // most helpful error message in THE HISTORY OF THE WORLD
|
||||
else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"],C.fields["changeling"]))
|
||||
src.temp = "Cloning cycle activated."
|
||||
src.records.Remove(C)
|
||||
geneticsrecords.Remove(C)
|
||||
del(C)
|
||||
src.menu = 1
|
||||
|
||||
@@ -350,13 +351,13 @@
|
||||
if (!isnull(subject.mind)) //Save that mind so traitors can continue traitoring after cloning.
|
||||
R.fields["mind"] = "\ref[subject.mind]"
|
||||
|
||||
src.records += R
|
||||
geneticsrecords += R //Save it to the global scan list.
|
||||
src.temp = "Subject successfully scanned."
|
||||
|
||||
//Find a specific record by key.
|
||||
/obj/machinery/computer/cloning/proc/find_record(var/find_key)
|
||||
var/selected_record = null
|
||||
for(var/datum/data/record/R in src.records)
|
||||
for(var/datum/data/record/R in geneticsrecords)
|
||||
if (R.fields["ckey"] == find_key)
|
||||
selected_record = R
|
||||
break
|
||||
|
||||
@@ -550,8 +550,7 @@ var/list/sacrificed = list()
|
||||
var/list/mob/living/carbon/human/cultsinrange = list()
|
||||
var/list/mob/living/carbon/human/victims = list()
|
||||
for(var/mob/living/carbon/human/V in src.loc)
|
||||
if(!(iscultist(V)))
|
||||
victims += V
|
||||
victims += V
|
||||
for(var/mob/living/carbon/C in orange(1,src))
|
||||
if(iscultist(C))
|
||||
cultsinrange += C
|
||||
|
||||
@@ -126,6 +126,8 @@
|
||||
src.welded = 1
|
||||
src.loc = P
|
||||
O.amount -= 3
|
||||
else
|
||||
user << "\blue You need more paper."
|
||||
else if(src.opened)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/suit/storage/captunic(src)
|
||||
new /obj/item/clothing/suit/armor/captain(src)
|
||||
new /obj/item/clothing/head/helmet/cap(src)
|
||||
new /obj/item/clothing/under/rank/captain(src)
|
||||
new /obj/item/clothing/suit/armor/vest(src)
|
||||
@@ -110,7 +111,6 @@
|
||||
new /obj/item/weapon/pepperspray(src)
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/weapon/melee/baton(src)
|
||||
new /obj/item/weapon/gun/energy/taser(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -192,6 +192,15 @@
|
||||
|
||||
/obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/packageWrap))
|
||||
if(istype(src,/obj/item/weapon/storage) && istype(src.loc, /mob)) //Put it into the bag
|
||||
return
|
||||
if(istype(src.loc,/obj/item/weapon/storage) || istype(src.loc,/obj/item/clothing/suit/storage/)) //Taking stuff out of storage duplicates it.
|
||||
user << "\blue Do not do this, it is broken as all hell. Take it out of the container first."
|
||||
return
|
||||
for(var/obj/item/T in user) //Lets remove it from their inventory
|
||||
if(T == src)
|
||||
user.remove_from_mob(T)
|
||||
break
|
||||
var/obj/item/weapon/packageWrap/O = W
|
||||
if (O.amount > 1)
|
||||
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(src.loc))
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
//STRIKE TEAMS
|
||||
|
||||
var/list/response_team_members = list()
|
||||
var/send_emergency_team = 0
|
||||
|
||||
client/verb/JoinResponseTeam()
|
||||
set category = "IC"
|
||||
|
||||
if(istype(usr,/mob/dead/observer) || istype(usr,/mob/new_player))
|
||||
if(!send_emergency_team)
|
||||
usr << "No emergency response team is currently being sent."
|
||||
return
|
||||
|
||||
if(response_team_members.len > 5) usr << "The emergency response team is already full!"
|
||||
|
||||
var/leader_selected = (response_team_members.len == 0)
|
||||
|
||||
for (var/obj/effect/landmark/L in world) if (L.name == "Commando")
|
||||
|
||||
var/new_name = input(usr, "Pick a name","Name") as null|text
|
||||
if(!new_name) return
|
||||
var/gender = alert(usr, "Pick a gender","Gender","Male","Female")
|
||||
|
||||
var/mob/living/carbon/human/new_commando = create_response_team(L, leader_selected, new_name, gender)
|
||||
|
||||
new_commando.mind.key = usr.key
|
||||
new_commando.key = usr.key
|
||||
|
||||
new_commando << "\blue You are [!leader_selected?"member":"<B>LEADER</B>"] of an armed response team in CentComm's service. Something went down on [station_name()] and they're now on code red. Go in there and fix the problem."
|
||||
new_commando << "<b>You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready."
|
||||
|
||||
else
|
||||
usr << "You need to be an observer or new player to use this."
|
||||
|
||||
proc/trigger_armed_response_team()
|
||||
if(send_emergency_team)
|
||||
return
|
||||
|
||||
command_alert("According to our sensors, [station_name()] has entered code red. We will prepare and dispatch an emergency response team to deal with the situation.", "Command Report")
|
||||
|
||||
send_emergency_team = 1
|
||||
|
||||
/client/proc/create_response_team(obj/spawn_location, leader_selected = 0, commando_name, gender)
|
||||
|
||||
var/mob/living/carbon/human/new_commando = new(spawn_location.loc)
|
||||
new_commando.gender = ((gender == "Male") ? MALE : FEMALE)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
A.randomize_appearance_for(new_commando)
|
||||
|
||||
new_commando.real_name = commando_name
|
||||
new_commando.age = !leader_selected ? rand(23,35) : rand(35,45)
|
||||
|
||||
new_commando.dna.ready_dna(new_commando)//Creates DNA.
|
||||
|
||||
//Creates mind stuff.
|
||||
new_commando.mind = new
|
||||
new_commando.mind.current = new_commando
|
||||
new_commando.mind.original = new_commando
|
||||
new_commando.mind.assigned_role = "MODE"
|
||||
new_commando.mind.special_role = "Death Commando"
|
||||
if(!(new_commando.mind in ticker.minds))
|
||||
ticker.minds += new_commando.mind//Adds them to regular mind list.
|
||||
new_commando.equip_strike_team(leader_selected)
|
||||
del(spawn_location)
|
||||
return new_commando
|
||||
|
||||
/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0)
|
||||
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src)
|
||||
R.set_frequency(1441)
|
||||
equip_if_possible(R, slot_ears)
|
||||
equip_if_possible(new /obj/item/clothing/under/color/black(src), slot_w_uniform)
|
||||
equip_if_possible(new /obj/item/clothing/shoes/swat(src), slot_shoes)
|
||||
equip_if_possible(new /obj/item/clothing/suit/armor/swat(src), slot_wear_suit)
|
||||
equip_if_possible(new /obj/item/clothing/gloves/swat(src), slot_gloves)
|
||||
equip_if_possible(new /obj/item/clothing/head/helmet/space/deathsquad(src), slot_head)
|
||||
equip_if_possible(new /obj/item/clothing/mask/gas/swat(src), slot_wear_mask)
|
||||
|
||||
equip_if_possible(new /obj/item/weapon/storage/backpack/security(src), slot_back)
|
||||
equip_if_possible(new /obj/item/weapon/storage/box(src), slot_in_backpack)
|
||||
|
||||
equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(src), slot_in_backpack)
|
||||
equip_if_possible(new /obj/item/device/flashlight(src), slot_in_backpack)
|
||||
|
||||
equip_if_possible(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.name = "[real_name]'s ID Card"
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_access("Head of Personnel")
|
||||
W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access.
|
||||
W.assignment = "Emergency Response Team"
|
||||
W.registered = real_name
|
||||
equip_if_possible(W, slot_wear_id)
|
||||
|
||||
return 1
|
||||
@@ -179,7 +179,7 @@ var/specops_shuttle_timeleft = 0
|
||||
user << "\red Access Denied."
|
||||
return
|
||||
|
||||
if (sent_strike_team == 0)
|
||||
if (sent_strike_team == 0 && send_emergency_team == 0)
|
||||
usr << "\red The strike team has not yet deployed."
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user