Removes All Weapons

This commit is contained in:
Fox McCloud
2018-04-15 16:25:56 -04:00
parent 8b576c4d42
commit 5c4aa9b3fd
1100 changed files with 17642 additions and 17666 deletions
+2 -2
View File
@@ -70,7 +70,7 @@
if(O.status_flags & PASSEMOTES)
for(var/obj/item/weapon/holder/H in O.contents)
for(var/obj/item/holder/H in O.contents)
H.show_message(message, m_type)
for(var/mob/living/M in O.contents)
@@ -85,7 +85,7 @@
if(O.status_flags & PASSEMOTES)
for(var/obj/item/weapon/holder/H in O.contents)
for(var/obj/item/holder/H in O.contents)
H.show_message(message, m_type)
for(var/mob/living/M in O.contents)
+1 -1
View File
@@ -159,7 +159,7 @@
message = "<B>[src]</B> [verb]."
if(src.status_flags & PASSEMOTES)
for(var/obj/item/weapon/holder/H in src.contents)
for(var/obj/item/holder/H in src.contents)
H.show_message(message)
for(var/mob/living/M in src.contents)
M.show_message(message)
+17 -17
View File
@@ -1,19 +1,19 @@
//Helper object for picking dionaea (and other creatures) up.
/obj/item/weapon/holder
/obj/item/holder
name = "holder"
desc = "You shouldn't ever see this."
icon = 'icons/obj/objects.dmi'
slot_flags = SLOT_HEAD
/obj/item/weapon/holder/New()
/obj/item/holder/New()
..()
processing_objects.Add(src)
/obj/item/weapon/holder/Destroy()
/obj/item/holder/Destroy()
processing_objects.Remove(src)
return ..()
/obj/item/weapon/holder/process()
/obj/item/holder/process()
if(istype(loc,/turf) || !(contents.len))
@@ -26,23 +26,23 @@
qdel(src)
/obj/item/weapon/holder/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/holder/attackby(obj/item/W as obj, mob/user as mob, params)
for(var/mob/M in src.contents)
M.attackby(W,user, params)
/obj/item/weapon/holder/proc/show_message(var/message, var/m_type)
/obj/item/holder/proc/show_message(var/message, var/m_type)
for(var/mob/living/M in contents)
M.show_message(message,m_type)
/obj/item/weapon/holder/emp_act(var/intensity)
/obj/item/holder/emp_act(var/intensity)
for(var/mob/living/M in contents)
M.emp_act(intensity)
/obj/item/weapon/holder/ex_act(var/intensity)
/obj/item/holder/ex_act(var/intensity)
for(var/mob/living/M in contents)
M.ex_act(intensity)
/obj/item/weapon/holder/container_resist(var/mob/living/L)
/obj/item/holder/container_resist(var/mob/living/L)
var/mob/M = src.loc //Get our mob holder (if any).
if(istype(M))
@@ -55,7 +55,7 @@
if(istype(M))
for(var/atom/A in M.contents)
if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/holder))
return
M.status_flags &= ~PASSEMOTES
@@ -67,10 +67,10 @@
/mob/living/proc/get_scooped(var/mob/living/carbon/grabber)
if(!holder_type) return
var/obj/item/weapon/holder/H = new holder_type(loc)
var/obj/item/holder/H = new holder_type(loc)
src.forceMove(H)
H.name = name
if(istype(H, /obj/item/weapon/holder/mouse)) H.icon_state = icon_state
if(istype(H, /obj/item/holder/mouse)) H.icon_state = icon_state
if(desc) H.desc = desc
H.attack_hand(grabber)
@@ -81,26 +81,26 @@
//Mob specific holders.
/obj/item/weapon/holder/diona
/obj/item/holder/diona
name = "diona nymph"
desc = "It's a tiny plant critter."
icon_state = "nymph"
/obj/item/weapon/holder/drone
/obj/item/holder/drone
name = "maintenance drone"
desc = "It's a small maintenance robot."
icon_state = "drone"
/obj/item/weapon/holder/drone/emagged
/obj/item/holder/drone/emagged
name = "maintenance drone"
icon_state = "drone-emagged"
/obj/item/weapon/holder/pai
/obj/item/holder/pai
name = "pAI"
desc = "It's a little robot."
icon_state = "pai"
/obj/item/weapon/holder/mouse
/obj/item/holder/mouse
name = "mouse"
desc = "It's a small, disease-ridden rodent."
icon = 'icons/mob/animal.dmi'
+1 -1
View File
@@ -191,7 +191,7 @@
M.s_active.handle_item_insertion(src)
return 1
var/obj/item/weapon/storage/S = M.get_inactive_hand()
var/obj/item/storage/S = M.get_inactive_hand()
if(istype(S) && S.can_be_inserted(src, 1)) //see if we have box in other hand
S.handle_item_insertion(src)
return 1
@@ -15,7 +15,7 @@
nightvision = 1
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/obj/item/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/has_fine_manipulation = 0
var/move_delay_add = 0 // movement delay to add
@@ -199,11 +199,11 @@
//Lasertag bullshit
if(lasercolor)
if(lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve
if((istype(r_hand,/obj/item/weapon/gun/energy/laser/redtag)) || (istype(l_hand,/obj/item/weapon/gun/energy/laser/redtag)))
if((istype(r_hand,/obj/item/gun/energy/laser/redtag)) || (istype(l_hand,/obj/item/gun/energy/laser/redtag)))
threatcount += 4
if(lasercolor == "r")
if((istype(r_hand,/obj/item/weapon/gun/energy/laser/bluetag)) || (istype(l_hand,/obj/item/weapon/gun/energy/laser/bluetag)))
if((istype(r_hand,/obj/item/gun/energy/laser/bluetag)) || (istype(l_hand,/obj/item/gun/energy/laser/bluetag)))
threatcount += 4
return threatcount
@@ -2,9 +2,9 @@
name = "alien"
icon_state = "alien_s"
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/xenomeat = 5, /obj/item/stack/sheet/animalhide/xeno = 1)
var/obj/item/weapon/r_store = null
var/obj/item/weapon/l_store = null
butcher_results = list(/obj/item/reagent_containers/food/snacks/xenomeat = 5, /obj/item/stack/sheet/animalhide/xeno = 1)
var/obj/item/r_store = null
var/obj/item/l_store = null
var/caste = ""
var/alt_icon = 'icons/mob/alienleap.dmi' //used to switch between the two alien icon files.
var/next_attack = 0
+1 -1
View File
@@ -158,7 +158,7 @@
/obj/item/device/mmi/relaymove(var/mob/user, var/direction)
if(user.stat || user.stunned)
return
var/obj/item/weapon/rig/rig = src.get_rig()
var/obj/item/rig/rig = src.get_rig()
if(rig)
rig.forced_move(direction, user)
+19 -19
View File
@@ -1,5 +1,5 @@
/mob/living
var/canEnterVentWith = "/obj/item/weapon/implant=0&/obj/item/clothing/mask/facehugger=0&/obj/item/device/radio/borg=0&/obj/machinery/camera=0"
var/canEnterVentWith = "/obj/item/implant=0&/obj/item/clothing/mask/facehugger=0&/obj/item/device/radio/borg=0&/obj/machinery/camera=0"
var/datum/middleClickOverride/middleClickOverride = null
/mob/living/carbon/Destroy()
@@ -174,7 +174,7 @@
/mob/living/carbon/swap_hand()
var/obj/item/item_in_hand = src.get_active_hand()
if(item_in_hand) //this segment checks if the item in your hand is twohanded.
if(istype(item_in_hand,/obj/item/weapon/twohanded))
if(istype(item_in_hand,/obj/item/twohanded))
if(item_in_hand:wielded == 1)
to_chat(usr, "<span class='warning'>Your other hand is too busy holding the [item_in_hand.name]</span>")
return
@@ -440,7 +440,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(iscarbon(src) && contents.len && ventcrawlerlocal < 2)//It must have atleast been 1 to get this far
for(var/obj/item/I in contents)
var/failed = 0
if(istype(I, /obj/item/weapon/implant))
if(istype(I, /obj/item/implant))
continue
if(istype(I, /obj/item/organ))
continue
@@ -551,8 +551,8 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
throw_mode_off()
var/atom/movable/thrown_thing
if(istype(I, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = I
if(istype(I, /obj/item/grab))
var/obj/item/grab/G = I
var/mob/throwable_mob = G.get_mob_if_throwable() //throw the person instead of the grab
qdel(G) //We delete the grab.
if(throwable_mob)
@@ -619,7 +619,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
<tr><td>&nbsp;</td></tr>"}
dat += "<tr><td><B>Back:</B></td><td><A href='?src=[UID()];item=[slot_back]'>[(back && !(back.flags&ABSTRACT)) ? back : "<font color=grey>Empty</font>"]</A>"
if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank))
if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank))
dat += "&nbsp;<A href='?src=[UID()];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr><tr><td>&nbsp;</td></tr>"
@@ -655,7 +655,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(href_list["internal"])
var/slot = text2num(href_list["internal"])
var/obj/item/ITEM = get_item_by_slot(slot)
if(ITEM && istype(ITEM, /obj/item/weapon/tank))
if(ITEM && istype(ITEM, /obj/item/tank))
visible_message("<span class='danger'>[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM].</span>", \
"<span class='userdanger'>[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM].</span>")
@@ -863,8 +863,8 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(handcuffed)
//we don't want problems with nodrop shit if there ever is more than one nodrop twohanded
var/obj/item/I = get_active_hand()
if(istype(I, /obj/item/weapon/twohanded))
var/obj/item/weapon/twohanded/TH = I //FML
if(istype(I, /obj/item/twohanded))
var/obj/item/twohanded/TH = I //FML
if(TH.wielded)
TH.unwield()
drop_r_hand()
@@ -908,7 +908,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
/mob/living/carbon/proc/uncuff()
if(handcuffed)
var/obj/item/weapon/W = handcuffed
var/obj/item/W = handcuffed
handcuffed = null
if(buckled && buckled.buckle_requires_restraints)
buckled.unbuckle_mob()
@@ -922,7 +922,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
W.layer = initial(W.layer)
W.plane = initial(W.plane)
if(legcuffed)
var/obj/item/weapon/W = legcuffed
var/obj/item/W = legcuffed
legcuffed = null
update_inv_legcuffed()
if(client)
@@ -959,15 +959,15 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
/mob/living/carbon/proc/can_eat(flags = 255)
return 1
/mob/living/carbon/proc/eat(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, var/bitesize_override)
/mob/living/carbon/proc/eat(var/obj/item/reagent_containers/food/toEat, mob/user, var/bitesize_override)
if(!istype(toEat))
return 0
var/fullness = nutrition + 10
if(istype(toEat, /obj/item/weapon/reagent_containers/food/snacks))
if(istype(toEat, /obj/item/reagent_containers/food/snacks))
for(var/datum/reagent/consumable/C in reagents.reagent_list) //we add the nutrition value of what we're currently digesting
fullness += C.nutriment_factor * C.volume / (C.metabolization_rate * metabolism_efficiency * digestion_ratio)
if(user == src)
if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks))
if(istype(toEat, /obj/item/reagent_containers/food/drinks))
if(!selfDrink(toEat))
return 0
else
@@ -980,7 +980,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
score_foodeaten++
return 1
/mob/living/carbon/proc/selfFeed(var/obj/item/weapon/reagent_containers/food/toEat, fullness)
/mob/living/carbon/proc/selfFeed(var/obj/item/reagent_containers/food/toEat, fullness)
if(ispill(toEat))
to_chat(src, "<span class='notify'>You [toEat.apply_method] [toEat].</span>")
else
@@ -1000,10 +1000,10 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
return 0
return 1
/mob/living/carbon/proc/selfDrink(var/obj/item/weapon/reagent_containers/food/drinks/toDrink, mob/user)
/mob/living/carbon/proc/selfDrink(var/obj/item/reagent_containers/food/drinks/toDrink, mob/user)
return 1
/mob/living/carbon/proc/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness)
/mob/living/carbon/proc/forceFed(var/obj/item/reagent_containers/food/toEat, mob/user, fullness)
if(ispill(toEat) || fullness <= (600 * (1 + overeatduration / 1000)))
if(!toEat.instant_application)
visible_message("<span class='warning'>[user] attempts to force [src] to [toEat.apply_method] [toEat].</span>")
@@ -1017,7 +1017,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
visible_message("<span class='warning'>[user] forces [src] to [toEat.apply_method] [toEat].</span>")
return 1
/mob/living/carbon/proc/forceFedAttackLog(var/obj/item/weapon/reagent_containers/food/toEat, mob/user)
/mob/living/carbon/proc/forceFedAttackLog(var/obj/item/reagent_containers/food/toEat, mob/user)
create_attack_log("<font color='orange'>Has been fed [toEat.name] by [user.name] ([user.ckey]) Reagents: [toEat.reagentlist(toEat)]</font>")
user.create_attack_log("<font color='red'>Fed [toEat.name] to [name] ([ckey]) Reagents: [toEat.reagentlist(toEat)]</font>")
log_attack("[user.name] ([user.ckey]) fed [name] ([ckey]) with [toEat.name] Reagents: [toEat.reagentlist(toEat)] (INTENT: [uppertext(user.a_intent)])")
@@ -1029,7 +1029,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
/*TO DO - If/when stomach organs are introduced, override this at the human level sending the item to the stomach
so that different stomachs can handle things in different ways VB*/
/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat, var/bitesize_override, var/taste = TRUE)
/mob/living/carbon/proc/consume(var/obj/item/reagent_containers/food/toEat, var/bitesize_override, var/taste = TRUE)
var/this_bite = bitesize_override ? bitesize_override : toEat.bitesize
if(!toEat.reagents)
return
@@ -14,7 +14,7 @@
muzzled = 1
//var/m_type = 1
for(var/obj/item/weapon/implant/I in src)
for(var/obj/item/implant/I in src)
if(I.implanted)
I.trigger(act, src)
@@ -336,8 +336,8 @@
if(lying || weakened)
message = "<B>[src]</B> flops and flails around on the floor."
else
var/obj/item/weapon/grab/G
if(istype(get_active_hand(), /obj/item/weapon/grab))
var/obj/item/grab/G
if(istype(get_active_hand(), /obj/item/grab))
G = get_active_hand()
if(G && G.affecting)
if(buckled || G.affecting.buckled)
@@ -804,7 +804,7 @@
if(reagents.has_reagent("simethicone"))
return
// playsound(loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun
if(locate(/obj/item/weapon/storage/bible) in get_turf(src))
if(locate(/obj/item/storage/bible) in get_turf(src))
to_chat(viewers(src), "<span class='warning'><b>[src] farts on the Bible!</b></span>")
var/image/cross = image('icons/obj/storage.dmi',"bible")
var/adminbfmessage = "\blue [bicon(cross)] <b><font color=red>Bible Fart: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=[UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b>"
@@ -143,9 +143,9 @@
//handcuffed?
if(handcuffed)
if(istype(handcuffed, /obj/item/weapon/restraints/handcuffs/cable/zipties))
if(istype(handcuffed, /obj/item/restraints/handcuffs/cable/zipties))
msg += "<span class='warning'>[t_He] [t_is] [bicon(handcuffed)] restrained with zipties!</span>\n"
else if(istype(handcuffed, /obj/item/weapon/restraints/handcuffs/cable))
else if(istype(handcuffed, /obj/item/restraints/handcuffs/cable))
msg += "<span class='warning'>[t_He] [t_is] [bicon(handcuffed)] restrained with cable!</span>\n"
else
msg += "<span class='warning'>[t_He] [t_is] [bicon(handcuffed)] handcuffed!</span>\n"
@@ -381,7 +381,7 @@
var/criminal = "None"
if(wear_id)
var/obj/item/weapon/card/id/I = wear_id.GetID()
var/obj/item/card/id/I = wear_id.GetID()
if(I)
perpname = I.registered_name
else
@@ -404,7 +404,7 @@
var/medical = "None"
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
+39 -39
View File
@@ -8,7 +8,7 @@
//why are these here and not in human_defines.dm
//var/list/hud_list[10]
var/datum/species/species //Contains icon generation and language information, set during New().
var/obj/item/weapon/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call.
var/obj/item/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call.
/mob/living/carbon/human/New(var/new_loc, var/new_species = null, var/delay_ready_dna = 0)
@@ -166,8 +166,8 @@
stat("Tank Pressure", internal.air_contents.return_pressure())
stat("Distribution Pressure", internal.distribute_pressure)
if(istype(back, /obj/item/weapon/rig))
var/obj/item/weapon/rig/suit = back
if(istype(back, /obj/item/rig))
var/obj/item/rig/suit = back
var/cell_status = "ERROR"
if(suit.cell)
cell_status = "[suit.cell.charge]/[suit.cell.maxcharge]"
@@ -434,7 +434,7 @@
<tr><td>&nbsp;</td></tr>"}
dat += "<tr><td><B>Back:</B></td><td><A href='?src=[UID()];item=[slot_back]'>[(back && !(back.flags&ABSTRACT)) ? back : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(back, /obj/item/weapon/tank))
if(has_breathable_mask && istype(back, /obj/item/tank))
dat += "&nbsp;<A href='?src=[UID()];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr><tr><td>&nbsp;</td></tr>"
@@ -485,7 +485,7 @@
dat += "<tr><td><B>Exosuit:</B></td><td><A href='?src=[UID()];item=[slot_wear_suit]'>[(wear_suit && !(wear_suit.flags&ABSTRACT)) ? wear_suit : "<font color=grey>Empty</font>"]</A></td></tr>"
if(wear_suit)
dat += "<tr><td>&nbsp;&#8627;<B>Suit Storage:</B></td><td><A href='?src=[UID()];item=[slot_s_store]'>[(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(s_store, /obj/item/weapon/tank))
if(has_breathable_mask && istype(s_store, /obj/item/tank))
dat += "&nbsp;<A href='?src=[UID()];internal=[slot_s_store]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr>"
else
@@ -514,7 +514,7 @@
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>PDA:</B></font></td></tr>"
else
dat += "<tr><td>&nbsp;&#8627;<B>Belt:</B></td><td><A href='?src=[UID()];item=[slot_belt]'>[(belt && !(belt.flags&ABSTRACT)) ? belt : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(belt, /obj/item/weapon/tank))
if(has_breathable_mask && istype(belt, /obj/item/tank))
dat += "&nbsp;<A href='?src=[UID()];internal=[slot_belt]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr>"
dat += "<tr><td>&nbsp;&#8627;<B>Pockets:</B></td><td><A href='?src=[UID()];pockets=left'>[(l_store && !(l_store.flags&ABSTRACT)) ? "Left (Full)" : "<font color=grey>Left (Empty)</font>"]</A>"
@@ -558,7 +558,7 @@
else
return pda.ownrank
else
var/obj/item/weapon/card/id/id = get_idcard()
var/obj/item/card/id/id = get_idcard()
if(id)
return id.rank ? id.rank : if_no_job
else
@@ -568,9 +568,9 @@
//Useful when player do something with computers
/mob/living/carbon/human/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job")
var/obj/item/device/pda/pda = wear_id
var/obj/item/weapon/card/id/id = wear_id
var/obj/item/card/id/id = wear_id
if(istype(pda))
if(pda.id && istype(pda.id, /obj/item/weapon/card/id))
if(pda.id && istype(pda.id, /obj/item/card/id))
. = pda.id.assignment
else
. = pda.ownjob
@@ -586,7 +586,7 @@
//Useful when player do something with computers
/mob/living/carbon/human/proc/get_authentification_name(var/if_no_id = "Unknown")
var/obj/item/device/pda/pda = wear_id
var/obj/item/weapon/card/id/id = wear_id
var/obj/item/card/id/id = wear_id
if(istype(pda))
if(pda.id)
. = pda.id.registered_name
@@ -623,7 +623,7 @@
//Useful when player is being seen by other mobs
/mob/living/carbon/human/proc/get_id_name(var/if_no_id = "Unknown")
var/obj/item/device/pda/pda = wear_id
var/obj/item/weapon/card/id/id = wear_id
var/obj/item/card/id/id = wear_id
if(istype(pda)) . = pda.owner
else if(istype(id)) . = id.registered_name
if(!.) . = if_no_id //to prevent null-names making the mob unclickable
@@ -631,15 +631,15 @@
//gets ID card object from special clothes slot or, if applicable, hands as well
/mob/living/carbon/human/proc/get_idcard(var/check_hands = FALSE)
var/obj/item/weapon/card/id/id = wear_id
var/obj/item/card/id/id = wear_id
var/obj/item/device/pda/pda = wear_id
if(istype(pda) && pda.id)
id = pda.id
if(check_hands)
if(istype(get_active_hand(), /obj/item/weapon/card/id))
if(istype(get_active_hand(), /obj/item/card/id))
id = get_active_hand()
else if(istype(get_inactive_hand(), /obj/item/weapon/card/id))
else if(istype(get_inactive_hand(), /obj/item/card/id))
id = get_inactive_hand()
if(istype(id))
@@ -807,7 +807,7 @@
var/found_record = 0
var/perpname = "wot"
if(wear_id)
var/obj/item/weapon/card/id/I = wear_id.GetID()
var/obj/item/card/id/I = wear_id.GetID()
if(I)
perpname = I.registered_name
else
@@ -857,7 +857,7 @@
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
@@ -887,7 +887,7 @@
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
@@ -914,7 +914,7 @@
if(hasHUD(usr,"security"))
var/perpname = "wot"
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
@@ -945,7 +945,7 @@
var/modified = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
@@ -978,7 +978,7 @@
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
@@ -1009,7 +1009,7 @@
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
@@ -1036,7 +1036,7 @@
if(hasHUD(usr,"medical"))
var/perpname = "wot"
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
if(istype(wear_id,/obj/item/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
@@ -1110,8 +1110,8 @@
tinted += MT.tint
//god help me
if(istype(back, /obj/item/weapon/rig))
var/obj/item/weapon/rig/O = back
if(istype(back, /obj/item/rig))
var/obj/item/rig/O = back
if(O.helmet && O.helmet == head && (O.helmet.body_parts_covered & HEAD))
if((O.offline && O.offline_vision_restriction == 1) || (!O.offline && O.vision_restriction == 1))
tinted = 2
@@ -1658,7 +1658,7 @@
src.visible_message("<span class='warning'><b>\The [src]</b> seizes [T] aggressively!</span>")
var/obj/item/weapon/grab/G = new(src,T)
var/obj/item/grab/G = new(src,T)
if(use_hand == "left")
l_hand = G
else
@@ -1715,7 +1715,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
to_chat(src, "<span class='warning'>You cannot do that in your current state.</span>")
return
var/obj/item/weapon/grab/G = locate() in src
var/obj/item/grab/G = locate() in src
if(!G || !istype(G))
to_chat(src, "<span class='warning'>You are not grabbing anyone.</span>")
return
@@ -1751,23 +1751,23 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve
if(istype(wear_suit, /obj/item/clothing/suit/redtag))
threatcount += 4
if((istype(r_hand,/obj/item/weapon/gun/energy/laser/redtag)) || (istype(l_hand,/obj/item/weapon/gun/energy/laser/redtag)))
if((istype(r_hand,/obj/item/gun/energy/laser/redtag)) || (istype(l_hand,/obj/item/gun/energy/laser/redtag)))
threatcount += 4
if(istype(belt, /obj/item/weapon/gun/energy/laser/redtag))
if(istype(belt, /obj/item/gun/energy/laser/redtag))
threatcount += 2
if(lasercolor == "r")
if(istype(wear_suit, /obj/item/clothing/suit/bluetag))
threatcount += 4
if((istype(r_hand,/obj/item/weapon/gun/energy/laser/bluetag)) || (istype(l_hand,/obj/item/weapon/gun/energy/laser/bluetag)))
if((istype(r_hand,/obj/item/gun/energy/laser/bluetag)) || (istype(l_hand,/obj/item/gun/energy/laser/bluetag)))
threatcount += 4
if(istype(belt, /obj/item/weapon/gun/energy/laser/bluetag))
if(istype(belt, /obj/item/gun/energy/laser/bluetag))
threatcount += 2
return threatcount
//Check for ID
var/obj/item/weapon/card/id/idcard = get_idcard()
var/obj/item/card/id/idcard = get_idcard()
if(judgebot.idcheck && !idcard)
threatcount += 4
@@ -1806,7 +1806,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
threatcount -= 1
//Agent cards lower threatlevel.
if(istype(idcard, /obj/item/weapon/card/id/syndicate))
if(istype(idcard, /obj/item/card/id/syndicate))
threatcount -= 5
return threatcount
@@ -1882,20 +1882,20 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/can_eat(flags = 255)
return species && (species.dietflags & flags)
/mob/living/carbon/human/selfFeed(var/obj/item/weapon/reagent_containers/food/toEat, fullness)
/mob/living/carbon/human/selfFeed(var/obj/item/reagent_containers/food/toEat, fullness)
if(!check_has_mouth())
to_chat(src, "Where do you intend to put \the [toEat]? You don't have a mouth!")
return 0
return ..()
/mob/living/carbon/human/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness)
/mob/living/carbon/human/forceFed(var/obj/item/reagent_containers/food/toEat, mob/user, fullness)
if(!check_has_mouth())
if(!((istype(toEat, /obj/item/weapon/reagent_containers/food/drinks) && (get_species() == "Machine"))))
if(!((istype(toEat, /obj/item/reagent_containers/food/drinks) && (get_species() == "Machine"))))
to_chat(user, "Where do you intend to put \the [toEat]? \The [src] doesn't have a mouth!")
return 0
return ..()
/mob/living/carbon/human/selfDrink(var/obj/item/weapon/reagent_containers/food/drinks/toDrink)
/mob/living/carbon/human/selfDrink(var/obj/item/reagent_containers/food/drinks/toDrink)
if(!check_has_mouth())
if(!get_species() == "Machine")
to_chat(src, "Where do you intend to put \the [src]? You don't have a mouth!")
@@ -1908,13 +1908,13 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/can_track(mob/living/user)
if(wear_id)
var/obj/item/weapon/card/id/id = wear_id
var/obj/item/card/id/id = wear_id
if(istype(id) && id.is_untrackable())
return 0
if(wear_pda)
var/obj/item/device/pda/pda = wear_pda
if(istype(pda))
var/obj/item/weapon/card/id/id = pda.id
var/obj/item/card/id/id = pda.id
if(istype(id) && id.is_untrackable())
return 0
if(istype(head, /obj/item/clothing/head))
@@ -1943,7 +1943,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/is_mechanical()
return ..() || (species.bodyflags & ALL_RPARTS) != 0
/mob/living/carbon/human/can_use_guns(var/obj/item/weapon/gun/G)
/mob/living/carbon/human/can_use_guns(var/obj/item/gun/G)
. = ..()
if(G.trigger_guard == TRIGGER_GUARD_NORMAL)
@@ -202,15 +202,15 @@
stop_pulling()
//BubbleWrap: Disarming also breaks a grab - this will also stop someone being choked, won't it?
if(istype(l_hand, /obj/item/weapon/grab))
var/obj/item/weapon/grab/lgrab = l_hand
if(istype(l_hand, /obj/item/grab))
var/obj/item/grab/lgrab = l_hand
if(lgrab.affecting)
visible_message("<span class='danger'>[M] has broken [src]'s grip on [lgrab.affecting]!</span>")
talked = 1
spawn(1)
qdel(lgrab)
if(istype(r_hand, /obj/item/weapon/grab))
var/obj/item/weapon/grab/rgrab = r_hand
if(istype(r_hand, /obj/item/grab))
var/obj/item/grab/rgrab = r_hand
if(rgrab.affecting)
visible_message("<span class='danger'>[M] has broken [src]'s grip on [rgrab.affecting]!</span>")
talked = 1
@@ -180,8 +180,8 @@ emp_act
if(!I || !user)
return 0
if((istype(I, /obj/item/weapon/kitchen/knife/butcher/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && stat == DEAD && user.a_intent == INTENT_HARM)
var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/weapon/reagent_containers/food/snacks/meat/human(get_turf(loc))
if((istype(I, /obj/item/kitchen/knife/butcher/meatcleaver) || istype(I, /obj/item/twohanded/chainsaw)) && stat == DEAD && user.a_intent == INTENT_HARM)
var/obj/item/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/reagent_containers/food/snacks/meat/human(get_turf(loc))
newmeat.name = real_name + newmeat.name
newmeat.subjectname = real_name
newmeat.subjectjob = job
@@ -212,7 +212,7 @@ emp_act
if(check_shields(I.force, "the [I.name]", I, MELEE_ATTACK, I.armour_penetration))
return 0
if(istype(I,/obj/item/weapon/card/emag))
if(istype(I,/obj/item/card/emag))
emag_act(user, affecting)
send_item_attack_message(I, user, hit_area)
@@ -10,11 +10,11 @@
return 1
//Do we have a working jetpack?
var/obj/item/weapon/tank/jetpack/thrust
if(istype(back,/obj/item/weapon/tank/jetpack))
var/obj/item/tank/jetpack/thrust
if(istype(back,/obj/item/tank/jetpack))
thrust = back
else if(istype(back,/obj/item/weapon/rig))
var/obj/item/weapon/rig/rig = back
else if(istype(back,/obj/item/rig))
var/obj/item/rig/rig = back
for(var/obj/item/rig_module/maneuvering_jets/module in rig.installed_modules)
thrust = module.jets
break
@@ -93,7 +93,7 @@
inactivity_period = 0
custom_emote(1, "[src]'s chest closes, hiding their insides.")
if(SNPC_PSYCHO)
var/choice = pick(typesof(/obj/item/weapon/grenade/chem_grenade) - /obj/item/weapon/grenade/chem_grenade)
var/choice = pick(typesof(/obj/item/grenade/chem_grenade) - /obj/item/grenade/chem_grenade)
new choice(src)
@@ -109,13 +109,13 @@
var/list/allContents = getAllContents()
var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/internalBeaker = locate(/obj/item/weapon/reagent_containers/glass/beaker/bluespace) in allContents
var/obj/item/weapon/storage/bag/plants/internalBag = locate(/obj/item/weapon/storage/bag/plants) in allContents
var/obj/item/reagent_containers/glass/beaker/bluespace/internalBeaker = locate(/obj/item/reagent_containers/glass/beaker/bluespace) in allContents
var/obj/item/storage/bag/plants/internalBag = locate(/obj/item/storage/bag/plants) in allContents
if(!internalBag)
internalBag = new/obj/item/weapon/storage/bag/plants(src)
internalBag = new/obj/item/storage/bag/plants(src)
if(!internalBeaker)
internalBeaker = new/obj/item/weapon/reagent_containers/glass/beaker/bluespace(src)
internalBeaker = new/obj/item/reagent_containers/glass/beaker/bluespace(src)
internalBeaker.name = "Grow-U-All Super Spray"
if(internalBeaker && internalBag)
@@ -181,7 +181,7 @@
if(change)
HP.attackby(internalBeaker,src)
var/obj/item/weapon/reagent_containers/food/snacks/grown/GF = locate(/obj/item/weapon/reagent_containers/food/snacks/grown) in view(12,src)
var/obj/item/reagent_containers/food/snacks/grown/GF = locate(/obj/item/reagent_containers/food/snacks/grown) in view(12,src)
if(GF)
if(!Adjacent(GF))
tryWalk(get_turf(GF))
@@ -216,7 +216,7 @@
var/mob/living/carbon/human/serveTarget
for(var/mob/living/carbon/human/H in rangeCheck)
if(!locate(/obj/item/weapon/reagent_containers/food/drinks) in orange(1, H))
if(!locate(/obj/item/reagent_containers/food/drinks) in orange(1, H))
serveTarget = H
@@ -227,9 +227,9 @@
if(!Adjacent(RT))
tryWalk(get_turf(RT))
else
var/drinkChoice = pick(typesof(/obj/item/weapon/reagent_containers/food/drinks) - /obj/item/weapon/reagent_containers/food/drinks)
var/drinkChoice = pick(typesof(/obj/item/reagent_containers/food/drinks) - /obj/item/reagent_containers/food/drinks)
if(drinkChoice)
var/obj/item/weapon/reagent_containers/food/drinks/D = new drinkChoice(get_turf(src))
var/obj/item/reagent_containers/food/drinks/D = new drinkChoice(get_turf(src))
RT.attackby(D,src)
say("[pick("Something to wet your whistle!","Down the hatch, a tasty beverage!","One drink, coming right up!","Tasty liquid for your oral intake!","Enjoy!")]")
custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")], serving up a [D]!")
@@ -239,11 +239,11 @@
if(retal && TARGET)
if(Adjacent(TARGET))
var/obj/item/weapon/restraints/R = locate() in allContents
var/obj/item/restraints/R = locate() in allContents
if(R)
R.attack(TARGET, src) // go go bluespace restraint launcher!
else if(TARGET in oview(7, src))
var/obj/item/weapon/gun/G = locate() in allContents
var/obj/item/gun/G = locate() in allContents
if(G)
G.afterattack(TARGET, src)
@@ -256,17 +256,17 @@
var/mob/living/carbon/human/clownTarget
var/list/clownPriority = list()
var/obj/item/weapon/reagent_containers/spray/S
if(!locate(/obj/item/weapon/reagent_containers/spray) in allContents)
new/obj/item/weapon/reagent_containers/spray(src)
var/obj/item/reagent_containers/spray/S
if(!locate(/obj/item/reagent_containers/spray) in allContents)
new/obj/item/reagent_containers/spray(src)
else
S = locate(/obj/item/weapon/reagent_containers/spray) in allContents
S = locate(/obj/item/reagent_containers/spray) in allContents
for(var/mob/living/carbon/human/C in rangeCheck)
var/pranksNearby = 100
for(var/turf/simulated/T in orange(1, C))
for(var/obj/item/A in T)
if(istype(A,/obj/item/weapon/soap) || istype(A,/obj/item/weapon/reagent_containers/food/snacks/grown/banana) || istype(A,/obj/item/weapon/grown/bananapeel))
if(istype(A,/obj/item/soap) || istype(A,/obj/item/reagent_containers/food/snacks/grown/banana) || istype(A,/obj/item/grown/bananapeel))
pranksNearby--
if(T.wet)
pranksNearby -= 10
@@ -286,13 +286,13 @@
var/hasPranked = 0
for(var/A in allContents)
if(prob(smartness/2) && !hasPranked)
if(istype(A,/obj/item/weapon/soap))
if(istype(A,/obj/item/soap))
npcDrop(A)
hasPranked = 1
if(istype(A,/obj/item/weapon/reagent_containers/food/snacks/grown/banana))
var/obj/item/weapon/reagent_containers/food/snacks/B = A
if(istype(A,/obj/item/reagent_containers/food/snacks/grown/banana))
var/obj/item/reagent_containers/food/snacks/B = A
B.attack(src, src)
if(istype(A,/obj/item/weapon/grown/bananapeel))
if(istype(A,/obj/item/grown/bananapeel))
npcDrop(A)
hasPranked = 1
if(!hasPranked)
@@ -312,12 +312,12 @@
shouldTryHeal = 1
M = A
var/obj/item/weapon/reagent_containers/hypospray/HPS
var/obj/item/reagent_containers/hypospray/HPS
if(!locate(/obj/item/weapon/reagent_containers/hypospray) in allContents)
new/obj/item/weapon/reagent_containers/hypospray(src)
if(!locate(/obj/item/reagent_containers/hypospray) in allContents)
new/obj/item/reagent_containers/hypospray(src)
else
HPS = locate(/obj/item/weapon/reagent_containers/hypospray) in allContents
HPS = locate(/obj/item/reagent_containers/hypospray) in allContents
if(!shouldTryHeal)
shouldTryHeal = 2 // we have no stackables to use, lets use our internal hypospray instead
@@ -351,12 +351,12 @@
return
var/list/allContents = getAllContents()
//now with bluespace magic!
var/obj/item/weapon/reagent_containers/spray/SP = locate() in allContents
var/obj/item/reagent_containers/spray/SP = locate() in allContents
if(!SP)
SP = new /obj/item/weapon/reagent_containers/spray(src)
var/obj/item/weapon/soap/SO = locate() in allContents
SP = new /obj/item/reagent_containers/spray(src)
var/obj/item/soap/SO = locate() in allContents
if(!SO)
SO = new /obj/item/weapon/soap(src)
SO = new /obj/item/soap(src)
if(SP.reagents.total_volume <= 5)
SP.reagents.add_reagent("cleaner", 25) // bluespess water delivery for AI
@@ -425,22 +425,22 @@
return
doing |= SNPC_SPECIAL
var/static/list/customableTypes = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,/obj/item/weapon/reagent_containers/food/snacks/breadslice,/obj/item/weapon/reagent_containers/food/snacks/bun,/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti,/obj/item/trash/plate,/obj/item/trash/bowl)
var/static/list/customableTypes = list(/obj/item/reagent_containers/food/snacks/customizable,/obj/item/reagent_containers/food/snacks/breadslice,/obj/item/reagent_containers/food/snacks/bun,/obj/item/reagent_containers/food/snacks/sliceable/flatdough,/obj/item/reagent_containers/food/snacks/boiledspaghetti,/obj/item/trash/plate,/obj/item/trash/bowl)
var/static/list/rawtypes = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/weapon/reagent_containers/food/snacks/rawcutlet, /obj/item/weapon/reagent_containers/food/snacks/rawsticks, /obj/item/weapon/reagent_containers/food/snacks/salmonmeat, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, /obj/item/weapon/reagent_containers/food/snacks/catfishmeat, /obj/item/weapon/reagent_containers/food/snacks/spaghetti, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/boiledrice, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/raw_bacon)
var/static/list/rawtypes = list(/obj/item/reagent_containers/food/snacks/grown, /obj/item/reagent_containers/food/snacks/rawcutlet, /obj/item/reagent_containers/food/snacks/rawsticks, /obj/item/reagent_containers/food/snacks/salmonmeat, /obj/item/reagent_containers/food/snacks/carpmeat, /obj/item/reagent_containers/food/snacks/catfishmeat, /obj/item/reagent_containers/food/snacks/spaghetti, /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/reagent_containers/food/snacks/doughslice, /obj/item/reagent_containers/food/snacks/meat, /obj/item/reagent_containers/food/snacks/boiledrice, /obj/item/reagent_containers/food/snacks/cheesewedge, /obj/item/reagent_containers/food/snacks/raw_bacon)
try
var/list/allContents = getAllContents()
var/list/rangeCheck = view(6, src)
//Bluespace in some inbuilt tools
var/obj/item/weapon/kitchen/rollingpin/RP = locate() in allContents
var/obj/item/kitchen/rollingpin/RP = locate() in allContents
if(!RP)
RP = new /obj/item/weapon/kitchen/rollingpin(src)
RP = new /obj/item/kitchen/rollingpin(src)
var/obj/item/weapon/kitchen/knife/KK = locate() in allContents
var/obj/item/kitchen/knife/KK = locate() in allContents
if(!KK)
KK = new /obj/item/weapon/kitchen/knife(src)
KK = new /obj/item/kitchen/knife(src)
var/global/list/available_recipes
if(!available_recipes)
@@ -458,7 +458,7 @@
var/foundCustom
for(var/customType in customableTypes)
var/A = locate(customType) in rangeCheck
var/obj/item/weapon/reagent_containers/food/snacks/customizable/I = A
var/obj/item/reagent_containers/food/snacks/customizable/I = A
if(A && (!istype(I) || I.ingredients.len <= 3))
foundCustom = A // this will eventually wittle down to 0
break
@@ -478,8 +478,8 @@
A.forceMove(src)
if(foundCustom)
var/obj/item/weapon/reagent_containers/food/snacks/FC = foundCustom
for(var/obj/item/weapon/reagent_containers/food/snacks/toMake in allContents)
var/obj/item/reagent_containers/food/snacks/FC = foundCustom
for(var/obj/item/reagent_containers/food/snacks/toMake in allContents)
if(prob(smartness))
if(FC.reagents)
if(toMake.reagents)
@@ -497,13 +497,13 @@
qdel(FC) // this food is usless, toss it
// Process tool-based ingredients
var/obj/item/weapon/reagent_containers/food/snacks/dough/D = locate() in rangeCheck
var/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/FD = locate() in rangeCheck
var/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/RC = locate() in rangeCheck
var/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/CW = locate() in rangeCheck
var/obj/item/weapon/reagent_containers/food/snacks/grown/potato/PO = locate() in rangeCheck
var/obj/item/weapon/reagent_containers/food/snacks/meat/ME = locate() in rangeCheck
var/obj/item/weapon/reagent_containers/food/snacks/raw_bacon/RB = locate() in rangeCheck
var/obj/item/reagent_containers/food/snacks/dough/D = locate() in rangeCheck
var/obj/item/reagent_containers/food/snacks/sliceable/flatdough/FD = locate() in rangeCheck
var/obj/item/reagent_containers/food/snacks/rawcutlet/RC = locate() in rangeCheck
var/obj/item/reagent_containers/food/snacks/sliceable/cheesewheel/CW = locate() in rangeCheck
var/obj/item/reagent_containers/food/snacks/grown/potato/PO = locate() in rangeCheck
var/obj/item/reagent_containers/food/snacks/meat/ME = locate() in rangeCheck
var/obj/item/reagent_containers/food/snacks/raw_bacon/RB = locate() in rangeCheck
if(D)
TARGET = D
@@ -581,7 +581,7 @@
// dont display our ingredients
var/list/finishedList = list()
for(var/obj/item/weapon/reagent_containers/food/snacks/toDisplay in allContents)
for(var/obj/item/reagent_containers/food/snacks/toDisplay in allContents)
var/raw = 0
for(var/type in rawtypes)
if(istype(toDisplay, type))
@@ -590,7 +590,7 @@
if(!raw)
finishedList += toDisplay
for(var/obj/item/weapon/reagent_containers/food/snacks/toGrab in rangeCheck)
for(var/obj/item/reagent_containers/food/snacks/toGrab in rangeCheck)
if(!(locate(/obj/structure/table/reinforced) in get_turf(toGrab))) //it's not being displayed
var/raw = 0
for(var/type in rawtypes)
@@ -610,7 +610,7 @@
for(var/obj/structure/table/reinforced/toCheck in rangeCheck)
var/counted = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/S in get_turf(toCheck))
for(var/obj/item/reagent_containers/food/snacks/S in get_turf(toCheck))
++counted
if(counted < 12) // make sure theres not too much food here
RT = toCheck
@@ -621,13 +621,13 @@
if(!Adjacent(RT))
tryWalk(get_turf(RT))
else
for(var/obj/item/weapon/reagent_containers/food/snacks/toPlop in finishedList)
for(var/obj/item/reagent_containers/food/snacks/toPlop in finishedList)
RT.attackby(toPlop,src)
if(!foundCookable)
var/chosenType = pick(rawtypes)
var/obj/item/weapon/reagent_containers/food/snacks/newSnack = new chosenType(get_turf(src))
var/obj/item/reagent_containers/food/snacks/newSnack = new chosenType(get_turf(src))
TARGET = newSnack
newSnack.reagents.remove_any((newSnack.reagents.total_volume/2)-1)
newSnack.name = "Synthetic [newSnack.name]"
@@ -666,7 +666,7 @@
//ensure we're using the best object possible
var/obj/item/weapon/best
var/obj/item/best
var/foundFav = 0
var/list/allContents = getAllContents()
for(var/test in allContents)
@@ -676,16 +676,16 @@
foundFav = 1
return
if(!foundFav)
if(istype(test,/obj/item/weapon))
var/obj/item/weapon/R = test
if(istype(test,/obj/item))
var/obj/item/R = test
if(R.force > 2) // make sure we don't equip any non-weaponlike items, ie bags and stuff
if(!best)
best = R
else
if(best.force < R.force)
best = R
if(istype(R, /obj/item/weapon/gun))
var/obj/item/weapon/gun/G = R
if(istype(R, /obj/item/gun))
var/obj/item/gun/G = R
if(G.can_shoot())
best = R
break // gun with ammo? screw the rest
@@ -698,16 +698,16 @@
if(M.health > 1 && (M in oview(src, 6)))
//THROWING OBJECTS
for(var/A in allContents)
if(istype(A,/obj/item/weapon/gun)) // guns are for shooting, not throwing.
if(istype(A,/obj/item/gun)) // guns are for shooting, not throwing.
continue
if(prob(robustness))
if(istype(A,/obj/item/weapon))
var/obj/item/weapon/W = A
if(istype(A,/obj/item))
var/obj/item/W = A
if(W.throwforce > 19) // Only throw worthwile stuff, no more lobbing wrenches at wenches
npcDrop(W, 1)
throw_item(TARGET)
if(istype(A,/obj/item/weapon/grenade)) // Allahu ackbar! ALLAHU ACKBARR!!
var/obj/item/weapon/grenade/G = A
if(istype(A,/obj/item/grenade)) // Allahu ackbar! ALLAHU ACKBARR!!
var/obj/item/grenade/G = A
G.attack_self(src)
if(prob(smartness))
npcDrop(G, 1)
@@ -718,12 +718,12 @@
swap_hands()
if(main_hand)
if(main_hand.force != 0)
if(istype(main_hand,/obj/item/weapon/gun))
var/obj/item/weapon/gun/G = main_hand
if(istype(main_hand,/obj/item/gun))
var/obj/item/gun/G = main_hand
if(G.can_trigger_gun(src))
var/shouldFire = 1
if(istype(main_hand, /obj/item/weapon/gun/energy))
var/obj/item/weapon/gun/energy/P = main_hand
if(istype(main_hand, /obj/item/gun/energy))
var/obj/item/gun/energy/P = main_hand
var/stunning = 0
for(var/A in P.ammo_type)
if(ispath(A,/obj/item/ammo_casing/energy/electrode))
@@ -742,7 +742,7 @@
if(!walk2derpless(TARGET))
timeout++
else
var/obj/item/weapon/W = main_hand
var/obj/item/W = main_hand
W.attack(TARGET, src)
else
npcDrop(G, 1)
@@ -802,7 +802,7 @@
/mob/living/carbon/human/interactive/proc/pickStamp(allContents)
var/list/stamps[0]
for(var/obj/item/weapon/stamp/S in allContents)
for(var/obj/item/stamp/S in allContents)
stamps += S
if(stamps.len)
return pick(stamps)
@@ -810,7 +810,7 @@
// just make one, maybe
if(prob(SNPC_FUZZY_CHANCE_LOW / 2))
for(var/p in favoured_types)
if(ispath(p, /obj/item/weapon/stamp))
if(ispath(p, /obj/item/stamp))
return new p(src)
return null
@@ -822,12 +822,12 @@
var/list/allContents = getAllContents()
var/obj/item/weapon/paper/P = locate() in allContents
var/obj/item/weapon/stamp/S = pickStamp(allContents)
var/obj/item/paper/P = locate() in allContents
var/obj/item/stamp/S = pickStamp(allContents)
var/mob/living/carbon/human/H = locate() in nearby
if(!P)
P = new /obj/item/weapon/paper(src)
P = new /obj/item/paper(src)
if(P && S && H)
if(!P.stamped || !P.stamped.len)
@@ -850,12 +850,12 @@
var/list/allContents = getAllContents()
var/list/rangeCheck = view(7, src)
var/obj/item/weapon/stamp/S = pickStamp(allContents)
var/obj/item/stamp/S = pickStamp(allContents)
if(!S)
return
// stamp a paper we're holding, and drop it
var/obj/item/weapon/paper/P = locate() in allContents
var/obj/item/paper/P = locate() in allContents
if(P)
if(!P.stamped || !P.stamped.len)
P.stamp(S)
@@ -864,7 +864,7 @@
return
// stamp a paper in the world
for(var/obj/item/weapon/paper/A in rangeCheck)
for(var/obj/item/paper/A in rangeCheck)
if(!A.stamped || !A.stamped.len)
if(!Adjacent(A))
tryWalk(A)
@@ -44,13 +44,13 @@
var/list/blacklistItems = list() // items we should be ignoring
var/maxStepsTick = 6 // step as many times as we can per frame
//Job and mind data
var/obj/item/weapon/card/id/MYID
var/obj/item/weapon/card/id/RPID // the "real" idea they use
var/obj/item/card/id/MYID
var/obj/item/card/id/RPID // the "real" idea they use
var/obj/item/device/pda/MYPDA
var/obj/item/main_hand
var/obj/item/other_hand
var/TRAITS = 0
var/obj/item/weapon/card/id/Path_ID
var/obj/item/card/id/Path_ID
var/default_job = /datum/job/civilian // the type for the default job
var/datum/job/myjob
var/list/myPath = list()
@@ -229,7 +229,7 @@
T.revive()
/mob/living/carbon/human/interactive/proc/doSetup(alt_title = null)
Path_ID = new /obj/item/weapon/card/id(src)
Path_ID = new /obj/item/card/id(src)
var/datum/job/captain/C = new/datum/job/captain
Path_ID.access = C.get_access()
@@ -316,43 +316,43 @@
/mob/living/carbon/human/interactive/proc/setup_job(thejob)
switch(thejob)
if("Civilian")
favoured_types = list(/obj/item/clothing, /obj/item/weapon)
favoured_types = list(/obj/item/clothing, /obj/item)
if("Captain", "Head of Personnel")
favoured_types = list(/obj/item/clothing, /obj/item/weapon/stamp/captain,/obj/item/weapon/disk/nuclear)
favoured_types = list(/obj/item/clothing, /obj/item/stamp/captain,/obj/item/disk/nuclear)
if("Nanotrasen Representative")
favoured_types = list(/obj/item/clothing, /obj/item/weapon/stamp/centcom, /obj/item/weapon/paper, /obj/item/weapon/melee/classic_baton/ntcane)
favoured_types = list(/obj/item/clothing, /obj/item/stamp/centcom, /obj/item/paper, /obj/item/melee/classic_baton/ntcane)
functions += "paperwork"
if("Magistrate", "Internal Affairs Agent")
favoured_types = list(/obj/item/clothing, /obj/item/weapon/stamp/law, /obj/item/weapon/paper)
favoured_types = list(/obj/item/clothing, /obj/item/stamp/law, /obj/item/paper)
functions += "paperwork"
if("Quartermaster", "Cargo Technician")
favoured_types = list(/obj/item/clothing, /obj/item/weapon/stamp/granted, /obj/item/weapon/stamp/denied, /obj/item/weapon/paper, /obj/item/weapon/clipboard)
favoured_types = list(/obj/item/clothing, /obj/item/stamp/granted, /obj/item/stamp/denied, /obj/item/paper, /obj/item/clipboard)
functions += "stamping"
if("Chef")
favoured_types = list(/obj/item/weapon/reagent_containers/food, /obj/item/weapon/kitchen)
favoured_types = list(/obj/item/reagent_containers/food, /obj/item/kitchen)
functions += "souschef"
restrictedJob = 1
if("Bartender")
favoured_types = list(/obj/item/weapon/reagent_containers/food, /obj/item/weapon/kitchen)
favoured_types = list(/obj/item/reagent_containers/food, /obj/item/kitchen)
functions += "bartend"
restrictedJob = 1
if("Station Engineer", "Chief Engineer", "Life Support Specialist", "Mechanic")
favoured_types = list(/obj/item/stack, /obj/item/weapon, /obj/item/clothing)
favoured_types = list(/obj/item/stack, /obj/item, /obj/item/clothing)
if("Chief Medical Officer", "Medical Doctor", "Chemist", "Virologist", "Geneticist", "Psychiatrist", "Paramedic", "Brig Physician")
favoured_types = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/storage/firstaid, /obj/item/stack/medical, /obj/item/weapon/reagent_containers/syringe)
favoured_types = list(/obj/item/reagent_containers/glass/beaker, /obj/item/storage/firstaid, /obj/item/stack/medical, /obj/item/reagent_containers/syringe)
functions += "healpeople"
if("Research Director", "Scientist", "Roboticist")
favoured_types = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/stack, /obj/item/weapon/reagent_containers)
favoured_types = list(/obj/item/reagent_containers/glass/beaker, /obj/item/stack, /obj/item/reagent_containers)
if("Head of Security", "Warden", "Security Officer", "Detective", "Security Pod Pilot", "Blueshield")
favoured_types = list(/obj/item/clothing, /obj/item/weapon, /obj/item/weapon/restraints)
favoured_types = list(/obj/item/clothing, /obj/item, /obj/item/restraints)
if("Janitor")
favoured_types = list(/obj/item/weapon/mop, /obj/item/weapon/reagent_containers/glass/bucket, /obj/item/weapon/reagent_containers/spray/cleaner, /obj/effect/decal/cleanable)
favoured_types = list(/obj/item/mop, /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/spray/cleaner, /obj/effect/decal/cleanable)
functions += "dojanitor"
if("Clown")
favoured_types = list(/obj/item/weapon/soap, /obj/item/weapon/reagent_containers/food/snacks/grown/banana, /obj/item/weapon/grown/bananapeel)
favoured_types = list(/obj/item/soap, /obj/item/reagent_containers/food/snacks/grown/banana, /obj/item/grown/bananapeel)
functions += "clowning"
if("Botanist")
favoured_types = list(/obj/machinery/hydroponics, /obj/item/weapon/reagent_containers, /obj/item/weapon)
favoured_types = list(/obj/machinery/hydroponics, /obj/item/reagent_containers, /obj/item)
functions += "botany"
restrictedJob = 1
else
@@ -554,7 +554,7 @@
/mob/living/carbon/human/interactive/proc/insert_into_backpack()
var/list/slots = list(slot_l_store, slot_r_store, slot_l_hand, slot_r_hand)
var/obj/item/I = get_item_by_slot(pick(slots))
var/obj/item/weapon/storage/BP = get_item_by_slot(slot_back)
var/obj/item/storage/BP = get_item_by_slot(slot_back)
if(back && BP && I)
// hack to allow SNPCs to "sticky grab" items without losing their inventorying
var/oldnodrop = I.flags | NODROP
@@ -662,7 +662,7 @@
update_hands = 0
if(grabbed_by.len > 0)
for(var/obj/item/weapon/grab/G in grabbed_by)
for(var/obj/item/grab/G in grabbed_by)
if(Adjacent(G))
a_intent = INTENT_DISARM
G.assailant.attack_hand(src)
@@ -700,8 +700,8 @@
var/obj/item/I = TARGET
if(I.anchored)
TARGET = null
else if(istype(TARGET, /obj/item/weapon))
var/obj/item/weapon/W = TARGET
else if(istype(TARGET, /obj/item))
var/obj/item/W = TARGET
if(W.force >= best_force || prob((SNPC_FUZZY_CHANCE_LOW + SNPC_FUZZY_CHANCE_HIGH) / 2) || favouredObjIn(list(W)))
if(!l_hand || !r_hand)
put_in_hands(W)
@@ -733,7 +733,7 @@
if(istype(TARGET, /obj/structure))
var/obj/structure/STR = TARGET
if(main_hand)
var/obj/item/weapon/W = main_hand
var/obj/item/W = main_hand
STR.attackby(W, src)
else
STR.attack_hand(src)
@@ -578,24 +578,24 @@
if(!disable_warning)
to_chat(src, "The [name] is too big to attach.")
return 0
if(istype(I, /obj/item/device/pda) || istype(I, /obj/item/weapon/pen) || is_type_in_list(I, wear_suit.allowed))
if(istype(I, /obj/item/device/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, wear_suit.allowed))
return 1
return 0
if(slot_handcuffed)
if(handcuffed)
return 0
if(!istype(I, /obj/item/weapon/restraints/handcuffs))
if(!istype(I, /obj/item/restraints/handcuffs))
return 0
return 1
if(slot_legcuffed)
if(legcuffed)
return 0
if(!istype(I, /obj/item/weapon/restraints/legcuffs))
if(!istype(I, /obj/item/restraints/legcuffs))
return 0
return 1
if(slot_in_backpack)
if(back && istype(back, /obj/item/weapon/storage/backpack))
var/obj/item/weapon/storage/backpack/B = back
if(back && istype(back, /obj/item/storage/backpack))
var/obj/item/storage/backpack/B = back
if(B.contents.len < B.storage_slots && I.w_class <= B.max_w_class)
return 1
return 0
+2 -2
View File
@@ -287,8 +287,8 @@
if(!(head && head.flags & AIRTIGHT)) //if NOT (head AND head.flags CONTAIN AIRTIGHT)
null_internals = 1 //not wearing a mask or suitable helmet
if(istype(back, /obj/item/weapon/rig)) //wearing a rigsuit
var/obj/item/weapon/rig/rig = back //needs to be typecasted because this doesn't use get_rig() for some reason
if(istype(back, /obj/item/rig)) //wearing a rigsuit
var/obj/item/rig/rig = back //needs to be typecasted because this doesn't use get_rig() for some reason
if(rig.offline && (rig.air_supply && internal == rig.air_supply)) //if rig IS offline AND (rig HAS air_supply AND internal IS air_supply)
null_internals = 1 //offline suits do not breath
+2 -2
View File
@@ -62,8 +62,8 @@
return ..()
/mob/living/carbon/human/proc/HasVoiceChanger()
if(istype(back,/obj/item/weapon/rig))
var/obj/item/weapon/rig/rig = back
if(istype(back,/obj/item/rig))
var/obj/item/rig/rig = back
if(rig.speech && rig.speech.voice_holder && rig.speech.voice_holder.active && rig.speech.voice_holder.voice)
return rig.speech.voice_holder.voice
@@ -123,5 +123,5 @@
var/turf/T = get_turf(H)
H.visible_message("<span class='warning'>[H]'s body explodes, leaving behind a pile of microscopic crystals!</span>")
explosion(T, 0, 0, 2, 2) // Create a small explosion burst upon death
// new /obj/item/weapon/shard/supermatter( T )
// new /obj/item/shard/supermatter( T )
qdel(H)
@@ -49,7 +49,7 @@
/datum/species/monkey/handle_post_spawn(var/mob/living/carbon/human/H)
H.real_name = "[lowertext(name)] ([rand(100,999)])"
H.name = H.real_name
H.butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/monkey = 5)
H.butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/monkey = 5)
..()
@@ -82,12 +82,12 @@
if(slot_handcuffed)
if(user.handcuffed)
return 2
if(!istype(I, /obj/item/weapon/restraints/handcuffs))
if(!istype(I, /obj/item/restraints/handcuffs))
return 2
return 1
if(slot_in_backpack)
if(user.back && istype(user.back, /obj/item/weapon/storage/backpack))
var/obj/item/weapon/storage/backpack/B = user.back
if(user.back && istype(user.back, /obj/item/storage/backpack))
var/obj/item/storage/backpack/B = user.back
if(B.contents.len < B.storage_slots && I.w_class <= B.max_w_class)
return 1
return 2
@@ -82,7 +82,7 @@
if("Warden","Security Officer","Security Pod Pilot")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_in_backpack)
H.equip_or_collect(new /obj/item/gun/energy/gun/advtaser(H), slot_in_backpack)
if("Internal Affairs Agent")
suit=/obj/item/clothing/suit/space/eva/plasmaman/lawyer
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/lawyer
@@ -92,7 +92,7 @@
if("Head of Security")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/hos
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/hos
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun(H), slot_in_backpack)
H.equip_or_collect(new /obj/item/gun/energy/gun(H), slot_in_backpack)
if("Captain", "Blueshield")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/captain
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/captain
@@ -150,9 +150,9 @@
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/mime
H.equip_or_collect(new suit(H), slot_wear_suit)
H.equip_or_collect(new helm(H), slot_head)
H.equip_or_collect(new /obj/item/weapon/tank/plasma/plasmaman(H), tank_slot) // Bigger plasma tank from Raggy.
H.equip_or_collect(new /obj/item/weapon/plasmensuit_cartridge(H), slot_in_backpack)
H.equip_or_collect(new /obj/item/weapon/plasmensuit_cartridge(H), slot_in_backpack) //Two refill cartridges for their suit. Can fit in boxes.
H.equip_or_collect(new /obj/item/tank/plasma/plasmaman(H), tank_slot) // Bigger plasma tank from Raggy.
H.equip_or_collect(new /obj/item/plasmensuit_cartridge(H), slot_in_backpack)
H.equip_or_collect(new /obj/item/plasmensuit_cartridge(H), slot_in_backpack) //Two refill cartridges for their suit. Can fit in boxes.
to_chat(H, "<span class='notice'>You are now running on plasma internals from the [H.s_store] in your [tank_slot_name]. You must breathe plasma in order to survive, and are extremely flammable.</span>")
H.internal = H.get_item_by_slot(tank_slot)
H.update_action_buttons_icon()
@@ -534,8 +534,8 @@ It'll return null if the organ doesn't correspond, so include null checks when u
if(hat.helmet_goggles_invis_view)
H.see_invisible = min(hat.helmet_goggles_invis_view, H.see_invisible)
if(istype(H.back, /obj/item/weapon/rig)) ///aghhh so snowflakey
var/obj/item/weapon/rig/rig = H.back
if(istype(H.back, /obj/item/rig)) ///aghhh so snowflakey
var/obj/item/rig/rig = H.back
if(rig.visor)
if(!rig.helmet || (H.head && rig.helmet == H.head))
if(rig.visor && rig.visor.vision && rig.visor.active && rig.visor.vision.glasses)
@@ -381,9 +381,9 @@
H.equip_or_collect(new /obj/item/clothing/mask/breath/vox(H), slot_wear_mask)
var/tank_pref = H.client && H.client.prefs ? H.client.prefs.speciesprefs : null
if(tank_pref)//Diseasel, here you go
H.equip_or_collect(new /obj/item/weapon/tank/nitrogen(H), slot_l_hand)
H.equip_or_collect(new /obj/item/tank/nitrogen(H), slot_l_hand)
else
H.equip_or_collect(new /obj/item/weapon/tank/emergency_oxygen/vox(H), slot_l_hand)
H.equip_or_collect(new /obj/item/tank/emergency_oxygen/vox(H), slot_l_hand)
to_chat(H, "<span class='notice'>You are now running on nitrogen internals from the [H.l_hand] in your hand. Your species finds oxygen toxic, so you must breathe nitrogen only.</span>")
H.internal = H.l_hand
H.update_action_buttons_icon()
@@ -1058,9 +1058,9 @@ var/global/list/damage_icon_parts = list()
var/icon/standing
if(back.icon_override)
standing = image("icon" = back.icon_override, "icon_state" = "[back.icon_state]")
else if(istype(back, /obj/item/weapon/rig))
else if(istype(back, /obj/item/rig))
//If this is a rig and a mob_icon is set, it will take species into account in the rig update_icon() proc.
var/obj/item/weapon/rig/rig = back
var/obj/item/rig/rig = back
standing = rig.mob_icon
else if(back.sprite_sheets && back.sprite_sheets[species.name])
standing = image("icon" = back.sprite_sheets[species.name], "icon_state" = "[back.icon_state]")
@@ -1077,7 +1077,7 @@ var/global/list/damage_icon_parts = list()
/mob/living/carbon/human/update_inv_handcuffed(var/update_icons=1)
overlays_standing[HANDCUFF_LAYER] = null
if(handcuffed)
if(istype(handcuffed, /obj/item/weapon/restraints/handcuffs/pinkcuffs))
if(istype(handcuffed, /obj/item/restraints/handcuffs/pinkcuffs))
overlays_standing[HANDCUFF_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "pinkcuff1")
else
overlays_standing[HANDCUFF_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "handcuff1")
+1 -1
View File
@@ -357,7 +357,7 @@
if(istype(buckled, /obj/structure/stool/bed))
var/obj/structure/stool/bed/bed = buckled
comfort+= bed.comfort
for(var/obj/item/weapon/bedsheet/bedsheet in range(loc,0))
for(var/obj/item/bedsheet/bedsheet in range(loc,0))
if(bedsheet.loc != loc) //bedsheets in your backpack/neck don't give you comfort
continue
comfort+= bedsheet.comfort
@@ -544,8 +544,8 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
return "You cannot ventcrawl while feeding."
..()
/mob/living/carbon/slime/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness)
if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks))
/mob/living/carbon/slime/forceFed(var/obj/item/reagent_containers/food/toEat, mob/user, fullness)
if(istype(toEat, /obj/item/reagent_containers/food/drinks))
return 1
to_chat(user, "This creature does not seem to have a mouth!")
return 0
@@ -42,7 +42,7 @@
H.mind.AddSpell(new S(null))
/datum/superheroes/proc/assign_id(var/mob/living/carbon/human/H)
var/obj/item/weapon/card/id/syndicate/W = new(H)
var/obj/item/card/id/syndicate/W = new(H)
W.registered_name = H.real_name
W.access = list(access_maint_tunnels)
if(class == "Superhero")
@@ -76,7 +76,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/under/owl(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/owl_mask/super_hero(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/bluespace/owlman(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/storage/belt/bluespace/owlman(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(H), slot_glasses)
@@ -96,7 +96,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings/griffinwings(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/griffin/(H), slot_head)
var/obj/item/weapon/implant/freedom/L = new/obj/item/weapon/implant/freedom(H)
var/obj/item/implant/freedom/L = new/obj/item/implant/freedom(H)
L.implant(H)
@@ -116,7 +116,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit/super_hero(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi/super_hero(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/weapon/bedsheet/orange(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/bedsheet/orange(H), slot_back)
/datum/superheroes/electro
@@ -134,7 +134,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit/super_hero/en(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi/super_hero/en(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/weapon/bedsheet/cult(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/bedsheet/cult(H), slot_back)
@@ -228,9 +228,9 @@
target.rename_character(target.real_name, "Generic Henchman ([rand(1, 1000)])")
target.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey/greytide(target), slot_w_uniform)
target.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(target), slot_shoes)
target.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical/greytide(target), slot_l_hand)
target.equip_to_slot_or_del(new /obj/item/storage/toolbox/mechanical/greytide(target), slot_l_hand)
target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_l_ear)
var/obj/item/weapon/card/id/syndicate/W = new(target)
var/obj/item/card/id/syndicate/W = new(target)
W.icon_state = "lifetimeid"
W.access = list(access_maint_tunnels)
W.assignment = "Greyshirt"
+1 -1
View File
@@ -44,7 +44,7 @@
update_pulling()
for(var/obj/item/weapon/grab/G in src)
for(var/obj/item/grab/G in src)
G.process()
if(handle_regular_status_updates()) // Status & health update, are we dead or alive etc.
+15 -15
View File
@@ -155,7 +155,7 @@
/mob/living/Stat()
. = ..()
if(. && get_rig_stats)
var/obj/item/weapon/rig/rig = get_rig()
var/obj/item/rig/rig = get_rig()
if(rig)
SetupStat(rig)
@@ -198,7 +198,7 @@
if(!..())
return FALSE
var/obj/item/hand_item = get_active_hand()
if(istype(hand_item, /obj/item/weapon/gun) && A != hand_item)
if(istype(hand_item, /obj/item/gun) && A != hand_item)
if(a_intent == INTENT_HELP || !ismob(A))
visible_message("<b>[src]</b> points to [A] with [hand_item]")
return TRUE
@@ -353,48 +353,48 @@
//Recursive function to find everything a mob is holding.
/mob/living/get_contents(var/obj/item/weapon/storage/Storage = null)
/mob/living/get_contents(var/obj/item/storage/Storage = null)
var/list/L = list()
if(Storage) //If it called itself
L += Storage.return_inv()
//Leave this commented out, it will cause storage items to exponentially add duplicate to the list
//for(var/obj/item/weapon/storage/S in Storage.return_inv()) //Check for storage items
//for(var/obj/item/storage/S in Storage.return_inv()) //Check for storage items
// L += get_contents(S)
for(var/obj/item/weapon/gift/G in Storage.return_inv()) //Check for gift-wrapped items
for(var/obj/item/gift/G in Storage.return_inv()) //Check for gift-wrapped items
L += G.gift
if(istype(G.gift, /obj/item/weapon/storage))
if(istype(G.gift, /obj/item/storage))
L += get_contents(G.gift)
for(var/obj/item/smallDelivery/D in Storage.return_inv()) //Check for package wrapped items
L += D.wrapped
if(istype(D.wrapped, /obj/item/weapon/storage)) //this should never happen
if(istype(D.wrapped, /obj/item/storage)) //this should never happen
L += get_contents(D.wrapped)
return L
else
L += contents
for(var/obj/item/weapon/storage/S in contents) //Check for storage items
for(var/obj/item/storage/S in contents) //Check for storage items
L += get_contents(S)
for(var/obj/item/clothing/suit/storage/S in contents)//Check for labcoats and jackets
L += get_contents(S)
for(var/obj/item/clothing/accessory/storage/S in contents)//Check for holsters
L += get_contents(S)
for(var/obj/item/weapon/implant/storage/I in contents) //Check for storage implants.
for(var/obj/item/implant/storage/I in contents) //Check for storage implants.
L += I.get_contents()
for(var/obj/item/weapon/gift/G in contents) //Check for gift-wrapped items
for(var/obj/item/gift/G in contents) //Check for gift-wrapped items
L += G.gift
if(istype(G.gift, /obj/item/weapon/storage))
if(istype(G.gift, /obj/item/storage))
L += get_contents(G.gift)
for(var/obj/item/smallDelivery/D in contents) //Check for package wrapped items
L += D.wrapped
if(istype(D.wrapped, /obj/item/weapon/storage)) //this should never happen
if(istype(D.wrapped, /obj/item/storage)) //this should never happen
L += get_contents(D.wrapped)
for(var/obj/item/weapon/folder/F in contents)
for(var/obj/item/folder/F in contents)
L += F.contents //Folders can't store any storage items.
return L
@@ -716,7 +716,7 @@
qdel(O)
resisting++
for(var/X in grabbed_by)
var/obj/item/weapon/grab/G = X
var/obj/item/grab/G = X
resisting++
switch(G.state)
if(GRAB_PASSIVE)
@@ -1022,7 +1022,7 @@
. += config.walk_speed
/mob/living/proc/can_use_guns(var/obj/item/weapon/gun/G)
/mob/living/proc/can_use_guns(var/obj/item/gun/G)
if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser() && !issmall(src))
to_chat(src, "<span class='warning'>You don't have the dexterity to do this!</span>")
return 0
+4 -4
View File
@@ -79,8 +79,8 @@
var/zone = ran_zone("chest", 65)//Hits a random part of the body, geared towards the chest
var/dtype = BRUTE
var/volume = I.get_volume_by_throwforce_and_or_w_class()
if(istype(I, /obj/item/weapon))
var/obj/item/weapon/W = I
if(istype(I, /obj/item))
var/obj/item/W = I
dtype = W.damtype
if(W.throwforce > 0) //If the weapon's throwforce is greater than zero...
if(W.hitsound) //...and hitsound is defined...
@@ -239,14 +239,14 @@
if(!(status_flags & CANPUSH))
return 0
for(var/obj/item/weapon/grab/G in src.grabbed_by)
for(var/obj/item/grab/G in src.grabbed_by)
if(G.assailant == user)
to_chat(user, "<span class='notice'>You already grabbed [src].</span>")
return
add_logs(user, src, "grabbed", addition="passively")
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(user, src)
var/obj/item/grab/G = new /obj/item/grab(user, src)
if(buckled)
to_chat(user, "<span class='notice'>You cannot grab [src], \he is buckled in!</span>")
if(!G) //the grab will delete itself in New if src is anchored
+3 -3
View File
@@ -1128,8 +1128,8 @@ var/list/ai_verbs_default = list(
lit_cameras |= C
/mob/living/silicon/ai/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench))
/mob/living/silicon/ai/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/wrench))
if(anchored)
user.visible_message("<span class='notice'>\The [user] starts to unbolt \the [src] from the plating...</span>")
if(!do_after(user, 40 * W.toolspeed, target = src))
@@ -1204,7 +1204,7 @@ var/list/ai_verbs_default = list(
set category = "IC"
resting = 0
var/obj/item/weapon/rig/rig = get_rig()
var/obj/item/rig/rig = get_rig()
if(rig)
rig.force_rest(src)
+1 -1
View File
@@ -21,7 +21,7 @@
if(nuking)
set_security_level("red")
nuking = 0
for(var/obj/item/weapon/pinpointer/point in pinpointer_list)
for(var/obj/item/pinpointer/point in pinpointer_list)
point.the_disk = null //Point back to the disk.
if(doomsday_device)
+1 -1
View File
@@ -14,7 +14,7 @@
if(ishuman(speaker))
var/mob/living/carbon/human/H = speaker
var/obj/item/weapon/card/id/id = H.wear_id
var/obj/item/card/id/id = H.wear_id
if((istype(id) && id.is_untrackable()) && H.HasVoiceChanger())
changed_voice = 1
var/mob/living/carbon/human/I = locate(speaker_name)
+6 -6
View File
@@ -8,7 +8,7 @@
mob_size = MOB_SIZE_TINY
pass_flags = PASSTABLE
density = 0
holder_type = /obj/item/weapon/holder/pai
holder_type = /obj/item/holder/pai
var/network = "SS13"
var/obj/machinery/camera/current = null
@@ -43,7 +43,7 @@
var/obj/item/weapon/pai_cable/cable // The cable we produce and use when door or camera jacking
var/obj/item/pai_cable/cable // The cable we produce and use when door or camera jacking
var/master // Name of the one who commands us
var/master_dna // DNA string for owner verification
@@ -475,7 +475,7 @@
// Pass lying down or getting up to our pet human, if we're in a rig.
if(stat == CONSCIOUS && istype(loc,/obj/item/device/paicard))
resting = 0
var/obj/item/weapon/rig/rig = get_rig()
var/obj/item/rig/rig = get_rig()
if(istype(rig))
rig.force_rest(src)
else
@@ -486,7 +486,7 @@
update_canmove()
//Overriding this will stop a number of headaches down the track.
/mob/living/silicon/pai/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/mob/living/silicon/pai/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/stack/nanopaste))
var/obj/item/stack/nanopaste/N = W
if(stat == DEAD)
@@ -538,7 +538,7 @@
reset_perspective(card)
// If we are being held, handle removing our holder from their inv.
var/obj/item/weapon/holder/H = loc
var/obj/item/holder/H = loc
if(istype(H))
var/mob/living/M = H.loc
if(istype(M))
@@ -609,7 +609,7 @@
/mob/living/silicon/pai/get_scooped(mob/living/carbon/grabber)
var/obj/item/weapon/holder/H = ..()
var/obj/item/holder/H = ..()
if(!istype(H))
return
if(resting)
@@ -492,7 +492,7 @@
else if(href_list["cable"])
var/turf/T = get_turf_or_move(P.loc)
P.hack_aborted = 0
P.cable = new /obj/item/weapon/pai_cable(T)
P.cable = new /obj/item/pai_cable(T)
for(var/mob/M in viewers(T))
M.show_message("<span class='warning'>A port on [P] opens to reveal [P.cable], which promptly falls to the floor.</span>", 3,
"<span class='warning'>You hear the soft click of something light and hard falling to the ground.</span>", 2)
@@ -25,7 +25,7 @@
var/obj/item/stack/sheet/wood/stack_wood = null
var/obj/item/stack/sheet/glass/cyborg/stack_glass = null
var/obj/item/stack/sheet/plastic/stack_plastic = null
var/obj/item/weapon/matter_decompiler/decompiler = null
var/obj/item/matter_decompiler/decompiler = null
//Used for self-mailing.
var/mail_destination = 0
@@ -33,7 +33,7 @@
var/last_reboot
var/emagged_time
holder_type = /obj/item/weapon/holder/drone
holder_type = /obj/item/holder/drone
// var/sprite[0]
@@ -66,7 +66,7 @@
C.max_damage = 10
verbs -= /mob/living/silicon/robot/verb/Namepick
module = new /obj/item/weapon/robot_module/drone(src)
module = new /obj/item/robot_module/drone(src)
//Grab stacks.
stack_metal = locate(/obj/item/stack/sheet/metal/cyborg) in src.module
@@ -75,7 +75,7 @@
stack_plastic = locate(/obj/item/stack/sheet/plastic) in src.module
//Grab decompiler.
decompiler = locate(/obj/item/weapon/matter_decompiler) in src.module
decompiler = locate(/obj/item/matter_decompiler) in src.module
//Some tidying-up.
flavor_text = "It's a tiny little repair drone. The casing is stamped with an NT logo and the subscript: 'Nanotrasen Recursive Repair Systems: Fixing Tomorrow's Problem, Today!'"
@@ -114,17 +114,17 @@
return
//Drones cannot be upgraded with borg modules so we need to catch some items before they get used in ..().
/mob/living/silicon/robot/drone/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/mob/living/silicon/robot/drone/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/borg/upgrade/))
to_chat(user, "<span class='warning'>The maintenance drone chassis not compatible with \the [W].</span>")
return
else if(istype(W, /obj/item/weapon/crowbar))
else if(istype(W, /obj/item/crowbar))
to_chat(user, "The machine is hermetically sealed. You can't open the case.")
return
else if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
else if(istype(W, /obj/item/card/id)||istype(W, /obj/item/device/pda))
if(stat == 2)
@@ -198,7 +198,7 @@
density = 1
pass_flags = 0
icon_state = "repairbot-emagged"
holder_type = /obj/item/weapon/holder/drone/emagged
holder_type = /obj/item/holder/drone/emagged
update_icons()
lawupdate = 0
connected_ai = null
@@ -238,7 +238,7 @@
/mob/living/silicon/robot/drone/death(gibbed)
if(module)
var/obj/item/weapon/gripper/G = locate(/obj/item/weapon/gripper) in module
var/obj/item/gripper/G = locate(/obj/item/gripper) in module
if(G) G.drop_item()
..(gibbed)
@@ -79,7 +79,7 @@
verbs -= /mob/living/silicon/robot/drone/verb/customize
/mob/living/silicon/robot/drone/get_scooped(mob/living/carbon/grabber)
var/obj/item/weapon/holder/H = ..()
var/obj/item/holder/H = ..()
if(!istype(H))
return
if(resting)
@@ -4,7 +4,7 @@
icon_screen = "power"
icon_keyboard = "power_key"
req_access = list(access_engine_equip)
circuit = /obj/item/weapon/circuitboard/drone_control
circuit = /obj/item/circuitboard/drone_control
//Used when pinging drones.
var/drone_call_area = "Engineering"
@@ -1,6 +1,6 @@
//Simple borg hand.
//Limited use.
/obj/item/weapon/gripper
/obj/item/gripper
name = "magnetic gripper"
desc = "A simple grasping tool for synthetic assets."
icon = 'icons/obj/device.dmi'
@@ -8,55 +8,55 @@
//Has a list of items that it can hold.
var/list/can_hold = list(
/obj/item/weapon/stock_parts/cell,
/obj/item/weapon/firealarm_electronics,
/obj/item/weapon/airalarm_electronics,
/obj/item/weapon/airlock_electronics,
/obj/item/weapon/firelock_electronics,
/obj/item/weapon/intercom_electronics,
/obj/item/weapon/apc_electronics,
/obj/item/weapon/tracker_electronics,
/obj/item/weapon/stock_parts,
/obj/item/weapon/vending_refill,
/obj/item/stock_parts/cell,
/obj/item/firealarm_electronics,
/obj/item/airalarm_electronics,
/obj/item/airlock_electronics,
/obj/item/firelock_electronics,
/obj/item/intercom_electronics,
/obj/item/apc_electronics,
/obj/item/tracker_electronics,
/obj/item/stock_parts,
/obj/item/vending_refill,
/obj/item/mounted/frame/light_fixture,
/obj/item/mounted/frame/apc_frame,
/obj/item/mounted/frame/alarm_frame,
/obj/item/mounted/frame/firealarm,
/obj/item/mounted/frame/newscaster_frame,
/obj/item/mounted/frame/intercom,
/obj/item/weapon/rack_parts,
/obj/item/weapon/camera_assembly,
/obj/item/weapon/tank,
/obj/item/weapon/circuitboard,
/obj/item/rack_parts,
/obj/item/camera_assembly,
/obj/item/tank,
/obj/item/circuitboard,
/obj/item/stack/tile/light,
/obj/item/weapon/ore/bluespace_crystal
/obj/item/ore/bluespace_crystal
)
//Item currently being held.
var/obj/item/wrapped = null
/obj/item/weapon/gripper/paperwork
/obj/item/gripper/paperwork
name = "paperwork gripper"
desc = "A simple grasping tool for clerical work."
icon = 'icons/obj/device.dmi'
icon_state = "gripper"
can_hold = list(
/obj/item/weapon/clipboard,
/obj/item/weapon/paper,
// /obj/item/weapon/paper_bundle,
/obj/item/weapon/card/id
/obj/item/clipboard,
/obj/item/paper,
// /obj/item/paper_bundle,
/obj/item/card/id
)
/obj/item/weapon/gripper/New()
/obj/item/gripper/New()
..()
can_hold = typecacheof(can_hold)
/obj/item/weapon/gripper/attack_self(mob/user as mob)
/obj/item/gripper/attack_self(mob/user as mob)
if(wrapped)
wrapped.attack_self(user)
/obj/item/weapon/gripper/verb/drop_item()
/obj/item/gripper/verb/drop_item()
set name = "Drop Gripped Item"
set desc = "Release an item from your magnetic gripper."
@@ -66,7 +66,7 @@
// The "p" stands for proc, since I was having annoying weird stuff happening with this in the verb
// when trying to have default values for arguments and stuff
/obj/item/weapon/gripper/proc/drop_item_p(var/silent = 0)
/obj/item/gripper/proc/drop_item_p(var/silent = 0)
if(!wrapped)
//There's some weirdness with items being lost inside the arm. Trying to fix all cases. ~Z
@@ -83,10 +83,10 @@
wrapped.forceMove(get_turf(src))
wrapped = null
/obj/item/weapon/gripper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
/obj/item/gripper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
return
/obj/item/weapon/gripper/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity, params)
/obj/item/gripper/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity, params)
if(!target || !proximity) //Target is invalid or we are not adjacent.
return
@@ -156,7 +156,7 @@
user.visible_message("<span class='warning'>[user] removes the power cell from [A]!</span>", "You remove the power cell.")
//TODO: Matter decompiler.
/obj/item/weapon/matter_decompiler
/obj/item/matter_decompiler
name = "matter decompiler"
desc = "Eating trash, bits of glass, or other debris will replenish your stores."
@@ -171,10 +171,10 @@
"plastic" = 0
)
/obj/item/weapon/matter_decompiler/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
/obj/item/matter_decompiler/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
return
/obj/item/weapon/matter_decompiler/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity, params)
/obj/item/matter_decompiler/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity, params)
if(!proximity) return //Not adjacent.
@@ -228,15 +228,15 @@
for(var/obj/W in T)
//Different classes of items give different commodities.
if(istype(W,/obj/item/weapon/cigbutt))
if(istype(W,/obj/item/cigbutt))
stored_comms["plastic"]++
else if(istype(W,/obj/structure/spider/spiderling))
stored_comms["wood"]++
stored_comms["wood"]++
stored_comms["plastic"]++
stored_comms["plastic"]++
else if(istype(W,/obj/item/weapon/light))
var/obj/item/weapon/light/L = W
else if(istype(W,/obj/item/light))
var/obj/item/light/L = W
if(L.status >= 2) //In before someone changes the inexplicably local defines. ~ Z
stored_comms["metal"]++
stored_comms["glass"]++
@@ -259,20 +259,20 @@
stored_comms["glass"]++
else if(istype(W,/obj/item/ammo_casing))
stored_comms["metal"]++
else if(istype(W,/obj/item/weapon/shard))
else if(istype(W,/obj/item/shard))
stored_comms["glass"]++
stored_comms["glass"]++
stored_comms["glass"]++
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/grown))
else if(istype(W,/obj/item/reagent_containers/food/snacks/grown))
stored_comms["wood"]++
stored_comms["wood"]++
stored_comms["wood"]++
stored_comms["wood"]++
else if(istype(W,/obj/item/weapon/broken_bottle))
else if(istype(W,/obj/item/broken_bottle))
stored_comms["glass"]++
stored_comms["glass"]++
stored_comms["glass"]++
else if(istype(W,/obj/item/weapon/light/tube) || istype(W,/obj/item/weapon/light/bulb))
else if(istype(W,/obj/item/light/tube) || istype(W,/obj/item/light/bulb))
stored_comms["glass"]++
else
continue
@@ -294,7 +294,7 @@
return
if(!module)
module = new /obj/item/weapon/robot_module/drone(src)
module = new /obj/item/robot_module/drone(src)
var/dat = "<HEAD><TITLE>Drone modules</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
dat += {"<A HREF='?src=[UID()];mach_close=robotmod'>Close</A>
@@ -323,7 +323,7 @@
else
module_string += text("[O]: <A HREF=?src=[UID()];act=\ref[O]>Activate</A><BR>")
if((istype(O,/obj/item/weapon) || istype(O,/obj/item/device)) && !(istype(O,/obj/item/stack/cable_coil)))
if((istype(O,/obj/item) || istype(O,/obj/item/device)) && !(istype(O,/obj/item/stack/cable_coil)))
tools += module_string
else
resources += module_string
@@ -135,7 +135,7 @@
if("law")
if(istype(module,/obj/item/weapon/robot_module/security))
if(istype(module,/obj/item/robot_module/security))
message = "<B>[src]</B> shows its legal authorization barcode."
playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0)
@@ -144,7 +144,7 @@
to_chat(src, "You are not THE LAW, pal.")
if("halt")
if(istype(module,/obj/item/weapon/robot_module/security))
if(istype(module,/obj/item/robot_module/security))
message = "<B>[src]</B>'s speakers skreech, \"Halt! Security!\"."
playsound(src.loc, 'sound/voice/halt.ogg', 50, 0)
@@ -105,8 +105,8 @@
/mob/living/silicon/robot/drop_item()
var/obj/item/I = get_active_hand()
if(istype(I, /obj/item/weapon/gripper))
var/obj/item/weapon/gripper/G = I
if(istype(I, /obj/item/gripper))
var/obj/item/gripper/G = I
G.drop_item_p(silent = 1)
return
+33 -33
View File
@@ -27,7 +27,7 @@ var/list/robot_verbs_default = list(
var/obj/screen/robot_modules_background
//3 Modules can be activated at any one time.
var/obj/item/weapon/robot_module/module = null
var/obj/item/robot_module/module = null
var/module_active = null
var/module_state_1 = null
var/module_state_2 = null
@@ -35,7 +35,7 @@ var/list/robot_verbs_default = list(
var/obj/item/device/radio/borg/radio = null
var/mob/living/silicon/ai/connected_ai = null
var/obj/item/weapon/stock_parts/cell/cell = null
var/obj/item/stock_parts/cell/cell = null
var/obj/machinery/camera/camera = null
// Components are basically robot organs.
@@ -140,7 +140,7 @@ var/list/robot_verbs_default = list(
C.wrapped = new C.external_type
if(!cell)
cell = new /obj/item/weapon/stock_parts/cell(src)
cell = new /obj/item/stock_parts/cell(src)
cell.maxcharge = 7500
cell.charge = 7500
@@ -299,7 +299,7 @@ var/list/robot_verbs_default = list(
switch(modtype)
if("Standard")
module = new /obj/item/weapon/robot_module/standard(src)
module = new /obj/item/robot_module/standard(src)
module.channels = list("Service" = 1)
module_sprites["Basic"] = "robot_old"
module_sprites["Android"] = "droid"
@@ -307,7 +307,7 @@ var/list/robot_verbs_default = list(
module_sprites["Noble-STD"] = "Noble-STD"
if("Service")
module = new /obj/item/weapon/robot_module/butler(src)
module = new /obj/item/robot_module/butler(src)
module.channels = list("Service" = 1)
module_sprites["Waitress"] = "Service"
module_sprites["Kent"] = "toiletbot"
@@ -319,7 +319,7 @@ var/list/robot_verbs_default = list(
module_sprites["Cricket"] = "Cricket-SERV"
if("Miner")
module = new /obj/item/weapon/robot_module/miner(src)
module = new /obj/item/robot_module/miner(src)
module.channels = list("Supply" = 1)
if(camera && "Robots" in camera.network)
camera.network.Add("Mining Outpost")
@@ -331,7 +331,7 @@ var/list/robot_verbs_default = list(
module_sprites["Cricket"] = "Cricket-MINE"
if("Medical")
module = new /obj/item/weapon/robot_module/medical(src)
module = new /obj/item/robot_module/medical(src)
module.channels = list("Medical" = 1)
if(camera && "Robots" in camera.network)
camera.network.Add("Medical")
@@ -345,7 +345,7 @@ var/list/robot_verbs_default = list(
status_flags &= ~CANPUSH
if("Security")
module = new /obj/item/weapon/robot_module/security(src)
module = new /obj/item/robot_module/security(src)
module.channels = list("Security" = 1)
module_sprites["Basic"] = "secborg"
module_sprites["Red Knight"] = "Security"
@@ -357,7 +357,7 @@ var/list/robot_verbs_default = list(
status_flags &= ~CANPUSH
if("Engineering")
module = new /obj/item/weapon/robot_module/engineering(src)
module = new /obj/item/robot_module/engineering(src)
module.channels = list("Engineering" = 1)
if(camera && "Robots" in camera.network)
camera.network.Add("Engineering")
@@ -370,7 +370,7 @@ var/list/robot_verbs_default = list(
magpulse = 1
if("Janitor")
module = new /obj/item/weapon/robot_module/janitor(src)
module = new /obj/item/robot_module/janitor(src)
module.channels = list("Service" = 1)
module_sprites["Basic"] = "JanBot2"
module_sprites["Mopbot"] = "janitorrobot"
@@ -380,17 +380,17 @@ var/list/robot_verbs_default = list(
module_sprites["Cricket"] = "Cricket-JANI"
if("Combat")
module = new /obj/item/weapon/robot_module/combat(src)
module = new /obj/item/robot_module/combat(src)
module.channels = list("Security" = 1)
icon_state = "droidcombat"
if("Nations")
module = new /obj/item/weapon/robot_module/nations(src)
module = new /obj/item/robot_module/nations(src)
module.channels = list()
icon_state = "droidpeace"
if("Hunter")
module = new /obj/item/weapon/robot_module/alien/hunter(src)
module = new /obj/item/robot_module/alien/hunter(src)
icon = "icons/mob/alien.dmi"
icon_state = "xenoborg-state-a"
modtype = "Xeno-Hu"
@@ -575,7 +575,7 @@ var/list/robot_verbs_default = list(
return 2
/mob/living/silicon/robot/attackby(obj/item/weapon/W, mob/user, params)
/mob/living/silicon/robot/attackby(obj/item/W, mob/user, params)
if(opened) // Are they trying to insert something?
for(var/V in components)
var/datum/robot_component/C = components[V]
@@ -595,13 +595,13 @@ var/list/robot_verbs_default = list(
return
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == INTENT_HELP)
if(istype(W, /obj/item/weldingtool) && user.a_intent == INTENT_HELP)
if(W == module_active)
return
if(!getBruteLoss())
to_chat(user, "<span class='notice'>Nothing to fix!</span>")
return
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
user.changeNext_move(CLICK_CD_MELEE)
if(WT.remove_fuel(0))
playsound(src.loc, W.usesound, 50, 1)
@@ -626,7 +626,7 @@ var/list/robot_verbs_default = list(
coil.use(1)
user.visible_message("<span class='alert'>\The [user] fixes some of the burnt wires on \the [src] with \the [coil].</span>")
else if(istype(W, /obj/item/weapon/crowbar)) // crowbar means open or close the cover
else if(istype(W, /obj/item/crowbar)) // crowbar means open or close the cover
if(opened)
if(cell)
to_chat(user, "You close the cover.")
@@ -675,7 +675,7 @@ var/list/robot_verbs_default = list(
opened = 1
update_icons()
else if(istype(W, /obj/item/weapon/stock_parts/cell) && opened) // trying to put a cell inside
else if(istype(W, /obj/item/stock_parts/cell) && opened) // trying to put a cell inside
var/datum/robot_component/C = components["power cell"]
if(wiresexposed)
to_chat(user, "Close the panel first.")
@@ -695,18 +695,18 @@ var/list/robot_verbs_default = list(
C.electronics_damage = 0
diag_hud_set_borgcell()
else if(istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/multitool))
else if(istype(W, /obj/item/wirecutters) || istype(W, /obj/item/device/multitool))
if(wiresexposed)
wires.Interact(user)
else
to_chat(user, "You can't reach the wiring.")
else if(istype(W, /obj/item/weapon/screwdriver) && opened && !cell) // haxing
else if(istype(W, /obj/item/screwdriver) && opened && !cell) // haxing
wiresexposed = !wiresexposed
to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]")
update_icons()
else if(istype(W, /obj/item/weapon/screwdriver) && opened && cell) // radio
else if(istype(W, /obj/item/screwdriver) && opened && cell) // radio
if(radio)
radio.attackby(W,user)//Push it to the radio to let it handle everything
else
@@ -719,7 +719,7 @@ var/list/robot_verbs_default = list(
else
to_chat(user, "Unable to locate a radio.")
else if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(emagged)//still allow them to open the cover
to_chat(user, "The interface seems slightly damaged.")
if(opened)
@@ -807,13 +807,13 @@ var/list/robot_verbs_default = list(
laws.show_laws(src)
to_chat(src, "<span class='boldwarning'>ALERT: [M.real_name] is your new master. Obey your new laws and his commands.</span>")
SetLockdown(0)
if(src.module && istype(src.module, /obj/item/weapon/robot_module/miner))
for(var/obj/item/weapon/pickaxe/drill/cyborg/D in src.module.modules)
if(src.module && istype(src.module, /obj/item/robot_module/miner))
for(var/obj/item/pickaxe/drill/cyborg/D in src.module.modules)
qdel(D)
src.module.modules += new /obj/item/weapon/pickaxe/drill/cyborg/diamond(src.module)
src.module.modules += new /obj/item/pickaxe/drill/cyborg/diamond(src.module)
src.module.rebuild()
if(src.module && istype(src.module, /obj/item/weapon/robot_module/medical))
for(var/obj/item/weapon/borg_defib/F in src.module.modules)
if(src.module && istype(src.module, /obj/item/robot_module/medical))
for(var/obj/item/borg_defib/F in src.module.modules)
F.safety = 0
if(module)
module.module_type = "Malf" // For the cool factor
@@ -1182,7 +1182,7 @@ var/list/robot_verbs_default = list(
cameranet.updatePortableCamera(src.camera)
updating = 0
if(module)
if(module.type == /obj/item/weapon/robot_module/janitor)
if(module.type == /obj/item/robot_module/janitor)
var/turf/tile = loc
if(isturf(tile))
var/floor_only = TRUE
@@ -1375,7 +1375,7 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/deathsquad/init()
laws = new /datum/ai_laws/deathsquad
module = new /obj/item/weapon/robot_module/deathsquad(src)
module = new /obj/item/robot_module/deathsquad(src)
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
radio = new /obj/item/device/radio/borg/deathsquad(src)
@@ -1429,7 +1429,7 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/syndicate/init()
laws = new /datum/ai_laws/syndicate_override
module = new /obj/item/weapon/robot_module/syndicate(src)
module = new /obj/item/robot_module/syndicate(src)
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
radio = new /obj/item/device/radio/borg/syndicate(src)
@@ -1455,7 +1455,7 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/syndicate/medical/init()
..()
module = new /obj/item/weapon/robot_module/syndicate_medical(src)
module = new /obj/item/robot_module/syndicate_medical(src)
/mob/living/silicon/robot/combat
base_icon = "droidcombat"
@@ -1465,7 +1465,7 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/combat/init()
..()
module = new /obj/item/weapon/robot_module/combat(src)
module = new /obj/item/robot_module/combat(src)
module.channels = list("Security" = 1)
//languages
module.add_languages(src)
@@ -1527,7 +1527,7 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/nations/init()
..()
module = new /obj/item/weapon/robot_module/nations(src)
module = new /obj/item/robot_module/nations(src)
//languages
module.add_languages(src)
//subsystems
@@ -1,12 +1,12 @@
// A special pen for service droids. Can be toggled to switch between normal writing mode, and paper rename mode
// Allows service droids to rename paper items.
/obj/item/weapon/pen/multi/robopen
/obj/item/pen/multi/robopen
desc = "A black ink printing attachment with a paper naming mode."
name = "Printing Pen"
var/mode = 1
/obj/item/weapon/pen/multi/robopen/attack_self(mob/user as mob)
/obj/item/pen/multi/robopen/attack_self(mob/user as mob)
var/choice = input("Would you like to change colour or mode?") as null|anything in list("Colour","Mode")
if(!choice) return
@@ -29,7 +29,7 @@
// Copied over from paper's rename verb
// see code\modules\paperwork\paper.dm line 62
/obj/item/weapon/pen/multi/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj)
/obj/item/pen/multi/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj)
if( !user || !paper )
return
var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text
@@ -43,17 +43,17 @@
return
//TODO: Add prewritten forms to dispense when you work out a good way to store the strings.
/obj/item/weapon/form_printer
/obj/item/form_printer
//name = "paperwork printer"
name = "paper dispenser"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paper_bin1"
item_state = "sheet-metal"
/obj/item/weapon/form_printer/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
/obj/item/form_printer/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
return
/obj/item/weapon/form_printer/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)
/obj/item/form_printer/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)
if(!target || !flag)
return
@@ -61,12 +61,12 @@
if(istype(target,/obj/structure/table))
deploy_paper(get_turf(target))
/obj/item/weapon/form_printer/attack_self(mob/user as mob)
/obj/item/form_printer/attack_self(mob/user as mob)
deploy_paper(get_turf(src))
/obj/item/weapon/form_printer/proc/deploy_paper(var/turf/T)
/obj/item/form_printer/proc/deploy_paper(var/turf/T)
T.visible_message("<span class='notice'>\The [src.loc] dispenses a sheet of crisp white paper.</span>")
new /obj/item/weapon/paper(T)
new /obj/item/paper(T)
//Personal shielding for the combat module.
@@ -1,4 +1,4 @@
/obj/item/weapon/robot_module
/obj/item/robot_module
name = "robot module"
icon = 'icons/obj/module.dmi'
icon_state = "std_module"
@@ -17,7 +17,7 @@
var/channels = list()
/obj/item/weapon/robot_module/emp_act(severity)
/obj/item/robot_module/emp_act(severity)
if(modules)
for(var/obj/O in modules)
O.emp_act(severity)
@@ -26,17 +26,17 @@
..()
/obj/item/weapon/robot_module/New()
/obj/item/robot_module/New()
modules += new /obj/item/device/flash/cyborg(src)
emag = new /obj/item/toy/sword(src)
emag.name = "Placeholder Emag Item"
/obj/item/weapon/robot_module/Destroy()
/obj/item/robot_module/Destroy()
QDEL_LIST(modules)
QDEL_NULL(emag)
return ..()
/obj/item/weapon/robot_module/proc/fix_modules()
/obj/item/robot_module/proc/fix_modules()
for(var/obj/item/I in modules)
I.flags |= NODROP
I.mouse_opacity = 2
@@ -44,7 +44,7 @@
emag.flags |= NODROP
emag.mouse_opacity = 2
/obj/item/weapon/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R)
/obj/item/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R)
if(!stacktypes || !stacktypes.len)
return
@@ -64,14 +64,14 @@
if(stack_respawned && istype(R) && R.hud_used)
R.hud_used.update_robot_modules_display()
/obj/item/weapon/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module
/obj/item/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module
var/list/temp_list = modules
modules = list()
for(var/obj/O in temp_list)
if(O)
modules += O
/obj/item/weapon/robot_module/proc/add_languages(mob/living/silicon/robot/R)
/obj/item/robot_module/proc/add_languages(mob/living/silicon/robot/R)
//full set of languages
R.add_language("Galactic Common", 1)
R.add_language("Sol Common", 1)
@@ -89,36 +89,36 @@
R.add_language("Orluum", 0)
R.add_language("Clownish",0)
/obj/item/weapon/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R)
/obj/item/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R)
R.verbs |= subsystems
for(var/A in module_actions)
var/datum/action/act = new A()
act.Grant(R)
R.module_actions += act
/obj/item/weapon/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R)
/obj/item/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R)
R.verbs -= subsystems
for(var/datum/action/A in R.module_actions)
A.Remove(R)
qdel(A)
R.module_actions.Cut()
/obj/item/weapon/robot_module/standard
/obj/item/robot_module/standard
name = "standard robot module"
module_type = "Standard"
/obj/item/weapon/robot_module/standard/New()
/obj/item/robot_module/standard/New()
..()
modules += new /obj/item/weapon/melee/baton/loaded(src)
modules += new /obj/item/weapon/extinguisher(src)
modules += new /obj/item/weapon/wrench/cyborg(src)
modules += new /obj/item/weapon/crowbar/cyborg(src)
modules += new /obj/item/melee/baton/loaded(src)
modules += new /obj/item/extinguisher(src)
modules += new /obj/item/wrench/cyborg(src)
modules += new /obj/item/crowbar/cyborg(src)
modules += new /obj/item/device/healthanalyzer(src)
emag = new /obj/item/weapon/melee/energy/sword/cyborg(src)
emag = new /obj/item/melee/energy/sword/cyborg(src)
fix_modules()
/obj/item/weapon/robot_module/medical
/obj/item/robot_module/medical
name = "medical robot module"
module_type = "Medical"
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
@@ -129,46 +129,46 @@
/obj/item/stack/nanopaste = 6
)
/obj/item/weapon/robot_module/medical/New()
/obj/item/robot_module/medical/New()
..()
modules += new /obj/item/device/healthanalyzer/advanced(src)
modules += new /obj/item/device/robotanalyzer(src)
modules += new /obj/item/device/reagent_scanner/adv(src)
modules += new /obj/item/weapon/borg_defib(src)
modules += new /obj/item/borg_defib(src)
modules += new /obj/item/roller_holder(src)
modules += new /obj/item/weapon/reagent_containers/borghypo(src)
modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
modules += new /obj/item/weapon/reagent_containers/dropper(src)
modules += new /obj/item/weapon/reagent_containers/syringe(src)
modules += new /obj/item/weapon/extinguisher/mini(src)
modules += new /obj/item/reagent_containers/borghypo(src)
modules += new /obj/item/reagent_containers/glass/beaker/large(src)
modules += new /obj/item/reagent_containers/dropper(src)
modules += new /obj/item/reagent_containers/syringe(src)
modules += new /obj/item/extinguisher/mini(src)
modules += new /obj/item/stack/medical/bruise_pack/advanced(src)
modules += new /obj/item/stack/medical/ointment/advanced(src)
modules += new /obj/item/stack/medical/splint(src)
modules += new /obj/item/stack/nanopaste(src)
modules += new /obj/item/weapon/scalpel(src)
modules += new /obj/item/weapon/hemostat(src)
modules += new /obj/item/weapon/retractor(src)
modules += new /obj/item/weapon/cautery(src)
modules += new /obj/item/weapon/bonegel(src)
modules += new /obj/item/weapon/FixOVein(src)
modules += new /obj/item/weapon/bonesetter(src)
modules += new /obj/item/weapon/circular_saw(src)
modules += new /obj/item/weapon/surgicaldrill(src)
modules += new /obj/item/scalpel(src)
modules += new /obj/item/hemostat(src)
modules += new /obj/item/retractor(src)
modules += new /obj/item/cautery(src)
modules += new /obj/item/bonegel(src)
modules += new /obj/item/FixOVein(src)
modules += new /obj/item/bonesetter(src)
modules += new /obj/item/circular_saw(src)
modules += new /obj/item/surgicaldrill(src)
emag = new /obj/item/weapon/reagent_containers/spray(src)
emag = new /obj/item/reagent_containers/spray(src)
emag.reagents.add_reagent("facid", 250)
emag.name = "Polyacid spray"
fix_modules()
/obj/item/weapon/robot_module/medical/respawn_consumable(mob/living/silicon/robot/R)
/obj/item/robot_module/medical/respawn_consumable(mob/living/silicon/robot/R)
if(emag)
var/obj/item/weapon/reagent_containers/spray/PS = emag
var/obj/item/reagent_containers/spray/PS = emag
PS.reagents.add_reagent("facid", 2)
..()
/obj/item/weapon/robot_module/engineering
/obj/item/robot_module/engineering
name = "engineering robot module"
module_type = "Engineer"
subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
@@ -185,22 +185,22 @@
/obj/item/stack/tile/plasteel = 20
)
/obj/item/weapon/robot_module/engineering/New()
/obj/item/robot_module/engineering/New()
..()
modules += new /obj/item/weapon/rcd/borg(src)
modules += new /obj/item/weapon/rpd(src)
modules += new /obj/item/weapon/extinguisher(src)
modules += new /obj/item/weapon/weldingtool/largetank/cyborg(src)
modules += new /obj/item/weapon/screwdriver/cyborg(src)
modules += new /obj/item/weapon/wrench/cyborg(src)
modules += new /obj/item/weapon/crowbar/cyborg(src)
modules += new /obj/item/weapon/wirecutters/cyborg(src)
modules += new /obj/item/rcd/borg(src)
modules += new /obj/item/rpd(src)
modules += new /obj/item/extinguisher(src)
modules += new /obj/item/weldingtool/largetank/cyborg(src)
modules += new /obj/item/screwdriver/cyborg(src)
modules += new /obj/item/wrench/cyborg(src)
modules += new /obj/item/crowbar/cyborg(src)
modules += new /obj/item/wirecutters/cyborg(src)
modules += new /obj/item/device/multitool/cyborg(src)
modules += new /obj/item/device/t_scanner(src)
modules += new /obj/item/device/analyzer(src)
modules += new /obj/item/taperoll/engineering(src)
modules += new /obj/item/weapon/gripper(src)
modules += new /obj/item/weapon/matter_decompiler(src)
modules += new /obj/item/gripper(src)
modules += new /obj/item/matter_decompiler(src)
modules += new /obj/item/device/floor_painter(src)
modules += new /obj/item/areaeditor/blueprints/cyborg(src)
emag = new /obj/item/borg/stun(src)
@@ -212,78 +212,78 @@
fix_modules()
/obj/item/weapon/robot_module/security
/obj/item/robot_module/security
name = "security robot module"
module_type = "Security"
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
/obj/item/weapon/robot_module/security/New()
/obj/item/robot_module/security/New()
..()
modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/weapon/melee/baton/loaded(src)
modules += new /obj/item/weapon/gun/energy/disabler/cyborg(src)
modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/melee/baton/loaded(src)
modules += new /obj/item/gun/energy/disabler/cyborg(src)
modules += new /obj/item/taperoll/police(src)
modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src)
emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
emag = new /obj/item/gun/energy/laser/cyborg(src)
fix_modules()
/obj/item/weapon/robot_module/janitor
/obj/item/robot_module/janitor
name = "janitorial robot module"
module_type = "Janitor"
/obj/item/weapon/robot_module/janitor/New()
/obj/item/robot_module/janitor/New()
..()
modules += new /obj/item/weapon/soap/nanotrasen(src)
modules += new /obj/item/weapon/storage/bag/trash/cyborg(src)
modules += new /obj/item/weapon/mop/advanced/cyborg(src)
modules += new /obj/item/soap/nanotrasen(src)
modules += new /obj/item/storage/bag/trash/cyborg(src)
modules += new /obj/item/mop/advanced/cyborg(src)
modules += new /obj/item/device/lightreplacer(src)
modules += new /obj/item/weapon/holosign_creator(src)
emag = new /obj/item/weapon/reagent_containers/spray(src)
modules += new /obj/item/holosign_creator(src)
emag = new /obj/item/reagent_containers/spray(src)
emag.reagents.add_reagent("lube", 250)
emag.name = "Lube spray"
fix_modules()
/obj/item/weapon/robot_module/butler
/obj/item/robot_module/butler
name = "service robot module"
module_type = "Service"
/obj/item/weapon/robot_module/butler/New()
/obj/item/robot_module/butler/New()
..()
modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/cola(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/sodawater(src)
modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice(src) // -0.3 oxy/sec
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice(src) // -0.2 fire/sec
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice(src) // -0.2 tox/sec
modules += new /obj/item/weapon/reagent_containers/food/drinks/coffee(src) // -1 paralysis stunned & weakened/sec
modules += new /obj/item/weapon/reagent_containers/food/drinks/tea(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/milk(src) // -0.2 brute/sec
modules += new /obj/item/weapon/reagent_containers/food/condiment/sugar(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/ice(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/cream(src)
modules += new /obj/item/reagent_containers/food/drinks/cans/beer(src)
modules += new /obj/item/reagent_containers/food/drinks/cans/cola(src)
modules += new /obj/item/reagent_containers/food/drinks/cans/sodawater(src)
modules += new /obj/item/reagent_containers/food/condiment/enzyme(src)
modules += new /obj/item/reagent_containers/food/drinks/bottle/orangejuice(src) // -0.3 oxy/sec
modules += new /obj/item/reagent_containers/food/drinks/bottle/tomatojuice(src) // -0.2 fire/sec
modules += new /obj/item/reagent_containers/food/drinks/bottle/limejuice(src) // -0.2 tox/sec
modules += new /obj/item/reagent_containers/food/drinks/coffee(src) // -1 paralysis stunned & weakened/sec
modules += new /obj/item/reagent_containers/food/drinks/tea(src)
modules += new /obj/item/reagent_containers/food/drinks/bottle/milk(src) // -0.2 brute/sec
modules += new /obj/item/reagent_containers/food/condiment/sugar(src)
modules += new /obj/item/reagent_containers/food/drinks/ice(src)
modules += new /obj/item/reagent_containers/food/drinks/bottle/cream(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/tequila(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/vodka(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(src)
modules += new /obj/item/reagent_containers/food/drinks/bottle/tequila(src)
modules += new /obj/item/reagent_containers/food/drinks/bottle/vodka(src)
modules += new /obj/item/reagent_containers/food/drinks/bottle/whiskey(src)
modules += new /obj/item/weapon/pen(src)
modules += new /obj/item/weapon/razor(src)
modules += new /obj/item/pen(src)
modules += new /obj/item/razor(src)
modules += new /obj/item/device/instrument/piano_synth(src)
modules += new /obj/item/device/healthanalyzer/advanced(src)
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
var/obj/item/rsf/M = new /obj/item/rsf(src)
M.matter = 30
modules += M
modules += new /obj/item/weapon/reagent_containers/dropper/cyborg(src)
modules += new /obj/item/weapon/lighter/zippo(src)
modules += new /obj/item/weapon/storage/bag/tray/cyborg(src)
modules += new /obj/item/weapon/reagent_containers/food/drinks/shaker(src)
emag = new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src)
modules += new /obj/item/reagent_containers/dropper/cyborg(src)
modules += new /obj/item/lighter/zippo(src)
modules += new /obj/item/storage/bag/tray/cyborg(src)
modules += new /obj/item/reagent_containers/food/drinks/shaker(src)
emag = new /obj/item/reagent_containers/food/drinks/cans/beer(src)
var/datum/reagents/R = new/datum/reagents(50)
emag.reagents = R
@@ -293,15 +293,15 @@
fix_modules()
/obj/item/weapon/robot_module/butler/respawn_consumable(var/mob/living/silicon/robot/R)
var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in modules
/obj/item/robot_module/butler/respawn_consumable(var/mob/living/silicon/robot/R)
var/obj/item/reagent_containers/food/condiment/enzyme/E = locate() in modules
E.reagents.add_reagent("enzyme", 2)
if(emag)
var/obj/item/weapon/reagent_containers/food/drinks/cans/beer/B = emag
var/obj/item/reagent_containers/food/drinks/cans/beer/B = emag
B.reagents.add_reagent("beer2", 2)
..()
/obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R)
/obj/item/robot_module/butler/add_languages(var/mob/living/silicon/robot/R)
//full set of languages
R.add_language("Galactic Common", 1)
R.add_language("Sol Common", 1)
@@ -319,61 +319,61 @@
R.add_language("Clownish",1)
/obj/item/weapon/robot_module/miner
/obj/item/robot_module/miner
name = "miner robot module"
module_type = "Miner"
module_actions = list(
/datum/action/innate/robot_sight/meson,
)
/obj/item/weapon/robot_module/miner/New()
/obj/item/robot_module/miner/New()
..()
modules += new /obj/item/weapon/storage/bag/ore/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/cyborg(src)
modules += new /obj/item/weapon/shovel(src)
modules += new /obj/item/weapon/weldingtool/mini(src)
modules += new /obj/item/weapon/extinguisher/mini(src)
modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
modules += new /obj/item/storage/bag/ore/cyborg(src)
modules += new /obj/item/pickaxe/drill/cyborg(src)
modules += new /obj/item/shovel(src)
modules += new /obj/item/weldingtool/mini(src)
modules += new /obj/item/extinguisher/mini(src)
modules += new /obj/item/storage/bag/sheetsnatcher/borg(src)
modules += new /obj/item/device/t_scanner/adv_mining_scanner/cyborg(src)
modules += new /obj/item/weapon/gun/energy/kinetic_accelerator/cyborg(src)
modules += new /obj/item/gun/energy/kinetic_accelerator/cyborg(src)
modules += new /obj/item/device/gps/cyborg(src)
emag = new /obj/item/borg/stun(src)
fix_modules()
/obj/item/weapon/robot_module/deathsquad
/obj/item/robot_module/deathsquad
name = "NT advanced combat module"
module_type = "Malf"
module_actions = list(
/datum/action/innate/robot_sight/thermal,
)
/obj/item/weapon/robot_module/deathsquad/New()
/obj/item/robot_module/deathsquad/New()
..()
modules += new /obj/item/weapon/melee/energy/sword/cyborg(src)
modules += new /obj/item/weapon/gun/energy/pulse/cyborg(src)
modules += new /obj/item/weapon/crowbar(src)
modules += new /obj/item/melee/energy/sword/cyborg(src)
modules += new /obj/item/gun/energy/pulse/cyborg(src)
modules += new /obj/item/crowbar(src)
emag = null
fix_modules()
/obj/item/weapon/robot_module/syndicate
/obj/item/robot_module/syndicate
name = "syndicate assault robot module"
module_type = "Malf" // cuz it looks cool
/obj/item/weapon/robot_module/syndicate/New()
/obj/item/robot_module/syndicate/New()
..()
modules += new /obj/item/weapon/melee/energy/sword/cyborg(src)
modules += new /obj/item/weapon/gun/energy/printer(src)
modules += new /obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi/cyborg(src)
modules += new /obj/item/weapon/card/emag(src)
modules += new /obj/item/weapon/crowbar/cyborg(src)
modules += new /obj/item/weapon/pinpointer/operative(src)
modules += new /obj/item/melee/energy/sword/cyborg(src)
modules += new /obj/item/gun/energy/printer(src)
modules += new /obj/item/gun/projectile/revolver/grenadelauncher/multi/cyborg(src)
modules += new /obj/item/card/emag(src)
modules += new /obj/item/crowbar/cyborg(src)
modules += new /obj/item/pinpointer/operative(src)
emag = null
fix_modules()
/obj/item/weapon/robot_module/syndicate_medical
/obj/item/robot_module/syndicate_medical
name = "syndicate medical robot module"
module_type = "Malf"
stacktypes = list(
@@ -383,96 +383,96 @@
/obj/item/stack/nanopaste = 25
)
/obj/item/weapon/robot_module/syndicate_medical/New()
/obj/item/robot_module/syndicate_medical/New()
..()
modules += new /obj/item/device/healthanalyzer/advanced(src)
modules += new /obj/item/device/reagent_scanner/adv(src)
modules += new /obj/item/weapon/borg_defib(src)
modules += new /obj/item/borg_defib(src)
modules += new /obj/item/roller_holder(src)
modules += new /obj/item/weapon/reagent_containers/borghypo/syndicate(src)
modules += new /obj/item/weapon/extinguisher/mini(src)
modules += new /obj/item/reagent_containers/borghypo/syndicate(src)
modules += new /obj/item/extinguisher/mini(src)
modules += new /obj/item/stack/medical/bruise_pack/advanced(src)
modules += new /obj/item/stack/medical/ointment/advanced(src)
modules += new /obj/item/stack/medical/splint(src)
modules += new /obj/item/stack/nanopaste(src)
modules += new /obj/item/weapon/scalpel(src)
modules += new /obj/item/weapon/hemostat(src)
modules += new /obj/item/weapon/retractor(src)
modules += new /obj/item/weapon/cautery(src)
modules += new /obj/item/weapon/bonegel(src)
modules += new /obj/item/weapon/FixOVein(src)
modules += new /obj/item/weapon/bonesetter(src)
modules += new /obj/item/weapon/surgicaldrill(src)
modules += new /obj/item/weapon/melee/energy/sword/cyborg/saw(src) //Energy saw -- primary weapon
modules += new /obj/item/weapon/card/emag(src)
modules += new /obj/item/weapon/crowbar/cyborg(src)
modules += new /obj/item/weapon/pinpointer/operative(src)
modules += new /obj/item/scalpel(src)
modules += new /obj/item/hemostat(src)
modules += new /obj/item/retractor(src)
modules += new /obj/item/cautery(src)
modules += new /obj/item/bonegel(src)
modules += new /obj/item/FixOVein(src)
modules += new /obj/item/bonesetter(src)
modules += new /obj/item/surgicaldrill(src)
modules += new /obj/item/melee/energy/sword/cyborg/saw(src) //Energy saw -- primary weapon
modules += new /obj/item/card/emag(src)
modules += new /obj/item/crowbar/cyborg(src)
modules += new /obj/item/pinpointer/operative(src)
emag = null
fix_modules()
/obj/item/weapon/robot_module/combat
/obj/item/robot_module/combat
name = "combat robot module"
module_type = "Malf"
module_actions = list(
/datum/action/innate/robot_sight/thermal,
)
/obj/item/weapon/robot_module/combat/New()
/obj/item/robot_module/combat/New()
..()
modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/weapon/gun/energy/gun/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/jackhammer(src)
modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/gun/energy/gun/cyborg(src)
modules += new /obj/item/pickaxe/drill/jackhammer(src)
modules += new /obj/item/borg/combat/shield(src)
modules += new /obj/item/borg/combat/mobility(src)
modules += new /obj/item/weapon/wrench/cyborg(src)
emag = new /obj/item/weapon/gun/energy/lasercannon/cyborg(src)
modules += new /obj/item/wrench/cyborg(src)
emag = new /obj/item/gun/energy/lasercannon/cyborg(src)
fix_modules()
/obj/item/weapon/robot_module/nations
/obj/item/robot_module/nations
name = "nations robot module"
module_type = "Malf"
/obj/item/weapon/robot_module/nations/New()
/obj/item/robot_module/nations/New()
..()
modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/weapon/gun/energy/gun/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/jackhammer(src)
modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/gun/energy/gun/cyborg(src)
modules += new /obj/item/pickaxe/drill/jackhammer(src)
modules += new /obj/item/borg/combat/shield(src)
modules += new /obj/item/borg/combat/mobility(src)
modules += new /obj/item/weapon/wrench/cyborg(src)
emag = new /obj/item/weapon/gun/energy/lasercannon/cyborg(src)
modules += new /obj/item/wrench/cyborg(src)
emag = new /obj/item/gun/energy/lasercannon/cyborg(src)
fix_modules()
/obj/item/weapon/robot_module/alien/hunter
/obj/item/robot_module/alien/hunter
name = "alien hunter module"
module_type = "Standard"
module_actions = list(
/datum/action/innate/robot_sight/thermal/alien,
)
/obj/item/weapon/robot_module/alien/hunter/New()
modules += new /obj/item/weapon/melee/energy/alien/claws(src)
/obj/item/robot_module/alien/hunter/New()
modules += new /obj/item/melee/energy/alien/claws(src)
modules += new /obj/item/device/flash/cyborg/alien(src)
var/obj/item/weapon/reagent_containers/spray/alien/stun/S = new /obj/item/weapon/reagent_containers/spray/alien/stun(src)
var/obj/item/reagent_containers/spray/alien/stun/S = new /obj/item/reagent_containers/spray/alien/stun(src)
S.reagents.add_reagent("ether",250) //nerfed to sleeptoxin to make it less instant drop.
modules += S
var/obj/item/weapon/reagent_containers/spray/alien/smoke/A = new /obj/item/weapon/reagent_containers/spray/alien/smoke(src)
var/obj/item/reagent_containers/spray/alien/smoke/A = new /obj/item/reagent_containers/spray/alien/smoke(src)
S.reagents.add_reagent("water",50) //Water is used as a dummy reagent for the smoke bombs. More of an ammo counter.
modules += A
emag = new /obj/item/weapon/reagent_containers/spray/alien/acid(src)
emag = new /obj/item/reagent_containers/spray/alien/acid(src)
emag.reagents.add_reagent("facid", 125)
emag.reagents.add_reagent("sacid", 125)
fix_modules()
/obj/item/weapon/robot_module/alien/hunter/add_languages(var/mob/living/silicon/robot/R)
/obj/item/robot_module/alien/hunter/add_languages(var/mob/living/silicon/robot/R)
..()
R.add_language("xenocommon", 1)
/obj/item/weapon/robot_module/drone
/obj/item/robot_module/drone
name = "drone module"
module_type = "Engineer"
stacktypes = list(
@@ -486,20 +486,20 @@
/obj/item/stack/cable_coil/cyborg = 30
)
/obj/item/weapon/robot_module/drone/New()
modules += new /obj/item/weapon/weldingtool/largetank/cyborg(src)
modules += new /obj/item/weapon/screwdriver/cyborg(src)
modules += new /obj/item/weapon/wrench/cyborg(src)
modules += new /obj/item/weapon/crowbar/cyborg(src)
modules += new /obj/item/weapon/wirecutters/cyborg(src)
/obj/item/robot_module/drone/New()
modules += new /obj/item/weldingtool/largetank/cyborg(src)
modules += new /obj/item/screwdriver/cyborg(src)
modules += new /obj/item/wrench/cyborg(src)
modules += new /obj/item/crowbar/cyborg(src)
modules += new /obj/item/wirecutters/cyborg(src)
modules += new /obj/item/device/multitool/cyborg(src)
modules += new /obj/item/device/lightreplacer(src)
modules += new /obj/item/weapon/gripper(src)
modules += new /obj/item/weapon/matter_decompiler(src)
modules += new /obj/item/weapon/reagent_containers/spray/cleaner/drone(src)
modules += new /obj/item/weapon/soap(src)
modules += new /obj/item/gripper(src)
modules += new /obj/item/matter_decompiler(src)
modules += new /obj/item/reagent_containers/spray/cleaner/drone(src)
modules += new /obj/item/soap(src)
modules += new /obj/item/device/t_scanner(src)
modules += new /obj/item/weapon/rpd(src)
modules += new /obj/item/rpd(src)
for(var/T in stacktypes)
var/obj/item/stack/sheet/W = new T(src)
@@ -508,8 +508,8 @@
fix_modules()
/obj/item/weapon/robot_module/drone/respawn_consumable(mob/living/silicon/robot/R)
var/obj/item/weapon/reagent_containers/spray/cleaner/C = locate() in modules
/obj/item/robot_module/drone/respawn_consumable(mob/living/silicon/robot/R)
var/obj/item/reagent_containers/spray/cleaner/C = locate() in modules
C.reagents.add_reagent("cleaner", 3)
var/obj/item/device/lightreplacer/LR = locate() in modules
@@ -34,7 +34,7 @@
var/list/player_access = list()
var/emagged = 0
var/obj/item/weapon/card/id/access_card // the ID card that the bot "holds"
var/obj/item/card/id/access_card // the ID card that the bot "holds"
var/list/prev_access = list()
var/on = 1
var/open = 0//Maint panel
@@ -140,7 +140,7 @@
bots_list += src
icon_living = icon_state
icon_dead = icon_state
access_card = new /obj/item/weapon/card/id(src)
access_card = new /obj/item/card/id(src)
//This access is so bots can be immediately set to patrol and leave Robotics, instead of having to be let out first.
access_card.access += access_robotics
set_custom_texts()
@@ -295,14 +295,14 @@
/mob/living/simple_animal/bot/proc/interact(mob/user)
show_controls(user)
/mob/living/simple_animal/bot/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/screwdriver))
/mob/living/simple_animal/bot/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/screwdriver))
if(!locked)
open = !open
to_chat(user, "<span class='notice'>The maintenance panel is now [open ? "opened" : "closed"].</span>")
else
to_chat(user, "<span class='warning'>The maintenance panel is locked.</span>")
else if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda))
if(bot_core.allowed(user) && !open && !emagged)
locked = !locked
to_chat(user, "Controls are now [locked ? "locked." : "unlocked."]")
@@ -340,7 +340,7 @@
to_chat(user, "<span class='warning'>The personality slot is locked.</span>")
else
to_chat(user, "<span class='warning'>[src] is not compatible with [W].</span>")
else if(istype(W, /obj/item/weapon/hemostat) && paicard)
else if(istype(W, /obj/item/hemostat) && paicard)
if(open)
to_chat(user, "<span class='warning'>Close the access panel before manipulating the personality slot!</span>")
else
@@ -351,14 +351,14 @@
ejectpai(user)
else
user.changeNext_move(CLICK_CD_MELEE)
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM)
if(istype(W, /obj/item/weldingtool) && user.a_intent != INTENT_HARM)
if(health >= maxHealth)
to_chat(user, "<span class='warning'>[src] does not need a repair!</span>")
return
if(!open)
to_chat(user, "<span class='warning'>Unable to repair with the maintenance panel closed!</span>")
return
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if(WT.remove_fuel(0, user))
adjustHealth(-10)
add_fingerprint(user)
@@ -514,7 +514,7 @@ Pass a positive integer as an argument to override a bot's default speed.
var/area/end_area = get_area(waypoint)
//For giving the bot temporary all-access.
var/obj/item/weapon/card/id/all_access = new /obj/item/weapon/card/id
var/obj/item/card/id/all_access = new /obj/item/card/id
var/datum/job/captain/All = new/datum/job/captain
all_access.access = All.get_access()
@@ -59,8 +59,8 @@
text_dehack = "[name]'s software has been reset!"
text_dehack_fail = "[name] does not seem to respond to your repair code!"
/mob/living/simple_animal/bot/cleanbot/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
/mob/living/simple_animal/bot/cleanbot/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/card/id)||istype(W, /obj/item/device/pda))
if(bot_core.allowed(user) && !open && !emagged)
locked = !locked
to_chat(user, "<span class='notice'>You [ locked ? "lock" : "unlock"] \the [src] behaviour controls.</span>")
@@ -179,7 +179,7 @@
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
new /obj/item/weapon/reagent_containers/glass/bucket(Tsec)
new /obj/item/reagent_containers/glass/bucket(Tsec)
new /obj/item/device/assembly/prox_sensor(Tsec)
@@ -1,7 +1,7 @@
//Bot Construction
//Cleanbot assembly
/obj/item/weapon/bucket_sensor
/obj/item/bucket_sensor
desc = "It's a bucket. With a sensor attached."
name = "proxy bucket"
icon = 'icons/obj/aibots.dmi'
@@ -13,7 +13,7 @@
w_class = WEIGHT_CLASS_NORMAL
var/created_name = "Cleanbot"
/obj/item/weapon/bucket_sensor/attackby(obj/item/W, mob/user as mob, params)
/obj/item/bucket_sensor/attackby(obj/item/W, mob/user as mob, params)
..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
if(!user.unEquip(W))
@@ -26,7 +26,7 @@
user.unEquip(src, 1)
qdel(src)
else if(istype(W, /obj/item/weapon/pen))
else if(istype(W, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(!t)
return
@@ -36,7 +36,7 @@
//Edbot Assembly
/obj/item/weapon/ed209_assembly
/obj/item/ed209_assembly
name = "\improper ED-209 assembly"
desc = "Some sort of bizarre assembly."
icon = 'icons/obj/aibots.dmi'
@@ -46,10 +46,10 @@
var/created_name = "ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess
var/lasercolor = ""
/obj/item/weapon/ed209_assembly/attackby(obj/item/weapon/W, mob/user, params)
/obj/item/ed209_assembly/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, /obj/item/weapon/pen))
if(istype(W, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(!t)
return
@@ -92,8 +92,8 @@
icon_state = "[lasercolor]ed209_shell"
if(3)
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
if(WT.remove_fuel(0,user))
build_step++
name = "shielded frame assembly"
@@ -151,15 +151,15 @@
var/newname = ""
switch(lasercolor)
if("b")
if(!istype(W, /obj/item/weapon/gun/energy/laser/bluetag))
if(!istype(W, /obj/item/gun/energy/laser/bluetag))
return
newname = "bluetag ED-209 assembly"
if("r")
if(!istype(W, /obj/item/weapon/gun/energy/laser/redtag))
if(!istype(W, /obj/item/gun/energy/laser/redtag))
return
newname = "redtag ED-209 assembly"
if("")
if(!istype(W, /obj/item/weapon/gun/energy/gun/advtaser))
if(!istype(W, /obj/item/gun/energy/gun/advtaser))
return
newname = "taser ED-209 assembly"
else
@@ -174,7 +174,7 @@
qdel(W)
if(8)
if(istype(W, /obj/item/weapon/screwdriver))
if(istype(W, /obj/item/screwdriver))
playsound(loc, W.usesound, 100, 1)
to_chat(user, "<span class='notice'>You start attaching the gun to the frame...</span>")
if(do_after(user, 40 * W.toolspeed, target = src))
@@ -183,7 +183,7 @@
to_chat(user, "<span class='notice'>Taser gun attached.</span>")
if(9)
if(istype(W, /obj/item/weapon/stock_parts/cell))
if(istype(W, /obj/item/stock_parts/cell))
if(!user.unEquip(W))
return
build_step++
@@ -195,7 +195,7 @@
qdel(src)
//Floorbot assemblies
/obj/item/weapon/toolbox_tiles
/obj/item/toolbox_tiles
desc = "It's a toolbox with tiles sticking out the top"
name = "tiles and toolbox"
icon = 'icons/obj/aibots.dmi'
@@ -207,7 +207,7 @@
w_class = WEIGHT_CLASS_NORMAL
var/created_name = "Floorbot"
/obj/item/weapon/toolbox_tiles_sensor
/obj/item/toolbox_tiles_sensor
desc = "It's a toolbox with tiles sticking out the top and a sensor attached"
name = "tiles, toolbox and sensor arrangement"
icon = 'icons/obj/aibots.dmi'
@@ -219,7 +219,7 @@
w_class = WEIGHT_CLASS_NORMAL
var/created_name = "Floorbot"
/obj/item/weapon/storage/toolbox/mechanical/attackby(obj/item/stack/tile/plasteel/T, mob/user, params)
/obj/item/storage/toolbox/mechanical/attackby(obj/item/stack/tile/plasteel/T, mob/user, params)
if(!istype(T, /obj/item/stack/tile/plasteel))
..()
return
@@ -229,7 +229,7 @@
if(T.use(10))
if(user.s_active)
user.s_active.close(user)
var/obj/item/weapon/toolbox_tiles/B = new /obj/item/weapon/toolbox_tiles
var/obj/item/toolbox_tiles/B = new /obj/item/toolbox_tiles
user.put_in_hands(B)
to_chat(user, "<span class='notice'>You add the tiles into the empty toolbox. They protrude from the top.</span>")
user.unEquip(src, 1)
@@ -238,18 +238,18 @@
to_chat(user, "<span class='warning'>You need 10 floor tiles to start building a floorbot.</span>")
return
/obj/item/weapon/toolbox_tiles/attackby(obj/item/W, mob/user, params)
/obj/item/toolbox_tiles/attackby(obj/item/W, mob/user, params)
..()
if(isprox(W))
qdel(W)
var/obj/item/weapon/toolbox_tiles_sensor/B = new /obj/item/weapon/toolbox_tiles_sensor()
var/obj/item/toolbox_tiles_sensor/B = new /obj/item/toolbox_tiles_sensor()
B.created_name = created_name
user.put_in_hands(B)
to_chat(user, "<span class='notice'>You add the sensor to the toolbox and tiles.</span>")
user.unEquip(src, 1)
qdel(src)
else if(istype(W, /obj/item/weapon/pen))
else if(istype(W, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(!t)
return
@@ -258,7 +258,7 @@
created_name = t
/obj/item/weapon/toolbox_tiles_sensor/attackby(obj/item/W, mob/user, params)
/obj/item/toolbox_tiles_sensor/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
qdel(W)
@@ -268,7 +268,7 @@
to_chat(user, "<span class='notice'>You add the robot arm to the odd looking toolbox assembly. Boop beep!</span>")
user.unEquip(src, 1)
qdel(src)
else if(istype(W, /obj/item/weapon/pen))
else if(istype(W, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(!t)
return
@@ -278,7 +278,7 @@
created_name = t
//Medbot Assembly
/obj/item/weapon/firstaid_arm_assembly
/obj/item/firstaid_arm_assembly
name = "incomplete medibot assembly."
desc = "A first aid kit with a robot arm permanently grafted to it."
icon = 'icons/obj/aibots.dmi'
@@ -294,13 +294,13 @@
var/treatment_virus = "spaceacillin"
req_one_access = list(access_medical, access_robotics)
/obj/item/weapon/firstaid_arm_assembly/New()
/obj/item/firstaid_arm_assembly/New()
..()
spawn(5)
if(skin)
overlays += image('icons/obj/aibots.dmi', "kit_skin_[skin]")
/obj/item/weapon/storage/firstaid/attackby(obj/item/robot_parts/S, mob/user, params)
/obj/item/storage/firstaid/attackby(obj/item/robot_parts/S, mob/user, params)
if((!istype(S, /obj/item/robot_parts/l_arm)) && (!istype(S, /obj/item/robot_parts/r_arm)))
..()
@@ -311,20 +311,20 @@
to_chat(user, "<span class='warning'>You need to empty [src] out first!</span>")
return
var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
if(istype(src,/obj/item/weapon/storage/firstaid/fire))
var/obj/item/firstaid_arm_assembly/A = new /obj/item/firstaid_arm_assembly
if(istype(src,/obj/item/storage/firstaid/fire))
A.skin = "ointment"
else if(istype(src,/obj/item/weapon/storage/firstaid/toxin))
else if(istype(src,/obj/item/storage/firstaid/toxin))
A.skin = "tox"
else if(istype(src,/obj/item/weapon/storage/firstaid/o2))
else if(istype(src,/obj/item/storage/firstaid/o2))
A.skin = "o2"
else if(istype(src,/obj/item/weapon/storage/firstaid/brute))
else if(istype(src,/obj/item/storage/firstaid/brute))
A.skin = "brute"
else if(istype(src,/obj/item/weapon/storage/firstaid/adv))
else if(istype(src,/obj/item/storage/firstaid/adv))
A.skin = "adv"
else if(istype(src,/obj/item/weapon/storage/firstaid/tactical))
else if(istype(src,/obj/item/storage/firstaid/tactical))
A.skin = "bezerk"
else if(istype(src,/obj/item/weapon/storage/firstaid/aquatic_kit))
else if(istype(src,/obj/item/storage/firstaid/aquatic_kit))
A.skin = "fish"
A.req_one_access = req_one_access
@@ -341,9 +341,9 @@
qdel(src)
/obj/item/weapon/firstaid_arm_assembly/attackby(obj/item/weapon/W, mob/user, params)
/obj/item/firstaid_arm_assembly/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, /obj/item/weapon/pen))
if(istype(W, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(!t)
return
@@ -383,7 +383,7 @@
qdel(src)
//Secbot Assembly
/obj/item/weapon/secbot_assembly
/obj/item/secbot_assembly
name = "incomplete securitron assembly"
desc = "Some sort of bizarre assembly made from a proximity sensor, helmet, and signaler."
icon = 'icons/obj/aibots.dmi'
@@ -400,7 +400,7 @@
if(!S.secured)
qdel(S)
var/obj/item/weapon/secbot_assembly/A = new /obj/item/weapon/secbot_assembly
var/obj/item/secbot_assembly/A = new /obj/item/secbot_assembly
user.put_in_hands(A)
to_chat(user, "<span class='notice'>You add the signaler to the helmet.</span>")
user.unEquip(src, 1)
@@ -408,17 +408,17 @@
else
return
/obj/item/weapon/secbot_assembly/attackby(obj/item/I, mob/user, params)
/obj/item/secbot_assembly/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/weapon/weldingtool))
if(istype(I, /obj/item/weldingtool))
if(!build_step)
var/obj/item/weapon/weldingtool/WT = I
var/obj/item/weldingtool/WT = I
if(WT.remove_fuel(0, user))
build_step++
overlays += "hs_hole"
to_chat(user, "<span class='notice'>You weld a hole in [src]!</span>")
else if(build_step == 1)
var/obj/item/weapon/weldingtool/WT = I
var/obj/item/weldingtool/WT = I
if(WT.remove_fuel(0, user))
build_step--
overlays -= "hs_hole"
@@ -442,7 +442,7 @@
overlays += "hs_arm"
qdel(I)
else if((istype(I, /obj/item/weapon/melee/baton)) && (build_step >= 3))
else if((istype(I, /obj/item/melee/baton)) && (build_step >= 3))
if(!user.unEquip(I))
return
build_step++
@@ -453,7 +453,7 @@
qdel(I)
qdel(src)
else if(istype(I, /obj/item/weapon/pen))
else if(istype(I, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(!t)
return
@@ -461,7 +461,7 @@
return
created_name = t
else if(istype(I, /obj/item/weapon/screwdriver))
else if(istype(I, /obj/item/screwdriver))
if(!build_step)
new /obj/item/device/assembly/signaler(get_turf(src))
new /obj/item/clothing/head/helmet(get_turf(src))
@@ -167,11 +167,11 @@ Auto Patrol[]"},
retaliate(H)
return ..()
/mob/living/simple_animal/bot/ed209/attackby(obj/item/weapon/W, mob/user, params)
/mob/living/simple_animal/bot/ed209/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry.
if(istype(W, /obj/item/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry.
return
if(!istype(W, /obj/item/weapon/screwdriver) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
if(!istype(W, /obj/item/screwdriver) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
if(W.force && W.damtype != STAMINA)//If force is non-zero and damage type isn't stamina.
retaliate(user)
if(lasercolor)//To make up for the fact that lasertag bots don't hunt
@@ -361,22 +361,22 @@ Auto Patrol[]"},
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
var/obj/item/weapon/ed209_assembly/Sa = new /obj/item/weapon/ed209_assembly(Tsec)
var/obj/item/ed209_assembly/Sa = new /obj/item/ed209_assembly(Tsec)
Sa.build_step = 1
Sa.overlays += image('icons/obj/aibots.dmi', "hs_hole")
Sa.created_name = name
new /obj/item/device/assembly/prox_sensor(Tsec)
if(!lasercolor)
var/obj/item/weapon/gun/energy/gun/advtaser/G = new /obj/item/weapon/gun/energy/gun/advtaser(Tsec)
var/obj/item/gun/energy/gun/advtaser/G = new /obj/item/gun/energy/gun/advtaser(Tsec)
G.power_supply.charge = 0
G.update_icon()
else if(lasercolor == "b")
var/obj/item/weapon/gun/energy/laser/bluetag/G = new /obj/item/weapon/gun/energy/laser/bluetag(Tsec)
var/obj/item/gun/energy/laser/bluetag/G = new /obj/item/gun/energy/laser/bluetag(Tsec)
G.power_supply.charge = 0
G.update_icon()
else if(lasercolor == "r")
var/obj/item/weapon/gun/energy/laser/redtag/G = new /obj/item/weapon/gun/energy/laser/redtag(Tsec)
var/obj/item/gun/energy/laser/redtag/G = new /obj/item/gun/energy/laser/redtag(Tsec)
G.power_supply.charge = 0
G.update_icon()
@@ -567,6 +567,6 @@ Auto Patrol[]"},
if( !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
return
if(!C.handcuffed)
C.handcuffed = new /obj/item/weapon/restraints/handcuffs/cable/zipties/used(C)
C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C)
C.update_handcuffed()
back_to_idle()
@@ -389,7 +389,7 @@
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
var/obj/item/weapon/storage/toolbox/mechanical/N = new /obj/item/weapon/storage/toolbox/mechanical(Tsec)
var/obj/item/storage/toolbox/mechanical/N = new /obj/item/storage/toolbox/mechanical(Tsec)
N.contents = list()
new /obj/item/device/assembly/prox_sensor(Tsec)
@@ -22,7 +22,7 @@
path_image_color = "#DDDDFF"
data_hud_type = DATA_HUD_MEDICAL_ADVANCED
var/obj/item/weapon/reagent_containers/glass/reagent_glass = null //Can be set to draw from this for reagents.
var/obj/item/reagent_containers/glass/reagent_glass = null //Can be set to draw from this for reagents.
var/skin = null //Set to "tox", "ointment" or "o2" for the other two firstaid kits.
var/mob/living/carbon/patient = null
var/mob/living/carbon/oldpatient = null
@@ -221,8 +221,8 @@
update_controls()
return
/mob/living/simple_animal/bot/medbot/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/reagent_containers/glass))
/mob/living/simple_animal/bot/medbot/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/reagent_containers/glass))
. = 1 //no afterattack
if(locked)
to_chat(user, "<span class='warning'>You cannot insert a beaker because the panel is locked!</span>")
@@ -544,21 +544,21 @@
switch(skin)
if("ointment")
new /obj/item/weapon/storage/firstaid/fire/empty(Tsec)
new /obj/item/storage/firstaid/fire/empty(Tsec)
if("tox")
new /obj/item/weapon/storage/firstaid/toxin/empty(Tsec)
new /obj/item/storage/firstaid/toxin/empty(Tsec)
if("o2")
new /obj/item/weapon/storage/firstaid/o2/empty(Tsec)
new /obj/item/storage/firstaid/o2/empty(Tsec)
if("brute")
new /obj/item/weapon/storage/firstaid/brute/empty(Tsec)
new /obj/item/storage/firstaid/brute/empty(Tsec)
if("adv")
new /obj/item/weapon/storage/firstaid/adv/empty(Tsec)
new /obj/item/storage/firstaid/adv/empty(Tsec)
if("bezerk")
new /obj/item/weapon/storage/firstaid/tactical/empty(Tsec)
new /obj/item/storage/firstaid/tactical/empty(Tsec)
if("fish")
new /obj/item/weapon/storage/firstaid/aquatic_kit(Tsec)
new /obj/item/storage/firstaid/aquatic_kit(Tsec)
else
new /obj/item/weapon/storage/firstaid(Tsec)
new /obj/item/storage/firstaid(Tsec)
new /obj/item/device/assembly/prox_sensor(Tsec)
@@ -44,7 +44,7 @@
var/auto_pickup = 1 // true if auto-pickup at beacon
var/report_delivery = 1 // true if bot will announce an arrival to a location.
var/obj/item/weapon/stock_parts/cell/cell
var/obj/item/stock_parts/cell/cell
var/datum/wires/mulebot/wires = null
var/bloodiness = 0
var/currentBloodColor = "#A10808"
@@ -81,28 +81,28 @@
reached_target = 0
/mob/living/simple_animal/bot/mulebot/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
if(istype(I, /obj/item/screwdriver))
..()
if(open)
on = FALSE
update_controls()
else if(istype(I,/obj/item/weapon/stock_parts/cell) && open && !cell)
else if(istype(I,/obj/item/stock_parts/cell) && open && !cell)
if(!user.drop_item())
return
var/obj/item/weapon/stock_parts/cell/C = I
var/obj/item/stock_parts/cell/C = I
C.forceMove(src)
cell = C
visible_message("[user] inserts a cell into [src].",
"<span class='notice'>You insert the new cell into [src].</span>")
update_controls()
else if(istype(I, /obj/item/weapon/crowbar) && open && cell)
else if(istype(I, /obj/item/crowbar) && open && cell)
cell.add_fingerprint(usr)
cell.forceMove(loc)
cell = null
visible_message("[user] crowbars out the power cell from [src].",
"<span class='notice'>You pry the powercell out of [src].</span>")
update_controls()
else if(istype(I, /obj/item/weapon/wrench))
else if(istype(I, /obj/item/wrench))
if(health < maxHealth)
adjustBruteLoss(-25)
updatehealth()
@@ -112,7 +112,7 @@
)
else
to_chat(user, "<span class='notice'>[src] does not need a repair!</span>")
else if((istype(I, /obj/item/device/multitool) || istype(I, /obj/item/weapon/wirecutters)) && open)
else if((istype(I, /obj/item/device/multitool) || istype(I, /obj/item/wirecutters)) && open)
return attack_hand(user)
else if(load && ismob(load)) // chance to knock off rider
if(prob(1 + I.force * 2))
@@ -196,7 +196,7 @@
usr.visible_message("<span class='notice'>[usr] removes the power cell from [src].</span>", "<span class='notice'>You remove the power cell from [src].</span>")
if("cellinsert")
if(open && !cell)
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
var/obj/item/stock_parts/cell/C = usr.get_active_hand()
if(istype(C))
usr.drop_item()
cell = C
@@ -46,8 +46,8 @@
/mob/living/simple_animal/bot/secbot/beepsky/explode()
var/turf/Tsec = get_turf(src)
new /obj/item/weapon/stock_parts/cell/potato(Tsec)
var/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/S = new(Tsec)
new /obj/item/stock_parts/cell/potato(Tsec)
var/obj/item/reagent_containers/food/drinks/drinkingglass/S = new(Tsec)
S.reagents.add_reagent("whiskey", 15)
S.on_reagent_change()
..()
@@ -179,11 +179,11 @@ Auto Patrol: []"},
retaliate(H)
return ..()
/mob/living/simple_animal/bot/secbot/attackby(obj/item/weapon/W, mob/user, params)
/mob/living/simple_animal/bot/secbot/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry.
if(istype(W, /obj/item/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry.
return
if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
if(!istype(W, /obj/item/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
retaliate(user)
/mob/living/simple_animal/bot/secbot/emag_act(mob/user)
@@ -235,7 +235,7 @@ Auto Patrol: []"},
if( !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
return
if(!C.handcuffed)
C.handcuffed = new /obj/item/weapon/restraints/handcuffs/cable/zipties/used(C)
C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C)
C.update_handcuffed()
playsound(loc, pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg'), 50, 0)
back_to_idle()
@@ -429,12 +429,12 @@ Auto Patrol: []"},
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
var/obj/item/weapon/secbot_assembly/Sa = new /obj/item/weapon/secbot_assembly(Tsec)
var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec)
Sa.build_step = 1
Sa.overlays += "hs_hole"
Sa.created_name = name
new /obj/item/device/assembly/prox_sensor(Tsec)
new /obj/item/weapon/melee/baton(Tsec)
new /obj/item/melee/baton(Tsec)
if(prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
@@ -23,7 +23,7 @@
var/const_type = "shade"
var/list/construct_spells = list()
var/playstyle_string = "<b>You are a generic construct! Your job is to not exist, and you should probably adminhelp this.</b>"
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
loot = list(/obj/item/reagent_containers/food/snacks/ectoplasm)
del_on_death = 1
deathmessage = "collapses in a shattered heap."
@@ -59,7 +59,7 @@
if(src.corpseback)
M.equip_to_slot_or_del(new src.corpseback(M), slot_back)
if(src.corpseid == 1)
var/obj/item/weapon/card/id/W = new(M)
var/obj/item/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
var/datum/job/jobdatum
for(var/jobtype in typesof(/datum/job))
@@ -93,7 +93,7 @@
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas
corpsehelmet = /obj/item/clothing/head/helmet/swat
corpseback = /obj/item/weapon/storage/backpack
corpseback = /obj/item/storage/backpack
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = "Syndicate"
@@ -109,8 +109,8 @@
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas/syndicate
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/syndi
corpseback = /obj/item/weapon/tank/jetpack/oxygen
corpsepocket1 = /obj/item/weapon/tank/emergency_oxygen
corpseback = /obj/item/tank/jetpack/oxygen
corpsepocket1 = /obj/item/tank/emergency_oxygen
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = "Syndicate"
@@ -123,8 +123,8 @@
corpseshoes = /obj/item/clothing/shoes/clown_shoes
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas/clown_hat
corpsepocket1 = /obj/item/weapon/bikehorn
corpseback = /obj/item/weapon/storage/backpack/clown
corpsepocket1 = /obj/item/bikehorn
corpseback = /obj/item/storage/backpack/clown
corpseid = 1
corpseidjob = "Clown"
corpseidaccess = "Clown"
@@ -18,7 +18,7 @@
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
ventcrawler = 2
mob_size = MOB_SIZE_TINY
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 0)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 0)
gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY
/mob/living/simple_animal/butterfly/New()
@@ -17,7 +17,7 @@
mob_size = MOB_SIZE_SMALL
simplespecies = /mob/living/simple_animal/pet/cat
childtype = /mob/living/simple_animal/pet/cat/kitten
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -15,7 +15,7 @@
emote_see = list("shakes its head", "shivers")
speak_chance = 1
turns_per_move = 10
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/corgi = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/corgi = 3)
response_help = "pets"
response_disarm = "bops"
response_harm = "kicks"
@@ -84,7 +84,7 @@
custom_emote(1, "looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression.")
return
if(istype(O, /obj/item/weapon/razor))
if(istype(O, /obj/item/razor))
if(shaved)
to_chat(user, "<span class='warning'>You can't shave this corgi, it's already been shaved!</span>")
return
@@ -162,7 +162,7 @@
if(!item_to_add)
usr.visible_message("[usr] pets [src].","<span class='notice'>You rest your hand on [src]'s back for a moment.</span>")
return
if(istype(item_to_add,/obj/item/weapon/grenade/plastic/c4)) // last thing he ever wears, I guess
if(istype(item_to_add,/obj/item/grenade/plastic/c4)) // last thing he ever wears, I guess
item_to_add.afterattack(src,usr,1)
return
@@ -174,9 +174,9 @@
/obj/item/device/radio,
/obj/item/device/radio/off,
/obj/item/clothing/suit/cardborg,
/obj/item/weapon/tank/oxygen,
/obj/item/weapon/tank/air,
/obj/item/weapon/extinguisher,
/obj/item/tank/oxygen,
/obj/item/tank/air,
/obj/item/extinguisher,
)
if( ! ( item_to_add.type in allowed_types ) )
@@ -215,7 +215,7 @@
//Many hats added, Some will probably be removed, just want to see which ones are popular.
/mob/living/simple_animal/pet/corgi/proc/place_on_head(obj/item/item_to_add, var/mob/user as mob)
if(istype(item_to_add,/obj/item/weapon/grenade/plastic/c4)) // last thing he ever wears, I guess
if(istype(item_to_add,/obj/item/grenade/plastic/c4)) // last thing he ever wears, I guess
item_to_add.afterattack(src,user,1)
return
@@ -237,7 +237,7 @@
switch(item_to_add.type)
if( /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/head/that, /obj/item/clothing/head/collectable/paper,
/obj/item/clothing/head/hardhat, /obj/item/clothing/head/collectable/hardhat, /obj/item/clothing/head/hardhat/white,
/obj/item/weapon/paper)
/obj/item/paper)
valid = 1
if(/obj/item/clothing/head/helmet)
@@ -319,7 +319,7 @@
desc = "Result of robotics budget cuts."
valid = 1
if(/obj/item/weapon/bedsheet)
if(/obj/item/bedsheet)
name = "\improper Ghost"
speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU")
emote_see = list("stumbles around.", "shivers.")
@@ -430,7 +430,7 @@
if( !movement_target || !(movement_target.loc in oview(src, 3)) )
movement_target = null
stop_automated_movement = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/S in oview(src,3))
for(var/obj/item/reagent_containers/food/snacks/S in oview(src,3))
if(isturf(S.loc) || ishuman(S.loc))
movement_target = S
break
@@ -468,7 +468,7 @@
custom_emote(1, pick("dances around.","chases its tail!"))
spin(20, 1)
/obj/item/weapon/reagent_containers/food/snacks/meat/corgi
/obj/item/reagent_containers/food/snacks/meat/corgi
name = "Corgi meat"
desc = "Tastes like... well you know..."
@@ -10,7 +10,7 @@
emote_see = list("clacks")
speak_chance = 1
turns_per_move = 5
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "stomps the"
@@ -50,7 +50,7 @@
//LOOK AT THIS - ..()??
/*/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/weapon/wirecutters))
if(istype(O, /obj/item/wirecutters))
if(prob(50))
to_chat(user, "<span class='boldwarning'>This kills the crab.</span>")
health -= 20
@@ -165,7 +165,7 @@
/obj/item/clothing/head/hardhat,
/obj/item/clothing/head/collectable/hardhat,
/obj/item/clothing/head/hardhat/white,
/obj/item/weapon/bedsheet,
/obj/item/bedsheet,
/obj/item/clothing/head/soft
)
@@ -220,7 +220,7 @@
if(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard)
name = "Grandwizard [real_name]"
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!")
if(/obj/item/weapon/bedsheet)
if(/obj/item/bedsheet)
name = "\improper Ghost"
speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU")
emote_see = list("stumbles around", "shivers")
@@ -10,7 +10,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 0 //I'm so funny
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 4)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 4)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -39,7 +39,7 @@
var/list/donors = list()
var/ready_evolve = 0
holder_type = /obj/item/weapon/holder/diona
holder_type = /obj/item/holder/diona
can_collar = 1
/mob/living/simple_animal/diona/New()
@@ -121,7 +121,7 @@
if(istype(M))
for(var/atom/A in M.contents)
if(istype(A, /mob/living/simple_animal/borer) || istype(A, /obj/item/weapon/holder))
if(istype(A, /mob/living/simple_animal/borer) || istype(A, /obj/item/holder))
return
M.status_flags &= ~PASSEMOTES
@@ -144,8 +144,8 @@
var/mob/living/carbon/human/diona/adult = new(get_turf(loc))
adult.set_species("Diona")
if(istype(loc, /obj/item/weapon/holder/diona))
var/obj/item/weapon/holder/diona/L = loc
if(istype(loc, /obj/item/holder/diona))
var/obj/item/holder/diona/L = loc
forceMove(L.loc)
qdel(L)
@@ -12,7 +12,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 4)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 4)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -70,9 +70,9 @@
SV.eat(src)
/mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
if(stat == CONSCIOUS && istype(O, /obj/item/reagent_containers/glass))
user.changeNext_move(CLICK_CD_MELEE)
var/obj/item/weapon/reagent_containers/glass/G = O
var/obj/item/reagent_containers/glass/G = O
var/transfered = min(milk_content, rand(5,10), (G.volume - G.reagents.total_volume))
if(transfered > 0)
user.visible_message("<span class='notice'>[user] milks [src] using \the [O].</span>")
@@ -100,7 +100,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 6)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 6)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -117,9 +117,9 @@
..()
/mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob, params, params)
if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
if(stat == CONSCIOUS && istype(O, /obj/item/reagent_containers/glass))
user.changeNext_move(CLICK_CD_MELEE)
var/obj/item/weapon/reagent_containers/glass/G = O
var/obj/item/reagent_containers/glass/G = O
var/transfered = min(milk_content, rand(5,10), (G.volume - G.reagents.total_volume))
if(transfered > 0)
user.visible_message("<span class='notice'>[user] milks [src] using \the [O].</span>")
@@ -168,7 +168,7 @@
density = 0
speak_chance = 2
turns_per_move = 2
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -215,9 +215,9 @@ var/global/chicken_count = 0
density = 0
speak_chance = 2
turns_per_move = 3
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 2)
var/egg_type = /obj/item/weapon/reagent_containers/food/snacks/egg
var/food_type = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 2)
var/egg_type = /obj/item/reagent_containers/food/snacks/egg
var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -279,8 +279,8 @@ var/global/chicken_count = 0
if(chicken_count < MAX_CHICKENS && prob(25))
processing_objects.Add(E)
/obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/weapon/reagent_containers/food/snacks/egg/process()
/obj/item/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/reagent_containers/food/snacks/egg/process()
if(isturf(loc))
amount_grown += rand(1,2)
if(amount_grown >= 100)
@@ -305,7 +305,7 @@ var/global/chicken_count = 0
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/ham = 6)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/ham = 6)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -329,7 +329,7 @@ var/global/chicken_count = 0
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 4)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 4)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -352,7 +352,7 @@ var/global/chicken_count = 0
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 6)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 6)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -375,7 +375,7 @@ var/global/chicken_count = 0
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 6)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 6)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -399,7 +399,7 @@ var/global/chicken_count = 0
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 6)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 6)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "kicks the"
@@ -13,7 +13,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -20,6 +20,6 @@
pass_flags = PASSTABLE | PASSMOB
mob_size = MOB_SIZE_SMALL
can_hide = 1
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
can_collar = 1
gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY
@@ -14,7 +14,7 @@
see_in_dark = 6
maxHealth = 5
health = 5
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "stamps on the"
@@ -29,7 +29,7 @@
maxbodytemp = 323 //Above 50 Degrees Celcius
universal_speak = 0
can_hide = 1
holder_type = /obj/item/weapon/holder/mouse
holder_type = /obj/item/holder/mouse
can_collar = 1
gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY
@@ -5,7 +5,7 @@
blood_volume = BLOOD_VOLUME_NORMAL
/mob/living/simple_animal/pet/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/weapon/newspaper))
if(istype(O, /obj/item/newspaper))
if(!stat)
user.visible_message("[user] baps [name] on the nose with the rolled up [O].")
spawn(0)
@@ -12,7 +12,7 @@
emote_see = list("shakes its head.", "chases its tail.","shivers.")
speak_chance = 1
turns_per_move = 10
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/pug = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/pug = 3)
response_help = "pets"
response_disarm = "bops"
response_harm = "kicks"
@@ -12,7 +12,7 @@
emote_see = list("dozes off.", "looks around sleepily.")
speak_chance = 1
turns_per_move = 5
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -88,7 +88,7 @@
return 1
else if(iswelder(O) && user.a_intent == INTENT_HELP)
var/obj/item/weapon/weldingtool/WT = O
var/obj/item/weldingtool/WT = O
user.changeNext_move(CLICK_CD_MELEE)
if(WT.remove_fuel(0))
if(health < maxHealth)
@@ -100,7 +100,7 @@
to_chat(user, "<span class='notice'>[src] is undamaged!</span>")
else
to_chat(user, "Need more welding fuel!")
else if(istype(O, /obj/item/weapon/card/id) || istype(O, /obj/item/device/pda))
else if(istype(O, /obj/item/card/id) || istype(O, /obj/item/device/pda))
if(!mmi)
to_chat(user, "<span class='warning'>There's no reason to swipe your ID - the spiderbot has no brain to remove.</span>")
return 0
@@ -109,9 +109,9 @@
to_chat(user, "<span class='warning'>[src] doesn't seem to respond.</span>")
return 0
var/obj/item/weapon/card/id/id_card
var/obj/item/card/id/id_card
if(istype(O, /obj/item/weapon/card/id))
if(istype(O, /obj/item/card/id))
id_card = O
else
var/obj/item/device/pda/pda = O
@@ -10,7 +10,7 @@
response_disarm = "shoves the"
response_harm = "hits the"
speed = 0
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/xenomeat = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/xenomeat = 3)
maxHealth = 100
health = 100
harm_intent_damage = 5
@@ -8,7 +8,7 @@
icon_gib = "bat_dead"
speak_chance = 0
turns_per_move = 3
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
@@ -13,7 +13,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/bearmeat = 5, /obj/item/clothing/head/bearpelt = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/bearmeat = 5, /obj/item/clothing/head/bearpelt = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -246,8 +246,8 @@
var/mob/living/simple_animal/hostile/poison/bees/queen/queen
/obj/item/queen_bee/attackby(obj/item/I, mob/user, params)
if(istype(I,/obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/S = I
if(istype(I,/obj/item/reagent_containers/syringe))
var/obj/item/reagent_containers/syringe/S = I
if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped
if(S.reagents.has_reagent("royal_bee_jelly",5))
S.reagents.remove_reagent("royal_bee_jelly", 5)
@@ -9,7 +9,7 @@
icon_gib = "carp_gib"
speak_chance = 0
turns_per_move = 5
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 2)
butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 2)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
@@ -17,7 +17,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 2)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -33,7 +33,7 @@
speak_chance = 5
turns_per_move = 5
see_in_dark = 10
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/spidermeat = 2, /obj/item/weapon/reagent_containers/food/snacks/spiderleg = 8)
butcher_results = list(/obj/item/reagent_containers/food/snacks/spidermeat = 2, /obj/item/reagent_containers/food/snacks/spiderleg = 8)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -58,7 +58,7 @@
icon_state = "nurse"
icon_living = "nurse"
icon_dead = "nurse_dead"
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/spidermeat = 2, /obj/item/weapon/reagent_containers/food/snacks/spiderleg = 8, /obj/item/weapon/reagent_containers/food/snacks/spidereggs = 4)
butcher_results = list(/obj/item/reagent_containers/food/snacks/spidermeat = 2, /obj/item/reagent_containers/food/snacks/spiderleg = 8, /obj/item/reagent_containers/food/snacks/spidereggs = 4)
maxHealth = 40
health = 40
@@ -13,7 +13,7 @@
icon_gib = "panther_dead"
speak_chance = 0
turns_per_move = 3
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
@@ -58,7 +58,7 @@
icon_gib = "snake_dead"
speak_chance = 0
turns_per_move = 1
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 2)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 2)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
@@ -9,7 +9,7 @@
maxHealth = 30
health = 30
see_in_dark = 3
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/tomatomeat = 2)
butcher_results = list(/obj/item/reagent_containers/food/snacks/tomatomeat = 2)
response_help = "prods"
response_disarm = "pushes aside"
response_harm = "smacks"
@@ -47,7 +47,7 @@ Difficulty: Very Hard
medal_type = MEDAL_PREFIX
score_type = COLOSSUS_SCORE
loot = list(/obj/machinery/anomalous_crystal/random, /obj/item/organ/internal/vocal_cords/colossus)
butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30)
butcher_results = list(/obj/item/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30)
deathmessage = "disintegrates, leaving a glowing core in its wake."
death_sound = 'sound/misc/demon_dies.ogg'
@@ -45,7 +45,7 @@ Difficulty: Medium
ranged = 1
pixel_x = -16
loot = list(/obj/structure/closet/crate/necropolis/dragon)
butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30)
butcher_results = list(/obj/item/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30)
var/swooping = 0
var/swoop_cooldown = 0
medal_type = MEDAL_PREFIX
@@ -53,7 +53,7 @@ Difficulty: Hard
pixel_x = -16
ranged_cooldown_time = 40
aggro_vision_range = 23
loot = list(/obj/item/weapon/hierophant_staff)
loot = list(/obj/item/hierophant_staff)
wander = FALSE
var/burst_range = 3 //range on burst aoe
var/beam_range = 5 //range on cross blast beams
@@ -567,8 +567,8 @@ Difficulty: Hard
color = "#CC00FF"
/obj/effect/hierophant/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/hierophant_staff))
var/obj/item/weapon/hierophant_staff/H = I
if(istype(I, /obj/item/hierophant_staff))
var/obj/item/hierophant_staff/H = I
if(H.rune == src)
to_chat(user, "<span class='notice'>You start removing your hierophant rune...</span>")
H.timer = world.time + 51
@@ -124,7 +124,7 @@ Difficulty: Medium
last_legion = FALSE
break
if(last_legion)
loot = list(/obj/item/weapon/staff/storm)
loot = list(/obj/item/staff/storm)
elimination = 0
else if(prob(5))
loot = list(/obj/structure/closet/crate/necropolis/tendril)
@@ -217,10 +217,10 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
return ..()
/mob/living/simple_animal/hostile/mimic/copy/ranged
var/obj/item/weapon/gun/TrueGun = null
var/obj/item/weapon/gun/magic/Zapstick
var/obj/item/weapon/gun/projectile/Pewgun
var/obj/item/weapon/gun/energy/Zapgun
var/obj/item/gun/TrueGun = null
var/obj/item/gun/magic/Zapstick
var/obj/item/gun/projectile/Pewgun
var/obj/item/gun/energy/Zapgun
/mob/living/simple_animal/hostile/mimic/copy/ranged/CopyObject(obj/O, mob/living/creator, destroy_original = 0)
if(..())
@@ -230,21 +230,21 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
ranged = 1
retreat_distance = 1 //just enough to shoot
minimum_distance = 6
var/obj/item/weapon/gun/G = O
var/obj/item/gun/G = O
melee_damage_upper = G.force
melee_damage_lower = G.force - max(0, (G.force / 2))
move_to_delay = 2 * G.w_class + 1
projectilesound = G.fire_sound
TrueGun = G
if(istype(G, /obj/item/weapon/gun/magic))
if(istype(G, /obj/item/gun/magic))
Zapstick = G
var/obj/item/ammo_casing/magic/M = Zapstick.ammo_type
projectiletype = initial(M.projectile_type)
if(istype(G, /obj/item/weapon/gun/projectile))
if(istype(G, /obj/item/gun/projectile))
Pewgun = G
var/obj/item/ammo_box/magazine/M = Pewgun.mag_type
casingtype = initial(M.ammo_type)
if(istype(G, /obj/item/weapon/gun/energy))
if(istype(G, /obj/item/gun/energy))
Zapgun = G
var/selectfiresetting = Zapgun.select
var/obj/item/ammo_casing/energy/E = Zapgun.ammo_type[selectfiresetting]
@@ -24,8 +24,8 @@
throw_message = "sinks in slowly, before being pushed out of "
status_flags = CANPUSH
search_objects = 1
wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver,
/obj/item/weapon/ore/uranium)
wanted_objects = list(/obj/item/ore/diamond, /obj/item/ore/gold, /obj/item/ore/silver,
/obj/item/ore/uranium)
var/chase_time = 100
var/will_burrow = TRUE
@@ -34,13 +34,13 @@
..()
var/i = rand(1,3)
while(i)
loot += pick(/obj/item/weapon/ore/silver, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/diamond)
loot += pick(/obj/item/ore/silver, /obj/item/ore/gold, /obj/item/ore/uranium, /obj/item/ore/diamond)
i--
/mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(new_target)
target = new_target
if(target != null)
if(istype(target, /obj/item/weapon/ore) && loot.len < 10)
if(istype(target, /obj/item/ore) && loot.len < 10)
visible_message("<span class='notice'>The [src.name] looks at [target.name] with hungry eyes.</span>")
else if(isliving(target))
Aggro()
@@ -52,13 +52,13 @@
Burrow()
/mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget()
if(istype(target, /obj/item/weapon/ore))
if(istype(target, /obj/item/ore))
EatOre(target)
return
..()
/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(var/atom/targeted_ore)
for(var/obj/item/weapon/ore/O in targeted_ore.loc)
for(var/obj/item/ore/O in targeted_ore.loc)
if(loot.len < 10)
loot += O.type
qdel(O)
@@ -314,7 +314,7 @@
..()
desc = "[src] has been stabilized. It no longer crackles with power, but it's healing properties are preserved indefinitely."
/obj/item/weapon/legion_skull
/obj/item/legion_skull
name = "legion's head"
desc = "The once living, now empty eyes of the former human's skull cut deep into your soul."
icon = 'icons/obj/mining.dmi'
@@ -76,8 +76,8 @@
aggro_vision_range = 9
idle_vision_range = 2
turns_per_move = 5
loot = list(/obj/item/weapon/ore/diamond{layer = 4.1},
/obj/item/weapon/ore/diamond{layer = 4.1})
loot = list(/obj/item/ore/diamond{layer = 4.1},
/obj/item/ore/diamond{layer = 4.1})
/obj/item/projectile/temp/basilisk
name = "freezing blast"
@@ -8,7 +8,7 @@
turns_per_move = 1
maxHealth = 10
health = 10
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/hugemushroomslice = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "whacks"
@@ -126,7 +126,7 @@
bruised = 1
/mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom))
if(istype(I, /obj/item/reagent_containers/food/snacks/grown/mushroom))
if(stat == DEAD && !recovery_cooldown)
Recover()
qdel(I)
@@ -156,7 +156,7 @@
/mob/living/simple_animal/hostile/mushroom/harvest()
var/counter
for(counter=0, counter<=powerlevel, counter++)
var/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice(src.loc)
var/obj/item/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/reagent_containers/food/snacks/hugemushroomslice(src.loc)
S.reagents.add_reagent("psilocybin", powerlevel)
S.reagents.add_reagent("omnizine", powerlevel)
S.reagents.add_reagent("synaptizine", powerlevel)
@@ -24,7 +24,7 @@
unsuitable_atmos_damage = 15
speak_emote = list("yarrs")
loot = list(/obj/effect/landmark/mobcorpse/pirate,
/obj/item/weapon/melee/energy/sword/pirate)
/obj/item/melee/energy/sword/pirate)
del_on_death = 1
faction = list("pirate")
sentience_type = SENTIENCE_OTHER
@@ -41,4 +41,4 @@
minimum_distance = 5
projectiletype = /obj/item/projectile/beam
loot = list(/obj/effect/landmark/mobcorpse/pirate/ranged,
/obj/item/weapon/gun/energy/laser)
/obj/item/gun/energy/laser)
@@ -160,16 +160,16 @@
var/obj/O
//shards
O = new /obj/item/weapon/shard(loc)
O = new /obj/item/shard(loc)
step_to(O, get_turf(pick(view(7, src))))
if(prob(75))
O = new /obj/item/weapon/shard(loc)
O = new /obj/item/shard(loc)
step_to(O, get_turf(pick(view(7, src))))
if(prob(50))
O = new /obj/item/weapon/shard(loc)
O = new /obj/item/shard(loc)
step_to(O, get_turf(pick(view(7, src))))
if(prob(25))
O = new /obj/item/weapon/shard(loc)
O = new /obj/item/shard(loc)
step_to(O, get_turf(pick(view(7, src))))
//rods
@@ -199,7 +199,7 @@
step_to(O, get_turf(pick(view(7, src))))
//also drop dummy circuit boards deconstructable for research (loot)
var/obj/item/weapon/circuitboard/C
var/obj/item/circuitboard/C
//spawn 1-4 boards of a random type
var/spawnees = 0
@@ -8,7 +8,7 @@
icon_gib = "carp_gib"
speak_chance = 0
turns_per_move = 5
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1)
butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 1)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
@@ -45,7 +45,7 @@
minbodytemp = 0
faction = list("undead") // did I mention ghost
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
loot = list(/obj/item/reagent_containers/food/snacks/ectoplasm)
del_on_death = 1
/mob/living/simple_animal/hostile/retaliate/ghost/Process_Spacemove(var/check_drift = 0)
@@ -23,7 +23,7 @@
faction = list("russian")
status_flags = CANPUSH
loot = list(/obj/effect/landmark/mobcorpse/russian,
/obj/item/weapon/kitchen/knife)
/obj/item/kitchen/knife)
del_on_death = 1
sentience_type = SENTIENCE_OTHER
@@ -34,9 +34,9 @@
retreat_distance = 5
minimum_distance = 5
casingtype = /obj/item/ammo_casing/a357
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged, /obj/item/weapon/gun/projectile/revolver/mateba)
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged, /obj/item/gun/projectile/revolver/mateba)
/mob/living/simple_animal/hostile/russian/ranged/mosin
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged,
/obj/item/weapon/gun/projectile/shotgun/boltaction)
/obj/item/gun/projectile/shotgun/boltaction)
casingtype = /obj/item/ammo_casing/a762
@@ -38,7 +38,7 @@
attack_sound = 'sound/weapons/bladeslice.ogg'
armour_penetration = 28
status_flags = 0
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/weapon/melee/energy/sword/saber/red, /obj/item/weapon/shield/energy)
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/melee/energy/sword/saber/red, /obj/item/shield/energy)
/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(O.force)
@@ -73,7 +73,7 @@
icon_living = "syndicatemeleespace"
name = "Syndicate Commando"
speed = 1
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/weapon/melee/energy/sword/saber/red, /obj/item/weapon/shield/energy)
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/melee/energy/sword/saber/red, /obj/item/shield/energy)
/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(var/movement_dir = 0)
return
@@ -86,7 +86,7 @@
icon_state = "syndicateranged"
icon_living = "syndicateranged"
casingtype = /obj/item/ammo_casing/c45
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/weapon/gun/projectile/automatic/c20r)
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/gun/projectile/automatic/c20r)
/mob/living/simple_animal/hostile/syndicate/ranged/space
icon_state = "syndicaterangedpsace"
@@ -95,7 +95,7 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
speed = 1
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/weapon/gun/projectile/automatic/c20r)
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/gun/projectile/automatic/c20r)
/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/movement_dir = 0)
@@ -76,7 +76,7 @@
if(O.anchored)
continue
if(istype(O, /obj/item) || istype(O, /obj/structure) || istype(O, /obj/machinery))
if(!istype(O, /obj/item/weapon/paper))
if(!istype(O, /obj/item/paper))
cocoon_target = O
stop_automated_movement = 1
spider_steps_taken = 0
@@ -37,7 +37,7 @@
/mob/living/simple_animal/hostile/winter/snowman/death(gibbed)
if(prob(50) && !ranged) //50% chance to drop candy cane sword on death, if it has one to drop
loot = list(/obj/item/weapon/melee/candy_sword)
loot = list(/obj/item/melee/candy_sword)
if(prob(20)) //chance to become a stationary snowman structure instead of a corpse
loot.Add(/obj/structure/snowman)
deathmessage = "shimmers as its animating magic fades away!"
@@ -60,7 +60,7 @@
icon_state = "reindeer"
icon_living = "reindeer"
icon_dead = "reindeer-dead"
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
maxHealth = 80
health = 80
melee_damage_lower = 5
@@ -138,7 +138,7 @@
to_chat(world, "<span class='notice'>SANTA CLAUS HAS BEEN DEFEATED!</span>")
to_chat(world, "<span class='notice'><hr></span>")
..()
var/obj/item/weapon/grenade/clusterbuster/xmas/X = new /obj/item/weapon/grenade/clusterbuster/xmas(get_turf(src))
var/obj/item/weapon/grenade/clusterbuster/xmas/Y = new /obj/item/weapon/grenade/clusterbuster/xmas(get_turf(src))
var/obj/item/grenade/clusterbuster/xmas/X = new /obj/item/grenade/clusterbuster/xmas(get_turf(src))
var/obj/item/grenade/clusterbuster/xmas/Y = new /obj/item/grenade/clusterbuster/xmas(get_turf(src))
X.prime()
Y.prime()
@@ -46,7 +46,7 @@
speak_chance = 1//1% (1 in 100) chance every tick; So about once per 150 seconds, assuming an average tick is 1.5s
turns_per_move = 5
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/cracker = 3)
butcher_results = list(/obj/item/reagent_containers/food/snacks/cracker = 3)
response_help = "pets the"
response_disarm = "gently moves aside the"
@@ -642,8 +642,8 @@
return 0
if(!drop_gently)
if(istype(held_item, /obj/item/weapon/grenade))
var/obj/item/weapon/grenade/G = held_item
if(istype(held_item, /obj/item/grenade))
var/obj/item/grenade/G = held_item
G.loc = src.loc
G.prime()
to_chat(src, "You let go of the [held_item]!")
@@ -26,7 +26,7 @@
/mob/living/simple_animal/pony/Life()
..()
if(stat == 2)
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(src.loc)
new /obj/item/reagent_containers/food/snacks/ectoplasm(src.loc)
src.visible_message("<span class='warning'>\The [src] lets out a contented sigh as their form unwinds.</span>")
src.ghostize()
qdel(src)
@@ -118,8 +118,8 @@
/mob/living/simple_animal/possessed_object/get_access() // If we've possessed an ID card we've got access to lots of fun things!
if(istype(possessed_item, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/possessed_id = possessed_item
if(istype(possessed_item, /obj/item/card/id))
var/obj/item/card/id/possessed_id = possessed_item
. = possessed_id.access
@@ -24,7 +24,7 @@
status_flags = 0
faction = list("cult")
status_flags = CANPUSH
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
loot = list(/obj/item/reagent_containers/food/snacks/ectoplasm)
del_on_death = 1
deathmessage = "lets out a contented sigh as their form unwinds."
@@ -301,7 +301,7 @@
if(!(status_flags & CANPUSH))
return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src )
var/obj/item/grab/G = new /obj/item/grab(M, src )
M.put_in_active_hand(G)

Some files were not shown because too many files have changed in this diff Show More