mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-21 23:52:48 +00:00
Merge branch 'bleeding-edge-freeze' into viro
This commit is contained in:
@@ -65,45 +65,11 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
|
||||
s_coold = 1
|
||||
return
|
||||
|
||||
//=======//9-8 TILE TELEPORT//=======//
|
||||
//Click to to teleport 9-10 tiles in direction facing.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt()
|
||||
set name = "Phase Jaunt (10E)"
|
||||
set desc = "Utilizes the internal VOID-shift device to rapidly transit in direction facing."
|
||||
set category = "Ninja Ability"
|
||||
set popup_menu = 0
|
||||
|
||||
var/C = 100
|
||||
if(!ninjacost(C,1))
|
||||
var/mob/living/carbon/human/U = affecting
|
||||
var/turf/destination = get_teleport_loc(U.loc,U,9,1,3,1,0,1)
|
||||
var/turf/mobloc = get_turf(U.loc)//To make sure that certain things work properly below.
|
||||
if(destination&&istype(mobloc, /turf))//The turf check prevents unusual behavior. Like teleporting out of cryo pods, cloners, mechs, etc.
|
||||
spawn(0)
|
||||
playsound(U.loc, "sparks", 50, 1)
|
||||
anim(mobloc,src,'icons/mob/mob.dmi',,"phaseout",,U.dir)
|
||||
|
||||
handle_teleport_grab(destination, U)
|
||||
U.loc = destination
|
||||
|
||||
spawn(0)
|
||||
spark_system.start()
|
||||
playsound(U.loc, 'sound/effects/phasein.ogg', 25, 1)
|
||||
playsound(U.loc, "sparks", 50, 1)
|
||||
anim(U.loc,U,'icons/mob/mob.dmi',,"phasein",,U.dir)
|
||||
|
||||
spawn(0)
|
||||
destination.kill_creatures(U)//Any living mobs in teleport area are gibbed. Check turf procs for how it does it.
|
||||
s_coold = 1
|
||||
cell.charge-=(C*10)
|
||||
else
|
||||
U << "\red The VOID-shift device is malfunctioning, <B>teleportation failed</B>."
|
||||
return
|
||||
|
||||
//=======//RIGHT CLICK TELEPORT//=======//
|
||||
//Right click to teleport somewhere, almost exactly like admin jump to turf.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjashift(turf/T in oview())
|
||||
set name = "Phase Shift (20E)"
|
||||
set name = "Phase Shift (1E)"
|
||||
set desc = "Utilizes the internal VOID-shift device to rapidly transit to a destination in view."
|
||||
set category = null//So it does not show up on the panel but can still be right-clicked.
|
||||
set src = usr.contents//Fixes verbs not attaching properly for objects. Praise the DM reference guide!
|
||||
@@ -125,11 +91,6 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
|
||||
playsound(U.loc, 'sound/effects/phasein.ogg', 25, 1)
|
||||
playsound(U.loc, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
anim(U.loc,U,'icons/mob/mob.dmi',,"phasein",,U.dir)
|
||||
|
||||
spawn(0)//Any living mobs in teleport area are gibbed.
|
||||
T.kill_creatures(U)
|
||||
s_coold = 1
|
||||
cell.charge-=(C*10)
|
||||
else
|
||||
U << "\red You cannot teleport into solid walls or from solid matter"
|
||||
return
|
||||
@@ -137,16 +98,16 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
|
||||
//=======//EM PULSE//=======//
|
||||
//Disables nearby tech equipment.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjapulse()
|
||||
set name = "EM Burst (25E)"
|
||||
set name = "EM Burst (1,000E)"
|
||||
set desc = "Disable any nearby technology with a electro-magnetic pulse."
|
||||
set category = "Ninja Ability"
|
||||
set popup_menu = 0
|
||||
|
||||
var/C = 250
|
||||
if(!ninjacost(C,1))
|
||||
if(!ninjacost(C,100)) // EMP's now cost 1,000Energy about 30%
|
||||
var/mob/living/carbon/human/U = affecting
|
||||
playsound(U.loc, 'sound/effects/EMPulse.ogg', 60, 2)
|
||||
empulse(U, 4, 6) //Procs sure are nice. Slightly weaker than wizard's disable tch.
|
||||
empulse(U, 2, 3) //Procs sure are nice. Slightly weaker than wizard's disable tch.
|
||||
s_coold = 2
|
||||
cell.charge-=(C*10)
|
||||
return
|
||||
@@ -154,13 +115,13 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
|
||||
//=======//ENERGY BLADE//=======//
|
||||
//Summons a blade of energy in active hand.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjablade()
|
||||
set name = "Energy Blade (5E)"
|
||||
set name = "Energy Blade (20E)"
|
||||
set desc = "Create a focused beam of energy in your active hand."
|
||||
set category = "Ninja Ability"
|
||||
set popup_menu = 0
|
||||
|
||||
var/C = 50
|
||||
if(!ninjacost(C))
|
||||
if(!ninjacost(C, 800)) //Same spawn cost but higher upkeep cost
|
||||
var/mob/living/carbon/human/U = affecting
|
||||
if(!kamikaze)
|
||||
if(!U.get_active_hand()&&!istype(U.get_inactive_hand(), /obj/item/weapon/melee/energy/blade))
|
||||
@@ -187,13 +148,13 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
|
||||
/*Shoots ninja stars at random people.
|
||||
This could be a lot better but I'm too tired atm.*/
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjastar()
|
||||
set name = "Energy Star (5E)"
|
||||
set name = "Energy Star (1,000E)"
|
||||
set desc = "Launches an energy star at a random living target."
|
||||
set category = "Ninja Ability"
|
||||
set popup_menu = 0
|
||||
|
||||
var/C = 50
|
||||
if(!ninjacost(C))
|
||||
if(!ninjacost(C,1))
|
||||
var/mob/living/carbon/human/U = affecting
|
||||
var/targets[] = list()//So yo can shoot while yo throw dawg
|
||||
for(var/mob/living/M in oview(loc))
|
||||
@@ -212,7 +173,7 @@ This could be a lot better but I'm too tired atm.*/
|
||||
A.current = curloc
|
||||
A.yo = targloc.y - curloc.y
|
||||
A.xo = targloc.x - curloc.x
|
||||
cell.charge-=(C*10)
|
||||
cell.charge-=(C*100)// Ninja stars now cost 100 energy, stil la fair chunk to avoid spamming, will run out of power quickly if used 3 or more times
|
||||
A.process()
|
||||
else
|
||||
U << "\red There are no targets in view."
|
||||
@@ -222,13 +183,13 @@ This could be a lot better but I'm too tired atm.*/
|
||||
/*Allows the ninja to capture people, I guess.
|
||||
Must right click on a mob to activate.*/
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjanet(mob/living/carbon/M in oview())//Only living carbon mobs.
|
||||
set name = "Energy Net (20E)"
|
||||
set name = "Energy Net (8,000E)"
|
||||
set desc = "Captures a fallen opponent in a net of energy. Will teleport them to a holding facility after 30 seconds."
|
||||
set category = null
|
||||
set src = usr.contents
|
||||
|
||||
var/C = 200
|
||||
if(!ninjacost(C,1)&&iscarbon(M))
|
||||
var/C = 500
|
||||
if(!ninjacost(C,80)&&iscarbon(M)) // Nets now cost 8,000
|
||||
var/mob/living/carbon/human/U = affecting
|
||||
if(M.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame.
|
||||
//if(M)//DEBUG
|
||||
@@ -249,7 +210,7 @@ Must right click on a mob to activate.*/
|
||||
E.master = U
|
||||
spawn(0)//Parallel processing.
|
||||
E.process(M)
|
||||
cell.charge-=(C*10)
|
||||
cell.charge-=(C*100) // Nets now cost what should be most of a standard battery, since your taking someone out of the round
|
||||
else
|
||||
U << "They are already trapped inside an energy net."
|
||||
else
|
||||
@@ -270,7 +231,6 @@ Movement impairing would indicate drugs and the like.*/
|
||||
//Wouldn't need to track adrenaline boosters if there was a miracle injection to get rid of paralysis and the like instantly.
|
||||
//For now, adrenaline boosters ARE the miracle injection. Well, radium, really.
|
||||
U.SetParalysis(0)
|
||||
U.SetStunned(0)
|
||||
U.SetWeakened(0)
|
||||
/*
|
||||
Due to lag, it was possible to adrenaline boost but remain helpless while life.dm resets player stat.
|
||||
|
||||
@@ -1333,10 +1333,10 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
return
|
||||
|
||||
process(var/mob/living/carbon/M as mob)
|
||||
var/check = 30//30 seconds before teleportation. Could be extended I guess.
|
||||
var/check = 60//30 seconds before teleportation. Could be extended I guess. - Extended to one minute
|
||||
var/mob_name = affecting.name//Since they will report as null if terminated before teleport.
|
||||
//The person can still try and attack the net when inside.
|
||||
while(!isnull(M)&&!isnull(src)&&check>0)//While M and net exist, and 30 seconds have not passed.
|
||||
while(!isnull(M)&&!isnull(src)&&check>0)//While M and net exist, and 60 seconds have not passed.
|
||||
check--
|
||||
sleep(10)
|
||||
|
||||
|
||||
@@ -656,7 +656,6 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/grant_ninja_verbs()
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse
|
||||
@@ -669,8 +668,6 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/remove_ninja_verbs()
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjablade
|
||||
@@ -681,11 +678,7 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/grant_kamikaze(mob/living/carbon/U)
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjastar
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjanet
|
||||
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjaslayer
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjawalk
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjamirage
|
||||
@@ -710,11 +703,8 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/remove_kamikaze(mob/living/carbon/U)
|
||||
if(kamikaze)
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjastar
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjanet
|
||||
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjaslayer
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjawalk
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjamirage
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
/var/const/access_gateway = 62
|
||||
/var/const/access_sec_doors = 63 // Security front doors
|
||||
/var/const/access_psychiatrist = 64 // Psychiatrist's office
|
||||
/var/const/access_xenoarch = 65
|
||||
|
||||
//BEGIN CENTCOM ACCESS
|
||||
/*Should leave plenty of room if we need to add more access levels.
|
||||
@@ -209,7 +210,7 @@
|
||||
access_hydroponics, access_library, access_lawyer, access_virology, access_psychiatrist, access_cmo, access_qm, access_clown, access_mime, access_surgery,
|
||||
access_theatre, access_research, access_mining, access_mailsorting,
|
||||
access_heads_vault, access_mining_station, access_xenobiology, access_ce, access_hop, access_hos, access_RC_announce,
|
||||
access_keycard_auth, access_tcomsat, access_gateway)
|
||||
access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch)
|
||||
|
||||
/proc/get_all_centcom_access()
|
||||
return list(access_cent_general, access_cent_thunder, access_cent_specops, access_cent_medical, access_cent_living, access_cent_storage, access_cent_teleporter, access_cent_creed, access_cent_captain)
|
||||
@@ -226,7 +227,7 @@
|
||||
if(2) //medbay
|
||||
return list(access_medical, access_genetics, access_morgue, access_chemistry, access_psychiatrist, access_virology, access_surgery, access_cmo)
|
||||
if(3) //research
|
||||
return list(access_research, access_tox, access_tox_storage, access_robotics, access_xenobiology, access_rd)
|
||||
return list(access_research, access_tox, access_tox_storage, access_robotics, access_xenobiology, access_xenoarch, access_rd)
|
||||
if(4) //engineering and maintenance
|
||||
return list(access_construction, access_maint_tunnels, access_engine, access_engine_equip, access_external_airlocks, access_tech_storage, access_atmospherics, access_ce)
|
||||
if(5) //command
|
||||
@@ -370,6 +371,8 @@
|
||||
return "Mining EVA"
|
||||
if(access_xenobiology)
|
||||
return "Xenobiology Lab"
|
||||
if(access_xenoarch)
|
||||
return "Xenoarchaeology"
|
||||
if(access_hop)
|
||||
return "Head of Personnel"
|
||||
if(access_hos)
|
||||
@@ -412,7 +415,7 @@
|
||||
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Chef", "Botanist", "Quartermaster", "Cargo Technician",
|
||||
"Shaft Miner", /*"Clown", "Mime", */"Janitor", "Librarian", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer",
|
||||
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist",
|
||||
"Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer")
|
||||
"Research Director", "Scientist", "Xenobiologist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer")
|
||||
|
||||
/proc/get_all_centcom_jobs()
|
||||
return list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer","BlackOps Commander","Supreme Commander")
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway)
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch)
|
||||
minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway)
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch)
|
||||
minimal_player_age = 7
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
@@ -44,8 +44,8 @@
|
||||
spawn_positions = 3
|
||||
supervisors = "the research director"
|
||||
selection_color = "#ffeeff"
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology)
|
||||
minimal_access = list(access_tox, access_tox_storage, access_research)
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch)
|
||||
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch)
|
||||
alt_titles = list("Xenoarcheologist", "Anomalist", "Plasma Researcher")
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -1238,7 +1238,11 @@ About the new airlock wires panel:
|
||||
var/obj/item/weapon/airlock_electronics/ae
|
||||
if(!electronics)
|
||||
ae = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
ae.conf_access = src.req_access
|
||||
if(src.req_access.len)
|
||||
ae.conf_access = src.req_access
|
||||
else if (src.req_one_access.len)
|
||||
ae.conf_access = src.req_one_access
|
||||
ae.one_access = 1
|
||||
else
|
||||
ae = electronics
|
||||
electronics = null
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
req_access = list(access_engine)
|
||||
|
||||
var/list/conf_access = null
|
||||
var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access
|
||||
var/last_configurator = null
|
||||
var/locked = 1
|
||||
|
||||
@@ -33,6 +34,8 @@
|
||||
else
|
||||
t1 += "<a href='?src=\ref[src];logout=1'>Block</a><hr>"
|
||||
|
||||
t1 += "Access requirement is set to "
|
||||
t1 += one_access ? "<a style='color: green' href='?src=\ref[src];one_access=1'>ONE</a><hr>" : "<a style='color: red' href='?src=\ref[src];one_access=1'>ALL</a><hr>"
|
||||
|
||||
t1 += conf_access == null ? "<font color=red>All</font><br>" : "<a href='?src=\ref[src];access=all'>All</a><br>"
|
||||
|
||||
@@ -44,6 +47,8 @@
|
||||
|
||||
if (!conf_access || !conf_access.len || !(acc in conf_access))
|
||||
t1 += "<a href='?src=\ref[src];access=[acc]'>[aname]</a><br>"
|
||||
else if(one_access)
|
||||
t1 += "<a style='color: green' href='?src=\ref[src];access=[acc]'>[aname]</a><br>"
|
||||
else
|
||||
t1 += "<a style='color: red' href='?src=\ref[src];access=[acc]'>[aname]</a><br>"
|
||||
|
||||
@@ -75,6 +80,9 @@
|
||||
if (href_list["logout"])
|
||||
locked = 1
|
||||
|
||||
if (href_list["one_access"])
|
||||
one_access = !one_access
|
||||
|
||||
if (href_list["access"])
|
||||
toggle_access(href_list["access"])
|
||||
|
||||
|
||||
@@ -130,6 +130,21 @@
|
||||
new /obj/item/weapon/shard(src.loc)
|
||||
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
|
||||
CC.amount = 2
|
||||
var/obj/item/weapon/airlock_electronics/ae
|
||||
if(!electronics)
|
||||
ae = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
if(src.req_access.len)
|
||||
ae.conf_access = src.req_access
|
||||
else if (src.req_one_access.len)
|
||||
ae.conf_access = src.req_one_access
|
||||
ae.one_access = 1
|
||||
else
|
||||
ae = electronics
|
||||
electronics = null
|
||||
ae.loc = src.loc
|
||||
if(operating == -1)
|
||||
ae.icon_state = "door_electronics_smoked"
|
||||
operating = 0
|
||||
src.density = 0
|
||||
del(src)
|
||||
return
|
||||
@@ -162,15 +177,9 @@
|
||||
if(istype(user, /mob/living/carbon/alien/humanoid) || istype(user, /mob/living/carbon/slime/adult))
|
||||
if(src.operating)
|
||||
return
|
||||
src.health = max(0, src.health - 25)
|
||||
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
|
||||
visible_message("\red <B>[user] smashes against the [src.name].</B>", 1)
|
||||
if (src.health <= 0)
|
||||
new /obj/item/weapon/shard(src.loc)
|
||||
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
|
||||
CC.amount = 2
|
||||
src.density = 0
|
||||
del(src)
|
||||
take_damage(25)
|
||||
else
|
||||
return src.attack_hand(user)
|
||||
|
||||
@@ -181,7 +190,7 @@
|
||||
/obj/machinery/door/window/attackby(obj/item/weapon/I as obj, mob/user as mob)
|
||||
|
||||
//If it's in the process of opening/closing, ignore the click
|
||||
if (src.operating)
|
||||
if (src.operating == 1)
|
||||
return
|
||||
|
||||
//Emags and ninja swords? You may pass.
|
||||
@@ -199,19 +208,50 @@
|
||||
open()
|
||||
return 1
|
||||
|
||||
//If it's emagged, crowbar can pry electronics out.
|
||||
if (src.operating == -1 && istype(I, /obj/item/weapon/crowbar))
|
||||
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] removes the electronics from the windoor.", "You start to remove electronics from the windoor.")
|
||||
if (do_after(user,40))
|
||||
user << "\blue You removed the windoor electronics!"
|
||||
|
||||
var/obj/structure/windoor_assembly/wa = new/obj/structure/windoor_assembly(src.loc)
|
||||
if (istype(src, /obj/machinery/door/window/brigdoor))
|
||||
wa.secure = "secure_"
|
||||
wa.name = "Secure Wired Windoor Assembly"
|
||||
else
|
||||
wa.name = "Wired Windoor Assembly"
|
||||
if (src.base_state == "right" || src.base_state == "rightsecure")
|
||||
wa.facing = "r"
|
||||
wa.dir = src.dir
|
||||
wa.state = "02"
|
||||
wa.update_icon()
|
||||
|
||||
var/obj/item/weapon/airlock_electronics/ae
|
||||
if(!electronics)
|
||||
ae = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
if(src.req_access.len)
|
||||
ae.conf_access = src.req_access
|
||||
else if (src.req_one_access.len)
|
||||
ae.conf_access = src.req_one_access
|
||||
ae.one_access = 1
|
||||
else
|
||||
ae = electronics
|
||||
electronics = null
|
||||
ae.loc = src.loc
|
||||
ae.icon_state = "door_electronics_smoked"
|
||||
|
||||
operating = 0
|
||||
del(src)
|
||||
return
|
||||
|
||||
//If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway)
|
||||
if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card))
|
||||
var/aforce = I.force
|
||||
if(I.damtype == BRUTE || I.damtype == BURN)
|
||||
src.health = max(0, src.health - aforce)
|
||||
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
|
||||
visible_message("\red <B>[src] was hit by [I].</B>")
|
||||
if (src.health <= 0)
|
||||
new /obj/item/weapon/shard(src.loc)
|
||||
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
|
||||
CC.amount = 2
|
||||
src.density = 0
|
||||
del(src)
|
||||
if(I.damtype == BRUTE || I.damtype == BURN)
|
||||
take_damage(aforce)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -153,6 +153,7 @@
|
||||
icon_state = "knife"
|
||||
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
sharp = 1
|
||||
force = 10.0
|
||||
w_class = 3.0
|
||||
throwforce = 6.0
|
||||
|
||||
@@ -146,5 +146,5 @@
|
||||
item_state = "harpoon"
|
||||
force = 20
|
||||
throwforce = 15
|
||||
w_class = 2
|
||||
w_class = 3
|
||||
attack_verb = list("jabbed","stabbed","ripped")
|
||||
@@ -421,7 +421,11 @@ obj/structure/door_assembly
|
||||
door = new src.airlock_type( src.loc )
|
||||
//door.req_access = src.req_access
|
||||
door.electronics = src.electronics
|
||||
door.req_access = src.electronics.conf_access
|
||||
if(src.electronics.one_access)
|
||||
door.req_access = null
|
||||
door.req_one_access = src.electronics.conf_access
|
||||
else
|
||||
door.req_access = src.electronics.conf_access
|
||||
if(created_name)
|
||||
door.name = created_name
|
||||
src.electronics.loc = door
|
||||
|
||||
@@ -107,17 +107,17 @@ obj/structure/windoor_assembly/Del()
|
||||
src.name = "Windoor Assembly"
|
||||
|
||||
//Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete.
|
||||
else if(istype(W, /obj/item/stack/sheet/plasteel) && !secure)
|
||||
var/obj/item/stack/sheet/plasteel/P = W
|
||||
if(P.amount < 2)
|
||||
user << "\red You need more plasteel to do this."
|
||||
else if(istype(W, /obj/item/stack/rods) && !secure)
|
||||
var/obj/item/stack/rods/R = W
|
||||
if(R.amount < 4)
|
||||
user << "\red You need more rods to do this."
|
||||
return
|
||||
user << "\blue You start to reinforce the windoor with plasteel."
|
||||
user << "\blue You start to reinforce the windoor with rods."
|
||||
|
||||
if(do_after(user,40))
|
||||
if(!src) return
|
||||
|
||||
P.use(2)
|
||||
R.use(4)
|
||||
user << "\blue You reinforce the windoor."
|
||||
src.secure = "secure_"
|
||||
if(src.anchored)
|
||||
@@ -145,7 +145,7 @@ obj/structure/windoor_assembly/Del()
|
||||
if("02")
|
||||
|
||||
//Removing wire from the assembly. Step 5 undone.
|
||||
if(istype(W, /obj/item/weapon/wirecutters))
|
||||
if(istype(W, /obj/item/weapon/wirecutters) && !src.electronics)
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
|
||||
|
||||
@@ -156,12 +156,12 @@ obj/structure/windoor_assembly/Del()
|
||||
new/obj/item/weapon/cable_coil(get_turf(user), 1)
|
||||
src.state = "01"
|
||||
if(src.secure)
|
||||
src.name = "Secure Wired Windoor Assembly"
|
||||
src.name = "Secure Anchored Windoor Assembly"
|
||||
else
|
||||
src.name = "Wired Windoor Assembly"
|
||||
src.name = "Anchored Windoor Assembly"
|
||||
|
||||
//Adding airlock electronics for access. Step 6 complete.
|
||||
else if(istype(W, /obj/item/weapon/airlock_electronics))
|
||||
else if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked")
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
|
||||
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
|
||||
|
||||
@@ -177,22 +177,20 @@ obj/structure/windoor_assembly/Del()
|
||||
W.loc = src.loc
|
||||
|
||||
//Screwdriver to remove airlock electronics. Step 6 undone.
|
||||
else if(istype(W, /obj/item/weapon/screwdriver))
|
||||
else if(istype(W, /obj/item/weapon/screwdriver) && src.electronics)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
|
||||
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly.")
|
||||
|
||||
if(do_after(user, 40))
|
||||
if(!src) return
|
||||
if(!src || !src.electronics) return
|
||||
user << "\blue You've removed the airlock electronics!"
|
||||
src.name = "Wired Windoor Assembly"
|
||||
var/obj/item/weapon/airlock_electronics/ae
|
||||
if (!electronics)
|
||||
ae = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
if(src.secure)
|
||||
src.name = "Secure Wired Windoor Assembly"
|
||||
else
|
||||
ae = electronics
|
||||
electronics = null
|
||||
ae.loc = src.loc
|
||||
|
||||
src.name = "Wired Windoor Assembly"
|
||||
var/obj/item/weapon/airlock_electronics/ae = electronics
|
||||
electronics = null
|
||||
ae.loc = src.loc
|
||||
|
||||
//Crowbar to complete the assembly, Step 7 complete.
|
||||
else if(istype(W, /obj/item/weapon/crowbar))
|
||||
@@ -221,7 +219,11 @@ obj/structure/windoor_assembly/Del()
|
||||
windoor.dir = src.dir
|
||||
windoor.density = 0
|
||||
|
||||
windoor.req_access = src.electronics.conf_access
|
||||
if(src.electronics.one_access)
|
||||
windoor.req_access = null
|
||||
windoor.req_one_access = src.electronics.conf_access
|
||||
else
|
||||
windoor.req_access = src.electronics.conf_access
|
||||
windoor.electronics = src.electronics
|
||||
src.electronics.loc = windoor
|
||||
else
|
||||
@@ -235,7 +237,11 @@ obj/structure/windoor_assembly/Del()
|
||||
windoor.dir = src.dir
|
||||
windoor.density = 0
|
||||
|
||||
windoor.req_access = src.electronics.conf_access
|
||||
if(src.electronics.one_access)
|
||||
windoor.req_access = null
|
||||
windoor.req_one_access = src.electronics.conf_access
|
||||
else
|
||||
windoor.req_access = src.electronics.conf_access
|
||||
windoor.electronics = src.electronics
|
||||
src.electronics.loc = windoor
|
||||
|
||||
|
||||
Reference in New Issue
Block a user