Fixing merge conflicts

This commit is contained in:
CosmicScientist
2015-08-08 15:43:38 +01:00
357 changed files with 13265 additions and 11049 deletions
+1 -1
View File
@@ -43,7 +43,6 @@
color = G.color_hex
icon_state = G.name
G.territory_new |= list(territory.type = territory.name)
G.territory_lost -= territory.type
..(location, color, icon_state, e_name, rotation)
@@ -51,6 +50,7 @@
var/area/territory = get_area(src)
if(gang)
gang.territory -= territory.type
gang.territory_new -= territory.type
gang.territory_lost |= list(territory.type = territory.name)
..()
@@ -29,7 +29,7 @@
/obj/effect/effect/foam/New(loc)
..(loc)
create_reagents(1000) //limited by the size of the reagent holder anyway.
SSobj.processing.Add(src)
SSobj.processing |= src
playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3)
/obj/effect/effect/foam/Destroy()
@@ -31,7 +31,7 @@
/obj/effect/effect/smoke/New()
..()
create_reagents(500)
SSobj.processing.Add(src)
SSobj.processing |= src
lifetime += rand(-1,1)
/obj/effect/effect/smoke/Destroy()
@@ -276,8 +276,9 @@
lifetime = 10
/obj/effect/effect/smoke/sleeping/process()
for(var/mob/living/carbon/M in range(1,src))
smoke_mob(M)
if(..())
for(var/mob/living/carbon/M in range(1,src))
smoke_mob(M)
/obj/effect/effect/smoke/sleeping/smoke_mob(mob/living/carbon/M)
if(..())
+8
View File
@@ -77,6 +77,8 @@
icon_state = "eggs"
var/amount_grown = 0
var/player_spiders = 0
var/poison_type = "toxin"
var/poison_per_bite = 5
/obj/effect/spider/eggcluster/New()
pixel_x = rand(3,-3)
@@ -89,6 +91,8 @@
var/num = rand(3,12)
for(var/i=0, i<num, i++)
var/obj/effect/spider/spiderling/S = new /obj/effect/spider/spiderling(src.loc)
S.poison_type = poison_type
S.poison_per_bite = poison_per_bite
if(player_spiders)
S.player_spiders = 1
qdel(src)
@@ -105,6 +109,8 @@
var/obj/machinery/atmospherics/components/unary/vent_pump/entry_vent
var/travelling_in_vent = 0
var/player_spiders = 0
var/poison_type = "toxin"
var/poison_per_bite = 5
/obj/effect/spider/spiderling/New()
pixel_x = rand(6,-6)
@@ -189,6 +195,8 @@
if(!grow_as)
grow_as = pick(typesof(/mob/living/simple_animal/hostile/poison/giant_spider))
var/mob/living/simple_animal/hostile/poison/giant_spider/S = new grow_as(src.loc)
S.poison_per_bite = poison_per_bite
S.poison_type = poison_type
if(player_spiders)
var/list/candidates = get_candidates(BE_ALIEN, ALIEN_AFK_BRACKET)
+1
View File
@@ -9,6 +9,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
//Not on /clothing because for some reason any /obj/item can technically be "worn" with enough fuckery.
var/icon/alternate_worn_icon = null//If this is set, update_icons() will find on mob (WORN, NOT INHANDS) states in this file instead, primary use: badminnery/events
var/alternate_worn_layer = null//If this is set, update_icons() will force the on mob state (WORN, NOT INHANDS) onto this layer, instead of it's default
var/hitsound = null
var/throwhitsound = null
+32 -41
View File
@@ -1,58 +1,49 @@
/obj/item/body_egg
name = "generic egg"
/obj/item/organ/internal/body_egg
name = "body egg"
desc = "All slimy and yuck."
icon = 'icons/mob/alien.dmi'
icon_state = "larva0_dead"
var/mob/living/affected_mob
icon_state = "innards"
origin_tech = "biotech=5"
zone = "chest"
slot = "parasite_egg"
/obj/item/body_egg/New()
if(istype(loc, /mob/living))
affected_mob = loc
affected_mob.status_flags |= XENO_HOST
SSobj.processing |= src
if(istype(affected_mob,/mob/living/carbon))
var/mob/living/carbon/H = affected_mob
H.med_hud_set_status()
spawn(0)
AddInfectionImages(affected_mob)
else
qdel(src)
/obj/item/organ/internal/body_egg/New(loc)
if(iscarbon(loc))
src.Insert(loc)
return ..()
/obj/item/body_egg/Destroy()
if(affected_mob)
affected_mob.status_flags &= ~(XENO_HOST)
if(istype(affected_mob,/mob/living/carbon))
var/mob/living/carbon/H = affected_mob
H.med_hud_set_status()
/obj/item/organ/internal/body_egg/Insert(var/mob/living/carbon/M, special = 0)
..()
owner.status_flags |= XENO_HOST
SSobj.processing |= src
owner.med_hud_set_status()
spawn(0)
AddInfectionImages(owner)
/obj/item/organ/internal/body_egg/Remove(var/mob/living/carbon/M, special = 0)
SSobj.processing.Remove(src)
if(owner)
owner.status_flags &= ~(XENO_HOST)
owner.med_hud_set_status()
spawn(0)
RemoveInfectionImages(affected_mob)
affected_mob = null
RemoveInfectionImages(owner)
..()
/obj/item/body_egg/process()
if(!affected_mob) return
if(loc != affected_mob)
affected_mob.status_flags &= ~(XENO_HOST)
SSobj.processing.Remove(src)
if(istype(affected_mob,/mob/living/carbon))
var/mob/living/carbon/H = affected_mob
H.med_hud_set_status()
spawn(0)
RemoveInfectionImages(affected_mob)
affected_mob = null
/obj/item/organ/internal/body_egg/process()
if(!owner) return
if(!(src in owner.internal_organs))
Remove(owner)
return
egg_process()
/obj/item/body_egg/proc/egg_process()
/obj/item/organ/internal/body_egg/proc/egg_process()
return
/obj/item/body_egg/proc/RefreshInfectionImage()
/obj/item/organ/internal/body_egg/proc/RefreshInfectionImage()
RemoveInfectionImages()
AddInfectionImages()
/obj/item/body_egg/proc/AddInfectionImages()
/obj/item/organ/internal/body_egg/proc/AddInfectionImages()
return
/obj/item/body_egg/proc/RemoveInfectionImages()
/obj/item/organ/internal/body_egg/proc/RemoveInfectionImages()
return
+8 -5
View File
@@ -6,22 +6,21 @@
// Child of carpplushie because this should do everything the toy does and more
/obj/item/toy/carpplushie/dehy_carp
var/mob/owner = null // Carp doesn't attack owner, set when using in hand
var/owned = 1 // Boolean, no owner to begin with
var/owned = 0 // Boolean, no owner to begin with
// Attack self
/obj/item/toy/carpplushie/dehy_carp/attack_self(mob/user)
src.add_fingerprint(user) // Anyone can add their fingerprints to it with this
if(owned)
user << "<span class='notice'>[src] stares up at you with friendly eyes.</span>"
if(!owned)
user << "<span class='notice'>You pet [src]. You swear it looks up at you.</span>"
owner = user
owned = 0
owned = 1
return ..()
/obj/item/toy/carpplushie/dehy_carp/afterattack(obj/O, mob/user,proximity)
if(!proximity) return
if(istype(O,/obj/structure/sink))
user << "<span class='notice'>You place [src] under a stream of water...</span>"
user.drop_item()
loc = get_turf(O)
return Swell()
@@ -45,4 +44,8 @@
if(F == "neutral")
factions -= F
C.faction = factions
if (!owner || owner.faction != C.faction)
visible_message("<span class='warning'>You have a bad feeling about this.</span>") // welcome to the hostile carp enjoy your die
else
visible_message("<span class='notice'>The newly grown carp looks up at you with friendly eyes.</span>")
qdel(src)
+1 -1
View File
@@ -192,7 +192,7 @@ MASS SPECTROMETER
user << "<span class='info'>Blood level [blood_percent] %, [blood_volume] cl, type: [blood_type]</span>"
var/implant_detect
for(var/obj/item/cybernetic_implant/CI in H.internal_organs)
for(var/obj/item/organ/internal/cyberimp/CI in H.internal_organs)
implant_detect += "[H.name] is modified with a [CI.name].<br>"
if(implant_detect)
user.show_message("<span class='notice'>Detected cybernetic modifications:</span>")
-1
View File
@@ -43,7 +43,6 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
if(WT.remove_fuel(0,user))
var/obj/item/stack/sheet/metal/new_item = new(usr.loc)
new_item.add_to_stacks(usr)
user.visible_message("[user.name] shaped [src] into metal with the welding tool.", \
"<span class='notice'>You shape [src] into metal with the welding tool.</span>", \
"<span class='italics'>You hear welding.</span>")
@@ -42,7 +42,6 @@
if (V.get_amount() >= 1 && src.get_amount() >= 1)
var/obj/item/stack/sheet/rglass/RG = new (user.loc)
RG.add_fingerprint(user)
RG.add_to_stacks(user)
var/obj/item/stack/sheet/glass/G = src
src = null
var/replace = (user.get_inactive_hand()==G)
+24 -43
View File
@@ -133,7 +133,6 @@
if (R.max_res_amount > 1)
var/obj/item/stack/new_item = O
new_item.amount = R.res_amount*multiplier
new_item.add_to_stacks(usr) //try to merge with existing stacks on current tile
if(new_item.amount <= 0)//if the stack is empty, i.e it has been merged with an existing stack and has been garbage collected
return
@@ -196,21 +195,27 @@
src.amount += amount
update_icon()
/obj/item/stack/proc/add_to_stacks(mob/usr)
var/obj/item/stack/oldsrc = src
src = null
for (var/obj/item/stack/item in usr.loc)
if (item==oldsrc)
continue
if (!istype(item, oldsrc.type))
continue
if (item.amount>=item.max_amount)
continue
oldsrc.attackby(item, usr)
usr << "<span class='notice'>You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s.</span>"
if(oldsrc.amount <= 0)
break
oldsrc.update_icon()
/obj/item/stack/proc/merge(obj/item/stack/S) //Merge src into S, as much as possible
var/transfer = get_amount()
if(S.is_cyborg)
transfer = min(transfer, round((S.source.max_energy - S.source.energy) / S.cost))
else
transfer = min(transfer, S.max_amount - S.amount)
if(pulledby)
pulledby.start_pulling(S)
S.copy_evidences(src)
use(transfer)
S.add(transfer)
/obj/item/stack/Crossed(obj/o)
if(istype(o, src.type) && !o.throwing)
merge(o)
return ..()
/obj/item/stack/hitby(atom/movable/AM, skip, hitpush)
if(istype(AM, src.type))
merge(AM)
return ..()
/obj/item/stack/attack_hand(mob/user)
if (user.get_inactive_hand() == src)
@@ -228,34 +233,10 @@
return
/obj/item/stack/attackby(obj/item/W, mob/user, params)
if (istype(W, src.type))
if(zero_amount()) return
if(istype(W, src.type))
var/obj/item/stack/S = W
if (S.is_cyborg)
var/to_transfer = min(src.amount, round((S.source.max_energy - S.source.energy) / S.cost))
S.add(to_transfer)
if (S && usr.machine==S)
spawn(0) S.interact(usr)
src.use(to_transfer)
if (src && usr.machine==src)
spawn(0) src.interact(usr)
else
if (S.amount >= max_amount)
return
var/to_transfer as num
if (user.get_inactive_hand()==src)
to_transfer = 1
else
to_transfer = min(src.amount, S.max_amount-S.amount)
S.amount+=to_transfer
if (S && usr.machine==S)
spawn(0) S.interact(usr)
src.use(to_transfer)
if (src && usr.machine==src)
spawn(0) src.interact(usr)
S.update_icon()
merge(S)
user << "<span class='notice'>Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s.</span>"
else
..()
@@ -40,7 +40,6 @@
if (mineralType == "metal")
var/obj/item/stack/sheet/metal/new_item = new(user.loc)
new_item.add_to_stacks(user)
user.visible_message("[user.name] shaped [src] into metal with the weldingtool.", \
"<span class='notice'>You shaped [src] into metal with the weldingtool.</span>", \
"<span class='italics'>You hear welding.</span>")
@@ -54,7 +53,6 @@
else
var/sheet_type = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
var/obj/item/stack/sheet/mineral/new_item = new sheet_type(user.loc)
new_item.add_to_stacks(user)
user.visible_message("[user.name] shaped [src] into a sheet with the weldingtool.", \
"<span class='notice'>You shaped [src] into a sheet with the weldingtool.</span>", \
"<span class='italics'>You hear welding.</span>")
+1
View File
@@ -1132,6 +1132,7 @@
// Attack self
/obj/item/toy/carpplushie/attack_self(mob/user)
playsound(src.loc, bitesound, 20, 1)
user << "<span class='notice'>You pet [src]. D'awww.</span>"
return ..()
/*
+6 -15
View File
@@ -323,12 +323,6 @@
else
return 1
/obj/item/weapon/twohanded/shockpaddles/Topic(href, href_list)
if(href_list["reenter"])
var/mob/dead/observer/ghost = usr
if(istype(ghost))
ghost.reenter_corpse(ghost)
/obj/item/weapon/twohanded/shockpaddles/attack(mob/M, mob/user)
var/halfwaycritdeath = (config.health_threshold_crit + config.health_threshold_dead) / 2
@@ -404,10 +398,8 @@
busy = 0
update_icon()
return
var/mob/dead/observer/ghost = H.get_ghost()
if(ghost)
ghost << "<span class='ghostalert'>Your heart is being defibrillated. Re-enter your corpse if you want to be revived! <a href=?src=\ref[src];reenter=1>(Click to re-enter)</a></span>"
ghost << 'sound/effects/genetics.ogg'
H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!")
user.visible_message("<span class='warning'>[user] begins to place [src] on [M.name]'s chest.</span>", "<span class='warning'>You begin to place [src] on [M.name]'s chest...</span>")
busy = 1
update_icon()
@@ -432,11 +424,10 @@
M.visible_message("<span class='warning'>[M]'s body convulses a bit.")
playsound(get_turf(src), "bodyfall", 50, 1)
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
for(var/obj/item/organ/limb/O in H.organs)
total_brute += O.brute_dam
total_burn += O.burn_dam
ghost = H.get_ghost()
if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations))
total_brute = H.getBruteLoss()
total_burn = H.getFireLoss()
if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !H.get_ghost() && tplus < tlimit && !(NOCLONE in H.mutations))
//If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit
if (H.health > halfwaycritdeath)
H.adjustOxyLoss(H.health - halfwaycritdeath)
@@ -3,17 +3,19 @@
icon = 'icons/obj/implants.dmi'
icon_state = "generic" //Shows up as the action button icon
action_button_is_hands_free = 1
origin_tech = "materials=2;biotech=3;programming=2"
var/activated = 1 //1 for implant types that can be activated, 0 for ones that are "always on" like loyalty implants
var/implanted = null
var/mob/living/imp_in = null
item_color = "b"
var/allow_reagents = 0
var/allow_multiple = 0
var/uses = -1
/obj/item/weapon/implant/proc/trigger(emote, mob/source)
return
/obj/item/weapon/implant/proc/activate()
return
@@ -22,16 +24,53 @@
//What does the implant do upon injection?
//return 0 if the implant fails (ex. Revhead and loyalty implant.)
//return 1 if the implant succeeds (ex. Nonrevhead and loyalty implant.)
/obj/item/weapon/implant/proc/implanted(mob/source)
//return 1 if the implant injects
//return -1 if the implant fails to inject
//return 0 if there is no room for implant
/obj/item/weapon/implant/proc/implant(var/mob/source, var/mob/user)
var/obj/item/weapon/implant/imp_e = locate(src.type) in source
if(!allow_multiple && imp_e && imp_e != src)
if(imp_e.uses < initial(imp_e.uses)*2)
if(uses == -1)
imp_e.uses = -1
else
imp_e.uses = min(imp_e.uses + uses, initial(imp_e.uses)*2)
qdel(src)
return 1
else
return 0
if(activated)
action_button_name = "Activate [src.name]"
src.loc = source
imp_in = source
implanted = 1
if(istype(source, /mob/living/carbon/human))
var/mob/living/carbon/human/H = source
H.sec_hud_set_implants()
if(user)
add_logs(user, source, "implanted", object="[name]")
return 1
/obj/item/weapon/implant/proc/removed(var/mob/source)
src.loc = null
imp_in = null
implanted = 0
if(istype(source, /mob/living/carbon/human))
var/mob/living/carbon/human/H = source
H.sec_hud_set_implants()
return 1
/obj/item/weapon/implant/Destroy()
if(imp_in)
removed(imp_in)
..()
/obj/item/weapon/implant/proc/get_data()
return "No information available"
@@ -45,6 +84,7 @@
name = "tracking implant"
desc = "Track with this."
activated = 0
origin_tech = "materials=2;magnets=2;programming=2;biotech=2"
var/id = 1.0
/obj/item/weapon/implant/tracking/get_data()
@@ -68,6 +108,7 @@
name = "firearms authentication implant"
desc = "Lets you shoot your guns"
icon_state = "auth"
origin_tech = "materials=2;magnets=2;programming=2;biotech=5;syndicate=5"
activated = 0
/obj/item/weapon/implant/weapons_auth/get_data()
@@ -78,181 +119,13 @@
<b>Function:</b> Allows operation of implant-locked weaponry, preventing equipment from falling into enemy hands."}
return dat
/obj/item/weapon/implant/explosive
name = "microbomb implant"
desc = "And boom goes the weasel."
icon_state = "explosive"
var/weak = 1.6
var/medium = 0.8
var/heavy = 0.4
var/delay = 7
/obj/item/weapon/implant/explosive/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Robust Corp RX-78 Employee Management Implant<BR>
<b>Life:</b> Activates upon death.<BR>
<b>Important Notes:</b> Explodes<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.<BR>
<b>Special Features:</b> Explodes<BR>
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
return dat
/obj/item/weapon/implant/explosive/trigger(emote, mob/source)
if(emote == "deathgasp")
activate("death")
/obj/item/weapon/implant/explosive/activate(cause)
if(!cause || !imp_in) return 0
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your microbomb implant? This will cause you to explode!", "Microbomb Implant Confirmation", "Yes", "No") != "Yes")
return 0
for(var/obj/item/weapon/implant/explosive/E in imp_in)
heavy += 0.4
medium += 0.8
weak += 1.6
delay += 7
if(E != src)
qdel(E)
heavy = round(heavy)
medium = round(medium)
weak = round(weak)
imp_in << "<span class='notice'>You activate your microbomb implant.</span>"
//If the delay is short, just blow up already jeez
if(delay <= 7)
imp_in.gib()
explosion(src,heavy,medium,weak,weak, flame_range = weak)
qdel(src)
return
timed_explosion()
/obj/item/weapon/implant/explosive/proc/timed_explosion()
imp_in.visible_message("<span class = 'warning'>[imp_in] starts beeping ominously!</span>")
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
if(imp_in.stat)
imp_in.visible_message("<span class = 'warning'>[imp_in] doubles over in pain!</span>")
imp_in.Weaken(7)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
imp_in.gib()
explosion(src,heavy,medium,weak,weak, flame_range = weak)
qdel(src)
/obj/item/weapon/implant/explosive/macro
name = "macrobomb implant"
desc = "And boom goes the weasel. And everything else nearby."
icon_state = "explosive"
weak = 16
medium = 8
heavy = 4
delay = 70
/obj/item/weapon/implant/explosive/macro/activate(cause)
if(!cause || !imp_in) return 0
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your macrobomb implant? This will cause you to explode and gib!", "Macrobomb Implant Confirmation", "Yes", "No") != "Yes")
return 0
for(var/obj/item/weapon/implant/explosive/macro/E in imp_in)
if(E != src)
qdel(E)
imp_in << "<span class='notice'>You activate your macrobomb implant.</span>"
timed_explosion()
/obj/item/weapon/implant/chem
name = "chem implant"
desc = "Injects things."
icon_state = "reagents"
allow_reagents = 1
/obj/item/weapon/implant/chem/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Robust Corp MJ-420 Prisoner Management Implant<BR>
<b>Life:</b> Deactivates upon death but remains within the body.<BR>
<b>Important Notes: Due to the system functioning off of nutrients in the implanted subject's body, the subject<BR>
will suffer from an increased appetite.</B><BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small capsule that can contain various chemicals. Upon receiving a specially encoded signal<BR>
the implant releases the chemicals directly into the blood stream.<BR>
<b>Special Features:</b>
<i>Micro-Capsule</i>- Can be loaded with any sort of chemical agent via the common syringe and can hold 50 units.<BR>
Can only be loaded while still in its original case.<BR>
<b>Integrity:</b> Implant will last so long as the subject is alive. However, if the subject suffers from malnutrition,<BR>
the implant may become unstable and either pre-maturely inject the subject or simply break."}
return dat
/obj/item/weapon/implant/chem/New()
..()
create_reagents(50)
/obj/item/weapon/implant/chem/trigger(emote, mob/source)
if(emote == "deathgasp")
activate(reagents.total_volume)
/obj/item/weapon/implant/chem/activate(cause)
if(!cause || !imp_in) return 0
var/mob/living/carbon/R = imp_in
var/injectamount = null
if (cause == "action_button")
injectamount = reagents.total_volume
else
injectamount = cause
reagents.trans_to(R, injectamount)
R << "<span class='italics'>You hear a faint beep.</span>"
if(!reagents.total_volume)
R << "<span class='italics'>You hear a faint click from your chest.</span>"
qdel(src)
/obj/item/weapon/implant/loyalty
name = "loyalty implant"
desc = "Makes you loyal or such."
activated = 0
/obj/item/weapon/implant/loyalty/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Nanotrasen Employee Management Implant<BR>
<b>Life:</b> Ten years.<BR>
<b>Important Notes:</b> Personnel injected with this device tend to be much more loyal to the company.<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's mental functions.<BR>
<b>Special Features:</b> Will prevent and cure most forms of brainwashing.<BR>
<b>Integrity:</b> Implant will last so long as the nanobots are inside the bloodstream."}
return dat
/obj/item/weapon/implant/loyalty/implanted(mob/target)
..()
if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.get_gang_bosses())) || is_shadow_or_thrall(target))
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
return 0
if(target.mind in ticker.mode.get_gangsters())
ticker.mode.remove_gangster(target.mind)
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>")
return 0
if(target.mind in ticker.mode.revolutionaries)
ticker.mode.remove_revolutionary(target.mind)
if(target.mind in ticker.mode.cult)
target << "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>"
else
target << "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>"
return 1
/obj/item/weapon/implant/loyalty/Destroy()
if(imp_in.stat != DEAD)
imp_in << "<span class='boldnotice'>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</span>"
..()
/obj/item/weapon/implant/adrenalin
name = "adrenal implant"
desc = "Removes all stuns and knockdowns."
icon_state = "adrenal"
var/uses = 3
origin_tech = "materials=2;biotech=4;combat=3;syndicate=4"
uses = 3
/obj/item/weapon/implant/adrenalin/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
@@ -285,8 +158,8 @@
name = "emp implant"
desc = "Triggers an EMP."
icon_state = "emp"
var/uses = 2
origin_tech = "materials=2;biotech=3;magnets=4;syndicate=4"
uses = 2
/obj/item/weapon/implant/emp/activate()
if (src.uses < 1) return 0
@@ -0,0 +1,53 @@
/obj/item/weapon/implant/chem
name = "chem implant"
desc = "Injects things."
icon_state = "reagents"
origin_tech = "materials=3;biotech=4"
flags = OPENCONTAINER
/obj/item/weapon/implant/chem/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Robust Corp MJ-420 Prisoner Management Implant<BR>
<b>Life:</b> Deactivates upon death but remains within the body.<BR>
<b>Important Notes: Due to the system functioning off of nutrients in the implanted subject's body, the subject<BR>
will suffer from an increased appetite.</B><BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small capsule that can contain various chemicals. Upon receiving a specially encoded signal<BR>
the implant releases the chemicals directly into the blood stream.<BR>
<b>Special Features:</b>
<i>Micro-Capsule</i>- Can be loaded with any sort of chemical agent via the common syringe and can hold 50 units.<BR>
Can only be loaded while still in its original case.<BR>
<b>Integrity:</b> Implant will last so long as the subject is alive."}
return dat
/obj/item/weapon/implant/chem/New()
..()
create_reagents(50)
/obj/item/weapon/implant/chem/trigger(emote, mob/source)
if(emote == "deathgasp")
activate(reagents.total_volume)
/obj/item/weapon/implant/chem/activate(cause)
if(!cause || !imp_in) return 0
var/mob/living/carbon/R = imp_in
var/injectamount = null
if (cause == "action_button")
injectamount = reagents.total_volume
else
injectamount = cause
reagents.trans_to(R, injectamount)
R << "<span class='italics'>You hear a faint beep.</span>"
if(!reagents.total_volume)
R << "<span class='italics'>You hear a faint click from your chest.</span>"
qdel(src)
/obj/item/weapon/implantcase/chem
name = "implant case - 'Remote Chemical'"
desc = "A glass case containing a remote chemical implant."
/obj/item/weapon/implantcase/chem/New()
imp = new /obj/item/weapon/implant/chem(src)
..()
@@ -0,0 +1,119 @@
/obj/item/weapon/implant/explosive
name = "microbomb implant"
desc = "And boom goes the weasel."
icon_state = "explosive"
origin_tech = "materials=2;combat=3;biotech=4;syndicate=4"
var/weak = 1.6
var/medium = 0.8
var/heavy = 0.4
var/delay = 7
/obj/item/weapon/implant/explosive/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Robust Corp RX-78 Employee Management Implant<BR>
<b>Life:</b> Activates upon death.<BR>
<b>Important Notes:</b> Explodes<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.<BR>
<b>Special Features:</b> Explodes<BR>
"}
return dat
/obj/item/weapon/implant/explosive/trigger(emote, mob/source)
if(emote == "deathgasp")
activate("death")
/obj/item/weapon/implant/explosive/activate(cause)
if(!cause || !imp_in) return 0
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your microbomb implant? This will cause you to explode!", "Microbomb Implant Confirmation", "Yes", "No") != "Yes")
return 0
heavy = round(heavy)
medium = round(medium)
weak = round(weak)
imp_in << "<span class='notice'>You activate your microbomb implant.</span>"
//If the delay is short, just blow up already jeez
if(delay <= 7)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
imp_in.gib()
qdel(src)
return
timed_explosion()
/obj/item/weapon/implant/explosive/implant(mob/source)
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
if(imp_e)
imp_e.heavy += heavy
imp_e.medium += medium
imp_e.weak += weak
imp_e.delay += delay
qdel(src)
return 1
return ..()
/obj/item/weapon/implant/explosive/proc/timed_explosion()
imp_in.visible_message("<span class = 'warning'>[imp_in] starts beeping ominously!</span>")
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
if(imp_in && imp_in.stat)
imp_in.visible_message("<span class = 'warning'>[imp_in] doubles over in pain!</span>")
imp_in.Weaken(7)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
if(imp_in)
imp_in.gib()
qdel(src)
/obj/item/weapon/implant/explosive/macro
name = "macrobomb implant"
desc = "And boom goes the weasel. And everything else nearby."
icon_state = "explosive"
origin_tech = "materials=3;combat=5;biotech=4;syndicate=5"
weak = 16
medium = 8
heavy = 4
delay = 70
/obj/item/weapon/implant/explosive/macro/activate(cause)
if(!cause || !imp_in) return 0
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your macrobomb implant? This will cause you to explode and gib!", "Macrobomb Implant Confirmation", "Yes", "No") != "Yes")
return 0
imp_in << "<span class='notice'>You activate your macrobomb implant.</span>"
timed_explosion()
/obj/item/weapon/implant/explosive/macro/implant(mob/source)
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
if(imp_e)
return 0
imp_e = locate(/obj/item/weapon/implant/explosive) in source
if(imp_e)
heavy += imp_e.heavy
medium += imp_e.medium
weak += imp_e.weak
delay += imp_e.delay
qdel(imp_e)
return ..()
/obj/item/weapon/implanter/explosive
name = "implanter (explosive)"
/obj/item/weapon/implanter/explosive/New()
imp = new /obj/item/weapon/implant/explosive(src)
..()
/obj/item/weapon/implantcase/explosive
name = "implant case - 'Explosive'"
desc = "A glass case containing an explosive implant."
/obj/item/weapon/implantcase/explosive/New()
imp = new /obj/item/weapon/implant/explosive(src)
..()
@@ -1,37 +1,50 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
/obj/item/weapon/implant/freedom
name = "freedom implant"
desc = "Use this to escape from those evil Red Shirts."
icon_state = "freedom"
item_color = "r"
var/uses = 4.0
/obj/item/weapon/implant/freedom/activate()
if (src.uses < 1) return 0
src.uses--
imp_in << "You feel a faint click."
if(iscarbon(imp_in))
var/mob/living/carbon/C_imp_in = imp_in
C_imp_in.uncuff()
/obj/item/weapon/implant/freedom/get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Freedom Beacon<BR>
<b>Life:</b> optimum 5 uses<BR>
<b>Important Notes:</b> <font color='red'>Illegal</font><BR>
<HR>
<b>Implant Details:</b> <BR>
<b>Function:</b> Transmits a specialized cluster of signals to override handcuff locking
mechanisms<BR>
<b>Special Features:</b><BR>
<i>Neuro-Scan</i>- Analyzes certain shadow signals in the nervous system<BR>
<b>Integrity:</b> The battery is extremely weak and commonly after injection its
life can drive down to only 1 use.<HR>
No Implant Specifics"}
return dat
/obj/item/weapon/implant/freedom
name = "freedom implant"
desc = "Use this to escape from those evil Red Shirts."
icon_state = "freedom"
item_color = "r"
origin_tech = "materials=2;magnets=3;biotech=3;syndicate=4"
uses = 4
/obj/item/weapon/implant/freedom/activate()
if(uses == 0) return 0
if(uses != -1) uses--
imp_in << "You feel a faint click."
if(iscarbon(imp_in))
var/mob/living/carbon/C_imp_in = imp_in
C_imp_in.uncuff()
/obj/item/weapon/implant/freedom/get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Freedom Beacon<BR>
<b>Life:</b> optimum 5 uses<BR>
<b>Important Notes:</b> <font color='red'>Illegal</font><BR>
<HR>
<b>Implant Details:</b> <BR>
<b>Function:</b> Transmits a specialized cluster of signals to override handcuff locking
mechanisms<BR>
<b>Special Features:</b><BR>
<i>Neuro-Scan</i>- Analyzes certain shadow signals in the nervous system<BR>
<HR>
No Implant Specifics"}
return dat
/obj/item/weapon/implanter/freedom
name = "implanter (freedom)"
/obj/item/weapon/implanter/freedom/New()
imp = new /obj/item/weapon/implant/freedom(src)
..()
/obj/item/weapon/implantcase/freedom
name = "implant case - 'Freedom'"
desc = "A glass case containing a freedom implant."
/obj/item/weapon/implantcase/freedom/New()
imp = new /obj/item/weapon/implant/freedom(src)
..()
@@ -0,0 +1,65 @@
/obj/item/weapon/implant/loyalty
name = "loyalty implant"
desc = "Makes you loyal or such."
origin_tech = "materials=2;biotech=4;programming=4"
activated = 0
/obj/item/weapon/implant/loyalty/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Nanotrasen Employee Management Implant<BR>
<b>Life:</b> Ten years.<BR>
<b>Important Notes:</b> Personnel injected with this device tend to be much more loyal to the company.<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's mental functions.<BR>
<b>Special Features:</b> Will prevent and cure most forms of brainwashing.<BR>
<b>Integrity:</b> Implant will last so long as the nanobots are inside the bloodstream."}
return dat
/obj/item/weapon/implant/loyalty/implant(mob/target)
if(..())
if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.get_gang_bosses())) || is_shadow_or_thrall(target))
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
imp_in = null
qdel(src)
return -1
if(target.mind in ticker.mode.get_gangsters())
ticker.mode.remove_gangster(target.mind)
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>")
imp_in = null
qdel(src)
return -1
if(target.mind in ticker.mode.revolutionaries)
ticker.mode.remove_revolutionary(target.mind)
if(target.mind in ticker.mode.cult)
target << "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>"
else
target << "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>"
return 1
return 0
/obj/item/weapon/implant/loyalty/removed(mob/target)
if(..())
if(target.stat != DEAD)
target << "<span class='boldnotice'>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</span>"
return 1
return 0
/obj/item/weapon/implanter/loyalty
name = "implanter (loyalty)"
/obj/item/weapon/implanter/loyalty/New()
imp = new /obj/item/weapon/implant/loyalty(src)
..()
update_icon()
/obj/item/weapon/implantcase/loyalty
name = "implant case - 'Loyalty'"
desc = "A glass case containing a loyalty implant."
/obj/item/weapon/implantcase/loyalty/New()
imp = new /obj/item/weapon/implant/loyalty(src)
..()
@@ -1,19 +1,28 @@
/obj/item/weapon/implantcase
name = "glass case"
desc = "A case containing an implant."
name = "implant case"
desc = "A glass case containing an implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-0"
item_state = "implantcase"
throw_speed = 2
throw_range = 5
w_class = 1.0
origin_tech = "materials=1;biotech=2"
materials = list(MAT_GLASS=500)
var/obj/item/weapon/implant/imp = null
/obj/item/weapon/implantcase/update_icon()
if(imp)
icon_state = "implantcase-[imp.item_color]"
origin_tech = imp.origin_tech
flags = imp.flags
reagents = imp.reagents
else
icon_state = "implantcase-0"
origin_tech = initial(origin_tech)
flags = initial(flags)
reagents = null
/obj/item/weapon/implantcase/attackby(obj/item/weapon/W, mob/user, params)
@@ -25,21 +34,13 @@
if(!in_range(src, user) && loc != user)
return
if(t)
name = "glass case- '[t]'"
name = "implant case - '[t]'"
else
name = "glass case"
else if(istype(W, /obj/item/weapon/reagent_containers/syringe))
if(!imp) return
if(!imp.allow_reagents) return
if(imp.reagents.total_volume >= imp.reagents.maximum_volume)
user << "<span class='notice'>[src] is full.</span>"
else
W.reagents.trans_to(imp, 5)
user << "<span class='notice'>You inject 5 units of the solution. The syringe now contains [W.reagents.total_volume] units.</span>"
name = "implant case"
else if(istype(W, /obj/item/weapon/implanter))
var/obj/item/weapon/implanter/I = W
if(I.imp)
if((imp || I.imp.implanted))
if(imp || I.imp.implanted)
return
I.imp.loc = src
imp = I.imp
@@ -56,55 +57,28 @@
update_icon()
I.update_icon()
/*else if(istype(W, /obj/item/ammo_casing/shotgun/implanter))
var/obj/item/ammo_casing/shotgun/implanter/I = W
if(I.implanter)
src.attackby(I.implanter, user, params) */ // COMING SOON -- c0
/obj/item/weapon/implantcase/New()
..()
update_icon()
/obj/item/weapon/implantcase/tracking
name = "glass case- 'Tracking'"
desc = "A case containing a tracking implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-b"
name = "implant case - 'Tracking'"
desc = "A glass case containing a tracking implant."
/obj/item/weapon/implantcase/tracking/New()
imp = new /obj/item/weapon/implant/tracking(src)
..()
/obj/item/weapon/implantcase/explosive
name = "glass case- 'Explosive'"
desc = "A case containing an explosive implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/explosive/New()
imp = new /obj/item/weapon/implant/explosive(src)
..()
/obj/item/weapon/implantcase/chem
name = "glass case- 'Chem'"
desc = "A case containing a chemical implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/chem/New()
imp = new /obj/item/weapon/implant/chem(src)
..()
/obj/item/weapon/implantcase/loyalty
name = "glass case- 'Loyalty'"
desc = "A case containing a loyalty implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/loyalty/New()
imp = new /obj/item/weapon/implant/loyalty(src)
..()
/obj/item/weapon/implantcase/weapons_auth
name = "glass case- 'Firearms Authentication'"
desc = "A case containing a firearms authentication implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-r"
name = "implant case - 'Firearms Authentication'"
desc = "A glass case containing a firearms authentication implant."
/obj/item/weapon/implantcase/weapons_auth/New()
imp = new /obj/item/weapon/implant/weapons_auth(src)
@@ -132,11 +132,8 @@
if(istype(imp, /obj/item/weapon/implant/loyalty))
M.visible_message("<span class='warning'>[M] has been implanted by the [src.name].</span>")
if(imp.implanted(M))
imp.loc = M
imp.imp_in = M
imp.implanted = 1
implant_list -= imp
if(imp.implant(M))
implant_list -= imp
break
return
@@ -1,82 +1,74 @@
/obj/item/weapon/implanter
name = "implanter"
desc = "A sterile automatic implant injector."
icon = 'icons/obj/items.dmi'
icon_state = "implanter0"
item_state = "syringe_0"
throw_speed = 3
throw_range = 5
w_class = 2.0
origin_tech = "materials=1;biotech=3;programming=2"
materials = list(MAT_METAL=600, MAT_GLASS=200)
var/obj/item/weapon/implant/imp = null
/obj/item/weapon/implanter/update_icon()
if(imp)
icon_state = "implanter1"
origin_tech = imp.origin_tech
else
icon_state = "implanter0"
origin_tech = initial(origin_tech)
/obj/item/weapon/implanter/attack(mob/living/carbon/M, mob/user)
if(!iscarbon(M))
return
if(user && imp)
if(M.head && (M.head.flags & THICKMATERIAL))
user << "<span class='warning'>[M]'s [M.head.name] is in the way! Take it off first!</span>"
return
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
if(M != user)
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
var/turf/T = get_turf(M)
if(T && (M == user || do_after(user, 50, target = M)))
if(T && (M == user || do_after(user, 50)))
if(user && M && (get_turf(M) == T) && src && imp)
if(M.head && (M.head.flags & THICKMATERIAL))
return
M.visible_message("[user] has implanted [M].", "<span class='notice'>[user] implants you with the implant.</span>")
add_logs(user, M, "implanted", src)
user << "<span class='notice'>You implant the implant into [M].</span>"
if(imp.implanted(M))
imp.loc = M
imp.imp_in = M
imp.implanted = 1
if(imp.implant(M, user))
user << "<span class='notice'>You implant the implant into [M].</span>"
M.visible_message("[user] has implanted [M].", "<span class='notice'>[user] implants you with the implant.</span>")
imp = null
update_icon()
imp = null
update_icon()
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
H.sec_hud_set_implants()
/obj/item/weapon/implanter/loyalty
name = "implanter-loyalty"
/obj/item/weapon/implanter/loyalty/New()
imp = new /obj/item/weapon/implant/loyalty(src)
/obj/item/weapon/implanter/attackby(obj/item/weapon/W, mob/user, params)
..()
update_icon()
if(istype(W, /obj/item/weapon/pen))
var/t = stripped_input(user, "What would you like the label to be?", name, null)
if(user.get_active_hand() != W)
return
if(!in_range(src, user) && loc != user)
return
if(t)
name = "implanter ([t])"
else
name = "implanter"
/obj/item/weapon/implanter/explosive
name = "implanter-explosive"
/obj/item/weapon/implanter/explosive/New()
imp = new /obj/item/weapon/implant/explosive(src)
/obj/item/weapon/implanter/New()
..()
update_icon()
spawn(1)
update_icon()
/obj/item/weapon/implanter/adrenalin
name = "implanter-adrenalin"
name = "implanter (adrenalin)"
/obj/item/weapon/implanter/adrenalin/New()
imp = new /obj/item/weapon/implant/adrenalin(src)
..()
update_icon()
/obj/item/weapon/implanter/emp
name = "implanter-EMP"
name = "implanter (EMP)"
/obj/item/weapon/implanter/emp/New()
imp = new /obj/item/weapon/implant/emp(src)
..()
update_icon()
@@ -3,18 +3,33 @@
desc = "Summon things."
icon = 'icons/obj/radio.dmi'
icon_state = "radio"
origin_tech = "materials=2;magnets=4;programming=4;biotech=4;syndicate=8;bluespace=5"
/obj/item/weapon/implant/uplink/New()
hidden_uplink = new(src)
hidden_uplink.uses = 10
..()
/obj/item/weapon/implant/uplink/implanted(mob/source)
..()
hidden_uplink.uplink_owner="[source.key]"
return 1
/obj/item/weapon/implant/uplink/implant(mob/source)
var/obj/item/weapon/implant/imp_e = locate(src.type) in source
if(imp_e)
imp_e.hidden_uplink.uses += hidden_uplink.uses
qdel(src)
return 1
if(..())
hidden_uplink.uplink_owner="[source.key]"
return 1
return 0
/obj/item/weapon/implant/uplink/activate()
if(hidden_uplink)
hidden_uplink.check_trigger(imp_in)
hidden_uplink.check_trigger(imp_in)
/obj/item/weapon/implanter/uplink
name = "implanter (uplink)"
/obj/item/weapon/implanter/uplink/New()
imp = new /obj/item/weapon/implant/uplink(src)
..()
@@ -205,6 +205,7 @@
/obj/item/weapon/gun/projectile/revolver,
/obj/item/ammo_box,
)
alternate_worn_layer = UNDER_SUIT_LAYER
/obj/item/weapon/storage/belt/fannypack
name = "fannypack"
@@ -115,7 +115,8 @@
/obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W, atom/new_location)
if(istype(W,/obj/item/clothing/mask/cigarette))
reagents.trans_to(W,(reagents.total_volume/contents.len))
if(reagents)
reagents.trans_to(W,(reagents.total_volume/contents.len))
..()
/obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
@@ -1,8 +1,8 @@
// To clarify:
// For use_to_pickup and allow_quick_gather functionality,
// see item/attackby() (/game/objects/items.dm)
// Do not remove this functionality without good reason, cough reagent_containers cough.
// -Sayu
// External storage-related logic:
// /mob/proc/ClickOn() in /_onclick/click.dm - clicking items in storages
// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement
// /item/attackby() in /game/objects/items.dm - use_to_pickup and allow_quick_gather functionality
// -- c0
/obj/item/weapon/storage
@@ -42,11 +42,11 @@
show_to(M)
return
if(!( M.restrained() ) && !( M.stat ))
if(!( istype(over_object, /obj/screen) ))
if(!M.restrained() && !M.stat)
if(!istype(over_object, /obj/screen))
return content_can_dump(over_object, M)
if(!(loc == usr) || (loc && loc.loc == usr))
if(loc != usr || (loc && loc.loc == usr))
return
playsound(loc, "rustle", 50, 1, -5)
@@ -107,7 +107,7 @@
is_seeing |= user
/obj/item/weapon/storage/throw_at(atom/target, range, speed)
/obj/item/weapon/storage/throw_at(atom/target, range, speed, mob/thrower, spin)
close_all()
return ..()
@@ -168,6 +168,7 @@
if(display_contents_with_number)
for(var/datum/numbered_display/ND in display_contents)
ND.sample_object.mouse_opacity = 2
ND.sample_object.screen_loc = "[cx]:16,[cy]:16"
ND.sample_object.maptext = "<font color='white'>[(ND.number > 1)? "[ND.number]" : ""]</font>"
ND.sample_object.layer = 20
@@ -177,6 +178,7 @@
cy--
else
for(var/obj/O in contents)
O.mouse_opacity = 2 //This is here so storage items that spawn with contents correctly have the "click around item to equip"
O.screen_loc = "[cx]:16,[cy]:16"
O.maptext = ""
O.layer = 20
@@ -310,6 +312,7 @@
orient2hud(usr)
for(var/mob/M in can_see_contents())
show_to(M)
W.mouse_opacity = 2 //So you can click on the area around the item to equip it, instead of having to pixel hunt
update_icon()
return 1
@@ -339,6 +342,7 @@
W.maptext = ""
W.on_exit_storage(src)
update_icon()
W.mouse_opacity = initial(W.mouse_opacity)
return 1
@@ -80,9 +80,9 @@
new /obj/item/weapon/wrench(src)
new /obj/item/weapon/weldingtool/largetank(src)
new /obj/item/weapon/crowbar/red(src)
new /obj/item/stack/cable_coil(src, 30, "red")
new /obj/item/weapon/wirecutters(src, "red")
new /obj/item/device/multitool(src)
new /obj/item/clothing/gloves/color/red/insulated(src)
/obj/item/weapon/storage/toolbox/drone
name = "mechanical toolbox"
@@ -53,17 +53,11 @@
return
if("implant")
var/obj/item/weapon/implanter/F = new /obj/item/weapon/implanter(src)
F.imp = new /obj/item/weapon/implant/freedom(F)
var/obj/item/weapon/implanter/U = new /obj/item/weapon/implanter(src)
U.imp = new /obj/item/weapon/implant/uplink(U)
var/obj/item/weapon/implanter/C = new /obj/item/weapon/implanter(src)
C.imp = new /obj/item/weapon/implant/emp(C)
var/obj/item/weapon/implanter/K = new /obj/item/weapon/implanter(src)
K.imp = new /obj/item/weapon/implant/adrenalin(K)
var/obj/item/weapon/implanter/S = new /obj/item/weapon/implanter(src)
S.imp = new /obj/item/weapon/implant/explosive(S)
S.name += " (explosive)"
new /obj/item/weapon/implanter/freedom(src)
new /obj/item/weapon/implanter/uplink(src)
new /obj/item/weapon/implanter/emp(src)
new /obj/item/weapon/implanter/adrenalin(src)
new /obj/item/weapon/implanter/explosive(src)
return
if("hacker")
@@ -173,8 +167,8 @@
..()
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/implanter/emp/(src)
new /obj/item/device/flashlight/emp/(src)
new /obj/item/weapon/implanter/emp(src)
new /obj/item/device/flashlight/emp(src)
return
/obj/item/weapon/storage/box/syndie_kit/chemical
+37 -33
View File
@@ -7,8 +7,8 @@ LINEN BINS
/obj/item/weapon/bedsheet
name = "bedsheet"
desc = "A surprisingly soft linen bedsheet."
icon = 'icons/obj/items.dmi'
icon_state = "sheet"
icon = 'icons/obj/bedsheets.dmi'
icon_state = "white"
item_state = "bedsheet"
slot_flags = SLOT_BACK
layer = 4.0
@@ -41,129 +41,133 @@ LINEN BINS
..()
/obj/item/weapon/bedsheet/blue
icon_state = "sheetblue"
icon_state = "blue"
item_color = "blue"
/obj/item/weapon/bedsheet/green
icon_state = "sheetgreen"
icon_state = "green"
item_color = "green"
/obj/item/weapon/bedsheet/orange
icon_state = "sheetorange"
icon_state = "orange"
item_color = "orange"
/obj/item/weapon/bedsheet/purple
icon_state = "sheetpurple"
icon_state = "purple"
item_color = "purple"
/obj/item/weapon/bedsheet/patriot
name = "patriotic bedsheet"
desc = "You've never felt more free than when sleeping on this."
icon_state = "sheetUSA"
icon_state = "USA"
item_color = "sheetUSA"
/obj/item/weapon/bedsheet/rainbow
name = "rainbow bedsheet"
desc = "A multicolored blanket. It's actually several different sheets cut up and sewn together."
icon_state = "sheetrainbow"
desc = "A multicolored blanket. It's actually several different sheets cut up and sewn together."
icon_state = "rainbow"
item_color = "rainbow"
/obj/item/weapon/bedsheet/red
icon_state = "sheetred"
icon_state = "red"
item_color = "red"
/obj/item/weapon/bedsheet/yellow
icon_state = "sheetyellow"
icon_state = "yellow"
item_color = "yellow"
/obj/item/weapon/bedsheet/mime
name = "mime's blanket"
desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this."
icon_state = "sheetmime"
icon_state = "mime"
item_color = "mime"
/obj/item/weapon/bedsheet/clown
name = "clown's blanket"
desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas."
icon_state = "sheetclown"
desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas."
icon_state = "clown"
item_color = "clown"
/obj/item/weapon/bedsheet/captain
name = "captain's bedsheet"
desc = "It has a Nanotrasen symbol on it, and was woven with a revolutionary new kind of thread guaranteed to have 0.01% permeability for most non-chemical substances, popular among most modern captains."
icon_state = "sheetcaptain"
icon_state = "captain"
item_color = "captain"
/obj/item/weapon/bedsheet/rd
name = "research director's bedsheet"
desc = "It appears to have a beaker emblem, and is made out of fire-resistant material, although it probably won't protect you in the event of fires you're familiar with every day."
icon_state = "sheetrd"
icon_state = "rd"
item_color = "director"
/obj/item/weapon/bedsheet/medical
name = "medical blanket"
desc = "It's a sterilized* blanket commonly used in the Medbay. *Sterilization is voided if a virologist is present onboard the station."
icon_state = "sheetmedical"
icon_state = "medical"
item_color = "medical"
/obj/item/weapon/bedsheet/cmo
name = "chief medical officer's bedsheet"
desc = "It's a sterilized blanket that has a cross emblem. There's some cat fur on it, likely from Runtime."
icon_state = "sheetcmo"
desc = "It's a sterilized blanket that has a cross emblem. There's some cat fur on it, likely from Runtime."
icon_state = "cmo"
item_color = "cmo"
/obj/item/weapon/bedsheet/hos
name = "head of security's bedsheet"
desc = "It is decorated with a shield emblem. While crime doesn't sleep, you do, but you are still THE LAW!"
icon_state = "sheethos"
desc = "It is decorated with a shield emblem. While crime doesn't sleep, you do, but you are still THE LAW!"
icon_state = "hos"
item_color = "hosred"
/obj/item/weapon/bedsheet/hop
name = "head of personnel's bedsheet"
desc = "It is decorated with a key emblem. For those rare moments when you can rest and cuddle with Ian without someone screaming for you over the radio."
icon_state = "sheethop"
desc = "It is decorated with a key emblem. For those rare moments when you can rest and cuddle with Ian without someone screaming for you over the radio."
icon_state = "hop"
item_color = "hop"
/obj/item/weapon/bedsheet/ce
name = "chief engineer's bedsheet"
desc = "It is decorated with a wrench emblem. It's highly reflective and stain resistant, so you don't need to worry about ruining it with oil."
icon_state = "sheetce"
desc = "It is decorated with a wrench emblem. It's highly reflective and stain resistant, so you don't need to worry about ruining it with oil."
icon_state = "ce"
item_color = "chief"
/obj/item/weapon/bedsheet/qm
name = "quartermaster's bedsheet"
desc = "It is decorated with a crate emblem in silver lining. It's rather tough, and just the thing to lie on after a hard day of pushing paper."
icon_state = "sheetqm"
icon_state = "qm"
item_color = "qm"
/obj/item/weapon/bedsheet/brown
icon_state = "sheetbrown"
icon_state = "brown"
item_color = "cargo"
/obj/item/weapon/bedsheet/centcom
name = "\improper Centcom bedsheet"
desc = "Woven with advanced nanothread for warmth as well as being very decorated, essential for all officials."
icon_state = "sheetcentcom"
icon_state = "centcom"
item_color = "centcom"
/obj/item/weapon/bedsheet/syndie
name = "syndicate bedsheet"
desc = "It has a syndicate emblem and it has an aura of evil."
icon_state = "sheetsyndie"
icon_state = "syndie"
item_color = "syndie"
/obj/item/weapon/bedsheet/cult
name = "cultist's bedsheet"
desc = "You might dream of Nar'Sie if you sleep with this. It seems rather tattered and glows of an eldritch presence."
icon_state = "sheetcult"
desc = "You might dream of Nar'Sie if you sleep with this. It seems rather tattered and glows of an eldritch presence."
icon_state = "cult"
item_color = "cult"
/obj/item/weapon/bedsheet/wiz
name = "wizard's bedsheet"
desc = "A special fabric enchanted with magic so you can have an enchanted night. It even glows!"
icon_state = "sheetwiz"
desc = "A special fabric enchanted with magic so you can have an enchanted night. It even glows!"
icon_state = "wiz"
item_color = "wiz"
/obj/item/weapon/bedsheet/ian
icon_state = "ian"
item_color = "ian"
/obj/structure/bedsheetbin
name = "linen bin"
@@ -72,7 +72,7 @@
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/device/flash/handheld(src)
new /obj/item/weapon/reagent_containers/hypospray/CMO(src)
new /obj/item/cybernetic_implant/eyes/hud/medical(src)
new /obj/item/organ/internal/cyberimp/eyes/hud/medical(src)
/obj/structure/closet/secure_closet/animal
name = "animal control"
+8 -27
View File
@@ -25,7 +25,6 @@
icon_state = "door_as_1"
airlock_type = /obj/machinery/door/airlock
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_com
@@ -37,7 +36,6 @@
glass_type = /obj/machinery/door/airlock/glass_command
airlock_type = /obj/machinery/door/airlock/command
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_com/glass
@@ -53,7 +51,6 @@
glass_type = /obj/machinery/door/airlock/glass_security
airlock_type = /obj/machinery/door/airlock/security
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_sec/glass
@@ -69,7 +66,6 @@
glass_type = /obj/machinery/door/airlock/glass_engineering
airlock_type = /obj/machinery/door/airlock/engineering
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_eng/glass
@@ -85,7 +81,6 @@
glass_type = /obj/machinery/door/airlock/glass_mining
airlock_type = /obj/machinery/door/airlock/mining
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_min/glass
@@ -101,7 +96,6 @@
glass_type = /obj/machinery/door/airlock/glass_atmos
airlock_type = /obj/machinery/door/airlock/atmos
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_atmo/glass
@@ -117,7 +111,6 @@
glass_type = /obj/machinery/door/airlock/glass_research
airlock_type = /obj/machinery/door/airlock/research
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_research/glass
@@ -133,7 +126,6 @@
glass_type = /obj/machinery/door/airlock/glass_science
airlock_type = /obj/machinery/door/airlock/science
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_science/glass
@@ -149,7 +141,6 @@
glass_type = /obj/machinery/door/airlock/glass_medical
airlock_type = /obj/machinery/door/airlock/medical
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_med/glass
@@ -163,7 +154,6 @@
icontext = "mai"
airlock_type = /obj/machinery/door/airlock/maintenance
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_ext
@@ -173,7 +163,6 @@
icontext = "ext"
airlock_type = /obj/machinery/door/airlock/external
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_fre
@@ -183,7 +172,6 @@
icontext = "fre"
airlock_type = /obj/machinery/door/airlock/freezer
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_hatch
@@ -193,7 +181,6 @@
icontext = "hatch"
airlock_type = /obj/machinery/door/airlock/hatch
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_mhatch
@@ -203,7 +190,6 @@
icontext = "mhatch"
airlock_type = /obj/machinery/door/airlock/maintenance_hatch
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_glass
@@ -211,7 +197,6 @@
icon_state = "door_as_g1"
airlock_type = /obj/machinery/door/airlock/glass
anchored = 1
density = 1
state = 1
mineral = "glass"
@@ -220,7 +205,6 @@
icon_state = "door_as_gold1"
airlock_type = /obj/machinery/door/airlock/gold
anchored = 1
density = 1
state = 1
mineral = "gold"
@@ -229,7 +213,6 @@
icon_state = "door_as_silver1"
airlock_type = /obj/machinery/door/airlock/silver
anchored = 1
density = 1
state = 1
mineral = "silver"
@@ -238,7 +221,6 @@
icon_state = "door_as_diamond1"
airlock_type = /obj/machinery/door/airlock/diamond
anchored = 1
density = 1
state = 1
mineral = "diamond"
@@ -247,7 +229,6 @@
icon_state = "door_as_uranium1"
airlock_type = /obj/machinery/door/airlock/uranium
anchored = 1
density = 1
state = 1
mineral = "uranium"
@@ -256,7 +237,6 @@
icon_state = "door_as_plasma1"
airlock_type = /obj/machinery/door/airlock/plasma
anchored = 1
density = 1
state = 1
mineral = "plasma"
@@ -266,7 +246,6 @@
icon_state = "door_as_clown1"
airlock_type = /obj/machinery/door/airlock/clown
anchored = 1
density = 1
state = 1
mineral = "bananium"
@@ -275,7 +254,6 @@
icon_state = "door_as_sandstone1"
airlock_type = /obj/machinery/door/airlock/sandstone
anchored = 1
density = 1
state = 1
mineral = "sandstone"
@@ -286,7 +264,6 @@
icontext = "highsec"
airlock_type = /obj/machinery/door/airlock/highsecurity
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_vault
@@ -296,7 +273,6 @@
icontext = "vault"
airlock_type = /obj/machinery/door/airlock/vault
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_shuttle
@@ -306,7 +282,6 @@
icontext = "shuttle"
airlock_type = /obj/machinery/door/airlock/shuttle
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_wood
@@ -314,7 +289,6 @@
icon_state = "door_as_wood1"
airlock_type = /obj/machinery/door/airlock/wood
anchored = 1
density = 1
state = 1
mineral = "wood"
@@ -327,13 +301,20 @@
glass_type = /obj/machinery/door/airlock/glass_virology
airlock_type = /obj/machinery/door/airlock/virology
anchored = 1
density = 1
state = 1
/obj/structure/door_assembly/door_assembly_viro/glass
mineral = "glass"
icon_state = "door_as_gviro1"
/obj/structure/door_assembly/door_assembly_centcom
icon_state = "door_as_ele1"
typetext = "centcom"
icontext = "ele"
airlock_type = /obj/machinery/door/airlock/centcom
anchored = 1
state = 1
/obj/structure/door_assembly/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/pen))
var/t = stripped_input(user, "Enter the name for the door.", src.name, src.created_name,MAX_NAME_LEN)
+1 -1
View File
@@ -102,7 +102,7 @@
return
user << "<span class='notice'>You start building a false wall...</span>"
if(do_after(user, 20, target = src))
if(!src.loc || !S || S.amount < 2)
if(!src.loc || !S || S.get_amount() < 2)
return
S.use(2)
user << "<span class='notice'>You create a false wall. Push on it to open or close the passage.</span>"
+1 -1
View File
@@ -233,7 +233,7 @@
if(user.stat || user.stunned || user.weakened || user.paralysis)
unbuckle_mob()
if(istype(user.l_hand, keytype) || istype(user.r_hand, keytype))
if(!Process_Spacemove(direction) || !has_gravity(src.loc) || move_delay)
if(!Process_Spacemove(direction) || !has_gravity(src.loc) || move_delay || !isturf(loc))
return
step(src, direction)
update_mob()