From 2ce91a3fbc2833c6e7823f9126b709978d984395 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 10 Aug 2013 18:19:41 -0700 Subject: [PATCH 01/32] Commented out gold slime core reactions. --- code/modules/reagents/Chemistry-Recipes.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index f5d3fee5bb..5d639fc3ba 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1019,7 +1019,7 @@ datum required_other = 1 on_reaction(var/datum/reagents/holder) - var/blocked = list(/mob/living/simple_animal/hostile, + /*var/blocked = list(/mob/living/simple_animal/hostile, /mob/living/simple_animal/hostile/pirate, /mob/living/simple_animal/hostile/pirate/ranged, /mob/living/simple_animal/hostile/russian, @@ -1051,7 +1051,9 @@ datum C.loc = get_turf_loc(holder.my_atom) if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) - step(C, pick(NORTH,SOUTH,EAST,WEST)) + step(C, pick(NORTH,SOUTH,EAST,WEST))*/ + for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) + O.show_message(text("\red The slime core fizzles disappointingly,"), 1) //Silver slimebork From 935a7f30eaff6f30cbd6d419ec8702891a5f6029 Mon Sep 17 00:00:00 2001 From: Segrain Date: Sun, 11 Aug 2013 09:22:20 +0300 Subject: [PATCH 02/32] Typo fix. --- code/game/objects/items/weapons/implants/implant.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 903bb1b1bf..494e5c6552 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -455,8 +455,8 @@ the implant may become unstable and either pre-maturely inject the subject or si implanted(mob/source as mob) src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") if (source.mind) - source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) - source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." + source.mind.store_memory("Compressed matter implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) + source << "The implanted compressed matter implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." return 1 islegal() From 29ad858ed478e399b42c6ae722986d46aa60ffac Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 11 Aug 2013 23:52:46 -0700 Subject: [PATCH 03/32] Fixes the weird inertia behavior of cuffed/dragged people in space. --- code/modules/mob/mob.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4384569634..5c833ff8aa 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -607,6 +607,11 @@ var/list/slot_equipment_priority = list( \ src.pulling = AM AM.pulledby = src + //Attempted fix for people flying away through space when cuffed and dragged. + if(ismob(AM)) + var/mob/pulled = AM + pulled.inertia_dir = 0 + /mob/proc/can_use_hands() return From 7ba1638e11c6f893055c483b19efcb7e9adebd67 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sun, 11 Aug 2013 15:52:48 +0100 Subject: [PATCH 04/32] Fixed some mob clicks. Signed-off-by: Mloc-Argent --- code/modules/mob/living/carbon/human/human_attackhand.dm | 2 ++ code/modules/mob/mob_grab.dm | 2 ++ 2 files changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index cb161b9d94..0c6b8172a2 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -12,6 +12,8 @@ ..() + M.delay_click(10) + if((M != src) && check_shields(0, M.name)) visible_message("\red [M] attempted to touch [src]!") return 0 diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 68941a4d09..07a0750008 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -162,6 +162,8 @@ if(killing) return + assailant.delay_click(10) + switch(S.id) if(1.0) if (state < 2) From 070cb50f8df7cc68c2286f56dab414f0ead33cf1 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 11 Aug 2013 17:13:58 +0100 Subject: [PATCH 05/32] PDAs can be used when buckled (and not in any other way restrained or stunned). Rejuvenate now completely heals a target or broken organs and viruses too. --- baystation12.dme | 8 +- code/game/objects/items/devices/PDA/PDA.dm | 389 ++++++++++----------- code/modules/admin/topic.dm | 16 +- code/modules/mob/living/living.dm | 9 + code/modules/virus2/disease2.dm | 24 ++ 5 files changed, 235 insertions(+), 211 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 5a034ff343..8b4d64ba6f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -784,10 +784,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\DetectiveWork\detective_work.dm" -#include "code\modules\DetectiveWork\evidence.dm" -#include "code\modules\DetectiveWork\footprints_and_rag.dm" -#include "code\modules\DetectiveWork\scanner.dm" +#include "code\modules\detectivework\detective_work.dm" +#include "code\modules\detectivework\evidence.dm" +#include "code\modules\detectivework\footprints_and_rag.dm" +#include "code\modules\detectivework\scanner.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 33fc438c4a..378d08f880 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -288,7 +288,7 @@ var/global/list/obj/item/device/pda/PDAs = list() return 0 var/mob/M = loc - if(!M.canmove) + if(M.stat || M.restrained() || M.paralysis || M.stunned || M.weakened) return 0 if((src in M.contents) || ( istype(loc, /turf) && in_range(src, M) )) return 1 @@ -306,7 +306,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/MouseDrop(obj/over_object as obj, src_location, over_location) var/mob/M = usr - if((!istype(over_object, /obj/screen)) && !M.restrained() && !M.stat && can_use()) + if((!istype(over_object, /obj/screen)) && can_use()) return attack_self(M) return @@ -520,231 +520,226 @@ var/global/list/obj/item/device/pda/PDAs = list() //if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) ) if(can_use()) //Why reinvent the wheel? There's a proc that does exactly that. - if ( !(U.stat || U.restrained()) ) - add_fingerprint(U) - U.set_machine(src) + add_fingerprint(U) + U.set_machine(src) - switch(href_list["choice"]) + switch(href_list["choice"]) //BASIC FUNCTIONS=================================== - if("Close")//Self explanatory - U.unset_machine() - U << browse(null, "window=pda") - return - if("Refresh")//Refresh, goes to the end of the proc. - if("Return")//Return - if(mode<=9) + if("Close")//Self explanatory + U.unset_machine() + U << browse(null, "window=pda") + return + if("Refresh")//Refresh, goes to the end of the proc. + if("Return")//Return + if(mode<=9) + mode = 0 + else + mode = round(mode/10) + if(mode==4)//Fix for cartridges. Redirects to hub. mode = 0 - else - mode = round(mode/10) - if(mode==4)//Fix for cartridges. Redirects to hub. - mode = 0 - else if(mode >= 40 && mode <= 49)//Fix for cartridges. Redirects to refresh the menu. - cartridge.mode = mode - cartridge.unlock() - if ("Authenticate")//Checks for ID - id_check(U, 1) - if("UpdateInfo") - ownjob = id.assignment - name = "PDA-[owner] ([ownjob])" - if("Eject")//Ejects the cart, only done from hub. - if (!isnull(cartridge)) - var/turf/T = loc - if(ismob(T)) - T = T.loc - cartridge.loc = T - scanmode = 0 - if (cartridge.radio) - cartridge.radio.hostpda = null - cartridge = null + else if(mode >= 40 && mode <= 49)//Fix for cartridges. Redirects to refresh the menu. + cartridge.mode = mode + cartridge.unlock() + if ("Authenticate")//Checks for ID + id_check(U, 1) + if("UpdateInfo") + ownjob = id.assignment + name = "PDA-[owner] ([ownjob])" + if("Eject")//Ejects the cart, only done from hub. + if (!isnull(cartridge)) + var/turf/T = loc + if(ismob(T)) + T = T.loc + cartridge.loc = T + scanmode = 0 + if (cartridge.radio) + cartridge.radio.hostpda = null + cartridge = null //MENU FUNCTIONS=================================== - if("0")//Hub - mode = 0 - if("1")//Notes - mode = 1 - if("2")//Messenger - mode = 2 - if("21")//Read messeges - mode = 21 - if("3")//Atmos scan - mode = 3 - if("4")//Redirects to hub - mode = 0 - if("chatroom") // chatroom hub - mode = 5 - if("41") //Manifest - mode = 41 + if("0")//Hub + mode = 0 + if("1")//Notes + mode = 1 + if("2")//Messenger + mode = 2 + if("21")//Read messeges + mode = 21 + if("3")//Atmos scan + mode = 3 + if("4")//Redirects to hub + mode = 0 + if("chatroom") // chatroom hub + mode = 5 + if("41") //Manifest + mode = 41 //MAIN FUNCTIONS=================================== - if("Light") - if(fon) - fon = 0 - if(src in U.contents) U.SetLuminosity(U.luminosity - f_lum) - else SetLuminosity(0) - else - fon = 1 - if(src in U.contents) U.SetLuminosity(U.luminosity + f_lum) - else SetLuminosity(f_lum) - if("Medical Scan") - if(scanmode == 1) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_medical)) - scanmode = 1 - if("Reagent Scan") - if(scanmode == 3) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_reagent_scanner)) - scanmode = 3 - if("Halogen Counter") - if(scanmode == 4) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_engine)) - scanmode = 4 - if("Honk") - if ( !(last_honk && world.time < last_honk + 20) ) - playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) - last_honk = world.time - if("Gas Scan") - if(scanmode == 5) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_atmos)) - scanmode = 5 + if("Light") + if(fon) + fon = 0 + if(src in U.contents) U.SetLuminosity(U.luminosity - f_lum) + else SetLuminosity(0) + else + fon = 1 + if(src in U.contents) U.SetLuminosity(U.luminosity + f_lum) + else SetLuminosity(f_lum) + if("Medical Scan") + if(scanmode == 1) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_medical)) + scanmode = 1 + if("Reagent Scan") + if(scanmode == 3) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_reagent_scanner)) + scanmode = 3 + if("Halogen Counter") + if(scanmode == 4) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_engine)) + scanmode = 4 + if("Honk") + if ( !(last_honk && world.time < last_honk + 20) ) + playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) + last_honk = world.time + if("Gas Scan") + if(scanmode == 5) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_atmos)) + scanmode = 5 //MESSENGER/NOTE FUNCTIONS=================================== - if ("Edit") - var/n = input(U, "Please enter message", name, notehtml) as message - if (in_range(src, U) && loc == U) - n = copytext(adminscrub(n), 1, MAX_MESSAGE_LEN) - if (mode == 1) - note = replacetext(n, "\n", "
") - notehtml = n - else - U << browse(null, "window=pda") - return - if("Toggle Messenger") - toff = !toff - if("Toggle Ringer")//If viewing texts then erase them, if not then toggle silent status - silent = !silent - if("Clear")//Clears messages - tnote = null - if("Ringtone") - var/t = input(U, "Please enter new ringtone", name, ttone) as text - if (in_range(src, U) && loc == U) - if (t) - if(src.hidden_uplink && hidden_uplink.check_trigger(U, lowertext(t), lowertext(lock_code))) - U << "The PDA softly beeps." - U << browse(null, "window=pda") - else - t = copytext(sanitize(t), 1, 20) - ttone = t - else - U << browse(null, "window=pda") - return - if("Message") - var/obj/item/device/pda/P = locate(href_list["target"]) - src.create_message(U, P) + if ("Edit") + var/n = input(U, "Please enter message", name, notehtml) as message + if (in_range(src, U) && loc == U) + n = copytext(adminscrub(n), 1, MAX_MESSAGE_LEN) + if (mode == 1) + note = replacetext(n, "\n", "
") + notehtml = n + else + U << browse(null, "window=pda") + return + if("Toggle Messenger") + toff = !toff + if("Toggle Ringer")//If viewing texts then erase them, if not then toggle silent status + silent = !silent + if("Clear")//Clears messages + tnote = null + if("Ringtone") + var/t = input(U, "Please enter new ringtone", name, ttone) as text + if (in_range(src, U) && loc == U) + if (t) + if(src.hidden_uplink && hidden_uplink.check_trigger(U, lowertext(t), lowertext(lock_code))) + U << "The PDA softly beeps." + U << browse(null, "window=pda") + else + t = copytext(sanitize(t), 1, 20) + ttone = t + else + U << browse(null, "window=pda") + return + if("Message") + var/obj/item/device/pda/P = locate(href_list["target"]) + src.create_message(U, P) - if("Send Honk")//Honk virus - if(istype(cartridge, /obj/item/weapon/cartridge/clown))//Cartridge checks are kind of unnecessary since everything is done through switch. - var/obj/item/device/pda/P = locate(href_list["target"])//Leaving it alone in case it may do something useful, I guess. - if(!isnull(P)) - if (!P.toff && cartridge:honk_charges > 0) - cartridge:honk_charges-- - U.show_message("\blue Virus sent!", 1) - P.honkamt = (rand(15,20)) - else - U << "PDA not found." + if("Send Honk")//Honk virus + if(istype(cartridge, /obj/item/weapon/cartridge/clown))//Cartridge checks are kind of unnecessary since everything is done through switch. + var/obj/item/device/pda/P = locate(href_list["target"])//Leaving it alone in case it may do something useful, I guess. + if(!isnull(P)) + if (!P.toff && cartridge:honk_charges > 0) + cartridge:honk_charges-- + U.show_message("\blue Virus sent!", 1) + P.honkamt = (rand(15,20)) else - U << browse(null, "window=pda") - return - if("Send Silence")//Silent virus - if(istype(cartridge, /obj/item/weapon/cartridge/mime)) - var/obj/item/device/pda/P = locate(href_list["target"]) - if(!isnull(P)) - if (!P.toff && cartridge:mime_charges > 0) - cartridge:mime_charges-- - U.show_message("\blue Virus sent!", 1) - P.silent = 1 - P.ttone = "silence" - else - U << "PDA not found." + U << "PDA not found." + else + U << browse(null, "window=pda") + return + if("Send Silence")//Silent virus + if(istype(cartridge, /obj/item/weapon/cartridge/mime)) + var/obj/item/device/pda/P = locate(href_list["target"]) + if(!isnull(P)) + if (!P.toff && cartridge:mime_charges > 0) + cartridge:mime_charges-- + U.show_message("\blue Virus sent!", 1) + P.silent = 1 + P.ttone = "silence" else - U << browse(null, "window=pda") - return + U << "PDA not found." + else + U << browse(null, "window=pda") + return //SYNDICATE FUNCTIONS=================================== - if("Toggle Door") - if(cartridge && cartridge.access_remote_door) - for(var/obj/machinery/door/poddoor/M in world) - if(M.id == cartridge.remote_door_id) - if(M.density) - M.open() - else - M.close() + if("Toggle Door") + if(cartridge && cartridge.access_remote_door) + for(var/obj/machinery/door/poddoor/M in world) + if(M.id == cartridge.remote_door_id) + if(M.density) + M.open() + else + M.close() - if("Detonate")//Detonate PDA - if(istype(cartridge, /obj/item/weapon/cartridge/syndicate)) - var/obj/item/device/pda/P = locate(href_list["target"]) - if(!isnull(P)) - if (!P.toff && cartridge:shock_charges > 0) - cartridge:shock_charges-- + if("Detonate")//Detonate PDA + if(istype(cartridge, /obj/item/weapon/cartridge/syndicate)) + var/obj/item/device/pda/P = locate(href_list["target"]) + if(!isnull(P)) + if (!P.toff && cartridge:shock_charges > 0) + cartridge:shock_charges-- - var/difficulty = 0 + var/difficulty = 0 - if(P.cartridge) - difficulty += P.cartridge.access_medical - difficulty += P.cartridge.access_security - difficulty += P.cartridge.access_engine - difficulty += P.cartridge.access_clown - difficulty += P.cartridge.access_janitor - else - difficulty += 2 + if(P.cartridge) + difficulty += P.cartridge.access_medical + difficulty += P.cartridge.access_security + difficulty += P.cartridge.access_engine + difficulty += P.cartridge.access_clown + difficulty += P.cartridge.access_janitor + else + difficulty += 2 - if(prob(difficulty * 12) || (P.hidden_uplink)) - U.show_message("\red An error flashes on your [src].", 1) - else if (prob(difficulty * 3)) - U.show_message("\red Energy feeds back into your [src]!", 1) - U << browse(null, "window=pda") - explode() - else - U.show_message("\blue Success!", 1) - P.explode() - else - U << "PDA not found." + if(prob(difficulty * 12) || (P.hidden_uplink)) + U.show_message("\red An error flashes on your [src].", 1) + else if (prob(difficulty * 3)) + U.show_message("\red Energy feeds back into your [src]!", 1) + U << browse(null, "window=pda") + explode() + else + U.show_message("\blue Success!", 1) + P.explode() else - U.unset_machine() - U << browse(null, "window=pda") - return + U << "PDA not found." + else + U.unset_machine() + U << browse(null, "window=pda") + return //pAI FUNCTIONS=================================== - if("pai") - switch(href_list["option"]) - if("1") // Configure pAI device - pai.attack_self(U) - if("2") // Eject pAI device - var/turf/T = get_turf_or_move(src.loc) - if(T) - pai.loc = T + if("pai") + switch(href_list["option"]) + if("1") // Configure pAI device + pai.attack_self(U) + if("2") // Eject pAI device + var/turf/T = get_turf_or_move(src.loc) + if(T) + pai.loc = T //LINK FUNCTIONS=================================== - else//Cartridge menu linking - mode = text2num(href_list["choice"]) - cartridge.mode = mode - cartridge.unlock() - else//If can't interact. - U.unset_machine() - U << browse(null, "window=pda") - return + else//Cartridge menu linking + mode = text2num(href_list["choice"]) + cartridge.mode = mode + cartridge.unlock() else//If not in range or not using the pda. U.unset_machine() U << browse(null, "window=pda") @@ -866,7 +861,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if(issilicon(usr)) return - if ( !(usr.stat || usr.restrained()) ) + if ( can_use(usr) ) if(id) remove_id() else @@ -883,7 +878,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if(issilicon(usr)) return - if ( !(usr.stat || usr.restrained()) ) + if ( can_use(usr) ) var/obj/item/weapon/pen/O = locate() in src if(O) if (istype(loc, /mob)) @@ -943,7 +938,7 @@ var/global/list/obj/item/device/pda/PDAs = list() else //Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand. if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) ) - if(!(user.stat || user.restrained()) )//If they can still act. + if( can_use(user) )//If they can still act. id_check(user, 2) user << "You put the ID into \the [src]'s slot." updateSelfDialog()//Update self dialog on success. diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 1bd4b34547..803f2b1254 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2029,17 +2029,13 @@ if("virus") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","V") - var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose") - if(answer=="Random") - viral_outbreak() - message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1) - else if(answer == "Choose") - var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","retrovirus","flu","pierrot's throat","rhumba beat") - var/V = input("Choose the virus to spread", "BIOHAZARD") in viruses - viral_outbreak(V) - message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1) + var/answer = alert("Do you want this to be a greater disease or a lesser one?",,"Greater","Lesser") + if(answer=="Lesser") + virus2_lesser_infection() + message_admins("[key_name_admin(usr)] has triggered a lesser virus outbreak.", 1) else - AdminCreateVirus(usr) + virus2_greater_infection() + message_admins("[key_name_admin(usr)] has triggered a greater virus outbreak.", 1) if("retardify") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","RET") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 162a69b49c..245a372d2a 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -269,6 +269,15 @@ if(iscarbon(src)) var/mob/living/carbon/C = src C.handcuffed = initial(C.handcuffed) + if(ishuman(src)) + var/mob/living/carbon/human/H = src + for(var/datum/organ/external/O in H.organs) + O.heal_damage(1000,1000,1,1) + for(var/datum/organ/internal/I in H.internal_organs) + I.damage = 0 + for (var/ID in H.virus2) + var/datum/disease2/disease/V = H.virus2[ID] + V.cure(src) for(var/datum/disease/D in viruses) D.cure(0) if(stat == 2) diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index 84fcf486e4..8efff4f1ca 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -162,3 +162,27 @@ var/global/list/virusDB = list() v.fields["spread type"] = spreadtype virusDB["[uniqueID]"] = v return 1 + +proc/virus2_lesser_infection() + var/list/candidates = list() //list of candidate keys + + for(var/mob/living/carbon/human/G in player_list) + if(G.client && G.stat != DEAD) + candidates += G + if(!candidates.len) return + + candidates = shuffle(candidates) + + infect_mob_random_lesser(candidates[1]) + +proc/virus2_greater_infection() + var/list/candidates = list() //list of candidate keys + + for(var/mob/living/carbon/human/G in player_list) + if(G.client && G.stat != DEAD) + candidates += G + if(!candidates.len) return + + candidates = shuffle(candidates) + + infect_mob_random_greater(candidates[1]) From 166a7e57a6231f67b7f94d865baa1a10d1defe51 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 11 Aug 2013 17:38:12 +0100 Subject: [PATCH 06/32] Cult 'raise' rune how completely heals raised corpse. --- code/game/gamemodes/cult/runes.dm | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index e73cfeb942..e5be5d60a7 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -271,21 +271,7 @@ var/list/sacrificed = list() usr << "\red You require a restless spirit which clings to this world. Beckon their prescence with the sacred chants of Nar-Sie." return fizzle() - for(var/datum/organ/external/affecting in corpse_to_raise.organs) - affecting.heal_damage(1000, 1000) - corpse_to_raise.setToxLoss(0) - corpse_to_raise.setOxyLoss(0) - corpse_to_raise.SetParalysis(0) - corpse_to_raise.SetStunned(0) - corpse_to_raise.SetWeakened(0) - corpse_to_raise.radiation = 0 -// corpse_to_raise.buckled = null -// if(corpse_to_raise.handcuffed) -// del(corpse_to_raise.handcuffed) -// corpse_to_raise.update_inv_handcuffed(0) - corpse_to_raise.stat = CONSCIOUS - corpse_to_raise.updatehealth() - corpse_to_raise.UpdateDamageIcon() + corpse_to_raise.revive() corpse_to_raise.key = ghost.key //the corpse will keep its old mind! but a new player takes ownership of it (they are essentially possessed) //This means, should that player leave the body, the original may re-enter From 459aafd5238b5688f495bc7f761dd401f33cd1e6 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 11 Aug 2013 21:32:02 +0100 Subject: [PATCH 07/32] Fixed borg sprites no resetting with reset board. --- code/game/objects/items/robot/robot_upgrades.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 6020cc834a..9fccf2e060 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -30,6 +30,7 @@ R.uneq_all() R.hands.icon_state = "nomod" R.icon_state = "robot" + R.base_icon = "robot" del(R.module) R.module = null R.updatename("Default") From 8d7e75e619911bcd0a8a82fd2ecbfc1deeb8038f Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 11 Aug 2013 21:35:29 +0100 Subject: [PATCH 08/32] Changelog. --- html/changelog.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 6f635fef91..1b7d6690d0 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,15 @@ Changelog Section Stuff which is in development and not yet visible to players or just code related (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit though. Thanks. --> +
+

