in order to help doctors keep up, since they now need a lot more to heal people, the nanomeds have been stocked with a lot of extra stuff.

12x syringe
10x styptic patch
10x silver sulf patch
4x charcoal bottle
4x epinephrine bottle
4x morphine bottle
4x diphen bottle
3x potassium iodide bottle
5x salglu bottle
3x atropine bottle
6x spaceacillin syringe
10x calomel syringe
10x salbu pill
10x mannitol pill
5x mutadone pill
4x health analyzer
2x crew monitor
CONTRABAND:
all of the same except with 3 bottles of toxin

the two types of wallmed have been combined into one wallmed, which contains all of the above except halved. in instances where the number was odd, the higher of the two numbers was taken.

medical closet has been stocked with a lot of new stuff.
2x beakers
2x droppers
1x medical belt
1x syringe box
1x toxin bottle
2x morphine bottles
3x epi bottles
3x charcoal bottles
1x rxglasses box

this, of course, 3 new pills and 3 new bottles in code so they could be in the nanomed.

gives genetics a bottle of mutadone pills on box and eff3 and puts a public bottle of epinephrine on the medbay desk. adds a single syringe to boxstation's medical storage.

medkits now have some new equipment.

normal
2x styptic patch
2x sulf patch
1x salicyclic pill
1x health analyzer

fire
4x silver sulf patches
1x health analyzer
1x epipen
1x salicyclic pill

toxin is unchanged

oxygen
4x salbu pills
2x epipen
1x health analyzer

all maps and z levels are updated for this.

renames styptic patch to brute patch and silver sulf patch to burn patch. renames charcoal bottle to antitoxin bottle

