Ported limb selection.

This commit is contained in:
cib
2012-10-17 20:08:34 +02:00
parent 463178213c
commit a1aa3ddecf
9 changed files with 175 additions and 5 deletions
@@ -296,6 +296,35 @@ datum/preferences
dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>"
dat += "Skin Tone: <a href='byond://?src=\ref[user];preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>"
dat += "Limbs: <a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust Limbs</a><br>"
for(var/name in organ_data)
var/status = organ_data[name]
var/organ_name = null
switch(name)
if("l_arm")
organ_name = "left arm"
if("r_arm")
organ_name = "right arm"
if("l_leg")
organ_name = "left leg"
if("r_leg")
organ_name = "right leg"
if("l_foot")
organ_name = "left foot"
if("r_foot")
organ_name = "right foot"
if("l_hand")
organ_name = "left hand"
if("r_hand")
organ_name = "right hand"
if(status == "cyborg")
dat += "\tRobotical [organ_name] prothesis<br>"
if(status == "amputated")
dat += "\tAmputated [organ_name]<br>"
dat+="<br>"
if(gender == MALE)
dat += "Underwear: <a href =\"byond://?src=\ref[user];preference=underwear;task=input\"><b>[underwear_m[underwear]]</b></a><br>"
else
@@ -934,6 +963,57 @@ datum/preferences
sec_record = secmsg
SetRecords(user)
if("limbs")
var/limb_name = input(user, "Which limb do you want to change?") as null|anything in list("Left Leg","Right Leg","Left Arm","Right Arm","Left Foot","Right Foot","Left Hand","Right Hand")
if(!limb_name) return
var/limb = null
var/second_limb = null // if you try to change the arm, the hand should also change
var/third_limb = null // if you try to unchange the hand, the arm should also change
switch(limb_name)
if("Left Leg")
limb = "l_leg"
second_limb = "l_foot"
if("Right Leg")
limb = "r_leg"
second_limb = "r_foot"
if("Left Arm")
limb = "l_arm"
second_limb = "l_hand"
if("Right Arm")
limb = "r_arm"
second_limb = "r_hand"
if("Left Foot")
limb = "l_foot"
third_limb = "l_leg"
if("Right Foot")
limb = "r_foot"
third_limb = "r_leg"
if("Left Hand")
limb = "l_hand"
third_limb = "l_arm"
if("Right Hand")
limb = "r_hand"
third_limb = "r_arm"
var/new_state = input(user, "What state do you wish the limb to be in?") as null|anything in list("Normal","Amputated","Prothesis")
if(!new_state) return
switch(new_state)
if("Normal")
organ_data[limb] = null
if(third_limb)
organ_data[third_limb] = null
if("Amputated")
organ_data[limb] = "amputated"
if(second_limb)
organ_data[second_limb] = "amputated"
if("Prothesis")
organ_data[limb] = "cyborg"
if(second_limb)
organ_data[second_limb] = "cyborg"
else
switch(href_list["preference"])
if("gender")
@@ -1083,6 +1163,20 @@ datum/preferences
character.h_style = h_style
character.f_style = f_style
// Destroy/cyborgize organs
for(var/name in organ_data)
var/datum/organ/external/O = character.organs[name]
if(!O) continue
var/status = organ_data[name]
if(status == "amputated")
O.amputated = 1
O.status |= ORGAN_DESTROYED
O.destspawn = 1
else if(status == "cyborg")
O.status |= ORGAN_ROBOT
switch(UI_style)
if("Orange")
character.UI = 'icons/mob/screen1_Orange.dmi'
@@ -215,7 +215,29 @@ datum/preferences
else if(species == "Skrell")
preview_icon = new /icon('icons/effects/species.dmi', "skrell_[g]_s")
else
preview_icon = new /icon('icons/mob/human.dmi', "body_[g]_s")
preview_icon = new /icon('human.dmi', "torso_[g]_s")
preview_icon.Blend(new /icon('human.dmi', "chest_[g]_s"), ICON_OVERLAY)
if(organ_data["head"] != "amputated")
preview_icon.Blend(new /icon('human.dmi', "head_[g]_s"), ICON_OVERLAY)
for(var/name in list("l_arm","r_arm","l_leg","r_leg","l_foot","r_foot","l_hand","r_hand"))
// make sure the organ is added to the list so it's drawn
if(organ_data[name] == null)
organ_data[name] = null
for(var/name in organ_data)
if(organ_data[name] == "amputated") continue
var/icon/temp = new /icon('human.dmi', "[name]_s")
if(organ_data[name] == "cyborg")
temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
preview_icon.Blend(temp, ICON_OVERLAY)
preview_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY)
// Skin tone
if(species == "Human")
+5
View File
@@ -127,6 +127,8 @@ datum/preferences/proc/savefile_save(mob/user)
F["slotname"] << src.slot_name
F["lobby_music"] << src.lobby_music
F["organ_data"] << src.organ_data
return 1
// loads the savefile corresponding to the mob's ckey
@@ -260,6 +262,9 @@ datum/preferences/proc/savefile_load(mob/user)
if(isnull(metadata))
metadata = ""
F["organ_data"] >> src.organ_data
if(!src.organ_data) src.organ_data = list()
//NOTE: Conversion things go inside this if statement
//When updating the save file remember to add 1 to BOTH the savefile constants
//Also take the old conversion things that no longer apply out of this if
+21
View File
@@ -523,3 +523,24 @@ obj/structure/cable/proc/cableColor(var/colorC)
icon = 'icons/obj/power_cond_cyan.dmi'
if("white")
icon = 'icons/obj/power_cond_white.dmi'
/obj/item/weapon/cable_coil/attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help")
return ..()
if(S.burn_dam > 0)
S.heal_damage(0,15,0,1)
if(user != M)
user.visible_message("\red \The [user] repairs some burn damage on their [S.display_name] with \the [src]",\
"\red You repair some burn damage on your [S.display_name]",\
"You hear wires being cut.")
else
user.visible_message("\red \The [user] repairs some burn damage on their [S.display_name] with \the [src]",\
"\red You repair some burn damage on your [S.display_name]",\
"You hear wires being cut.")
else
user << "Nothing to fix!"
else
return ..()