August 8th, 2013

+

Erthilo updated:

+
    +
  • Raise Dead rune now properly heals and revives dead corpse.
  • +
  • Admin-only rejuvenate verb now heals all organs, limbs, and diseases.
  • +
  • Cyborg sprites now correctly reset with reset boards. This means cyborg appearances can now be changed without admin intervention.
  • +
+

2013-11-07

Chinsky updated:

From eb55fb2da2d4224f0470b7496b8310bdb7b871e9 Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 12 Aug 2013 05:30:39 +0300 Subject: [PATCH 09/32] Revive fix. --- baystation12.dme | 8 ++++---- code/modules/mob/living/carbon/human/human.dm | 5 +++++ code/modules/mob/living/living.dm | 9 --------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 8b4d64ba6f..5a034ff343 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -784,10 +784,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\footprints_and_rag.dm" -#include "code\modules\detectivework\scanner.dm" +#include "code\modules\DetectiveWork\detective_work.dm" +#include "code\modules\DetectiveWork\evidence.dm" +#include "code\modules\DetectiveWork\footprints_and_rag.dm" +#include "code\modules\DetectiveWork\scanner.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7c394844d5..d51e1316da 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1028,6 +1028,7 @@ if (!O.amputated) O.status &= ~ORGAN_DESTROYED O.wounds.Cut() + O.heal_damage(1000,1000,1,1) var/datum/organ/external/head/h = organs_by_name["head"] h.disfigured = 0 @@ -1047,6 +1048,10 @@ for (var/datum/disease/virus in viruses) virus.cure() + for (var/ID in virus2) + var/datum/disease2/disease/V = virus2[ID] + V.cure(src) + ..() /mob/living/carbon/human/proc/is_lung_ruptured() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 245a372d2a..162a69b49c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -269,15 +269,6 @@ if(iscarbon(src)) var/mob/living/carbon/C = src C.handcuffed = initial(C.handcuffed) - if(ishuman(src)) - var/mob/living/carbon/human/H = src - for(var/datum/organ/external/O in H.organs) - O.heal_damage(1000,1000,1,1) - for(var/datum/organ/internal/I in H.internal_organs) - I.damage = 0 - for (var/ID in H.virus2) - var/datum/disease2/disease/V = H.virus2[ID] - V.cure(src) for(var/datum/disease/D in viruses) D.cure(0) if(stat == 2) From 16e976035fe1328a30bf25fcb227d6e0373f6bf3 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 11:50:14 -0700 Subject: [PATCH 10/32] Cortical borer fixes. --- code/modules/mob/living/simple_animal/borer.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 46ff70493c..df5ab8b681 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -193,6 +193,12 @@ mob/living/simple_animal/borer/proc/detatch() src.loc = get_turf(host) controlling = 0 + reset_view(null) + machine = null + + host.reset_view(null) + host.machine = null + host.verbs -= /mob/living/carbon/human/proc/release_control host.verbs -= /mob/living/carbon/human/proc/punish_host host.verbs -= /mob/living/carbon/human/proc/spawn_larvae @@ -230,6 +236,7 @@ mob/living/simple_animal/borer/proc/detatch() if(M.has_brain_worms()) src << "You cannot infest someone who is already infested!" + return M << "Something slimy begins probing at the opening of your ear canal..." src << "You slither up [M] and begin probing at their ear canal..." From 5f0515fb503ee0612f92d44f2de29dc9cb58df00 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 13:36:21 -0700 Subject: [PATCH 11/32] Further borer tweaks. --- code/modules/mob/living/simple_animal/borer.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index df5ab8b681..970bd26181 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -42,7 +42,6 @@ var/chemicals = 10 // Chemicals used for reproduction and spitting neurotoxin. var/mob/living/carbon/human/host // Human host for the brain worm. var/truename // Name used for brainworm-speak. - var/bonded // Var for full bonding with the host brain. var/mob/living/captive_brain/host_brain // Used for swapping control of the body back and forth. var/controlling // Used in human death check. @@ -135,7 +134,7 @@ spawn(300+(host.brainloss*5)) - if(!host || !src) return + if(!host || !src || controlling) return else src << "\red You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system." @@ -165,7 +164,6 @@ mob/living/simple_animal/borer/verb/release_host() if(!host || !src) return src << "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal." - bonded = 0 if(!host.stat) host << "An odd, uncomfortable pressure begins to build inside your skull, behind your ear..." @@ -264,7 +262,6 @@ mob/living/simple_animal/borer/proc/detatch() var/datum/organ/external/head = M.get_organ("head") head.implants += src src.loc = M - bonded = 0 host_brain.name = M.name host_brain.real_name = M.real_name From b23c68522169515d69c37b77754778464edaf8a6 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 13:44:51 -0700 Subject: [PATCH 12/32] Borer surgery fix. --- code/modules/surgery/implant.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 7e240f737e..edc89ac0ac 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -184,7 +184,10 @@ //Handle possessive brain borers. if(istype(obj,/mob/living/simple_animal/borer)) - target.release_control() + var/mob/living/simple_animal/borer/worm = obj + if(worm.controlling) + target.release_control() + worm.detatch() obj.loc = get_turf(target) if(istype(obj,/obj/item/weapon/implant)) From 5ecee57a2c9de9ad0fd468b907a9d33e2666bb47 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 14:45:42 -0700 Subject: [PATCH 13/32] Fixed failure to remove borer verbs on successful resist. --- code/modules/mob/screen.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index c83ba829a9..441a0d961f 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -631,6 +631,10 @@ H.name = "host brain" H.real_name = "host brain" + verbs -= /mob/living/carbon/human/proc/release_control + verbs -= /mob/living/carbon/human/proc/punish_host + verbs -= /mob/living/carbon/human/proc/spawn_larvae + return //resisting grabs (as if it helps anyone...) From bcad5a787dcbb2d0c772e74e537d9d631f5208cc Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 14:46:03 -0700 Subject: [PATCH 14/32] Fixed listing of unrelated creatures when infesting. --- code/modules/mob/living/simple_animal/borer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 970bd26181..647f9318af 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -224,7 +224,7 @@ mob/living/simple_animal/borer/proc/detatch() return var/list/choices = list() - for(var/mob/living/C in view(1,src)) + for(var/mob/living/carbon/human/C in view(1,src)) if(istype(C,/mob/living/carbon/human) && C.stat != 2) choices += C From 6281c11f223fc6b79e6a7352dc773c93f2425270 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 12 Aug 2013 12:33:02 +0100 Subject: [PATCH 15/32] Advmedkit now has green cross. Hime cut looks less derp from the side. --- icons/mob/human_face.dmi | Bin 38469 -> 38455 bytes icons/obj/storage.dmi | Bin 54579 -> 54590 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index c6bf1e373e222a1ed2ed76e8bb09c04cd161d7a4..169f3c49f162bf78c5a2d8bb89507500736ffb5a 100644 GIT binary patch literal 38455 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 diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index ec08cf37e78e8c6ea295046a4bcbbc699990ceb6..253cf851a833a50a38dad32d623c81e5a24cb0fb 100644 GIT binary patch delta 13514 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 Date: Mon, 12 Aug 2013 12:34:13 +0100 Subject: [PATCH 16/32] Adds explosive implant admin messages, and jump button for explosions. --- code/WorkInProgress/carn/Explosion2.dm | 2 +- code/game/objects/explosion.dm | 8 ++++---- code/game/objects/items/weapons/implants/implant.dm | 7 ++++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/code/WorkInProgress/carn/Explosion2.dm b/code/WorkInProgress/carn/Explosion2.dm index a1f2687cc8..06b8569002 100644 --- a/code/WorkInProgress/carn/Explosion2.dm +++ b/code/WorkInProgress/carn/Explosion2.dm @@ -9,7 +9,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa if(!epicenter) return if(adminlog) - message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ") + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z] - JMP)") log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ") playsound(epicenter, 'sound/effects/explosionfar.ogg', 100, 1, round(devastation_range*2,1) ) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 91ea812439..cc4d766f25 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -19,10 +19,10 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa epicenter = get_turf(epicenter) if(!epicenter) return - + playsound(epicenter, 'sound/effects/explosionfar.ogg', 100, 1, round(devastation_range*2,1) ) playsound(epicenter, "explosion", 100, 1, round(devastation_range,1) ) - + var/close = range(world.view+round(devastation_range,1), epicenter) // to all distanced mobs play a different sound for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close)) @@ -30,7 +30,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space)) M << 'explosionfar.ogg' if(adminlog) - message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])") + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (JMP)") log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ") var/lighting_controller_was_processing = lighting_controller.processing //Pause the lighting updates for a bit @@ -85,4 +85,4 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa proc/secondaryexplosion(turf/epicenter, range) for(var/turf/tile in range(range, epicenter)) - tile.ex_act(2) + tile.ex_act(2) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 38d07024fe..a6c3b2fede 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -159,9 +159,14 @@ Implant Specifics:
"} return if(istype(imp_in, /mob/)) var/mob/T = imp_in + + message_admins("Explosive implant triggered in [T] ([T.key]). (JMP) ") + log_game("Explosive implant triggered in [T] ([T.key]).") + T.gib() explosion(get_turf(imp_in), 1, 3, 4, 6, 3) var/turf/t = get_turf(imp_in) + if(t) t.hotspot_expose(3500,125) @@ -464,4 +469,4 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/weapon/implant/cortical name = "cortical stack" - desc = "A fist-sized mass of biocircuits and chips." + desc = "A fist-sized mass of biocircuits and chips." From 04ba916a819918f80683ed17ac377e885b543a08 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 12 Aug 2013 13:55:30 +0100 Subject: [PATCH 17/32] Fixes sink turning into an airlock in the kitchen. --- maps/tgstation.2.1.0.0.1.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maps/tgstation.2.1.0.0.1.dmm b/maps/tgstation.2.1.0.0.1.dmm index 8b8b458a7f..46c011d459 100644 --- a/maps/tgstation.2.1.0.0.1.dmm +++ b/maps/tgstation.2.1.0.0.1.dmm @@ -2288,7 +2288,7 @@ "aRZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aSa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "aSb" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"aSc" = (/obj/machinery/door/airlock/maintenance,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"aSc" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aSd" = (/obj/machinery/vending/dinnerware,/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Kitchen"; dir = 2},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "aSe" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aSf" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) From 59821a2174fef76a79dd9a5ad9ba36b2219b0085 Mon Sep 17 00:00:00 2001 From: Mloc Date: Mon, 12 Aug 2013 13:55:54 +0100 Subject: [PATCH 18/32] examples for fileList.txt --- maps/RandomZLevels/fileList.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maps/RandomZLevels/fileList.txt b/maps/RandomZLevels/fileList.txt index 10fbb9562f..007837dc53 100644 --- a/maps/RandomZLevels/fileList.txt +++ b/maps/RandomZLevels/fileList.txt @@ -2,3 +2,5 @@ #Maps must be the full path to them #Maps should be 255x255 or smaller and be bounded. Falling off the edge of the map will result in undefined behavior. #SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START + +#maps/RandomZLevels/awaymission.dmm From 82a4dedf5d9c99f569926ef5c34c70e88e8f58ad Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 21:17:38 -0700 Subject: [PATCH 19/32] Snowflake check for Soghun. FIX THE WHITELIST THING, HEAD. --- code/modules/client/preferences.dm | 2 +- code/modules/mob/new_player/new_player.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 92f30dc8f3..1809cfd205 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -806,7 +806,7 @@ datum/preferences if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it! for(var/S in whitelisted_species) - if(is_alien_whitelisted(user,S)) + if(is_alien_whitelisted(user,S) || (S == "Unathi" && is_alien_whitelisted(user,"Soghun"))) new_species += S whitelisted = 1 if(!whitelisted) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 7bb662f91e..ca9e307824 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -351,7 +351,7 @@ if(client.prefs.species) chosen_species = all_species[client.prefs.species] if(chosen_species) - if(is_alien_whitelisted(src, client.prefs.species) || !config.usealienwhitelist || !(chosen_species.flags & WHITELISTED)) + if(is_alien_whitelisted(src, client.prefs.species) || (client.prefs.species == "Unathi" && is_alien_whitelisted(src, "Soghun")) || !config.usealienwhitelist || !(chosen_species.flags & WHITELISTED)) new_character.set_species(client.prefs.species) if(chosen_species.language) new_character.add_language(chosen_species.language) From 5476ae192d77f61b188262b3998464b0d9dc7c67 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 22:44:57 -0700 Subject: [PATCH 20/32] Attempting to reduce incidence of clickspam against mobs. --- code/game/gamemodes/events/biomass.dm | 3 +++ code/modules/mob/living/carbon/carbon.dm | 6 ++++++ code/modules/mob/living/carbon/monkey/monkey.dm | 2 ++ code/modules/mob/mob.dm | 3 ++- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/events/biomass.dm b/code/game/gamemodes/events/biomass.dm index d1508221f7..7bc6cf9256 100644 --- a/code/game/gamemodes/events/biomass.dm +++ b/code/game/gamemodes/events/biomass.dm @@ -22,6 +22,9 @@ /obj/effect/biomass/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!W || !user || !W.type) return + + user.delay_click(10) + switch(W.type) if(/obj/item/weapon/circular_saw) del src if(/obj/item/weapon/kitchen/utensil/knife) del src diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 061f06fe7d..2347ca6b23 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -49,7 +49,11 @@ . = ..() /mob/living/carbon/attack_hand(mob/M as mob) + if(!istype(M, /mob/living/carbon)) return + + M.delay_click(10) + if (hasorgans(M)) var/datum/organ/external/temp = M:organs_by_name["r_hand"] if (M.hand) @@ -76,6 +80,8 @@ /mob/living/carbon/attack_paw(mob/M as mob) if(!istype(M, /mob/living/carbon)) return + M.delay_click(10) + for(var/datum/disease/D in viruses) if(D.spread_by_touch()) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index a073dfa10d..add85c9d03 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -217,6 +217,8 @@ M << "No attacking people at spawn, you jackass." return + M.delay_click(10) + if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves)) var/obj/item/clothing/gloves/G = M.gloves if(G.cell) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3600b8b0f7..9801ea9f6c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -83,6 +83,7 @@ //This is awful /mob/attackby(obj/item/weapon/W as obj, mob/user as mob) + user.delay_click(10) //Holding a balloon will shield you from an item that is_sharp() ... cause that makes sense if (user.intent != "harm") if (istype(src.l_hand,/obj/item/latexballon) && src.l_hand:air_contents && is_sharp(W)) @@ -960,4 +961,4 @@ mob/verb/yank_out_object() pinned -= O if(!pinned.len) anchored = 0 - return 1 + return 1 From 44aa77f7de17cefb37cf35553b2c0e950d979ad2 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 12 Aug 2013 22:51:27 -0700 Subject: [PATCH 21/32] Adds a delay to the RCD when building. --- code/game/objects/items/weapons/RCD.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index a80a892af6..6308189d8c 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -86,6 +86,8 @@ RCD if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock))) return 0 + user.delay_click(10) + switch(mode) if(1) if(istype(A, /turf/space)) From 4874d5691bbd551f95eca725671f376354551439 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 00:00:34 -0700 Subject: [PATCH 22/32] Removes multicultural mrowling Vox from Heist. --- code/game/gamemodes/heist/heist.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 5a1e12a191..c9cee00fbf 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -102,6 +102,7 @@ var/global/vox_kills = 0 //Used to check the Inviolate. vox.age = rand(12,20) vox.dna.mutantrace = "vox" vox.set_species("Vox") + vox.languages = list() // Removing language from chargen. vox.add_language("Vox-pidgin") vox.h_style = "Short Vox Quills" vox.flavor_text = "" From bed45dd86405325d14fe2a2c8bac973712b58cde Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 00:03:14 -0700 Subject: [PATCH 23/32] Removes Vox flavour text carried over from chargen. --- code/game/gamemodes/heist/heist.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index c9cee00fbf..4e269152ff 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -103,6 +103,7 @@ var/global/vox_kills = 0 //Used to check the Inviolate. vox.dna.mutantrace = "vox" vox.set_species("Vox") vox.languages = list() // Removing language from chargen. + vox.flavor_text = "" vox.add_language("Vox-pidgin") vox.h_style = "Short Vox Quills" vox.flavor_text = "" From 1228ba8a2558980fe89858f0d66ede6b3ac63bbd Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 12 Aug 2013 21:17:16 +0100 Subject: [PATCH 24/32] Allows autoinjectors to be refilled. --- code/modules/reagents/reagent_containers/hypospray.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index a70ba4ab8e..f14712865a 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -68,11 +68,17 @@ /obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob) ..() - if(reagents.total_volume <= 0) +/*if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled. flags &= ~OPENCONTAINER +*/ update_icon() return +/obj/item/weapon/reagent_containers/hypospray/autoinjector/attackby(obj/item/I as obj, mob/user as mob) + ..() + update_icon() //Allows the autoinjector to be reset. + return + /obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon() if(reagents.total_volume > 0) icon_state = "[initial(icon_state)]1" From 254cef453a84c3145a6b418ede0b2130cd085854 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 14:16:07 -0700 Subject: [PATCH 25/32] Added a preferences switch for diona. --- code/game/machinery/podmen.dm | 6 ++++-- code/modules/client/preferences.dm | 1 + code/setup.dm | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/podmen.dm b/code/game/machinery/podmen.dm index 1e8eb4e536..e9a1d50ff6 100644 --- a/code/game/machinery/podmen.dm +++ b/code/game/machinery/podmen.dm @@ -74,10 +74,12 @@ Growing it to term with nothing injected will grab a ghost from the observers. * ghost = source else // If no sample was injected or revival is not allowed, we grab an interested observer. for(var/mob/dead/observer/O in player_list) - if(O.client) - var/response = alert(O, "Someone is harvesting a replica pod. Would you like to play as a Dionaea?", "Replica pod harvest", "Yes", "No") + if(O.client && O.client.prefs.be_special & BE_PLANT) + var/response = alert(O, "Someone is harvesting a replica pod. Would you like to play as a Dionaea?", "Replica pod harvest", "Yes", "No", "Never for this round.") if(response == "Yes") candidates += O + else if(response == "Never for this round") + O.client.prefs.be_special ^= BE_PLANT if(!do_after(user, 100)) return diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 1809cfd205..8e977bbc7d 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -16,6 +16,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set "infested monkey" = IS_MODE_COMPILED("monkey"), // 9 "ninja" = "true", // 10 "vox raider" = IS_MODE_COMPILED("heist"), // 11 + "diona" = 1, // 12 ) var/const/MAX_SAVE_SLOTS = 10 diff --git a/code/setup.dm b/code/setup.dm index 7e6f0cb7a9..e4beb3781d 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -641,6 +641,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define BE_MONKEY 512 #define BE_NINJA 1024 #define BE_RAIDER 2048 +#define BE_PLANT 4096 var/list/be_special_flags = list( "Traitor" = BE_TRAITOR, @@ -654,7 +655,8 @@ var/list/be_special_flags = list( "Cultist" = BE_CULTIST, "Monkey" = BE_MONKEY, "Ninja" = BE_NINJA, - "Raider" = BE_RAIDER + "Raider" = BE_RAIDER, + "Diona" = BE_PLANT ) #define AGE_MIN 17 //youngest a character can be From b131d227175dc650ae5abe8fb4ad8f4be88ca9ac Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 14:26:39 -0700 Subject: [PATCH 26/32] Fixes Check Antagonists for Heist mode. --- code/modules/admin/player_panel.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 44f1cfdd82..ecadd49d49 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -470,12 +470,15 @@ dat += "" if(ticker.mode.raiders.len > 0) + dat += "
" for(var/datum/mind/raider in ticker.mode.raiders) var/mob/M = raider.current if(M) dat += "" dat += "" dat += "" + dat += "
Wizards
[M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
" + /* if(ticker.mode.ninjas.len > 0) dat += "
" From 86c66ebcd47e7ed6275e668341758d6906981bfa Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 14:51:39 -0700 Subject: [PATCH 27/32] Possible fix to weird podman behavior. --- code/game/machinery/podmen.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/machinery/podmen.dm b/code/game/machinery/podmen.dm index e9a1d50ff6..730f69e664 100644 --- a/code/game/machinery/podmen.dm +++ b/code/game/machinery/podmen.dm @@ -84,9 +84,6 @@ Growing it to term with nothing injected will grab a ghost from the observers. * if(!do_after(user, 100)) return - if(!src || !user) - return - if(candidates.len) ghost = pick(candidates) From 4f3f3d6eff1bee4974adba8f5b9f56cc94c437b6 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 14:55:29 -0700 Subject: [PATCH 28/32] Added vent crawl, hiding and table passing to brain slugs. --- .../modules/mob/living/simple_animal/borer.dm | 74 ++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 647f9318af..d2689de7d8 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -38,6 +38,7 @@ attacktext = "nips" friendly = "prods" wander = 0 + pass_flags = PASSTABLE var/chemicals = 10 // Chemicals used for reproduction and spitting neurotoxin. var/mob/living/carbon/human/host // Human host for the brain worm. @@ -269,4 +270,75 @@ mob/living/simple_animal/borer/proc/detatch() return else src << "They are no longer in range!" - return \ No newline at end of file + return + +/mob/living/simple_animal/borer/Stat() + ..() + statpanel("Status") + + if(emergency_shuttle) + if(emergency_shuttle.online && emergency_shuttle.location < 2) + var/timeleft = emergency_shuttle.timeleft() + if (timeleft) + stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") + + if (client.statpanel == "Status") + stat("Chemicals", chemicals) + +/mob/living/simple_animal/borer/verb/ventcrawl() + set name = "Crawl through Vent" + set desc = "Enter an air vent and crawl through the pipe system." + set category = "Alien" + +// if(!istype(V,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent)) +// return + var/obj/machinery/atmospherics/unary/vent_pump/vent_found + var/welded = 0 + for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src)) + if(!v.welded) + vent_found = v + break + else + welded = 1 + if(vent_found) + if(vent_found.network&&vent_found.network.normal_members.len) + var/list/vents = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members) + if(temp_vent.loc == loc) + continue + vents.Add(temp_vent) + var/list/choices = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/vent in vents) + if(vent.loc.z != loc.z) + continue + var/atom/a = get_turf(vent) + choices.Add(a.loc) + var/turf/startloc = loc + var/obj/selection = input("Select a destination.", "Duct System") in choices + var/selection_position = choices.Find(selection) + if(loc==startloc) + var/obj/target_vent = vents[selection_position] + if(target_vent) + loc = target_vent.loc + else + src << "\blue You need to remain still while entering a vent." + else + src << "\blue This vent is not connected to anything." + else if(welded) + src << "\red That vent is welded." + else + src << "\blue You must be standing on or beside an air vent to enter it." + return + +//copy paste from alien/larva, if that func is updated please update this one alsoghost +/mob/living/simple_animal/borer/verb/hide() + set name = "Hide" + set desc = "Allows to hide beneath tables or certain items. Toggled on or off." + set category = "Alien" + + if (layer != TURF_LAYER+0.2) + layer = TURF_LAYER+0.2 + src << text("\blue You are now hiding.") + else + layer = MOB_LAYER + src << text("\blue You have stopped hiding.") \ No newline at end of file From 98510b3b0102783b9e0d347df52e48ae0cab4168 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 15:06:11 -0700 Subject: [PATCH 29/32] Added the ability for worms to secrete useful chemicals. --- .../modules/mob/living/simple_animal/borer.dm | 54 ++++++++++++++----- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index d2689de7d8..b55faf7b98 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -110,6 +110,21 @@ src << "You drop words into [host]'s mind: \"[message]\"" host << "Your own thoughts speak: \"[message]\"" +/mob/living/simple_animal/borer/Stat() + ..() + statpanel("Status") + + if(emergency_shuttle) + if(emergency_shuttle.online && emergency_shuttle.location < 2) + var/timeleft = emergency_shuttle.timeleft() + if (timeleft) + stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") + + if (client.statpanel == "Status") + stat("Chemicals", chemicals) + +// VERBS! + /mob/living/simple_animal/borer/proc/borer_speak(var/message) if(!message) return @@ -149,7 +164,31 @@ host.verbs += /mob/living/carbon/human/proc/punish_host host.verbs += /mob/living/carbon/human/proc/spawn_larvae -mob/living/simple_animal/borer/verb/release_host() +/mob/living/simple_animal/borer/verb/bond_brain() + set category = "Alien" + set name = "Secrete Chemicals" + set desc = "Push some chemicals into your host's bloodstream." + + if(!host) + src << "You are not inside a host body." + return + + if(stat) + src << "You cannot secrete chemicals in your current state." + + if(chemicals < 50) + src << "You don't have enough chemicals!" + + var/chem = input("Select a chemical to secrete.", "Chemicals") in list("bicaridine","tramadol","hyperzine") + + if(chemicals < 50 || !host || controlling || !src || stat) //Sanity check. + return + + src << "\red You squirt a measure of [chem] from your reservoirs into [host]'s bloodstream." + host.reagents.add_reagent(chem, 15) + chemicals -= 50 + +/mob/living/simple_animal/borer/verb/release_host() set category = "Alien" set name = "Release Host" set desc = "Slither out of your host." @@ -272,19 +311,6 @@ mob/living/simple_animal/borer/proc/detatch() src << "They are no longer in range!" return -/mob/living/simple_animal/borer/Stat() - ..() - statpanel("Status") - - if(emergency_shuttle) - if(emergency_shuttle.online && emergency_shuttle.location < 2) - var/timeleft = emergency_shuttle.timeleft() - if (timeleft) - stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") - - if (client.statpanel == "Status") - stat("Chemicals", chemicals) - /mob/living/simple_animal/borer/verb/ventcrawl() set name = "Crawl through Vent" set desc = "Enter an air vent and crawl through the pipe system." From b10fe26a9ee866d82cd818d974bd1ab239c72270 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 15:18:45 -0700 Subject: [PATCH 30/32] Typo fix. --- code/modules/admin/player_panel.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index ecadd49d49..1b55ca6b03 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -470,7 +470,7 @@ dat += "
Ninjas
" if(ticker.mode.raiders.len > 0) - dat += "
" + dat += "
Wizards
" for(var/datum/mind/raider in ticker.mode.raiders) var/mob/M = raider.current if(M) From b820ce2fe6a1ae5b1d9957556562cfceaa943b2e Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 13 Aug 2013 15:36:05 -0700 Subject: [PATCH 31/32] Compile fix. --- code/modules/mob/living/simple_animal/borer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index b55faf7b98..4ea4a23553 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -164,7 +164,7 @@ host.verbs += /mob/living/carbon/human/proc/punish_host host.verbs += /mob/living/carbon/human/proc/spawn_larvae -/mob/living/simple_animal/borer/verb/bond_brain() +/mob/living/simple_animal/borer/verb/secrete_chemicals() set category = "Alien" set name = "Secrete Chemicals" set desc = "Push some chemicals into your host's bloodstream." From 71bdaa16987e15d84c36faf658abb767f03d1052 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Tue, 13 Aug 2013 13:10:09 +0100 Subject: [PATCH 32/32] Fully reverts clickdelay change. It was immensely buggy with certain mobs, and server lag all but negated the benefits. Signed-off-by: Mloc-Argent --- code/game/atoms.dm | 21 ++++++++++--------- code/game/gamemodes/events/biomass.dm | 3 --- code/game/objects/items.dm | 8 +++---- code/game/objects/items/weapons/RCD.dm | 2 -- .../objects/items/weapons/extinguisher.dm | 6 ++++++ code/game/objects/structures/grille.dm | 6 ------ code/game/objects/structures/window.dm | 7 ------- code/modules/admin/verbs/diagnostics.dm | 3 +-- code/modules/mob/living/carbon/carbon.dm | 6 ------ code/modules/mob/living/carbon/human/human.dm | 4 ++-- .../living/carbon/human/human_attackhand.dm | 2 -- .../mob/living/carbon/monkey/monkey.dm | 2 -- code/modules/mob/login.dm | 2 +- code/modules/mob/mob.dm | 7 +++---- code/modules/mob/mob_defines.dm | 4 ++-- code/modules/mob/mob_grab.dm | 8 +++---- code/modules/mob/mob_helpers.dm | 4 ---- code/modules/mob/screen.dm | 12 +++++------ code/modules/projectiles/gun.dm | 2 +- 19 files changed, 40 insertions(+), 69 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d160e662e8..784ba44c18 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -490,7 +490,7 @@ its easier to just keep the beam vertical. var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblClickNew() proc is being tested) -/*/atom/proc/DblClickNew() +/atom/proc/DblClickNew() if(!usr) return // TODO DOOHL: Intergrate params to new proc. Saved for another time because var/valid_place is a fucking brainfuck @@ -792,7 +792,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl if (in_range) if ( !animal.restrained() ) - attack_animal(animal)*/ + attack_animal(animal) /atom/DblClick(location, control, params) //TODO: DEFERRED: REWRITE if(!usr) return @@ -943,9 +943,9 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl // ------- ( CAN USE ITEM OR HAS 1 SECOND USE DELAY ) AND NOT CLICKING ON SCREEN ------- - if (usr.last_click + usr.click_delay < world.time) - usr.last_click = world.time - usr.click_delay = 0 + if (usr.next_move < world.time) + usr.prev_move = usr.next_move + usr.next_move = world.time + 10 else // ------- ALREADY USED ONE ITEM WITH USE DELAY IN THE PREVIOUS SECOND ------- return @@ -1109,9 +1109,10 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl // ------- ITEM INACESSIBLE OR CLICKING ON SCREEN ------- if (istype(src, /obj/screen)) // ------- IT'S THE HUD YOU'RE CLICKING ON ------- - usr.delay_click(2) - if (usr.last_click + usr.click_delay < world.time) - usr.last_click = world.time + usr.prev_move = usr.next_move + usr:lastDblClick = world.time + 2 + if (usr.next_move < world.time) + usr.next_move = world.time + 2 else return @@ -1143,7 +1144,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl src.hand_al(usr, usr.hand) else // ------- YOU ARE CLICKING ON AN OBJECT THAT'S INACCESSIBLE TO YOU AND IS NOT YOUR HUD ------- - if((LASER in usr:mutations) && usr:a_intent == "hurt" && usr.last_click + usr.click_delay < world.time) + if((LASER in usr:mutations) && usr:a_intent == "hurt" && world.time >= usr.next_move) // ------- YOU HAVE THE LASER MUTATION, YOUR INTENT SET TO HURT AND IT'S BEEN MORE THAN A DECISECOND SINCE YOU LAS TATTACKED ------- var/turf/T = get_turf(usr) @@ -1168,7 +1169,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl spawn( 1 ) A.process() - usr.delay_click(6) + usr.next_move = world.time + 6 return /atom/proc/ShiftClick(var/mob/M as mob) diff --git a/code/game/gamemodes/events/biomass.dm b/code/game/gamemodes/events/biomass.dm index 7bc6cf9256..d1508221f7 100644 --- a/code/game/gamemodes/events/biomass.dm +++ b/code/game/gamemodes/events/biomass.dm @@ -22,9 +22,6 @@ /obj/effect/biomass/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!W || !user || !W.type) return - - user.delay_click(10) - switch(W.type) if(/obj/item/weapon/circular_saw) del src if(/obj/item/weapon/kitchen/utensil/knife) del src diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 281c23f0fd..c55684eb19 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -131,7 +131,8 @@ else if(isliving(src.loc)) return - user.delay_click(2) + user.lastDblClick = world.time + 2 + user.next_move = world.time + 2 src.pickup(user) add_fingerprint(user) user.put_in_active_hand(src) @@ -165,7 +166,8 @@ if(istype(src.loc, /mob/living)) return src.pickup(user) - user.delay_click(2) + user.lastDblClick = world.time + 2 + user.next_move = world.time + 2 user.put_in_active_hand(src) return @@ -227,8 +229,6 @@ log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" ) msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") //BS12 EDIT ALG - user.delay_click(10) - //spawn(1800) // this wont work right // M.lastattacker = null ///////////////////////// diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 6308189d8c..a80a892af6 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -86,8 +86,6 @@ RCD if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock))) return 0 - user.delay_click(10) - switch(mode) if(1) if(istype(A, /turf/space)) diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 6a26f70e1f..77cf343de2 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -14,6 +14,7 @@ m_amt = 90 attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") var/max_water = 50 + var/last_use = 1.0 var/safety = 1 var/sprite_name = "fire_extinguisher" @@ -66,6 +67,11 @@ usr << "\red \The [src] is empty." return + if (world.time < src.last_use + 20) + return + + src.last_use = world.time + playsound(src.loc, 'sound/effects/extinguish.ogg', 75, 1, -3) var/direction = get_dir(src,target) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 48c51cdacf..c2514a1124 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -35,7 +35,6 @@ user.visible_message("[user] kicks [src].", \ "You kick [src].", \ "You hear twisting metal.") - user.delay_click(10) if(shock(user, 70)) return @@ -52,7 +51,6 @@ user.visible_message("[user] mangles [src].", \ "You mangle [src].", \ "You hear twisting metal.") - user.delay_click(10) if(!shock(user, 70)) health -= 5 @@ -66,7 +64,6 @@ user.visible_message("[user] smashes against [src].", \ "You smash against [src].", \ "You hear twisting metal.") - user.delay_click(10) health -= rand(2,3) healthcheck() @@ -79,7 +76,6 @@ M.visible_message("[M] smashes against [src].", \ "You smash against [src].", \ "You hear twisting metal.") - M.delay_click(10) health -= M.melee_damage_upper healthcheck() @@ -164,10 +160,8 @@ else if(istype(W, /obj/item/weapon/shard)) health -= W.force * 0.1 - user.delay_click(10) else if(!shock(user, 70)) playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - user.delay_click(10) switch(W.damtype) if("fire") health -= W.force diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 65fefec03c..2879122972 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -104,19 +104,16 @@ new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) del(src) - usr.delay_click(10) else if (usr.a_intent == "hurt") playsound(src.loc, 'glassknock.ogg', 80, 1) usr.visible_message("\red [usr.name] bangs against the [src.name]!", \ "\red You bang against the [src.name]!", \ "You hear a banging sound.") - usr.delay_click(5) else playsound(src.loc, 'glassknock.ogg', 80, 1) usr.visible_message("[usr.name] knocks on the [src.name].", \ "You knock on the [src.name].", \ "You hear a knocking sound.") - usr.delay_click(5) return @@ -131,11 +128,9 @@ new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) del(src) - user.delay_click(10) else //for nicer text~ user.visible_message("[user] smashes into [src]!") playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - user.delay_click(10) /obj/structure/window/attack_alien(mob/user as mob) @@ -163,7 +158,6 @@ var/mob/living/M = G.affecting var/state = G.state del(W) //gotta delete it here because if window breaks, it won't get deleted - user.delay_click(10) switch (state) if(1) M.apply_damage(7) @@ -203,7 +197,6 @@ else if(W.damtype == BRUTE || W.damtype == BURN) hit(W.force) - user.delay_click(10) if(health <= 7) anchored = 0 update_nearby_icons() diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index dad75f8219..1e328970fd 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -62,7 +62,7 @@ */ /client/proc/fix_next_move() -/* set category = "Debug" + set category = "Debug" set name = "Unfreeze Everyone" var/largest_move_time = 0 var/largest_click_time = 0 @@ -90,7 +90,6 @@ message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [largest_click_time/10] seconds!", 1) message_admins("world.time = [world.time]", 1) feedback_add_details("admin_verb","UFE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - */ return /client/proc/radio_report() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 2347ca6b23..061f06fe7d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -49,11 +49,7 @@ . = ..() /mob/living/carbon/attack_hand(mob/M as mob) - if(!istype(M, /mob/living/carbon)) return - - M.delay_click(10) - if (hasorgans(M)) var/datum/organ/external/temp = M:organs_by_name["r_hand"] if (M.hand) @@ -80,8 +76,6 @@ /mob/living/carbon/attack_paw(mob/M as mob) if(!istype(M, /mob/living/carbon)) return - M.delay_click(10) - for(var/datum/disease/D in viruses) if(D.spread_by_touch()) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 89427c501e..8c41ec8c9a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1121,9 +1121,9 @@ mob/living/carbon/human/yank_out_object() set desc = "Remove an embedded item at the cost of bleeding and pain." set src in view(1) - if(!isliving(usr) || usr.last_click + usr.click_delay > world.time) + if(!isliving(usr) || usr.next_move > world.time) return - usr.delay_click(20) + usr.next_move = world.time + 20 if(usr.stat == 1) usr << "You are unconcious and cannot do that!" diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 0c6b8172a2..cb161b9d94 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -12,8 +12,6 @@ ..() - M.delay_click(10) - if((M != src) && check_shields(0, M.name)) visible_message("\red [M] attempted to touch [src]!") return 0 diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index add85c9d03..a073dfa10d 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -217,8 +217,6 @@ M << "No attacking people at spawn, you jackass." return - M.delay_click(10) - if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves)) var/obj/item/clothing/gloves/G = M.gloves if(G.cell) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index be1fb566b7..1c3498802d 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -33,7 +33,7 @@ if(hud_used) del(hud_used) //remove the hud objects hud_used = new /datum/hud(src) - last_click = world.time + next_move = 1 sight |= SEE_SELF ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9801ea9f6c..08aad3d7ad 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -83,7 +83,6 @@ //This is awful /mob/attackby(obj/item/weapon/W as obj, mob/user as mob) - user.delay_click(10) //Holding a balloon will shield you from an item that is_sharp() ... cause that makes sense if (user.intent != "harm") if (istype(src.l_hand,/obj/item/latexballon) && src.l_hand:air_contents && is_sharp(W)) @@ -906,9 +905,9 @@ mob/verb/yank_out_object() set desc = "Remove an embedded item at the cost of bleeding and pain." set src in view(1) - if(!isliving(usr) || usr.last_click + usr.click_delay > world.time) + if(!isliving(usr) || usr.next_move > world.time) return - usr.delay_click(20) + usr.next_move = world.time + 20 if(usr.stat == 1) usr << "You are unconcious and cannot do that!" @@ -961,4 +960,4 @@ mob/verb/yank_out_object() pinned -= O if(!pinned.len) anchored = 0 - return 1 + return 1 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6cbd091c0c..b82f6736bb 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -54,8 +54,8 @@ var/sdisabilities = 0 //Carbon var/disabilities = 0 //Carbon var/atom/movable/pulling = null - var/last_click = null - var/click_delay = 0 + var/next_move = null + var/prev_move = null var/monkeyizing = null //Carbon var/other = 0.0 var/hand = null diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 07a0750008..5363c05a11 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -128,7 +128,7 @@ return if(killing) return - if (assailant.last_click + assailant.click_delay > world.time) + if (assailant.next_move > world.time) return if ((!( assailant.canmove ) || assailant.lying)) //SN src = null @@ -140,7 +140,7 @@ if (!( killing )) assailant.visible_message("\red [assailant] has temporarily tightened \his grip on [affecting]!") //Foreach goto(97) - assailant.delay_click(10) + assailant.next_move = world.time + 10 //affecting.stunned = max(2, affecting.stunned) //affecting.paralysis = max(1, affecting.paralysis) affecting.losebreath = min(affecting.losebreath + 1, 3) @@ -162,8 +162,6 @@ if(killing) return - assailant.delay_click(10) - switch(S.id) if(1.0) if (state < 2) @@ -237,7 +235,7 @@ assailant.attack_log += text("\[[time_stamp()]\] Strangled (kill intent) [affecting.name] ([affecting.ckey])") log_attack("[assailant.name] ([assailant.ckey]) Strangled (kill intent) [affecting.name] ([affecting.ckey])") - assailant.delay_click(10) + assailant.next_move = world.time + 10 affecting.losebreath += 1 else assailant.visible_message("\red [assailant] was unable to tighten \his grip on [affecting]'s neck!") diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 981d03962e..29b2bfeac3 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -454,7 +454,3 @@ var/list/intents = list("help","disarm","grab","hurt") hud_used.action_intent.icon_state = "harm" else hud_used.action_intent.icon_state = "help" - -/mob/proc/delay_click(var/delay) - src.click_delay = max(src.click_delay, delay) - return src.click_delay diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index 441a0d961f..5742b95cb2 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -600,9 +600,9 @@ set name = "Resist" set category = "IC" - if(!isliving(usr) || usr.last_click + usr.click_delay > world.time) + if(!isliving(usr) || usr.next_move > world.time) return - usr.delay_click(20) + usr.next_move = world.time + 20 var/mob/living/L = usr @@ -670,7 +670,7 @@ if(iscarbon(L)) var/mob/living/carbon/C = L if( C.handcuffed ) - C.delay_click(100) + C.next_move = world.time + 100 C.last_special = world.time + 100 C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)" for(var/mob/O in viewers(L)) @@ -704,7 +704,7 @@ // breakout_time++ //Harder to get out of welded lockers than locked lockers //okay, so the closet is either welded or locked... resist!!! - usr.delay_click(100) + usr.next_move = world.time + 100 L.last_special = world.time + 100 L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)" for(var/mob/O in viewers(usr.loc)) @@ -757,7 +757,7 @@ else if(iscarbon(L)) var/mob/living/carbon/CM = L if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time)) - CM.delay_click(100) + CM.next_move = world.time + 100 CM.last_special = world.time + 100 if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here. usr << "\red You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)" @@ -795,7 +795,7 @@ CM.handcuffed = null CM.update_inv_handcuffed() else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time)) - CM.delay_click(100) + CM.next_move = world.time + 100 CM.last_special = world.time + 100 if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here. usr << "\red You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 7eabd7e59c..35af50877c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -131,7 +131,7 @@ in_chamber.loc = get_turf(user) in_chamber.starting = get_turf(user) in_chamber.shot_from = src - usr.delay_click(4) + user.next_move = world.time + 4 in_chamber.silenced = silenced in_chamber.current = curloc in_chamber.yo = targloc.y - curloc.y
Raiders