Merge pull request #11630 from Markolie/whatareyousinkingabout

More Lavaland fixes
This commit is contained in:
Crazy Lemon
2019-06-01 12:55:57 -07:00
committed by GitHub
51 changed files with 218 additions and 115 deletions
+1
View File
@@ -43,6 +43,7 @@
#define ROLE_DRONE "drone"
#define ROLE_DEATHSQUAD "deathsquad"
#define ROLE_EVENTMISC "eventmisc"
#define ROLE_GHOST "ghost role"
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
+1
View File
@@ -25,6 +25,7 @@ var/global/list/other_roles = list(
ROLE_SENTIENT,
ROLE_NYMPH,
ROLE_ERT,
ROLE_GHOST,
"AntagHUD",
"Records"
)
@@ -175,136 +175,174 @@
/atom/proc/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisIntegrate(src)
return TRUE
/obj/item/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.Integrate(src)
return FALSE
/atom/movable/lighting_object/swarmer_act()
return FALSE
/obj/item/gun/swarmer_act()//Stops you from eating the entire armory
return
return FALSE
/turf/simulated/floor/swarmer_act()//ex_act() on turf calls it on its contents, this is to prevent attacking mobs by DisIntegrate()'ing the floor
return
return FALSE
/obj/machinery/atmospherics/swarmer_act()
return
return FALSE
/obj/structure/disposalpipe/swarmer_act()
return
return FALSE
/obj/machinery/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DismantleMachine(src)
return TRUE
/obj/machinery/light/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisIntegrate(src)
return TRUE
/obj/machinery/door/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisIntegrate(src)
return TRUE
/obj/machinery/camera/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisIntegrate(src)
toggle_cam(S, 0)
return TRUE
/obj/structure/particle_accelerator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Disrupting the power grid would bring no benefit to us. Aborting.</span>")
return FALSE
/obj/machinery/particle_accelerator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) // Since the console is still parented to this
to_chat(S, "<span class='warning'>Disrupting the power grid would bring no benefit to us. Aborting.</span>")
return FALSE
/obj/machinery/field/generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
if(!active)
S.DisIntegrate(src)
return
return TRUE
to_chat(S, "<span class='warning'>An inhospitable area may be created as a result of destroying this object. Aborting.</span>")
return FALSE
/obj/machinery/gravity_generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisIntegrate(src)
return TRUE
/obj/machinery/vending/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)//It's more visually interesting than dismantling the machine
S.DisIntegrate(src)
return TRUE
/obj/machinery/turretid/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisIntegrate(src)
return TRUE
/obj/machinery/chem_dispenser/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>The volatile chemicals in this machine would destroy us. Aborting.</span>")
return FALSE
/obj/machinery/nuclearbomb/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This device's destruction would result in the extermination of everything in the area. Aborting.</span>")
return FALSE
/obj/effect/rune/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Searching... sensor malfunction! Target lost. Aborting.</span>")
return FALSE
/obj/structure/reagent_dispensers/fueltank/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Destroying this object would cause a chain reaction. Aborting.</span>")
return FALSE
/obj/structure/cable/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Disrupting the power grid would bring no benefit to us. Aborting.</span>")
return FALSE
/obj/machinery/portable_atmospherics/canister/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>An inhospitable area may be created as a result of destroying this object. Aborting.</span>")
return FALSE
/obj/machinery/telecomms/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.</span>")
return FALSE
/obj/machinery/message_server/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.</span>")
return FALSE
/obj/machinery/blackbox_recorder/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This machine has recorded large amounts of data on this structure and its inhabitants, it will be a useful resource to our masters in the future. Aborting. </span>")
return FALSE
/obj/machinery/power/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Disrupting the power grid would bring no benefit to us. Aborting.</span>")
return FALSE
/obj/machinery/gateway/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This bluespace source will be important to us later. Aborting.</span>")
return FALSE
/obj/machinery/cryopod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This cryogenic sleeper should be preserved, it will be a useful resource to our masters in the future. Aborting.</span>")
return FALSE
/obj/structure/cryofeed/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This cryogenic feed should be preserved, it will be a useful resource to our masters in the future. Aborting.</span>")
return FALSE
/obj/machinery/computer/cryopod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This cryopod control computer should be preserved, it contains useful items and information about the inhabitants. Aborting.</span>")
return FALSE
/turf/simulated/wall/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
for(var/turf/T in range(1, src))
if(istype(T, /turf/space) || istype(T.loc, /area/space) || istype(T, /turf/simulated/floor/plating/airless))
to_chat(S, "<span class='warning'>Destroying this object has the potential to cause a hull breach. Aborting.</span>")
return
..()
return FALSE
return ..()
/obj/structure/window/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
for(var/turf/T in range(1, src))
if(istype(T, /turf/space) || istype(T.loc, /area/space))
to_chat(S, "<span class='warning'>Destroying this object has the potential to cause a hull breach. Aborting.</span>")
return
..()
return FALSE
return ..()
/obj/item/stack/cable_coil/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)//Wiring would be too effective as a resource
to_chat(S, "<span class='warning'>This object does not contain enough materials to work with.</span>")
return FALSE
/obj/item/circuitboard/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This object does not contain enough materials to work with.</span>")
return FALSE
/obj/machinery/porta_turret/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Attempting to dismantle this machine would result in an immediate counterattack. Aborting.</span>")
return FALSE
/obj/spacepod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Destroying this vehicle would destroy us. Aborting.</span>")
return FALSE
/obj/machinery/clonepod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
if(occupant)
to_chat(S, "<span class='warning'>Destroying this machine while it is occupied would result in biological and sentient resources to be harmed. Aborting.</span>")
return
..()
return FALSE
return ..()
/mob/living/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisperseTarget(src)
return TRUE
/mob/living/carbon/slime/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>This biological resource is somehow resisting our bluespace transceiver. Aborting.</span>")
return FALSE
/obj/structure/lattice/catwalk/swarmer_catwalk/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>We have created these for our own benefit. Aborting.</span>")
return FALSE
////END CTRL CLICK FOR SWARMERS////
+6 -1
View File
@@ -284,6 +284,7 @@
var/turf/simulated/wall/mineral/plastitanium/explosive/E = wall
if(E.explosive_wall_group == explosive_wall_group)
E.self_destruct()
sleep(5)
///Bomb Cores///
@@ -301,6 +302,7 @@
var/range_medium = 9
var/range_light = 17
var/range_flame = 17
var/admin_log = TRUE
/obj/item/bombcore/ex_act(severity) //Little boom can chain a big boom
detonate()
@@ -314,7 +316,7 @@
if(adminlog)
message_admins(adminlog)
log_game(adminlog)
explosion(get_turf(src), range_heavy, range_medium, range_light, flame_range = range_flame)
explosion(get_turf(src), range_heavy, range_medium, range_light, flame_range = range_flame, adminlog = admin_log)
if(loc && istype(loc, /obj/machinery/syndicatebomb))
qdel(loc)
qdel(src)
@@ -405,6 +407,9 @@
range_light = 20
range_flame = 20
/obj/item/bombcore/large/explosive_wall
admin_log = FALSE
/obj/item/bombcore/large/underwall
layer = ABOVE_OPEN_TURF_LAYER
+30
View File
@@ -1053,6 +1053,36 @@
/obj/machinery/vending/cigarette/free
prices = list()
/obj/machinery/vending/cigarette/syndicate
products = list(/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 7,
/obj/item/storage/fancy/cigarettes/cigpack_uplift = 3,
/obj/item/storage/fancy/cigarettes/cigpack_robust = 2,
/obj/item/storage/fancy/cigarettes/cigpack_carp = 3,
/obj/item/storage/fancy/cigarettes/cigpack_midori = 1,
/obj/item/storage/box/matches = 10,
/obj/item/lighter/zippo = 4,
/obj/item/storage/fancy/rollingpapers = 5)
/obj/machinery/vending/cigarette/syndicate/free
prices = list()
/obj/machinery/vending/cigarette/beach //Used in the lavaland_biodome_beach.dmm ruin
name = "\improper ShadyCigs Ultra"
desc = "Now with extra premium products!"
product_ads = "Probably not bad for you!;Dope will get you through times of no money better than money will get you through times of no dope!;It's good for you!"
product_slogans = "Turn on, tune in, drop out!;Better living through chemistry!;Toke!;Don't forget to keep a smile on your lips and a song in your heart!"
products = list(/obj/item/storage/fancy/cigarettes = 5,
/obj/item/storage/fancy/cigarettes/cigpack_uplift = 3,
/obj/item/storage/fancy/cigarettes/cigpack_robust = 3,
/obj/item/storage/fancy/cigarettes/cigpack_carp = 3,
/obj/item/storage/fancy/cigarettes/cigpack_midori = 3,
/obj/item/storage/box/matches = 10,
/obj/item/lighter/random = 4,
/obj/item/storage/fancy/rollingpapers = 5)
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2,
/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1,
/obj/item/lighter/zippo = 3)
/obj/machinery/vending/cigarette/New()
..()
component_parts = list()
+1 -1
View File
@@ -1,6 +1,6 @@
//TODO: Flash range does nothing currently
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1, cause = null, breach = TRUE)
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0, silent = 0, smoke = 1, cause = null, breach = TRUE)
src = null //so we don't abort once src is deleted
epicenter = get_turf(epicenter)
@@ -136,7 +136,9 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \
/obj/item/clothing/suit/space/eva/plasmaman/miner,
/obj/item/clothing/head/helmet/space/eva/plasmaman/miner,
/obj/item/clothing/suit/hooded/explorer,
/obj/item/clothing/head/hooded/explorer
/obj/item/clothing/head/hooded/explorer,
/obj/item/clothing/suit/space/eva/plasmaman/explorer,
/obj/item/clothing/head/helmet/space/eva/plasmaman/explorer
))
/obj/item/stack/sheet/animalhide/goliath_hide/afterattack(atom/target, mob/user, proximity_flag)
+5 -1
View File
@@ -277,6 +277,7 @@
/turf/simulated/wall/mineral/plastitanium/explosive
var/explosive_wall_group = EXPLOSIVE_WALL_GROUP_SYNDICATE_BASE
smooth = SMOOTH_MORE
/turf/simulated/wall/mineral/plastitanium/explosive/Initialize(mapload)
. = ..()
@@ -287,9 +288,12 @@
return ..()
/turf/simulated/wall/mineral/plastitanium/explosive/proc/self_destruct()
var/obj/item/bombcore/large/bombcore = new(get_turf(src))
var/obj/item/bombcore/large/explosive_wall/bombcore = new(get_turf(src))
bombcore.detonate()
/turf/simulated/wall/mineral/plastitanium/explosive/ex_act(severity)
return
//have to copypaste this code
/turf/simulated/wall/mineral/plastitanium/interior/copyTurf(turf/T)
if(T.type != type)
+2 -2
View File
@@ -180,8 +180,8 @@
if(L)
qdel(L)
/turf/proc/TerraformTurf(path)
return ChangeTurf(path)
/turf/proc/TerraformTurf(path, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE)
return ChangeTurf(path, defer_change, keep_icon, ignore_air)
//Creates a new turf
/turf/proc/ChangeTurf(path, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE)
+1 -1
View File
@@ -28,7 +28,7 @@
var/datum/disease/disease = null //Do they start with a pre-spawned disease?
var/mob_color //Change the mob's color
var/assignedrole
var/banType = "lavaland"
var/banType = ROLE_GHOST
var/ghost_usable = TRUE
+3 -3
View File
@@ -258,8 +258,8 @@
item_state = "head_mirror"
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi',
"Drask" = 'icons/mob/species/drask/head.dmi',
"Grey" = 'icons/mob/species/grey/head.dmi'
"Vox" = 'icons/mob/species/vox/head.dmi',
"Drask" = 'icons/mob/species/drask/head.dmi',
"Grey" = 'icons/mob/species/grey/head.dmi'
)
+5 -1
View File
@@ -71,8 +71,12 @@
resistance_flags = FIRE_PROOF
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/mask.dmi',
"Unathi" = 'icons/mob/species/unathi/mask.dmi',
"Tajaran" = 'icons/mob/species/tajaran/mask.dmi',
"Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi',
"Drask" = 'icons/mob/species/drask/mask.dmi',
"Grey" = 'icons/mob/species/grey/mask.dmi',
"Grey" = 'icons/mob/species/grey/mask.dmi'
)
/obj/item/clothing/mask/gas/explorer/attack_self(mob/user)
@@ -235,6 +235,16 @@
base_state = "plasmamanMiner_helmet"
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
/obj/item/clothing/suit/space/eva/plasmaman/explorer
name = "plasmaman explorer suit"
icon_state = "plasmamanExplorer_suit"
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50)
/obj/item/clothing/head/helmet/space/eva/plasmaman/explorer
name = "plasmaman explorer helmet"
icon_state = "plasmamanExplorer_helmet0"
base_state = "plasmamanExplorer_helmet"
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50)
// MEDSCI
+1 -1
View File
@@ -49,7 +49,7 @@
if(prob(25))
category = null
var/c = category? " AND category='[sanitizeSQL(category)]'" :""
var/DBQuery/query_get_random_books = dbcon.NewQuery("SELECT * FROM [format_table_name("library")] WHERE isnull(flagged)[c] GROUP BY title ORDER BY rand() LIMIT [amount];")
var/DBQuery/query_get_random_books = dbcon.NewQuery("SELECT * FROM [format_table_name("library")] WHERE (isnull(flagged) OR flagged = 0)[c] GROUP BY title ORDER BY rand() LIMIT [amount];")
query_get_random_books.Execute()
while(query_get_random_books.NextRow())
var/obj/item/book/B = new(location)
+17 -2
View File
@@ -14,15 +14,30 @@
allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
resistance_flags = FIRE_PROOF
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/suit.dmi',
"Drask" = 'icons/mob/species/drask/suit.dmi',
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
"Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi'
)
/obj/item/clothing/head/hooded/explorer
name = "explorer hood"
desc = "An armoured hood for exploring harsh environments."
icon_state = "explorer"
item_state = "explorer"
body_parts_covered = HEAD
flags = BLOCKHAIR
flags = BLOCKHAIR | NODROP
flags_cover = HEADCOVERSEYES
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
resistance_flags = FIRE_PROOF
resistance_flags = FIRE_PROOF
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi',
"Drask" = 'icons/mob/species/drask/head.dmi',
"Grey" = 'icons/mob/species/grey/head.dmi',
"Skrell" = 'icons/mob/species/skrell/head.dmi'
)
+11
View File
@@ -26,6 +26,17 @@
if(prob(15))
harvest(null, TRUE)
/obj/structure/flora/ash/ex_act(severity, target)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(80))
qdel(src)
if(3)
if(prob(50))
qdel(src)
/obj/structure/flora/ash/proc/harvest(user, no_drop)
if(harvested)
return 0
@@ -198,7 +198,7 @@
user.visible_message("<span class='danger'>[user] turns \the [T] into [transform_string]!</span>")
message_admins("[key_name_admin(user)] fired the lava staff at [get_area(target)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>).")
log_game("[key_name(user)] fired the lava staff at [get_area(target)] ([T.x], [T.y], [T.z]).")
T.ChangeTurf(turf_type)
T.TerraformTurf(turf_type, keep_icon = FALSE)
timer = world.time + create_cooldown
qdel(L)
else
@@ -207,7 +207,7 @@
return
else
user.visible_message("<span class='danger'>[user] turns \the [T] into [reset_string]!</span>")
T.ChangeTurf(reset_turf_type)
T.TerraformTurf(reset_turf_type, keep_icon = FALSE)
timer = world.time + reset_cooldown
playsound(T,'sound/magic/fireball.ogg', 200, 1)
+1 -1
View File
@@ -441,7 +441,7 @@
/obj/machinery/sleeper/survival_pod
icon = 'icons/obj/lavaland/survival_pod.dmi'
icon_state = "sleeper-open"
density = 0
density = FALSE
/obj/machinery/sleeper/survival_pod/New()
..()
@@ -1711,8 +1711,8 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/IsAdvancedToolUser()
if(dna.species.has_fine_manipulation)
return 1
return 0
return TRUE
return FALSE
/mob/living/carbon/human/get_permeability_protection()
var/list/prot = list("hands"=0, "chest"=0, "groin"=0, "legs"=0, "feet"=0, "arms"=0, "head"=0)
@@ -130,8 +130,8 @@
suit=/obj/item/clothing/suit/space/eva/plasmaman/cargo
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/cargo
if("Shaft Miner")
suit=/obj/item/clothing/suit/space/eva/plasmaman/miner
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/miner
suit=/obj/item/clothing/suit/space/eva/plasmaman/explorer
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/explorer
if("Botanist")
suit=/obj/item/clothing/suit/space/eva/plasmaman/botanist
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/botanist
@@ -115,5 +115,7 @@
language = "Sinta'unathi"
default_language = "Sinta'unathi"
has_fine_manipulation = FALSE
slowdown = -0.80
species_traits = list(NO_BREATHE, NOGUNS)
species_traits = list(NO_BREATHE, NOGUNS)
@@ -130,7 +130,7 @@ Difficulty: Medium
playsound(T,'sound/magic/fireball.ogg', 200, 1)
new /obj/effect/temp_visual/fireball(T)
sleep(12)
explosion(T, 0, 0, 1, 0, 0, 0, 1)
explosion(T, 0, 0, 1, 0, 0, 0, 1, 1)
/mob/living/simple_animal/hostile/megafauna/dragon/OpenFire()
anger_modifier = Clamp(((maxHealth - health)/50),0,20)
@@ -140,7 +140,7 @@
move_resist = MOVE_FORCE_VERY_STRONG
pull_force = MOVE_FORCE_VERY_STRONG
var/pre_attack = 0
loot = list(/obj/item/asteroid/goliath_hide{layer = 4.1})
loot = list(/obj/item/stack/sheet/animalhide/goliath_hide{layer = ABOVE_MOB_LAYER})
/mob/living/simple_animal/hostile/asteroid/goliath/Life()
..()
@@ -223,46 +223,3 @@
else
spawn(50)
qdel(src)
/obj/item/asteroid/goliath_hide
name = "goliath hide plates"
desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna."
icon = 'icons/obj/items.dmi'
icon_state = "goliath_hide"
flags = NOBLUDGEON
w_class = WEIGHT_CLASS_NORMAL
layer = 4
/obj/item/asteroid/goliath_hide/afterattack(atom/target, mob/user, proximity_flag)
if(proximity_flag)
if(istype(target, /obj/item/clothing/suit/space/hardsuit/mining) || istype(target, /obj/item/clothing/head/helmet/space/hardsuit/mining) || istype(target, /obj/item/clothing/suit/space/eva/plasmaman/miner) || istype(target, /obj/item/clothing/head/helmet/space/eva/plasmaman/miner))
var/obj/item/clothing/C = target
var/current_armor = C.armor
if(current_armor["melee"] < 60)
current_armor["melee"] = min(current_armor["melee"] + 10, 60)
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
qdel(src)
else
to_chat(user, "<span class='info'>You can't improve [C] any further.</span>")
return
if(istype(target, /obj/mecha/working/ripley))
var/obj/mecha/D = target
if(D.icon_state != "ripley-open")
to_chat(user, "<span class='info'>You can't add armour onto the mech while someone is inside!</span>")
return
var/list/damage_absorption = D.damage_absorption
if(damage_absorption["brute"] > 0.3)
damage_absorption["brute"] = max(damage_absorption["brute"] - 0.1, 0.3)
damage_absorption["bullet"] = damage_absorption["bullet"] - 0.05
damage_absorption["fire"] = damage_absorption["fire"] - 0.05
damage_absorption["laser"] = damage_absorption["laser"] - 0.025
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
qdel(src)
D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-open")
D.desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates."
if(damage_absorption["brute"] == 0.3)
D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-full-open")
D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - the pilot must be an experienced monster hunter."
else
to_chat(user, "<span class='warning'>You can't improve [D] any further!</span>")
return
@@ -67,7 +67,8 @@
move_resist = MOVE_FORCE_NORMAL
density = FALSE
flavour_text = "<span class='big bold'>You are an ash walker.</span><b> Your tribe worships <span class='danger'>the Necropolis</span>. The wastes are sacred ground, its monsters a blessed bounty. \
You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest.</b>"
You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest. \
<br><i>You are free to attack miners and other outsiders. <font size=6>DO NOT</font> leave Lavaland without admin permission! <font size=6>DO NOT</font> attack the mining outpost without being provoked.</b></i>"
assignedrole = "Ash Walker"
/obj/effect/mob_spawn/human/ash_walker/special(mob/living/carbon/human/new_spawn)
@@ -28,12 +28,14 @@
death = FALSE
icon = 'icons/obj/cryogenic2.dmi'
icon_state = "sleeper_s"
flavour_text = "<span class='big bold'>You are a syndicate agent,</span><b> employed in a top secret research facility developing biological weapons. Unfortunately, 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. The base is rigged with explosives, <font size=6>DO NOT</font> abandon it or let it fall into enemy hands!</b>"
flavour_text = "<span class='big bold'>You are a syndicate agent,</span><b> employed in a top secret research facility developing biological weapons. Unfortunately, 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. The base is rigged with explosives, do not abandon it or let it fall into enemy hands!</b> \
<br><i>You are free to attack anyone not aligned with the Syndicate in the vicinity of your base. <font size=6>DO NOT</font> work against Syndicate personnel (such as traitors or nuclear operatives). You may work with or against non-Syndicate antagonists on a case-by-case basis. <font size=6>DO NOT</font> leave your base without admin permission.</i>"
outfit = /datum/outfit/lavaland_syndicate
assignedrole = "Lavaland Syndicate"
/obj/effect/mob_spawn/human/lavaland_syndicate/Destroy()
new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src))
var/obj/structure/fluff/empty_sleeper/syndicate/S = new /obj/structure/fluff/empty_sleeper/syndicate(get_turf(src))
S.setDir(dir)
return ..()
/datum/outfit/lavaland_syndicate
@@ -55,11 +57,13 @@
/obj/effect/mob_spawn/human/lavaland_syndicate/comms
name = "Syndicate Comms Agent sleeper"
mob_name = "Syndicate Comms Agent"
flavour_text = "<span class='big bold'>You are a syndicate agent,</span><b> employed in a top secret research facility developing biological weapons. Unfortunately, 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. <font size=6>DO NOT</font> abandon the base.</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>"
flavour_text = "<span class='big bold'>You are a syndicate agent,</span><b> employed in a top secret research facility developing biological weapons. Unfortunately, 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.</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> \
<br><i>You are free to attack anyone not aligned with the Syndicate in the vicinity of your base. <font size=6>DO NOT</font> work against Syndicate personnel (such as traitors or nuclear operatives). You may work with or against non-Syndicate antagonists on a case-by-case basis. <font size=6>DO NOT</font> leave your base without admin permission.</i>"
outfit = /datum/outfit/lavaland_syndicate/comms
/obj/effect/mob_spawn/human/lavaland_syndicate/comms/space
flavour_text = "<span class='big bold'>You are a syndicate agent,</span><b> assigned to a small listening post station situated near your hated enemy's top secret research facility: Space Station 13. <b>Monitor enemy activity as best you can, and try to keep a low profile. <font size=6>DO NOT</font> abandon the base.</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>"
flavour_text = "<span class='big bold'>You are a syndicate agent,</span><b> assigned to a small listening post station situated near your hated enemy's top secret research facility: Space Station 13. <b>Monitor enemy activity as best you can, and try to keep a low profile. Do not abandon the base.</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> \
<br><i>You are free to attack anyone not aligned with the Syndicate in the vicinity of your base. <font size=6>DO NOT</font> work against Syndicate personnel (such as traitors or nuclear operatives). You may work with or against non-Syndicate antagonists on a case-by-case basis. <font size=6>DO NOT</font> leave your base without admin permission.</i>"
/obj/effect/mob_spawn/human/lavaland_syndicate/comms/space/Initialize(mapload)
. = ..()
+8 -9
View File
@@ -80,19 +80,18 @@ var/list/GPS_list = list()
popup.open()
/obj/item/gps/Topic(href, href_list)
if(..(state = inventory_state))
if(..())
return 1
if(href_list["tag"] )
var/a = input("Please enter desired tag.", name, gpstag) as text|null
if(!a || ..(state = inventory_state))
return 1
var/tag = input("Please enter desired tag.", name, gpstag) as text|null
if(!tag || ..())
return TRUE
a = uppertext(sanitize(copytext(a, 1, 5)))
if(src.loc == usr)
gpstag = a
name = "global positioning system ([gpstag])"
attack_self(usr)
tag = uppertext(sanitize(copytext(tag, 1, 5)))
gpstag = tag
name = "global positioning system ([gpstag])"
attack_self(usr)
/obj/item/gps/science
icon_state = "gps-s"