mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 03:55:11 +01:00
Merge pull request #41144
This commit is contained in:
@@ -295,12 +295,6 @@
|
||||
SSticker.mode.remove_antag_for_borging(BM.mind)
|
||||
if(!istype(M.laws, /datum/ai_laws/ratvar))
|
||||
remove_servant_of_ratvar(BM, TRUE)
|
||||
BM.mind.transfer_to(O)
|
||||
|
||||
if(O.mind && O.mind.special_role)
|
||||
O.mind.store_memory("As a cyborg, you must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.")
|
||||
to_chat(O, "<span class='userdanger'>You have been robotized!</span>")
|
||||
to_chat(O, "<span class='danger'>You must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.</span>")
|
||||
|
||||
O.job = "Cyborg"
|
||||
|
||||
@@ -311,7 +305,16 @@
|
||||
if(O.mmi) //we delete the mmi created by robot/New()
|
||||
qdel(O.mmi)
|
||||
O.mmi = W //and give the real mmi to the borg.
|
||||
O.updatename()
|
||||
|
||||
O.updatename(BM.client)
|
||||
|
||||
BM.mind.transfer_to(O)
|
||||
|
||||
if(O.mind && O.mind.special_role)
|
||||
O.mind.store_memory("As a cyborg, you must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.")
|
||||
to_chat(O, "<span class='userdanger'>You have been robotized!</span>")
|
||||
to_chat(O, "<span class='danger'>You must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.</span>")
|
||||
|
||||
SSblackbox.record_feedback("amount", "cyborg_birth", 1)
|
||||
forceMove(O)
|
||||
O.robot_suit = src
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/obj/effect/mob_spawn/human/seed_vault/special(mob/living/new_spawn)
|
||||
var/plant_name = pick("Tomato", "Potato", "Broccoli", "Carrot", "Ambrosia", "Pumpkin", "Ivy", "Kudzu", "Banana", "Moss", "Flower", "Bloom", "Root", "Bark", "Glowshroom", "Petal", "Leaf", \
|
||||
"Venus", "Sprout","Cocoa", "Strawberry", "Citrus", "Oak", "Cactus", "Pepper", "Juniper")
|
||||
new_spawn.real_name = plant_name
|
||||
new_spawn.fully_replace_character_name(null,plant_name)
|
||||
if(ishuman(new_spawn))
|
||||
var/mob/living/carbon/human/H = new_spawn
|
||||
H.underwear = "Nude" //You're a plant, partner
|
||||
@@ -49,7 +49,7 @@
|
||||
assignedrole = "Ash Walker"
|
||||
|
||||
/obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn)
|
||||
new_spawn.real_name = random_unique_lizard_name(gender)
|
||||
new_spawn.fully_replace_character_name(null,random_unique_lizard_name(gender))
|
||||
to_chat(new_spawn, "<b>Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Glory to the Necropolis!</b>")
|
||||
|
||||
new_spawn.grant_language(/datum/language/draconic)
|
||||
@@ -92,7 +92,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/exile/special(mob/living/new_spawn)
|
||||
new_spawn.real_name = "Wish Granter's Victim ([rand(1,999)])"
|
||||
new_spawn.fully_replace_character_name(null,"Wish Granter's Victim ([rand(1,999)])")
|
||||
var/wish = rand(1,4)
|
||||
switch(wish)
|
||||
if(1)
|
||||
@@ -274,8 +274,7 @@
|
||||
assignedrole = "Escaped Prisoner"
|
||||
|
||||
/obj/effect/mob_spawn/human/prisoner_transport/special(mob/living/L)
|
||||
L.real_name = "NTP #LL-0[rand(111,999)]" //Nanotrasen Prisoner #Lavaland-(numbers)
|
||||
L.name = L.real_name
|
||||
L.fully_replace_character_name(null,"NTP #LL-0[rand(111,999)]") //Nanotrasen Prisoner #Lavaland-(numbers)
|
||||
|
||||
/obj/effect/mob_spawn/human/prisoner_transport/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -370,8 +369,7 @@
|
||||
|
||||
/obj/effect/mob_spawn/human/demonic_friend/special(mob/living/L)
|
||||
if(!QDELETED(owner.current) && owner.current.stat != DEAD)
|
||||
L.real_name = "[owner.name]'s best friend"
|
||||
L.name = L.real_name
|
||||
L.fully_replace_character_name(null,"[owner.name]'s best friend")
|
||||
soullink(/datum/soullink/oneway, owner.current, L)
|
||||
spell.friend = L
|
||||
spell.charge_counter = spell.charge_max
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
if(!check_rights())
|
||||
return
|
||||
log_admin("[key_name(usr)] checked the player panel.")
|
||||
var/dat = "<html><head><title>Player Panel</title></head>"
|
||||
var/dat = "<html><head><meta http-equiv='X-UA-Compatible' content='IE=edge'/><title>Player Panel</title></head>"
|
||||
|
||||
//javascript, the part that does most of the work~
|
||||
dat += {"
|
||||
@@ -38,14 +38,10 @@
|
||||
}
|
||||
var ltd = tr.getElementsByTagName("td");
|
||||
var td = ltd\[0\];
|
||||
var lsearch = td.getElementsByTagName("b");
|
||||
var lsearch = td.getElementsByClassName("filter_data");
|
||||
var search = lsearch\[0\];
|
||||
//var inner_span = li.getElementsByTagName("span")\[1\] //Should only ever contain one element.
|
||||
//document.write("<p>"+search.innerText+"<br>"+filter+"<br>"+search.innerText.indexOf(filter))
|
||||
if ( search.innerText.toLowerCase().indexOf(filter) == -1 )
|
||||
{
|
||||
//document.write("a");
|
||||
//ltr.removeChild(tr);
|
||||
td.innerHTML = "";
|
||||
i--;
|
||||
}
|
||||
@@ -61,7 +57,7 @@
|
||||
|
||||
}
|
||||
|
||||
function expand(id,job,name,real_name,image,key,ip,antagonist,ref){
|
||||
function expand(id,job,name,real_name,old_names,key,ip,antagonist,ref){
|
||||
|
||||
clearAll();
|
||||
|
||||
@@ -72,7 +68,7 @@
|
||||
|
||||
body += "</td><td align='center'>";
|
||||
|
||||
body += "<font size='2'><b>"+job+" "+name+"</b><br><b>Real name "+real_name+"</b><br><b>Played by "+key+" ("+ip+")</b></font>"
|
||||
body += "<font size='2'><b>"+job+" "+name+"</b><br><b>Real name "+real_name+"</b><br><b>Played by "+key+" ("+ip+")</b><br><b>Old names :"+old_names+"</b></font>";
|
||||
|
||||
body += "</td><td align='center'>";
|
||||
|
||||
@@ -102,7 +98,7 @@
|
||||
|
||||
var id = span.getAttribute("id");
|
||||
|
||||
if(!(id.indexOf("item")==0))
|
||||
if(!id || !(id.indexOf("item")==0))
|
||||
continue;
|
||||
|
||||
var pass = 1;
|
||||
@@ -147,9 +143,6 @@
|
||||
locked_tabs.push(id);
|
||||
var notice_span = document.getElementById(notice_span_id);
|
||||
notice_span.innerHTML = "<font color='red'>Locked</font> ";
|
||||
//link.setAttribute("onClick","attempt('"+id+"','"+link_id+"','"+notice_span_id+"');");
|
||||
//document.write("removeFromLocked('"+id+"','"+link_id+"','"+notice_span_id+"')");
|
||||
//document.write("aa - "+link.getAttribute("onClick"));
|
||||
}
|
||||
|
||||
function attempt(ab){
|
||||
@@ -172,8 +165,6 @@
|
||||
locked_tabs\[index\] = "";
|
||||
var notice_span = document.getElementById(notice_span_id);
|
||||
notice_span.innerHTML = "";
|
||||
//var link = document.getElementById(link_id);
|
||||
//link.setAttribute("onClick","addToLocked('"+id+"','"+link_id+"','"+notice_span_id+"')");
|
||||
}
|
||||
|
||||
function selectTextField(){
|
||||
@@ -277,6 +268,12 @@
|
||||
var/M_name = html_encode(M.name)
|
||||
var/M_rname = html_encode(M.real_name)
|
||||
var/M_key = html_encode(M.key)
|
||||
var/previous_names = ""
|
||||
if(M_key)
|
||||
var/datum/player_details/P = GLOB.player_details[ckey(M_key)]
|
||||
if(P)
|
||||
previous_names = P.played_names.Join(",")
|
||||
previous_names = html_encode(previous_names)
|
||||
|
||||
//output for each mob
|
||||
dat += {"
|
||||
@@ -285,9 +282,10 @@
|
||||
<td align='center' bgcolor='[color]'>
|
||||
<span id='notice_span[i]'></span>
|
||||
<a id='link[i]'
|
||||
onmouseover='expand("item[i]","[M_job]","[M_name]","[M_rname]","--unused--","[M_key]","[M.lastKnownIP]",[is_antagonist],"[REF(M)]")'
|
||||
onmouseover='expand("item[i]","[M_job]","[M_name]","[M_rname]","[previous_names]","[M_key]","[M.lastKnownIP]",[is_antagonist],"[REF(M)]")'
|
||||
>
|
||||
<b id='search[i]'>[M_name] - [M_rname] - [M_key] ([M_job])</b>
|
||||
<span hidden class='filter_data'>[M_name] [M_rname] [M_key] [M_job] [previous_names]</span>
|
||||
</a>
|
||||
<br><span id='item[i]'></span>
|
||||
</td>
|
||||
|
||||
@@ -1602,7 +1602,7 @@
|
||||
|
||||
message_admins("<span class='danger'>Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!</span>")
|
||||
log_admin("[key_name(usr)] AIized [key_name(H)].")
|
||||
H.AIize()
|
||||
H.AIize(H.client)
|
||||
|
||||
else if(href_list["makealien"])
|
||||
if(!check_rights(R_SPAWN))
|
||||
|
||||
@@ -3,4 +3,17 @@
|
||||
var/list/logging = list()
|
||||
var/list/post_login_callbacks = list()
|
||||
var/list/post_logout_callbacks = list()
|
||||
var/byond_version = "Unknown"
|
||||
var/list/played_names = list() //List of names this key played under this round
|
||||
var/byond_version = "Unknown"
|
||||
|
||||
/proc/log_played_names(ckey, ...)
|
||||
if(!ckey)
|
||||
return
|
||||
if(args.len < 2)
|
||||
return
|
||||
var/list/names = args.Copy(2)
|
||||
var/datum/player_details/P = GLOB.player_details[ckey]
|
||||
if(P)
|
||||
for(var/name in names)
|
||||
if(name)
|
||||
P.played_names |= name
|
||||
|
||||
@@ -18,7 +18,7 @@ AI
|
||||
var/do_special_check = TRUE
|
||||
|
||||
/datum/job/ai/equip(mob/living/carbon/human/H, visualsOnly, announce, latejoin, datum/outfit/outfit_override, client/preference_source = null)
|
||||
. = H.AIize(latejoin)
|
||||
. = H.AIize(latejoin,preference_source)
|
||||
|
||||
/datum/job/ai/after_spawn(mob/H, mob/M, latejoin)
|
||||
. = ..()
|
||||
|
||||
@@ -50,5 +50,6 @@
|
||||
for(var/foo in client.player_details.post_login_callbacks)
|
||||
var/datum/callback/CB = foo
|
||||
CB.Invoke()
|
||||
log_played_names(client.ckey,name,real_name)
|
||||
|
||||
log_message("Client [key_name(src)] has taken ownership of mob [src]([src.type])", LOG_OWNERSHIP)
|
||||
|
||||
@@ -803,10 +803,15 @@
|
||||
log_message("[src] name changed from [oldname] to [newname]", LOG_OWNERSHIP)
|
||||
if(!newname)
|
||||
return 0
|
||||
|
||||
log_played_names(ckey,newname)
|
||||
|
||||
real_name = newname
|
||||
name = newname
|
||||
if(mind)
|
||||
mind.name = newname
|
||||
if(mind.key)
|
||||
log_played_names(mind.key,newname) //Just in case the mind is unsynced at the moment.
|
||||
|
||||
if(oldname)
|
||||
//update the datacore records! This is goig to be a bit costly.
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
|
||||
qdel(src)
|
||||
|
||||
/mob/living/carbon/human/AIize()
|
||||
/mob/living/carbon/human/AIize(transfer_after = TRUE, client/preference_source)
|
||||
if (notransform)
|
||||
return
|
||||
for(var/t in bodyparts)
|
||||
@@ -309,7 +309,7 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/AIize()
|
||||
/mob/living/carbon/AIize(transfer_after = TRUE, client/preference_source)
|
||||
if (notransform)
|
||||
return
|
||||
notransform = TRUE
|
||||
@@ -321,7 +321,7 @@
|
||||
invisibility = INVISIBILITY_MAXIMUM
|
||||
return ..()
|
||||
|
||||
/mob/proc/AIize(transfer_after = TRUE)
|
||||
/mob/proc/AIize(transfer_after = TRUE, client/preference_source)
|
||||
var/list/turf/landmark_loc = list()
|
||||
for(var/obj/effect/landmark/start/ai/sloc in GLOB.landmarks_list)
|
||||
if(locate(/mob/living/silicon/ai) in sloc.loc)
|
||||
@@ -348,6 +348,9 @@
|
||||
|
||||
. = new /mob/living/silicon/ai(pick(landmark_loc), null, src)
|
||||
|
||||
if(preference_source)
|
||||
apply_pref_name("ai",preference_source)
|
||||
|
||||
qdel(src)
|
||||
|
||||
/mob/living/carbon/human/proc/Robotize(delete_items = 0, transfer_after = TRUE)
|
||||
@@ -372,6 +375,9 @@
|
||||
R.gender = gender
|
||||
R.invisibility = 0
|
||||
|
||||
if(client)
|
||||
R.updatename(client)
|
||||
|
||||
if(mind) //TODO
|
||||
if(!transfer_after)
|
||||
mind.active = FALSE
|
||||
@@ -379,8 +385,6 @@
|
||||
else if(transfer_after)
|
||||
R.key = key
|
||||
|
||||
R.apply_pref_name("cyborg")
|
||||
|
||||
if(R.mmi)
|
||||
R.mmi.name = "[initial(R.mmi.name)]: [real_name]"
|
||||
if(R.mmi.brain)
|
||||
|
||||
Reference in New Issue
Block a user