diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 3fb9c88fc58..c474f1247d1 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1081,6 +1081,17 @@ var/global/BSACooldown = 0 else alert("You cannot perform this action. You must be of a higher administrative rank!") return + if (href_list["makeanimal"]) + if(src.level>=3) + var/mob/M = locate(href_list["makeanimal"]) + if(!istype(M, /mob/new_player)) + usr.client.cmd_admin_animalize(M) + else + alert("The mob must not be a new_player.") + return + else + alert("You cannot perform this action. You must be of a higher administrative rank!") + return /***************** BEFORE************** if (href_list["l_players"]) @@ -2307,6 +2318,12 @@ var/global/BSACooldown = 0 body += "Make Alien | " body += "Make Metroid " + //Simple Animals + if(isanimal(M)) + body += "Re-Animalize | " + else + body += "Animalize | " + 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.

" body += "Observer | " diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 4afcbd6e4a5..bdcc4b25afc 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -172,6 +172,27 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that else alert("Invalid mob") +/client/proc/cmd_admin_animalize(var/mob/M in mob_list) + set category = "Fun" + set name = "Make Simple Animal" + + if(!ticker) + alert("Wait until the game starts") + return + + if(!M) + alert("That mob doesn't seem to exist, close the panel and try again.") + return + + if(istype(M, /mob/new_player)) + alert("The mob must not be a new_player.") + return + + log_admin("[key_name(src)] has animalized [M.key].") + spawn(10) + M.Animalize() + + /client/proc/makepAI(var/turf/T in mob_list) set category = "Fun" set name = "Make pAI" diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index d6a0193f82b..3abdbb39ecf 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -269,4 +269,87 @@ new_corgi << "You are now a Corgi. Yap Yap!" spawn(0)//To prevent the proc from returning null. del(src) - return \ No newline at end of file + return + +/mob/living/carbon/human/Animalize() + + var/list/mobtypes = typesof(/mob/living/simple_animal) + var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes + + if(bad_animal(mobpath)) + usr << "\red Sorry but this mob type is currently unavailable." + return + + if(monkeyizing) + return + for(var/obj/item/W in src) + drop_from_inventory(W) + + regenerate_icons() + monkeyizing = 1 + canmove = 0 + icon = null + invisibility = 101 + + for(var/t in organs) + del(t) + + var/mob/new_mob = new mobpath(src.loc) + + new_mob.key = key + new_mob.a_intent = "hurt" + new_mob.UI = UI + + + new_mob << "You suddenly feel more... animalistic." + spawn() + del(src) + return + +/mob/proc/Animalize() + + var/list/mobtypes = typesof(/mob/living/simple_animal) + var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes + + if(bad_animal(mobpath)) + usr << "\red Sorry but this mob type is currently unavailable." + return + + var/mob/new_mob = new mobpath(src.loc) + + new_mob.key = key + new_mob.a_intent = "hurt" + new_mob.UI = UI + new_mob << "You feel more... animalistic" + + del(src) + +//Certain mob types either do not work, or have major problems and should now be allowed to be controlled by players. +/mob/proc/bad_animal(var/MP) + + //Sanity, this should never happen. + if(!MP || !ispath(MP, /mob/living/simple_animal)) + return 1 + + //It is impossible to pull up the player panel for mice + if(ispath(MP, /mob/living/simple_animal/mouse)) + return 1 + + //Bears will auto-attack mobs, even if they're player controlled + if(ispath(MP, /mob/living/simple_animal/bear)) + return 1 + + //Parrots are unfinished, they have no sprite, movement, ect... + else if(ispath(MP, /mob/living/simple_animal/parrot)) + return 1 + + //Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning. + else if(ispath(MP, /mob/living/simple_animal/space_worm)) + return 1 + + //No problems found! + else + return 0 + + + diff --git a/html/changelog.html b/html/changelog.html index e20e30cb57d..39e538dd1a4 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -49,6 +49,11 @@ should be listed in the changelog upon commit tho. Thanks. -->
+

August 26, 2012

+

Nodrak updated:

+

August 25, 2012

Carnwennan updated: