itMerge branch 'master' of https://github.com/ParadiseSS13/Paradise into CultPassBug

This commit is contained in:
Aurorablade
2018-03-01 19:51:05 -05:00
176 changed files with 1917 additions and 465 deletions
+1 -1
View File
@@ -16,7 +16,7 @@
/datum/crafting_recipe/IED
name = "IED"
result = /obj/item/weapon/grenade/iedcasing/filled
result = /obj/item/weapon/grenade/iedcasing
reqs = list(/datum/reagent/fuel = 50,
/obj/item/stack/cable_coil = 1,
/obj/item/device/assembly/igniter = 1,
@@ -43,6 +43,9 @@
/obj/item/weapon/reagent_containers/food/drinks/MouseDrop(atom/over_object) //CHUG! CHUG! CHUG!
var/mob/living/carbon/chugger = over_object
if (!(flags & OPENCONTAINER))
to_chat(chugger, "<span class='notice'>You need to open [src] first!</span>")
return
if(istype(chugger) && loc == chugger && src == chugger.get_active_hand() && reagents.total_volume)
chugger.visible_message("<span class='notice'>[chugger] raises the [src] to their mouth and starts [pick("chugging","gulping")] it down like [pick("a savage","a mad beast","it's going out of style","there's no tomorrow")]!</span>", "<span class='notice'>You start chugging \the [src].</span>", "<span class='notice'>You hear what sounds like gulping.</span>")
while(do_mob(chugger, chugger, 40)) //Between the default time for do_mob and the time it takes for a vampire to suck blood.
+1 -3
View File
@@ -349,10 +349,8 @@
holiday_master.holidays = list()
holiday_master.holidays[H.name] = H
station_name = null
station_name()
//update our hub status
world.update_status()
message_admins("<span class='notice'>ADMIN: Event: [key_name_admin(src)] force-set Holiday to \"[H]\"</span>")
log_admin("[key_name(src)] force-set Holiday to \"[H]\"")
log_admin("[key_name(src)] force-set Holiday to \"[H]\"")
+38 -40
View File
@@ -19,7 +19,7 @@
var/ore_pickup_rate = 15
var/sheet_per_ore = 1
var/point_upgrade = 1
var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("uranium" = 30), ("diamond" = 50), ("bluespace crystal" = 50), ("bananium" = 60), ("tranquillite" = 60))
var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("titanium" = 30), ("uranium" = 30), ("diamond" = 50), ("bluespace crystal" = 50), ("bananium" = 60), ("tranquillite" = 60))
var/list/supply_consoles = list("Science", "Robotics", "Research Director's Desk", "Mechanic", "Engineering" = list("metal", "glass", "plasma"), "Chief Engineer's Desk" = list("metal", "glass", "plasma"), "Atmospherics" = list("metal", "glass", "plasma"), "Bar" = list("uranium", "plasma"), "Virology" = list("plasma", "uranium", "gold"))
speed_process = 1
@@ -175,17 +175,28 @@
dat += "<br>" //just looks nicer
dat += text("[capitalize(s.name)]: [s.amount] <A href='?src=[UID()];release=[s.type]'>Release</A><br>")
if((/obj/item/stack/sheet/metal in stack_list) && (/obj/item/stack/sheet/mineral/plasma in stack_list))
var/obj/item/stack/sheet/metalstack = stack_list[/obj/item/stack/sheet/metal]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
if(min(metalstack.amount, plasmastack.amount))
dat += text("Plasteel Alloy (Metal + Plasma): <A href='?src=[UID()];plasteel=1'>Smelt</A><BR>")
if((/obj/item/stack/sheet/glass in stack_list) && (/obj/item/stack/sheet/mineral/plasma in stack_list))
var/obj/item/stack/sheet/glassstack = stack_list[/obj/item/stack/sheet/glass]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
if(min(glassstack.amount, plasmastack.amount))
dat += "Plasma Glass (Glass + Plasma): <A href='?src=[UID()];plasglass=1'>Smelt</A><BR>"
var/obj/item/stack/sheet/metalstack
if(/obj/item/stack/sheet/metal in stack_list)
metalstack = stack_list[/obj/item/stack/sheet/metal]
var/obj/item/stack/sheet/glass/glassstack
if(/obj/item/stack/sheet/glass in stack_list)
glassstack = stack_list[/obj/item/stack/sheet/glass]
var/obj/item/stack/sheet/plasmastack
if((/obj/item/stack/sheet/mineral/plasma in stack_list))
plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
var/obj/item/stack/sheet/mineral/titaniumstack
if((/obj/item/stack/sheet/mineral/titanium in stack_list))
titaniumstack = stack_list[/obj/item/stack/sheet/mineral/titanium]
if(metalstack && plasmastack && min(metalstack.amount, plasmastack.amount))
dat += text("Plasteel Alloy (Metal + Plasma): <A href='?src=[UID()];alloytype1=/obj/item/stack/sheet/metal;alloytype2=/obj/item/stack/sheet/mineral/plasma;alloytypeout=/obj/item/stack/sheet/plasteel'>Smelt</A><BR>")
if(titaniumstack && plasmastack && min(titaniumstack.amount, plasmastack.amount))
dat += text("Plastitanium Alloy (Titanium + Plasma): <A href='?src=[UID()];alloytype1=/obj/item/stack/sheet/mineral/titanium;alloytype2=/obj/item/stack/sheet/mineral/plasma;alloytypeout=/obj/item/stack/sheet/mineral/plastitanium'>Smelt</A><BR>")
if(glassstack && plasmastack && min(glassstack.amount, plasmastack.amount))
dat += text("Plasma Glass (Glass + Plasma): <A href='?src=[UID()];alloytype1=/obj/item/stack/sheet/glass;alloytype2=/obj/item/stack/sheet/mineral/plasma;alloytypeout=/obj/item/stack/sheet/plasmaglass'>Smelt</A><BR>")
dat += text("<br><div class='statusDisplay'><b>Mineral Value List:</b><BR>[get_ore_values()]</div>")
var/datum/browser/popup = new(user, "console_stacking_machine", "Ore Redemption Machine", 400, 500)
@@ -242,37 +253,24 @@
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
if(href_list["plasteel"])
if(href_list["alloytype1"] && href_list["alloytype2"] && href_list["alloytypeout"])
var/alloytype1 = text2path(href_list["alloytype1"])
var/alloytype2 = text2path(href_list["alloytype2"])
var/alloytypeout = text2path(href_list["alloytypeout"])
if(check_access(inserted_id) || allowed(usr))
if(!(/obj/item/stack/sheet/metal in stack_list)) return
if(!(/obj/item/stack/sheet/mineral/plasma in stack_list)) return
var/obj/item/stack/sheet/metalstack = stack_list[/obj/item/stack/sheet/metal]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
if(!(alloytype1 in stack_list))
return
if(!(alloytype2 in stack_list))
return
var/obj/item/stack/sheet/stack1 = stack_list[alloytype1]
var/obj/item/stack/sheet/stack2 = stack_list[alloytype2]
var/desired = input("How much?", "How much would you like to smelt?", 1) as num
var/obj/item/stack/sheet/plasteel/plasteelout = new
plasteelout.amount = round(min(desired,50,metalstack.amount,plasmastack.amount))
if(plasteelout.amount >= 1)
metalstack.amount -= plasteelout.amount
plasmastack.amount -= plasteelout.amount
unload_mineral(plasteelout)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
if(href_list["plasglass"])
if(check_access(inserted_id) || allowed(usr))
if(!(/obj/item/stack/sheet/glass in stack_list)) return
if(!(/obj/item/stack/sheet/mineral/plasma in stack_list)) return
var/obj/item/stack/sheet/glassstack = stack_list[/obj/item/stack/sheet/glass]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
var/desired = input("How much?", "How much would you like to smelt?", 1) as num
var/obj/item/stack/sheet/plasmaglass/plasglassout = new
plasglassout.amount = round(min(desired, 50, glassstack.amount, plasmastack.amount))
if(plasglassout.amount >= 1)
glassstack.amount -= plasglassout.amount
plasmastack.amount -= plasglassout.amount
unload_mineral(plasglassout)
var/obj/item/stack/sheet/alloyout = new alloytypeout
alloyout.amount = round(min(desired,50,stack1.amount,stack2.amount))
if(alloyout.amount >= 1)
stack1.amount -= alloyout.amount
stack2.amount -= alloyout.amount
unload_mineral(alloyout)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
updateUsrDialog()
+92 -54
View File
@@ -25,93 +25,102 @@
if(machine.ore_iron || machine.ore_glass || machine.ore_plasma || machine.ore_uranium || machine.ore_gold || machine.ore_silver || machine.ore_diamond || machine.ore_clown || machine.ore_mime || machine.ore_adamantine)
if(machine.ore_iron)
if(machine.selected_iron==1)
dat += text("<A href='?src=[UID()];sel_iron=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_iron=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_iron=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Iron: [machine.ore_iron]<br>")
dat += "<A href='?src=[UID()];sel_iron=yes'><font color='red'>Not smelting</font></A> "
dat += "Iron: [machine.ore_iron]<br>"
else
machine.selected_iron = 0
//sand - glass
if(machine.ore_glass)
if(machine.selected_glass==1)
dat += text("<A href='?src=[UID()];sel_glass=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_glass=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_glass=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Sand: [machine.ore_glass]<br>")
dat += "<A href='?src=[UID()];sel_glass=yes'><font color='red'>Not smelting</font></A> "
dat += "Sand: [machine.ore_glass]<br>"
else
machine.selected_glass = 0
//plasma
if(machine.ore_plasma)
if(machine.selected_plasma==1)
dat += text("<A href='?src=[UID()];sel_plasma=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_plasma=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_plasma=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Plasma: [machine.ore_plasma]<br>")
dat += "<A href='?src=[UID()];sel_plasma=yes'><font color='red'>Not smelting</font></A> "
dat += "Plasma: [machine.ore_plasma]<br>"
else
machine.selected_plasma = 0
//uranium
if(machine.ore_uranium)
if(machine.selected_uranium==1)
dat += text("<A href='?src=[UID()];sel_uranium=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_uranium=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_uranium=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Uranium: [machine.ore_uranium]<br>")
dat += "<A href='?src=[UID()];sel_uranium=yes'><font color='red'>Not smelting</font></A> "
dat += "Uranium: [machine.ore_uranium]<br>"
else
machine.selected_uranium = 0
//gold
if(machine.ore_gold)
if(machine.selected_gold==1)
dat += text("<A href='?src=[UID()];sel_gold=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_gold=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_gold=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Gold: [machine.ore_gold]<br>")
dat += "<A href='?src=[UID()];sel_gold=yes'><font color='red'>Not smelting</font></A> "
dat += "Gold: [machine.ore_gold]<br>"
else
machine.selected_gold = 0
//silver
if(machine.ore_silver)
if(machine.selected_silver==1)
dat += text("<A href='?src=[UID()];sel_silver=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_silver=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_silver=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Silver: [machine.ore_silver]<br>")
dat += "<A href='?src=[UID()];sel_silver=yes'><font color='red'>Not smelting</font></A> "
dat += "Silver: [machine.ore_silver]<br>"
else
machine.selected_silver = 0
//diamond
if(machine.ore_diamond)
if(machine.selected_diamond==1)
dat += text("<A href='?src=[UID()];sel_diamond=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_diamond=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_diamond=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Diamond: [machine.ore_diamond]<br>")
dat += "<A href='?src=[UID()];sel_diamond=yes'><font color='red'>Not smelting</font></A> "
dat += "Diamond: [machine.ore_diamond]<br>"
else
machine.selected_diamond = 0
//bananium
if(machine.ore_clown)
if(machine.selected_clown==1)
dat += text("<A href='?src=[UID()];sel_clown=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_clown=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_clown=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Bananium: [machine.ore_clown]<br>")
dat += "<A href='?src=[UID()];sel_clown=yes'><font color='red'>Not smelting</font></A> "
dat += "Bananium: [machine.ore_clown]<br>"
else
machine.selected_clown = 0
//tranquillite
if(machine.ore_mime)
if(machine.selected_mime==1)
dat += text("<A href='?src=[UID()];sel_mime=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_mime=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_mime=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Tranquillite: [machine.ore_mime]<br>")
dat += "<A href='?src=[UID()];sel_mime=yes'><font color='red'>Not smelting</font></A> "
dat += "Tranquillite: [machine.ore_mime]<br>"
else
machine.selected_mime = 0
//titanium
if(machine.ore_titanium)
if (machine.selected_titanium==1)
dat += "<A href='?src=\ref[src];sel_titanium=no'><font color='green'>Smelting</font></A> "
else
dat += "<A href='?src=\ref[src];sel_titanium=yes'><font color='red'>Not smelting</font></A> "
dat += "Titanium: [machine.ore_titanium]<br>"
else
machine.selected_titanium = 0
//On or off
dat += text("Machine is currently ")
@@ -175,6 +184,11 @@
machine.selected_mime = 1
else
machine.selected_mime = 0
if(href_list["sel_titanium"])
if (href_list["sel_titanium"] == "yes")
machine.selected_titanium = 1
else
machine.selected_titanium = 0
if(href_list["set_on"])
if(href_list["set_on"] == "on")
machine.on = 1
@@ -203,6 +217,7 @@
var/ore_clown = 0
var/ore_mime = 0
var/ore_adamantine = 0
var/ore_titanium = 0
var/selected_gold = 0
var/selected_silver = 0
var/selected_diamond = 0
@@ -212,92 +227,106 @@
var/selected_iron = 0
var/selected_clown = 0
var/selected_mime = 0
var/selected_titanium = 0
var/on = 0 //0 = off, 1 =... oh you know!
/obj/machinery/mineral/processing_unit/process()
var/i
for(i = 0; i < 10; i++)
for(var/i in 1 to 10)
if(on)
if(selected_glass == 1 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_glass > 0)
ore_glass--;
ore_glass--
generate_mineral(/obj/item/stack/sheet/glass)
else
on = 0
continue
if(selected_glass == 1 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0 && selected_mime == 0)
if(selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
if(ore_glass > 0 && ore_iron > 0)
ore_glass--;
ore_iron--;
ore_glass--
ore_iron--
generate_mineral(/obj/item/stack/sheet/rglass)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 1 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_gold > 0)
ore_gold--;
ore_gold--
generate_mineral(/obj/item/stack/sheet/mineral/gold)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 1 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_silver > 0)
ore_silver--;
ore_silver--
generate_mineral(/obj/item/stack/sheet/mineral/silver)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 1 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_diamond > 0)
ore_diamond--;
ore_diamond--
generate_mineral(/obj/item/stack/sheet/mineral/diamond)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 1 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_plasma > 0)
ore_plasma--;
ore_plasma--
generate_mineral(/obj/item/stack/sheet/mineral/plasma)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 1 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_uranium > 0)
ore_uranium--;
ore_uranium--
generate_mineral(/obj/item/stack/sheet/mineral/uranium)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
if(ore_iron > 0)
ore_iron--;
ore_iron--
generate_mineral(/obj/item/stack/sheet/metal)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 1 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
if(ore_iron > 0 && ore_plasma > 0)
ore_iron--;
ore_plasma--;
ore_iron--
ore_plasma--
generate_mineral(/obj/item/stack/sheet/plasteel)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 1 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && selected_clown && !selected_mime)
if(ore_clown > 0)
ore_clown--;
ore_clown--
generate_mineral(/obj/item/stack/sheet/mineral/bananium)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 1)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && selected_mime)
if(ore_mime > 0)
ore_mime--;
ore_mime--
generate_mineral(/obj/item/stack/sheet/mineral/tranquillite)
else
on = 0
continue
if (!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime && selected_titanium)
if (ore_titanium > 0)
ore_titanium--
generate_mineral(/obj/item/stack/sheet/mineral/titanium)
else
on = 0
continue
if (!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime && selected_titanium)
if (ore_titanium > 0)
ore_titanium--
ore_plasma--
generate_mineral(/obj/item/stack/sheet/mineral/plastitanium)
else
on = 0
continue
//if a non valid combination is selected
@@ -333,6 +362,9 @@
if(selected_mime == 1)
if(ore_mime <= 0)
b = 0
if(selected_titanium == 1)
if(ore_titanium <= 0)
b = 0
if(b) //if they are, deduct one from each, produce slag and shut the machine off
if(selected_gold == 1)
@@ -351,6 +383,8 @@
ore_clown--
if(selected_mime == 1)
ore_mime--
if(selected_titanium == 1)
ore_titanium--
generate_mineral(/obj/item/weapon/ore/slag)
on = 0
else
@@ -402,6 +436,10 @@
ore_mime++
O.loc = null
continue
if(istype(O,/obj/item/weapon/ore/titanium))
ore_titanium++
O.loc = null
continue
unload_mineral(O)
/obj/machinery/mineral/processing_unit/proc/generate_mineral(var/P)
-9
View File
@@ -362,15 +362,6 @@
icon_regular_floor = "podfloor"
floor_tile = /obj/item/stack/tile/pod
//Walls
/turf/simulated/wall/survival
name = "pod wall"
desc = "An easily-compressable wall used for temporary shelter."
icon = 'icons/turf/walls/survival_pod_walls.dmi'
icon_state = "smooth"
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/simulated/wall/survival, /obj/machinery/door/airlock/survival_pod)
//Door
/obj/machinery/door/airlock/survival_pod
icon = 'icons/obj/doors/airlocks/survival/survival.dmi'
+15 -6
View File
@@ -110,8 +110,7 @@ var/global/list/rockTurfEdgeCache = list(
"Uranium" = 5, "Diamond" = 1, "Gold" = 10,
"Silver" = 12, "Plasma" = 20, "Iron" = 40,
"Gibtonite" = 4, "Cave" = 2, "BScrystal" = 1,
/*, "Adamantine" =5*/)
//Currently, Adamantine won't spawn as it has no uses. -Durandan
"Titanium" = 11)
var/mineralChance = 13
/turf/simulated/mineral/random/New()
@@ -142,6 +141,8 @@ var/global/list/rockTurfEdgeCache = list(
M = new/turf/simulated/mineral/clown(src)
if("Tranquillite")
M = new/turf/simulated/mineral/mime(src)
if("Titanium")
M = new/turf/simulated/mineral/titanium(src)
if("BScrystal")
M = new/turf/simulated/mineral/bscrystal(src)
if(M)
@@ -155,9 +156,9 @@ var/global/list/rockTurfEdgeCache = list(
icon_state = "rock_highchance"
mineralChance = 25
mineralSpawnChanceList = list(
"Uranium" = 35, "Diamond" = 30,
"Gold" = 45, "Silver" = 50, "Plasma" = 50,
"BScrystal" = 20)
"Uranium" = 35, "Diamond" = 30, "Gold" = 45,
"Silver" = 50, "Plasma" = 50, "BScrystal" = 20,
"Titanium" = 45)
/turf/simulated/mineral/random/high_chance_clown
@@ -177,7 +178,7 @@ var/global/list/rockTurfEdgeCache = list(
mineralSpawnChanceList = list(
"Uranium" = 2, "Diamond" = 1, "Gold" = 4,
"Silver" = 6, "Plasma" = 15, "Iron" = 40,
"Gibtonite" = 2, "BScrystal" = 1)
"Gibtonite" = 2, "BScrystal" = 1, "Titanium" = 4)
/turf/simulated/mineral/random/low_chance/New()
icon_state = "rock"
@@ -228,6 +229,14 @@ var/global/list/rockTurfEdgeCache = list(
hidden = 1
scan_state = "rock_Silver"
/turf/simulated/mineral/titanium
name = "titanium deposit"
mineralType = /obj/item/weapon/ore/titanium
spreadChance = 5
spread = 1
hidden = 1
scan_state = "rock_Titanium"
/turf/simulated/mineral/plasma
name = "plasma deposit"
icon_state = "rock_Plasma"
+2 -1
View File
@@ -37,7 +37,8 @@
speak_emote = list("states")
wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver,
/obj/item/weapon/ore/plasma, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/iron,
/obj/item/weapon/ore/bananium, /obj/item/weapon/ore/tranquillite, /obj/item/weapon/ore/glass)
/obj/item/weapon/ore/bananium, /obj/item/weapon/ore/tranquillite, /obj/item/weapon/ore/glass,
/obj/item/weapon/ore/titanium)
healable = 0
var/mode = MINEDRONE_COLLECT
var/light_on = 0
+7
View File
@@ -142,6 +142,13 @@
refined_type = /obj/item/stack/sheet/mineral/tranquillite
materials = list(MAT_TRANQUILLITE=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/titanium
name = "titanium ore"
icon_state = "Titanium ore"
points = 50
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/titanium
/obj/item/weapon/ore/slag
name = "slag"
desc = "Completely useless"
+5
View File
@@ -33,6 +33,7 @@
var/amt_iron = 0
var/amt_plasma = 0
var/amt_uranium = 0
var/amt_titanium = 0
var/amt_clown = 0
var/amt_mime = 0
var/amt_bluespace = 0
@@ -56,6 +57,8 @@
amt_clown++
if(istype(C,/obj/item/weapon/ore/tranquillite))
amt_mime++
if(istype(C, /obj/item/weapon/ore/titanium))
amt_titanium++
if(istype(C,/obj/item/weapon/ore/bluespace_crystal))
amt_bluespace++
@@ -74,6 +77,8 @@
dat += text("Plasma ore: [amt_plasma]<br>")
if(amt_uranium)
dat += text("Uranium ore: [amt_uranium]<br>")
if(amt_titanium)
dat += text("Titanium ore: [amt_titanium]<br>")
if(amt_clown)
dat += text("Bananium ore: [amt_clown]<br>")
if(amt_mime)
@@ -1800,7 +1800,10 @@
..()
/mob/living/carbon/human/canBeHandcuffed()
return 1
if(get_num_arms() >= 2)
return TRUE
else
return FALSE
/mob/living/carbon/human/InCritical()
return (health <= config.health_threshold_crit && stat == UNCONSCIOUS)
@@ -287,6 +287,7 @@
// Do species-specific reagent handling here
// Return 1 if it should do normal processing too
// Return the parent value if processing does not explicitly stop
// Return 0 if it shouldn't deplete and do its normal effect
// Other return values will cause weird badness
/datum/species/proc/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
@@ -744,6 +744,12 @@
if(speech_pref)
H.mind.speech_span = "wingdings"
/datum/species/grey/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
if(R.id == "sacid")
H.reagents.del_reagent(R.id)
return 0
return ..()
/datum/species/diona
name = "Diona"
name_plural = "Dionaea"
@@ -963,10 +969,10 @@
speech_chance = 20
male_scream_sound = 'sound/voice/DraskTalk2.ogg'
female_scream_sound = 'sound/voice/DraskTalk2.ogg'
male_cough_sounds = null //whale cough when
female_cough_sounds = null
male_sneeze_sound = null
female_sneeze_sound = null
male_cough_sounds = 'sound/voice/DraskCough.ogg'
female_cough_sounds = 'sound/voice/DraskCough.ogg'
male_sneeze_sound = 'sound/voice/DraskSneeze.ogg'
female_sneeze_sound = 'sound/voice/DraskSneeze.ogg'
burn_mod = 2
//exotic_blood = "cryoxadone"
@@ -490,6 +490,10 @@ Difficulty: Hard
icon_state = "hierophant_telegraph_teleport"
duration = 9
/obj/effect/temp_visual/hierophant/telegraph/edge
icon_state = "hierophant_telegraph_edge"
duration = 40
/obj/effect/temp_visual/hierophant/blast
icon = 'icons/effects/effects.dmi'
icon_state = "hierophant_blast"
@@ -108,18 +108,6 @@
health = Clamp(health, 0, maxHealth)
med_hud_set_status()
/mob/living/simple_animal/handle_hud_icons_health()
..()
if(healths && maxHealth > 0)
switch(health / maxHealth * 30)
if(30 to INFINITY) healths.icon_state = "health0"
if(26 to 29) healths.icon_state = "health1"
if(21 to 25) healths.icon_state = "health2"
if(16 to 20) healths.icon_state = "health3"
if(11 to 15) healths.icon_state = "health4"
if(6 to 10) healths.icon_state = "health5"
if(1 to 5) healths.icon_state = "health6"
if(0) healths.icon_state = "health7"
/mob/living/simple_animal/proc/process_ai()
handle_automated_movement()
+7 -4
View File
@@ -17,26 +17,29 @@
//The byond version of these verbs wait for the next tick before acting.
// instant verbs however can run mid tick or even during the time between ticks.
#define DO_MOVE(this_dir) var/final_dir = turn(this_dir, -dir2angle(dir)); Move(get_step(mob, final_dir), final_dir);
/client/verb/moveup()
set name = ".moveup"
set instant = 1
Move(get_step(mob, NORTH), NORTH)
DO_MOVE(NORTH)
/client/verb/movedown()
set name = ".movedown"
set instant = 1
Move(get_step(mob, SOUTH), SOUTH)
DO_MOVE(SOUTH)
/client/verb/moveright()
set name = ".moveright"
set instant = 1
Move(get_step(mob, EAST), EAST)
DO_MOVE(EAST)
/client/verb/moveleft()
set name = ".moveleft"
set instant = 1
Move(get_step(mob, WEST), WEST)
DO_MOVE(WEST)
#undef DO_MOVE
/client/Northeast()
swap_hand()
@@ -982,6 +982,14 @@
icon_state = "skrell_hair_f"
gender = FEMALE
/datum/sprite_accessory/hair/skrell/skr_tentacleslong
name = "Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
/datum/sprite_accessory/hair/skrell/skr_tentaclesshort
name = "Short Skrell Tentacles"
icon_state = "skrell_hair_veryshort"
/datum/sprite_accessory/hair/skrell/skr_gold_m
name = "Gold plated Skrell Male Tentacles"
icon_state = "skrell_hair_m"
@@ -1008,6 +1016,117 @@
gender = FEMALE
secondary_theme = "cloth"
/datum/sprite_accessory/hair/skrell/skr_gclothtentacle_m
name = "Ombre Dye, Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_gclothtentacle_f
name = "Ombre Dye, Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_gclothtentacleslong
name = "Ombre Dye, Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_gclothtentaclesshort
name = "Ombre Dye, Short Skrell Tentacles"
icon_state = "skrell_hair_veryshort"
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_diablacktentacle_m
name = "Black headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "blackdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diablacktentacle_f
name = "Black headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "blackdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diablacktentacleslong
name = "Black headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "blackdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacle_m
name = "Gold headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "golddia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacle_f
name = "Gold headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "golddia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacleslong
name = "Gold headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "golddia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacle_m
name = "Silver headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "silvdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacle_f
name = "Silver headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "silvdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacleslong
name = "Silver headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "silvdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentacle_m
name = "Festive headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "fest"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentacle_f
name = "Festive headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "fest"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentacleslong
name = "Festive headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "fest"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentaclesshort
name = "Festive headress Short Skrell Tentacles"
icon_state = "skrell_hair_veryshort"
secondary_theme = "fest"
no_sec_colour = 1
//Tajaran styles
/datum/sprite_accessory/hair/tajara
species_allowed = list("Tajaran")
glasses_over = 1
@@ -1064,6 +1183,11 @@
icon_state = "hair_curly"
glasses_over = null
/datum/sprite_accessory/hair/tajara/taj_hair_bedhead
name = "Tajara bedhead"
icon_state = "hair_tbedhead"
glasses_over = null
/datum/sprite_accessory/hair/tajara/taj_hair_retro
name = "Tajaran Ladies' Retro"
icon_state = "hair_ladies_retro"
+1
View File
@@ -239,6 +239,7 @@
\[list\] - \[/list\] : A list.<br>
\[*\] : A dot used for lists.<br>
\[hr\] : Adds a horizontal rule.
\[time\] : Inserts the current station time in HH:MM:SS.<br>
</BODY></HTML>"}, "window=paper_help")
/obj/item/weapon/paper/Topic(href, href_list)
+129
View File
@@ -0,0 +1,129 @@
// Ported from TG
/obj/item/weapon/paperplane
name = "paper plane"
desc = "Paper, folded in the shape of a plane."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paperplane"
throw_range = 7
throw_speed = 1
throwforce = 0
w_class = WEIGHT_CLASS_TINY
burn_state = FLAMMABLE
burntime = 5
no_spin = TRUE
var/obj/item/weapon/paper/internal_paper
/obj/item/weapon/paperplane/New(loc, obj/item/weapon/paper/new_paper)
..()
pixel_y = rand(-8, 8)
pixel_x = rand(-9, 9)
if(new_paper)
internal_paper = new_paper
flags = new_paper.flags
color = new_paper.color
new_paper.forceMove(src)
else
internal_paper = new /obj/item/weapon/paper(src)
update_icon()
/obj/item/weapon/paperplane/Destroy()
QDEL_NULL(internal_paper)
return ..()
/obj/item/weapon/paperplane/suicide_act(mob/living/user)
user.Stun(10)
user.visible_message("<span class='suicide'>[user] jams [name] in \his nose. It looks like \he's trying to commit suicide!</span>")
user.EyeBlurry(6)
var/obj/item/organ/internal/eyes/E = user.get_int_organ(/obj/item/organ/internal/eyes)
if(E)
E.take_damage(8, 1)
sleep(10)
return BRUTELOSS
/obj/item/weapon/paperplane/update_icon()
overlays.Cut()
var/list/stamped = internal_paper.stamped
if(!stamped)
stamped = new
else if(stamped)
for(var/S in stamped)
var/obj/item/weapon/stamp = S
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi', "paperplane_[initial(stamp.icon_state)]")
overlays += stampoverlay
/obj/item/weapon/paperplane/attack_self(mob/user) // Unfold the paper plane
to_chat(user, "<span class='notice'>You unfold [src].</span>")
if(internal_paper)
internal_paper.forceMove(get_turf(src))
user.put_in_hands(internal_paper)
internal_paper = null
qdel(src)
/obj/item/weapon/paperplane/attackby(obj/item/P, mob/living/carbon/human/user, params)
..()
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
to_chat(user, "<span class='notice'>You should unfold [src] before changing it.</span>")
return
else if(istype(P, /obj/item/weapon/stamp)) //we don't randomize stamps on a paperplane
internal_paper.attackby(P, user) //spoofed attack to update internal paper.
update_icon()
else if(is_hot(P))
if(user.disabilities & CLUMSY && prob(10))
user.visible_message("<span class='warning'>[user] accidentally ignites themselves!</span>", \
"<span class='userdanger'>You miss [src] and accidentally light yourself on fire!</span>")
user.unEquip(P)
user.adjust_fire_stacks(1)
user.IgniteMob()
return
if(!in_range(user, src)) //to prevent issues as a result of telepathically lighting a paper
return
user.unEquip(src)
user.visible_message("<span class='danger'>[user] lights [src] on fire with [P]!</span>", "<span class='danger'>You lights [src] on fire!</span>")
fire_act()
add_fingerprint(user)
/obj/item/weapon/paperplane/throw_impact(atom/hit_atom)
if(..())
return
if(!ishuman(hit_atom))
return
var/mob/living/carbon/human/H = hit_atom
if(prob(2))
if(H.head && H.head.flags_cover & HEADCOVERSEYES)
return
if(H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES)
return
if(H.glasses && H.glasses.flags_cover & GLASSESCOVERSEYES)
return
visible_message("<span class='danger'>[src] hits [H] in the eye!</span>")
H.EyeBlurry(6)
H.Weaken(2)
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(E)
E.take_damage(8, 1)
H.emote("scream")
/obj/item/weapon/paper/AltClick(mob/user, obj/item/I)
var/mob/living/carbon/human/H = user
I = H.is_in_hands(/obj/item/weapon/paper)
if(I)
ProcFoldPlane(H, I)
else
..()
/obj/item/weapon/paper/proc/ProcFoldPlane(mob/living/carbon/user, obj/item/I)
if(istype(user))
if((!in_range(src, user)) || user.stat || user.restrained())
return
to_chat(user, "<span class='notice'>You fold [src] into the shape of a plane!</span>")
user.unEquip(src)
I = new /obj/item/weapon/paperplane(user, src)
user.put_in_hands(I)
else
to_chat(user, "<span class='notice'>You lack the dexterity to fold [src].</span>")
+4
View File
@@ -149,6 +149,8 @@
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 = 0
var/brightness_on = 2
light_color = LIGHT_COLOR_RED
/obj/item/weapon/pen/edagger/attack_self(mob/living/user)
if(on)
@@ -162,6 +164,7 @@
throwforce = initial(throwforce)
playsound(user, 'sound/weapons/saberoff.ogg', 5, 1)
to_chat(user, "<span class='warning'>[src] can now be concealed.</span>")
set_light(0)
else
on = 1
force = 18
@@ -173,6 +176,7 @@
throwforce = 35
playsound(user, 'sound/weapons/saberon.ogg', 5, 1)
to_chat(user, "<span class='warning'>[src] is now active.</span>")
set_light(brightness_on, 1)
update_icon()
/obj/item/weapon/pen/edagger/update_icon()
-2
View File
@@ -467,8 +467,6 @@ obj/structure/cable/proc/cableColor(var/colorC)
// Definitions
////////////////////////////////
#define MAXCOIL 30
var/global/list/datum/stack_recipe/cable_coil_recipes = list(
new /datum/stack_recipe/cable_restraints("cable restraints", /obj/item/weapon/restraints/handcuffs/cable, 15),
)
@@ -263,6 +263,22 @@
build_path = /obj/item/weapon/kitchen/utensil/fork
category = list("initial","Dinnerware")
/datum/design/spoon
name = "Spoon"
id = "spoon"
build_type = AUTOLATHE
materials = list(MAT_METAL = 80)
build_path = /obj/item/weapon/kitchen/utensil/spoon
category = list("initial","Dinnerware")
/datum/design/spork
name = "Spork"
id = "spork"
build_type = AUTOLATHE
materials = list(MAT_METAL = 80)
build_path = /obj/item/weapon/kitchen/utensil/spork
category = list("initial","Dinnerware")
/datum/design/tray
name = "Tray"
id = "tray"
@@ -186,7 +186,7 @@
id = "handdrill"
req_tech = list("materials" = 4, "engineering" = 6)
build_type = PROTOLATHE
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_GOLD = 1000)
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
build_path = /obj/item/weapon/screwdriver/power
category = list("Equipment")
@@ -197,7 +197,7 @@
req_tech = list("materials" = 4, "engineering" = 6, "magnets" = 6) // added one more requirment since the Jaws of Life are a bit OP
build_path = /obj/item/weapon/crowbar/power
build_type = PROTOLATHE
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_DIAMOND = 1000)
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
category = list("Equipment")
/datum/design/alienwrench
@@ -207,7 +207,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wrench/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwirecutters
@@ -217,7 +217,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wirecutters/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienscrewdriver
@@ -227,7 +227,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/screwdriver/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/aliencrowbar
@@ -237,7 +237,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/crowbar/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwelder
@@ -247,7 +247,7 @@
req_tech = list("engineering" = 5, "plasmatech" = 5, "abductor" = 4)
build_path = /obj/item/weapon/weldingtool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienmultitool
@@ -257,5 +257,5 @@
req_tech = list("engineering" = 5, "programming" = 5, "abductor" = 4)
build_path = /obj/item/device/multitool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
@@ -318,7 +318,7 @@
id = "gygax_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_armour
materials = list(MAT_METAL=25000,MAT_DIAMOND=10000)
materials = list(MAT_METAL=15000,MAT_DIAMOND=10000,MAT_TITANIUM=10000)
construction_time = 600
category = list("Gygax")
@@ -391,7 +391,7 @@
id = "durand_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_armor
materials = list(MAT_METAL=50000,MAT_URANIUM=30000)
materials = list(MAT_METAL=30000,MAT_URANIUM=25000,MAT_TITANIUM=20000)
construction_time = 600
category = list("Durand")
@@ -592,7 +592,7 @@
id = "phazon_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_armor
materials = list(MAT_METAL=45000,MAT_PLASMA=30000)
materials = list(MAT_METAL=25000,MAT_PLASMA=20000,MAT_TITANIUM=20000)
construction_time = 300
category = list("Phazon")
@@ -192,7 +192,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/scalpel/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/alienhemostat
@@ -202,7 +202,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/hemostat/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/alienretractor
@@ -212,7 +212,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/retractor/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/aliensaw
@@ -222,7 +222,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/circular_saw/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_GOLD = 1000, MAT_PLASMA = 1000)
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/aliendrill
@@ -232,7 +232,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/surgicaldrill/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_GOLD = 1000, MAT_PLASMA = 1000)
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/aliencautery
@@ -242,7 +242,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/cautery/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/////////////////////////////////////////
@@ -52,7 +52,7 @@
id = "bluespace_cell"
req_tech = list("powerstorage" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 800, MAT_GOLD = 300, MAT_SILVER = 300, MAT_GLASS = 160, MAT_DIAMOND = 160)
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_SILVER = 150, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/bluespace
category = list("Misc","Power")
@@ -203,7 +203,7 @@
id = "femto_mani"
req_tech = list("materials" = 7, "programming" = 5, "engineering" = 5, "bluespace" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 200, MAT_DIAMOND = 60)
materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30)
build_path = /obj/item/weapon/stock_parts/manipulator/femto
category = list("Stock Parts")
lathe_time_factor = 0.2
@@ -8,7 +8,7 @@
id = "nuclear_gun"
req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 4000)
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 3000, MAT_TITANIUM = 1000)
build_path = /obj/item/weapon/gun/energy/gun/nuclear
locked = 1
category = list("Weapons")
@@ -116,7 +116,7 @@
id = "tele_shield"
req_tech = list("combat" = 4, "materials" = 3, "engineering" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 4000, MAT_GLASS = 5000, MAT_SILVER = 300)
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
build_path = /obj/item/weapon/shield/riot/tele
category = list("Weapons")
@@ -242,7 +242,7 @@
id = "xray"
req_tech = list("combat" = 7, "magnets" = 5, "biotech" = 5, "powerstorage" = 4)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, MAT_METAL = 5000)
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 8000, MAT_METAL = 5000, MAT_TITANIUM = 2000)
build_path = /obj/item/weapon/gun/energy/xray
locked = 1
category = list("Weapons")
+1 -1
View File
@@ -42,7 +42,7 @@ Note: Must be placed west/left of and R&D console to function.
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker/large(null)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker/large(null)
materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1, MAT_TRANQUILLITE=1))
materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1, MAT_TRANQUILLITE=1, MAT_TITANIUM=1))
RefreshParts()
reagents.my_atom = src
+3
View File
@@ -98,6 +98,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
return_name = "Bananium"
if("mime")
return_name = "Tranquillite"
if("titanium")
return_name = "Titanium"
return return_name
else
for(var/R in subtypesof(/datum/reagent))
@@ -808,6 +810,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = linked_lathe.materials.amount(MAT_DIAMOND))
materials_list[++materials_list.len] = list("name" = "Bananium", "id" = MAT_BANANIUM, "amount" = linked_lathe.materials.amount(MAT_BANANIUM))
materials_list[++materials_list.len] = list("name" = "Tranquillite", "id" = MAT_TRANQUILLITE, "amount" = linked_lathe.materials.amount(MAT_TRANQUILLITE))
materials_list[++materials_list.len] = list("name" = "Titanium", "id" = MAT_TITANIUM, "amount" = linked_lathe.materials.amount(MAT_TITANIUM))
if(submenu == 3)
var/list/loaded_chemicals = list()
data["loaded_chemicals"] = loaded_chemicals
+1 -1
View File
@@ -297,7 +297,7 @@
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(_loc)
playsound(_loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
reqform.name = "Requisition Form - [crates] '[object.name]' for [orderedby]"
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
reqform.info += "<h3>[station_name()] Supply Requisition Form</h3><hr>"
reqform.info += "INDEX: #[shuttle_master.ordernum]<br>"
reqform.info += "REQUESTED BY: [orderedby]<br>"
reqform.info += "RANK: [orderedbyRank]<br>"
+1 -1
View File
@@ -140,7 +140,7 @@
state_next = list(
"key" = /obj/item/stack/sheet/metal,
"amount" = 5,
"vis_msg" = "{USER} frabricates a pressure bulkhead for the {HOLDER}.",
"vis_msg" = "{USER} fabricates a pressure bulkhead for the {HOLDER}.",
"self_msg" = "You frabricate a pressure bulkhead for the {HOLDER}."
)
),
+18 -9
View File
@@ -63,7 +63,7 @@
"pod_black" = "#3B8FE5", \
"pod_industrial" = "#CCCC00")
var/unlocked = 1
var/unlocked = TRUE
var/move_delay = 2
var/next_move = 0
@@ -378,12 +378,17 @@
"<span class='notice'>You start drilling through the [src]'s lock!</span>")
if(do_after(user, 100 * W.toolspeed, target = src))
QDEL_NULL(equipment_system.lock_system)
unlocked = TRUE
user.visible_message(user, "<span class='warning'>[user] has destroyed the [src]'s lock!</span>",
"<span class='notice'>You destroy the [src]'s lock!</span>")
else
user.visible_message(user, "<span class='warning'>[user] fails to break through the [src]'s lock!</span>",
"<span class='notice'>You were unable to break through the [src]'s lock!</span>")
return
if(L.on && unlocked == FALSE) //The buster is on, we don't have a lock system, and the pod is still somehow locked, unlocking.
unlocked = TRUE
user.visible_message(user, "<span class='notice'>[user] repairs [src]'s doors with [L].</span>",
"<span class='notice'>You repair [src]'s doors with [L].</span>")
to_chat(user, "<span class='notice'>Turn the [L] on first.</span>")
return
@@ -606,7 +611,7 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/device/spacepod_equipment
return
if(usr != src.pilot)
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair")
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair.</span>")
return
use_internal_tank = !use_internal_tank
to_chat(usr, "<span class='notice'>Now taking air from [use_internal_tank?"internal airtank":"environment"].</span>")
@@ -825,11 +830,15 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/device/spacepod_equipment
return
if(usr in passengers && usr != src.pilot)
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair")
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair.</span>")
return
unlocked = !unlocked
to_chat(usr, "<span class='warning'>You [unlocked ? "unlock" : "lock"] the doors.</span>")
if(!equipment_system.lock_system)
to_chat(usr, "<span class='warning'>[src] has no locking mechanism.</span>")
unlocked = TRUE //Should never be false without a lock, but if it somehow happens, that will force an unlock.
else
unlocked = !unlocked
to_chat(usr, "<span class='warning'>You [unlocked ? "unlock" : "lock"] the doors.</span>")
/obj/spacepod/verb/toggleDoors()
@@ -841,7 +850,7 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/device/spacepod_equipment
return
if(usr != src.pilot)
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair")
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair</span>")
return
for(var/obj/machinery/door/poddoor/multi_tile/P in orange(3,src))
@@ -876,7 +885,7 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/device/spacepod_equipment
return
if(usr != src.pilot)
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair")
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair.</span>")
return
if(!equipment_system.weapon_system)
to_chat(usr, "<span class='warning'>[src] has no weapons!</span>")
@@ -893,7 +902,7 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/device/spacepod_equipment
return
if(usr != src.pilot)
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair")
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair.</span>")
return
if(!equipment_system.cargo_system)
to_chat(usr, "<span class='warning'>[src] has no cargo system!</span>")
@@ -909,7 +918,7 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/device/spacepod_equipment
return
if(usr != src.pilot)
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair")
to_chat(usr, "<span class='notice'>You can't reach the controls from your chair.</span>")
return
lightsToggle()
+76
View File
@@ -44,3 +44,79 @@
for(var/obj/item/organ/external/O in bodyparts)
if(limb_name == O.limb_name)
return O
/mob/proc/has_left_hand()
return TRUE
/mob/living/carbon/human/has_left_hand()
if(has_organ("l_hand"))
return TRUE
return FALSE
/mob/proc/has_right_hand()
return TRUE
/mob/living/carbon/human/has_right_hand()
if(has_organ("r_hand"))
return TRUE
return FALSE
//Limb numbers
/mob/proc/get_num_arms()
return 2
/mob/living/carbon/human/get_num_arms()
. = 0
for(var/X in bodyparts)
var/obj/item/organ/external/affecting = X
if(affecting.body_part == ARM_RIGHT)
.++
if(affecting.body_part == ARM_LEFT)
.++
//sometimes we want to ignore that we don't have the required amount of arms.
/mob/proc/get_arm_ignore()
return FALSE
/mob/proc/get_num_legs()
return 2
/mob/living/carbon/human/get_num_legs()
. = 0
for(var/X in bodyparts)
var/obj/item/organ/external/affecting = X
if(affecting.body_part == LEG_RIGHT)
.++
if(affecting.body_part == LEG_LEFT)
.++
//sometimes we want to ignore that we don't have the required amount of legs.
/mob/proc/get_leg_ignore()
return FALSE
/mob/living/carbon/human/get_leg_ignore()
if(flying == 1)
return TRUE
var/obj/item/weapon/tank/jetpack/J
if(istype(back,/obj/item/weapon/tank/jetpack))
J = back
if(J.on == 1)
return TRUE
return FALSE
/mob/living/proc/get_missing_limbs()
return list()
/mob/living/carbon/human/get_missing_limbs()
var/list/full = list("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg")
for(var/zone in full)
if(has_organ(zone))
full -= zone
return full
+57 -29
View File
@@ -96,35 +96,6 @@
return ..()
/obj/item/organ/external/attackby(obj/item/weapon/W as obj, mob/user as mob)
switch(open)
if(0)
if(istype(W,/obj/item/weapon/scalpel))
spread_germs_to_organ(src, user, W)
user.visible_message("<span class='danger'><b>[user]</b> cuts [src] open with [W]!</span>")
open++
return
if(1)
if(istype(W,/obj/item/weapon/retractor))
spread_germs_to_organ(src, user, W)
user.visible_message("<span class='danger'><b>[user]</b> cracks [src] open like an egg with [W]!</span>")
open++
return
if(2)
if(istype(W,/obj/item/weapon/hemostat))
spread_germs_to_organ(src, user, W)
if(contents.len)
var/obj/item/removing = pick(contents)
var/obj/item/organ/internal/O = removing
if(istype(O))
spread_germs_to_organ(O, user, W) // This wouldn't be any cleaner than the actual surgery
user.put_in_hands(removing)
user.visible_message("<span class='danger'><b>[user]</b> extracts [removing] from [src] with [W]!</span>")
else
user.visible_message("<span class='danger'><b>[user]</b> fishes around fruitlessly in [src] with [W].</span>")
return
. = ..()
/obj/item/organ/external/update_health()
damage = min(max_damage, (brute_dam + burn_dam))
@@ -552,6 +523,63 @@ Note that amputating the affected organ does in fact remove the infection from t
qdel(src) // If you flashed away to ashes, YOU FLASHED AWAY TO ASHES
return null
/obj/item/organ/external/proc/disembowel(spillage_zone = "chest")
if(!owner)
return
var/mob/living/carbon/C = owner
if(!hasorgans(C))
return
var/organ_spilled = FALSE
var/turf/T = get_turf(C)
C.add_splatter_floor(T)
playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1)
for(var/X in C.internal_organs)
var/obj/item/organ/O = X
var/org_zone = check_zone(O.parent_organ)
if(org_zone == spillage_zone)
O.remove(C)
O.forceMove(T)
organ_spilled = TRUE
if(organ_spilled)
C.visible_message("<span class='danger'><B>[C]'s internal organs spill out onto the floor!</B></span>")
return TRUE
/obj/item/organ/external/chest/droplimb()
if(disembowel())
return TRUE
/obj/item/organ/external/groin/droplimb()
if(disembowel("groin"))
return TRUE
/obj/item/organ/external/attackby(obj/item/I, mob/user, params)
if(I.sharp)
add_fingerprint(user)
if(!contents.len)
to_chat(user, "<span class='warning'>There is nothing left inside [src]!</span>")
return
playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1)
user.visible_message("<span class='warning'>[user] begins to cut open [src].</span>",\
"<span class='notice'>You begin to cut open [src]...</span>")
if(do_after(user, 54, target = src))
drop_organs(user)
else
return ..()
//empties the bodypart from its organs and other things inside it
/obj/item/organ/external/proc/drop_organs(mob/user)
var/turf/T = get_turf(src)
if(status != ORGAN_ROBOT)
playsound(T, 'sound/effects/splat.ogg', 25, 1)
for(var/obj/item/I in src)
I.forceMove(T)
/****************************************************
HELPERS
****************************************************/
@@ -13,7 +13,6 @@
vital = 1
amputation_point = "spine"
gendered_icon = 1
cannot_amputate = 1
parent_organ = null
encased = "ribcage"
var/fat = FALSE
@@ -46,7 +45,6 @@
w_class = WEIGHT_CLASS_BULKY // if you know what I mean ;)
body_part = LOWER_TORSO
vital = 1
cannot_amputate = TRUE
parent_organ = "chest"
amputation_point = "lumbar"
gendered_icon = 1