mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 18:44:48 +01:00
Merge branch 'master' into stationgoals
This commit is contained in:
+46
-29
@@ -56,6 +56,7 @@
|
||||
var/miming = 0 // Mime's vow of silence
|
||||
var/datum/faction/faction //associated faction
|
||||
var/datum/changeling/changeling //changeling holder
|
||||
var/linglink
|
||||
var/datum/vampire/vampire //vampire holder
|
||||
var/datum/nations/nation //nation holder
|
||||
var/datum/abductor/abductor //abductor holder
|
||||
@@ -104,11 +105,13 @@
|
||||
/datum/mind/proc/wipe_memory()
|
||||
memory = null
|
||||
|
||||
/datum/mind/proc/show_memory(mob/recipient)
|
||||
var/output = "<B>[current.real_name]'s Memory</B><HR>"
|
||||
/datum/mind/proc/show_memory(mob/recipient, window=1)
|
||||
if(!recipient)
|
||||
recipient = current
|
||||
var/output = "<B>[current.real_name]'s Memories:</B><HR>"
|
||||
output += memory
|
||||
|
||||
if(objectives.len>0)
|
||||
if(objectives.len)
|
||||
output += "<HR><B>Objectives:</B>"
|
||||
|
||||
var/obj_count = 1
|
||||
@@ -116,7 +119,7 @@
|
||||
output += "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
obj_count++
|
||||
|
||||
if(job_objectives.len>0)
|
||||
if(job_objectives.len)
|
||||
output += "<HR><B>Job Objectives:</B><UL>"
|
||||
|
||||
var/obj_count = 1
|
||||
@@ -124,8 +127,10 @@
|
||||
output += "<LI><B>Task #[obj_count]</B>: [objective.get_description()]</LI>"
|
||||
obj_count++
|
||||
output += "</UL>"
|
||||
|
||||
recipient << browse(output,"window=memory")
|
||||
if(window)
|
||||
recipient << browse(output,"window=memory")
|
||||
else
|
||||
to_chat(recipient, "<i>[output]</i>")
|
||||
|
||||
/datum/mind/proc/edit_memory()
|
||||
if(!ticker || !ticker.mode)
|
||||
@@ -149,7 +154,7 @@
|
||||
)
|
||||
var/text = ""
|
||||
var/mob/living/carbon/human/H = current
|
||||
if(istype(current, /mob/living/carbon/human))
|
||||
if(ishuman(current))
|
||||
/** Impanted**/
|
||||
if(isloyal(H))
|
||||
text = "Mindshield Implant:<a href='?src=[UID()];implant=remove'>Remove</a>|<b><font color='green'>Implanted</font></b></br>"
|
||||
@@ -369,7 +374,7 @@
|
||||
|
||||
/** SILICON ***/
|
||||
|
||||
if(istype(current, /mob/living/silicon))
|
||||
if(issilicon(current))
|
||||
text = "silicon"
|
||||
var/mob/living/silicon/robot/robot = current
|
||||
if(istype(robot) && robot.emagged)
|
||||
@@ -409,7 +414,7 @@
|
||||
if(((src in ticker.mode.head_revolutionaries) || \
|
||||
(src in ticker.mode.traitors) || \
|
||||
(src in ticker.mode.syndicates)) && \
|
||||
istype(current,/mob/living/carbon/human) )
|
||||
ishuman(current) )
|
||||
|
||||
text = "Uplink: <a href='?src=[UID()];common=uplink'>give</a>"
|
||||
var/obj/item/device/uplink/hidden/suplink = find_syndicate_uplink()
|
||||
@@ -445,18 +450,21 @@
|
||||
usr << browse(out, "window=edit_memory[src];size=400x500")
|
||||
|
||||
/datum/mind/Topic(href, href_list)
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(href_list["role_edit"])
|
||||
var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in joblist
|
||||
if(!new_role) return
|
||||
if(!new_role)
|
||||
return
|
||||
assigned_role = new_role
|
||||
log_admin("[key_name(usr)] has changed [key_name(current)]'s assigned role to [assigned_role]")
|
||||
message_admins("[key_name_admin(usr)] has changed [key_name_admin(current)]'s assigned role to [assigned_role]")
|
||||
|
||||
else if(href_list["memory_edit"])
|
||||
var/new_memo = copytext(input("Write new memory", "Memory", memory) as null|message,1,MAX_MESSAGE_LEN)
|
||||
if(isnull(new_memo)) return
|
||||
if(isnull(new_memo))
|
||||
return
|
||||
memory = new_memo
|
||||
log_admin("[key_name(usr)] has edited [key_name(current)]'s memory")
|
||||
message_admins("[key_name_admin(usr)] has edited [key_name_admin(current)]'s memory")
|
||||
@@ -468,7 +476,8 @@
|
||||
|
||||
if(href_list["obj_edit"])
|
||||
objective = locate(href_list["obj_edit"])
|
||||
if(!objective) return
|
||||
if(!objective)
|
||||
return
|
||||
objective_pos = objectives.Find(objective)
|
||||
|
||||
//Text strings are easy to manipulate. Revised for simplicity.
|
||||
@@ -478,7 +487,8 @@
|
||||
def_value = "custom"
|
||||
|
||||
var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "blood", "debrain", "protect", "prevent", "brig", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "destroy", "maroon", "identity theft", "custom")
|
||||
if(!new_obj_type) return
|
||||
if(!new_obj_type)
|
||||
return
|
||||
|
||||
var/datum/objective/new_objective = null
|
||||
|
||||
@@ -500,7 +510,8 @@
|
||||
def_target = objective:target.current
|
||||
|
||||
var/new_target = input("Select target:", "Objective target", def_target) as null|anything in possible_targets
|
||||
if(!new_target) return
|
||||
if(!new_target)
|
||||
return
|
||||
|
||||
var/objective_path = text2path("/datum/objective/[new_obj_type]")
|
||||
if(new_target == "Free objective")
|
||||
@@ -588,7 +599,7 @@
|
||||
if("identity theft")
|
||||
var/list/possible_targets = list("Free objective")
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
if((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human))
|
||||
if((possible_target != src) && ishuman(possible_target.current))
|
||||
possible_targets += possible_target
|
||||
|
||||
var/new_target = input("Select target:", "Objective target") as null|anything in possible_targets
|
||||
@@ -604,12 +615,14 @@
|
||||
new_objective.explanation_text = "Escape on the shuttle or an escape pod with the identity of [targ.current.real_name], the [targ.assigned_role] while wearing their identification card."
|
||||
if("custom")
|
||||
var/expl = sanitize(copytext(input("Custom objective:", "Objective", objective ? objective.explanation_text : "") as text|null,1,MAX_MESSAGE_LEN))
|
||||
if(!expl) return
|
||||
if(!expl)
|
||||
return
|
||||
new_objective = new /datum/objective
|
||||
new_objective.owner = src
|
||||
new_objective.explanation_text = expl
|
||||
|
||||
if(!new_objective) return
|
||||
if(!new_objective)
|
||||
return
|
||||
|
||||
if(objective)
|
||||
objectives -= objective
|
||||
@@ -622,7 +635,8 @@
|
||||
|
||||
else if(href_list["obj_delete"])
|
||||
var/datum/objective/objective = locate(href_list["obj_delete"])
|
||||
if(!istype(objective)) return
|
||||
if(!istype(objective))
|
||||
return
|
||||
objectives -= objective
|
||||
|
||||
log_admin("[key_name(usr)] has removed one of [key_name(current)]'s objectives: [objective]")
|
||||
@@ -630,7 +644,8 @@
|
||||
|
||||
else if(href_list["obj_completed"])
|
||||
var/datum/objective/objective = locate(href_list["obj_completed"])
|
||||
if(!istype(objective)) return
|
||||
if(!istype(objective))
|
||||
return
|
||||
objective.completed = !objective.completed
|
||||
|
||||
log_admin("[key_name(usr)] has toggled the completion of one of [key_name(current)]'s objectives")
|
||||
@@ -893,7 +908,7 @@
|
||||
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
|
||||
|
||||
if("initialdna")
|
||||
if( !changeling || !changeling.absorbed_dna.len )
|
||||
if(!changeling || !changeling.absorbed_dna.len)
|
||||
to_chat(usr, "\red Resetting DNA failed!")
|
||||
else
|
||||
current.dna = changeling.absorbed_dna[1]
|
||||
@@ -924,7 +939,7 @@
|
||||
ticker.mode.update_vampire_icons_added(src)
|
||||
var/datum/mindslaves/slaved = new()
|
||||
slaved.masters += src
|
||||
src.som = slaved //we MIGT want to mindslave someone
|
||||
som = slaved //we MIGT want to mindslave someone
|
||||
special_role = SPECIAL_ROLE_VAMPIRE
|
||||
to_chat(current, "<B><font color='red'>Your powers are awoken. Your lust for blood grows... You are a Vampire!</font></B>")
|
||||
log_admin("[key_name(usr)] has vampired [key_name(current)]")
|
||||
@@ -1033,7 +1048,7 @@
|
||||
ticker.mode.traitors += src
|
||||
var/datum/mindslaves/slaved = new()
|
||||
slaved.masters += src
|
||||
src.som = slaved //we MIGT want to mindslave someone
|
||||
som = slaved //we MIGT want to mindslave someone
|
||||
special_role = SPECIAL_ROLE_TRAITOR
|
||||
to_chat(current, "<span class='danger'>You are a traitor!</span>")
|
||||
log_admin("[key_name(usr)] has traitored [key_name(current)]")
|
||||
@@ -1130,7 +1145,7 @@
|
||||
message_admins("[key_name_admin(usr)] has un-emagged [key_name_admin(current)]")
|
||||
|
||||
if("unemagcyborgs")
|
||||
if(istype(current, /mob/living/silicon/ai))
|
||||
if(isAI(current))
|
||||
var/mob/living/silicon/ai/ai = current
|
||||
for(var/mob/living/silicon/robot/R in ai.connected_robots)
|
||||
R.emagged = 0
|
||||
@@ -1324,7 +1339,7 @@
|
||||
var/explanation = "Summon [ticker.mode.cultdat.entity_name] via the use of the appropriate rune. It will only work if nine cultists stand on and around it."
|
||||
to_chat(current, "<B>Objective #1</B>: [explanation]")
|
||||
current.memory += "<B>Objective #1</B>: [explanation]<BR>"
|
||||
|
||||
|
||||
|
||||
var/mob/living/carbon/human/H = current
|
||||
if(istype(H))
|
||||
@@ -1453,13 +1468,13 @@
|
||||
qdel(S)
|
||||
spell_list -= S
|
||||
|
||||
/datum/mind/proc/transfer_actions(var/mob/living/new_character)
|
||||
/datum/mind/proc/transfer_actions(mob/living/new_character)
|
||||
if(current && current.actions)
|
||||
for(var/datum/action/A in current.actions)
|
||||
A.Grant(new_character)
|
||||
transfer_mindbound_actions(new_character)
|
||||
|
||||
/datum/mind/proc/transfer_mindbound_actions(var/mob/living/new_character)
|
||||
/datum/mind/proc/transfer_mindbound_actions(mob/living/new_character)
|
||||
for(var/X in spell_list)
|
||||
var/obj/effect/proc_holder/spell/S = X
|
||||
S.action.Grant(new_character)
|
||||
@@ -1553,13 +1568,15 @@
|
||||
ticker.minds += mind
|
||||
else
|
||||
error("mind_initialize(): No ticker ready yet! Please inform Carn")
|
||||
if(!mind.name) mind.name = real_name
|
||||
if(!mind.name)
|
||||
mind.name = real_name
|
||||
mind.current = src
|
||||
|
||||
//HUMAN
|
||||
/mob/living/carbon/human/mind_initialize()
|
||||
..()
|
||||
if(!mind.assigned_role) mind.assigned_role = "Civilian" //defualt
|
||||
if(!mind.assigned_role)
|
||||
mind.assigned_role = "Civilian" //defualt
|
||||
|
||||
/mob/proc/sync_mind()
|
||||
mind_initialize() //updates the mind (or creates and initializes one if one doesn't exist)
|
||||
|
||||
@@ -431,6 +431,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
name = "HEADER"
|
||||
group = supply_engineer
|
||||
announce_beacons = list("Engineering" = list("Engineering", "Chief Engineer's Desk"))
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
|
||||
|
||||
/datum/supply_packs/engineering/fueltank
|
||||
@@ -458,6 +459,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/clothing/gloves/color/yellow)
|
||||
cost = 20 //Made of pure-grade bullshittinium
|
||||
containername = "insulated gloves crate"
|
||||
containertype = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_packs/engineering/power
|
||||
name = "Power Cell Crate"
|
||||
@@ -466,6 +468,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/weapon/stock_parts/cell/high)
|
||||
cost = 10
|
||||
containername = "electrical maintenance crate"
|
||||
containertype = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_packs/engineering/engiequipment
|
||||
name = "Engineering Gear Crate"
|
||||
@@ -512,6 +515,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/weapon/paper/solar)
|
||||
cost = 20
|
||||
containername = "solar pack crate"
|
||||
containertype = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_packs/engineering/engine
|
||||
name = "Emitter Crate"
|
||||
@@ -521,6 +525,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "emitter crate"
|
||||
access = access_ce
|
||||
containertype = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
/datum/supply_packs/engineering/engine/field_gen
|
||||
name = "Field Generator Crate"
|
||||
@@ -783,6 +788,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
name = "HEADER"
|
||||
group = supply_science
|
||||
announce_beacons = list("Research Division" = list("Science", "Research Director's Desk"))
|
||||
containertype = /obj/structure/closet/crate/sci
|
||||
|
||||
/datum/supply_packs/science/robotics
|
||||
name = "Robotics Assembly Crate"
|
||||
@@ -794,7 +800,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/weapon/stock_parts/cell/high,
|
||||
/obj/item/weapon/stock_parts/cell/high)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containertype = /obj/structure/closet/crate/secure/scisec
|
||||
containername = "robotics assembly crate"
|
||||
access = access_robotics
|
||||
announce_beacons = list("Research Division" = list("Robotics", "Research Director's Desk"))
|
||||
@@ -806,18 +812,14 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/weapon/circuitboard/mecha/ripley/main, //TEMPORARY due to lack of circuitboard printer
|
||||
/obj/item/weapon/circuitboard/mecha/ripley/peripherals) //TEMPORARY due to lack of circuitboard printer
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "\improper APLU \"Ripley\" circuit crate"
|
||||
announce_beacons = list("Research Division" = list("Robotics", "Research Director's Desk"))
|
||||
|
||||
/datum/supply_packs/science/robotics/mecha_odysseus
|
||||
name = "Circuit Crate (Odysseus)"
|
||||
contains = list(/obj/item/weapon/circuitboard/mecha/odysseus/peripherals, //TEMPORARY due to lack of circuitboard printer
|
||||
/obj/item/weapon/circuitboard/mecha/odysseus/main) //TEMPORARY due to lack of circuitboard printer
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "\improper \"Odysseus\" circuit crate"
|
||||
announce_beacons = list("Research Division" = list("Robotics", "Research Director's Desk"))
|
||||
|
||||
/datum/supply_packs/science/plasma
|
||||
name = "Plasma Assembly Crate"
|
||||
@@ -846,7 +848,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containertype = /obj/structure/closet/crate/secure/scisec
|
||||
containername = "shield generators crate"
|
||||
access = access_teleporter
|
||||
|
||||
@@ -856,7 +858,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
contains = list(/obj/item/device/transfer_valve,
|
||||
/obj/item/device/transfer_valve)
|
||||
cost = 60
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containertype = /obj/structure/closet/crate/secure/scisec
|
||||
containername = "tank transfer valves crate"
|
||||
access = access_rd
|
||||
|
||||
|
||||
Reference in New Issue
Block a user