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:
Poojawa
2017-03-21 11:44:10 -05:00
committed by GitHub
parent 099a6c8764
commit f67e9f6d87
1476 changed files with 344416 additions and 40694 deletions
+29 -29
View File
@@ -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
+31 -73
View File
@@ -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."
+5 -4
View File
@@ -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