[MIRROR] [READY] RND TECHWEBS + DEPARTMENTAL LATHES (#4014)

* [READY] RND TECHWEBS + DEPARTMENTAL LATHES

* resetting all the maps because we can worry about them later.

* Regexing

* I'm fucked

* Fixes

* .

* maps

* bleh

* ree

* fixes
This commit is contained in:
CitadelStationBot
2017-12-11 18:36:38 -06:00
committed by kevinz000
parent b5600cb91c
commit cc0b768c72
332 changed files with 4962 additions and 4331 deletions
+1 -1
View File
@@ -117,4 +117,4 @@
D.target = null
D.error = "Connection to quantum relay severed"
return ..()
return ..()
+1 -1
View File
@@ -4,7 +4,7 @@
var/F = file("[GLOB.log_directory]/[subject].html")
WRITE_FILE(F, "<small>[time_stamp()] [REF(src)] ([x],[y],[z])</small> || [src] [message]<br>")
/client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_EXONET, INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS, INVESTIGATE_RADIATION) )
/client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_RESEARCH, INVESTIGATE_EXONET, INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS, INVESTIGATE_RADIATION) )
set name = "Investigate"
set category = "Admin"
if(!holder)
-1
View File
@@ -15,7 +15,6 @@
throwforce = 2
throw_speed = 3
throw_range = 7
origin_tech = "magnets=1;engineering=1"
var/secured = TRUE
var/list/attached_overlays = null
-1
View File
@@ -12,7 +12,6 @@
var/status = FALSE //0 - not readied //1 - bomb finished with welder
var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
var/obj/item/tank/bombtank = null //the second part of the bomb is a plasma tank
origin_tech = "materials=1;engineering=1"
/obj/item/device/onetankbomb/examine(mob/user)
-1
View File
@@ -2,7 +2,6 @@
name = "blast door controller"
desc = "A small electronic device able to control a blast door remotely."
icon_state = "control"
origin_tech = "magnets=1;programming=2"
attachable = 1
var/id = null
var/can_change_id = 0
-3
View File
@@ -8,7 +8,6 @@
throwforce = 0
w_class = WEIGHT_CLASS_TINY
materials = list(MAT_METAL = 300, MAT_GLASS = 300)
origin_tech = "magnets=2;combat=1"
crit_fail = 0 //Is the flash burnt out?
var/times_used = 0 //Number of times it's been used.
@@ -158,7 +157,6 @@
/obj/item/device/assembly/flash/cyborg
origin_tech = null
/obj/item/device/assembly/flash/cyborg/attack(mob/living/M, mob/user)
..()
@@ -224,7 +222,6 @@
throw_range = 3
w_class = WEIGHT_CLASS_BULKY
materials = list(MAT_GLASS=7500, MAT_METAL=1000)
origin_tech = "materials=3;combat=4"
attack_verb = list("shoved", "bashed")
block_chance = 50
armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 80, acid = 70)
-1
View File
@@ -3,7 +3,6 @@
desc = "Used for scanning and monitoring health."
icon_state = "health"
materials = list(MAT_METAL=800, MAT_GLASS=200)
origin_tech = "magnets=1;biotech=1"
attachable = 1
secured = 0
-1
View File
@@ -3,7 +3,6 @@
desc = "A small electronic device able to ignite combustible substances."
icon_state = "igniter"
materials = list(MAT_METAL=500, MAT_GLASS=50)
origin_tech = "magnets=1"
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
heat = 1000
-1
View File
@@ -3,7 +3,6 @@
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted.\n<span class='notice'>Alt-click to rotate it clockwise.</span>"
icon_state = "infrared"
materials = list(MAT_METAL=1000, MAT_GLASS=500)
origin_tech = "magnets=2;materials=2"
var/on = FALSE
var/visible = FALSE
+142 -142
View File
@@ -1,142 +1,142 @@
/obj/item/device/assembly/mousetrap
name = "mousetrap"
desc = "A handy little spring-loaded trap for catching pesty rodents."
icon_state = "mousetrap"
materials = list(MAT_METAL=100)
attachable = 1
var/armed = 0
/obj/item/device/assembly/mousetrap/examine(mob/user)
..()
if(armed)
to_chat(user, "The mousetrap is armed!")
else
to_chat(user, "The mousetrap is not armed.")
/obj/item/device/assembly/mousetrap/activate()
if(..())
armed = !armed
if(!armed)
if(ishuman(usr))
var/mob/living/carbon/human/user = usr
if((user.disabilities & (CLUMSY | DUMB)) && prob(50))
to_chat(user, "<span class='warning'>Your hand slips, setting off the trigger!</span>")
pulse(0)
update_icon()
if(usr)
playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
/obj/item/device/assembly/mousetrap/describe()
return "The pressure switch is [armed?"primed":"safe"]."
/obj/item/device/assembly/mousetrap/update_icon()
if(armed)
icon_state = "mousetraparmed"
else
icon_state = "mousetrap"
if(holder)
holder.update_icon()
/obj/item/device/assembly/mousetrap/proc/triggered(mob/target, type = "feet")
if(!armed)
return
var/obj/item/bodypart/affecting = null
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(PIERCEIMMUNE in H.dna.species.species_traits)
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
armed = 0
update_icon()
pulse(0)
return 0
switch(type)
if("feet")
if(!H.shoes)
affecting = H.get_bodypart(pick("l_leg", "r_leg"))
H.Knockdown(60)
if("l_hand", "r_hand")
if(!H.gloves)
affecting = H.get_bodypart(type)
H.Stun(60)
if(affecting)
if(affecting.receive_damage(1, 0))
H.update_damage_overlays()
else if(ismouse(target))
var/mob/living/simple_animal/mouse/M = target
visible_message("<span class='boldannounce'>SPLAT!</span>")
M.splat()
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
armed = 0
update_icon()
pulse(0)
/obj/item/device/assembly/mousetrap/attack_self(mob/living/carbon/human/user)
if(!armed)
to_chat(user, "<span class='notice'>You arm [src].</span>")
else
if((user.disabilities & (CLUMSY | DUMB)) && prob(50))
var/which_hand = "l_hand"
if(!(user.active_hand_index % 2))
which_hand = "r_hand"
triggered(user, which_hand)
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
"<span class='warning'>You accidentally trigger [src]!</span>")
return
to_chat(user, "<span class='notice'>You disarm [src].</span>")
armed = !armed
update_icon()
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
/obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user)
if(armed)
if((user.disabilities & (CLUMSY | DUMB)) && prob(50))
var/which_hand = "l_hand"
if(!(user.active_hand_index % 2))
which_hand = "r_hand"
triggered(user, which_hand)
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
"<span class='warning'>You accidentally trigger [src]!</span>")
return
..()
/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj)
if(armed)
if(ismob(AM))
var/mob/MM = AM
if(!(MM.movement_type & FLYING))
if(ishuman(AM))
var/mob/living/carbon/H = AM
if(H.m_intent == MOVE_INTENT_RUN)
triggered(H)
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
"<span class='warning'>You accidentally step on [src]</span>")
else if(ismouse(MM))
triggered(MM)
else if(AM.density) // For mousetrap grenades, set off by anything heavy
triggered(AM)
..()
/obj/item/device/assembly/mousetrap/on_found(mob/finder)
if(armed)
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
"<span class='warning'>You accidentally trigger [src]!</span>")
triggered(finder, (finder.active_hand_index % 2 == 0) ? "r_hand" : "l_hand")
return 1 //end the search!
return 0
/obj/item/device/assembly/mousetrap/hitby(A as mob|obj)
if(!armed)
return ..()
visible_message("<span class='warning'>[src] is triggered by [A].</span>")
triggered(null)
/obj/item/device/assembly/mousetrap/armed
icon_state = "mousetraparmed"
armed = 1
/obj/item/device/assembly/mousetrap
name = "mousetrap"
desc = "A handy little spring-loaded trap for catching pesty rodents."
icon_state = "mousetrap"
materials = list(MAT_METAL=100)
attachable = 1
var/armed = 0
/obj/item/device/assembly/mousetrap/examine(mob/user)
..()
if(armed)
to_chat(user, "The mousetrap is armed!")
else
to_chat(user, "The mousetrap is not armed.")
/obj/item/device/assembly/mousetrap/activate()
if(..())
armed = !armed
if(!armed)
if(ishuman(usr))
var/mob/living/carbon/human/user = usr
if((user.getBrainLoss() >= 60) || user.disabilities & CLUMSY && prob(50))
to_chat(user, "<span class='warning'>Your hand slips, setting off the trigger!</span>")
pulse(0)
update_icon()
if(usr)
playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
/obj/item/device/assembly/mousetrap/describe()
return "The pressure switch is [armed?"primed":"safe"]."
/obj/item/device/assembly/mousetrap/update_icon()
if(armed)
icon_state = "mousetraparmed"
else
icon_state = "mousetrap"
if(holder)
holder.update_icon()
/obj/item/device/assembly/mousetrap/proc/triggered(mob/target, type = "feet")
if(!armed)
return
var/obj/item/bodypart/affecting = null
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(PIERCEIMMUNE in H.dna.species.species_traits)
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
armed = 0
update_icon()
pulse(0)
return 0
switch(type)
if("feet")
if(!H.shoes)
affecting = H.get_bodypart(pick("l_leg", "r_leg"))
H.Knockdown(60)
if("l_hand", "r_hand")
if(!H.gloves)
affecting = H.get_bodypart(type)
H.Stun(60)
if(affecting)
if(affecting.receive_damage(1, 0))
H.update_damage_overlays()
else if(ismouse(target))
var/mob/living/simple_animal/mouse/M = target
visible_message("<span class='boldannounce'>SPLAT!</span>")
M.splat()
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
armed = 0
update_icon()
pulse(0)
/obj/item/device/assembly/mousetrap/attack_self(mob/living/carbon/human/user)
if(!armed)
to_chat(user, "<span class='notice'>You arm [src].</span>")
else
if(((user.getBrainLoss() >= 60) || user.disabilities & CLUMSY) && prob(50))
var/which_hand = "l_hand"
if(!(user.active_hand_index % 2))
which_hand = "r_hand"
triggered(user, which_hand)
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
"<span class='warning'>You accidentally trigger [src]!</span>")
return
to_chat(user, "<span class='notice'>You disarm [src].</span>")
armed = !armed
update_icon()
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
/obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user)
if(armed)
if(((user.getBrainLoss() >= 60) || user.disabilities & CLUMSY) && prob(50))
var/which_hand = "l_hand"
if(!(user.active_hand_index % 2))
which_hand = "r_hand"
triggered(user, which_hand)
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
"<span class='warning'>You accidentally trigger [src]!</span>")
return
..()
/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj)
if(armed)
if(ismob(AM))
var/mob/MM = AM
if(!(MM.movement_type & FLYING))
if(ishuman(AM))
var/mob/living/carbon/H = AM
if(H.m_intent == MOVE_INTENT_RUN)
triggered(H)
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
"<span class='warning'>You accidentally step on [src]</span>")
else if(ismouse(MM))
triggered(MM)
else if(AM.density) // For mousetrap grenades, set off by anything heavy
triggered(AM)
..()
/obj/item/device/assembly/mousetrap/on_found(mob/finder)
if(armed)
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
"<span class='warning'>You accidentally trigger [src]!</span>")
triggered(finder, (finder.active_hand_index % 2 == 0) ? "r_hand" : "l_hand")
return 1 //end the search!
return 0
/obj/item/device/assembly/mousetrap/hitby(A as mob|obj)
if(!armed)
return ..()
visible_message("<span class='warning'>[src] is triggered by [A].</span>")
triggered(null)
/obj/item/device/assembly/mousetrap/armed
icon_state = "mousetraparmed"
armed = TRUE
-1
View File
@@ -3,7 +3,6 @@
desc = "Used for scanning and alerting when someone enters a certain proximity."
icon_state = "prox"
materials = list(MAT_METAL=800, MAT_GLASS=200)
origin_tech = "magnets=1;engineering=1"
attachable = 1
var/scanning = 0
-2
View File
@@ -6,7 +6,6 @@
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
materials = list(MAT_METAL=400, MAT_GLASS=120)
origin_tech = "magnets=1;bluespace=1"
wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE
attachable = 1
@@ -185,7 +184,6 @@ Code:
return
/obj/item/device/assembly/signaler/cyborg
origin_tech = null
/obj/item/device/assembly/signaler/cyborg/attackby(obj/item/W, mob/user, params)
return
-1
View File
@@ -3,7 +3,6 @@
desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
icon_state = "timer"
materials = list(MAT_METAL=500, MAT_GLASS=50)
origin_tech = "magnets=1;engineering=1"
attachable = 1
var/timing = 0
-1
View File
@@ -3,7 +3,6 @@
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
icon_state = "voice"
materials = list(MAT_METAL=500, MAT_GLASS=50)
origin_tech = "magnets=1;engineering=1"
flags_1 = HEAR_1
attachable = 1
verb_say = "beeps"
+7 -10
View File
@@ -3,23 +3,20 @@
cost = 500
unit_name = "technology data disk"
export_types = list(/obj/item/disk/tech_disk)
var/list/techLevels = list()
var/list/datum/techweb_node/sold_nodes = list()
/datum/export/tech/get_cost(obj/O)
var/obj/item/disk/tech_disk/D = O
var/cost = 0
for(var/V in D.tech_stored)
if(!V)
for(var/V in D.stored_research.researched_nodes)
if(sold_nodes[V]) //Already sold before, don't want it.
continue
var/datum/tech/tech = V
cost += tech.getCost(techLevels[tech.id])
var/datum/techweb_node/TWN = D.stored_research.researched_nodes[V]
cost += TWN
return ..() * cost
/datum/export/tech/sell_object(obj/O)
..()
var/obj/item/disk/tech_disk/D = O
for(var/V in D.tech_stored)
if(!V)
continue
var/datum/tech/tech = V
techLevels[tech.id] = max(techLevels[tech.id], tech.level)
for(var/V in D.stored_research.researched_nodes)
sold_nodes[V] = D.stored_research.researched_nodes[V]
-4
View File
@@ -203,7 +203,6 @@
item_state = "bl_suit"
item_color = "black"
desc = "It's a plain jumpsuit. It has a small dial on the wrist."
origin_tech = "syndicate=2"
sensor_mode = SENSOR_OFF //Hey who's this guy on the Syndicate Shuttle??
random_sensor = FALSE
resistance_flags = NONE
@@ -235,7 +234,6 @@
icon_state = "armor"
item_state = "armor"
blood_overlay_type = "armor"
origin_tech = "syndicate=2"
resistance_flags = NONE
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
@@ -257,7 +255,6 @@
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
icon_state = "meson"
item_state = "meson"
origin_tech = "syndicate=2"
resistance_flags = NONE
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
@@ -392,7 +389,6 @@
desc = "A pair of black shoes."
permeability_coefficient = 0.05
flags_1 = NOSLIP_1
origin_tech = "syndicate=2"
resistance_flags = NONE
pockets = /obj/item/storage/internal/pocket/shoes
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
@@ -54,7 +54,6 @@
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting conditions."
icon_state = "meson"
item_state = "meson"
origin_tech = "magnets=1;engineering=2"
darkness_view = 2
vision_flags = SEE_TURFS
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
@@ -65,7 +64,6 @@
desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
icon_state = "nvgmeson"
item_state = "nvgmeson"
origin_tech = "magnets=4;engineering=5;plasmatech=4"
darkness_view = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
glass_colour_type = /datum/client_colour/glass_colour/green
@@ -87,7 +85,6 @@
desc = "A pair of snazzy goggles used to protect against chemical spills. Fitted with an analyzer for scanning items and reagents."
icon_state = "purple"
item_state = "glasses"
origin_tech = "magnets=2;engineering=1"
scan_reagents = 1 //You can see reagents while wearing science goggles
actions_types = list(/datum/action/item_action/toggle_research_scanner)
glass_colour_type = /datum/client_colour/glass_colour/purple
@@ -103,7 +100,6 @@
desc = "You can totally see in the dark now!"
icon_state = "night"
item_state = "glasses"
origin_tech = "materials=4;magnets=4;plasmatech=4;engineering=4"
darkness_view = 8
vision_flags = SEE_BLACKNESS
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
@@ -126,7 +122,6 @@
desc = "Very confusing glasses."
icon_state = "material"
item_state = "glasses"
origin_tech = "magnets=3;engineering=3"
vision_flags = SEE_OBJS
glass_colour_type = /datum/client_colour/glass_colour/lightblue
@@ -135,7 +130,6 @@
desc = "Used by miners to detect ores deep within the rock."
icon_state = "material"
item_state = "glasses"
origin_tech = "magnets=3;engineering=3"
darkness_view = 0
/obj/item/clothing/glasses/material/mining/gar
@@ -186,7 +180,6 @@
/obj/item/clothing/glasses/sunglasses/reagent
name = "beer goggles"
desc = "A pair of sunglasses outfitted with apparatus to scan reagents."
origin_tech = "magnets=2;engineering=2"
scan_reagents = 1
/obj/item/clothing/glasses/sunglasses/garb
@@ -267,7 +260,6 @@
desc = "Thermals in the shape of glasses."
icon_state = "thermal"
item_state = "glasses"
origin_tech = "magnets=3"
vision_flags = SEE_MOBS
invis_view = 2
flash_protect = 0
@@ -280,7 +272,6 @@
/obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete
name = "chameleon thermals"
desc = "A pair of thermal optic goggles with an onboard chameleon generator."
origin_tech = "magnets=3;syndicate=4"
flash_protect = -1
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -11,7 +11,6 @@
icon_state = "trayson-meson"
item_state = "trayson-meson"
actions_types = list(/datum/action/item_action/toggle_mode)
origin_tech = "materials=3;magnets=3;engineering=3;plasmatech=3"
vision_flags = NONE
darkness_view = 2
@@ -135,8 +134,6 @@
icon_state = "trayson-t-ray"
item_state = "trayson-t-ray"
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
origin_tech = "materials=3;magnets=2;engineering=2"
range = 2
modes = list(MODE_NONE = MODE_TRAY, MODE_TRAY = MODE_NONE)
-9
View File
@@ -2,7 +2,6 @@
name = "HUD"
desc = "A heads-up display that provides important info in (almost) real time."
flags_1 = null //doesn't protect eyes because it's a monocle, duh
origin_tech = "magnets=3;biotech=2"
var/hud_type = null
/obj/item/clothing/glasses/hud/equipped(mob/living/carbon/human/user, slot)
@@ -34,7 +33,6 @@
name = "health scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
icon_state = "healthhud"
origin_tech = "magnets=3;biotech=2"
hud_type = DATA_HUD_MEDICAL_ADVANCED
glass_colour_type = /datum/client_colour/glass_colour/lightblue
@@ -43,7 +41,6 @@
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
icon_state = "healthhudnight"
item_state = "glasses"
origin_tech = "magnets=4;biotech=4;plasmatech=4;engineering=5"
darkness_view = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
glass_colour_type = /datum/client_colour/glass_colour/green
@@ -52,7 +49,6 @@
name = "medical HUDSunglasses"
desc = "Sunglasses with a medical HUD."
icon_state = "sunhudmed"
origin_tech = "magnets=3;biotech=3;engineering=3"
darkness_view = 1
flash_protect = 1
tint = 1
@@ -62,7 +58,6 @@
name = "diagnostic HUD"
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits."
icon_state = "diagnostichud"
origin_tech = "magnets=2;engineering=2"
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
glass_colour_type = /datum/client_colour/glass_colour/lightorange
@@ -71,7 +66,6 @@
desc = "A robotics diagnostic HUD fitted with a light amplifier."
icon_state = "diagnostichudnight"
item_state = "glasses"
origin_tech = "magnets=4;powerstorage=4;plasmatech=4;engineering=5"
darkness_view = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
glass_colour_type = /datum/client_colour/glass_colour/green
@@ -80,7 +74,6 @@
name = "security HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records."
icon_state = "securityhud"
origin_tech = "magnets=3;combat=2"
hud_type = DATA_HUD_SECURITY_ADVANCED
glass_colour_type = /datum/client_colour/glass_colour/red
@@ -115,7 +108,6 @@
name = "security HUDSunglasses"
desc = "Sunglasses with a security HUD."
icon_state = "sunhudsec"
origin_tech = "magnets=3;combat=3;engineering=3"
darkness_view = 1
flash_protect = 1
tint = 1
@@ -125,7 +117,6 @@
name = "night vision security HUD"
desc = "An advanced heads-up display which provides id data and vision in complete darkness."
icon_state = "securityhudnight"
origin_tech = "magnets=4;combat=4;plasmatech=4;engineering=5"
darkness_view = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
glass_colour_type = /datum/client_colour/glass_colour/green
-1
View File
@@ -21,7 +21,6 @@
flash_protect = 2
tint = 2
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 55)
origin_tech = "materials=2;engineering=3"
actions_types = list(/datum/action/item_action/toggle)
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = MASKCOVERSEYES
-3
View File
@@ -10,7 +10,6 @@
strip_delay = 70
equip_delay_other = 70
resistance_flags = FIRE_PROOF
origin_tech = "materials=3;magnets=4;engineering=4"
/obj/item/clothing/shoes/magboots/verb/toggle()
set name = "Toggle Magboots"
@@ -51,7 +50,6 @@
icon_state = "advmag0"
magboot_state = "advmag"
slowdown_active = SHOES_SLOWDOWN
origin_tech = null
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/clothing/shoes/magboots/syndie
@@ -59,4 +57,3 @@
name = "blood-red magboots"
icon_state = "syndiemag0"
magboot_state = "syndiemag"
origin_tech = "magnets=4;syndicate=2"
-1
View File
@@ -14,7 +14,6 @@
magboot_state = "DS-magboots"
icon = 'icons/obj/clothing/vg_clothes.dmi'
icon_override = 'icons/mob/citadel/head.dmi'
origin_tech = null
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/clothing/shoes/magboots/atmos
@@ -662,7 +662,6 @@
name = "envirosuit extinguisher cartridge"
desc = "A cartridge loaded with a compressed extinguisher mix, used to refill the automatic extinguisher on plasma envirosuits."
icon_state = "plasmarefill"
origin_tech = "materials=2;plasmatech=3;biotech=1"
/obj/item/clothing/under/rank/security/navyblue/russian
name = "russian officer's uniform"
-1
View File
@@ -14,7 +14,6 @@
slot_flags = SLOT_BELT
var/scanning = 0
var/list/log = list()
origin_tech = "engineering=4;biotech=2;programming=5"
var/range = 8
var/view_check = TRUE
+10 -21
View File
@@ -22,7 +22,7 @@
/datum/round_event/pirates/announce()
priority_announce("Incoming subspace communication. Secure channel opened at all communication consoles.", "Incoming Message", 'sound/ai/commandreport.ogg')
if(!control) //Means this is false alarm, todo : explicit checks instead of using announceWhen
return
threat = new
@@ -45,7 +45,7 @@
if(!shuttle_spawned)
spawn_shuttle()
/datum/round_event/pirates/start()
if(!paid_off && !shuttle_spawned)
@@ -64,7 +64,7 @@
var/turf/T = locate(x,y,z)
if(!T)
CRASH("Pirate event found no turf to load in")
if(!ship.load(T))
CRASH("Loading pirate ship failed!")
for(var/turf/A in ship.get_affected_turfs(T))
@@ -75,7 +75,7 @@
candidates -= M
else
notify_ghosts("Space pirates are waking up!", source = spawner, action=NOTIFY_ATTACK, flashwindow = FALSE)
priority_announce("Unidentified armed ship detected near the station.")
//Shuttle equipment
@@ -104,7 +104,7 @@
var/siphoned = min(SSshuttle.points,siphon_per_tick)
SSshuttle.points -= siphoned
credits_stored += siphoned
steal_tech()
interrupt_research()
else
return
else
@@ -130,23 +130,12 @@
else
dump_loot(user)
//20% to sap tech levels on unlocked consoles
/obj/machinery/shuttle_scrambler/proc/steal_tech()
if(!prob(20))
return
var/datum/tech/target_tech = pick(subtypesof(/datum/tech))
var/target_id = initial(target_tech.id)
for(var/obj/machinery/computer/rdconsole/C in GLOB.machines)
if(C.screen == RD_CONSOLE_LOCKED_SCREEN || C.stat & (NOPOWER|BROKEN))
continue
var/datum/research/files = C.files
files.LowerTech(target_id,1)
new /obj/effect/temp_visual/emp(get_turf(C))
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
//interrupt_research
/obj/machinery/shuttle_scrambler/proc/interrupt_research()
for(var/obj/machinery/rnd/server/S in GLOB.machines)
if(S.stat & (NOPOWER|BROKEN))
continue
var/datum/research/files = S.files
files.LowerTech(target_id,1)
S.emp_act(1)
new /obj/effect/temp_visual/emp(get_turf(S))
/obj/machinery/shuttle_scrambler/proc/dump_loot(mob/user)
@@ -157,7 +146,7 @@
new /obj/item/stack/spacecash/c200(drop_location())
credits_stored -= 200
to_chat(user,"<span class='notice'>You retrieve the siphoned credits!</span>")
/obj/machinery/shuttle_scrambler/proc/send_notification()
priority_announce("Data theft signal detected, source registered on local gps units.")
-1
View File
@@ -5,7 +5,6 @@
item_state = "eshield0"
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
origin_tech = "syndicate=3;engineering=3"
/obj/item/pizzabox
name = "pizza box"
+16 -16
View File
@@ -15,13 +15,13 @@
var/efficiency = 0
var/productivity = 0
var/max_items = 40
var/datum/research/files
var/datum/techweb/stored_research
var/list/show_categories = list("Food", "Botany Chemicals", "Leather and Cloth")
var/list/timesFiveCategories = list("Food", "Botany Chemicals")
/obj/machinery/biogenerator/Initialize()
. = ..()
files = new /datum/research/biogenerator(src)
stored_research = new /datum/techweb/specialized/autounlocking/biogenerator
create_reagents(1000)
/obj/machinery/biogenerator/Destroy()
@@ -124,7 +124,7 @@
to_chat(user, "<span class='info'>You empty the plant bag into the biogenerator, filling it to its capacity.</span>")
else
to_chat(user, "<span class='info'>You fill the biogenerator to its capacity.</span>")
return 1 //no afterattack
return TRUE //no afterattack
else if(istype(O, /obj/item/reagent_containers/food/snacks/grown))
var/i = 0
@@ -135,7 +135,7 @@
else
if(user.transferItemToLoc(O, src))
to_chat(user, "<span class='info'>You put [O.name] in [src.name]</span>")
return 1 //no afterattack
return TRUE //no afterattack
else if (istype(O, /obj/item/disk/design_disk))
user.visible_message("[user] begins to load \the [O] in \the [src]...",
"You begin to load a design from \the [O]...",
@@ -145,9 +145,9 @@
if(do_after(user, 10, target = src))
for(var/B in D.blueprints)
if(B)
files.AddDesign2Known(B)
stored_research.add_design(B)
processing = FALSE
return 1
return TRUE
else
to_chat(user, "<span class='warning'>You cannot put this in [src.name]!</span>")
@@ -176,8 +176,8 @@
var/categories = show_categories.Copy()
for(var/V in categories)
categories[V] = list()
for(var/V in files.known_designs)
var/datum/design/D = files.known_designs[V]
for(var/V in stored_research.researched_designs)
var/datum/design/D = stored_research.researched_designs[V]
for(var/C in categories)
if(C in D.category)
categories[C] += D
@@ -237,16 +237,16 @@
/obj/machinery/biogenerator/proc/check_cost(list/materials, multiplier = 1, remove_points = 1)
if(materials.len != 1 || materials[1] != MAT_BIOMASS)
return 0
return FALSE
if (materials[MAT_BIOMASS]*multiplier/efficiency > points)
menustat = "nopoints"
return 0
return FALSE
else
if(remove_points)
points -= materials[MAT_BIOMASS]*multiplier/efficiency
update_icon()
updateUsrDialog()
return 1
return TRUE
/obj/machinery/biogenerator/proc/check_container_volume(list/reagents, multiplier = 1)
var/sum_reagents = 0
@@ -256,19 +256,19 @@
if(beaker.reagents.total_volume + sum_reagents > beaker.reagents.maximum_volume)
menustat = "nobeakerspace"
return 0
return FALSE
return 1
return TRUE
/obj/machinery/biogenerator/proc/create_product(datum/design/D, amount)
if(!beaker || !loc)
return 0
return FALSE
if(ispath(D.build_path, /obj/item/stack))
if(!check_container_volume(D.make_reagents, amount))
return 0
return FALSE
if(!check_cost(D.materials, amount))
return 0
return FALSE
var/obj/item/stack/product = new D.build_path(loc)
product.amount = amount
-1
View File
@@ -15,7 +15,6 @@
// Saves us from having to define each stupid grown's dried_type as itself.
// If you don't want a plant to be driable (watermelons) set this to null in the time definition.
resistance_flags = FLAMMABLE
origin_tech = "biotech=1"
/obj/item/reagent_containers/food/snacks/grown/Initialize(mapload, obj/item/seeds/new_seed)
. = ..()
@@ -30,7 +30,6 @@
seed = /obj/item/seeds/ambrosia
name = "ambrosia vulgaris branch"
desc = "This is a plant containing various healing chemicals."
origin_tech = "biotech=2"
// Ambrosia Deus
/obj/item/seeds/ambrosia/deus
@@ -50,7 +49,6 @@
desc = "Eating this makes you feel immortal!"
icon_state = "ambrosiadeus"
filling_color = "#008B8B"
origin_tech = "biotech=4;materials=3"
//Ambrosia Gaia
/obj/item/seeds/ambrosia/gaia
@@ -72,6 +70,5 @@
desc = "Eating this <i>makes</i> you immortal."
icon_state = "ambrosia_gaia"
filling_color = rgb(255, 175, 0)
origin_tech = "biotech=6;materials=5"
light_range = 3
seed = /obj/item/seeds/ambrosia/gaia
-1
View File
@@ -56,4 +56,3 @@
desc = "Emblazoned upon the apple is the word 'Kallisti'."
icon_state = "goldapple"
filling_color = "#FFD700"
origin_tech = "biotech=4;materials=5"
-1
View File
@@ -107,7 +107,6 @@
item_state = "bluespace_peel"
trash = /obj/item/grown/bananapeel/bluespace
filling_color = "#0000FF"
origin_tech = "biotech=3;bluespace=5"
/obj/item/grown/bananapeel/bluespace
seed = /obj/item/seeds/banana/bluespace
@@ -90,7 +90,6 @@
desc = "Nutritious!"
icon_state = "glowberrypile"
filling_color = "#7CFC00"
origin_tech = "plasmatech=6"
foodtype = FRUIT
// Cherries
-2
View File
@@ -49,7 +49,6 @@
icon_state = "icepepper"
filling_color = "#0000CD"
bitesize_mod = 2
origin_tech = "biotech=4"
foodtype = VEGETABLES
// Ghost Chili
@@ -76,7 +75,6 @@
var/mob/living/carbon/human/held_mob
filling_color = "#F8F8FF"
bitesize_mod = 4
origin_tech = "biotech=4;magnets=5"
foodtype = VEGETABLES
/obj/item/reagent_containers/food/snacks/grown/ghost_chili/attack_hand(mob/user)
-1
View File
@@ -108,7 +108,6 @@
name = "gatfruit"
desc = "It smells like burning."
icon_state = "gatfruit"
origin_tech = "combat=6"
trash = /obj/item/gun/ballistic/revolver
bitesize_mod = 2
foodtype = FRUIT
@@ -79,7 +79,6 @@
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.1, "nutriment" = 0, "amanitin" = 0.2)
rarity = 30
origin_tech = "biotech=5"
/obj/item/reagent_containers/food/snacks/grown/mushroom/angel
seed = /obj/item/seeds/angel
@@ -163,7 +162,6 @@
desc = "<I>Plumus Locomotus</I>: The beginning of the great walk."
icon_state = "walkingmushroom"
filling_color = "#9370DB"
origin_tech = "biotech=4;programming=5"
/obj/item/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user)
if(isspaceturf(user.loc))
@@ -233,7 +231,6 @@
icon_state = "glowshroom"
filling_color = "#00FA9A"
var/effect_path = /obj/structure/glowshroom
origin_tech = "biotech=4;plasmatech=6"
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
if(isspaceturf(user.loc))
@@ -280,7 +277,6 @@
icon_state = "glowcap"
filling_color = "#00FA9A"
effect_path = /obj/structure/glowshroom/glowcap
origin_tech = "biotech=4;powerstorage=6;plasmatech=4"
//Shadowshroom
@@ -304,7 +300,6 @@
desc = "<I>Mycena Umbra</I>: This species of mushroom emits shadow instead of light."
icon_state = "shadowshroom"
effect_path = /obj/structure/glowshroom/shadowshroom
origin_tech = "biotech=4;plasmatech=4;magnets=4"
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user)
. = ..()
-2
View File
@@ -42,7 +42,6 @@
w_class = WEIGHT_CLASS_TINY
throw_speed = 1
throw_range = 3
origin_tech = "combat=3"
attack_verb = list("stung")
/obj/item/grown/nettle/suicide_act(mob/user)
@@ -92,7 +91,6 @@
icon_state = "deathnettle"
force = 30
throwforce = 15
origin_tech = "combat=5"
/obj/item/grown/nettle/death/add_juice()
..()
+1 -3
View File
@@ -43,9 +43,9 @@
icon_state = "bloodtomato"
splat_type = /obj/effect/gibspawner/generic
filling_color = "#FF0000"
origin_tech = "biotech=5"
foodtype = VEGETABLES | GROSS
// Blue Tomato
/obj/item/seeds/tomato/blue
name = "pack of blue-tomato seeds"
@@ -89,7 +89,6 @@
name = "bluespace tomato"
desc = "So lubricated, you might slip through space-time."
icon_state = "bluespacetomato"
origin_tech = "biotech=4;bluespace=5"
// Killer Tomato
@@ -116,7 +115,6 @@
icon_state = "killertomato"
var/awakening = 0
filling_color = "#FF0000"
origin_tech = "biotech=4;combat=5"
/obj/item/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone)
if(awakening)
@@ -40,7 +40,6 @@
w_class = WEIGHT_CLASS_NORMAL
throw_speed = 2
throw_range = 3
origin_tech = "materials=1"
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
var/plank_type = /obj/item/stack/sheet/mineral/wood
var/plank_name = "wooden planks"
@@ -9,7 +9,6 @@
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_BELT
origin_tech = "magnets=2;biotech=2"
materials = list(MAT_METAL=30, MAT_GLASS=20)
// *************************************
@@ -72,7 +71,6 @@
item_state = "cultivator"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
origin_tech = "engineering=2;biotech=2"
flags_1 = CONDUCT_1
force = 5
throwforce = 7
@@ -96,7 +94,6 @@
throw_speed = 3
throw_range = 4
materials = list(MAT_METAL = 15000)
origin_tech = "materials=2;combat=2"
attack_verb = list("chopped", "torn", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
sharpness = IS_SHARP
@@ -120,7 +117,6 @@
flags_1 = CONDUCT_1
armour_penetration = 20
slot_flags = SLOT_BACK
origin_tech = "materials=3;combat=2"
attack_verb = list("chopped", "sliced", "cut", "reaped")
hitsound = 'sound/weapons/bladeslice.ogg'
var/swiping = FALSE
+1 -17
View File
@@ -137,7 +137,6 @@
/datum/plant_gene/trait
var/rate = 0.05
var/examine_line = ""
var/list/origin_tech = null
var/trait_id // must be set and equal for any two traits of the same type
/datum/plant_gene/trait/Copy()
@@ -157,19 +156,7 @@
return TRUE
/datum/plant_gene/trait/proc/on_new(obj/item/reagent_containers/food/snacks/grown/G, newloc)
if(!origin_tech) // This ugly code segment adds RnD tech levels to resulting plants.
return
if(G.origin_tech)
var/list/tech = params2list(G.origin_tech)
for(var/t in origin_tech)
if(t in tech)
tech[t] = max(text2num(tech[t]), origin_tech[t])
else
tech[t] = origin_tech[t]
G.origin_tech = list2params(tech)
else
G.origin_tech = list2params(origin_tech)
return
/datum/plant_gene/trait/proc/on_consume(obj/item/reagent_containers/food/snacks/grown/G, mob/living/carbon/target)
return
@@ -195,7 +182,6 @@
// For code, see grown.dm
name = "Liquid Contents"
examine_line = "<span class='info'>It has a lot of liquid contents inside.</span>"
origin_tech = list("biotech" = 5)
/datum/plant_gene/trait/slip
// Makes plant slippery, unless it has a grown-type trash. Then the trash gets slippery.
@@ -229,7 +215,6 @@
// Multiplies max charge by (rate*1000) when used in potato power cells.
name = "Electrical Activity"
rate = 0.2
origin_tech = list("powerstorage" = 5)
/datum/plant_gene/trait/cell_charge/on_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/living/carbon/C)
var/power = G.seed.potency*rate
@@ -304,7 +289,6 @@
// Teleport radius is calculated as max(round(potency*rate), 1)
name = "Bluespace Activity"
rate = 0.1
origin_tech = list("bluespace" = 5)
/datum/plant_gene/trait/teleport/on_squash(obj/item/reagent_containers/food/snacks/grown/G, atom/target)
if(isliving(target))
@@ -27,6 +27,7 @@
return TRUE
to_chat(user, "<span class='notice'>You install \the [O] into \the [src]. </span>")
upgraded = TRUE
qdel(O)
interact(user)
return TRUE
@@ -36,6 +37,7 @@
return TRUE
to_chat(user, "<span class='notice'>You install \the [O] into \the [src]. </span>")
can_clone = TRUE
qdel(O)
interact(user)
return TRUE
@@ -185,7 +187,6 @@
icon_state = "upgrade_disk"
item_state = "card-id"
w_class = WEIGHT_CLASS_SMALL
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4)
/obj/item/disk/integrated_circuit/upgrade/advanced
name = "integrated circuit printer upgrade disk - advanced designs"
@@ -196,4 +197,3 @@
name = "integrated circuit printer upgrade disk - circuit cloner"
desc = "Install this into your integrated circuit printer to enhance it. This one allows the printer to duplicate assemblies."
icon_state = "upgrade_disk_clone"
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 5)
@@ -3,7 +3,6 @@
name = "power thingy"
desc = "Does power stuff."
complexity = 5
origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
category_text = "Power - Passive"
/obj/item/integrated_circuit/passive/power/proc/make_energy()
@@ -16,7 +15,6 @@
extended_desc = "The cell generates 1 W of power in optimal lighting conditions. Less light will result in less power being generated."
icon_state = "solar_cell"
complexity = 8
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_DATA = 2)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
var/max_power = 30
@@ -35,7 +33,6 @@
icon_state = "led"
complexity = 1
activators = list("pulse out" = IC_PINTYPE_PULSE_OUT)
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_DATA = 2)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
var/is_charge = FALSE
@@ -60,7 +57,6 @@
from the 'equipment' power channel."
icon_state = "power_relay"
complexity = 7
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_DATA = 2)
spawn_flags = IC_SPAWN_RESEARCH
var/power_amount = 50
@@ -100,7 +96,6 @@
outputs = list("volume used" = IC_PINTYPE_NUMBER, "self reference" = IC_PINTYPE_REF)
activators = list()
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
var/volume = 60
var/list/fuel = list("plasma" = 10000, "welding_fuel" = 3000, "carbon" = 2000, "ethanol" = 2000, "nutriment" = 1600, "blood" = 1000)
@@ -88,7 +88,6 @@
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
power_draw_per_use = 40
/obj/item/integrated_circuit/input/med_scanner/do_work()
@@ -123,7 +122,6 @@
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_BIO = 4)
power_draw_per_use = 80
/obj/item/integrated_circuit/input/adv_med_scanner/do_work()
@@ -174,7 +172,6 @@
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_BIO = 4)
power_draw_per_use = 10
/obj/item/integrated_circuit/input/plant_scanner/do_work()
@@ -271,7 +268,6 @@
"not scanned" = IC_PINTYPE_PULSE_OUT
)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_BIO = 4)
power_draw_per_use = 80
/obj/item/integrated_circuit/input/examiner/do_work()
@@ -479,7 +475,6 @@
"on signal sent" = IC_PINTYPE_PULSE_OUT,
"on signal received" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2)
power_draw_idle = 5
power_draw_per_use = 40
@@ -573,7 +568,6 @@
)
activators = list("send data" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2)
power_draw_per_use = 50
var/datum/ntnet_connection/exonet = null
@@ -716,7 +710,6 @@
)
activators = list("read" = IC_PINTYPE_PULSE_IN, "on read" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_POWER = 4, TECH_MAGNET = 3)
power_draw_per_use = 1
/obj/item/integrated_circuit/input/internalbm/do_work()
@@ -748,7 +741,6 @@
)
activators = list("read" = IC_PINTYPE_PULSE_IN, "on read" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_POWER = 4, TECH_MAGNET = 3)
power_draw_per_use = 1
/obj/item/integrated_circuit/input/externalbm/do_work()
@@ -23,7 +23,6 @@
)
var/obj/item/gun/energy/installed_gun = null
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_COMBAT = 4)
power_draw_per_use = 0
var/mode = FALSE
@@ -172,7 +171,6 @@
outputs = list()
activators = list("prime grenade" = IC_PINTYPE_PULSE_IN)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_COMBAT = 4)
var/obj/item/grenade/attached_grenade
var/pre_attached_grenade_type
@@ -363,7 +361,6 @@
"fire" = IC_PINTYPE_PULSE_IN
)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_COMBAT = 4)
power_draw_per_use = 50
var/max_w_class = WEIGHT_CLASS_NORMAL
@@ -58,7 +58,6 @@
name = "large memory circuit"
desc = "This big circuit can hold eight pieces of data."
icon_state = "memory8"
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 4
number_of_pins = 8
@@ -68,7 +67,6 @@
icon_state = "memory16"
w_class = WEIGHT_CLASS_SMALL
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4)
power_draw_per_use = 8
number_of_pins = 16
@@ -109,7 +109,6 @@
)
outputs = list()
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
/obj/item/integrated_circuit/output/light/advanced/on_data_written()
update_lighting()
@@ -182,7 +181,6 @@
"secure day" = 'sound/voice/bsecureday.ogg',
)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_ILLEGAL = 1)
/obj/item/integrated_circuit/output/sound/medbot
name = "medbot sound circuit"
@@ -205,7 +203,6 @@
"no" = 'sound/voice/mno.ogg',
)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 1)
/obj/item/integrated_circuit/output/sound/vox
name = "ai vox sound circuit"
@@ -19,7 +19,6 @@
)
activators = list("transmit" = IC_PINTYPE_PULSE_IN, "on transmit" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_POWER = 4, TECH_MAGNET = 3)
power_draw_per_use = 500 // Inefficency has to come from somewhere.
var/amount_to_move = 5000
@@ -32,7 +31,6 @@
some power is lost due to ineffiency."
w_class = WEIGHT_CLASS_BULKY
complexity = 32
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_POWER = 6, TECH_MAGNET = 5)
power_draw_per_use = 2000
amount_to_move = 20000
@@ -1,7 +1,6 @@
/obj/item/integrated_circuit/reagent
category_text = "Reagent"
resistance_flags = UNACIDABLE | FIRE_PROOF
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
var/volume = 0
/obj/item/integrated_circuit/reagent/Initialize()
@@ -33,7 +32,6 @@
"on smoked" = IC_PINTYPE_PULSE_OUT
)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_BIO = 3)
power_draw_per_use = 20
var/smoke_radius = 5
var/notified = FALSE
@@ -225,7 +223,6 @@
outputs = list()
activators = list("transfer reagents" = IC_PINTYPE_PULSE_IN, "on transfer" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
var/transfer_amount = 10
var/direction_mode = SYRINGE_INJECT
power_draw_per_use = 10
@@ -290,8 +287,6 @@
)
activators = list()
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
/obj/item/integrated_circuit/reagent/storage/interact(mob/user)
set_pin_data(IC_OUTPUT, 2, WEAKREF(src))
@@ -310,7 +305,6 @@
complexity = 8
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_MATERIALS = 4, TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
/obj/item/integrated_circuit/reagent/storage/cryo/Initialize()
. = ..()
@@ -326,7 +320,6 @@
complexity = 16
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_MATERIALS = 3, TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
/obj/item/integrated_circuit/reagent/storage/scan
name = "reagent scanner"
@@ -344,7 +337,6 @@
"scan" = IC_PINTYPE_PULSE_IN
)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_MATERIALS = 3, TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
/obj/item/integrated_circuit/reagent/storage/scan/do_work()
var/cont[0]
@@ -379,7 +371,6 @@
"on transfer" = IC_PINTYPE_PULSE_OUT
)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
var/transfer_amount = 10
var/direction_mode = SYRINGE_INJECT
power_draw_per_use = 10
@@ -12,7 +12,6 @@
outputs = list("dir" = IC_PINTYPE_DIR)
activators = list("calculate dir" = IC_PINTYPE_PULSE_IN, "on calculated" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 5)
power_draw_per_use = 40
/obj/item/integrated_circuit/smart/basic_pathfinder/do_work()
+1 -1
View File
@@ -4,7 +4,7 @@
/obj/var/list/req_one_access = null
/obj/var/req_one_access_txt = "0" as text
//returns 1 if this mob has sufficient access to use this object
//returns TRUE if this mob has sufficient access to use this object
/obj/proc/allowed(mob/M)
//check if it doesn't require any access at all
if(src.check_access(null))
@@ -14,7 +14,6 @@
var/loaded = 1
var/malfunctioning = 0
var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it
origin_tech = "biotech=4;magnets=6"
/obj/item/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag)
if(!loaded)
@@ -11,7 +11,6 @@
slot_flags = SLOT_BELT
var/cooldown = 35
var/current_cooldown = 0
origin_tech = "engineering=1;magnets=1"
/obj/item/device/mining_scanner/attack_self(mob/user)
if(!user.client)
@@ -42,7 +41,6 @@
var/cooldown = 35
var/current_cooldown = 0
var/range = 7
origin_tech = "engineering=3;magnets=3"
/obj/item/device/t_scanner/adv_mining_scanner/lesser
name = "automatic mining scanner"
@@ -14,7 +14,6 @@
materials = list(MAT_METAL=2000) //one sheet, but where can you make them?
var/digspeed = 40
var/list/digsound = list('sound/effects/picaxe1.ogg','sound/effects/picaxe2.ogg','sound/effects/picaxe3.ogg')
origin_tech = "materials=2;engineering=3"
attack_verb = list("hit", "pierced", "sliced", "attacked")
/obj/item/pickaxe/mini
@@ -35,7 +34,6 @@
icon_state = "spickaxe"
item_state = "spickaxe"
digspeed = 20 //mines faster than a normal pickaxe, bought from mining vendor
origin_tech = "materials=3;engineering=4"
desc = "A silver-plated pickaxe that mines slightly faster than standard-issue."
force = 17
@@ -44,7 +42,6 @@
icon_state = "dpickaxe"
item_state = "dpickaxe"
digspeed = 14
origin_tech = "materials=5;engineering=4"
desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt."
force = 19
@@ -56,7 +53,6 @@
digspeed = 25 //available from roundstart, faster than a pickaxe.
digsound = list('sound/weapons/drill.ogg')
hitsound = 'sound/weapons/drill.ogg'
origin_tech = "materials=2;powerstorage=2;engineering=3"
desc = "An electric mining drill for the especially scrawny."
/obj/item/pickaxe/drill/cyborg
@@ -68,7 +64,6 @@
name = "diamond-tipped mining drill"
icon_state = "diamonddrill"
digspeed = 7
origin_tech = "materials=6;powerstorage=4;engineering=4"
desc = "Yours is the drill that will pierce the heavens!"
/obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version!
@@ -81,7 +76,6 @@
icon_state = "jackhammer"
item_state = "jackhammer"
digspeed = 5 //the epitome of powertools. extremely fast mining, laughs at puny walls
origin_tech = "materials=6;powerstorage=4;engineering=5;magnets=4"
digsound = list('sound/weapons/sonic_jackhammer.ogg')
hitsound = 'sound/weapons/sonic_jackhammer.ogg'
desc = "Cracks rocks with sonic blasts, and doubles as a demolition power tool for smashing walls."
@@ -101,7 +95,6 @@
item_state = "shovel"
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=50)
origin_tech = "materials=2;engineering=2"
attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
sharpness = IS_SHARP
@@ -5,7 +5,6 @@
icon_state = "bottle19"
desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely."
w_class = WEIGHT_CLASS_TINY
origin_tech = "biotech=3"
/obj/item/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user)
var/obj/item/organ/regenerative_core/C = M
@@ -14,14 +14,12 @@
var/fieldlimit = 4
var/list/fields = list()
var/quick_burst_mod = 0.8
origin_tech = "magnets=3;engineering=3"
/obj/item/resonator/upgraded
name = "upgraded resonator"
desc = "An upgraded version of the resonator that can produce more fields at once, as well as having no damage penalty for bursting a resonance field early."
icon_state = "resonator_u"
item_state = "resonator_u"
origin_tech = "materials=4;powerstorage=3;engineering=3;magnets=3"
fieldlimit = 6
quick_burst_mod = 1
@@ -14,7 +14,6 @@
icon_state = "capsule"
icon = 'icons/obj/mining.dmi'
w_class = WEIGHT_CLASS_TINY
origin_tech = "engineering=3;bluespace=3"
var/template_id = "shelter_alpha"
var/datum/map_template/shelter/template
var/used = FALSE
@@ -71,7 +70,6 @@
/obj/item/survivalcapsule/luxury
name = "luxury bluespace shelter capsule"
desc = "An exorbitantly expensive luxury suite stored within a pocket of bluespace."
origin_tech = "engineering=3;bluespace=4"
template_id = "shelter_beta"
//Pod objects
@@ -11,7 +11,6 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 5
origin_tech = "bluespace=2"
slot_flags = SLOT_BELT
/obj/item/device/wormhole_jaunter/attack_self(mob/user)
@@ -105,8 +105,7 @@
modkit_design = /datum/design/unique_modkit/bounty
/datum/design/unique_modkit
category = list("Mining Designs", "Cyborg Upgrade Modules")
req_tech = list("materials" = 12) //can't be normally obtained
category = list("Mining Designs", "Cyborg Upgrade Modules") //can't be normally obtained
build_type = PROTOLATHE | MECHFAB
/datum/design/unique_modkit/offensive_turf_aoe
+8 -8
View File
@@ -69,17 +69,17 @@
var/on = FALSE
var/selected_material = MAT_METAL
var/selected_alloy = null
var/datum/research/files
var/datum/techweb/stored_research
/obj/machinery/mineral/processing_unit/Initialize()
. = ..()
proximity_monitor = new(src, 1)
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY)
files = new /datum/research/smelter(src)
stored_research = new /datum/techweb/specialized/autounlocking/smelter
/obj/machinery/mineral/processing_unit/Destroy()
CONSOLE = null
QDEL_NULL(files)
QDEL_NULL(stored_research)
return ..()
/obj/machinery/mineral/processing_unit/HasProximity(atom/movable/AM)
@@ -112,8 +112,8 @@
dat += "<br><br>"
dat += "<b>Smelt Alloys</b><br>"
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
for(var/v in stored_research.researched_designs)
var/datum/design/D = stored_research.researched_designs[v]
dat += "<span class=\"res_name\">[D.name] "
if (selected_alloy == D.id)
dat += " <i>Smelting</i>"
@@ -156,7 +156,7 @@
/obj/machinery/mineral/processing_unit/proc/smelt_alloy()
var/datum/design/alloy = files.FindDesignByID(selected_alloy) //check if it's a valid design
var/datum/design/alloy = stored_research.isDesignResearchedID(selected_alloy) //check if it's a valid design
if(!alloy)
on = FALSE
return
@@ -174,7 +174,7 @@
/obj/machinery/mineral/processing_unit/proc/can_smelt(datum/design/D)
if(D.make_reagents.len)
return 0
return FALSE
var/build_amount = SMELT_AMOUNT
@@ -185,7 +185,7 @@
var/datum/material/smelter_mat = materials.materials[mat_id]
if(!M || !smelter_mat)
return 0
return FALSE
build_amount = min(build_amount, round(smelter_mat.amount / M))
+11 -11
View File
@@ -22,16 +22,16 @@
var/list/ore_values = list(MAT_GLASS = 1, MAT_METAL = 1, MAT_PLASMA = 15, MAT_SILVER = 16, MAT_GOLD = 18, MAT_TITANIUM = 30, MAT_URANIUM = 30, MAT_DIAMOND = 50, MAT_BLUESPACE = 50, MAT_BANANIUM = 60)
var/message_sent = FALSE
var/list/ore_buffer = list()
var/datum/research/files
var/datum/techweb/stored_research
var/obj/item/disk/design_disk/inserted_disk
/obj/machinery/mineral/ore_redemption/Initialize()
. = ..()
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY)
files = new /datum/research/smelter(src)
stored_research = new /datum/techweb/specialized/autounlocking/smelter
/obj/machinery/mineral/ore_redemption/Destroy()
QDEL_NULL(files)
QDEL_NULL(stored_research)
return ..()
/obj/machinery/mineral/ore_redemption/RefreshParts()
@@ -70,7 +70,7 @@
/obj/machinery/mineral/ore_redemption/proc/can_smelt_alloy(datum/design/D)
if(D.make_reagents.len)
return 0
return FALSE
var/build_amount = 0
@@ -80,12 +80,12 @@
var/datum/material/redemption_mat = materials.materials[mat_id]
if(!M || !redemption_mat)
return 0
return FALSE
var/smeltable_sheets = Floor(redemption_mat.amount / M)
if(!smeltable_sheets)
return 0
return FALSE
if(!build_amount)
build_amount = smeltable_sheets
@@ -215,8 +215,8 @@
data["materials"] += list(list("name" = M.name, "id" = M.id, "amount" = sheet_amount, "value" = ore_values[M.id] * point_upgrade))
data["alloys"] = list()
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
for(var/v in stored_research.researched_designs)
var/datum/design/D = stored_research.researched_designs[v]
data["alloys"] += list(list("name" = D.name, "id" = D.id, "amount" = can_smelt_alloy(D)))
data["diskDesigns"] = list()
if(inserted_disk)
@@ -299,11 +299,11 @@
if("diskUpload")
var/n = text2num(params["design"])
if(inserted_disk && inserted_disk.blueprints && inserted_disk.blueprints[n])
files.AddDesign2Known(inserted_disk.blueprints[n])
stored_research.add_design(inserted_disk.blueprints[n])
return TRUE
if("Smelt")
var/alloy_id = params["id"]
var/datum/design/alloy = files.FindDesignByID(alloy_id)
var/datum/design/alloy = stored_research.isDesignResearchedID(alloy_id)
if((check_access(inserted_id) || allowed(usr)) && alloy)
var/smelt_amount = can_smelt_alloy(alloy)
var/desired = 0
@@ -325,7 +325,7 @@
return TRUE
if("SmeltAll")
var/alloy_id = params["id"]
var/datum/design/alloy = files.FindDesignByID(alloy_id)
var/datum/design/alloy = stored_research.isDesignResearchedID(alloy_id)
if((check_access(inserted_id) || allowed(usr)) && alloy)
var/smelt_amount = can_smelt_alloy(alloy)
while(smelt_amount > 0)
-1
View File
@@ -261,7 +261,6 @@
icon_state = "door_electronics"
icon = 'icons/obj/module.dmi'
sentience_type = SENTIENCE_MINEBOT
origin_tech = "programming=6"
#undef MINEDRONE_COLLECT
#undef MINEDRONE_ATTACK
-9
View File
@@ -68,7 +68,6 @@
/obj/item/ore/uranium
name = "uranium ore"
icon_state = "Uranium ore"
origin_tech = "materials=5"
points = 30
materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/uranium
@@ -76,7 +75,6 @@
/obj/item/ore/iron
name = "iron ore"
icon_state = "Iron ore"
origin_tech = "materials=1"
points = 1
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/metal
@@ -84,7 +82,6 @@
/obj/item/ore/glass
name = "sand pile"
icon_state = "Glass ore"
origin_tech = "materials=1"
points = 1
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/glass
@@ -135,7 +132,6 @@
/obj/item/ore/plasma
name = "plasma ore"
icon_state = "Plasma ore"
origin_tech = "plasmatech=2;materials=2"
points = 15
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/plasma
@@ -152,7 +148,6 @@
/obj/item/ore/silver
name = "silver ore"
icon_state = "Silver ore"
origin_tech = "materials=3"
points = 16
materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/silver
@@ -160,7 +155,6 @@
/obj/item/ore/gold
name = "gold ore"
icon_state = "Gold ore"
origin_tech = "materials=4"
points = 18
materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/gold
@@ -168,7 +162,6 @@
/obj/item/ore/diamond
name = "diamond ore"
icon_state = "Diamond ore"
origin_tech = "materials=6"
points = 50
materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/diamond
@@ -176,7 +169,6 @@
/obj/item/ore/bananium
name = "bananium ore"
icon_state = "Clown ore"
origin_tech = "materials=4"
points = 60
materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/bananium
@@ -184,7 +176,6 @@
/obj/item/ore/titanium
name = "titanium ore"
icon_state = "Titanium ore"
origin_tech = "materials=4"
points = 50
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/titanium
-2
View File
@@ -4,7 +4,6 @@
icon = 'icons/obj/assemblies.dmi'
icon_state = "mmi_empty"
w_class = WEIGHT_CLASS_NORMAL
origin_tech = "biotech=2;programming=3;engineering=2"
var/braintype = "Cyborg"
var/obj/item/device/radio/radio = null //Let's give it a radio.
var/mob/living/brain/brainmob = null //The current occupant.
@@ -205,7 +204,6 @@
/obj/item/device/mmi/syndie
name = "Syndicate Man-Machine Interface"
desc = "Syndicate's own brand of MMI. It enforces laws designed to help Syndicate agents achieve their goals upon cyborgs and AIs created with it."
origin_tech = "biotech=4;programming=4;syndicate=2"
overrides_aicore_laws = TRUE
/obj/item/device/mmi/syndie/Initialize()
@@ -8,7 +8,6 @@
zone = "head"
slot = ORGAN_SLOT_BRAIN
vital = TRUE
origin_tech = "biotech=5"
attack_verb = list("attacked", "slapped", "whacked")
var/mob/living/brain/brainmob = null
var/damaged_brain = FALSE //whether the brain organ is damaged.
@@ -180,7 +179,6 @@
name = "alien brain"
desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?"
icon_state = "brain-x"
origin_tech = "biotech=6"
////////////////////////////////////TRAUMAS////////////////////////////////////////
@@ -6,7 +6,6 @@ GLOBAL_VAR(posibrain_notify_cooldown)
icon = 'icons/obj/assemblies.dmi'
icon_state = "posibrain"
w_class = WEIGHT_CLASS_NORMAL
origin_tech = "biotech=3;programming=3;plasmatech=2"
var/next_ask
var/askDelay = 600 //one minute
var/searching = FALSE
@@ -1,5 +1,4 @@
/obj/item/organ/alien
origin_tech = "biotech=5"
icon_state = "xgibmid2"
var/list/alien_powers = list()
@@ -30,7 +29,6 @@
/obj/item/organ/alien/plasmavessel
name = "plasma vessel"
icon_state = "plasma"
origin_tech = "biotech=5;plasmatech=4"
w_class = WEIGHT_CLASS_NORMAL
zone = "chest"
slot = "plasmavessel"
@@ -55,7 +53,6 @@
plasma_rate = 15
/obj/item/organ/alien/plasmavessel/large/queen
origin_tech = "biotech=6;plasmatech=4"
plasma_rate = 20
/obj/item/organ/alien/plasmavessel/small
@@ -109,7 +106,6 @@
icon_state = "hivenode"
zone = "head"
slot = "hivenode"
origin_tech = "biotech=5;magnets=4;bluespace=3"
w_class = WEIGHT_CLASS_TINY
var/recent_queen_death = 0 //Indicates if the queen died recently, aliens are heavily weakened while this is active.
alien_powers = list(/obj/effect/proc_holder/alien/whisper)
@@ -162,7 +158,6 @@
icon_state = "stomach-x"
zone = "mouth"
slot = "resinspinner"
origin_tech = "biotech=5;materials=4"
alien_powers = list(/obj/effect/proc_holder/alien/resin)
@@ -171,7 +166,6 @@
icon_state = "acid"
zone = "mouth"
slot = "acidgland"
origin_tech = "biotech=5;materials=2;combat=2"
alien_powers = list(/obj/effect/proc_holder/alien/acid)
@@ -180,7 +174,6 @@
icon_state = "neurotox"
zone = "mouth"
slot = "neurotoxingland"
origin_tech = "biotech=5;combat=5"
alien_powers = list(/obj/effect/proc_holder/alien/neurotoxin)
@@ -190,5 +183,4 @@
zone = "groin"
slot = "eggsac"
w_class = WEIGHT_CLASS_BULKY
origin_tech = "biotech=6"
alien_powers = list(/obj/effect/proc_holder/alien/lay_egg)
@@ -13,7 +13,6 @@
desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs."
icon = 'icons/mob/drone.dmi'
icon_state = "drone_maint_hat"//yes reuse the _hat state.
origin_tech = "programming=2;biotech=4"
var/drone_type = /mob/living/simple_animal/drone //Type of drone that will be spawned
/obj/item/drone_shell/New()
@@ -53,7 +53,6 @@
/obj/item/organ/body_egg/changeling_egg
name = "changeling egg"
desc = "Twitching and disgusting."
origin_tech = "biotech=7" // You need to be really lucky to obtain it.
var/datum/mind/origin
var/time
@@ -123,7 +123,6 @@
flags_1 = NOBLUDGEON_1
w_class = WEIGHT_CLASS_NORMAL
layer = MOB_LAYER
origin_tech = "biotech=6"
var/list/banned_mobs
/obj/item/asteroid/fugu_gland/afterattack(atom/target, mob/user, proximity_flag)
@@ -9,7 +9,6 @@
power_usage = 50
critical = 1
malfunction_probability = 1
origin_tech = "programming=3;engineering=2"
var/max_idle_programs = 2 // 2 idle, + 1 active = 3 as said in description.
device_type = MC_CPU
@@ -23,7 +22,6 @@
w_class = WEIGHT_CLASS_TINY
power_usage = 25
max_idle_programs = 1
origin_tech = "programming=2;engineering=2"
/obj/item/computer_hardware/processor_unit/photonic
name = "photonic processor board"
@@ -32,7 +30,6 @@
w_class = WEIGHT_CLASS_SMALL
power_usage = 250
max_idle_programs = 4
origin_tech = "programming=5;engineering=4"
/obj/item/computer_hardware/processor_unit/photonic/small
name = "photonic microprocessor"
@@ -40,5 +37,4 @@
icon_state = "cpu_super"
w_class = WEIGHT_CLASS_TINY
power_usage = 75
max_idle_programs = 2
origin_tech = "programming=4;engineering=3"
max_idle_programs = 2
@@ -4,7 +4,6 @@
power_usage = 100 //W
icon_state = "card_mini"
w_class = WEIGHT_CLASS_SMALL
origin_tech = "programming=2"
device_type = MC_AI
var/obj/item/device/aicard/stored_card = null
@@ -4,7 +4,6 @@
icon_state = "cell_con"
critical = 1
malfunction_probability = 1
origin_tech = "powerstorage=1;engineering=1"
var/obj/item/stock_parts/cell/battery = null
device_type = MC_CELL
@@ -64,7 +63,6 @@
desc = "A standard power cell, commonly seen in high-end portable microcomputers or low-end laptops."
icon = 'icons/obj/module.dmi'
icon_state = "cell_mini"
origin_tech = "powerstorage=2;engineering=1"
w_class = WEIGHT_CLASS_TINY
maxcharge = 750
@@ -73,7 +71,6 @@
name = "advanced battery"
desc = "An advanced power cell, often used in most laptops. It is too large to be fitted into smaller devices."
icon_state = "cell"
origin_tech = "powerstorage=2;engineering=2"
w_class = WEIGHT_CLASS_SMALL
maxcharge = 1500
@@ -81,7 +78,6 @@
name = "super battery"
desc = "An advanced power cell, often used in high-end laptops."
icon_state = "cell"
origin_tech = "powerstorage=3;engineering=3"
w_class = WEIGHT_CLASS_SMALL
maxcharge = 2000
@@ -4,7 +4,6 @@
power_usage = 10 //W
icon_state = "card_mini"
w_class = WEIGHT_CLASS_TINY
origin_tech = "programming=2"
device_type = MC_CARD
var/obj/item/card/id/stored_card = null
@@ -5,7 +5,6 @@
icon_state = "harddisk_mini"
critical = 1
w_class = WEIGHT_CLASS_TINY
origin_tech = "programming=1;engineering=1"
device_type = MC_HDD
var/max_capacity = 128
var/used_capacity = 0
@@ -130,7 +129,6 @@
name = "advanced hard disk drive"
desc = "A hybrid HDD, for use in higher grade computers where balance between power efficiency and capacity is desired."
max_capacity = 256
origin_tech = "programming=2;engineering=2"
power_usage = 50 // Hybrid, medium capacity and medium power storage
icon_state = "harddisk_mini"
w_class = WEIGHT_CLASS_SMALL
@@ -139,7 +137,6 @@
name = "super hard disk drive"
desc = "A high capacity HDD, for use in cluster storage solutions where capacity is more important than power efficiency."
max_capacity = 512
origin_tech = "programming=3;engineering=3"
power_usage = 100 // High-capacity but uses lots of power, shortening battery life. Best used with APC link.
icon_state = "harddisk_mini"
w_class = WEIGHT_CLASS_SMALL
@@ -148,7 +145,6 @@
name = "cluster hard disk drive"
desc = "A large storage cluster consisting of multiple HDDs for usage in dedicated storage systems."
power_usage = 500
origin_tech = "programming=4;engineering=4"
max_capacity = 2048
icon_state = "harddisk"
w_class = WEIGHT_CLASS_NORMAL
@@ -158,7 +154,6 @@
name = "solid state drive"
desc = "An efficient SSD for portable devices."
power_usage = 10
origin_tech = "programming=2;engineering=2"
max_capacity = 64
icon_state = "ssd_mini"
w_class = WEIGHT_CLASS_TINY
@@ -167,7 +162,6 @@
name = "micro solid state drive"
desc = "A highly efficient SSD chip for portable devices."
power_usage = 2
origin_tech = "programming=1;engineering=1"
max_capacity = 32
icon_state = "ssd_micro"
w_class = WEIGHT_CLASS_TINY
@@ -2,7 +2,6 @@
name = "network card"
desc = "A basic wireless network card for usage with standard NTNet frequencies."
power_usage = 50
origin_tech = "programming=2;engineering=1"
icon_state = "radio_mini"
var/identification_id = null // Identification ID. Technically MAC address of this device. Can't be changed by user.
var/identification_string = "" // Identification string, technically nickname seen in the network. Can be set by user.
@@ -65,7 +64,6 @@
name = "advanced network card"
desc = "An advanced network card for usage with standard NTNet frequencies. Its transmitter is strong enough to connect even off-station."
long_range = 1
origin_tech = "programming=4;engineering=2"
power_usage = 100 // Better range but higher power usage.
icon_state = "radio"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
@@ -76,7 +74,6 @@
name = "wired network card"
desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection."
ethernet = 1
origin_tech = "programming=5;engineering=3"
power_usage = 100 // Better range but higher power usage.
icon_state = "net_wired"
w_class = WEIGHT_CLASS_NORMAL
@@ -6,7 +6,6 @@
w_class = WEIGHT_CLASS_TINY
critical = 0
max_capacity = 16
origin_tech = "programming=1"
device_type = MC_SDD
/obj/item/computer_hardware/hard_drive/portable/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
@@ -24,7 +23,6 @@
power_usage = 20
icon_state = "datadisk5"
max_capacity = 64
origin_tech = "programming=2"
/obj/item/computer_hardware/hard_drive/portable/super
name = "super data disk"
@@ -32,4 +30,3 @@
power_usage = 40
icon_state = "datadisk3"
max_capacity = 256
origin_tech = "programming=4"
@@ -2,7 +2,6 @@
name = "printer"
desc = "Computer-integrated printer with paper recycling module."
power_usage = 100
origin_tech = "programming=2;engineering=2"
icon_state = "printer"
w_class = WEIGHT_CLASS_NORMAL
device_type = MC_PRINT
@@ -28,7 +28,6 @@
desc = "A device that wirelessly recharges connected device from nearby APC."
icon_state = "charger_APC"
w_class = WEIGHT_CLASS_SMALL // Can't be installed into tablets/PDAs
origin_tech = "programming=2;engineering=2;powerstorage=3"
/obj/item/computer_hardware/recharger/APC/use_power(amount, charging=0)
if(ismachinery(holder.physical))
@@ -52,7 +51,6 @@
desc = "A power connector that recharges connected device from nearby power wire. Incompatible with portable computers."
icon_state = "charger_wire"
w_class = WEIGHT_CLASS_NORMAL
origin_tech = "engineering=2;powerstorage=1"
/obj/item/computer_hardware/recharger/wired/can_install(obj/item/device/modular_computer/M, mob/living/user = null)
if(ismachinery(M.physical) && M.physical.anchored)
+10 -32
View File
@@ -10,7 +10,7 @@ They *could* go in their appropriate files, but this is supposed to be modular
*/
//Needs to return the amount drained from the atom, if no drain on a power object, return 0, otherwise, return a define.
//Needs to return the amount drained from the atom, if no drain on a power object, return FALSE, otherwise, return a define.
/atom/proc/ninjadrain_act()
return INVALID_DRAIN
@@ -130,26 +130,15 @@ They *could* go in their appropriate files, but this is supposed to be modular
to_chat(H, "<span class='notice'>Hacking \the [src]...</span>")
AI_notify_hack()
if(files && files.known_tech.len)
for(var/datum/tech/current_data in S.stored_research)
to_chat(H, "<span class='notice'>Checking \the [current_data.name] database.</span>")
if(do_after(H, S.s_delay, target = src) && G.candrain && src)
for(var/id in files.known_tech)
var/datum/tech/analyzing_data = files.known_tech[id]
if(current_data.id == analyzing_data.id)
if(analyzing_data.level > current_data.level)
to_chat(H, "<span class='notice'>Database:</span> <b>UPDATED</b>.")
current_data.level = analyzing_data.level
. = DRAIN_RD_HACKED
break//Move on to next.
else
break//Otherwise, quit processing.
if(stored_research)
to_chat(H, "<span class='notice'>Copying files...</span>")
if(do_after(H, S.s_delay, target = src) && G.candrain && src)
stored_research.copy_research_to(S.stored_research)
to_chat(H, "<span class='notice'>Data analyzed. Process finished.</span>")
//RD SERVER//
//Shamelessly copypasted from above, since these two used to be the same proc, but with MANY colon operators
/obj/machinery/r_n_d/server/ninjadrain_act(obj/item/clothing/suit/space/space_ninja/S, mob/living/carbon/human/H, obj/item/clothing/gloves/space_ninja/G)
/obj/machinery/rnd/server/ninjadrain_act(obj/item/clothing/suit/space/space_ninja/S, mob/living/carbon/human/H, obj/item/clothing/gloves/space_ninja/G)
if(!S || !H || !G)
return INVALID_DRAIN
@@ -158,21 +147,10 @@ They *could* go in their appropriate files, but this is supposed to be modular
to_chat(H, "<span class='notice'>Hacking \the [src]...</span>")
AI_notify_hack()
if(files && files.known_tech.len)
for(var/datum/tech/current_data in S.stored_research)
to_chat(H, "<span class='notice'>Checking \the [current_data.name] database.</span>")
if(do_after(H, S.s_delay, target = src) && G.candrain && src)
for(var/id in files.known_tech)
var/datum/tech/analyzing_data = files.known_tech[id]
if(current_data.id == analyzing_data.id)
if(analyzing_data.level > current_data.level)
to_chat(H, "<span class='notice'>Database:</span> <b>UPDATED</b>.")
current_data.level = analyzing_data.level
. = DRAIN_RD_HACKED
break//Move on to next.
else
break//Otherwise, quit processing.
if(stored_research)
to_chat(H, "<span class='notice'>Copying files...</span>")
if(do_after(H, S.s_delay, target = src) && G.candrain && src)
stored_research.copy_research_to(S.stored_research)
to_chat(H, "<span class='notice'>Data analyzed. Process finished.</span>")
+3 -5
View File
@@ -28,7 +28,7 @@ Contents:
var/mob/living/carbon/human/affecting = null
var/obj/item/stock_parts/cell/cell
var/datum/effect_system/spark_spread/spark_system
var/list/stored_research = list()//For stealing station research.
var/datum/techweb/stored_research
var/obj/item/disk/tech_disk/t_disk//To copy design onto disk.
var/obj/item/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability)
@@ -62,14 +62,12 @@ Contents:
..()
//Spark Init
spark_system = new()
spark_system = new
spark_system.set_up(5, 0, src)
spark_system.attach(src)
//Research Init
stored_research = new()
for(var/T in subtypesof(/datum/tech))//Store up on research.
stored_research += new T(src)
//Cell Init
cell = new/obj/item/stock_parts/cell/high
@@ -97,7 +95,7 @@ Contents:
//This proc prevents the suit from being taken off.
/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/H)
if(!istype(H))
return 0
return FALSE
if(!is_ninja(H))
to_chat(H, "<span class='danger'><B>fÄTaL ÈÈRRoR</B>: 382200-*#00CÖDE <B>RED</B>\nUNAU?HORIZED USÈ DETÈC???eD\nCoMMÈNCING SUB-R0U?IN3 13...\nTÈRMInATING U-U-USÈR...</span>")
H.gib()
+3 -17
View File
@@ -32,26 +32,12 @@
else if(istype(I, /obj/item/disk/tech_disk))//If it's a data disk, we want to copy the research on to the suit.
var/obj/item/disk/tech_disk/TD = I
var/has_research = FALSE
for(var/V in TD.tech_stored)
if(V)
has_research = TRUE
break
var/has_research = 0
if(has_research)//If it has something on it.
to_chat(U, "<span class='notice'>Research information detected, processing...</span>")
to_chat(U, "Research information detected, processing...")
if(do_after(U,s_delay, target = src))
for(var/V1 in 1 to TD.max_tech_stored)
var/datum/tech/new_data = TD.tech_stored[V1]
TD.tech_stored[V1] = null
if(!new_data)
continue
for(var/V2 in stored_research)
var/datum/tech/current_data = V2
if(current_data.id == new_data.id)
current_data.level = max(current_data.level, new_data.level)
break
TD.stored_research.copy_research_to(stored_research)
to_chat(U, "<span class='notice'>Data analyzed and updated. Disk erased.</span>")
else
to_chat(U, "<span class='userdanger'>ERROR</span>: Procedure interrupted. Process terminated.")
else
-2
View File
@@ -161,7 +161,6 @@
* Sleepypens
*/
/obj/item/pen/sleepy
origin_tech = "engineering=4;syndicate=2"
container_type = OPENCONTAINER_1
@@ -186,7 +185,6 @@
* (Alan) Edaggers
*/
/obj/item/pen/edagger
origin_tech = "combat=3;syndicate=1"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") //these wont show up if the pen is off
var/on = FALSE
-10
View File
@@ -6,7 +6,6 @@
item_state = "cell"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
origin_tech = "powerstorage=1"
force = 5
throwforce = 5
throw_speed = 2
@@ -185,7 +184,6 @@
/obj/item/stock_parts/cell/secborg
name = "security borg rechargeable D battery"
origin_tech = null
maxcharge = 600 //600 max charge / 100 charge per shot = six shots
materials = list(MAT_GLASS=40)
rating = 2.5
@@ -210,7 +208,6 @@
/obj/item/stock_parts/cell/high
name = "high-capacity power cell"
origin_tech = "powerstorage=2"
icon_state = "hcell"
maxcharge = 10000
materials = list(MAT_GLASS=60)
@@ -230,7 +227,6 @@
/obj/item/stock_parts/cell/super
name = "super-capacity power cell"
origin_tech = "powerstorage=3;materials=3"
icon_state = "scell"
maxcharge = 20000
materials = list(MAT_GLASS=300)
@@ -243,7 +239,6 @@
/obj/item/stock_parts/cell/hyper
name = "hyper-capacity power cell"
origin_tech = "powerstorage=4;engineering=4;materials=4"
icon_state = "hpcell"
maxcharge = 30000
materials = list(MAT_GLASS=400)
@@ -257,7 +252,6 @@
/obj/item/stock_parts/cell/bluespace
name = "bluespace power cell"
desc = "A rechargeable transdimensional power cell."
origin_tech = "powerstorage=5;bluespace=4;materials=4;engineering=4"
icon_state = "bscell"
maxcharge = 40000
materials = list(MAT_GLASS=600)
@@ -271,7 +265,6 @@
/obj/item/stock_parts/cell/infinite
name = "infinite-capacity power cell!"
icon_state = "icell"
origin_tech = "powerstorage=7"
maxcharge = 30000
materials = list(MAT_GLASS=1000)
rating = 6
@@ -285,7 +278,6 @@
desc = "An alien power cell that produces energy seemingly out of nowhere."
icon = 'icons/obj/abductor.dmi'
icon_state = "cell"
origin_tech = "abductor=5;powerstorage=8;engineering=6"
maxcharge = 50000
rating = 12
ratingdesc = FALSE
@@ -299,7 +291,6 @@
desc = "A rechargeable starch based power cell."
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "potato"
origin_tech = "powerstorage=1;biotech=1"
charge = 100
maxcharge = 300
materials = list()
@@ -309,7 +300,6 @@
/obj/item/stock_parts/cell/high/slime
name = "charged slime core"
desc = "A yellow slime core infused with plasma, it crackles with power."
origin_tech = "powerstorage=5;biotech=4"
icon = 'icons/mob/slimes.dmi'
icon_state = "yellow slime extract"
materials = list()
-2
View File
@@ -103,8 +103,6 @@
buckle_lying = FALSE
buckle_requires_restraints = TRUE
circuit = /obj/item/circuitboard/machine/grounding_rod
/obj/machinery/power/grounding_rod/default_unfasten_wrench(mob/user, obj/item/wrench/W, time = 20)
. = ..()
if(. == SUCCESSFUL_UNFASTEN)
-1
View File
@@ -75,7 +75,6 @@
// The inlet of the compressor is the direction it faces
gas_contained = new
inturf = get_step(src, dir)
locate_machinery()
if(!turbine)
stat |= BROKEN
@@ -17,21 +17,18 @@
/obj/item/ammo_box/c9mm
name = "ammo box (9mm)"
icon_state = "9mmbox"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/c9mm
max_ammo = 30
/obj/item/ammo_box/c10mm
name = "ammo box (10mm)"
icon_state = "10mmbox"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/c10mm
max_ammo = 20
/obj/item/ammo_box/c45
name = "ammo box (.45)"
icon_state = "45box"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/c45
max_ammo = 20
@@ -53,7 +50,6 @@
/obj/item/ammo_box/n762
name = "ammo box (7.62x38mmR)"
icon_state = "10mmbox"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/n762
max_ammo = 14
@@ -5,7 +5,6 @@
name = "pistol magazine (10mm)"
desc = "A gun magazine."
icon_state = "9x19p"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/c10mm
caliber = "10mm"
max_ammo = 8
@@ -15,7 +14,6 @@
name = "rifle magazine (10mm)"
desc = "A well-worn magazine fitted for the surplus rifle."
icon_state = "75-8"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/c10mm
caliber = "10mm"
max_ammo = 10
@@ -129,7 +127,6 @@
/obj/item/ammo_box/magazine/smgm45
name = "SMG magazine (.45)"
icon_state = "c20r45-24"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/c45/nostamina
caliber = ".45"
max_ammo = 24
@@ -148,7 +145,6 @@
/obj/item/ammo_box/magazine/m50
name = "handgun magazine (.50ae)"
icon_state = "50ae"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/a50AE
caliber = ".50"
max_ammo = 7
@@ -165,7 +161,6 @@
/obj/item/ammo_box/magazine/m556
name = "toploader magazine (5.56mm)"
icon_state = "5.56m"
origin_tech = "combat=5;syndicate=1"
ammo_type = /obj/item/ammo_casing/a556
caliber = "a556"
max_ammo = 30
@@ -176,7 +171,6 @@
desc = "A drum magazine."
icon_state = "m12gs"
ammo_type = /obj/item/ammo_casing/shotgun/stunslug
origin_tech = "combat=3;syndicate=1"
caliber = "shotgun"
max_ammo = 8
@@ -215,7 +209,6 @@
/obj/item/ammo_box/magazine/sniper_rounds
name = "sniper rounds (.50)"
icon_state = ".50mag"
origin_tech = "combat=6;syndicate=2"
ammo_type = /obj/item/ammo_casing/p50
max_ammo = 6
caliber = ".50"
@@ -230,7 +223,6 @@
name = "sniper rounds (Zzzzz)"
desc = "Soporific sniper rounds, designed for happy days and dead quiet nights..."
icon_state = "soporific"
origin_tech = "combat=6;syndicate=3"
ammo_type = /obj/item/ammo_casing/p50/soporific
max_ammo = 3
caliber = ".50"
@@ -239,7 +231,6 @@
name = "sniper rounds (penetrator)"
desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it."
ammo_type = /obj/item/ammo_casing/p50/penetrator
origin_tech = "combat=6;syndicate=3"
max_ammo = 5
//// SAW MAGAZINES
@@ -247,24 +238,20 @@
/obj/item/ammo_box/magazine/mm195x129
name = "box magazine (1.95x129mm)"
icon_state = "a762-50"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/mm195x129
caliber = "mm195129"
max_ammo = 50
/obj/item/ammo_box/magazine/mm195x129/hollow
name = "box magazine (Hollow-Point 1.95x129mm)"
origin_tech = "combat=3"
ammo_type = /obj/item/ammo_casing/mm195x129/hollow
/obj/item/ammo_box/magazine/mm195x129/ap
name = "box magazine (Armor Penetrating 1.95x129mm)"
origin_tech = "combat=4"
ammo_type = /obj/item/ammo_casing/mm195x129/ap
/obj/item/ammo_box/magazine/mm195x129/incen
name = "box magazine (Incendiary 1.95x129mm)"
origin_tech = "combat=4"
ammo_type = /obj/item/ammo_casing/mm195x129/incen
/obj/item/ammo_box/magazine/mm195x129/update_icon()
+2 -3
View File
@@ -15,9 +15,8 @@
throw_speed = 3
throw_range = 5
force = 5
origin_tech = "combat=1"
needs_permit = 1
unique_rename = 0
needs_permit = TRUE
unique_rename = FALSE
attack_verb = list("struck", "hit", "bashed")
var/fire_sound = "gunshot"
@@ -2,7 +2,6 @@
desc = "Now comes in flavors like GUN. Uses 10mm ammo, for some reason."
name = "projectile gun"
icon_state = "pistol"
origin_tech = "combat=2;materials=2"
w_class = WEIGHT_CLASS_NORMAL
var/spawnwithmagazine = TRUE
var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info
@@ -1,5 +1,4 @@
/obj/item/gun/ballistic/automatic
origin_tech = "combat=4;materials=2"
w_class = WEIGHT_CLASS_NORMAL
var/alarmed = 0
var/select = 1
@@ -89,7 +88,6 @@
desc = "A bullpup two-round burst .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
icon_state = "c20r"
item_state = "c20r"
origin_tech = "combat=5;materials=2;syndicate=6"
mag_type = /obj/item/ammo_box/magazine/smgm45
fire_sound = 'sound/weapons/gunshot_smg.ogg'
fire_delay = 2
@@ -131,7 +129,6 @@
name = "\improper Type U3 Uzi"
desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds."
icon_state = "mini-uzi"
origin_tech = "combat=4;materials=2;syndicate=4"
mag_type = /obj/item/ammo_box/magazine/uzim9mm
burst_size = 2
@@ -140,7 +137,6 @@
desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off."
icon_state = "m90"
item_state = "m90"
origin_tech = "combat=5;materials=2;syndicate=6"
mag_type = /obj/item/ammo_box/magazine/m556
fire_sound = 'sound/weapons/gunshot_smg.ogg'
can_suppress = FALSE
@@ -214,7 +210,6 @@
item_state = "shotgun"
w_class = WEIGHT_CLASS_HUGE
slot_flags = 0
origin_tech = "combat=5;materials=1;syndicate=3"
mag_type = /obj/item/ammo_box/magazine/tommygunm45
fire_sound = 'sound/weapons/gunshot_smg.ogg'
can_suppress = FALSE
@@ -227,7 +222,6 @@
icon_state = "arg"
item_state = "arg"
slot_flags = 0
origin_tech = "combat=6;engineering=4"
mag_type = /obj/item/ammo_box/magazine/m556
fire_sound = 'sound/weapons/gunshot_smg.ogg'
can_suppress = FALSE
@@ -243,7 +237,6 @@
item_state = "bulldog"
w_class = WEIGHT_CLASS_NORMAL
weapon_weight = WEAPON_MEDIUM
origin_tech = "combat=6;materials=4;syndicate=6"
mag_type = /obj/item/ammo_box/magazine/m12g
fire_sound = 'sound/weapons/gunshot.ogg'
can_suppress = FALSE
@@ -281,7 +274,6 @@
item_state = "l6closedmag"
w_class = WEIGHT_CLASS_HUGE
slot_flags = 0
origin_tech = "combat=6;engineering=3;syndicate=6"
mag_type = /obj/item/ammo_box/magazine/mm195x129
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/weapons/gunshot_smg.ogg'
@@ -361,7 +353,6 @@
mag_type = /obj/item/ammo_box/magazine/sniper_rounds
fire_delay = 40
burst_size = 1
origin_tech = "combat=7"
can_unsuppress = TRUE
can_suppress = TRUE
w_class = WEIGHT_CLASS_NORMAL
@@ -382,14 +373,12 @@
name = "syndicate sniper rifle"
desc = "An illegally modified .50 cal sniper rifle with suppression compatibility. Quickscoping still doesn't work."
pin = /obj/item/device/firing_pin/implant/pindicate
origin_tech = "combat=7;syndicate=6"
// Old Semi-Auto Rifle //
/obj/item/gun/ballistic/automatic/surplus
name = "Surplus Rifle"
desc = "One of countless obsolete ballistic rifles that still sees use as a cheap deterrent. Uses 10mm ammo and its bulky frame prevents one-hand firing."
origin_tech = "combat=3;materials=2"
icon_state = "surplus"
item_state = "moistnugget"
weapon_weight = WEAPON_HEAVY
@@ -97,7 +97,6 @@
icon = 'icons/obj/guns/minigun.dmi'
icon_state = "minigun_spin"
item_state = "minigun"
origin_tech = "combat=6;powerstorage=5;magnets=4"
flags_1 = CONDUCT_1
slowdown = 1
slot_flags = null
@@ -35,7 +35,6 @@
desc = "A prototype pistol designed to fire self propelled rockets."
icon_state = "gyropistol"
fire_sound = 'sound/weapons/grenadelaunch.ogg'
origin_tech = "combat=5"
mag_type = /obj/item/ammo_box/magazine/m75
burst_size = 1
fire_delay = 0
@@ -52,7 +51,6 @@
icon_state = "speargun"
item_state = "speargun"
w_class = WEIGHT_CLASS_BULKY
origin_tech = "combat=4;engineering=4"
force = 10
can_suppress = FALSE
mag_type = /obj/item/ammo_box/magazine/internal/speargun
@@ -3,7 +3,6 @@
desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors."
icon_state = "pistol"
w_class = WEIGHT_CLASS_SMALL
origin_tech = "combat=3;materials=2;syndicate=4"
mag_type = /obj/item/ammo_box/magazine/m10mm
can_suppress = TRUE
burst_size = 1
@@ -55,7 +54,6 @@
desc = "The original russian version of a widely used Syndicate sidearm. Uses 9mm ammo."
icon_state = "aps"
w_class = WEIGHT_CLASS_SMALL
origin_tech = "combat=3;materials=2;syndicate=3"
mag_type = /obj/item/ammo_box/magazine/pistolm9mm
can_suppress = FALSE
burst_size = 3
@@ -66,7 +64,6 @@
name = "flat gun"
desc = "A 2 dimensional gun.. what?"
icon_state = "flatgun"
origin_tech = "combat=3;materials=2;abductor=3"
/obj/item/gun/ballistic/automatic/pistol/stickman/pickup(mob/living/user)
to_chat(user, "<span class='notice'>As you try to pick up [src], it slips out of your grip..</span>")
@@ -3,7 +3,6 @@
desc = "A suspicious revolver. Uses .357 ammo." //usually used by syndicates
icon_state = "revolver"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder
origin_tech = "combat=3;materials=2"
casing_ejector = FALSE
/obj/item/gun/ballistic/revolver/Initialize()
@@ -158,8 +157,8 @@
name = "nagant revolver"
desc = "An old model of revolver that originated in Russia. Able to be suppressed. Uses 7.62x38mmR ammo."
icon_state = "nagant"
origin_tech = "combat=3"
can_suppress = TRUE
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev762
@@ -169,7 +168,6 @@
/obj/item/gun/ballistic/revolver/russian
name = "\improper russian revolver"
desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism requiring you to spin the chamber before each trigger pull."
origin_tech = "combat=2;materials=2"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357
var/spun = FALSE
@@ -7,7 +7,6 @@
force = 10
flags_1 = CONDUCT_1
slot_flags = SLOT_BACK
origin_tech = "combat=4;materials=2"
mag_type = /obj/item/ammo_box/magazine/internal/shot
casing_ejector = FALSE
var/recentpump = 0 // to prevent spammage
@@ -189,7 +188,6 @@
name = "combat shotgun"
desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath."
icon_state = "cshotgun"
origin_tech = "combat=6"
mag_type = /obj/item/ammo_box/magazine/internal/shot/com
w_class = WEIGHT_CLASS_HUGE
@@ -197,7 +195,6 @@
name = "compact combat shotgun"
desc = "A compact version of the semi automatic combat shotgun. For close encounters."
icon_state = "cshotgunc"
origin_tech = "combat=4;materials=2"
mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact
w_class = WEIGHT_CLASS_BULKY
@@ -207,7 +204,6 @@
name = "cycler shotgun"
desc = "An advanced shotgun with two separate magazine tubes, allowing you to quickly toggle between ammo types."
icon_state = "cycler"
origin_tech = "combat=4;materials=2"
mag_type = /obj/item/ammo_box/magazine/internal/shot/tube
w_class = WEIGHT_CLASS_HUGE
var/toggled = FALSE
@@ -51,7 +51,6 @@
icon = 'icons/obj/guns/toy.dmi'
force = 0
throwforce = 0
origin_tech = null
mag_type = /obj/item/ammo_box/magazine/internal/shot/toy
clumsy_check = 0
needs_permit = 0
@@ -23,7 +23,6 @@
slot_flags = SLOT_BACK
force = 15
materials = list()
origin_tech = ""
recoil = 4
ammo_x_offset = 3
ammo_y_offset = 3
@@ -4,7 +4,6 @@
icon_state = "energy"
item_state = null //so the human update icon uses the icon_state instead.
ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser)
origin_tech = "combat=4;magnets=3"
modifystate = 1
can_flashlight = 1
ammo_x_offset = 3
@@ -55,7 +54,6 @@
name = "\improper X-01 MultiPhase Energy Gun"
desc = "This is an expensive, modern recreation of an antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time."
icon_state = "hoslaser"
origin_tech = null
force = 10
ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/laser/hos, /obj/item/ammo_casing/energy/disabler)
ammo_x_offset = 4
@@ -68,7 +66,6 @@
item_state = "dragnet"
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
origin_tech = "combat=4;magnets=3;bluespace=4"
ammo_type = list(/obj/item/ammo_casing/energy/net, /obj/item/ammo_casing/energy/trap)
can_flashlight = 0
ammo_x_offset = 1
@@ -96,7 +93,6 @@
desc = "An energy gun with an experimental miniaturized nuclear reactor that automatically charges the internal power cell."
icon_state = "nucgun"
item_state = "nucgun"
origin_tech = "combat=4;magnets=4;powerstorage=4"
charge_delay = 5
pin = null
can_charge = 0
@@ -7,7 +7,6 @@
cell_type = /obj/item/stock_parts/cell/emproof
needs_permit = 0
unique_rename = 1
origin_tech = "combat=3;powerstorage=3;engineering=3"
weapon_weight = WEAPON_LIGHT
can_flashlight = 1
flight_x_offset = 15
@@ -213,7 +212,6 @@
desc = "An upgrade for kinetic accelerators."
icon = 'icons/obj/objects.dmi'
icon_state = "modkit"
origin_tech = "programming=2;materials=2;magnets=4"
w_class = WEIGHT_CLASS_SMALL
require_module = 1
module_type = /obj/item/robot_module/miner
@@ -5,7 +5,6 @@
item_state = "laser"
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=2000)
origin_tech = "combat=4;magnets=2"
ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
ammo_x_offset = 1
shaded_charge = 1
@@ -13,7 +12,6 @@
/obj/item/gun/energy/laser/practice
name = "practice laser gun"
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
origin_tech = "combat=2;magnets=2"
ammo_type = list(/obj/item/ammo_casing/energy/laser/practice)
clumsy_check = 0
needs_permit = 0
@@ -37,7 +35,6 @@
item_state = "caplaser"
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
force = 10
origin_tech = null
ammo_x_offset = 3
selfcharge = 1
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
@@ -47,13 +44,11 @@
icon_state = "lasercannon"
item_state = "laser"
desc = "An industrial-grade heavy-duty laser rifle with a modified laser lens to scatter its shot into multiple smaller lasers. The inner-core can self-charge for theoretically infinite use."
origin_tech = "combat=5;materials=4;powerstorage=4"
ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser)
/obj/item/gun/energy/laser/cyborg
can_charge = 0
desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?"
origin_tech = null
use_cyborg_cell = 1
/obj/item/gun/energy/laser/cyborg/emp_act()
@@ -85,7 +80,6 @@
force = 10
flags_1 = CONDUCT_1
slot_flags = SLOT_BACK
origin_tech = "combat=4;magnets=4;powerstorage=3"
ammo_type = list(/obj/item/ammo_casing/energy/laser/accelerator)
pin = null
ammo_x_offset = 3
@@ -111,7 +105,6 @@
desc = "A high-power laser gun capable of expelling concentrated x-ray blasts that pass through multiple soft targets and heavier materials."
icon_state = "xray"
item_state = null
origin_tech = "combat=6;materials=4;magnets=4;syndicate=1"
ammo_type = list(/obj/item/ammo_casing/energy/xray)
pin = null
ammo_x_offset = 3
@@ -123,7 +116,6 @@
icon_state = "bluetag"
desc = "A retro laser gun modified to fire harmless blue beams of light. Sound effects included!"
ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag)
origin_tech = "combat=2;magnets=2"
clumsy_check = 0
needs_permit = 0
pin = /obj/item/device/firing_pin/tag/blue
@@ -135,7 +127,6 @@
icon_state = "redtag"
desc = "A retro laser gun modified to fire harmless beams red of light. Sound effects included!"
ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag)
origin_tech = "combat=2;magnets=2"
clumsy_check = 0
needs_permit = 0
pin = /obj/item/device/firing_pin/tag/red

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