New vending machine, enabling Ian clothes, bug fixes, map update

This commit is contained in:
ZomgPonies
2013-09-28 01:38:18 -04:00
parent 853d490660
commit 78f14f11cc
24 changed files with 1970 additions and 1825 deletions
+24 -4
View File
@@ -258,7 +258,7 @@ datum/preferences
dat += "Secondary Language:<br><a href='byond://?src=\ref[user];preference=language;task=input'>[language]</a><br>"
dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>"
dat += "Skin Tone: <a href='?_src_=prefs;preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>"
dat += "Skin pattern: <a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust</a><br>"
// dat += "Skin pattern: <a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust</a><br>"
dat += "<br><b>Handicaps</b><br>"
dat += "\t<a href='byond://?src=\ref[user];task=input;preference=disabilities'><b>\[Set Disabilities\]</b></a><br>"
dat += "\tLimbs: <a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust</a><br>"
@@ -292,6 +292,13 @@ datum/preferences
if(ind > 1)
dat += ", "
dat += "\tMechanical [organ_name] prothesis"
else if(status == "peg")
++ind
if(ind > 1)
dat += ", "
dat += "\tWooden [organ_name] prothesis"
else if(status == "amputated")
++ind
if(ind > 1)
@@ -1024,13 +1031,16 @@ datum/preferences
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
var/valid_limb_states=list("Normal","Amputated","Prothesis")
switch(limb_name)
if("Left Leg")
limb = "l_leg"
second_limb = "l_foot"
valid_limb_states += "Peg Leg"
if("Right Leg")
limb = "r_leg"
second_limb = "r_foot"
valid_limb_states += "Peg Leg"
if("Left Arm")
limb = "l_arm"
second_limb = "l_hand"
@@ -1050,7 +1060,7 @@ datum/preferences
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")
var/new_state = input(user, "What state do you wish the limb to be in?") as null|anything in valid_limb_states
if(!new_state) return
switch(new_state)
@@ -1066,11 +1076,15 @@ datum/preferences
organ_data[limb] = "cyborg"
if(second_limb)
organ_data[second_limb] = "cyborg"
if("Peg Leg")
organ_data[limb] = "peg"
if(second_limb)
organ_data[second_limb] = "amputated"
/*
if("skin_style")
var/skin_style_name = input(user, "Select a new skin style") as null|anything in list("default1", "default2", "default3")
if(!skin_style_name) return
*/
else
switch(href_list["preference"])
if("gender")
@@ -1190,11 +1204,17 @@ datum/preferences
var/status = organ_data[name]
if(status == "amputated")
O.status &= ~ORGAN_ROBOT
O.status &= ~ORGAN_PEG
O.amputated = 1
O.status |= ORGAN_DESTROYED
O.destspawn = 1
else if(status == "cyborg")
O.status &= ~ORGAN_PEG
O.status |= ORGAN_ROBOT
else if(status == "peg")
O.status &= ~ORGAN_ROBOT
O.status |= ORGAN_PEG
if(disabilities & DISABILITY_FLAG_FAT && species=="Human")//character.species.flags & CAN_BE_FAT)
character.mutations += FAT
@@ -566,7 +566,7 @@
if ((href_list["item"] && !( usr.stat ) && usr.canmove && !( usr.restrained() ) && in_range(src, usr) && ticker)) //if game hasn't started, can't make an equip_e
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
if(usr:gloves)
if(ishuman(usr) && usr:gloves)
var/obj/item/clothing/gloves/G = usr:gloves
pickpocket = G.pickpocket
O.source = usr
+3 -2
View File
@@ -123,7 +123,7 @@
flags = WHITELISTED | NO_BREATHE | REQUIRE_LIGHT | NON_GENDERED | NO_SCAN | IS_PLANT | RAD_ABSORB
/*
/datum/species/skellington // /vg/
name = "Skellington"
icobase = 'icons/mob/human_races/r_skeleton.dmi'
@@ -131,4 +131,5 @@
language = "Clatter"
attack_verb = "punch"
flags = WHITELISTED | HAS_LIPS | HAS_TAIL | NO_EAT | NO_BREATHE | NON_GENDERED
flags = WHITELISTED | HAS_LIPS | HAS_TAIL | NO_EAT | NO_BREATHE | NON_GENDERED
*/
+1 -1
View File
@@ -135,7 +135,7 @@ var/list/ai_list = list()
for(var/line in lines)
// split & clean up
var/list/Entry = text2list(line, "-")
var/list/Entry = text2list(line, ":")
for(var/i = 1 to Entry.len)
Entry[i] = trim(Entry[i])
@@ -27,7 +27,6 @@
regenerate_icons()
/mob/living/simple_animal/corgi/show_inv(mob/user as mob)
/* If you're turning this back on, scroll down and uncomment target_updated
user.set_machine(src)
if(user.stat) return
@@ -43,7 +42,6 @@
user << browse(dat, text("window=mob[];size=325x500", name))
onclose(user, "mob[real_name]")
*/
return
/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob)
@@ -95,7 +93,7 @@
usr << "\red There is nothing to remove from its [remove_from]."
return
//show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying.
show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying.
//Adding things to inventory
else if(href_list["add_inv"])
@@ -188,7 +186,7 @@
src.inventory_back = item_to_add
regenerate_icons()
//show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying.
show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying.
else
..()
+8 -4
View File
@@ -75,7 +75,7 @@
//Robotic limb malfunctions
var/malfunction = 0
if (E.status & ORGAN_ROBOT && prob(E.brute_dam + E.burn_dam))
if (E.status & (ORGAN_ROBOT|ORGAN_PEG) && prob(E.brute_dam + E.burn_dam))
malfunction = 1
//Broken limbs hurt too
@@ -126,6 +126,8 @@
//Check arms and legs for existence
var/canstand_l = 1 //Can stand on left leg
var/canstand_r = 1 //Can stand on right leg
var/legispeg_l=0
var/legispeg_r=0
var/hasleg_l = 1 //Have left leg
var/hasleg_r = 1 //Have right leg
var/hasarm_l = 1 //Have left arm
@@ -135,15 +137,17 @@
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED))
canstand_l = 0
hasleg_l = 0
legispeg_l=E.status & ORGAN_PEG
E = get_organ("r_leg")
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED))
canstand_r = 0
hasleg_r = 0
legispeg_r=E.status & ORGAN_PEG
E = get_organ("l_foot")
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED))
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED) && !legispeg_l)
canstand_l = 0
E = get_organ("r_foot")
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED))
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED) && !legispeg_r)
canstand_r = 0
E = get_organ("l_arm")
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED))
@@ -152,7 +156,7 @@
if(E.status & ORGAN_DESTROYED && !(E.status & ORGAN_SPLINTED))
hasarm_r = 0
// Can stand if have at least one full leg (with leg and foot parts present)
// Can stand if have at least one full leg (with leg and foot parts present, or an entire pegleg)
// Has limbs to move around if at least one arm or leg is at least partially there
can_stand = canstand_l||canstand_r
has_limbs = hasleg_l||hasleg_r||hasarm_l||hasarm_r
+54 -18
View File
@@ -77,7 +77,7 @@
if(status & ORGAN_DESTROYED)
return 0
if(status & ORGAN_ROBOT)
if(status & (ORGAN_ROBOT|ORGAN_PEG))
brute *= 0.66 //~2/3 damage for ROBOLIMBS
burn *= 0.66 //~2/3 damage for ROBOLIMBS
@@ -104,7 +104,7 @@
if(used_weapon)
add_autopsy_data("[used_weapon]", brute + burn)
var/can_cut = (prob(brute*2) || sharp) && !(status & ORGAN_ROBOT)
var/can_cut = (prob(brute*2) || sharp) && !(status & (ORGAN_ROBOT|ORGAN_PEG))
// If the limbs can break, make sure we don't exceed the maximum damage a limb can take before breaking
if((brute_dam + burn_dam + brute + burn) < max_damage || !config.limbs_can_break)
if(brute)
@@ -138,7 +138,7 @@
burn = max(0, burn - can_inflict)
//If there are still hurties to dispense
if (burn || brute)
if (status & ORGAN_ROBOT)
if (status & (ORGAN_ROBOT|ORGAN_PEG))
droplimb(1) //Robot limbs just kinda fail at full damage.
else
//List organs we can pass it to
@@ -165,6 +165,10 @@
if(status & ORGAN_ROBOT && !robo_repair)
return
// Can't fix peglegs.
if(status & ORGAN_PEG)
return
//Heal damage on the individual wounds
for(var/datum/wound/W in wounds)
if(brute == 0 && burn == 0)
@@ -222,7 +226,7 @@
//Possibly trigger an internal wound, too.
var/local_damage = brute_dam + burn_dam + damage
if(damage > 10 && type != BURN && local_damage > 20 && prob(damage) && !(status & ORGAN_ROBOT))
if(damage > 10 && type != BURN && local_damage > 20 && prob(damage) && !(status & (ORGAN_ROBOT|ORGAN_PEG)))
var/datum/wound/internal_bleeding/I = new (15)
wounds += I
owner.custom_pain("You feel something rip in your [display_name]!", 1)
@@ -266,7 +270,7 @@
return
//Bone fracurtes
if(config.bones_can_break && brute_dam > min_broken_damage * config.organ_health_multiplier && !(status & ORGAN_ROBOT))
if(config.bones_can_break && brute_dam > min_broken_damage * config.organ_health_multiplier && !(status & (ORGAN_ROBOT|ORGAN_PEG)))
src.fracture()
if(!(status & ORGAN_BROKEN))
perma_injury = 0
@@ -281,6 +285,10 @@
#define GANGREN_LEVEL_TERMINAL 2500
#define GERM_TRANSFER_AMOUNT germ_level/500
/datum/organ/external/proc/update_germs()
if(status & (ORGAN_ROBOT|ORGAN_PEG)) //how does robot limb have da germs?
if(germ_level > 0)
germ_level = 0
return
if(germ_level > 0 && owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs
//Syncing germ levels with external wounds
for(var/datum/wound/W in wounds)
@@ -305,17 +313,17 @@
if (prob(10)) //Spreading the fun
if (children) //To child organs
for (var/datum/organ/external/child in children)
if (!(child.status & (ORGAN_DEAD|ORGAN_DESTROYED|ORGAN_ROBOT)))
if (!(child.status & (ORGAN_DEAD|ORGAN_DESTROYED|ORGAN_ROBOT|ORGAN_PEG)))
child.germ_level += round(GERM_TRANSFER_AMOUNT)
if (parent)
if (!(parent.status & (ORGAN_DEAD|ORGAN_DESTROYED|ORGAN_ROBOT)))
if (!(parent.status & (ORGAN_DEAD|ORGAN_DESTROYED|ORGAN_ROBOT|ORGAN_PEG)))
parent.germ_level += round(GERM_TRANSFER_AMOUNT)
//Updating wounds. Handles wound natural I had some free spachealing, internal bleedings and infections
//Updating wounds. Handles wound natural healing, internal bleedings and infections
/datum/organ/external/proc/update_wounds()
if((status & ORGAN_ROBOT)) //Robotic limbs don't heal or get worse.
if((status & (ORGAN_ROBOT|ORGAN_PEG))) //Robotic limbs don't heal or get worse.
return
for(var/datum/wound/W in wounds)
@@ -371,7 +379,7 @@
else if(W.damage_type == BURN)
burn_dam += W.damage
if(!(status & ORGAN_ROBOT) && W.bleeding())
if(!(status & (ORGAN_ROBOT|ORGAN_PEG)) && W.bleeding())
W.bleed_timer--
status |= ORGAN_BLEEDING
@@ -474,11 +482,23 @@
if(LEG_RIGHT)
if(status & ORGAN_ROBOT)
organ = new /obj/item/robot_parts/r_leg(owner.loc)
else if(status & ORGAN_PEG)
//organ = new /obj/item/stack/sheet/wood(owner.loc)
owner.visible_message(\
"\red \The [owner]'s [display_name] snaps!",\
"\red <b>Your [display_name] snaps!</b>",\
"You hear wood being split.")
else
organ= new /obj/item/weapon/organ/r_leg(owner.loc, owner)
if(LEG_LEFT)
if(status & ORGAN_ROBOT)
organ = new /obj/item/robot_parts/l_leg(owner.loc)
else if(status & ORGAN_PEG)
//organ = new /obj/item/stack/sheet/wood(owner.loc)
owner.visible_message(\
"\red \The [owner]'s [display_name] snaps!",\
"\red <b>Your [display_name] snaps!</b>",\
"You hear wood being split.")
else
organ= new /obj/item/weapon/organ/l_leg(owner.loc, owner)
if(HAND_RIGHT)
@@ -567,11 +587,24 @@
src.status &= ~ORGAN_SPLINTED
src.status &= ~ORGAN_ATTACHABLE
src.status &= ~ORGAN_DESTROYED
src.status &= ~ORGAN_PEG
src.status |= ORGAN_ROBOT
for (var/datum/organ/external/T in children)
if(T)
T.robotize()
/datum/organ/external/proc/peggify()
src.status &= ~ORGAN_BROKEN
src.status &= ~ORGAN_BLEEDING
src.status &= ~ORGAN_SPLINTED
src.status &= ~ORGAN_ATTACHABLE
src.status &= ~ORGAN_DESTROYED
src.status &= ~ORGAN_ROBOT
src.status |= ORGAN_PEG
for (var/datum/organ/external/T in children)
if(T)
T.droplimb(1,1)
/datum/organ/external/proc/mutate()
src.status |= ORGAN_MUTATED
owner.update_body()
@@ -597,11 +630,12 @@
if(isFat && has_fat)
fat="_fat"
var/icon_state="[icon_name][gender][fat]"
//testing("[src].get_icon('[gender]', '[fat]') = /icon([owner.race_icon], [icon_state])")
var/baseicon=owner.race_icon
if (status & ORGAN_MUTATED)
return new /icon(owner.deform_icon, icon_state)
else
return new /icon(owner.race_icon, icon_state)
baseicon=owner.deform_icon
if (status & ORGAN_PEG)
baseicon='icons/mob/human_races/o_peg.dmi'
return new /icon(baseicon, icon_state)
/datum/organ/external/proc/is_usable()
@@ -708,13 +742,15 @@
/datum/organ/external/head/get_icon()
if (!owner)
return ..()
return ..()
var/g = "m"
if(owner.gender == FEMALE) g = "f"
var/baseicon=owner.race_icon
if (status & ORGAN_MUTATED)
. = new /icon(owner.deform_icon, "[icon_name]_[g]")
else
. = new /icon(owner.race_icon, "[icon_name]_[g]")
baseicon=owner.deform_icon
if (status & ORGAN_PEG)
baseicon='icons/mob/human_races/o_peg.dmi'
return new /icon(baseicon, "[icon_name]_[g]")
/datum/organ/external/head/take_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list())
..(brute, burn, sharp, used_weapon, forbidden_limbs)
+1 -1
View File
@@ -267,7 +267,7 @@
***************/
/obj/item/device/videocam
name = "camera"
name = "video camera"
icon = 'icons/obj/items.dmi'
desc = "video camera that can send live feed to the entertainment network."
icon_state = "videocam"
+1
View File
@@ -269,6 +269,7 @@ client/proc/add_gun_icons()
screen += usr.gun_run_icon
client/proc/remove_gun_icons()
if(!usr) return
screen -= usr.item_use_icon
screen -= usr.gun_move_icon
if (target_can_move)
+37
View File
@@ -163,3 +163,40 @@
user.visible_message("\red [user]'s hand slips, damaging connectors on [target]'s [affected.display_name]!", \
"\red Your hand slips, damaging connectors on [target]'s [affected.display_name]!")
target.apply_damage(10, BRUTE, affected)
/datum/surgery_step/limb/attach_plank
allowed_tools = list(/obj/item/stack/sheet/wood=100)
can_infect = 0
min_duration = 80
max_duration = 100
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/robot_parts/p = tool
if (p.part)
if (!(target_zone in p.part))
return 0
var/datum/organ/external/affected = target.get_organ(target_zone)
return ..() && affected.status & ORGAN_ATTACHABLE
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] starts attaching [tool] where [target]'s [affected.display_name] used to be.", \
"You start attaching [tool] where [target]'s [affected.display_name] used to be.")
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\blue [user] has attached [tool] where [target]'s [affected.display_name] used to be.", \
"\blue You have attached [tool] where [target]'s [affected.display_name] used to be.")
affected.peggify()
target.update_body()
target.updatehealth()
target.UpdateDamageIcon()
var/obj/item/stack/sheet/wood/peg = tool
peg.use(1)
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, damaging connectors on [target]'s [affected.display_name]!", \
"\red Your hand slips, damaging connectors on [target]'s [affected.display_name]!")
target.apply_damage(10, BRUTE, affected)
+2 -2
View File
@@ -71,8 +71,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
var/germ_level = user.germ_level
if(user.gloves)
germ_level = user.gloves.germ_level
E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no.
if(!(E.status & (ORGAN_ROBOT|ORGAN_PEG))) //Germs on robotic limbs bad
E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no.
proc/do_surgery(mob/living/M, mob/living/user, obj/item/tool)
if(!istype(M,/mob/living/carbon))