Bleeding edgy refresh (#303)
* not code stuff * other things * global vars, defines, helpers * onclick hud stuff, orphans, world.dm * controllers and datums * game folder * everything not client/mobs in modules * client folder * stage 1 mob stuff * simple animal things * silicons * carbon things * ayylmaos and monkeys * hyoomahn * icons n shit * sprite fixes * compile fixes * some fixes I cherrypicked. * qdel fixes * forgot brain refractors
This commit is contained in:
@@ -5,9 +5,9 @@
|
||||
/datum/game_mode/nuclear
|
||||
name = "nuclear emergency"
|
||||
config_tag = "nuclear"
|
||||
required_players = 15 // 30 players - 3 players to be the nuke ops = 27 players remaining
|
||||
required_players = 30 // 30 players - 3 players to be the nuke ops = 27 players remaining
|
||||
required_enemies = 2
|
||||
recommended_enemies = 2
|
||||
recommended_enemies = 5
|
||||
antag_flag = ROLE_OPERATIVE
|
||||
enemy_minimum_age = 14
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
if(nuke_code)
|
||||
synd_mind.store_memory("<B>Syndicate Nuclear Bomb Code</B>: [nuke_code]", 0, 0)
|
||||
synd_mind.current << "The nuclear authorization code is: <B>[nuke_code]</B>"
|
||||
to_chat(synd_mind.current, "The nuclear authorization code is: <B>[nuke_code]</B>")
|
||||
|
||||
if(!leader_selected)
|
||||
prepare_syndicate_leader(synd_mind, nuke_code)
|
||||
@@ -105,9 +105,9 @@
|
||||
nukeops_lastname = nukelastname(synd_mind.current)
|
||||
NukeNameAssign(nukeops_lastname,syndicates) //allows time for the rest of the syndies to be chosen
|
||||
synd_mind.current.real_name = "[syndicate_name()] [leader_title]"
|
||||
synd_mind.current << "<B>You are the Syndicate [leader_title] for this mission. You are responsible for the distribution of telecrystals and your ID is the only one who can open the launch bay doors.</B>"
|
||||
synd_mind.current << "<B>If you feel you are not up to this task, give your ID to another operative.</B>"
|
||||
synd_mind.current << "<B>In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.</B>"
|
||||
to_chat(synd_mind.current, "<B>You are the Syndicate [leader_title] for this mission. You are responsible for the distribution of telecrystals and your ID is the only one who can open the launch bay doors.</B>")
|
||||
to_chat(synd_mind.current, "<B>If you feel you are not up to this task, give your ID to another operative.</B>")
|
||||
to_chat(synd_mind.current, "<B>In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.</B>")
|
||||
|
||||
var/obj/item/device/nuclear_challenge/challenge = new /obj/item/device/nuclear_challenge
|
||||
synd_mind.current.put_in_hands_or_del(challenge)
|
||||
@@ -146,7 +146,7 @@
|
||||
|
||||
/datum/game_mode/proc/greet_syndicate(datum/mind/syndicate, you_are=1)
|
||||
if(you_are)
|
||||
syndicate.current << "<span class='notice'>You are a [syndicate_name()] agent!</span>"
|
||||
to_chat(syndicate.current, "<span class='notice'>You are a [syndicate_name()] agent!</span>")
|
||||
syndicate.announce_objectives()
|
||||
|
||||
/datum/game_mode/proc/equip_syndicate(mob/living/carbon/human/synd_mob, telecrystals = TRUE)
|
||||
@@ -198,71 +198,71 @@
|
||||
|
||||
if(nuke_off_station == NUKE_SYNDICATE_BASE)
|
||||
feedback_set_details("round_end_result","loss - syndicate nuked - disk secured")
|
||||
world << "<FONT size = 3><B>Humiliating Syndicate Defeat</B></FONT>"
|
||||
world << "<B>The crew of [station_name()] gave [syndicate_name()] operatives back their bomb! The syndicate base was destroyed!</B> Next time, don't lose the nuke!"
|
||||
to_chat(world, "<FONT size = 3><B>Humiliating Syndicate Defeat</B></FONT>")
|
||||
to_chat(world, "<B>The crew of [station_name()] gave [syndicate_name()] operatives back their bomb! The syndicate base was destroyed!</B> Next time, don't lose the nuke!")
|
||||
|
||||
ticker.news_report = NUKE_SYNDICATE_BASE
|
||||
|
||||
else if(!disk_rescued && station_was_nuked && !syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","win - syndicate nuke")
|
||||
world << "<FONT size = 3><B>Syndicate Major Victory!</B></FONT>"
|
||||
world << "<B>[syndicate_name()] operatives have destroyed [station_name()]!</B>"
|
||||
to_chat(world, "<FONT size = 3><B>Syndicate Major Victory!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives have destroyed [station_name()]!</B>")
|
||||
|
||||
ticker.news_report = STATION_NUKED
|
||||
|
||||
else if (!disk_rescued && station_was_nuked && syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","halfwin - syndicate nuke - did not evacuate in time")
|
||||
world << "<FONT size = 3><B>Total Annihilation</B></FONT>"
|
||||
world << "<B>[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion.</B> Next time, don't lose the disk!"
|
||||
to_chat(world, "<FONT size = 3><B>Total Annihilation</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion.</B> Next time, don't lose the disk!")
|
||||
|
||||
ticker.news_report = STATION_NUKED
|
||||
|
||||
else if (!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","halfwin - blew wrong station")
|
||||
world << "<FONT size = 3><B>Crew Minor Victory</B></FONT>"
|
||||
world << "<B>[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].</B> Next time, don't do that!"
|
||||
to_chat(world, "<FONT size = 3><B>Crew Minor Victory</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].</B> Next time, don't do that!")
|
||||
|
||||
ticker.news_report = NUKE_MISS
|
||||
|
||||
else if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","halfwin - blew wrong station - did not evacuate in time")
|
||||
world << "<FONT size = 3><B>[syndicate_name()] operatives have earned Darwin Award!</B></FONT>"
|
||||
world << "<B>[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.</B> Next time, don't do that!"
|
||||
to_chat(world, "<FONT size = 3><B>[syndicate_name()] operatives have earned Darwin Award!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.</B> Next time, don't do that!")
|
||||
|
||||
ticker.news_report = NUKE_MISS
|
||||
|
||||
else if ((disk_rescued || SSshuttle.emergency.mode != SHUTTLE_ENDGAME) && are_operatives_dead())
|
||||
feedback_set_details("round_end_result","loss - evacuation - disk secured - syndi team dead")
|
||||
world << "<FONT size = 3><B>Crew Major Victory!</B></FONT>"
|
||||
world << "<B>The Research Staff has saved the disk and killed the [syndicate_name()] Operatives</B>"
|
||||
to_chat(world, "<FONT size = 3><B>Crew Major Victory!</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff has saved the disk and killed the [syndicate_name()] Operatives</B>")
|
||||
|
||||
ticker.news_report = OPERATIVES_KILLED
|
||||
|
||||
else if (disk_rescued)
|
||||
feedback_set_details("round_end_result","loss - evacuation - disk secured")
|
||||
world << "<FONT size = 3><B>Crew Major Victory</B></FONT>"
|
||||
world << "<B>The Research Staff has saved the disk and stopped the [syndicate_name()] Operatives!</B>"
|
||||
to_chat(world, "<FONT size = 3><B>Crew Major Victory</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff has saved the disk and stopped the [syndicate_name()] Operatives!</B>")
|
||||
|
||||
ticker.news_report = OPERATIVES_KILLED
|
||||
|
||||
else if (!disk_rescued && are_operatives_dead())
|
||||
feedback_set_details("round_end_result","halfwin - evacuation - disk not secured")
|
||||
world << "<FONT size = 3><B>Neutral Victory!</B></FONT>"
|
||||
world << "<B>The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!</B>"
|
||||
to_chat(world, "<FONT size = 3><B>Neutral Victory!</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!</B>")
|
||||
|
||||
ticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
else if (!disk_rescued && crew_evacuated)
|
||||
feedback_set_details("round_end_result","halfwin - detonation averted")
|
||||
world << "<FONT size = 3><B>Syndicate Minor Victory!</B></FONT>"
|
||||
world << "<B>[syndicate_name()] operatives survived the assault but did not achieve the destruction of [station_name()].</B> Next time, don't lose the disk!"
|
||||
to_chat(world, "<FONT size = 3><B>Syndicate Minor Victory!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives survived the assault but did not achieve the destruction of [station_name()].</B> Next time, don't lose the disk!")
|
||||
|
||||
ticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
else if (!disk_rescued && !crew_evacuated)
|
||||
feedback_set_details("round_end_result","halfwin - interrupted")
|
||||
world << "<FONT size = 3><B>Neutral Victory</B></FONT>"
|
||||
world << "<B>Round was mysteriously interrupted!</B>"
|
||||
to_chat(world, "<FONT size = 3><B>Neutral Victory</B></FONT>")
|
||||
to_chat(world, "<B>Round was mysteriously interrupted!</B>")
|
||||
|
||||
ticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
text += "(Syndicates used [TC_uses] TC) [purchases]"
|
||||
if(TC_uses == 0 && station_was_nuked && !are_operatives_dead())
|
||||
text += "<BIG><IMG CLASS=icon SRC=\ref['icons/BadAss.dmi'] ICONSTATE='badass'></BIG>"
|
||||
world << text
|
||||
to_chat(world, text)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
|
||||
else
|
||||
if (newname == "Unknown" || newname == "floor" || newname == "wall" || newname == "rwall" || newname == "_")
|
||||
M << "That name is reserved."
|
||||
to_chat(M, "That name is reserved.")
|
||||
return nukelastname(M)
|
||||
|
||||
return capitalize(newname)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
return
|
||||
|
||||
if(are_you_sure == "No")
|
||||
user << "On second thought, the element of surprise isn't so bad after all."
|
||||
to_chat(user, "On second thought, the element of surprise isn't so bad after all.")
|
||||
return
|
||||
|
||||
var/war_declaration = "[user.real_name] has declared his intent to utterly destroy [station_name()] with a nuclear device, and dares the crew to try and stop them."
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
priority_announce(war_declaration, title = "Declaration of War", sound = 'sound/machines/Alarm.ogg')
|
||||
|
||||
user << "You've attracted the attention of powerful forces within the syndicate. A bonus bundle of telecrystals has been granted to your team. Great things await you if you complete the mission."
|
||||
to_chat(user, "You've attracted the attention of powerful forces within the syndicate. A bonus bundle of telecrystals has been granted to your team. Great things await you if you complete the mission.")
|
||||
|
||||
for(var/V in syndicate_shuttle_boards)
|
||||
var/obj/item/weapon/circuitboard/computer/syndicate_shuttle/board = V
|
||||
@@ -62,21 +62,21 @@
|
||||
|
||||
/obj/item/device/nuclear_challenge/proc/check_allowed(mob/living/user)
|
||||
if(declaring_war)
|
||||
user << "You are already in the process of declaring war! Make your mind up."
|
||||
to_chat(user, "You are already in the process of declaring war! Make your mind up.")
|
||||
return 0
|
||||
if(player_list.len < CHALLENGE_MIN_PLAYERS)
|
||||
user << "The enemy crew is too small to be worth declaring war on."
|
||||
to_chat(user, "The enemy crew is too small to be worth declaring war on.")
|
||||
return 0
|
||||
if(user.z != ZLEVEL_CENTCOM)
|
||||
user << "You have to be at your base to use this."
|
||||
to_chat(user, "You have to be at your base to use this.")
|
||||
return 0
|
||||
if(world.time-round_start_time > CHALLENGE_TIME_LIMIT)
|
||||
user << "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand."
|
||||
to_chat(user, "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand.")
|
||||
return 0
|
||||
for(var/V in syndicate_shuttle_boards)
|
||||
var/obj/item/weapon/circuitboard/computer/syndicate_shuttle/board = V
|
||||
if(board.moved)
|
||||
user << "The shuttle has already been moved! You have forfeit the right to declare war."
|
||||
to_chat(user, "The shuttle has already been moved! You have forfeit the right to declare war.")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -53,6 +53,10 @@ var/bomb_set
|
||||
previous_level = get_security_level()
|
||||
|
||||
/obj/machinery/nuclearbomb/Destroy()
|
||||
safety = FALSE
|
||||
if(!exploding)
|
||||
// If we're not exploding, set the alert level back to normal
|
||||
set_safety()
|
||||
poi_list -= src
|
||||
nuke_list -= src
|
||||
if(countdown)
|
||||
@@ -63,11 +67,9 @@ var/bomb_set
|
||||
/obj/machinery/nuclearbomb/examine(mob/user)
|
||||
. = ..()
|
||||
if(exploding)
|
||||
user << "It is in the process of exploding. Perhaps reviewing your \
|
||||
affairs is in order."
|
||||
to_chat(user, "It is in the process of exploding. Perhaps reviewing your affairs is in order.")
|
||||
if(timing)
|
||||
user << "There are [get_time_left()] seconds until \
|
||||
detonation."
|
||||
to_chat(user, "There are [get_time_left()] seconds until detonation.")
|
||||
|
||||
/obj/machinery/nuclearbomb/selfdestruct
|
||||
name = "station self-destruct terminal"
|
||||
@@ -101,18 +103,18 @@ var/bomb_set
|
||||
if(NUKESTATE_INTACT)
|
||||
if(istype(I, /obj/item/weapon/screwdriver/nuke))
|
||||
playsound(loc, I.usesound, 100, 1)
|
||||
user << "<span class='notice'>You start removing [src]'s front panel's screws...</span>"
|
||||
to_chat(user, "<span class='notice'>You start removing [src]'s front panel's screws...</span>")
|
||||
if(do_after(user, 60*I.toolspeed,target=src))
|
||||
deconstruction_state = NUKESTATE_UNSCREWED
|
||||
user << "<span class='notice'>You remove the screws from [src]'s front panel.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the screws from [src]'s front panel.</span>")
|
||||
update_icon()
|
||||
return
|
||||
if(NUKESTATE_UNSCREWED)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You start removing [src]'s front panel...</span>"
|
||||
to_chat(user, "<span class='notice'>You start removing [src]'s front panel...</span>")
|
||||
playsound(loc, I.usesound, 100, 1)
|
||||
if(do_after(user,30*I.toolspeed,target=src))
|
||||
user << "<span class='notice'>You remove [src]'s front panel.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove [src]'s front panel.</span>")
|
||||
deconstruction_state = NUKESTATE_PANEL_REMOVED
|
||||
update_icon()
|
||||
return
|
||||
@@ -120,19 +122,19 @@ var/bomb_set
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/welder = I
|
||||
playsound(loc, I.usesound, 100, 1)
|
||||
user << "<span class='notice'>You start cutting [src]'s inner plate...</span>"
|
||||
to_chat(user, "<span class='notice'>You start cutting [src]'s inner plate...</span>")
|
||||
if(welder.remove_fuel(1,user))
|
||||
if(do_after(user,80*I.toolspeed,target=src))
|
||||
user << "<span class='notice'>You cut [src]'s inner plate.</span>"
|
||||
to_chat(user, "<span class='notice'>You cut [src]'s inner plate.</span>")
|
||||
deconstruction_state = NUKESTATE_WELDED
|
||||
update_icon()
|
||||
return
|
||||
if(NUKESTATE_WELDED)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You start prying off [src]'s inner plate...</span>"
|
||||
to_chat(user, "<span class='notice'>You start prying off [src]'s inner plate...</span>")
|
||||
playsound(loc, I.usesound, 100, 1)
|
||||
if(do_after(user,50*I.toolspeed,target=src))
|
||||
user << "<span class='notice'>You pry off [src]'s inner plate. You can see the core's green glow!</span>"
|
||||
to_chat(user, "<span class='notice'>You pry off [src]'s inner plate. You can see the core's green glow!</span>")
|
||||
deconstruction_state = NUKESTATE_CORE_EXPOSED
|
||||
update_icon()
|
||||
START_PROCESSING(SSobj, core)
|
||||
@@ -140,30 +142,30 @@ var/bomb_set
|
||||
if(NUKESTATE_CORE_EXPOSED)
|
||||
if(istype(I, /obj/item/nuke_core_container))
|
||||
var/obj/item/nuke_core_container/core_box = I
|
||||
user << "<span class='notice'>You start loading the plutonium core into [core_box]...</span>"
|
||||
to_chat(user, "<span class='notice'>You start loading the plutonium core into [core_box]...</span>")
|
||||
if(do_after(user,50,target=src))
|
||||
if(core_box.load(core, user))
|
||||
user << "<span class='notice'>You load the plutonium core into [core_box].</span>"
|
||||
to_chat(user, "<span class='notice'>You load the plutonium core into [core_box].</span>")
|
||||
deconstruction_state = NUKESTATE_CORE_REMOVED
|
||||
update_icon()
|
||||
core = null
|
||||
else
|
||||
user << "<span class='warning'>You fail to load the plutonium core into [core_box]. [core_box] has already been used!</span>"
|
||||
to_chat(user, "<span class='warning'>You fail to load the plutonium core into [core_box]. [core_box] has already been used!</span>")
|
||||
return
|
||||
if(istype(I, /obj/item/stack/sheet/metal))
|
||||
var/obj/item/stack/sheet/metal/M = I
|
||||
if(M.amount >= 20)
|
||||
user << "<span class='notice'>You begin repairing [src]'s inner metal plate...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin repairing [src]'s inner metal plate...</span>")
|
||||
if(do_after(user, 100, target=src))
|
||||
if(M.use(20))
|
||||
user << "<span class='notice'>You repair [src]'s inner metal plate. The radiation is contained.</span>"
|
||||
to_chat(user, "<span class='notice'>You repair [src]'s inner metal plate. The radiation is contained.</span>")
|
||||
deconstruction_state = NUKESTATE_PANEL_REMOVED
|
||||
STOP_PROCESSING(SSobj, core)
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='warning'>You need more metal to do that!</span>"
|
||||
to_chat(user, "<span class='warning'>You need more metal to do that!</span>")
|
||||
else
|
||||
user << "<span class='warning'>You need more metal to do that!</span>"
|
||||
to_chat(user, "<span class='warning'>You need more metal to do that!</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
@@ -352,7 +354,7 @@ var/bomb_set
|
||||
if(!isinspace())
|
||||
anchored = !anchored
|
||||
else
|
||||
usr << "<span class='warning'>There is nothing to anchor to!</span>"
|
||||
to_chat(usr, "<span class='warning'>There is nothing to anchor to!</span>")
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/set_safety()
|
||||
safety = !safety
|
||||
@@ -370,7 +372,7 @@ var/bomb_set
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/set_active()
|
||||
if(safety && !bomb_set)
|
||||
usr << "<span class='danger'>The safety is still on.</span>"
|
||||
to_chat(usr, "<span class='danger'>The safety is still on.</span>")
|
||||
return
|
||||
timing = !timing
|
||||
if(timing)
|
||||
@@ -500,13 +502,13 @@ This is here to make the tiles around the station mininuke change when it's arme
|
||||
/obj/item/weapon/disk/nuclear/New()
|
||||
..()
|
||||
poi_list |= src
|
||||
START_PROCESSING(SSobj, src)
|
||||
set_stationloving(TRUE, inform_admins=TRUE)
|
||||
|
||||
/obj/item/weapon/disk/nuclear/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/weapon/claymore/highlander))
|
||||
var/obj/item/weapon/claymore/highlander/H = I
|
||||
if(H.nuke_disk)
|
||||
user << "<span class='notice'>Wait... what?</span>"
|
||||
to_chat(user, "<span class='notice'>Wait... what?</span>")
|
||||
qdel(H.nuke_disk)
|
||||
H.nuke_disk = null
|
||||
return
|
||||
@@ -516,6 +518,12 @@ This is here to make the tiles around the station mininuke change when it's arme
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/disk/nuclear/Destroy(force=FALSE)
|
||||
// respawning is handled in /obj/Destroy()
|
||||
if(force)
|
||||
poi_list -= src
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/disk/nuclear/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is going delta! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
playsound(user.loc, 'sound/machines/Alarm.ogg', 50, -1, 1)
|
||||
@@ -534,56 +542,6 @@ This is here to make the tiles around the station mininuke change when it's arme
|
||||
user.visible_message("<span class='suicide'>[user] was destroyed by the nuclear blast!</span>")
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/weapon/disk/nuclear/process()
|
||||
var/turf/diskturf = get_turf(src)
|
||||
if(diskturf && (diskturf.z == ZLEVEL_CENTCOM || diskturf.z == ZLEVEL_STATION))
|
||||
return
|
||||
else
|
||||
get(src, /mob) << "<span class='danger'>You can't help but feel that you just lost something back there...</span>"
|
||||
var/turf/targetturf = relocate()
|
||||
message_admins("[src] has been moved out of bounds in \
|
||||
[ADMIN_COORDJMP(diskturf)]. Moving it to \
|
||||
[ADMIN_COORDJMP(targetturf)].")
|
||||
log_game("[src] has been moved out of bounds in [COORD(diskturf)]. \
|
||||
Moving it to [COORD(targetturf)].")
|
||||
|
||||
/obj/item/weapon/disk/nuclear/proc/relocate()
|
||||
var/targetturf = find_safe_turf(ZLEVEL_STATION)
|
||||
if(!targetturf)
|
||||
if(blobstart.len > 0)
|
||||
targetturf = get_turf(pick(blobstart))
|
||||
else
|
||||
throw EXCEPTION("Unable to find a blobstart landmark")
|
||||
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.transferItemToLoc(src, targetturf, TRUE) //nodrops disks when?
|
||||
else if(istype(loc, /obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/S = loc
|
||||
S.remove_from_storage(src, targetturf)
|
||||
else
|
||||
forceMove(targetturf)
|
||||
// move the disc, so ghosts remain orbiting it even if it's "destroyed"
|
||||
return targetturf
|
||||
|
||||
/obj/item/weapon/disk/nuclear/Destroy(force)
|
||||
var/turf/diskturf = get_turf(src)
|
||||
|
||||
if(force)
|
||||
message_admins("[src] has been !!force deleted!! in \
|
||||
[ADMIN_COORDJMP(diskturf)].")
|
||||
log_game("[src] has been !!force deleted!! in [COORD(diskturf)].")
|
||||
poi_list -= src
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
var/turf/targetturf = relocate()
|
||||
message_admins("[src] has been destroyed in [ADMIN_COORDJMP(diskturf)]. \
|
||||
Moving it to [ADMIN_COORDJMP(targetturf)].")
|
||||
log_game("[src] has been destroyed in [COORD(diskturf)]. Moving it to \
|
||||
[COORD(targetturf)].")
|
||||
return QDEL_HINT_LETMELIVE //Cancel destruction unless forced
|
||||
|
||||
/obj/item/weapon/disk/fakenucleardisk
|
||||
name = "cheap plastic imitation of the nuclear authentication disk"
|
||||
desc = "Broken dreams and a faint odor of cheese."
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
/obj/item/weapon/pinpointer/Destroy()
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
pinpointer_list -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/pinpointer/attack_self(mob/living/user)
|
||||
@@ -64,10 +65,10 @@
|
||||
msg += "\"([target_x], [target_y])\"."
|
||||
else
|
||||
msg = "Its tracking indicator is blank."
|
||||
user << msg
|
||||
to_chat(user, msg)
|
||||
for(var/obj/machinery/nuclearbomb/bomb in machines)
|
||||
if(bomb.timing)
|
||||
user << "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()]"
|
||||
to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()]")
|
||||
|
||||
/obj/item/weapon/pinpointer/process()
|
||||
if(!active)
|
||||
@@ -148,12 +149,12 @@
|
||||
playsound(src, 'sound/items/Nuke_toy_lowpower.ogg', 50, 0)
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
L << "<span class='userdanger'>Your [name] vibrates and lets out a tinny alarm. Uh oh.</span>"
|
||||
to_chat(L, "<span class='userdanger'>Your [name] vibrates and lets out a tinny alarm. Uh oh.</span>")
|
||||
|
||||
/obj/item/weapon/pinpointer/proc/switch_mode_to(new_mode) //If we shouldn't be tracking what we are
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
L << "<span class='userdanger'>Your [name] beeps as it reconfigures its tracking algorithms.</span>"
|
||||
to_chat(L, "<span class='userdanger'>Your [name] beeps as it reconfigures its tracking algorithms.</span>")
|
||||
playsound(L, 'sound/machines/triple_beep.ogg', 50, 1)
|
||||
mode = new_mode
|
||||
target = null //Switch modes so we can find the new target
|
||||
|
||||
Reference in New Issue
Block a user