From dae08eb061199636d28cd944bd7650cce22233fe Mon Sep 17 00:00:00 2001 From: Rob Nelson Date: Sat, 30 Nov 2013 15:20:32 -0800 Subject: [PATCH] Add back in /fail/station's DNA dickery panel, fix missing block shifting. Conflicts: code/modules/admin/verbs/debug.dm --- code/game/dna/dna_modifier.dm | 4 +- code/modules/admin/admin.dm | 20 ++++++++- code/modules/admin/topic.dm | 13 +++++- code/modules/admin/verbs/debug.dm | 67 +++++++++++++++++++++++++++++-- 4 files changed, 96 insertions(+), 8 deletions(-) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index d09bdff0798..dc50b75299c 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -632,7 +632,7 @@ if (href_list["pulseSERadiation"]) var/block = src.connected.occupant.dna.GetSESubBlock(src.selected_se_block,src.selected_se_subblock) - var/original_block=block + //var/original_block=block //testing("Irradiating SE block [src.selected_se_block]:[src.selected_se_subblock] ([block])...") irradiating = src.radiation_duration @@ -657,7 +657,7 @@ real_SE_block-- //testing("Irradiated SE block [real_SE_block]:[src.selected_se_subblock] ([original_block] now [block]) [(real_SE_block!=selected_se_block) ? "(SHIFTED)":""]!") - connected.occupant.dna.SetSESubBlock(selected_se_block,selected_se_subblock,block) + connected.occupant.dna.SetSESubBlock(real_SE_block,selected_se_subblock,block) domutcheck(src.connected.occupant,src.connected) src.connected.occupant.radiation += (src.radiation_intensity+src.radiation_duration) else diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 2324e6b0cda..40503333bb4 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -120,6 +120,24 @@ var/global/floorIsLava = 0 else body += "Animalize | " + // MUTATIONS + if(iscarbon(M)) + body += "

" + body += "DNA Blocks:
" + var/bname + for(var/block=1;block
Rudimentary transformation:
These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

Observer | @@ -1063,4 +1081,4 @@ proc/formatLocation(var/location) return "[A.name] - [loc.x],[loc.y],[loc.z]" proc/formatPlayerPanel(var/mob/U,var/text="PP") - return "[text]" \ No newline at end of file + return "[text]" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 90b4cd83ec1..fbb0098f066 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1292,6 +1292,17 @@ usr.client.cmd_admin_animalize(M) + else if(href_list["togmutate"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/human/H = locate(href_list["togmutate"]) + if(!istype(H)) + usr << "This can only be used on instances of type /mob/living/carbon/human" + return + usr.client.cmd_admin_toggle_block(H,text2num(href_list["block"])) + show_player_panel(H) + H.regenerate_icons() + /***************** BEFORE************** if (href_list["l_players"]) @@ -2022,7 +2033,7 @@ if(20) MAX_EXPLOSION_RANGE = 28 if(28) MAX_EXPLOSION_RANGE = 56 if(56) MAX_EXPLOSION_RANGE = 128 - if(128) MAX_EXPLOSION_RANGE = 14 + else MAX_EXPLOSION_RANGE = 14 var/range_dev = MAX_EXPLOSION_RANGE *0.25 var/range_high = MAX_EXPLOSION_RANGE *0.5 var/range_low = MAX_EXPLOSION_RANGE diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 56171656dfb..9d713a8fdb2 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -533,6 +533,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that //log_admin("[key_name(src)] has alienized [M.key].") var/list/dresspacks = list( "strip", + "Engineer RIG", + "CE RIG", + "Mining RIG", + "Syndi RIG", + "Wizard RIG", + "Medical RIG", + "Atmos RIG", "standard space gear", "tournament standard red", "tournament standard green", @@ -556,14 +563,18 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that "nanotrasen officer", "nanotrasen captain" ) + var/dostrip = input("Do you want to strip [M] before equipping them? (0=no, 1=yes)", "STRIPTEASE") as null|anything in list(0,1) + if(isnull(dostrip)) + return var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks if (isnull(dresscode)) return feedback_add_details("admin_verb","SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - for (var/obj/item/I in M) - if (istype(I, /obj/item/weapon/implant)) - continue - del(I) + if(dostrip) + for (var/obj/item/I in M) + if (istype(I, /obj/item/weapon/implant)) + continue + del(I) switch(dresscode) if ("strip") //do nothing @@ -578,6 +589,34 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that J.toggle() M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask) J.Topic(null, list("stat" = 1)) + if ("Engineer RIG","CE RIG","Mining RIG","Syndi RIG","Wizard RIG","Medical RIG","Atmos RIG") + if(dresscode=="Engineer RIG") + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig(M), slot_head) + else if(dresscode=="CE RIG") + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/elite(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/elite(M), slot_head) + else if(dresscode=="Mining RIG") + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/mining(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/mining(M), slot_head) + else if(dresscode=="Syndi RIG") + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/syndi(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/syndi(M), slot_head) + else if(dresscode=="Wizard RIG") + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/wizard(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/wizard(M), slot_head) + else if(dresscode=="Medical RIG") + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/medical(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/medical(M), slot_head) + else if(dresscode=="Atmos RIG") + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/atmos(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/atmos(M), slot_head) + var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M) + M.equip_to_slot_or_del(J, slot_back) + J.toggle() + M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask) + J.Topic(null, list("stat" = 1)) + if ("tournament standard red","tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0 if (dresscode=="tournament standard red") M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform) @@ -988,3 +1027,23 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that usr << list2text(clients,",") if("Respawnable Mobs") usr << list2text(respawnable_list,",") + + + +/client/proc/cmd_admin_toggle_block(var/mob/M in mob_list,var/block) + set category = "Fun" + set name = "Toggle a DNA Block" + + if(!ticker) + alert("Wait until the game starts") + return + if(istype(M, /mob/living/carbon)) + M.dna.SetSEState(!M.dna.GetSEState(block)) + domutcheck(M,null) + M.update_mutations() + var/state="[M.dna.GetSEState(block)?"on":"off"]" + var/blockname=assigned_blocks[block] + message_admins("[key_name_admin(src)] has toggled [M.key]'s [blockname] block [state]!") + log_admin("[key_name(src)] has toggled [M.key]'s [blockname] block [state]!") + else + alert("Invalid mob")
 12345