mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 16:44:33 +01:00
Merge branch 'BEF-staging'
This commit is contained in:
@@ -67,7 +67,11 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/toggledebuglogs,
|
||||
/datum/admins/proc/show_skills,
|
||||
/client/proc/check_customitem_activity,
|
||||
///client/proc/response_team
|
||||
/client/proc/man_up,
|
||||
/client/proc/global_man_up
|
||||
/* Currently unticked.
|
||||
/client/proc/response_team
|
||||
*/
|
||||
)
|
||||
var/list/admin_verbs_ban = list(
|
||||
/client/proc/unban_panel,
|
||||
@@ -647,7 +651,7 @@ var/list/admin_verbs_mod = list(
|
||||
if(!istype(M, /mob/living/carbon/human))
|
||||
usr << "\red You can only do this to humans!"
|
||||
return
|
||||
switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Vox and Tajaran can result in unintended consequences.",,"Yes","No"))
|
||||
switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Vox, Kida, and Tajara can result in unintended consequences.",,"Yes","No"))
|
||||
if("No")
|
||||
return
|
||||
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
|
||||
@@ -736,4 +740,28 @@ var/list/admin_verbs_mod = list(
|
||||
if (prefs.toggles & CHAT_DEBUGLOGS)
|
||||
usr << "You now will get debug log messages"
|
||||
else
|
||||
usr << "You now won't get debug log messages"
|
||||
usr << "You now won't get debug log messages"
|
||||
|
||||
|
||||
/client/proc/man_up(mob/T as mob in mob_list)
|
||||
set category = "Fun"
|
||||
set name = "Man Up"
|
||||
set desc = "Tells mob to man up and deal with it."
|
||||
|
||||
T << "<span class='notice'><b><font size=3>Man up and deal with it.</font></b></span>"
|
||||
T << "<span class='notice'>Move on.</span>"
|
||||
|
||||
log_admin("[key_name(usr)] told [key_name(T)] to man up and deal with it.")
|
||||
message_admins("\blue [key_name_admin(usr)] told [key_name(T)] to man up and deal with it.", 1)
|
||||
|
||||
/client/proc/global_man_up()
|
||||
set category = "Fun"
|
||||
set name = "Man Up Global"
|
||||
set desc = "Tells everyone to man up and deal with it."
|
||||
|
||||
for (var/mob/T as mob in mob_list)
|
||||
T << "<br><center><span class='notice'><b><font size=4>Man up.<br> Deal with it.</font></b><br>Move on.</span></center><br>"
|
||||
T << 'sound/voice/ManUp1.ogg'
|
||||
|
||||
log_admin("[key_name(usr)] told everyone to man up and deal with it.")
|
||||
message_admins("\blue [key_name_admin(usr)] told everyone to man up and deal with it.", 1)
|
||||
|
||||
@@ -469,6 +469,20 @@
|
||||
dat += "<tr><td><i>Wizard not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
/*
|
||||
if(ticker.mode.ninjas.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Ninjas</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/ninja in ticker.mode.ninjas)
|
||||
var/mob/M = ninja.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"
|
||||
dat += "<td><A HREF='?src=\ref[src];traitor=\ref[M]'>Show Objective</A></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><i>Ninja not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
*/
|
||||
|
||||
if(ticker.mode.cult.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Cultists</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.cult)
|
||||
|
||||
@@ -11,31 +11,31 @@
|
||||
if("1")
|
||||
log_admin("[key_name(usr)] has spawned a traitor.")
|
||||
if(!src.makeTraitors())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("2")
|
||||
log_admin("[key_name(usr)] has spawned a changeling.")
|
||||
if(!src.makeChanglings())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("3")
|
||||
log_admin("[key_name(usr)] has spawned revolutionaries.")
|
||||
if(!src.makeRevs())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("4")
|
||||
log_admin("[key_name(usr)] has spawned a cultists.")
|
||||
if(!src.makeCult())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("5")
|
||||
log_admin("[key_name(usr)] has spawned a malf AI.")
|
||||
if(!src.makeMalfAImode())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("6")
|
||||
log_admin("[key_name(usr)] has spawned a wizard.")
|
||||
if(!src.makeWizard())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("7")
|
||||
log_admin("[key_name(usr)] has spawned a nuke team.")
|
||||
if(!src.makeNukeTeam())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("8")
|
||||
log_admin("[key_name(usr)] has spawned a ninja.")
|
||||
src.makeSpaceNinja()
|
||||
@@ -44,8 +44,10 @@
|
||||
src.makeAliens()
|
||||
if("10")
|
||||
log_admin("[key_name(usr)] has spawned a death squad.")
|
||||
if(!src.makeDeathsquad())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
if("11")
|
||||
log_admin("[key_name(usr)] has spawned vox raiders.")
|
||||
if(!src.makeVoxRaiders())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"])
|
||||
var/adminckey = href_list["dbsearchadmin"]
|
||||
var/playerckey = href_list["dbsearchckey"]
|
||||
|
||||
@@ -551,7 +551,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
"blue wizard",
|
||||
"red wizard",
|
||||
"marisa wizard",
|
||||
"emergency rescue team",
|
||||
"emergency response team",
|
||||
"nanotrasen representative",
|
||||
"nanotrasen officer",
|
||||
"nanotrasen captain"
|
||||
@@ -817,7 +817,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
W.registered_name = M.real_name
|
||||
M.equip_if_possible(W, slot_wear_id)
|
||||
|
||||
if("emergency rescue team")
|
||||
if("emergency response team")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves)
|
||||
@@ -831,7 +831,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_all_accesses()
|
||||
W.access += get_all_centcom_access()
|
||||
W.assignment = "Emergency Rescue Team"
|
||||
W.assignment = "Emergency Response Team"
|
||||
W.registered_name = M.real_name
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ client/proc/one_click_antag()
|
||||
<a href='?src=\ref[src];makeAntag=4'>Make Cult</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=5'>Make Malf AI</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=6'>Make Wizard (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=11'>Make Vox Raiders (Requires Ghosts)</a><br>
|
||||
"}
|
||||
/* These dont work just yet
|
||||
Ninja, aliens and deathsquad I have not looked into yet
|
||||
@@ -429,4 +430,94 @@ client/proc/one_click_antag()
|
||||
ticker.mode.traitors += new_syndicate_commando.mind
|
||||
new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected)
|
||||
|
||||
return new_syndicate_commando
|
||||
return new_syndicate_commando
|
||||
|
||||
/datum/admins/proc/makeVoxRaiders()
|
||||
|
||||
var/list/mob/dead/observer/candidates = list()
|
||||
var/mob/dead/observer/theghost = null
|
||||
var/time_passed = world.time
|
||||
var/input = "Disregard shinies, acquire hardware."
|
||||
|
||||
var/leader_chosen = 0 //when the leader is chosen. The last person spawned.
|
||||
|
||||
//Generates a list of candidates from active ghosts. The admin picks which players to respawn as the vox.
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
spawn(0)
|
||||
if(is_alien_whitelisted(src, "Vox") || !config.usealienwhitelist)
|
||||
switch(alert(G,"Do you wish to be considered for a vox raiding party arriving on the station?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
sleep(300) //Debug.
|
||||
|
||||
for(var/mob/dead/observer/G in candidates)
|
||||
if(!G.key)
|
||||
candidates.Remove(G)
|
||||
|
||||
if(candidates.len)
|
||||
var/max_raiders = 6
|
||||
var/raiders = max_raiders
|
||||
//Spawns vox raiders and equips them.
|
||||
for (var/obj/effect/landmark/L in world)
|
||||
if(L.name == "Response Team")
|
||||
if(raiders<=0)
|
||||
break
|
||||
|
||||
var/mob/living/carbon/human/new_vox = create_vox_raider(L, leader_chosen)
|
||||
|
||||
while((!theghost || !theghost.client) && candidates.len)
|
||||
theghost = pick(candidates)
|
||||
candidates.Remove(theghost)
|
||||
|
||||
if(!theghost)
|
||||
del(new_vox)
|
||||
break
|
||||
|
||||
new_vox.key = theghost.key
|
||||
new_vox << "\blue You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: \red<B> [input]</B>"
|
||||
new_vox << "\red Don't forget to turn on your nitrogen internals!"
|
||||
|
||||
raiders--
|
||||
if(raiders > max_raiders)
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/admins/proc/create_vox_raider(obj/spawn_location, leader_chosen = 0)
|
||||
|
||||
var/mob/living/carbon/human/new_vox = new(spawn_location.loc)
|
||||
|
||||
new_vox.gender = pick(MALE, FEMALE)
|
||||
new_vox.h_style = "Short Vox Quills"
|
||||
new_vox.regenerate_icons()
|
||||
|
||||
var/sounds = rand(2,10)
|
||||
var/i = 0
|
||||
var/newname = ""
|
||||
|
||||
while(i<=sounds)
|
||||
i++
|
||||
newname += pick(list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah"))
|
||||
|
||||
new_vox.real_name = capitalize(newname)
|
||||
new_vox.name = new_vox.real_name
|
||||
new_vox.age = rand(12,20)
|
||||
|
||||
new_vox.dna.ready_dna(new_vox) // Creates DNA.
|
||||
new_vox.dna.mutantrace = "vox" // Actually makes the vox! How about that.
|
||||
new_vox.mind_initialize()
|
||||
new_vox.mind.assigned_role = "MODE"
|
||||
new_vox.mind.special_role = "Vox Raider"
|
||||
|
||||
ticker.mode.traitors += new_vox.mind
|
||||
new_vox.equip_vox_raider()
|
||||
|
||||
return new_vox
|
||||
@@ -357,17 +357,22 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(synd_spawn)
|
||||
new_character.loc = get_turf(synd_spawn)
|
||||
call(/datum/game_mode/proc/equip_syndicate)(new_character)
|
||||
if("Space Ninja")
|
||||
var/ninja_spawn[] = list()
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name=="carpspawn")
|
||||
ninja_spawn += L
|
||||
if("Ninja")
|
||||
new_character.equip_space_ninja()
|
||||
new_character.internal = new_character.s_store
|
||||
new_character.internals.icon_state = "internal1"
|
||||
if(ninja_spawn.len)
|
||||
var/obj/effect/landmark/ninja_spawn_here = pick(ninja_spawn)
|
||||
new_character.loc = ninja_spawn_here.loc
|
||||
if(ninjastart.len == 0)
|
||||
new_character << "<B>\red A proper starting location for you could not be found, please report this bug!</B>"
|
||||
new_character << "<B>\red Attempting to place at a carpspawn.</B>"
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "carpspawn")
|
||||
ninjastart.Add(L)
|
||||
if(ninjastart.len == 0 && latejoin.len > 0)
|
||||
new_character << "<B>\red Still no spawneable locations could be found. Defaulting to latejoin.</B>"
|
||||
new_character.loc = pick(latejoin)
|
||||
else if (ninjastart.len == 0)
|
||||
new_character << "<B>\red Still no spawneable locations could be found. Aborting.</B>"
|
||||
|
||||
if("Death Commando")//Leaves them at late-join spawn.
|
||||
new_character.equip_death_commando()
|
||||
new_character.internal = new_character.s_store
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
var/const/commandos_possible = 6 //if more Commandos are needed in the future
|
||||
var/global/sent_strike_team = 0
|
||||
|
||||
/client/proc/strike_team()
|
||||
if(!ticker)
|
||||
usr << "<font color='red'>The game hasn't started yet!</font>"
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
var/global/vox_tick = 1
|
||||
|
||||
/mob/living/carbon/human/proc/equip_vox_raider()
|
||||
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(src)
|
||||
R.set_frequency(SYND_FREQ) //Same frequency as the syndicate team in Nuke mode.
|
||||
equip_to_slot_or_del(R, slot_ears)
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/vox/vox_robes(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(src), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES.
|
||||
equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow/vox(src), slot_gloves) // AS ABOVE.
|
||||
|
||||
switch(vox_tick)
|
||||
if(1) // Vox raider!
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/melee/telebaton(src), slot_belt)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||
equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store)
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/weapon/gun/dartgun/vox/raider, slot_r_hand)
|
||||
|
||||
if(2) // Vox engineer!
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/pressure(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/pressure(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||
equip_to_slot_or_del(new /obj/item/weapon/storage/box/emps(src), slot_l_store)
|
||||
|
||||
var/obj/item/weapon/storage/pneumatic/W = new(src)
|
||||
W.tank = new /obj/item/weapon/tank/nitrogen(W)
|
||||
equip_to_slot_or_del(W, slot_r_hand)
|
||||
|
||||
if(3) // Vox saboteur!
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||
equip_to_slot_or_del(new /obj/item/weapon/card/emag(src), slot_l_store)
|
||||
|
||||
var/obj/item/weapon/crossbow/W = new(src)
|
||||
W.cell = new /obj/item/weapon/cell/crap(W)
|
||||
W.cell.charge = 500
|
||||
equip_to_slot_or_del(W, slot_r_hand)
|
||||
|
||||
var/obj/item/stack/rods/A = new(src)
|
||||
A.amount = 20
|
||||
equip_to_slot_or_del(A, slot_l_hand)
|
||||
|
||||
if(4) // Vox medic!
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/pressure(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/pressure(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) // Who needs actual surgical tools?
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||
equip_to_slot_or_del(new /obj/item/weapon/circular_saw(src), slot_l_store)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/gun/dartgun/vox/medical, slot_r_hand)
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/breath/vox(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(src), slot_back)
|
||||
equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store)
|
||||
|
||||
var/obj/item/weapon/card/id/syndicate/W = new(src)
|
||||
W.name = "[real_name]'s Legitimate Human ID Card"
|
||||
W.icon_state = "id"
|
||||
W.access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage, access_syndicate)
|
||||
W.assignment = "Trader"
|
||||
W.registered_name = real_name
|
||||
equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
vox_tick++
|
||||
if (vox_tick > 4) vox_tick = 1
|
||||
|
||||
return 1
|
||||
Reference in New Issue
Block a user