mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
- Added a rudimentary transformation section to the options panel (show player panel verb). This allows rudimentary mob type changes to any mob. These are however generic and non-mob-specific, as they only copy over some of the most needed variables, such as the three name variables, dna and mind. They do not, for instance, create a MMI for cyborgs. A note of this is also added to the player panel.
- Once you click one of the links a popup will appear asking you whether you'd like to delete the old mob of the player (yes or no) or cancel this transformation. Screenshot: http://www.kamletos.si/options%20panel%20rudamentary%20transformation.PNG git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3534 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -142,12 +142,15 @@ proc/process_ghost_teleport_locs()
|
||||
music = "music/escape.ogg"
|
||||
|
||||
/area/shuttle/escape/station
|
||||
name = "Emergency Shuttle Station"
|
||||
icon_state = "shuttle2"
|
||||
|
||||
/area/shuttle/escape/centcom
|
||||
name = "Emergency Shuttle Centcom"
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/escape/transit // the area to pass through for 3 minute transit
|
||||
name = "Emergency Shuttle Transit"
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/escape_pod1
|
||||
|
||||
@@ -65,6 +65,75 @@ var/global/BSACooldown = 0
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||
return
|
||||
|
||||
|
||||
if(href_list["simplemake"])
|
||||
|
||||
if(!href_list["mob"])
|
||||
usr << "Invalid mob"
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["mob"])
|
||||
|
||||
if(!M || !ismob(M))
|
||||
usr << "Cannot find mob"
|
||||
return
|
||||
|
||||
var/delmob = 0
|
||||
var/option = alert("Delete old mob?","Message","Yes","No","Cancel")
|
||||
if(option == "Cancel")
|
||||
return
|
||||
if(option == "Yes")
|
||||
delmob = 1
|
||||
|
||||
switch(href_list["simplemake"])
|
||||
if("observer")
|
||||
M.change_mob_type( /mob/dead/observer , null, null, delmob)
|
||||
if("drone")
|
||||
M.change_mob_type( /mob/living/carbon/alien/humanoid/drone , null, null, delmob)
|
||||
if("hunter")
|
||||
M.change_mob_type( /mob/living/carbon/alien/humanoid/hunter , null, null, delmob)
|
||||
if("queen")
|
||||
M.change_mob_type( /mob/living/carbon/alien/humanoid/queen , null, null, delmob)
|
||||
if("sentinel")
|
||||
M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob)
|
||||
if("larva")
|
||||
M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob)
|
||||
if("human")
|
||||
M.change_mob_type( /mob/living/carbon/human , null, null, delmob)
|
||||
if("metroid")
|
||||
M.change_mob_type( /mob/living/carbon/metroid , null, null, delmob)
|
||||
if("adultmetroid")
|
||||
M.change_mob_type( /mob/living/carbon/metroid/adult , null, null, delmob)
|
||||
if("monkey")
|
||||
M.change_mob_type( /mob/living/carbon/monkey , null, null, delmob)
|
||||
if("robot")
|
||||
M.change_mob_type( /mob/living/silicon/robot , null, null, delmob)
|
||||
if("cat")
|
||||
M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob)
|
||||
if("runtime")
|
||||
M.change_mob_type( /mob/living/simple_animal/cat/Runtime , null, null, delmob)
|
||||
if("corgi")
|
||||
M.change_mob_type( /mob/living/simple_animal/corgi , null, null, delmob)
|
||||
if("ian")
|
||||
M.change_mob_type( /mob/living/simple_animal/corgi/Ian , null, null, delmob)
|
||||
if("crab")
|
||||
M.change_mob_type( /mob/living/simple_animal/crab , null, null, delmob)
|
||||
if("coffee")
|
||||
M.change_mob_type( /mob/living/simple_animal/crab/Coffee , null, null, delmob)
|
||||
if("parrot")
|
||||
M.change_mob_type( /mob/living/simple_animal/parrot , null, null, delmob)
|
||||
if("drprofessor")
|
||||
M.change_mob_type( /mob/living/simple_animal/parrot/DrProfessor , null, null, delmob)
|
||||
if("constructarmoured")
|
||||
M.change_mob_type( /mob/living/simple_animal/constructarmoured , null, null, delmob)
|
||||
if("constructbuilder")
|
||||
M.change_mob_type( /mob/living/simple_animal/constructbuilder , null, null, delmob)
|
||||
if("constructwraith")
|
||||
M.change_mob_type( /mob/living/simple_animal/constructwraith , null, null, delmob)
|
||||
if("shade")
|
||||
M.change_mob_type( /mob/living/simple_animal/shade , null, null, delmob)
|
||||
|
||||
|
||||
/////////////////////////////////////new ban stuff
|
||||
if(href_list["unbanf"])
|
||||
var/banfolder = href_list["unbanf"]
|
||||
@@ -795,6 +864,11 @@ var/global/BSACooldown = 0
|
||||
|
||||
if (href_list["sendtoprison"])
|
||||
if ((src.rank in list( "Moderator", "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
|
||||
var/confirm = alert(usr, "Send to admin prison for the round?", "Message", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["sendtoprison"])
|
||||
if (ismob(M))
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
@@ -864,6 +938,11 @@ var/global/BSACooldown = 0
|
||||
|
||||
if (href_list["tdome1"])
|
||||
if ((src.rank in list( "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
|
||||
var/confirm = alert(usr, "Confirm?", "Message", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["tdome1"])
|
||||
if (ismob(M))
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
@@ -890,6 +969,11 @@ var/global/BSACooldown = 0
|
||||
|
||||
if (href_list["tdome2"])
|
||||
if ((src.rank in list( "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
|
||||
var/confirm = alert(usr, "Confirm?", "Message", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["tdome2"])
|
||||
if (ismob(M))
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
@@ -916,6 +1000,11 @@ var/global/BSACooldown = 0
|
||||
|
||||
if (href_list["tdomeadmin"])
|
||||
if ((src.rank in list( "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
|
||||
var/confirm = alert(usr, "Confirm?", "Message", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["tdomeadmin"])
|
||||
if (ismob(M))
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
@@ -931,6 +1020,11 @@ var/global/BSACooldown = 0
|
||||
|
||||
if (href_list["tdomeobserve"])
|
||||
if ((src.rank in list( "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
|
||||
var/confirm = alert(usr, "Confirm?", "Message", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["tdomeobserve"])
|
||||
if (ismob(M))
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
@@ -1231,6 +1325,11 @@ var/global/BSACooldown = 0
|
||||
|
||||
if (href_list["getmob"])
|
||||
if(rank in list( "Trial Admin", "Badmin", "Game Admin", "Game Master"))
|
||||
|
||||
var/confirm = alert(usr, "Confirm?", "Message", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["getmob"])
|
||||
usr.client.Getmob(M)
|
||||
else
|
||||
@@ -2143,7 +2242,7 @@ var/global/BSACooldown = 0
|
||||
if (M.client)
|
||||
if(!istype(M, /mob/new_player))
|
||||
body += "<br><br>"
|
||||
body += "<b>Transformations:</b>"
|
||||
body += "<b>Transformation:</b>"
|
||||
body += "<br>"
|
||||
|
||||
//Monkey
|
||||
@@ -2167,6 +2266,33 @@ var/global/BSACooldown = 0
|
||||
body += "<A href='?src=\ref[src];makealien=\ref[M]'>Make Alien</A> | "
|
||||
body += "<A href='?src=\ref[src];makemetroid=\ref[M]'>Make Metroid</A> "
|
||||
|
||||
body += "<br><br>"
|
||||
body += "<b>Rudimentary transformation:</b><font size=2><br>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.</font><br>"
|
||||
body += "<A href='?src=\ref[src];simplemake=observer;mob=\ref[M]'>Observer</A> | "
|
||||
body += "\[ Alien: <A href='?src=\ref[src];simplemake=drone;mob=\ref[M]'>Drone</A>, "
|
||||
body += "<A href='?src=\ref[src];simplemake=hunter;mob=\ref[M]'>Hunter</A>, "
|
||||
body += "<A href='?src=\ref[src];simplemake=queen;mob=\ref[M]'>Queen</A>, "
|
||||
body += "<A href='?src=\ref[src];simplemake=sentinel;mob=\ref[M]'>Sentinel</A>, "
|
||||
body += "<A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A> \] "
|
||||
body += "<A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A> "
|
||||
body += "\[ Metroid: <A href='?src=\ref[src];simplemake=metroid;mob=\ref[M]'>Baby</A>, "
|
||||
body += "<A href='?src=\ref[src];simplemake=adultmetroid;mob=\ref[M]'>Adult</A> \] "
|
||||
body += "<A href='?src=\ref[src];simplemake=monkey;mob=\ref[M]'>Monkey</A> | "
|
||||
body += "<A href='?src=\ref[src];simplemake=robot;mob=\ref[M]'>Cyborg</A> | "
|
||||
body += "<A href='?src=\ref[src];simplemake=cat;mob=\ref[M]'>Cat</A> | "
|
||||
body += "<A href='?src=\ref[src];simplemake=runtime;mob=\ref[M]'>Runtime</A> | "
|
||||
body += "<A href='?src=\ref[src];simplemake=corgi;mob=\ref[M]'>Corgi</A> | "
|
||||
body += "<A href='?src=\ref[src];simplemake=ian;mob=\ref[M]'>Ian</A> | "
|
||||
body += "<A href='?src=\ref[src];simplemake=crab;mob=\ref[M]'>Crab</A> | "
|
||||
body += "<A href='?src=\ref[src];simplemake=coffee;mob=\ref[M]'>Coffee</A> | "
|
||||
//body += "<A href='?src=\ref[src];simplemake=parrot;mob=\ref[M]'>Parrot</A> | "
|
||||
//body += "<A href='?src=\ref[src];simplemake=drprofessor;mob=\ref[M]'>DrProfessor</A> | "
|
||||
body += "\[ Construct: <A href='?src=\ref[src];simplemake=constructarmoured;mob=\ref[M]'>Armoured</A> , "
|
||||
body += "<A href='?src=\ref[src];simplemake=constructbuilder;mob=\ref[M]'>Builder</A> , "
|
||||
body += "<A href='?src=\ref[src];simplemake=constructwraith;mob=\ref[M]'>Wraith</A> \] "
|
||||
body += "<A href='?src=\ref[src];simplemake=shade;mob=\ref[M]'>Shade</A>"
|
||||
body += "<br>"
|
||||
|
||||
if (M.client)
|
||||
body += "<br><br>"
|
||||
body += "<b>Other actions:</b>"
|
||||
@@ -2180,7 +2306,7 @@ var/global/BSACooldown = 0
|
||||
body += "<br>"
|
||||
body += "</body></html>"
|
||||
|
||||
usr << browse(body, "window=adminplayeropts;size=550x375")
|
||||
usr << browse(body, "window=adminplayeropts;size=550x515")
|
||||
feedback_add_details("admin_verb","SPP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
message_admins("\blue \bold GlobalNarrate: [key_name_admin(usr)] : [msg]<BR>", 1)
|
||||
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_direct_narrate() // Targetted narrate -- TLE
|
||||
/client/proc/cmd_admin_direct_narrate(var/mob/M) // Targetted narrate -- TLE
|
||||
set category = "Special Verbs"
|
||||
set name = "Direct Narrate"
|
||||
|
||||
@@ -90,11 +90,17 @@
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
|
||||
var/mob/M = input("Direct narrate to who?", "Active Players") as null|anything in get_mob_with_client_list()
|
||||
if(M == null)
|
||||
if(!M)
|
||||
M = input("Direct narrate to who?", "Active Players") as null|anything in get_mob_with_client_list()
|
||||
|
||||
if(!M)
|
||||
return
|
||||
|
||||
var/msg = input("Message:", text("Enter the text you wish to appear to your target:")) as text
|
||||
|
||||
if( !msg )
|
||||
return
|
||||
|
||||
M << msg
|
||||
log_admin("DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]")
|
||||
message_admins("\blue \bold DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]<BR>", 1)
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
if(facehugger.stat == CONSCIOUS)
|
||||
var/image/activeIndicator = image('alien.dmi', loc = facehugger, icon_state = "facehugger_active")
|
||||
activeIndicator.override = 1
|
||||
if(client)
|
||||
client.images += activeIndicator
|
||||
|
||||
/mob/living/carbon/alien/IsAdvancedToolUser()
|
||||
|
||||
53
code/modules/mob/mob_transformation_simple.dm
Normal file
53
code/modules/mob/mob_transformation_simple.dm
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
//This proc is the most basic of the procs. All it does is make a new mob on the same tile and transfer over a few variables.
|
||||
//Returns the new mob
|
||||
//Note that this proc does NOT do MMI related stuff!
|
||||
/mob/proc/change_mob_type(var/new_type = null, var/turf/location = null, var/new_name = null as text, var/delete_old_mob = 0 as num)
|
||||
|
||||
if(istype(src,/mob/new_player))
|
||||
usr << "\red cannot convert players who have not entered yet."
|
||||
return
|
||||
|
||||
if(!new_type)
|
||||
new_type = input("Mob type path:", "Mob type") as text|null
|
||||
|
||||
if(istext(new_type))
|
||||
new_type = text2path(new_type)
|
||||
|
||||
if( !ispath(new_type) )
|
||||
usr << "Invalid type path (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
return
|
||||
|
||||
if( new_type == /mob/new_player )
|
||||
usr << "\red cannot convert into a new_player mob type."
|
||||
return
|
||||
|
||||
var/mob/M = null
|
||||
if( !isnull(location) && isturf(location))
|
||||
M = new new_type( location )
|
||||
else
|
||||
M = new new_type( src.loc )
|
||||
|
||||
if(!M || !ismob(M))
|
||||
usr << "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
return
|
||||
|
||||
if( istext(new_name) )
|
||||
M.name = new_name
|
||||
M.original_name = new_name
|
||||
M.real_name = new_name
|
||||
else
|
||||
M.name = src.name
|
||||
M.original_name = src.original_name
|
||||
M.real_name = src.real_name
|
||||
|
||||
M.dna = src.dna
|
||||
|
||||
M.ckey = src.ckey
|
||||
if(mind)
|
||||
mind.transfer_to(M)
|
||||
|
||||
if(delete_old_mob)
|
||||
spawn(1)
|
||||
del(src)
|
||||
return M
|
||||
File diff suppressed because it is too large
Load Diff
@@ -833,6 +833,7 @@
|
||||
#include "code\modules\mob\mob_grab.dm"
|
||||
#include "code\modules\mob\mob_helpers.dm"
|
||||
#include "code\modules\mob\mob_movement.dm"
|
||||
#include "code\modules\mob\mob_transformation_simple.dm"
|
||||
#include "code\modules\mob\say.dm"
|
||||
#include "code\modules\mob\screen.dm"
|
||||
#include "code\modules\mob\transform_procs.dm"
|
||||
|
||||
Reference in New Issue
Block a user