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:
| | 1 | 2 | 3 | 4 | 5 | "
+ var/bname
+ for(var/block=1;block| [block-1] | "
+ bname = assigned_blocks[block]
+ body += ""
+ if(bname)
+ var/bcolor="[(block in M.mutations)?"#006600":"#ff0000"]"
+ body += "[bname][block]"
+ else
+ body += "[block]"
+ body+=" | "
+ body += "
|---|
|---|
"
+
body += {"
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")