adds myself to admins.txt
This commit is contained in:
pudl
2015-01-20 22:26:13 -06:00
parent 98ecd7ffdc
commit dd5c7db5ad
102 changed files with 1460 additions and 840 deletions
+4 -6
View File
@@ -1,14 +1,12 @@
/proc/getbrokeninhands()
var/icon/IL = new('icons/mob/items_lefthand.dmi')
var/list/Lstates = IL.IconStates()
var/icon/IR = new('icons/mob/items_righthand.dmi')
var/list/Rstates = IR.IconStates()
var/text
for(var/A in typesof(/obj/item))
var/obj/item/O = new A( locate(1,1,1) )
if(!O) continue
var/icon/IL = new(O.lefthand_file)
var/list/Lstates = IL.IconStates()
var/icon/IR = new(O.righthand_file)
var/list/Rstates = IR.IconStates()
var/icon/J = new(O.icon)
var/list/istates = J.IconStates()
if(!Lstates.Find(O.icon_state) && !Lstates.Find(O.item_state))
+2 -2
View File
@@ -226,9 +226,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
pai.real_name = pai.name
pai.key = choice.key
card.setPersonality(pai)
for(var/datum/paiCandidate/candidate in paiController.pai_candidates)
for(var/datum/paiCandidate/candidate in SSpai.candidates)
if(candidate.key == choice.key)
paiController.pai_candidates.Remove(candidate)
SSpai.candidates.Remove(candidate)
feedback_add_details("admin_verb","MPAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_alienize(var/mob/M in mob_list)
+3
View File
@@ -5,6 +5,9 @@
var/up = 0 // but seperated to allow items to protect but not impair vision, like space helmets
var/visor_flags = 0 // flags that are added/removed when an item is adjusted up/down
var/visor_flags_inv = 0 // same as visor_flags, but for flags_inv
lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing_righthand.dmi'
//Ears: currently only used for headsets and earmuffs
/obj/item/clothing/ears
@@ -83,7 +83,7 @@
phaseanim.master = user
user.ExtinguishMob()
if(user.buckled)
user.buckled.unbuckle()
user.buckled.unbuckle_mob()
user.loc = holder
flick("chronophase", phaseanim)
spawn(7)
+7 -41
View File
@@ -211,7 +211,6 @@
pass_flags = PASSTABLE | PASSGRILLE
var/energy = 0
var/obj/effect/spacevine_controller/master = null
var/mob/living/buckled_mob
var/list/mutations = list()
/obj/effect/spacevine/New()
@@ -285,7 +284,7 @@
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user)) qdel(src)
else
manual_unbuckle(user)
user_unbuckle_mob(user,user)
return
//Plant-b-gone damage is handled in its entry in chemistry-reagents.dm
..()
@@ -298,46 +297,16 @@
/obj/effect/spacevine/attack_hand(mob/user as mob)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_hit(src, user)
manual_unbuckle(user)
user_unbuckle_mob(user, user)
/obj/effect/spacevine/attack_paw(mob/living/user as mob)
user.do_attack_animation(src)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_hit(src, user)
manual_unbuckle(user)
user_unbuckle_mob(user,user)
/obj/effect/spacevine/proc/unbuckle()
if(buckled_mob)
if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt
buckled_mob.buckled = null
buckled_mob.anchored = initial(buckled_mob.anchored)
buckled_mob.update_canmove()
buckled_mob = null
return
/obj/effect/spacevine/proc/manual_unbuckle(mob/user as mob)
if(buckled_mob)
if(prob(50))
if(buckled_mob.buckled == src)
if(buckled_mob != user)
buckled_mob.visible_message(\
"<span class='notice'>[user.name] frees [buckled_mob.name] from the vines.</span>",\
"<span class='notice'>[user.name] frees you from the vines.</span>",\
"<span class='warning'>You hear shredding and ripping.</span>")
else
buckled_mob.visible_message(\
"<span class='notice'>[buckled_mob.name] struggles free of the vines.</span>",\
"<span class='notice'>You untangle the vines from around yourself.</span>",\
"<span class='warning'>You hear shredding and ripping.</span>")
unbuckle()
else
var/text = pick("rip","tear","pull")
user.visible_message(\
"<span class='notice'>[user.name] [text]s at the vines.</span>",\
"<span class='notice'>You [text] at the vines.</span>",\
"<span class='warning'>You hear shredding and ripping.</span>")
return
/obj/effect/spacevine_controller
var/list/obj/effect/spacevine/vines = list()
@@ -446,18 +415,15 @@
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_grow(src)
/obj/effect/spacevine/proc/buckle_mob()
/obj/effect/spacevine/buckle_mob()
if(!buckled_mob && prob(25))
for(var/mob/living/carbon/V in src.loc)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_buckle(src, V)
if((V.stat != DEAD) && (V.buckled != src)) //if mob not dead or captured
V.buckled = src
V.loc = src.loc
V.update_canmove()
src.buckled_mob = V
if((V.stat != DEAD) && (V.buckled != src)) //not dead or captured
V << "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>"
break //only capture one mob at a time.
..(V)
break //only capture one mob at a time
/obj/effect/spacevine/proc/spread()
var/direction = pick(cardinal)
+1 -1
View File
@@ -51,7 +51,7 @@ mob/living/carbon/proc/handle_hallucinations()
halitem.layer = 50
switch(rand(1,6))
if(1) //revolver
halitem.icon = 'icons/obj/gun.dmi'
halitem.icon = 'icons/obj/guns/projectile.dmi'
halitem.icon_state = "revolver"
halitem.name = "Revolver"
if(2) //c4
@@ -78,7 +78,7 @@
if(!t_state)
t_state = r_hand.icon_state
r_hand.screen_loc = ui_rhand
overlays_standing[X_R_HAND_LAYER] = image("icon" = 'icons/mob/items_righthand.dmi', "icon_state" = t_state)
overlays_standing[X_R_HAND_LAYER] = image("icon" = r_hand.righthand_file, "icon_state" = t_state)
else
overlays_standing[X_R_HAND_LAYER] = null
if(update_icons)
@@ -90,7 +90,7 @@
if(!t_state)
t_state = l_hand.icon_state
l_hand.screen_loc = ui_lhand
overlays_standing[X_L_HAND_LAYER] = image("icon" = 'icons/mob/items_lefthand.dmi', "icon_state" = t_state)
overlays_standing[X_L_HAND_LAYER] = image("icon" = l_hand.lefthand_file, "icon_state" = t_state)
else
overlays_standing[X_L_HAND_LAYER] = null
if(update_icons)
+2
View File
@@ -314,6 +314,8 @@
update_inv_wear_mask(0)
else if(I == handcuffed)
handcuffed = null
if(buckled && buckled.buckle_requires_restraints)
buckled.unbuckle_mob()
update_inv_handcuffed(0)
else if(I == legcuffed)
legcuffed = null
@@ -114,7 +114,7 @@ emp_act
var/turf/picked = pick(turfs)
if(!isturf(picked)) return
if(buckled)
buckled.unbuckle()
buckled.unbuckle_mob()
src.loc = picked
return 1
return 0
+1 -4
View File
@@ -21,9 +21,7 @@
/mob/living/carbon/human/treat_message(message)
if(dna)
message = dna.species.handle_speech(message,src)
if (dna.check_mutation(HULK))
message = "[uppertext(replacetext(message, ".", "!"))]!!" //because I don't know how to code properly in getting vars from other files -Bro
message = dna.mutations_say_mods(message)
if(viruses.len)
for(var/datum/disease/pierrot_throat/D in viruses)
@@ -38,7 +36,6 @@
temp_message[H] = "HONK"
pick_list -= H //Make sure that you dont HONK the same word twice
message = list2text(temp_message, " ")
message = ..(message)
return message
@@ -498,15 +498,17 @@
if(H.tinttotal >= TINT_IMPAIR)
if(tinted_weldhelh)
if(H.tinttotal >= TINT_BLIND)
H.eye_blind = max(H.eye_blind, 1) // You get the sudden urge to learn to play keyboard
H.client.screen += global_hud.darkMask
else
H.eye_blind = max(H.eye_blind, 1)
if(H.client)
H.client.screen += global_hud.darkMask
if(H.blind)
if(H.eye_blind) H.blind.layer = 18
else H.blind.layer = 0
if(!H.client)//no client, no screen to update
return 1
if( H.disabilities & NEARSIGHT && !istype(H.glasses, /obj/item/clothing/glasses/regular) )
H.client.screen += global_hud.vimpaired
if(H.eye_blurry) H.client.screen += global_hud.blurry
@@ -539,7 +539,7 @@ Please contact me on #coderbus IRC. ~Carnie x
var/t_state = r_hand.item_state
if(!t_state) t_state = r_hand.icon_state
overlays_standing[R_HAND_LAYER] = image("icon"='icons/mob/items_righthand.dmi', "icon_state"="[t_state]", "layer"=-R_HAND_LAYER)
overlays_standing[R_HAND_LAYER] = image("icon" = r_hand.righthand_file, "icon_state"="[t_state]", "layer"=-R_HAND_LAYER)
apply_overlay(R_HAND_LAYER)
@@ -558,7 +558,7 @@ Please contact me on #coderbus IRC. ~Carnie x
var/t_state = l_hand.item_state
if(!t_state) t_state = l_hand.icon_state
overlays_standing[L_HAND_LAYER] = image("icon"='icons/mob/items_lefthand.dmi', "icon_state"="[t_state]", "layer"=-L_HAND_LAYER)
overlays_standing[L_HAND_LAYER] = image("icon" = l_hand.lefthand_file, "icon_state"="[t_state]", "layer"=-L_HAND_LAYER)
apply_overlay(L_HAND_LAYER)
@@ -61,7 +61,7 @@
var/t_state = r_hand.item_state
if(!t_state) t_state = r_hand.icon_state
overlays -= overlays_standing[M_R_HAND_LAYER]
overlays_standing[M_R_HAND_LAYER] = image("icon" = 'icons/mob/items_righthand.dmi', "icon_state" = t_state, "layer" = -M_R_HAND_LAYER)
overlays_standing[M_R_HAND_LAYER] = image("icon" = r_hand.righthand_file, "icon_state" = t_state, "layer" = -M_R_HAND_LAYER)
overlays += overlays_standing[M_R_HAND_LAYER]
else
overlays -= overlays_standing[M_R_HAND_LAYER]
@@ -80,7 +80,7 @@
var/t_state = l_hand.item_state
if(!t_state) t_state = l_hand.icon_state
overlays -= overlays_standing[M_L_HAND_LAYER]
overlays_standing[M_L_HAND_LAYER] = image("icon" = 'icons/mob/items_lefthand.dmi', "icon_state" = t_state, "layer" = -M_L_HAND_LAYER)
overlays_standing[M_L_HAND_LAYER] = image("icon" = l_hand.lefthand_file, "icon_state" = t_state, "layer" = -M_L_HAND_LAYER)
overlays += overlays_standing[M_L_HAND_LAYER]
else
overlays -= overlays_standing[M_L_HAND_LAYER]
+5 -3
View File
@@ -588,6 +588,8 @@ Sorry Giacom. Please don't be mad :(
if(C.handcuffed)
C.handcuffed.loc = C.loc
C.handcuffed = null
if(C.buckled && C.buckled.buckle_requires_restraints)
C.buckled.unbuckle_mob()
C.update_inv_handcuffed(0)
return
if(C.legcuffed)
@@ -646,13 +648,13 @@ Sorry Giacom. Please don't be mad :(
return
C.visible_message("<span class='danger'>[C] manages to unbuckle themself!</span>", \
"<span class='notice'>You successfully unbuckle yourself.</span>")
C.buckled.manual_unbuckle(C)
C.buckled.user_unbuckle_mob(C,C)
else
C << "<span class='warning'>You fail to unbuckle yourself!</span>"
else
L.buckled.manual_unbuckle(L)
L.buckled.user_unbuckle_mob(L,L)
else
L.buckled.manual_unbuckle(L)
L.buckled.user_unbuckle_mob(L,L)
//Breaking out of a container (Locker, sleeper, cryo...)
else if(loc && istype(loc, /obj) && !isturf(loc))
@@ -1,217 +0,0 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
// Recruiting observers to play as pAIs
var/datum/paiController/paiController // Global handler for pAI candidates
/datum/paiCandidate
var/name
var/key
var/description
var/role
var/comments
var/ready = 0
/datum/paiController
var/list/pai_candidates = list()
var/list/asked = list()
var/askDelay = 10 * 60 * 1 // One minute [ms * sec * min]
/datum/paiController/Topic(href, href_list[])
if(href_list["download"])
var/datum/paiCandidate/candidate = locate(href_list["candidate"])
var/obj/item/device/paicard/card = locate(href_list["device"])
if(card.pai)
return
if(istype(card,/obj/item/device/paicard) && istype(candidate,/datum/paiCandidate))
var/mob/living/silicon/pai/pai = new(card)
if(!candidate.name)
pai.name = pick(ninja_names)
else
pai.name = candidate.name
pai.real_name = pai.name
pai.key = candidate.key
card.setPersonality(pai)
card.looking_for_personality = 0
ticker.mode.update_cult_icons_removed(card.pai.mind)
ticker.mode.update_rev_icons_removed(card.pai.mind)
pai_candidates -= candidate
usr << browse(null, "window=findPai")
if(href_list["new"])
var/datum/paiCandidate/candidate = locate(href_list["candidate"])
var/option = href_list["option"]
var/t = ""
switch(option)
if("name")
t = input("Enter a name for your pAI", "pAI Name", candidate.name) as text
if(t)
candidate.name = copytext(sanitize(t),1,MAX_NAME_LEN)
if("desc")
t = input("Enter a description for your pAI", "pAI Description", candidate.description) as message
if(t)
candidate.description = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if("role")
t = input("Enter a role for your pAI", "pAI Role", candidate.role) as text
if(t)
candidate.role = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if("ooc")
t = input("Enter any OOC comments", "pAI OOC Comments", candidate.comments) as message
if(t)
candidate.comments = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if("save")
candidate.savefile_save(usr)
if("load")
candidate.savefile_load(usr)
//In case people have saved unsanitized stuff.
if(candidate.name)
candidate.name = copytext(sanitize(candidate.name),1,MAX_NAME_LEN)
if(candidate.description)
candidate.description = copytext(sanitize(candidate.description),1,MAX_MESSAGE_LEN)
if(candidate.role)
candidate.role = copytext(sanitize(candidate.role),1,MAX_MESSAGE_LEN)
if(candidate.comments)
candidate.comments = copytext(sanitize(candidate.comments),1,MAX_MESSAGE_LEN)
if("submit")
if(candidate)
candidate.ready = 1
for(var/obj/item/device/paicard/p in world)
if(p.looking_for_personality == 1)
p.alertUpdate()
usr << browse(null, "window=paiRecruit")
return
recruitWindow(usr)
/datum/paiController/proc/recruitWindow(var/mob/M as mob)
var/datum/paiCandidate/candidate
for(var/datum/paiCandidate/c in pai_candidates)
if(c.key == M.key)
candidate = c
if(!candidate)
candidate = new /datum/paiCandidate()
candidate.key = M.key
pai_candidates.Add(candidate)
var/dat = ""
dat += {"
<style type="text/css">
p.top {
background-color: #AAAAAA; color: black;
}
tr.d0 td {
background-color: #CC9999; color: black;
}
tr.d1 td {
background-color: #9999CC; color: black;
}
</style>
"}
dat += "<p class=\"top\">Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!</p>"
dat += "<table>"
dat += "<tr class=\"d0\"><td>Name:</td><td>[candidate.name]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=name;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.</td></tr>"
dat += "<tr class=\"d0\"><td>Description:</td><td>[candidate.description]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=desc;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.</td></tr>"
dat += "<tr class=\"d0\"><td>Preferred Role:</td><td>[candidate.role]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=role;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.</td></tr>"
dat += "<tr class=\"d0\"><td>OOC Comments:</td><td>[candidate.comments]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=ooc;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.</td></tr>"
dat += "</table>"
dat += "<br>"
dat += "<h3><a href='byond://?src=\ref[src];option=submit;new=1;candidate=\ref[candidate]'>Submit Personality</a></h3><br>"
dat += "<a href='byond://?src=\ref[src];option=save;new=1;candidate=\ref[candidate]'>Save Personality</a><br>"
dat += "<a href='byond://?src=\ref[src];option=load;new=1;candidate=\ref[candidate]'>Load Personality</a><br>"
M << browse(dat, "window=paiRecruit")
/datum/paiController/proc/findPAI(var/obj/item/device/paicard/p, var/mob/user)
requestRecruits()
var/list/available = list()
for(var/datum/paiCandidate/c in paiController.pai_candidates)
if(c.ready)
var/found = 0
for(var/mob/dead/observer/o in player_list)
if(o.key == c.key)
found = 1
if(found)
available.Add(c)
var/dat = ""
dat += {"
<style type="text/css">
p.top {
background-color: #AAAAAA; color: black;
}
tr.d0 td {
background-color: #CC9999; color: black;
}
tr.d1 td {
background-color: #9999CC; color: black;
}
tr.d2 td {
background-color: #99CC99; color: black;
}
</style>
"}
dat += "<p class=\"top\">Requesting AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.</p>"
dat += "<table>"
for(var/datum/paiCandidate/c in available)
dat += "<tr class=\"d0\"><td>Name:</td><td>[c.name]</td></tr>"
dat += "<tr class=\"d1\"><td>Description:</td><td>[c.description]</td></tr>"
dat += "<tr class=\"d0\"><td>Preferred Role:</td><td>[c.role]</td></tr>"
dat += "<tr class=\"d1\"><td>OOC Comments:</td><td>[c.comments]</td></tr>"
dat += "<tr class=\"d2\"><td><a href='byond://?src=\ref[src];download=1;candidate=\ref[c];device=\ref[p]'>\[Download [c.name]\]</a></td><td></td></tr>"
dat += "</table>"
user << browse(dat, "window=findPai")
/datum/paiController/proc/requestRecruits()
for(var/mob/dead/observer/O in player_list)
if(jobban_isbanned(O, "pAI"))
continue
if(asked.Find(O.key))
if(world.time < asked[O.key] + askDelay)
continue
else
asked.Remove(O.key)
if(O.client)
var/hasSubmitted = 0
for(var/datum/paiCandidate/c in paiController.pai_candidates)
if(c.key == O.key)
hasSubmitted = 1
if(!hasSubmitted && (O.client.prefs.be_special & BE_PAI))
question(O.client)
/datum/paiController/proc/question(var/client/C)
spawn(0)
if(!C) return
asked.Add(C.key)
asked[C.key] = world.time
var/response = alert(C, "Someone is requesting a pAI personality. Would you like to play as a personal AI?", "pAI Request", "Yes", "No", "Never for this round")
if(!C) return //handle logouts that happen whilst the alert is waiting for a response.
if(response == "Yes")
recruitWindow(C.mob)
else if (response == "Never for this round")
asked[C.key] = INFINITY
@@ -422,7 +422,7 @@
if(!r_state)
r_state = r_hand.icon_state
hands_overlays += image("icon"='icons/mob/items_righthand.dmi', "icon_state"="[r_state]", "layer"=-HANDS_LAYER)
hands_overlays += image("icon" = r_hand.righthand_file, "icon_state"="[r_state]", "layer"=-HANDS_LAYER)
if(client && hud_used)
r_hand.layer = 20
@@ -434,7 +434,7 @@
if(!l_state)
l_state = l_hand.icon_state
hands_overlays += image("icon"='icons/mob/items_lefthand.dmi', "icon_state"="[l_state]", "layer"=-HANDS_LAYER)
hands_overlays += image("icon" = l_hand.lefthand_file, "icon_state"="[l_state]", "layer"=-HANDS_LAYER)
if(client && hud_used)
l_hand.layer = 20
+4 -2
View File
@@ -768,11 +768,12 @@ var/list/slot_equipment_priority = list( \
if(restrained()) return 0
return 1
//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it.
//Robots and brains have their own version so don't worry about them
/mob/proc/update_canmove()
var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH)
var/bed = !(buckled && istype(buckled, /obj/structure/stool/bed/chair))
var/buckle_lying = !(buckled && !buckled.buckle_lying)
if(ko || resting || stunned)
drop_r_hand()
drop_l_hand()
@@ -780,7 +781,7 @@ var/list/slot_equipment_priority = list( \
lying = 0
canmove = 1
if(buckled)
lying = 90 * bed
lying = 90*buckle_lying
else
if((ko || resting) && !lying)
fall(ko)
@@ -793,6 +794,7 @@ var/list/slot_equipment_priority = list( \
regenerate_icons()
return canmove
/mob/proc/fall(var/forced)
drop_l_hand()
drop_r_hand()
+1
View File
@@ -160,3 +160,4 @@
var/atom/movable/remote_control //Calls relaymove() to whatever it is
var/turf/listed_turf = null //the current turf being examined in the stat panel
var/last_movement = 0 // Last world.time the mob actually moved of its own accord.
+1
View File
@@ -199,6 +199,7 @@
step(mob, pick(cardinal))
else
. = ..()
mob.last_movement=world.time
moving = 0
if(mob && .)
@@ -128,7 +128,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "clipboard"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "clipboard"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
if(backbag == 3)
@@ -151,7 +151,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "bluesuit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "briefcase"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "briefcase"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
if(backbag == 3)
@@ -159,7 +159,7 @@
if(CHAPLAIN)
clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "bible"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "bible"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
if(backbag == 3)
@@ -187,7 +187,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "director_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "clipboard"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "clipboard"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
if(backbag == 3)
@@ -212,7 +212,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "firstaid"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "firstaid"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "medicalpack"), ICON_OVERLAY)
if(backbag == 3)
@@ -221,7 +221,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "firstaid"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "firstaid"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "medicalpack"), ICON_OVERLAY)
if(backbag == 3)
@@ -247,7 +247,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "toolbox_blue"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "toolbox_blue"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
if(backbag == 3)
+5 -2
View File
@@ -5,7 +5,7 @@
/obj/item/weapon/gun
name = "gun"
desc = "It's a gun. It's pretty terrible, though."
icon = 'icons/obj/gun.dmi'
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "detective"
item_state = "gun"
flags = CONDUCT
@@ -31,6 +31,9 @@
var/burst_size = 1
var/fire_delay = 0
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
var/obj/item/device/firing_pin/pin = /obj/item/device/firing_pin //standard firing pin for most guns
var/obj/item/device/flashlight/F = null
@@ -46,7 +49,7 @@
/obj/item/weapon/gun/examine(mob/user)
..()
if(pin)
user << "It has a [pin] installed."
user << "It has [pin] installed."
else
user << "It doesn't have a firing pin installed, and won't fire."
+1
View File
@@ -2,6 +2,7 @@
icon_state = "energy"
name = "energy gun"
desc = "A basic energy-based gun."
icon = 'icons/obj/guns/energy.dmi'
var/obj/item/weapon/stock_parts/cell/power_supply //What type of power cell this uses
var/cell_type = /obj/item/weapon/stock_parts/cell
@@ -26,7 +26,7 @@
name = "floral somatoray"
desc = "A tool that discharges controlled radiation which induces mutation in plant cells."
icon_state = "flora"
item_state = "obj/item/gun.dmi"
item_state = "gun"
ammo_type = list(/obj/item/ammo_casing/energy/flora/yield, /obj/item/ammo_casing/energy/flora/mut)
origin_tech = "materials=2;biotech=3;powerstorage=3"
modifystate = 1
@@ -95,6 +95,8 @@
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "pen"
item_state = "pen"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
w_class = 1
+5 -1
View File
@@ -1,7 +1,7 @@
/obj/item/weapon/gun/magic
name = "staff of nothing"
desc = "This staff is boring to watch because even though it came first you've seen everything it can do in other staves for years."
icon = 'icons/obj/gun.dmi'
icon = 'icons/obj/guns/magic.dmi'
icon_state = "staffofnothing"
item_state = "staff"
fire_sound = 'sound/weapons/emitter.ogg'
@@ -17,6 +17,10 @@
origin_tech = null
clumsy_check = 0
trigger_guard = 0
pin = /obj/item/device/firing_pin/magic
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
/obj/item/weapon/gun/magic/afterattack(atom/target as mob, mob/living/user as mob, flag)
newshot()
+1 -1
View File
@@ -135,7 +135,7 @@
/obj/item/weapon/suppressor
name = "suppressor"
desc = "A universal syndicate small-arms suppressor for maximum espionage."
icon = 'icons/obj/gun.dmi'
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "suppressor"
w_class = 2
var/oldsound = null
@@ -234,4 +234,4 @@
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
can_suppress = 0
burst_size = 4
fire_delay = 1
fire_delay = 1
+3
View File
@@ -37,6 +37,9 @@
return 1
return 0
/obj/item/device/firing_pin/magic
name = "magic crystal shard"
desc = "A small enchanted shard which allows magical weapons to fire."
/obj/item/device/firing_pin/implant
name = "implant-keyed firing pin"
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/item/weapon/gun/grenadelauncher
name = "grenade launcher"
desc = "a terrible, terrible thing. it's really awful!"
icon = 'icons/obj/gun.dmi'
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "riotgun"
item_state = "riotgun"
w_class = 4.0
@@ -63,7 +63,7 @@
spawned_amount = 15
/obj/item/weapon/reagent_containers/glass/bottle/charcoal
name = "charcoal bottle"
name = "anti-toxin bottle"
desc = "A small bottle of charcoal."
icon_state = "bottle17"
spawned_reagent = "charcoal"
@@ -260,3 +260,28 @@
desc = "A small bottle. Contains a sample of invasive Apidae."
icon_state = "bottle3"
spawned_disease = /datum/disease/beesease
/obj/item/weapon/reagent_containers/glass/bottle/diphenhydramine
name = "antihistamine bottle"
desc = "A small bottle of diphenhydramine."
icon_state = "bottle20"
spawned_reagent = "diphenhydramine"
/obj/item/weapon/reagent_containers/glass/bottle/potass_iodide
name = "anti-radiation bottle"
desc = "A small bottle of potassium iodide."
icon_state = "bottle11"
spawned_reagent = "potass_iodide"
/obj/item/weapon/reagent_containers/glass/bottle/salglu_solution
name = "saline-glucose solution bottle"
desc = "A small bottle of saline-glucose solution."
icon_state = "bottle1"
spawned_reagent = "salglu_solution"
/obj/item/weapon/reagent_containers/glass/bottle/atropine
name = "atropine bottle"
desc = "A small bottle of atropine."
icon_state = "bottle12"
spawned_reagent = "atropine"
@@ -22,7 +22,7 @@
return 1 // Masks were stopping people from "eating" patches. Thanks, inheritance.
/obj/item/weapon/reagent_containers/pill/patch/styptic
name = "styptic powder patch"
name = "brute patch"
desc = "Helps with brute injuries."
/obj/item/weapon/reagent_containers/pill/patch/styptic/New()
@@ -30,7 +30,7 @@
reagents.add_reagent("styptic_powder", 50)
/obj/item/weapon/reagent_containers/pill/patch/silver_sulf
name = "silver sulfadiazine patch"
name = "burn patch"
desc = "Helps with burn injuries."
/obj/item/weapon/reagent_containers/pill/patch/silver_sulf/New()
@@ -146,8 +146,35 @@
/obj/item/weapon/reagent_containers/pill/epinephrine
name = "epinephrine pill"
desc = "Used to stabilize patients."
icon_state = "pill17"
icon_state = "pill5"
/obj/item/weapon/reagent_containers/pill/epinephrine/New()
..()
reagents.add_reagent("epinephrine", 50)
reagents.add_reagent("epinephrine", 50)
/obj/item/weapon/reagent_containers/pill/mannitol
name = "mannitol pill"
desc = "Used to treat brain damage."
icon_state = "pill17"
/obj/item/weapon/reagent_containers/pill/mannitol/New()
..()
reagents.add_reagent("mannitol", 50)
/obj/item/weapon/reagent_containers/pill/mutadone
name = "mutadone pill"
desc = "Used to treat genetic damage."
icon_state = "pill20"
/obj/item/weapon/reagent_containers/pill/mutadone/New()
..()
reagents.add_reagent("mutadone", 50)
/obj/item/weapon/reagent_containers/pill/salicyclic
name = "salicyclic acid pill"
desc = "Used to dull pain."
icon_state = "pill5"
/obj/item/weapon/reagent_containers/pill/salicyclic/New()
..()
reagents.add_reagent("sac_acid", 50)
@@ -143,7 +143,7 @@
/obj/item/weapon/reagent_containers/spray/chemsprayer
name = "chem sprayer"
desc = "A utility used to spray large amounts of reagents in a given area."
icon = 'icons/obj/gun.dmi'
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "chemsprayer"
item_state = "chemsprayer"
throwforce = 0
@@ -267,6 +267,14 @@
mode = SYRINGE_INJECT
update_icon()
/obj/item/weapon/reagent_containers/syringe/calomel
name = "syringe (calomel)"
desc = "Contains calomel."
New()
..()
reagents.add_reagent("calomel", 15)
mode = SYRINGE_INJECT
update_icon()
//Robot syringes
//Not special in any way, code wise. They don't have added variables or procs.
+1 -1
View File
@@ -154,4 +154,4 @@
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
user << "<span class = 'caution'> You emag the RCS. Click on it to toggle between modes.</span>"
user << "<span class = 'caution'> You emag the RCS. Click on it to toggle between modes.</span>"