mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 00:53:23 +01:00
Wizard will now report if they mind swapped with a person after round completion. Or in other words, if they're in a different body than round start.
Changing changelings during the round should probably work proper now. AI will now report that people woken up from cryo sleep, when they join. The arrival shuttle changed to accomodate this. Added poff to pAIs until TLE revises that whole process. You should be able to message them back now. Slighly revised the entry shuttle. Added a holding facility to CentCom. Made the DJ station fully unsimulated. Removed unsimulated floor from derelict. Hopefully I got all the tiles. NOTE: When simulated floor meets unsimulated floor, Atmos goes berserk. Don't do this. Also, you can't deconstruct unsimulated stuff. A few other misc adjustment to the map. Added a variable to Rev that tracks what heads are supposed to be assassinated. Not sure why it didn't exist before. Added some ticker mind checking to a few procs I forgot about. Yup. Added an option to check assassinate objectives by special role. Some foundation for future ninja stuff. Ninjas now swap battery by clicking on their suit with the battery in hand. Some misc icon changes for areas. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1668 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -543,51 +543,45 @@ proc/move_mining_shuttle()
|
||||
|
||||
/**********************Mine areas**************************/
|
||||
|
||||
/area/mine
|
||||
icon_state = "mining"
|
||||
|
||||
/area/mine/explored
|
||||
name = "Mine"
|
||||
icon_state = "janitor"
|
||||
icon_state = "explored"
|
||||
music = null
|
||||
|
||||
/area/mine/unexplored
|
||||
name = "Mine"
|
||||
icon_state = "captain"
|
||||
icon_state = "unexplored"
|
||||
music = null
|
||||
|
||||
/area/mine/lobby
|
||||
name = "Mining station"
|
||||
icon_state = "mine"
|
||||
|
||||
/area/mine/storage
|
||||
name = "Mining station Storage"
|
||||
icon_state = "green"
|
||||
|
||||
/area/mine/production
|
||||
name = "Mining station Production Area"
|
||||
icon_state = "janitor"
|
||||
|
||||
/area/mine/living_quarters
|
||||
name = "Abandoned Mining Station"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/mine/eva
|
||||
name = "Mining station EVA"
|
||||
icon_state = "eva"
|
||||
|
||||
/area/mine/maintenance
|
||||
name = "Mining station Maintenance"
|
||||
icon_state = "maintcentral"
|
||||
|
||||
/area/mine/cafeteria
|
||||
name = "Mining station Cafeteria"
|
||||
icon_state = "cafeteria"
|
||||
|
||||
/area/mine/hydroponics
|
||||
name = "Mining station Hydroponics"
|
||||
icon_state = "hydro"
|
||||
|
||||
/area/mine/sleeper
|
||||
name = "Mining station Emergency Sleeper"
|
||||
icon_state = "medbay"
|
||||
|
||||
/**********************Mineral deposits**************************/
|
||||
|
||||
|
||||
@@ -233,43 +233,30 @@ proc/process_ghost_teleport_locs()
|
||||
|
||||
/area/centcom/evac
|
||||
name = "Centcom Emergency Shuttle"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/suppy
|
||||
name = "Centcom Supply Shuttle"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/ferry
|
||||
name = "Centcom Transport Shuttle"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/shuttle
|
||||
name = "Centcom Administration Shuttle"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/test
|
||||
name = "Centcom Testing Facility"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/living
|
||||
name = "Centcom Living Quarters"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/specops
|
||||
name = "Centcom Special Ops"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/creed
|
||||
name = "Creed's Office"
|
||||
icon_state = "purple"
|
||||
requires_power = 0
|
||||
|
||||
/area/centcom/holding
|
||||
name = "Holding Facility"
|
||||
|
||||
//EXTRA
|
||||
|
||||
@@ -820,7 +807,7 @@ proc/process_ghost_teleport_locs()
|
||||
|
||||
/area/quartermaster/miningdock
|
||||
name = "Mining Dock"
|
||||
icon_state = "yellow"
|
||||
icon_state = "mining"
|
||||
|
||||
/area/quartermaster/miningstorage
|
||||
name = "Mining Storage"
|
||||
|
||||
@@ -128,6 +128,7 @@ var
|
||||
list/newplayer_start = list()
|
||||
list/latejoin = list()
|
||||
list/prisonwarp = list() //prisoners go to these
|
||||
list/holdingfacility = list() //captured people go here
|
||||
list/mazewarp = list()
|
||||
list/tdome1 = list()
|
||||
list/tdome2 = list()
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
var/subscreen // Which specific function of the main screen is being displayed
|
||||
|
||||
var/tnote // Message history var used for PDA Messaging functions
|
||||
var/poff = 0 // For PDA messanging.
|
||||
|
||||
var/secHUD = 0 // Toggles whether the Security HUD is active or not
|
||||
var/medHUD = 0 // Toggles whether the Medical HUD is active or not
|
||||
|
||||
@@ -781,6 +781,24 @@ ________________________________________________________________________________
|
||||
|
||||
U << "Replenished a total of [total_reagent_transfer ? total_reagent_transfer : "zero"] chemical units."//Let the player know how much total volume was added.
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/cell))
|
||||
if(I:maxcharge>cell.maxcharge)
|
||||
U << "\blue Higher maximum capacity detected.\nUpgrading..."
|
||||
if (n_gloves&&n_gloves.candrain&&do_after(U,50))
|
||||
U.drop_item()
|
||||
I.loc = src
|
||||
I:charge = min(I:charge+cell.charge, I:maxcharge)
|
||||
var/obj/item/weapon/cell/old_cell = cell
|
||||
old_cell.charge = 0
|
||||
U.put_in_hand(old_cell)
|
||||
old_cell.add_fingerprint(U)
|
||||
old_cell.corrupt()
|
||||
old_cell.updateicon()
|
||||
cell = I
|
||||
U << "\blue Upgrade complete. Maximum capacity: <b>[round(cell.maxcharge/100)]</b>%"
|
||||
else
|
||||
U << "\red Procedure interrupted. Protocol terminated."
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/toggle_stealth()
|
||||
@@ -921,38 +939,21 @@ ________________________________________________________________________________
|
||||
|
||||
if("CELL")
|
||||
var/obj/item/weapon/cell/A = target
|
||||
if(A.maxcharge>S.cell.maxcharge)
|
||||
U << "\blue Higher maximum capacity detected.\nUpgrading..."
|
||||
if (G.candrain&&do_after(U,50))
|
||||
U.drop_item()
|
||||
A.loc = S
|
||||
A.charge = min(A.charge+S.cell.charge, A.maxcharge)
|
||||
var/obj/item/weapon/cell/old_cell = S.cell
|
||||
old_cell.charge = 0
|
||||
U.put_in_hand(old_cell)
|
||||
old_cell.add_fingerprint(U)
|
||||
old_cell.corrupt()
|
||||
old_cell.updateicon()
|
||||
S.cell = A
|
||||
U << "\blue Upgrade complete. Maximum capacity: <b>[round(S.cell.charge/100)]</b>%"
|
||||
if(A.charge)
|
||||
if (G.candrain&&do_after(U,30))
|
||||
U << "\blue Gained <B>[A.charge]</B> energy from the cell."
|
||||
if(S.cell.charge+A.charge>S.cell.maxcharge)
|
||||
S.cell.charge=S.cell.maxcharge
|
||||
else
|
||||
S.cell.charge+=A.charge
|
||||
A.charge = 0
|
||||
G.draining = 0
|
||||
A.corrupt()
|
||||
A.updateicon()
|
||||
else
|
||||
U << "\red Procedure interrupted. Protocol terminated."
|
||||
else
|
||||
if(A.charge)
|
||||
if (G.candrain&&do_after(U,30))
|
||||
U << "\blue Gained <B>[A.charge]</B> energy from the cell."
|
||||
if(S.cell.charge+A.charge>S.cell.maxcharge)
|
||||
S.cell.charge=S.cell.maxcharge
|
||||
else
|
||||
S.cell.charge+=A.charge
|
||||
A.charge = 0
|
||||
G.draining = 0
|
||||
A.corrupt()
|
||||
A.updateicon()
|
||||
else
|
||||
U << "\red Procedure interrupted. Protocol terminated."
|
||||
else
|
||||
U << "\red This cell is empty and of no use."
|
||||
U << "\red This cell is empty and of no use."
|
||||
|
||||
if("MACHINERY")//Can be applied to generically to all powered machinery. I'm leaving this alone for now.
|
||||
var/obj/machinery/A = target
|
||||
@@ -1211,7 +1212,7 @@ ________________________________________________________________________________
|
||||
*/
|
||||
|
||||
/*
|
||||
It will teleport people to the prison after 30 seconds. (Check the process() proc to change where teleport goes)
|
||||
It will teleport people to a holding facility after 30 seconds. (Check the process() proc to change where teleport goes)
|
||||
It is possible to destroy the net by the occupant or someone else.
|
||||
*/
|
||||
|
||||
@@ -1267,7 +1268,7 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
density = 0//Make the net pass-through.
|
||||
invisibility = 101//Make the net invisible so all the animations can play out.
|
||||
health = INFINITY//Make the net invincible so that an explosion/something else won't kill it while, spawn() is running.
|
||||
M.loc = pick(prisonwarp)//Throw mob in prison.
|
||||
M.loc = pick(holdingfacility)//Throw mob in to the holding facility.
|
||||
|
||||
spawn(0)
|
||||
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||
|
||||
@@ -43,8 +43,8 @@ ________________________________________________________________________________
|
||||
|
||||
Admin Notes:
|
||||
|
||||
Ninjas are meant for players to respawn as, not admins. They are another way to participate in the game post-death, like pais,
|
||||
xenos, death squads, and cyborgs. Ninjas are not admin PCs--please do not use them for that purpose.
|
||||
Ninjas are not admin PCs--please do not use them for that purpose. They are another way to participate in the game post-death,
|
||||
like pais, xenos, death squads, and cyborgs.
|
||||
I'm currently looking for feedback from regular players since beta testing is largely done. I would appreciate if
|
||||
you spawned regular players as ninjas when rounds are boring. Or exciting, it's all good as long as there is feedback.
|
||||
You can also spawn ninja gear manually if you want to.
|
||||
@@ -67,28 +67,132 @@ ________________________________________________________________________________
|
||||
/proc/space_ninja_arrival()
|
||||
/*
|
||||
var/datum/game_mode/current_mode = ticker.mode
|
||||
var/datum/mind/current_mind = new()
|
||||
var/antagonist_list[] = list()//The bad guys.
|
||||
var/protagonist_list[] = current_mode:get_living_heads()//The good guys. Mostly Heads. Who are alive.
|
||||
var/xeno_list[] = list()//Aliums.
|
||||
|
||||
//First we determine what mode it is and add the bad guys approprietly.
|
||||
switch (current_mode.config_tag)
|
||||
if ("revolution")
|
||||
if("traitor")
|
||||
if(current_mode:traitors.len)
|
||||
for(var/datum/mind/current_mind in current_mode:traitors)//For traitor minds in in the traitors list.
|
||||
if(current_mind.current&¤t_mind.current.stat!=2)//If the traitor mob exists and they are not dead.
|
||||
antagonist_list += current_mind//Add them to the list.
|
||||
|
||||
if ("revolution")//Rev is divided into regular and head cultists. There are also heads of staff to consider.
|
||||
if(current_mode:head_revolutionaries.len)
|
||||
for(var/datum/mind/current_mind in current_mode:head_revolutionaries)
|
||||
if(current_mind.current&¤t_mind.current.stat!=2)
|
||||
antagonist_list += current_mind
|
||||
|
||||
if ("cult")
|
||||
if (src in current_mode:cult)
|
||||
//if(current_mode:revolutionaries.len)//We don't need to worry about regular revs as they are of no particular importance.
|
||||
|
||||
if(current_mode:heads_of_staff.len)
|
||||
heads_list = list()//Now we manually override the list made prior. Target Heads take priority.
|
||||
for(var/datum/mind/current_mind in current_mode:heads_of_staff)
|
||||
if(current_mind.current&¤t_mind.current.stat!=2)
|
||||
protagonist_list += current_mind
|
||||
if(heads_list.len)//Or not, if there are none.
|
||||
protagonist_list = heads_list
|
||||
|
||||
if ("wizard")
|
||||
if (current_mode:wizard && src == current_mode:wizard)
|
||||
if ("cult")//Always a few of these around.
|
||||
if(current_mode:cult.len)
|
||||
for(var/datum/mind/current_mind in current_mode:cult)
|
||||
if(current_mind.current&¤t_mind.current.stat!=2)
|
||||
antagonist_list += current_mind
|
||||
|
||||
if ("wizard")//There can be only one mode wizard. Other wizards aren't too important.
|
||||
if(current_mode:wizard)
|
||||
antagonist_list += wizard//The round will end if the wizard dies so checking for it is unnecessary.
|
||||
|
||||
if ("changeling")
|
||||
if (src in current_mode:changelings)
|
||||
if ("changeling")//While only one changeling counts for being alive or dead, it's possible there are more.
|
||||
if(current_mode:changelings.len)
|
||||
for(var/datum/mind/current_mind in current_mode:changelings)
|
||||
if(current_mind.current&¤t_mind.current.stat!=2)
|
||||
antagonist_list += current_mind
|
||||
|
||||
if ("malfunction")//Only one malf AI.
|
||||
if(current_mode:malf_ai)
|
||||
antagonist_list += malf_ai
|
||||
|
||||
if ("malfunction")
|
||||
if (src in current_mode:malf_ai)
|
||||
if ("nuclear")//Can be a few of these guys.
|
||||
if(current_mode:syndicates.len)
|
||||
for(var/datum/mind/current_mind in current_mode:syndicates)
|
||||
if(current_mind.current&¤t_mind.current.stat!=2)
|
||||
antagonist_list += current_mind
|
||||
else
|
||||
return//Don't want to summon a ninja during meteor or extended, or something.
|
||||
|
||||
//Here we pick a location and spawn the ninja.
|
||||
var/list/spawn_list = list()
|
||||
for(var/obj/landmark/L in world)
|
||||
if (L.name == "carpspawn")
|
||||
spawn_list.Add(L)
|
||||
|
||||
if ("nuclear")
|
||||
if(src in current_mode:syndicates)
|
||||
var/mob/dead/observer/G
|
||||
var/list/candidates = list()
|
||||
for(G in world)
|
||||
if(G.client)//Now everyone can ninja!
|
||||
if(((G.client.inactivity/10)/60) <= 5)
|
||||
candidates.Add(G)
|
||||
|
||||
//The ninja will be created on the right spawn point or at late join.
|
||||
var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list.len ? spawn_list : latejoin ))
|
||||
|
||||
if(candidates.len)
|
||||
var/mob/G = pick(candidates)
|
||||
new_ninja.key = G.key
|
||||
new_ninja.mind.key = key
|
||||
new_ninja.wear_suit:randomize_param()//Give them a random set of suit parameters.
|
||||
new_ninja.internal = new_ninja.s_store //So the poor ninja has something to breath when they spawn in spess.
|
||||
new_ninja.internals.icon_state = "internal1"
|
||||
del(G)
|
||||
else
|
||||
del(new_ninja)
|
||||
return
|
||||
//Now for the rest of the stuff.
|
||||
|
||||
var/datum/mind/ninja_mind = new_ninja.mind//For easier reference.
|
||||
|
||||
//Xenos and deathsquads take precedence over everything else.
|
||||
for(var/mob/living/carbon/alien/humanoid/xeno in world)//Unless the xenos are hiding in a locker somewhere, this'll find em.
|
||||
if(istype(xeno))
|
||||
xeno_list += xeno
|
||||
|
||||
//if(xeno_list.len>3)//If there are more than three humanoid xenos on the station, time to get dangerous.
|
||||
//if(sent_strike_team)//If a strike team was sent.
|
||||
for(var/mob/living/carbon/human/commando in world)//Search and destroy.
|
||||
if(commando.mind&&commando.mind.special_role=="Death Commando")
|
||||
var/datum/objective/assassinate/ninja_objective = new
|
||||
ninja_objective.owner = ninja_mind
|
||||
ninja_objective.find_target_by_role(commando.mind.special_role,1)
|
||||
ninja_mind.objectives += ninja_objective
|
||||
|
||||
if(!antagonist_list.len)//If all of em' are dead/destroyed, we want to give the ninja a random objective.
|
||||
switch(rand(1,3))
|
||||
if(1)
|
||||
if(protagonist_list.len)//If we have surviving heads.
|
||||
for(var/datum/mind/head_mind in protagonist_list)//Search and destroy.
|
||||
var/datum/objective/assassinate/ninja_objective = new
|
||||
ninja_objective.owner = ninja_mind
|
||||
ninja_objective.find_target_by_role(head_mind.assigned_role)
|
||||
ninja_mind.objectives += ninja_objective
|
||||
|
||||
//TO DO: add ninja-net point-based system objective.
|
||||
//TO DO: upgrade cell objective.
|
||||
|
||||
else//Else, we need to give them an objective based on round type.
|
||||
|
||||
//if(!ninja_mind.objectives.len)//If they somehow did not get an objective.
|
||||
//Let em know.
|
||||
|
||||
//Finally add a survival objective.
|
||||
var/datum/objective/survive/ninja_objective = new
|
||||
ninja_objective.owner = ninja_mind
|
||||
ninja_mind.objectives += ninja_objective
|
||||
|
||||
//new_ninja << "\blue \nYou are an elite mercenary assassin of the Spider Clan, [new_ninja.real_name]. The dreaded \red <B>SPACE NINJA</B>!\blue You have a variety of abilities at your disposal, thanks to your nano-enhanced cyber armor. Remember your training (initialize your suit by right clicking on it)! \nYour current mission is: \red <B>[input]</B>"
|
||||
*/
|
||||
return
|
||||
|
||||
@@ -115,15 +219,12 @@ ________________________________________________________________________________
|
||||
return
|
||||
|
||||
var/list/spawn_list = list()
|
||||
for(var/obj/landmark/X in world)
|
||||
if (X.name == "carpspawn")
|
||||
spawn_list.Add(X)
|
||||
if(!spawn_list.len)
|
||||
alert("No spawn location could be found. Aborting.")
|
||||
return
|
||||
for(var/obj/landmark/L in world)
|
||||
if (L.name == "carpspawn")
|
||||
spawn_list.Add(L)
|
||||
|
||||
var/admin_name = src
|
||||
var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list))
|
||||
var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list.len ? spawn_list : latejoin ))
|
||||
|
||||
var/mob/dead/observer/G
|
||||
var/list/candidates = list()
|
||||
@@ -156,7 +257,7 @@ ________________________________________________________________________________
|
||||
|
||||
//=======//NINJA CREATION PROCS//=======//
|
||||
|
||||
client/proc/create_space_ninja(obj/spawn_point)
|
||||
/proc/create_space_ninja(obj/spawn_point)
|
||||
var/mob/living/carbon/human/new_ninja = new(spawn_point.loc)
|
||||
var/ninja_title = pick(ninja_titles)
|
||||
var/ninja_name = pick(ninja_names)
|
||||
|
||||
@@ -5,7 +5,7 @@ datum
|
||||
|
||||
New(var/text)
|
||||
if(text)
|
||||
src.explanation_text = text
|
||||
explanation_text = text
|
||||
|
||||
proc
|
||||
check_completion()
|
||||
@@ -31,9 +31,9 @@ datum
|
||||
|
||||
return target
|
||||
|
||||
proc/find_target_by_role(var/role)
|
||||
proc/find_target_by_role(role, role_type=0)//Option sets either to check assigned role or special role. Default to assigned.
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
if((possible_target != owner) && istype(possible_target.current, /mob/living/carbon/human) && (possible_target.assigned_role == role))
|
||||
if((possible_target != owner) && istype(possible_target.current, /mob/living/carbon/human) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) )
|
||||
target = possible_target
|
||||
break
|
||||
|
||||
@@ -134,12 +134,12 @@ datum
|
||||
)
|
||||
|
||||
proc/set_target(var/target_name as text)
|
||||
src.target_name = target_name
|
||||
src.steal_target = possible_items[target_name]
|
||||
if (!src.steal_target )
|
||||
src.steal_target = possible_items_special[target_name]
|
||||
src.explanation_text = "Steal [target_name]."
|
||||
return src.steal_target
|
||||
target_name = target_name
|
||||
steal_target = possible_items[target_name]
|
||||
if (!steal_target )
|
||||
steal_target = possible_items_special[target_name]
|
||||
explanation_text = "Steal [target_name]."
|
||||
return steal_target
|
||||
|
||||
proc/find_target()
|
||||
return set_target(pick(possible_items))
|
||||
@@ -158,14 +158,14 @@ datum
|
||||
new_target = input("Enter target name:", "Objective target", new_target) as text|null
|
||||
if (!new_target) return
|
||||
|
||||
src.target_name = new_target
|
||||
src.steal_target = steal_target
|
||||
src.explanation_text = "Steal [new_target]."
|
||||
target_name = new_target
|
||||
steal_target = steal_target
|
||||
explanation_text = "Steal [new_target]."
|
||||
|
||||
else
|
||||
set_target(new_target)
|
||||
|
||||
return src.steal_target
|
||||
return steal_target
|
||||
|
||||
check_completion()
|
||||
if(!steal_target || !owner.current)
|
||||
@@ -210,6 +210,9 @@ datum
|
||||
else
|
||||
return 0
|
||||
|
||||
//capture
|
||||
//WIP
|
||||
|
||||
/* Isn't suited for global objectives
|
||||
/*---------CULTIST----------*/
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
var/list/datum/mind/head_revolutionaries = list()
|
||||
var/list/datum/mind/revolutionaries = list()
|
||||
var/list/datum/mind/heads_of_staff = list()//This was annoying to check manually. Now I won't have to.
|
||||
var/finished = 0
|
||||
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
|
||||
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
|
||||
@@ -57,6 +58,7 @@
|
||||
rev_obj.owner = rev_mind
|
||||
rev_obj.find_target_by_role(head_mind.assigned_role)
|
||||
rev_mind.objectives += rev_obj
|
||||
heads_of_staff += head_mind
|
||||
|
||||
equip_traitor(rev_mind.current, 1) //changing how revs get assigned their uplink so they can get PDA uplinks. --NEO
|
||||
equip_revolutionary(rev_mind.current)
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
if(istype(wizard))
|
||||
wizard.assigned_role = "MODE" //So they aren't chosen for other jobs.
|
||||
wizard.special_role = "Wizard"
|
||||
wizard.original = wizard.current
|
||||
|
||||
if(wizardstart.len == 0)
|
||||
wizard.current << "<B>\red A starting location for you could not be found, please report this bug!</B>"
|
||||
@@ -208,7 +209,12 @@
|
||||
|
||||
var/wizard_name
|
||||
if(wizard.current)
|
||||
wizard_name = "[wizard.current.real_name] (played by [wizard.key])"
|
||||
if(wizard.current == wizard.original)
|
||||
wizard_name = "[wizard.current.real_name] (played by [wizard.key])"
|
||||
else if (wizard.original)
|
||||
wizard_name = "[wizard.current.real_name] (originally [wizard.original.real_name]) (played by [wizard.key])"
|
||||
else
|
||||
wizard_name = "[wizard.current.real_name] (original character destroyed) (played by [wizard.key])"
|
||||
else
|
||||
wizard_name = "[wizard.key] (character destroyed)"
|
||||
world << "<B>The wizard was [wizard_name]</B>"
|
||||
|
||||
+22
-20
@@ -1,65 +1,67 @@
|
||||
/obj/landmark/New()
|
||||
|
||||
..()
|
||||
src.tag = text("landmark*[]", src.name)
|
||||
src.invisibility = 101
|
||||
tag = text("landmark*[]", name)
|
||||
invisibility = 101
|
||||
|
||||
if (name == "shuttle")
|
||||
shuttle_z = src.z
|
||||
shuttle_z = z
|
||||
del(src)
|
||||
|
||||
if (name == "airtunnel_stop")
|
||||
airtunnel_stop = src.x
|
||||
airtunnel_stop = x
|
||||
|
||||
if (name == "airtunnel_start")
|
||||
airtunnel_start = src.x
|
||||
airtunnel_start = x
|
||||
|
||||
if (name == "airtunnel_bottom")
|
||||
airtunnel_bottom = src.y
|
||||
airtunnel_bottom = y
|
||||
|
||||
if (name == "monkey")
|
||||
monkeystart += src.loc
|
||||
monkeystart += loc
|
||||
del(src)
|
||||
if (name == "start")
|
||||
newplayer_start += src.loc
|
||||
newplayer_start += loc
|
||||
del(src)
|
||||
|
||||
if (name == "wizard")
|
||||
wizardstart += src.loc
|
||||
wizardstart += loc
|
||||
del(src)
|
||||
|
||||
if (name == "JoinLate")
|
||||
latejoin += src.loc
|
||||
latejoin += loc
|
||||
del(src)
|
||||
|
||||
//prisoners
|
||||
if (name == "prisonwarp")
|
||||
prisonwarp += src.loc
|
||||
prisonwarp += loc
|
||||
del(src)
|
||||
if (name == "mazewarp")
|
||||
mazewarp += src.loc
|
||||
mazewarp += loc
|
||||
if (name == "Holding Facility")
|
||||
holdingfacility += loc
|
||||
if (name == "tdome1")
|
||||
tdome1 += src.loc
|
||||
tdome1 += loc
|
||||
if (name == "tdome2")
|
||||
tdome2 += src.loc
|
||||
tdome2 += loc
|
||||
if (name == "tdomeadmin")
|
||||
tdomeadmin += src.loc
|
||||
tdomeadmin += loc
|
||||
if (name == "tdomeobserve")
|
||||
tdomeobserve += src.loc
|
||||
tdomeobserve += loc
|
||||
//not prisoners
|
||||
if (name == "prisonsecuritywarp")
|
||||
prisonsecuritywarp += src.loc
|
||||
prisonsecuritywarp += loc
|
||||
del(src)
|
||||
|
||||
if (name == "blobstart")
|
||||
blobstart += src.loc
|
||||
blobstart += loc
|
||||
del(src)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/landmark/start/New()
|
||||
..()
|
||||
src.tag = "start*[src.name]"
|
||||
src.invisibility = 101
|
||||
tag = "start*[name]"
|
||||
invisibility = 101
|
||||
|
||||
return 1
|
||||
@@ -113,6 +113,9 @@
|
||||
var/mob/occupant = null
|
||||
anchored = 1
|
||||
|
||||
/obj/machinery/sleeper/dummy//For effects only.
|
||||
icon_state = "sleeper_1"
|
||||
|
||||
/obj/machinery/sleeper/allow_drop()
|
||||
return 0
|
||||
|
||||
@@ -173,6 +176,9 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/sleeper/dummy/attackby()
|
||||
return
|
||||
|
||||
/obj/machinery/sleeper/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
@@ -289,6 +295,12 @@
|
||||
occupied = 0
|
||||
return
|
||||
|
||||
/obj/machinery/sleeper/dummy/eject()
|
||||
set category = null
|
||||
set hidden = 1
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/sleeper/verb/move_inside()
|
||||
set name = "Enter Sleeper"
|
||||
set category = "Object"
|
||||
@@ -319,4 +331,10 @@
|
||||
return
|
||||
else
|
||||
occupied = 0
|
||||
return
|
||||
|
||||
/obj/machinery/sleeper/dummy/move_inside()
|
||||
set category = null
|
||||
set hidden = 1
|
||||
|
||||
return
|
||||
@@ -368,6 +368,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
new_character.mind.special_verbs = list()//New list because they will receive them again.
|
||||
else
|
||||
new_character.mind = new()
|
||||
ticker.minds += new_character.mind//And we'll add it to the minds database.
|
||||
if(!record_found)//We have to pick their role if they have no record.
|
||||
if(G_found.mind&&G_found.mind.assigned_role)//But they may have an assigned role already.
|
||||
new_character.mind.assigned_role = G_found.mind.assigned_role//Also makes sure our MODE people are equipped right later on.
|
||||
|
||||
@@ -124,6 +124,7 @@ var/global/sent_strike_team = 0
|
||||
new_commando.mind.current = new_commando
|
||||
new_commando.mind.assigned_role = "MODE"
|
||||
new_commando.mind.special_role = "Death Commando"
|
||||
ticker.minds += new_commando.mind
|
||||
new_commando.equip_death_commando(leader_selected)
|
||||
del(spawn_location)
|
||||
return new_commando
|
||||
|
||||
@@ -296,7 +296,7 @@ mob/new_player
|
||||
if (ailist.len)
|
||||
var/mob/living/silicon/ai/announcer = pick(ailist)
|
||||
if(character.mind.assigned_role != "Cyborg"&&character.mind.special_role != "MODE")
|
||||
announcer.say("[character.real_name] has signed up as [rank].")
|
||||
announcer.say("[character.real_name], the [rank], has awoken from cryo sleep.")
|
||||
|
||||
proc/ManifestLateSpawn(var/mob/living/carbon/human/H) // Attempted fix to add late joiners to various databases -- TLE
|
||||
// This is basically ripped wholesale from the normal code for adding people to the databases during a fresh round
|
||||
|
||||
@@ -181,13 +181,13 @@
|
||||
mind.original = O
|
||||
else if (mind.special_role) O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite")
|
||||
|
||||
else //welp
|
||||
else
|
||||
mind = new /datum/mind( )
|
||||
mind.key = key
|
||||
mind.current = O
|
||||
mind.original = O
|
||||
mind.transfer_to(O)
|
||||
ticker.minds += O.mind
|
||||
//ticker.minds += O.mind//Robutts aren't added to minds since it would be screwy. Assassinate that robot!
|
||||
O.loc = loc
|
||||
O << "<B>You are playing a Robot. A Robot can interact with most electronic objects in its view point.</B>"
|
||||
O << "<B>You must follow the laws that the AI has. You are the AI's assistant to the station basically.</B>"
|
||||
|
||||
Reference in New Issue
Block a user