Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into upstream-merge-27697
@@ -8,185 +8,81 @@
|
||||
},
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"c" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"d" = (
|
||||
/obj/structure/alien/resin/wall,
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"e" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"f" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"g" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"h" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"i" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/bed/nest,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"j" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"k" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"l" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"m" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/structure/bed/nest,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"n" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/bed/nest,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"o" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/bed/nest,
|
||||
@@ -198,43 +94,19 @@
|
||||
},
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"p" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"q" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"r" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -242,112 +114,48 @@
|
||||
/obj/structure/alien/resin/wall,
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"s" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/alien/egg,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"t" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"u" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"v" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"w" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"x" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"y" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"z" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -364,28 +172,12 @@
|
||||
/obj/item/weapon/melee/baton/loaded,
|
||||
/obj/item/clothing/head/helmet,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"A" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/egg,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"B" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -393,59 +185,27 @@
|
||||
/obj/structure/alien/egg/burst,
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"C" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/egg/burst,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"D" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"E" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"F" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/queen/large{
|
||||
@@ -455,15 +215,7 @@
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"G" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -472,28 +224,12 @@
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"H" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"I" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/bed/nest,
|
||||
@@ -507,56 +243,24 @@
|
||||
/obj/item/clothing/under/syndicate,
|
||||
/obj/item/clothing/glasses/night,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"J" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"K" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"L" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"M" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -573,15 +277,7 @@
|
||||
stat = 2
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"N" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/resin/wall,
|
||||
@@ -590,15 +286,7 @@
|
||||
"O" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/turf/template_noop,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"P" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
@@ -615,41 +303,17 @@
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"R" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/turf/template_noop,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"S" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"T" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/obj/structure/alien/resin/wall,
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#define WACKY "Wacky"
|
||||
#define MUT_MUTE "Mute"
|
||||
#define SMILE "Smile"
|
||||
#define STONER "Stoner"
|
||||
#define UNINTELLIGABLE "Unintelligable"
|
||||
#define SWEDISH "Swedish"
|
||||
#define CHAV "Chav"
|
||||
|
||||
@@ -124,3 +124,8 @@
|
||||
#define MAX_CHICKENS 50
|
||||
|
||||
#define UNHEALING_EAR_DAMAGE 100
|
||||
|
||||
|
||||
#define INCORPOREAL_MOVE_BASIC 1
|
||||
#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows
|
||||
#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt
|
||||
@@ -177,7 +177,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
to_chat(world, "<span class='boldannounce'>[msg]</span>")
|
||||
log_world(msg)
|
||||
|
||||
SetRunLevel(1)
|
||||
if (!current_runlevel)
|
||||
SetRunLevel(1)
|
||||
|
||||
// Sort subsystems by display setting for easy access.
|
||||
sortTim(subsystems, /proc/cmp_subsystem_display)
|
||||
|
||||
@@ -164,8 +164,8 @@ SUBSYSTEM_DEF(garbage)
|
||||
if (time > highest_del_time)
|
||||
highest_del_time = time
|
||||
if (time > 10)
|
||||
log_game("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete)")
|
||||
message_admins("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete).")
|
||||
log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)")
|
||||
message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).")
|
||||
postpone(time/5)
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/HardQueue(datum/A)
|
||||
|
||||
@@ -744,6 +744,15 @@ SUBSYSTEM_DEF(ticker)
|
||||
cinematic = SSticker.cinematic
|
||||
maprotatechecked = SSticker.maprotatechecked
|
||||
|
||||
switch (current_state)
|
||||
if(GAME_STATE_SETTING_UP)
|
||||
Master.SetRunLevel(RUNLEVEL_SETUP)
|
||||
if(GAME_STATE_PLAYING)
|
||||
Master.SetRunLevel(RUNLEVEL_GAME)
|
||||
if(GAME_STATE_FINISHED)
|
||||
Master.SetRunLevel(RUNLEVEL_POSTGAME)
|
||||
|
||||
|
||||
modevoted = SSticker.modevoted
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/send_news_report()
|
||||
@@ -844,7 +853,7 @@ SUBSYSTEM_DEF(ticker)
|
||||
if(delay_end)
|
||||
to_chat(world, "<span class='boldannounce'>An admin has delayed the round end.</span>")
|
||||
return
|
||||
|
||||
|
||||
to_chat(world, "<span class='boldannounce'>Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]</span>")
|
||||
|
||||
var/start_wait = world.time
|
||||
@@ -854,7 +863,7 @@ SUBSYSTEM_DEF(ticker)
|
||||
if(delay_end)
|
||||
to_chat(world, "<span class='boldannounce'>Reboot was cancelled by an admin.</span>")
|
||||
return
|
||||
|
||||
|
||||
SSblackbox.set_details("[feedback_c]","[feedback_r]")
|
||||
|
||||
log_game("<span class='boldannounce'>Rebooting World. [reason]</span>")
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
var/minetype = "lavaland"
|
||||
|
||||
var/list/transition_config = list(MAIN_STATION = CROSSLINKED,
|
||||
CENTCOMM = SELFLOOPING,
|
||||
var/list/transition_config = list(CENTCOMM = SELFLOOPING,
|
||||
MAIN_STATION = CROSSLINKED,
|
||||
EMPTY_AREA_1 = CROSSLINKED,
|
||||
EMPTY_AREA_2 = CROSSLINKED,
|
||||
MINING = SELFLOOPING,
|
||||
|
||||
@@ -608,6 +608,23 @@ GLOBAL_LIST_EMPTY(mutations_list)
|
||||
message = replacetext(message," muh valids "," getting my kicks ")
|
||||
return trim(message)
|
||||
|
||||
/datum/mutation/human/stoner
|
||||
name = "Stoner"
|
||||
quality = NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>You feel...totally chill, man!</span>"
|
||||
text_lose_indication = "<span class='notice'>You feel like you have a better sense of time.</span>"
|
||||
|
||||
/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner)
|
||||
..()
|
||||
owner.grant_language(/datum/language/beachbum)
|
||||
owner.remove_language(/datum/language/common)
|
||||
|
||||
/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner)
|
||||
..()
|
||||
owner.grant_language(/datum/language/common)
|
||||
owner.remove_language(/datum/language/beachbum)
|
||||
|
||||
/datum/mutation/human/laser_eyes
|
||||
name = "Laser Eyes"
|
||||
quality = POSITIVE
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
/datum/riding
|
||||
var/generic_pixel_x = 0 //All dirs show this pixel_x for the driver
|
||||
var/generic_pixel_y = 0 //All dirs show this pixel_y for the driver, use these vars if the pixel shift is stable across all dir, override handle_vehicle_offsets otherwise.
|
||||
var/next_vehicle_move = 0 //used for move delays
|
||||
var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower
|
||||
var/keytype = null
|
||||
@@ -34,16 +32,29 @@
|
||||
/datum/riding/proc/force_dismount(mob/living/M)
|
||||
ridden.unbuckle_mob(M)
|
||||
|
||||
//Override this to set your vehicle's various pixel offsets
|
||||
//if they differ between directions, otherwise use the
|
||||
//generic variables
|
||||
/datum/riding/proc/handle_vehicle_offsets()
|
||||
var/ridden_dir = "[ridden.dir]"
|
||||
var/passindex = 0
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
passindex++
|
||||
var/mob/living/buckled_mob = m
|
||||
buckled_mob.setDir(ridden.dir)
|
||||
buckled_mob.pixel_x = generic_pixel_x
|
||||
buckled_mob.pixel_y = generic_pixel_y
|
||||
var/list/offsets = get_offsets(passindex)
|
||||
dir_loop:
|
||||
for(var/offsetdir in offsets)
|
||||
if(offsetdir == ridden_dir)
|
||||
var/list/diroffsets = offsets[offsetdir]
|
||||
buckled_mob.pixel_x = diroffsets[1]
|
||||
if(diroffsets.len == 2)
|
||||
buckled_mob.pixel_y = diroffsets[2]
|
||||
if(diroffsets.len == 3)
|
||||
buckled_mob.layer = diroffsets[3]
|
||||
break dir_loop
|
||||
|
||||
|
||||
//Override this to set your vehicle's various pixel offsets
|
||||
/datum/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 0), "[SOUTH]" = list(0, 0), "[EAST]" = list(0, 0), "[WEST]" = list(0, 0))
|
||||
|
||||
//KEYS
|
||||
/datum/riding/proc/keycheck(mob/user)
|
||||
@@ -100,10 +111,12 @@
|
||||
//atv
|
||||
/datum/riding/atv
|
||||
keytype = /obj/item/key
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
vehicle_move_delay = 1
|
||||
|
||||
/datum/riding/atv/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
|
||||
|
||||
|
||||
/datum/riding/atv/handle_vehicle_layer()
|
||||
if(ridden.dir == SOUTH)
|
||||
ridden.layer = ABOVE_MOB_LAYER
|
||||
@@ -150,24 +163,9 @@
|
||||
keytype = /obj/item/key/janitor
|
||||
|
||||
|
||||
/datum/riding/janicart/handle_vehicle_offsets()
|
||||
..()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
switch(buckled_mob.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 4
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -12
|
||||
buckled_mob.pixel_y = 7
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 7
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 12
|
||||
buckled_mob.pixel_y = 7
|
||||
/datum/riding/janicart/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(-12, 7), "[EAST]" = list(0, 7), "[WEST]" = list( 12, 7))
|
||||
|
||||
//scooter
|
||||
/datum/riding/scooter/handle_vehicle_layer()
|
||||
if(ridden.dir == SOUTH)
|
||||
@@ -175,20 +173,14 @@
|
||||
else
|
||||
ridden.layer = OBJ_LAYER
|
||||
|
||||
/datum/riding/scooter/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0), "[SOUTH]" = list(-2), "[EAST]" = list(0), "[WEST]" = list( 2))
|
||||
|
||||
/datum/riding/scooter/handle_vehicle_offsets()
|
||||
..()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
switch(buckled_mob.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -2
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 2
|
||||
if(buckled_mob.get_num_legs() > 0)
|
||||
buckled_mob.pixel_y = 5
|
||||
else
|
||||
@@ -209,16 +201,18 @@
|
||||
//secway
|
||||
/datum/riding/secway
|
||||
keytype = /obj/item/key/security
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
|
||||
/datum/riding/secway/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
|
||||
|
||||
//i want to ride my
|
||||
/datum/riding/bicycle
|
||||
keytype = null
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
vehicle_move_delay = 0
|
||||
|
||||
/datum/riding/bicycle/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
|
||||
|
||||
//speedbike
|
||||
/datum/riding/space/speedbike
|
||||
keytype = null
|
||||
@@ -233,54 +227,28 @@
|
||||
ridden.pixel_x = -18
|
||||
ridden.pixel_y = 0
|
||||
|
||||
/datum/riding/space/speedbike/handle_vehicle_offsets()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
buckled_mob.setDir(ridden.dir)
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = -8
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 4
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -10
|
||||
buckled_mob.pixel_y = 5
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 10
|
||||
buckled_mob.pixel_y = 5
|
||||
/datum/riding/space/speedbike/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, -8), "[SOUTH]" = list(0, 4), "[EAST]" = list(-10, 5), "[WEST]" = list( 10, 5))
|
||||
|
||||
//SPEEDUWAGON
|
||||
|
||||
/datum/riding/space/speedwagon
|
||||
vehicle_move_delay = 0
|
||||
|
||||
/datum/riding/space/speedwagon/handle_vehicle_offsets()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
buckled_mob.setDir(ridden.dir)
|
||||
ridden.pixel_x = -48
|
||||
ridden.pixel_y = -48
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = -10
|
||||
buckled_mob.pixel_y = -3
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 16
|
||||
buckled_mob.pixel_y = 3
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -4
|
||||
buckled_mob.pixel_y = 30
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 4
|
||||
buckled_mob.pixel_y = -1
|
||||
|
||||
/datum/riding/space/speedwagon/handle_vehicle_layer()
|
||||
ridden.layer = BELOW_MOB_LAYER
|
||||
|
||||
/datum/riding/space/speedwagon/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
switch(pass_index)
|
||||
if(1)
|
||||
return list("[NORTH]" = list(-10, -4), "[SOUTH]" = list(16, 3), "[EAST]" = list(-4, 30), "[WEST]" = list(4, -3))
|
||||
if(2)
|
||||
return list("[NORTH]" = list(19, -5, 4), "[SOUTH]" = list(-13, 3, 4), "[EAST]" = list(-4, -3, 4.1), "[WEST]" = list(4, 28, 3.9))
|
||||
if(3)
|
||||
return list("[NORTH]" = list(-10, -18, 4.2), "[SOUTH]" = list(16, 25, 3.9), "[EAST]" = list(-22, 30), "[WEST]" = list(22, -3, 4.1))
|
||||
if(4)
|
||||
return list("[NORTH]" = list(19, -18, 4.2), "[SOUTH]" = list(-13, 25, 3.9), "[EAST]" = list(-22, 3, 3.9), "[WEST]" = list(22, 28))
|
||||
|
||||
///////////////BOATS////////////
|
||||
/datum/riding/boat
|
||||
keytype = /obj/item/weapon/oar
|
||||
@@ -297,17 +265,15 @@
|
||||
|
||||
/datum/riding/boat/dragon
|
||||
keytype = null
|
||||
generic_pixel_y = 2
|
||||
generic_pixel_x = 1
|
||||
vehicle_move_delay = 1
|
||||
|
||||
/datum/riding/boat/dragon/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(1, 2), "[SOUTH]" = list(1, 2), "[EAST]" = list(1, 2), "[WEST]" = list( 1, 2))
|
||||
|
||||
///////////////ANIMALS////////////
|
||||
//general animals
|
||||
/datum/riding/animal
|
||||
keytype = null
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
|
||||
/datum/riding/animal/handle_ride(mob/user, direction)
|
||||
if(user.incapacitated())
|
||||
@@ -335,7 +301,7 @@
|
||||
/datum/riding/human/ride_check(mob/living/M)
|
||||
var/mob/living/carbon/human/H = ridden //IF this runtimes I'm blaming the admins.
|
||||
if(M.incapacitated(FALSE, TRUE) || H.incapacitated(FALSE, TRUE))
|
||||
M.visible_message("<span class='warning'>[M] falls off [ridden]!</span>")
|
||||
M.visible_message("<span class='boldwarning'>[M] falls off of [ridden]!</span>")
|
||||
Unbuckle(M)
|
||||
return FALSE
|
||||
if(M.restrained(TRUE))
|
||||
@@ -345,22 +311,8 @@
|
||||
if(H.pulling == M)
|
||||
H.stop_pulling()
|
||||
|
||||
/datum/riding/human/handle_vehicle_offsets()
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
M.setDir(ridden.dir)
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 6
|
||||
if(SOUTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 6
|
||||
if(EAST)
|
||||
M.pixel_x = -6
|
||||
M.pixel_y = 4
|
||||
if(WEST)
|
||||
M.pixel_x = 6
|
||||
M.pixel_y = 4
|
||||
/datum/riding/human/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 6), "[SOUTH]" = list(0, 6), "[EAST]" = list(-6, 4), "[WEST]" = list( 6, 4))
|
||||
|
||||
/datum/riding/human/handle_vehicle_layer()
|
||||
if(ridden.buckled_mobs && ridden.buckled_mobs.len)
|
||||
@@ -375,7 +327,7 @@
|
||||
ridden.unbuckle_mob(user)
|
||||
user.Weaken(3)
|
||||
user.Stun(3)
|
||||
user.visible_message("<span class='warning'>[ridden] pushes [user] off of them!</span>")
|
||||
user.visible_message("<span class='boldwarning'>[ridden] pushes [user] off of them!</span>")
|
||||
|
||||
/datum/riding/cyborg
|
||||
keytype = null
|
||||
@@ -407,6 +359,9 @@
|
||||
else
|
||||
ridden.layer = MOB_LAYER
|
||||
|
||||
/datum/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(-6, 3), "[WEST]" = list( 6, 3))
|
||||
|
||||
/datum/riding/cyborg/handle_vehicle_offsets()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
@@ -417,26 +372,14 @@
|
||||
M.pixel_x = R.module.ride_offset_x[dir2text(ridden.dir)]
|
||||
M.pixel_y = R.module.ride_offset_y[dir2text(ridden.dir)]
|
||||
else
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 4
|
||||
if(SOUTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 4
|
||||
if(EAST)
|
||||
M.pixel_x = -6
|
||||
M.pixel_y = 3
|
||||
if(WEST)
|
||||
M.pixel_x = 6
|
||||
M.pixel_y = 3
|
||||
..()
|
||||
|
||||
/datum/riding/cyborg/force_dismount(mob/living/M)
|
||||
ridden.unbuckle_mob(M)
|
||||
var/turf/target = get_edge_target_turf(ridden, ridden.dir)
|
||||
var/turf/targetm = get_step(get_turf(ridden), ridden.dir)
|
||||
M.Move(targetm)
|
||||
M.visible_message("<span class='warning'>[M] is thrown clear of [ridden]!</span>")
|
||||
M.visible_message("<span class='boldwarning'>[M] is thrown clear of [ridden]!</span>")
|
||||
M.throw_at(target, 14, 5, ridden)
|
||||
M.Weaken(3)
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "away"
|
||||
has_gravity = 1
|
||||
hidden = TRUE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
|
||||
/area/ruin/unpowered
|
||||
@@ -199,3 +200,15 @@
|
||||
/area/ruin/abandonedzoo
|
||||
name = "Abandoned Zoo"
|
||||
icon_state = "green"
|
||||
|
||||
|
||||
//Xeno Nest
|
||||
|
||||
/area/ruin/xenonest
|
||||
name = "The Hive"
|
||||
always_unpowered = 1
|
||||
power_environ = 0
|
||||
power_equip = 0
|
||||
power_light = 0
|
||||
poweralm = 0
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
/datum/gang_item/weapon/ammo/uzi_ammo,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/spraycan,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/emp,
|
||||
/datum/gang_item/equipment/c4,
|
||||
/datum/gang_item/equipment/frag,
|
||||
@@ -91,7 +90,6 @@
|
||||
/datum/gang_item/weapon/ammo/uzi_ammo,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/spraycan,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/emp,
|
||||
/datum/gang_item/equipment/c4,
|
||||
/datum/gang_item/equipment/frag,
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/icon_stun = "revenant_stun"
|
||||
var/icon_drain = "revenant_draining"
|
||||
var/stasis = FALSE
|
||||
incorporeal_move = 3
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
health = INFINITY //Revenants don't use health, they use essence instead
|
||||
maxHealth = INFINITY
|
||||
@@ -102,7 +102,7 @@
|
||||
if(unreveal_time && world.time >= unreveal_time)
|
||||
unreveal_time = 0
|
||||
revealed = FALSE
|
||||
incorporeal_move = 3
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>")
|
||||
if(unstun_time && world.time >= unstun_time)
|
||||
@@ -222,7 +222,7 @@
|
||||
R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls
|
||||
R.client_to_revive = client //If the essence reforms, the old revenant is put back in the body
|
||||
R.revenant = src
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
revealed = FALSE
|
||||
ghostize(0)//Don't re-enter invisible corpse
|
||||
return
|
||||
@@ -236,7 +236,7 @@
|
||||
return
|
||||
revealed = TRUE
|
||||
invisibility = 0
|
||||
incorporeal_move = 0
|
||||
incorporeal_move = FALSE
|
||||
if(!unreveal_time)
|
||||
to_chat(src, "<span class='revendanger'>You have been revealed!</span>")
|
||||
unreveal_time = world.time + time
|
||||
@@ -309,12 +309,12 @@
|
||||
|
||||
/mob/living/simple_animal/revenant/proc/death_reset()
|
||||
revealed = FALSE
|
||||
unreveal_time = 0
|
||||
unreveal_time = 0
|
||||
notransform = 0
|
||||
unstun_time = 0
|
||||
inhibited = FALSE
|
||||
draining = FALSE
|
||||
incorporeal_move = 3
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
alpha=255
|
||||
stasis = FALSE
|
||||
|
||||
@@ -358,8 +358,12 @@
|
||||
/obj/machinery/clonepod/proc/go_out()
|
||||
countdown.stop()
|
||||
var/mob/living/mob_occupant = occupant
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
if(mess) //Clean that mess and dump those gibs!
|
||||
for(var/obj/fl in unattached_flesh)
|
||||
fl.forceMove(T)
|
||||
unattached_flesh.Cut()
|
||||
mess = FALSE
|
||||
new /obj/effect/gibspawner/generic(loc)
|
||||
audible_message("<span class='italics'>You hear a splat.</span>")
|
||||
@@ -375,10 +379,12 @@
|
||||
to_chat(occupant, "<span class='notice'><b>There is a bright flash!</b><br><i>You feel like a new being.</i></span>")
|
||||
mob_occupant.flash_act()
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
occupant.forceMove(T)
|
||||
icon_state = "pod_0"
|
||||
mob_occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest.
|
||||
for(var/fl in unattached_flesh)
|
||||
qdel(fl)
|
||||
unattached_flesh.Cut()
|
||||
|
||||
occupant = null
|
||||
|
||||
@@ -389,8 +395,7 @@
|
||||
SPEAK("Critical error! Please contact a Thinktronic Systems \
|
||||
technician, as your warranty may be affected.")
|
||||
mess = TRUE
|
||||
for(var/obj/item/O in unattached_flesh)
|
||||
qdel(O)
|
||||
maim_clone(mob_occupant) //Remove every bit that's grown back so far to drop later, also destroys bits that haven't grown yet
|
||||
icon_state = "pod_g"
|
||||
if(mob_occupant.mind != clonemind)
|
||||
clonemind.transfer_to(mob_occupant)
|
||||
@@ -450,9 +455,10 @@
|
||||
var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg")
|
||||
for(var/zone in zones)
|
||||
var/obj/item/bodypart/BP = H.get_bodypart(zone)
|
||||
BP.drop_limb()
|
||||
BP.forceMove(src)
|
||||
unattached_flesh += BP
|
||||
if(BP)
|
||||
BP.drop_limb()
|
||||
BP.forceMove(src)
|
||||
unattached_flesh += BP
|
||||
|
||||
for(var/o in H.internal_organs)
|
||||
var/obj/item/organ/organ = o
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
/obj/machinery/computer/communications/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if (src.z > ZLEVEL_CENTCOM) //Can only use on centcom and SS13
|
||||
if (z != ZLEVEL_STATION && z != ZLEVEL_CENTCOM) //Can only use on centcom and SS13
|
||||
to_chat(usr, "<span class='boldannounce'>Unable to establish a connection</span>: \black You're too far away from the station!")
|
||||
return
|
||||
usr.set_machine(src)
|
||||
|
||||
@@ -632,7 +632,14 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
L = get(src, /mob/living/silicon)
|
||||
|
||||
if(L && L.stat != UNCONSCIOUS)
|
||||
to_chat(L, "\icon[src] <b>Message from [source.owner] ([source.ownjob]), </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)")
|
||||
|
||||
var/hrefstart
|
||||
var/hrefend
|
||||
if (isAI(L))
|
||||
hrefstart = "<a href='?src=\ref[L];track=[html_encode(source.owner)]'>"
|
||||
hrefend = "</a>"
|
||||
|
||||
to_chat(L, "\icon[src.icon] <b>Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)")
|
||||
|
||||
update_icon()
|
||||
add_overlay(icon_alert)
|
||||
|
||||
@@ -548,7 +548,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/borg/projectile_dampen/attack_self(mob/user)
|
||||
if(cycle_delay < world.time)
|
||||
if(cycle_delay > world.time)
|
||||
to_chat(user, "<span class='boldwarning'>\the [src] is still recycling its projectors!</span>")
|
||||
return
|
||||
cycle_delay = world.time + PKBORG_DAMPEN_CYCLE_DELAY
|
||||
|
||||
@@ -83,6 +83,14 @@
|
||||
var/list/access = list()
|
||||
var/registered_name = null // The name registered_name on the card
|
||||
var/assignment = null
|
||||
var/access_txt // mapping aid
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/Initialize(mapload)
|
||||
. = ..()
|
||||
if(mapload && access_txt)
|
||||
access = text2access(access_txt)
|
||||
|
||||
/obj/item/weapon/card/id/attack_self(mob/user)
|
||||
user.visible_message("<span class='notice'>[user] shows you: \icon[src] [src.name].</span>", \
|
||||
|
||||
@@ -270,4 +270,4 @@
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/pie/selfcharge/process()
|
||||
if(++charge_tick >= charge_ticks)
|
||||
fill_with_type(/obj/item/weapon/reagent_containers/food/snacks/pie, charge_amount)
|
||||
fill_with_type(/obj/item/weapon/reagent_containers/food/snacks/pie/cream, charge_amount)
|
||||
|
||||
@@ -161,7 +161,16 @@
|
||||
anchored = 0
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/wood
|
||||
buildstackamount = 10
|
||||
var/mob/living/owner = null
|
||||
|
||||
/obj/structure/bed/dogbed/proc/update_owner(mob/living/M)
|
||||
owner = M
|
||||
name = "[M]'s bed"
|
||||
desc = "[M]'s bed! Looks comfy."
|
||||
|
||||
/obj/structure/bed/dogbed/buckle_mob(mob/living/M, force, check_loc)
|
||||
. = ..()
|
||||
update_owner(M)
|
||||
|
||||
/obj/structure/bed/alien
|
||||
name = "resting contraption"
|
||||
|
||||
@@ -377,6 +377,10 @@
|
||||
icon_state = "sleeper"
|
||||
flavour_text = "You are a beach bum!"
|
||||
|
||||
/obj/effect/mob_spawn/human/beach/equip(mob/living/carbon/human/H)
|
||||
..()
|
||||
H.dna.add_mutation(STONER)
|
||||
|
||||
/////////////////Officers+Nanotrasen Security//////////////////////
|
||||
|
||||
/obj/effect/mob_spawn/human/bridgeofficer
|
||||
|
||||
@@ -1582,7 +1582,7 @@
|
||||
name = "Contraband Crate"
|
||||
contraband = TRUE
|
||||
cost = 3000
|
||||
num_contained = 6
|
||||
num_contained = 5
|
||||
contains = list(/obj/item/weapon/poster/random_contraband,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori,
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
/obj/item/clothing/head/hunter
|
||||
name = "hunter hat"
|
||||
desc = "It's a flimsy looking hat."
|
||||
icon_state = "hunter"
|
||||
icon = 'icons/obj/clothing/cit_hats.dmi'
|
||||
@@ -280,3 +280,9 @@
|
||||
name = "magnificent crown"
|
||||
desc = "A crown worn by only the highest emperors of the land."
|
||||
icon_state = "fancycrown"
|
||||
|
||||
/obj/item/clothing/head/hunter
|
||||
name = "hunter hat"
|
||||
desc = "It's a flimsy looking hat."
|
||||
item_state = "hunter_hat"
|
||||
icon_state = "hunter_hat"
|
||||
|
||||
@@ -541,5 +541,5 @@
|
||||
name = "spooky ghost"
|
||||
desc = "this is obviously just a bedsheet, but maybe try it on?"
|
||||
icon_state = "bedsheet"
|
||||
user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = 1, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150)
|
||||
user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = INCORPOREAL_MOVE_BASIC, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150)
|
||||
alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire
|
||||
|
||||
@@ -136,26 +136,27 @@ GLOBAL_VAR_CONST(access_away_generic4, 208)
|
||||
/obj/item/proc/GetID()
|
||||
return null
|
||||
|
||||
/obj/proc/text2access(access_text)
|
||||
. = list()
|
||||
if(!access_text)
|
||||
return
|
||||
var/list/split = splittext(access_text,";")
|
||||
for(var/x in split)
|
||||
var/n = text2num(x)
|
||||
if(n)
|
||||
. += n
|
||||
|
||||
//Call this before using req_access or req_one_access directly
|
||||
/obj/proc/gen_access()
|
||||
//These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system.
|
||||
if(!src.req_access)
|
||||
src.req_access = list()
|
||||
if(src.req_access_txt)
|
||||
var/list/req_access_str = splittext(req_access_txt,";")
|
||||
for(var/x in req_access_str)
|
||||
var/n = text2num(x)
|
||||
if(n)
|
||||
req_access += n
|
||||
|
||||
if(!src.req_one_access)
|
||||
src.req_one_access = list()
|
||||
if(src.req_one_access_txt)
|
||||
var/list/req_one_access_str = splittext(req_one_access_txt,";")
|
||||
for(var/x in req_one_access_str)
|
||||
var/n = text2num(x)
|
||||
if(n)
|
||||
req_one_access += n
|
||||
if(!req_access)
|
||||
req_access = list()
|
||||
for(var/a in text2access(req_access_txt))
|
||||
req_access += a
|
||||
if(!req_one_access)
|
||||
req_one_access = list()
|
||||
for(var/b in text2access(req_one_access_txt))
|
||||
req_one_access += b
|
||||
|
||||
/obj/proc/check_access(obj/item/I)
|
||||
gen_access()
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
/datum/language/beachbum
|
||||
name = "Beach Bumbian"
|
||||
desc = "For when you're too toasted to speak normally."
|
||||
speech_verb = "mumbles"
|
||||
ask_verb = "grills"
|
||||
exclaim_verb = "hollers"
|
||||
key = "u"
|
||||
space_chance = 85
|
||||
default_priority = 90
|
||||
syllables = list("cowabunga", "rad", "radical", "dudes", "bogus", "weeed", "every",
|
||||
"dee", "dah", "woah", "surf", "blazed", "high", "heinous", "day",
|
||||
"brah", "bro", "blown", "catch", "body", "beach", "oooo", "twenty",
|
||||
"shiz", "phiz", "wizz", "pop", "chill", "awesome", "dude", "it",
|
||||
"wax", "stoked", "yes", "ding", "way", "no", "wicked", "aaaa",
|
||||
"cool", "hoo", "wah", "wee", "man", "maaaaaan", "mate", "wick",
|
||||
"oh", "ocean", "up", "out", "rip", "slide", "big", "stomp",
|
||||
"weed", "pot", "smoke", "four-twenty", "shove", "wacky", "hah",
|
||||
"sick", "slash", "spit", "stoked", "shallow", "gun", "party",
|
||||
"heavy", "stellar", "excellent", "triumphant", "babe", "four",
|
||||
"tail", "trim", "tube", "wobble", "roll", "gnarly", "epic")
|
||||
|
||||
icon_state = "beach"
|
||||
@@ -20,3 +20,16 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
update_hair()
|
||||
|
||||
/mob/living/carbon/human/set_drugginess(amount)
|
||||
..()
|
||||
if(!amount)
|
||||
remove_language(/datum/language/beachbum)
|
||||
|
||||
/mob/living/carbon/human/adjust_drugginess(amount)
|
||||
..()
|
||||
if(!dna.check_mutation(STONER))
|
||||
if(druggy)
|
||||
grant_language(/datum/language/beachbum)
|
||||
else
|
||||
remove_language(/datum/language/beachbum)
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out.
|
||||
|
||||
//Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects.
|
||||
var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas.
|
||||
var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas
|
||||
//and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt
|
||||
|
||||
var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them.
|
||||
|
||||
|
||||
@@ -833,8 +833,20 @@
|
||||
|
||||
/mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
raw_message = lang_treat(speaker, message_language, raw_message, spans, message_mode)
|
||||
var/name_used = speaker.GetVoice()
|
||||
var/rendered = "<i><span class='game say'>Relayed Speech: <span class='name'>[name_used]</span> <span class='message'>[raw_message]</span></span></i>"
|
||||
var/start = "Relayed Speech: "
|
||||
var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]"
|
||||
var/hrefpart = "<a href='?src=\ref[src];track=[html_encode(namepart)]'>"
|
||||
var/jobpart
|
||||
|
||||
if (iscarbon(speaker))
|
||||
var/mob/living/carbon/S = speaker
|
||||
if(S.job)
|
||||
jobpart = "[S.job]"
|
||||
else
|
||||
jobpart = "Unknown"
|
||||
|
||||
var/rendered = "<i><span class='game say'>[start]<span class='name'>[hrefpart][namepart] ([jobpart])</a> </span><span class='message'>[raw_message]</span></span></i>"
|
||||
|
||||
show_message(rendered, 2)
|
||||
|
||||
/mob/living/silicon/ai/fully_replace_character_name(oldname,newname)
|
||||
|
||||
@@ -44,6 +44,13 @@
|
||||
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/pug = 3)
|
||||
gold_core_spawnable = 2
|
||||
|
||||
/mob/living/simple_animal/pet/dog/Initialize()
|
||||
var/dog_area = get_area(src)
|
||||
for(var/obj/structure/bed/dogbed/D in dog_area)
|
||||
if(!D.owner)
|
||||
D.update_owner(src)
|
||||
break
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/Initialize()
|
||||
..()
|
||||
regenerate_icons()
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
environment_smash = initial(environment_smash)
|
||||
alpha = 255
|
||||
range = initial(range)
|
||||
incorporeal_move = 0
|
||||
incorporeal_move = FALSE
|
||||
to_chat(src, "<span class='danger'><B>You switch to combat mode.</span></B>")
|
||||
toggle = FALSE
|
||||
else
|
||||
@@ -48,7 +48,7 @@
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
alpha = 45
|
||||
range = 255
|
||||
incorporeal_move = 1
|
||||
incorporeal_move = INCORPOREAL_MOVE_BASIC
|
||||
to_chat(src, "<span class='danger'><B>You switch to scout mode.</span></B>")
|
||||
toggle = TRUE
|
||||
else
|
||||
|
||||
@@ -193,6 +193,7 @@ Difficulty: Medium
|
||||
return
|
||||
animate(src, transform = matrix()*0.7, time = 7)
|
||||
swooping |= SWOOP_INVULNERABLE
|
||||
mouse_opacity = 0
|
||||
sleep(7)
|
||||
var/list/flame_hit = list()
|
||||
while(swoop_duration > 0)
|
||||
@@ -233,6 +234,7 @@ Difficulty: Medium
|
||||
animate(src, transform = oldtransform, time = 5)
|
||||
sleep(5)
|
||||
swooping &= ~SWOOP_INVULNERABLE
|
||||
mouse_opacity = initial(mouse_opacity)
|
||||
icon_state = "dragon"
|
||||
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1)
|
||||
for(var/mob/living/L in orange(1, src))
|
||||
|
||||
@@ -948,7 +948,7 @@
|
||||
color = "#FFFFFF77"
|
||||
speak_chance = 20
|
||||
status_flags = GODMODE
|
||||
incorporeal_move = 1
|
||||
incorporeal_move = INCORPOREAL_MOVE_BASIC
|
||||
butcher_results = list(/obj/item/weapon/ectoplasm = 1)
|
||||
|
||||
/mob/living/simple_animal/parrot/Poly/ghost/Initialize()
|
||||
|
||||
@@ -209,10 +209,10 @@
|
||||
return
|
||||
var/mob/living/L = mob
|
||||
switch(L.incorporeal_move)
|
||||
if(1)
|
||||
if(INCORPOREAL_MOVE_BASIC)
|
||||
L.loc = get_step(L, direct)
|
||||
L.setDir(direct)
|
||||
if(2)
|
||||
if(INCORPOREAL_MOVE_SHADOW)
|
||||
if(prob(50))
|
||||
var/locx
|
||||
var/locy
|
||||
@@ -250,7 +250,7 @@
|
||||
new /obj/effect/temp_visual/dir_setting/ninja/shadow(mobloc, L.dir)
|
||||
L.loc = get_step(L, direct)
|
||||
L.setDir(direct)
|
||||
if(3) //Incorporeal move, but blocked by holy-watered tiles and salt piles.
|
||||
if(INCORPOREAL_MOVE_JAUNT) //Incorporeal move, but blocked by holy-watered tiles and salt piles.
|
||||
var/turf/open/floor/stepTurf = get_step(L, direct)
|
||||
for(var/obj/effect/decal/cleanable/salt/S in stepTurf)
|
||||
to_chat(L, "<span class='warning'>[S] bars your passage!</span>")
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/_has_battery = 0
|
||||
var/_has_ai = 0
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/New()
|
||||
/obj/machinery/modular_computer/console/preset/Initialize()
|
||||
. = ..()
|
||||
if(!cpu)
|
||||
return
|
||||
|
||||
@@ -27,15 +27,13 @@
|
||||
|
||||
var/obj/item/device/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things.
|
||||
|
||||
/obj/machinery/modular_computer/New()
|
||||
..()
|
||||
/obj/machinery/modular_computer/Initialize()
|
||||
. = ..()
|
||||
cpu = new(src)
|
||||
cpu.physical = src
|
||||
|
||||
/obj/machinery/modular_computer/Destroy()
|
||||
if(cpu)
|
||||
qdel(cpu)
|
||||
cpu = null
|
||||
QDEL_NULL(cpu)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/modular_computer/attack_ghost(mob/dead/observer/user)
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
max_integrity = 300
|
||||
integrity_failure = 150
|
||||
|
||||
/obj/machinery/modular_computer/console/buildable/New()
|
||||
..()
|
||||
/obj/machinery/modular_computer/console/buildable/Initialize()
|
||||
. = ..()
|
||||
// User-built consoles start as empty frames.
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/network_card = cpu.all_components[MC_NET]
|
||||
@@ -30,8 +30,8 @@
|
||||
qdel(network_card)
|
||||
qdel(hard_drive)
|
||||
|
||||
/obj/machinery/modular_computer/console/New()
|
||||
..()
|
||||
/obj/machinery/modular_computer/console/Initialize()
|
||||
. = ..()
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = cpu.all_components[MC_CELL]
|
||||
if(battery_module)
|
||||
qdel(battery_module)
|
||||
|
||||
@@ -66,9 +66,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
icon = 'icons/obj/power_cond/power_cond_white.dmi'
|
||||
|
||||
// the power cable object
|
||||
/obj/structure/cable/New()
|
||||
..()
|
||||
|
||||
/obj/structure/cable/Initialize()
|
||||
. = ..()
|
||||
|
||||
// ensure d1 & d2 reflect the icon_state for entering and exiting cable
|
||||
var/dash = findtext(icon_state, "-")
|
||||
@@ -529,7 +528,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
|
||||
return(OXYLOSS)
|
||||
|
||||
/obj/item/stack/cable_coil/New(loc, new_amount = null, var/param_color = null)
|
||||
..()
|
||||
. = ..()
|
||||
if(new_amount) // MAXCOIL by default
|
||||
amount = new_amount
|
||||
if(param_color)
|
||||
|
||||
@@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(rad_collectors)
|
||||
/obj/machinery/power/rad_collector/process()
|
||||
if(loaded_tank)
|
||||
if(!loaded_tank.air_contents.gases["plasma"])
|
||||
investigate_log("<font color='red'>out of fuel</font>.", INVESTIGATE_SINGULO)
|
||||
investigate_log("<font color='red'>out of fuel</font>.", INVESTIGATE_SINGULO)
|
||||
eject()
|
||||
else
|
||||
loaded_tank.air_contents.gases["plasma"][MOLES] -= 0.001*drainratio
|
||||
@@ -46,9 +46,11 @@ GLOBAL_LIST_EMPTY(rad_collectors)
|
||||
toggle_power()
|
||||
user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \
|
||||
"<span class='notice'>You turn the [src.name] [active? "on":"off"].</span>")
|
||||
var/fuel = loaded_tank.air_contents.gases["plasma"]
|
||||
var/fuel
|
||||
if(loaded_tank)
|
||||
fuel = loaded_tank.air_contents.gases["plasma"]
|
||||
fuel = fuel ? fuel[MOLES] : 0
|
||||
investigate_log("turned [active?"<font color='green'>on</font>":"<font color='red'>off</font>"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"<font color='red'>It is empty</font>"].", INVESTIGATE_SINGULO)
|
||||
investigate_log("turned [active?"<font color='green'>on</font>":"<font color='red'>off</font>"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"<font color='red'>It is empty</font>"].", INVESTIGATE_SINGULO)
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The controls are locked!</span>")
|
||||
@@ -73,28 +75,34 @@ GLOBAL_LIST_EMPTY(rad_collectors)
|
||||
/obj/machinery/power/rad_collector/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/device/multitool))
|
||||
to_chat(user, "<span class='notice'>The [W.name] detects that [last_power]W were recently produced.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
else if(istype(W, /obj/item/device/analyzer) && loaded_tank)
|
||||
atmosanalyzer_scan(loaded_tank.air_contents, user)
|
||||
else if(istype(W, /obj/item/weapon/tank/internals/plasma))
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='warning'>The [src] needs to be secured to the floor first!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
if(loaded_tank)
|
||||
to_chat(user, "<span class='warning'>There's already a plasma tank loaded!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
if(!user.drop_item())
|
||||
return 1
|
||||
return TRUE
|
||||
loaded_tank = W
|
||||
W.forceMove(src)
|
||||
update_icons()
|
||||
else if(istype(W, /obj/item/weapon/crowbar))
|
||||
if(loaded_tank && !locked)
|
||||
if(loaded_tank)
|
||||
if(locked)
|
||||
to_chat(user, "<span class='warning'>The controls are locked!</span>")
|
||||
return TRUE
|
||||
eject()
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There isn't a tank loaded!</span>")
|
||||
return TRUE
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
default_unfasten_wrench(user, W, 0)
|
||||
return 1
|
||||
return TRUE
|
||||
else if(W.GetID())
|
||||
if(allowed(user))
|
||||
if(active)
|
||||
@@ -104,7 +112,7 @@ GLOBAL_LIST_EMPTY(rad_collectors)
|
||||
to_chat(user, "<span class='warning'>The controls can only be locked when \the [src] is active!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='danger'>Access denied.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -141,11 +149,11 @@ GLOBAL_LIST_EMPTY(rad_collectors)
|
||||
/obj/machinery/power/rad_collector/proc/update_icons()
|
||||
cut_overlays()
|
||||
if(loaded_tank)
|
||||
add_overlay("ptank")
|
||||
add_overlay("ptank")
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if(active)
|
||||
add_overlay("on")
|
||||
add_overlay("on")
|
||||
|
||||
|
||||
/obj/machinery/power/rad_collector/proc/toggle_power()
|
||||
|
||||
@@ -295,14 +295,16 @@
|
||||
/obj/item/weapon/gun/attack(mob/M as mob, mob/user)
|
||||
if(user.a_intent == INTENT_HARM) //Flogging
|
||||
if(bayonet)
|
||||
bayonet.attack(M, user)
|
||||
M.attackby(bayonet, user)
|
||||
return
|
||||
return ..()
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/attack_obj(obj/O, mob/user)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
if(bayonet)
|
||||
bayonet.attack_obj(O, user)
|
||||
O.attackby(bayonet, user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -332,7 +334,7 @@
|
||||
if(!bayonet)
|
||||
if(!user.transferItemToLoc(I, src))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You attach \the [K] to the front of ]the [src].</span>")
|
||||
to_chat(user, "<span class='notice'>You attach \the [K] to the front of \the [src].</span>")
|
||||
bayonet = K
|
||||
update_icon()
|
||||
else if(istype(I, /obj/item/weapon/screwdriver))
|
||||
|
||||
@@ -294,10 +294,11 @@
|
||||
/obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special)
|
||||
//Transfer some head appearance vars over
|
||||
if(brain)
|
||||
brainmob.container = null //Reset brainmob head var.
|
||||
brainmob.loc = brain //Throw mob into brain.
|
||||
brain.brainmob = brainmob //Set the brain to use the brainmob
|
||||
brainmob = null //Set head brainmob var to null
|
||||
if(brainmob)
|
||||
brainmob.container = null //Reset brainmob head var.
|
||||
brainmob.loc = brain //Throw mob into brain.
|
||||
brain.brainmob = brainmob //Set the brain to use the brainmob
|
||||
brainmob = null //Set head brainmob var to null
|
||||
brain.Insert(C) //Now insert the brain proper
|
||||
brain = null //No more brain in the head
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
/datum/language/common,
|
||||
/datum/language/draconic,
|
||||
/datum/language/monkey,
|
||||
/datum/language/beachbum,
|
||||
/datum/language/narsie,
|
||||
))
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
diff a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm (rejected hunks)
|
||||
@@ -17,6 +17,7 @@
|
||||
/datum/language/codespeak,
|
||||
/datum/language/monkey,
|
||||
/datum/language/narsie,
|
||||
+ /datum/language/beachbum,
|
||||
/datum/language/ratvar
|
||||
))
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
icon_state = "speedwagon"
|
||||
layer = LYING_MOB_LAYER
|
||||
overlay_state = "speedwagon_cover"
|
||||
max_buckled_mobs = 4
|
||||
var/crash_all = FALSE //CHAOS
|
||||
pixel_y = -48 //to fix the offset when Initialized()
|
||||
pixel_x = -48
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "That Really Good Soda Flavor"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "People who are high and beach bums can now talk in their own stoner language."
|
||||
- tweak: "Beach bums can only communicate with other beach bums and people who are high."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "cacogen"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "You can now rename dog beds by buckling a new owner to them"
|
||||
- rscadd: "Dogs that spawn in an area with a vacant bed will take possession of and rename the bed"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "QualityVan"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Bayonets can now be used for butchery"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "cacogen"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds AI follow links to holopad speech and PDA messages. Note that PDA messages point to the owner of the PDA and not the PDA's actual location."
|
||||
- bugfix: "Fixes PDA icon not showing up beside received messages for AIs"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "QualityVan"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Cloning pods which are interrupted by a emagging will now produce a slightly lumpier smoothie"
|
||||
- bugfix: "Cloning pods that have stopped cloning early can no longer be broken open to extract leftover parts"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "QualityVan"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Crew monitoring consoles once again have minimaps while you're on the station level"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Swindly"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "fixed not being able to attach heads without brainmobs in them"
|
||||
|
Before Width: | Height: | Size: 917 KiB After Width: | Height: | Size: 917 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 492 KiB After Width: | Height: | Size: 492 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 390 B After Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
@@ -1194,7 +1194,6 @@
|
||||
#include "code\modules\clothing\gloves\miscellaneous.dm"
|
||||
#include "code\modules\clothing\gloves\vg_gloves.dm"
|
||||
#include "code\modules\clothing\head\beanie.dm"
|
||||
#include "code\modules\clothing\head\cit_hats.dm"
|
||||
#include "code\modules\clothing\head\collectable.dm"
|
||||
#include "code\modules\clothing\head\hardhat.dm"
|
||||
#include "code\modules\clothing\head\helmet.dm"
|
||||
@@ -1440,6 +1439,7 @@
|
||||
#include "code\modules\jobs\job_types\science.dm"
|
||||
#include "code\modules\jobs\job_types\security.dm"
|
||||
#include "code\modules\jobs\job_types\silicon.dm"
|
||||
#include "code\modules\language\beachbum.dm"
|
||||
#include "code\modules\language\common.dm"
|
||||
#include "code\modules\language\draconic.dm"
|
||||
#include "code\modules\language\drone.dm"
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
diff a/tgstation.dme b/tgstation.dme (rejected hunks)
|
||||
@@ -1390,6 +1390,7 @@
|
||||
#include "code\modules\jobs\job_types\security.dm"
|
||||
#include "code\modules\jobs\job_types\silicon.dm"
|
||||
#include "code\modules\jobs\map_changes\map_changes.dm"
|
||||
+#include "code\modules\language\beachbum.dm"
|
||||
#include "code\modules\language\codespeak.dm"
|
||||
#include "code\modules\language\common.dm"
|
||||
#include "code\modules\language\draconic.dm"
|
||||