diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm
index e96fdf4029b..8887fc5ce0a 100644
--- a/code/game/gamemodes/changeling/changeling_powers.dm
+++ b/code/game/gamemodes/changeling/changeling_powers.dm
@@ -83,7 +83,7 @@
src << "[T] is not compatible with our biology."
return
- if(NOCLONE in T.mutations)
+ if((NOCLONE || SKELETON) in T.mutations)
src << "This creature's DNA is ruined beyond useability!"
return
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index d5450da2507..339a1b8fa5e 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -39,6 +39,7 @@ var/global/datum/controller/gameticker/ticker
/datum/controller/gameticker/proc/pregame()
login_music = pick(\
+ 'sound/music/knights.ogg',\
'sound/music/space.ogg',\
'sound/music/traitor.ogg',\
'sound/music/space_oddity.ogg') //Ground Control to Major Tom, this song is cool, what's going on?
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 19f03028b2b..e647f53af8d 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -152,7 +152,7 @@
spawn (rand(waittime_l, waittime_h))
send_intercept()
-
+ set_security_level(3)
return ..()
diff --git a/code/game/gamemodes/xenos/xenos.dm b/code/game/gamemodes/xenos/xenos.dm
index 0dea8e90573..fb8f21f8b86 100644
--- a/code/game/gamemodes/xenos/xenos.dm
+++ b/code/game/gamemodes/xenos/xenos.dm
@@ -126,6 +126,13 @@
del(xeno_mind)
O.job = "Alien Cyborg"
O.name = "Alien Cyborg"
+ O.module = new /obj/item/weapon/robot_module/alien/hunter(src)
+ O.hands.icon_state = "standard"
+ O.icon = "icons/mob/alien.dmi"
+ O.icon_state = "xenoborg-state-a"
+ O.modtype = "Xeno-Hu"
+ feedback_inc("xeborg_hunter",1)
+
xenoborg_selected = 1
spawnpos++
diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm
index 11d32c93dee..94e2731ae74 100644
--- a/code/game/turfs/simulated.dm
+++ b/code/game/turfs/simulated.dm
@@ -30,12 +30,12 @@
if(M.lying) return
dirt++
var/obj/effect/decal/cleanable/dirt/dirtoverlay = locate(/obj/effect/decal/cleanable/dirt, src)
- if (dirt >= 30)
+ if (dirt >= 50)
if (!dirtoverlay)
dirtoverlay = new/obj/effect/decal/cleanable/dirt(src)
dirtoverlay.alpha = 15
- else if (dirt > 30)
- dirtoverlay.alpha = min(dirtoverlay.alpha+20, 255)
+ else if (dirt > 50)
+ dirtoverlay.alpha = min(dirtoverlay.alpha+5, 255)
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(istype(H.shoes, /obj/item/clothing/shoes/clown_shoes))
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index ca9a42bd6d0..3f7ef4fbb89 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -182,6 +182,7 @@
corpseid = 1
corpseidjob = "Clown"
corpseidaccess = "Clown"
+ timeofdeath = -50000
/obj/effect/landmark/corpse/clownking
name = "Clown King"
@@ -208,7 +209,7 @@
corpseid = 1
corpseidjob = "Mime"
corpseidaccess = "Mime"
-
+ timeofdeath = -50000
/obj/effect/landmark/corpse/scientist
name = "Scientist"
diff --git a/code/modules/clothing/spacesuits/ninja.dm b/code/modules/clothing/spacesuits/ninja.dm
index b94526eb1d3..fbe33dc81ea 100644
--- a/code/modules/clothing/spacesuits/ninja.dm
+++ b/code/modules/clothing/spacesuits/ninja.dm
@@ -13,7 +13,7 @@
desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins."
icon_state = "s-ninja"
item_state = "s-ninja_suit"
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/cell)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank,/obj/item/weapon/cell)
slowdown = 0
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.2
diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm
index 3278fbd7a8b..ce2023db5b1 100644
--- a/code/modules/mining/abandonedcrates.dm
+++ b/code/modules/mining/abandonedcrates.dm
@@ -24,77 +24,43 @@
if(2)
new/obj/item/weapon/pickaxe/drill(src)
new/obj/item/device/taperecorder(src)
- new/obj/item/clothing/suit/space/rig(src)
- new/obj/item/clothing/head/helmet/space/rig(src)
+ new/obj/item/clothing/suit/space(src)
+ new/obj/item/clothing/head/helmet/space(src)
if(3)
- for(var/i = 0, i < 12, i++)
- new/obj/item/weapon/coin/diamond(src)
- if(4)
- new/obj/item/clothing/shoes/clown_shoes(src)
- new/obj/item/clothing/under/rank/clown(src)
- new/obj/item/clothing/mask/gas/clown_hat(src)
- new/obj/item/weapon/bananapeel(src)
- if(5)
- for(var/i = 0, i < 6, i++)
- new/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake(src)
- new/obj/item/weapon/lighter/zippo(src)
- if(7)
- new/obj/item/weapon/reagent_containers/glass/beaker/bluespace(src)
- if(9)
- for(var/i = 0, i < 5, i++)
- new/obj/item/weapon/ore/diamond(src)
- if(10)
- for(var/i = 0, i < 5, i++)
- new/obj/item/weapon/ore/clown(src)
- if(11)
return
- if(12)
- new/obj/item/seeds/deathberryseed(src)
- new/obj/item/seeds/deathnettleseed(src)
- if(13)
- new/obj/machinery/hydroponics(src)
- if(14)
- new/obj/item/seeds/cashseed(src)
- if(15)
+ if(4)
+ new/obj/item/weapon/reagent_containers/glass/beaker/bluespace(src)
+ if(5 to 6)
+ for(var/i = 0, i < 10, i++)
+ new/obj/item/weapon/ore/diamond(src)
+ if(7)
+ return
+ if(8)
+ return
+ if(9)
+ for(var/i = 0, i < 3, i++)
+ new/obj/machinery/hydroponics(src)
+ if(10)
for(var/i = 0, i < 3, i++)
new/obj/item/weapon/reagent_containers/glass/beaker/noreact(src)
- new/obj/item/weapon/reagent_containers/hypospray(src)
- if(16)
- new /obj/item/weapon/storage/pill_bottle/random_meds(src)
- if(17)
- new/obj/item/mecha_parts/mecha_equipment/weapon/honker(src)
- new/obj/item/mecha_parts/chassis/honker(src)
- new/obj/item/mecha_parts/part/honker_torso(src)
- new/obj/item/mecha_parts/part/honker_head(src)
- new/obj/item/mecha_parts/part/honker_left_arm(src)
- if(18)
+ if(11 to 13)
+ new/obj/item/weapon/melee/classic_baton(src)
+ if(14)
return
- if(19)
- for(var/i = 0, i < 4, i++)
- new/obj/item/weapon/melee/classic_baton(src)
- if(20)
- new/obj/item/weapon/storage/lockbox/clusterbang(src)
- if(21)
- new/obj/item/weapon/aiModule/robocop(src)
- if(22)
+ if(15)
new/obj/item/clothing/under/chameleon(src)
for(var/i = 0, i < 7, i++)
new/obj/item/clothing/tie/horrible(src)
- if(23)
+ if(16)
new/obj/item/clothing/under/shorts(src)
new/obj/item/clothing/under/shorts/red(src)
new/obj/item/clothing/under/shorts/blue(src)
//Dummy crates start here.
- if(24 to 29)
- return
- if(8)
- return
- if(6)
+ if(17 to 29)
return
//Dummy crates end here.
if(30)
- for(var/i = 0, i < 4, i++)
- new/obj/item/weapon/melee/baton(src)
+ new/obj/item/weapon/melee/baton(src)
/obj/structure/closet/crate/secure/loot/attack_hand(mob/user as mob)
if(locked)
@@ -114,7 +80,7 @@
if (attempts == 0)
user << "The crate's anti-tamper system activates!"
var/turf/T = get_turf(src.loc)
- explosion(T, 0, 1, 2, 1)
+ explosion(T, 0, 0, 0, 1)
del(src)
return
else
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index fa9145df216..8455b559df9 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -495,7 +495,7 @@ commented out in r5061, I left it because of the shroom thingies
var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid)
N.fullUpdateMineralOverlays()
- var/crate = rand(1,30)
+ var/crate = rand(1,500)
switch(crate)
if(1)
visible_message("After digging, you find an old dusty crate buried within!")
diff --git a/code/modules/mining/unsim_mine_turfs.dm b/code/modules/mining/unsim_mine_turfs.dm
index b656adb4e4d..a35c1c1178d 100644
--- a/code/modules/mining/unsim_mine_turfs.dm
+++ b/code/modules/mining/unsim_mine_turfs.dm
@@ -487,7 +487,7 @@ commented out in r5061, I left it because of the shroom thingies
var/turf/unsimulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/unsimulated/floor/plating/airless/asteroid)
N.fullUpdateMineralOverlays()
- var/crate = rand(1,30)
+ var/crate = rand(1,500)
switch(crate)
if(1)
visible_message("After digging, you find an old dusty crate buried within!")
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 95930443dd1..114db828bd0 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -106,6 +106,9 @@
if(mind && mind.vampire && (mind in ticker.mode.vampires))
M << "\red Your fangs fail to pierce [src.name]'s cold flesh"
return 0
+ if(SKELETON in mutations)
+ M << "\red There is no blood in a skeleton!"
+ return 0
//we're good to suck the blood, blaah
M.handle_bloodsucking(src)
add_logs(src, M, "vampirebit")
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index f95feb868f0..e902b1abdd8 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -154,7 +154,7 @@
return
var/list/modules = list("Standard", "Engineering", "Medical", "Miner", "Janitor", "Service", "Security")
- if(security_level >= SEC_LEVEL_GAMMA)
+ if(security_level == (SEC_LEVEL_GAMMA || SEC_LEVEL_EPSILON))
src << "\red Crisis mode active. Combat module available."
modules+="Combat"
if(mmi != null && mmi.alien)
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index 656ae586074..ed98e54e6fe 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -190,7 +190,7 @@
s_click(hud)
return
if(M == assailant && state >= GRAB_AGGRESSIVE)
- if( (ishuman(user) && (FAT in user.mutations) && iscarbon(affecting) ) || ( isalien(user) && iscarbon(affecting) ) )
+ if( (ishuman(user) && (FAT in user.mutations) && iscarbon(affecting) ) || ( isalien(user) && iscarbon(affecting) ) || ( istype(user,/mob/living/carbon/human/kidan) && istype(affecting,/mob/living/carbon/monkey/diona) ) )
var/mob/living/carbon/attacker = user
user.visible_message("[user] is attempting to devour [affecting]!")
if(istype(user, /mob/living/carbon/alien/humanoid/hunter))
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index 4cf25471a02..e6be105f74b 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/sound/music/knights.ogg b/sound/music/knights.ogg
new file mode 100644
index 00000000000..e74e6a33521
Binary files /dev/null and b/sound/music/knights.ogg differ