12/21 modernizations from TG live (#103)
* sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes
This commit is contained in:
@@ -1,11 +1,5 @@
|
||||
//If you're looking for spawners like ash walker eggs, check ghost_role_spawners.dm
|
||||
|
||||
/obj/machinery/lavaland_controller
|
||||
name = "weather machine"
|
||||
desc = "Controls the weather... when it's on, at any rate. A sticky note on the side proclaims \"DISABLED IN FAVOR OF AN ACTUAL ATMOSPHERE\"."
|
||||
icon = 'icons/obj/machines/telecomms.dmi'
|
||||
icon_state = "processor_off"
|
||||
|
||||
/obj/structure/fans/tiny/invisible //For blocking air in ruin doorways
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
@@ -28,11 +22,12 @@
|
||||
name = "Golem Creation Disk"
|
||||
desc = "A gift from the Liberator."
|
||||
icon_state = "datadisk1"
|
||||
max_blueprints = 1
|
||||
|
||||
/obj/item/weapon/disk/design_disk/golem_shell/New()
|
||||
..()
|
||||
var/datum/design/golem_shell/G = new
|
||||
blueprint = G
|
||||
blueprints[1] = G
|
||||
|
||||
/datum/design/golem_shell
|
||||
name = "Golem Shell Construction"
|
||||
@@ -49,6 +44,8 @@
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "construct"
|
||||
desc = "The incomplete body of a golem. Add ten sheets of any mineral to finish."
|
||||
var/shell_type = /obj/effect/mob_spawn/human/golem
|
||||
var/has_owner = FALSE //if the resulting golem obeys someone
|
||||
|
||||
/obj/item/golem_shell/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
@@ -59,6 +56,15 @@
|
||||
if(istype(O, /obj/item/stack/sheet/metal))
|
||||
species = /datum/species/golem
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/glass))
|
||||
species = /datum/species/golem/glass
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/plasteel))
|
||||
species = /datum/species/golem/plasteel
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/sandstone))
|
||||
species = /datum/species/golem/sand
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/plasma))
|
||||
species = /datum/species/golem/plasma
|
||||
|
||||
@@ -74,13 +80,68 @@
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/uranium))
|
||||
species = /datum/species/golem/uranium
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/bananium))
|
||||
species = /datum/species/golem/bananium
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/titanium))
|
||||
species = /datum/species/golem/titanium
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/plastitanium))
|
||||
species = /datum/species/golem/plastitanium
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/abductor))
|
||||
species = /datum/species/golem/alloy
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/wood))
|
||||
species = /datum/species/golem/wood
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet/bluespace_crystal))
|
||||
species = /datum/species/golem/bluespace
|
||||
|
||||
if(species)
|
||||
if(O.use(10))
|
||||
user << "You finish up the golem shell with ten sheets of [O]."
|
||||
var/obj/effect/mob_spawn/human/golem/G = new(get_turf(src))
|
||||
var/obj/effect/mob_spawn/human/golem/G = new shell_type(get_turf(src))
|
||||
G.mob_species = species
|
||||
var/datum/species/golem/S = species
|
||||
G.name += " ([initial(S.id)])"
|
||||
if(has_owner)
|
||||
G.owner = user
|
||||
qdel(src)
|
||||
else
|
||||
user << "You need at least ten sheets to finish a golem."
|
||||
else
|
||||
user << "You can't build a golem out of this kind of material."
|
||||
user << "You can't build a golem out of this kind of material."
|
||||
|
||||
//made with xenobiology, the golem obeys its creator
|
||||
/obj/item/golem_shell/artificial
|
||||
name = "incomplete artificial golem shell"
|
||||
has_owner = TRUE
|
||||
|
||||
|
||||
///Syndicate Listening Post
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate
|
||||
r_hand = /obj/item/weapon/gun/ballistic/automatic/sniper_rifle
|
||||
name = "Syndicate Bioweapon Scientist"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
radio = /obj/item/device/radio/headset/syndicate/alt
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
pocket1 = /obj/item/weapon/gun/ballistic/automatic/pistol
|
||||
pocket2 = /obj/item/weapon/card/id/syndicate/anyone
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
icon = 'icons/obj/Cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
has_id = 1
|
||||
flavour_text = "<font size=3>You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunatley, your hated enemy, Nanotrasen, has begun mining in this sector. <b>Continue your research as best you can, and try to keep a low profile. Do not abandon the base without good cause.</b> The base is rigged with explosives should the worst happen, do not let the base fall into enemy hands!</b>"
|
||||
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate/comms
|
||||
name = "Syndicate Comms Agent"
|
||||
r_hand = /obj/item/weapon/melee/energy/sword/saber
|
||||
mask = /obj/item/clothing/mask/chameleon
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
flavour_text = "<font size=3>You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunatley, your hated enemy, Nanotrasen, has begun mining in this sector. <b>Monitor enemy activity as best you can, and try to keep a low profile. Do not abandon the base without good cause.</b> Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands!</b>"
|
||||
pocket2 = /obj/item/weapon/card/id/syndicate/anyone
|
||||
@@ -24,7 +24,7 @@
|
||||
if(H.stat)
|
||||
visible_message("<span class='warning'>Serrated tendrils eagerly pull [H] to [src], tearing the body apart as its blood seeps over the eggs.</span>")
|
||||
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
|
||||
if(istype(H,/mob/living/simple_animal/hostile/megafauna/dragon))
|
||||
if(ismegafauna(H))
|
||||
meat_counter += 20
|
||||
else
|
||||
meat_counter ++
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//The necropolis gate is used to call forth Legion from the Necropolis.
|
||||
/obj/structure/lavaland_door
|
||||
/obj/structure/necropolis_gate
|
||||
name = "necropolis gate"
|
||||
desc = "A tremendous and impossibly large gateway, bored into dense bedrock."
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
@@ -9,12 +9,13 @@
|
||||
opacity = 1
|
||||
bound_width = 96
|
||||
bound_height = 96
|
||||
burn_state = LAVA_PROOF
|
||||
pixel_x = -32
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
luminosity = 1
|
||||
var/boss = FALSE
|
||||
var/is_anyone_home = FALSE
|
||||
|
||||
/obj/structure/lavaland_door/attack_hand(mob/user)
|
||||
/obj/structure/necropolis_gate/attack_hand(mob/user)
|
||||
for(var/mob/living/simple_animal/hostile/megafauna/legion/L in mob_list)
|
||||
return
|
||||
if(is_anyone_home)
|
||||
@@ -51,10 +52,10 @@
|
||||
is_anyone_home = FALSE
|
||||
new/mob/living/simple_animal/hostile/megafauna/legion(get_step(src.loc, SOUTH))
|
||||
|
||||
/obj/structure/lavaland_door/singularity_pull()
|
||||
/obj/structure/necropolis_gate/singularity_pull()
|
||||
return 0
|
||||
|
||||
/obj/structure/lavaland_door/Destroy(force)
|
||||
/obj/structure/necropolis_gate/Destroy(force)
|
||||
if(force)
|
||||
. = ..()
|
||||
else
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
//These landmarks can be placed in rooms/ruins to set the baseturfs of every turf in the area. Easier than having potentially unlimited subtypes of every turf or having to manually edit the turfs in the map editor
|
||||
|
||||
/obj/effect/baseturf_helper
|
||||
name = "lava baseturf editor"
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "syndballoon"
|
||||
var/baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
|
||||
/obj/effect/baseturf_helper/initialize()
|
||||
..()
|
||||
var/area/thearea = get_area(src)
|
||||
for(var/turf/T in get_area_turfs(thearea, z))
|
||||
if(T.baseturf != T.type) //Don't break indestructible walls and the like
|
||||
T.baseturf = baseturf
|
||||
qdel(src)
|
||||
@@ -20,7 +20,7 @@
|
||||
user << "<span class='userdanger'>No... just one more try...</span>"
|
||||
user.gib()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user], pulls [src]'s lever with a glint in their eyes!</span>", "<span class='warning'>You feel a draining as you pull the lever, but you \
|
||||
user.visible_message("<span class='warning'>[user] pulls [src]'s lever with a glint in [user.p_their()] eyes!</span>", "<span class='warning'>You feel a draining as you pull the lever, but you \
|
||||
know it'll be worth it.</span>")
|
||||
icon_state = "slots2"
|
||||
playsound(src, 'sound/lavaland/cursed_slot_machine.ogg', 50, 0)
|
||||
@@ -79,7 +79,7 @@
|
||||
/obj/effect/gluttony/CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff.
|
||||
if(height==0)
|
||||
return 1
|
||||
if(istype(mover, /mob/living/carbon/human))
|
||||
if(ishuman(mover))
|
||||
var/mob/living/carbon/human/H = mover
|
||||
if(H.nutrition >= NUTRITION_LEVEL_FAT)
|
||||
H.visible_message("<span class='warning'>[H] pushes through [src]!</span>", "<span class='notice'>You've seen and eaten worse than this.</span>")
|
||||
@@ -97,7 +97,7 @@
|
||||
icon_state = "magic_mirror"
|
||||
|
||||
/obj/structure/mirror/magic/pride/curse(mob/user)
|
||||
user.visible_message("<span class='danger'><B>The ground splits beneath [user] as their hand leaves the mirror!</B></span>", \
|
||||
user.visible_message("<span class='danger'><B>The ground splits beneath [user] as [user.p_their()] hand leaves the mirror!</B></span>", \
|
||||
"<span class='notice'>Perfect. Much better! Now <i>nobody</i> will be able to resist yo-</span>")
|
||||
var/turf/T = get_turf(user)
|
||||
T.ChangeTurf(/turf/open/chasm/straight_down)
|
||||
@@ -114,7 +114,7 @@
|
||||
item_state = "render"
|
||||
force = 18
|
||||
throwforce = 10
|
||||
w_class = 3
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
/obj/item/weapon/kitchen/knife/envy/afterattack(atom/movable/AM, mob/living/carbon/human/user, proximity)
|
||||
@@ -123,7 +123,7 @@
|
||||
return
|
||||
if(!istype(user))
|
||||
return
|
||||
if(istype(AM, /mob/living/carbon/human))
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/human/H = AM
|
||||
if(user.real_name != H.dna.real_name)
|
||||
user.real_name = H.dna.real_name
|
||||
|
||||
Reference in New Issue
Block a user