Merge branch 'master' into upstream-merge-14148
@@ -1,5 +1,6 @@
|
||||
#define SMITE_SHADEKIN_ATTACK "Shadekin (Attack)"
|
||||
#define SMITE_SHADEKIN_NOMF "Shadekin (Devour)"
|
||||
#define SMITE_REDSPACE_ABDUCT "Redspace Abduction"
|
||||
#define SMITE_AD_SPAM "Ad Spam"
|
||||
#define SMITE_AUTOSAVE "10 Second Autosave"
|
||||
#define SMITE_AUTOSAVE_WIDE "10 Second Autosave (AoE)"
|
||||
|
||||
@@ -68,4 +68,4 @@
|
||||
|
||||
/obj/screen/popup/default/New()
|
||||
..()
|
||||
icon_state = "popup[rand(1,4)]"
|
||||
icon_state = "popup[rand(1,10)]"
|
||||
@@ -1,25 +1,19 @@
|
||||
/obj/item/device/multitool/hacktool
|
||||
var/is_hacking = 0
|
||||
var/max_known_targets
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
var/hackspeed = 1
|
||||
var/max_level = 4 //what's the max door security_level we can handle?
|
||||
var/full_override = FALSE //can we override door bolts too? defaults to false for event/safety reasons
|
||||
>>>>>>> c28095b90b... Merge pull request #14148 from KillianKirilenko/kk-hacktool
|
||||
|
||||
var/in_hack_mode = 0
|
||||
var/list/known_targets
|
||||
var/list/supported_types
|
||||
var/datum/tgui_state/default/must_hack/hack_state
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
/obj/item/device/multitool/hacktool/override
|
||||
hackspeed = 0.75
|
||||
max_level = 5
|
||||
full_override = TRUE
|
||||
>>>>>>> c28095b90b... Merge pull request #14148 from KillianKirilenko/kk-hacktool
|
||||
|
||||
/obj/item/device/multitool/hacktool/New()
|
||||
..()
|
||||
@@ -53,7 +47,23 @@
|
||||
return 0
|
||||
|
||||
// Note, if you ever want to expand supported_types, you must manually add the custom state argument to their tgui_interact
|
||||
A.tgui_interact(user, custom_state = hack_state)
|
||||
// DISABLED: too fancy, too high-effort // A.tgui_interact(user, custom_state = hack_state)
|
||||
// Just brute-force it
|
||||
if(istype(A, /obj/machinery/door/airlock))
|
||||
var/obj/machinery/door/airlock/D = A
|
||||
if(!D.arePowerSystemsOn())
|
||||
to_chat(user, "<span class='warning'>No response from remote, check door power.</span>")
|
||||
else if(D.locked == TRUE && full_override == FALSE)
|
||||
to_chat(user, "<span class='warning'>Unable to override door bolts!</span>")
|
||||
else if(D.locked == TRUE && full_override == TRUE && D.arePowerSystemsOn())
|
||||
to_chat(user, "<span class='notice'>Door bolts overridden.</span>")
|
||||
D.unlock()
|
||||
else if(D.density == TRUE && D.locked == FALSE)
|
||||
to_chat(user, "<span class='notice'>Overriding access. Door opening.</span>")
|
||||
D.open()
|
||||
else if(D.density == FALSE && D.locked == FALSE)
|
||||
to_chat(user, "<span class='notice'>Overriding access. Door closing.</span>")
|
||||
D.close()
|
||||
return 1
|
||||
|
||||
/obj/item/device/multitool/hacktool/proc/attempt_hack(var/mob/user, var/atom/target)
|
||||
@@ -75,14 +85,9 @@
|
||||
return 1
|
||||
to_chat(user, "<span class='notice'>You begin hacking \the [D]...</span>")
|
||||
is_hacking = 1
|
||||
<<<<<<< HEAD
|
||||
// On average hackin takes ~30 seconds. Fairly small random span to avoid people simply aborting and trying again
|
||||
var/hack_result = do_after(user, (20 SECONDS + rand(0, 10 SECONDS) + rand(0, 10 SECONDS)))
|
||||
=======
|
||||
// On average hackin takes ~15 seconds. Fairly small random span to avoid people simply aborting and trying again
|
||||
// Reduced hack duration to compensate for the reduced functionality, multiplied by door sec level
|
||||
var/hack_result = do_after(user, (((10 SECONDS + rand(0, 10 SECONDS) + rand(0, 10 SECONDS))*hackspeed)*D.security_level))
|
||||
>>>>>>> c28095b90b... Merge pull request #14148 from KillianKirilenko/kk-hacktool
|
||||
is_hacking = 0
|
||||
|
||||
if(hack_result && in_hack_mode)
|
||||
|
||||
@@ -60,3 +60,8 @@
|
||||
name = "\improper Prepackaged Meal Tray"
|
||||
icon = 'icons/obj/trash_vr.dmi'
|
||||
icon_state = "altevian_pack_cheese-trash"
|
||||
|
||||
/obj/item/trash/ratpackturkey
|
||||
name = "\improper Prepackaged Meal Tray"
|
||||
icon = 'icons/obj/trash_vr.dmi'
|
||||
icon_state = "altevian_pack_turkey-trash"
|
||||
@@ -8,7 +8,7 @@
|
||||
if(!istype(target))
|
||||
return
|
||||
|
||||
var/list/smite_types = list(SMITE_SHADEKIN_ATTACK,SMITE_SHADEKIN_NOMF,SMITE_REDSPACE_ABDUCT,SMITE_AUTOSAVE,SMITE_AUTOSAVE_WIDE)
|
||||
var/list/smite_types = list(SMITE_SHADEKIN_ATTACK,SMITE_SHADEKIN_NOMF,SMITE_AD_SPAM,SMITE_REDSPACE_ABDUCT,SMITE_AUTOSAVE,SMITE_AUTOSAVE_WIDE)
|
||||
|
||||
var/smite_choice = tgui_input_list(usr, "Select the type of SMITE for [target]","SMITE Type Choice", smite_types)
|
||||
if(!smite_choice)
|
||||
@@ -128,6 +128,10 @@
|
||||
if(SMITE_AUTOSAVE_WIDE)
|
||||
fake_autosave(target, src, TRUE)
|
||||
|
||||
if(SMITE_AD_SPAM)
|
||||
if(target.client)
|
||||
create_fake_ad_popup_multiple(/obj/screen/popup/default, 15)
|
||||
|
||||
else
|
||||
return //Injection? Don't print any messages.
|
||||
|
||||
|
||||
@@ -122,6 +122,21 @@
|
||||
"red emblem" = /obj/item/clothing/accessory/altevian_badge/aquila/hydrogen)
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(badges))
|
||||
|
||||
/datum/gear/suit/altevian_officer_suit
|
||||
description = "A comfortable official suit for altevian command officers."
|
||||
display_name = "altevian officer's suit selection, site manager"
|
||||
whitelisted = SPECIES_ALTEVIAN
|
||||
allowed_roles = list("Site Manager")
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/suit/altevian_officer_suit/New()
|
||||
..()
|
||||
var/list/suits = list()
|
||||
for(var/ratsuit in typesof(/obj/item/clothing/suit/captunic/capjacket/altevian_admiral))
|
||||
var/obj/item/clothing/suit/captunic/capjacket/altevian_admiral/specific_ratsuit = ratsuit
|
||||
suits[initial(specific_ratsuit.name)] = specific_ratsuit
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(suits))
|
||||
|
||||
// Taur stuff
|
||||
/datum/gear/suit/taur/drake_cloak
|
||||
display_name = "drake cloak (Drake-taur)"
|
||||
|
||||
@@ -68,7 +68,8 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
name = strangername
|
||||
species = "[H.custom_species ? H.custom_species : H.species.name]"
|
||||
ooc_notes = H.ooc_notes
|
||||
flavor_text = H.flavor_texts["general"]
|
||||
if(LAZYLEN(H.flavor_texts))
|
||||
flavor_text = H.flavor_texts["general"]
|
||||
|
||||
if(isAI(C.mob))
|
||||
var/mob/living/silicon/ai/A = C.mob
|
||||
|
||||
@@ -147,3 +147,30 @@
|
||||
desc = "A high tech looking vest. It's made out of tough materials, and can protect fairly well against bullets. Wake the fuck up, Samurai."
|
||||
|
||||
icon_state = "cyberpunk_recolor"
|
||||
species_restricted = list(SPECIES_ALTEVIAN)
|
||||
|
||||
// Altevian admiralty stuff
|
||||
/obj/item/clothing/suit/captunic/capjacket/altevian_admiral // Subtype of capjacket because A) it makes sense and B) conviniently matching stats
|
||||
name = "altevian officer's suit"
|
||||
desc = "Formal attire worn by officers and bridge crew from the Altevian Hegemony. The material is made of high quality silk and provides maximum comfort and breathing room for those that are working double shifts all the time."
|
||||
icon_state = "altevian-admiral"
|
||||
|
||||
/obj/item/clothing/suit/captunic/capjacket/altevian_admiral/gray
|
||||
name = "gray altevian officer's suit"
|
||||
icon_state = "altevian-admiral-gray"
|
||||
|
||||
/obj/item/clothing/suit/captunic/capjacket/altevian_admiral/white
|
||||
name = "white altevian officer's suit"
|
||||
icon_state = "altevian-admiral-white"
|
||||
|
||||
/obj/item/clothing/suit/captunic/capjacket/altevian_admiral/dark
|
||||
name = "dark altevian officer's suit"
|
||||
icon_state = "altevian-admiral-dark"
|
||||
|
||||
/obj/item/clothing/suit/captunic/capjacket/altevian_admiral/olive
|
||||
name = "olive altevian officer's suit"
|
||||
icon_state = "altevian-admiral-olive"
|
||||
|
||||
/obj/item/clothing/suit/captunic/capjacket/altevian_admiral/yellow
|
||||
name = "yellow altevian officer's suit"
|
||||
icon_state = "altevian-admiral-yellow"
|
||||
@@ -3556,11 +3556,13 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratliquid = 15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratfruitcake = 15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackburger = 8,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackcheese = 8)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackcheese = 8,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackturkey = 2)
|
||||
|
||||
prices = list(/obj/item/weapon/reagent_containers/food/snacks/ratprotein = 8,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratveggies = 8,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratliquid = 8,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratfruitcake = 8,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackburger = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackcheese = 10)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackcheese = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackturkey = 200)
|
||||
|
||||
@@ -861,3 +861,15 @@
|
||||
trash = /obj/item/trash/ratpackcheese
|
||||
nutriment_amt = 2
|
||||
nutriment_desc = list("gourmand cheese" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ratpackturkey
|
||||
name = "Compact Holiday Special Bird"
|
||||
desc = "A great gift for holidays for assorted species. This contains a full freshly cooked turkey. Open and enjoy. Courtesy of altevian packaging"
|
||||
icon = 'icons/obj/food_vr.dmi'
|
||||
icon_state = "altevian_pack_turkey"
|
||||
package_open_state = "altevian_pack_turkey-open"
|
||||
package_opening_state = "altevian_pack_turkey-opening"
|
||||
package = TRUE
|
||||
trash = /obj/item/trash/ratpackturkey
|
||||
nutriment_amt = 18
|
||||
nutriment_desc = list("high-quality poultry" = 4)
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
generate_loot()
|
||||
|
||||
/* Vorestation edit - see abandonedcrates_vr.dm for virgo version. Keeping legacy proc in comments for reference.
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/proc/generate_loot()
|
||||
var/loot = rand(1, 100)
|
||||
switch(loot)
|
||||
@@ -143,6 +145,9 @@
|
||||
if(100)
|
||||
new/obj/item/device/personal_shield_generator/belt/mining/loaded(src)
|
||||
|
||||
vorestation edit end */
|
||||
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/togglelock(mob/user as mob)
|
||||
if(!locked)
|
||||
return
|
||||
|
||||
@@ -1,2 +1,173 @@
|
||||
/obj/structure/closet/crate/secure/loot
|
||||
tamper_proof = 2
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/proc/generate_loot()
|
||||
var/lootvalue = 0
|
||||
while(lootvalue <= 10) //if the initial generation gives you less than 10 points of stuff, add more stuff
|
||||
//pick a thing to add to the crate - the format is "list(filepath, value) = weight,"
|
||||
var/choice = list()
|
||||
choice = pickweight(list(
|
||||
list(pick(/obj/item/weapon/ore/diamond,
|
||||
/obj/item/weapon/ore/osmium,
|
||||
/obj/item/weapon/ore/hydrogen,
|
||||
/obj/item/weapon/ore/verdantium,
|
||||
/obj/item/weapon/ore/uranium), 1) = 10,
|
||||
list(pick(subtypesof(/obj/item/weapon/coin)), 2) = 10,
|
||||
list(/obj/item/weapon/spacecash/c500, 4) = 5,
|
||||
list(/obj/item/weapon/spacecash/c200, 2) = 10,
|
||||
list(/obj/item/weapon/spacecash/c100, 1) = 10,
|
||||
list(/obj/item/weapon/spacecash/c50, 1) = 10,
|
||||
list(/obj/item/weapon/spacecash/c20, 1) = 10,
|
||||
list(pick(subtypesof(/obj/item/weapon/reagent_containers/food/drinks/bottle/) - /obj/item/weapon/reagent_containers/food/drinks/bottle/small), 1) = 5,
|
||||
list(/obj/item/weapon/storage/backpack/dufflebag/cratebooze,5) = 5,
|
||||
list(/obj/item/weapon/storage/backpack/dufflebag/cratedrills, 5) = 5,
|
||||
list(/obj/item/weapon/reagent_containers/glass/beaker/bluespace, 3) = 5,
|
||||
list(/obj/item/weapon/reagent_containers/glass/beaker/noreact, 3) = 5,
|
||||
list(/obj/item/weapon/melee/baton, 5) = 4,
|
||||
list(pick(subtypesof(/obj/item/weapon/storage/mre)), 2) = 3,
|
||||
list(/obj/item/seeds/random, 2) = 3,
|
||||
list(/obj/item/clothing/under/chameleon, 5) = 3,
|
||||
list(/obj/item/weapon/melee/classic_baton, 6) = 3,
|
||||
list(/obj/item/weapon/rig/industrial, 6) = 3,
|
||||
list(/obj/item/device/multitool/hacktool, 5) = 3,
|
||||
list(/obj/item/toy/katana, 1) = 2,
|
||||
list(/obj/item/clothing/head/kitty, 1) = 2,
|
||||
list(pick(subtypesof(/obj/item/weapon/soap)), 1) = 2,
|
||||
list(/obj/item/clothing/under/shorts/red, 1) = 2,
|
||||
list(/obj/item/clothing/under/shorts/blue, 1) = 2,
|
||||
list(/obj/item/clothing/accessory/tie/horrible, 1) = 2,
|
||||
list(pick(subtypesof(/obj/item/weapon/stock_parts) - /obj/item/weapon/stock_parts/subspace), 2) = 3,
|
||||
list(/obj/item/latexballon, 2) = 2,
|
||||
list(/obj/item/toy/syndicateballoon, 3) = 2,
|
||||
list(/obj/item/clothing/suit/ianshirt, 3) = 2,
|
||||
list(/obj/item/clothing/head/bearpelt, 4) = 2,
|
||||
list(/obj/item/weapon/archaeological_find, 3) = 2,
|
||||
list(pick(subtypesof(/obj/item/toy/mecha)), 4) = 2,
|
||||
list(pick(subtypesof(/obj/item/toy/figure)), 4) = 2,
|
||||
list(pick(subtypesof(/obj/item/toy/plushie)), 4) = 2,
|
||||
list(pick(subtypesof(/obj/item/weapon/storage/firstaid)), 4) = 2,
|
||||
list(/obj/item/weapon/pickaxe/silver, 3) = 2,
|
||||
list(/obj/item/weapon/pickaxe/drill, 3) = 2,
|
||||
list(/obj/item/weapon/pickaxe/jackhammer, 4) = 2,
|
||||
list(/obj/item/weapon/pickaxe/gold, 4) = 2,
|
||||
list(/obj/item/weapon/pickaxe/diamond, 5) = 2,
|
||||
list(/obj/item/weapon/pickaxe/diamonddrill, 6) = 2,
|
||||
list(/obj/item/weapon/pickaxe/plasmacutter, 5) = 2,
|
||||
list(/obj/item/device/soulstone, 5) = 2,
|
||||
list(/obj/item/weapon/material/sword/katana, 5) = 2,
|
||||
list(/obj/item/weapon/storage/belt/utility/chief/full, 8) = 2,
|
||||
list(/obj/item/device/personal_shield_generator/belt/mining/loaded, 6) = 2,
|
||||
list(pick(subtypesof(/obj/item/weapon/melee/energy/sword) - /obj/item/weapon/melee/energy/sword/charge), 6) = 2,
|
||||
list(pick(/obj/item/weapon/dnainjector/xraymut, /obj/item/weapon/dnainjector/nobreath, /obj/item/weapon/dnainjector/insulation), 6) = 2,
|
||||
list(/obj/item/weapon/gun/energy/netgun, 7) = 2,
|
||||
list(pick(prob(300);/obj/item/weapon/gun/energy/mouseray,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/corgi,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/woof,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/cat,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/chicken,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/lizard,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/rabbit,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/fennec,
|
||||
prob(5);/obj/item/weapon/gun/energy/mouseray/monkey,
|
||||
prob(5);/obj/item/weapon/gun/energy/mouseray/wolpin,
|
||||
prob(5);/obj/item/weapon/gun/energy/mouseray/otie,
|
||||
prob(5);/obj/item/weapon/gun/energy/mouseray/direwolf,
|
||||
prob(5);/obj/item/weapon/gun/energy/mouseray/giantrat,
|
||||
prob(50);/obj/item/weapon/gun/energy/mouseray/redpanda,
|
||||
prob(5);/obj/item/weapon/gun/energy/mouseray/catslug,
|
||||
prob(5);/obj/item/weapon/gun/energy/mouseray/teppi,
|
||||
prob(1);/obj/item/weapon/gun/energy/mouseray/metamorphosis,
|
||||
prob(1);/obj/item/weapon/gun/energy/mouseray/metamorphosis/advanced/random
|
||||
), 8) = 2,
|
||||
list(/obj/item/weapon/gun/energy/pummeler, 11) = 2,
|
||||
list(pick(subtypesof(/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug)), 1) = 1,
|
||||
list(/obj/item/xenos_claw, 1) = 1,
|
||||
list(/obj/item/organ/internal/heart, 1) = 1,
|
||||
list(/obj/item/weapon/vampiric, 2) = 1,
|
||||
list(/obj/item/weed_extract, 2) = 1,
|
||||
list(/obj/item/weapon/storage/backpack/luchador/loaded, 3) = 1,
|
||||
list(/obj/item/weapon/storage/backpack/clown/loaded, 5) = 1,
|
||||
list(/obj/item/weapon/storage/backpack/mime/loaded, 5) = 1,
|
||||
list(pick(/obj/item/device/multitool/alien,
|
||||
/obj/item/stack/cable_coil/alien,
|
||||
/obj/item/weapon/tool/crowbar/alien,
|
||||
/obj/item/weapon/tool/screwdriver/alien,
|
||||
/obj/item/weapon/weldingtool/alien,
|
||||
/obj/item/weapon/tool/wirecutters/alien,
|
||||
/obj/item/weapon/tool/wrench/alien), 7) = 1,
|
||||
list(pick(/obj/item/weapon/melee/energy/axe, /obj/item/weapon/melee/energy/spear), 11) = 1,
|
||||
list(/obj/item/weapon/card/emag/used, 7) = 1,
|
||||
list(pick(/obj/item/weapon/grenade/spawnergrenade/spesscarp, /obj/item/weapon/grenade/spawnergrenade/spider, /obj/item/weapon/grenade/explosive/frag), 7) = 1,
|
||||
list(/obj/item/weapon/grenade/flashbang/clusterbang, 7) = 1,
|
||||
list(/obj/item/weapon/card/emag, 11) = 1,
|
||||
list(/obj/item/weapon/storage/backpack/sport/hyd/catchemall, 11) = 1
|
||||
))
|
||||
var/path = choice[1]
|
||||
var/value = choice[2]
|
||||
contents += new path()
|
||||
lootvalue += value
|
||||
|
||||
//putting the multi-object loot items as their own things
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/cratebooze
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/cratedrills
|
||||
starts_with = list(
|
||||
/obj/item/weapon/pickaxe/advdrill,
|
||||
/obj/item/device/taperecorder,
|
||||
/obj/item/clothing/suit/space,
|
||||
/obj/item/clothing/head/helmet/space
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/clown/loaded
|
||||
starts_with = list(
|
||||
/obj/item/clothing/under/rank/clown,
|
||||
/obj/item/clothing/shoes/clown_shoes,
|
||||
/obj/item/device/pda/clown,
|
||||
/obj/item/clothing/mask/gas/clown_hat,
|
||||
/obj/item/weapon/bikehorn,
|
||||
/obj/item/weapon/pen/crayon/rainbow,
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/mime/loaded
|
||||
starts_with = list(
|
||||
/obj/item/clothing/under/mime,
|
||||
/obj/item/clothing/shoes/black,
|
||||
/obj/item/device/pda/mime,
|
||||
/obj/item/clothing/gloves/white,
|
||||
/obj/item/clothing/mask/gas/mime,
|
||||
/obj/item/clothing/head/beret,
|
||||
/obj/item/clothing/suit/suspenders,
|
||||
/obj/item/weapon/pen/crayon/mime,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/luchador/loaded
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/belt/champion,
|
||||
/obj/item/clothing/mask/luchador
|
||||
)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/hyd/catchemall
|
||||
name = "sports backpack"
|
||||
desc = "A green sports backpack."
|
||||
starts_with = list(
|
||||
/obj/item/clothing/head/soft/red,
|
||||
/obj/item/clothing/suit/varsity/blue,
|
||||
/obj/item/clothing/under/pants/youngfolksjeans,
|
||||
/obj/item/capture_crystal
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/hyd/catchemall/Initialize() //gotta have your starter 'mon too (or an improved way to catch one)
|
||||
..()
|
||||
var/path = pick(subtypesof(/obj/item/capture_crystal))
|
||||
contents += new path()
|
||||
@@ -59,6 +59,12 @@
|
||||
var/obj/item/held = user.get_active_hand()
|
||||
if(!istype(held) || is_robot_module(held))
|
||||
stripping = TRUE
|
||||
//CHOMPEdit Start - Let borg grippers put stuff on.
|
||||
if(is_robot_module(held) && istype(held, /obj/item/weapon/gripper))
|
||||
var/obj/item/weapon/gripper/G = held
|
||||
if(istype(G.wrapped))
|
||||
stripping = FALSE
|
||||
//CHOMPEdit End
|
||||
else
|
||||
var/obj/item/weapon/holder/holder = held
|
||||
if(istype(holder) && src == holder.held_mob)
|
||||
@@ -75,11 +81,19 @@
|
||||
to_chat(user, "<span class='warning'>You cannot remove \the [src]'s [target_slot.name].</span>")
|
||||
return
|
||||
visible_message("<span class='danger'>\The [user] is trying to remove \the [src]'s [target_slot.name]!</span>")
|
||||
else
|
||||
else if(!istype(held, /obj/item/weapon/gripper)) //CHOMPEdit - Let borg grippers put stuff on.
|
||||
if(slot_to_strip == slot_wear_mask && istype(held, /obj/item/weapon/grenade))
|
||||
visible_message("<span class='danger'>\The [user] is trying to put \a [held] in \the [src]'s mouth!</span>")
|
||||
else
|
||||
visible_message("<span class='danger'>\The [user] is trying to put \a [held] on \the [src]!</span>")
|
||||
//CHOMPEdit Start - Let borg grippers put stuff on.
|
||||
else
|
||||
var/obj/item/weapon/gripper/G = held
|
||||
if(slot_to_strip == slot_wear_mask && istype(G.wrapped, /obj/item/weapon/grenade))
|
||||
visible_message("<span class='danger'>\The [user] is trying to put \a [G.wrapped] in \the [src]'s mouth!</span>")
|
||||
else
|
||||
visible_message("<span class='danger'>\The [user] is trying to put \a [G.wrapped] on \the [src]!</span>")
|
||||
//CHOMPEdit End
|
||||
|
||||
if(!do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
return
|
||||
@@ -95,6 +109,14 @@
|
||||
if(stripping)
|
||||
add_attack_logs(user,src,"Removed equipment from slot [target_slot]")
|
||||
unEquip(target_slot)
|
||||
//CHOMPEdit Start - Let borg grippers put stuff on.
|
||||
else if(is_robot_module(held) && istype(held, /obj/item/weapon/gripper))
|
||||
var/obj/item/weapon/gripper/G = held
|
||||
var/obj/item/wrapped = G.wrapped
|
||||
if(istype(wrapped))
|
||||
G.drop_item_nm()
|
||||
equip_to_slot_if_possible(wrapped, text2num(slot_to_strip), 0, 1, 1)
|
||||
//CHOMPEdit End
|
||||
else if(user.unEquip(held))
|
||||
equip_to_slot_if_possible(held, text2num(slot_to_strip), 0, 1, 1)
|
||||
if(held.loc != src)
|
||||
|
||||
@@ -182,6 +182,7 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/device/gps/robot(src)
|
||||
src.modules += new /obj/item/weapon/gripper/scene(src) //CHOMPEdit - Give all borgs a scene gripper
|
||||
vr_new() // Vorestation Edit: For modules in robot_modules_vr.dm
|
||||
|
||||
/obj/item/weapon/robot_module/robot/standard
|
||||
|
||||
@@ -221,7 +221,8 @@
|
||||
"Otieborg" = "oties",
|
||||
"Secborg model V-3" = "SecVale", //CHOMPEdit
|
||||
"Cat" = "vixsec", //CHOMPEdit
|
||||
"Drake" = "drakesec"
|
||||
"Drake" = "drakesec",
|
||||
"Secborg model V-4" = "secraptor"//CHOMPEdit
|
||||
)
|
||||
channels = list("Security" = 1)
|
||||
networks = list(NETWORK_SECURITY)
|
||||
@@ -307,7 +308,8 @@
|
||||
"Borgi" = "borgi-medi",
|
||||
"Mediborg model V-3" = "vale2", //CHOMPEdit
|
||||
"Cat" = "vixmed", //CHOMPEdit
|
||||
"Drake" = "drakemed"
|
||||
"Drake" = "drakemed",
|
||||
"Mediborg model V-4" = "medraptor" //CHOMPEdit
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/medihound/New(var/mob/living/silicon/robot/R)
|
||||
@@ -638,7 +640,8 @@
|
||||
"SciHound" = "scihound",
|
||||
"SciHoundDark" = "scihounddark",
|
||||
"Cat" = "vixsci", //CHOMPEdit
|
||||
"Drake" = "drakesci"
|
||||
"Drake" = "drakesci",
|
||||
"Sciborg model V-4" = "sciraptor"//CHOMPEdit
|
||||
)
|
||||
channels = list("Science" = 1)
|
||||
pto_type = PTO_SCIENCE
|
||||
|
||||
@@ -196,6 +196,8 @@
|
||||
icon = 'modular_chomp/icons/mob/widerobot_ch.dmi'
|
||||
else if(icontype == "Cat" || icontype == "Cat Mining" || icontype == "Cat Cargo") // CHOMPEdit
|
||||
icon = 'modular_chomp/icons/mob/catborg/catborg.dmi'
|
||||
else if(icontype == "Mediborg model V-4" || icontype == "Secborg model V-4"|| icontype == "Sciborg model V-4") //CHOMPEdit
|
||||
icon = 'modular_chomp/icons/mob/raptorborg/raptor.dmi'
|
||||
else
|
||||
icon = wideborg_dept
|
||||
return
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
faction = "synthtide"
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/cyber_horror
|
||||
|
||||
maxHealth = 175
|
||||
health = 175
|
||||
@@ -45,6 +45,27 @@
|
||||
emote_see = list ("stares unblinkingly.", "jitters and twitches.", "emits a synthetic scream.", "rapidly twitches.", "convulses.", "twitches uncontrollably.", "goes stock still.")
|
||||
say_threaten = list ("FR@#DOM","EN@ T#I$-$","N0$ M^> B@!#")
|
||||
say_got_target = list("I *#@ Y@%","!E@#$P","F#RR @I","D0@#$ ##OK %","IT $##TS")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/melee/evasive/cyber_horror
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
|
||||
/datum/ai_holder/simple_mob/melee/cyber_horror
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
|
||||
/datum/ai_holder/simple_mob/melee/hit_and_run/cyber_horror
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/cyber_horror
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
|
||||
// Fragile but dangerous
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/plasma_cyber_horror
|
||||
@@ -52,6 +73,7 @@
|
||||
desc = "What was once a phoronoid, now a empty shell of malfunctioning nanites."
|
||||
icon_state = "plasma_cyber_horror"
|
||||
icon_dead = "plasma_cyber_horror_dead"
|
||||
say_list_type = /datum/say_list/cyber_horror/plasma
|
||||
|
||||
armor = list(melee = 40, bullet = -10, laser = 40, bio = 100, rad = 100)
|
||||
maxHealth = 75
|
||||
@@ -67,6 +89,9 @@
|
||||
var/poison_per_bite = 3
|
||||
var/poison_type = "neurophage_nanites"
|
||||
|
||||
/datum/say_list/cyber_horror/plasma
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Plasma.ogg'
|
||||
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/plasma_cyber_horror/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
@@ -80,12 +105,15 @@
|
||||
if(prob(poison_chance))
|
||||
to_chat(L, "<span class='warning'>You feel nanites digging into your skin!</span>")
|
||||
L.reagents.add_reagent(poison_type, poison_per_bite)
|
||||
|
||||
|
||||
// Mech Shredder
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/ling_cyber_horror
|
||||
name = "Nanite abomination"
|
||||
desc = "What was once something, now an exposed shell with lashing cables."
|
||||
icon_state = "ling_cyber_horror"
|
||||
icon_dead = "ling_cyber_horror_dead"
|
||||
say_list_type = /datum/say_list/cyber_horror/ling
|
||||
|
||||
maxHealth = 250
|
||||
health = 250
|
||||
@@ -96,13 +124,13 @@
|
||||
base_attack_cooldown = 2.5
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingMelee.ogg'
|
||||
attacktext = list ("sliced", "diced", "lashed", "shredded")
|
||||
// Slow as all sin
|
||||
movement_cooldown = 9
|
||||
movement_sound = 'sound/effects/houndstep.ogg'
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/cyber_horror
|
||||
|
||||
// You do NOT Want to get in touchy range of this thing.
|
||||
armor = list(melee = 75, bullet = -10, laser = -25, bio = 100, rad = 100)
|
||||
@@ -116,7 +144,10 @@
|
||||
special_attack_cooldown = 60 SECONDS
|
||||
// How long the leap telegraphing is.
|
||||
var/leap_warmup = 2 SECOND
|
||||
var/leap_sound = 'sound/weapons/spiderlunge.ogg'
|
||||
var/leap_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingLeap.ogg'
|
||||
|
||||
/datum/say_list/cyber_horror/ling
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Changeling.ogg'
|
||||
|
||||
// Multiplies damage if the victim is stunned in some form, including a successful leap.
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/ling_cyber_horror/apply_bonus_melee_damage(atom/A, damage_amount)
|
||||
@@ -126,7 +157,6 @@
|
||||
return damage_amount * 2.5
|
||||
return ..()
|
||||
|
||||
|
||||
// The actual leaping attack.
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/ling_cyber_horror/do_special_attack(atom/A)
|
||||
set waitfor = FALSE
|
||||
@@ -177,24 +207,34 @@
|
||||
. = TRUE
|
||||
|
||||
set_AI_busy(FALSE)
|
||||
|
||||
|
||||
//Slightly more durable fodder
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/vox
|
||||
name = "Vox shambles"
|
||||
desc = "Once a Vox now torn and changed, peices of a Durand has been grafted onto it."
|
||||
icon_state = "vox_cyber_horror"
|
||||
icon_dead = "vox_cyber_horror_dead"
|
||||
say_list_type = /datum/say_list/cyber_horror/vox
|
||||
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, bio = 100, rad = 100)
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
// Hit and run mob
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/cyber_horror
|
||||
|
||||
/datum/say_list/cyber_horror/vox
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Vox.ogg'
|
||||
|
||||
|
||||
// Hit and run mob
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/tajaran
|
||||
name = "Tajaran cyber stalker"
|
||||
desc = "A mangled mess of machine and fur, light seems to bounce off it."
|
||||
icon_state = "tajaran_cyber_horror"
|
||||
icon_dead = "tajaran_cyber_horror_dead"
|
||||
say_list_type = /datum/say_list/cyber_horror/tajaran
|
||||
attack_sound = 'modular_chomp/sound/weapons/meleetear.ogg'
|
||||
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run/cyber_horror
|
||||
|
||||
var/cloaked_alpha = 30
|
||||
var/cloaked_bonus_damage = 30
|
||||
@@ -202,6 +242,9 @@
|
||||
var/cloak_cooldown = 10 SECONDS
|
||||
var/last_uncloak = 0
|
||||
|
||||
/datum/say_list/cyber_horror/tajaran
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Tajaran.ogg'
|
||||
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/tajaran/cloak()
|
||||
if(cloaked)
|
||||
return
|
||||
@@ -256,6 +299,7 @@
|
||||
. = ..()
|
||||
break_cloak()
|
||||
|
||||
|
||||
//Arcing Ranged Mob
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/grey
|
||||
name = "Twisted cyber horror"
|
||||
@@ -264,13 +308,18 @@
|
||||
icon_dead = "grey_cyber_horror_dead"
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
say_list_type = /datum/say_list/cyber_horror/grey
|
||||
|
||||
projectiletype = /obj/item/projectile/arc/blue_energy
|
||||
projectilesound = 'sound/weapons/Laser.ogg'
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
|
||||
projectilesound = 'modular_chomp/sound/weapons/plasmaNEW.ogg'
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/cyber_horror
|
||||
|
||||
armor = list(melee = -30, bullet = 10, laser = 10, bio = 100, rad = 100)
|
||||
|
||||
/datum/say_list/cyber_horror/grey
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Grey.ogg'
|
||||
|
||||
|
||||
//Direct Ranged Mob
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/corgi
|
||||
name = "Malformed Corgi"
|
||||
@@ -279,14 +328,19 @@
|
||||
icon_dead = "corgi_cyber_horror_dead"
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
say_list_type = /datum/say_list/cyber_horror/corgi
|
||||
|
||||
base_attack_cooldown = 4
|
||||
projectiletype = /obj/item/projectile/beam/drone
|
||||
projectilesound = 'sound/weapons/weaponsounds_laserweak.ogg'
|
||||
projectilesound = 'modular_chomp/sound/weapons/SmallLaser.ogg'
|
||||
movement_sound = 'sound/effects/servostep.ogg'
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening
|
||||
|
||||
/datum/say_list/cyber_horror/corgi
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Corgi.ogg'
|
||||
|
||||
|
||||
//Cats and mayhem
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/cat_cyber_horror
|
||||
name = "Twisted cat"
|
||||
@@ -294,6 +348,7 @@
|
||||
|
||||
icon_state = "cat_cyber_horror"
|
||||
icon_dead = "cat_cyber_horror_dead"
|
||||
say_list_type = /datum/say_list/cyber_horror/cat
|
||||
|
||||
maxHealth = 40
|
||||
health = 40
|
||||
@@ -310,6 +365,7 @@
|
||||
base_attack_cooldown = 2.5
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
attacktext = list("jabbed", "injected")
|
||||
|
||||
@@ -318,6 +374,9 @@
|
||||
var/poison_per_bite = 3
|
||||
var/poison_type = "mindbreaker"
|
||||
|
||||
/datum/say_list/cyber_horror/cat
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Cat.ogg'
|
||||
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/cat_cyber_horror/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
|
||||
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 215 KiB |
|
Before Width: | Height: | Size: 622 KiB After Width: | Height: | Size: 627 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,12 @@
|
||||
/obj/item/weapon/gripper/scene
|
||||
name = "misc gripper"
|
||||
desc = "A simple grasping tool that can hold a variety of 'general' objects..."
|
||||
|
||||
can_hold = list(
|
||||
/obj/item/capture_crystal,
|
||||
/obj/item/clothing,
|
||||
/obj/item/weapon/implanter,
|
||||
/obj/item/weapon/disk/nifsoft/compliance,
|
||||
/obj/item/weapon/handcuffs,
|
||||
/obj/item/toy
|
||||
)
|
||||
@@ -0,0 +1,12 @@
|
||||
/mob/living/simple_mob/horror/Master/aerostat
|
||||
|
||||
say_list_type = /datum/say_list/cyber_horror/master
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/horrormaster //The final boss of every Gradius game
|
||||
|
||||
/datum/say_list/cyber_horror/master
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/MasterSee.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/horrormaster
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
@@ -0,0 +1,12 @@
|
||||
/mob/living/simple_mob/mechanical/infectionbot //This literally just adds onto the base robot at /code/modules/mob/living/simple_mob/subtypes/mechanical/disbot_vr.dm
|
||||
say_list_type = /datum/say_list/disbot
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/disbot
|
||||
|
||||
|
||||
/datum/say_list/disbot
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/infector.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/melee/disbot
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
@@ -0,0 +1,23 @@
|
||||
/mob/living/simple_mob/mechanical/combat_drone/lesser/aerostat
|
||||
desc = "A Vir System Authority automated combat drone with an aged apperance."
|
||||
movement_cooldown = 10
|
||||
say_list_type = /datum/say_list/malf_drone/drone_aerostat
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
|
||||
/datum/say_list/malf_drone/drone_aerostat
|
||||
speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.")
|
||||
emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity")
|
||||
|
||||
say_understood = list("Affirmative.", "Positive.")
|
||||
say_cannot = list("Denied.", "Negative.")
|
||||
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
|
||||
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
|
||||
say_threaten = list("This area is condemned by Vir System Authority. Please leave immediately. You have 20 seconds to comply.")
|
||||
say_stand_down = list("Visual lost.", "Error: Target not found.")
|
||||
say_escalate = list("Intruder is tresspassing. Maximum force authorized by Vir System Suthority.")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/DroneFreezeLong.ogg'
|
||||
stand_down_sound = 'modular_chomp/sound/mob/robots/DroneLostTarget.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
threaten_delay = 10 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
@@ -0,0 +1,22 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/combat/gygax/aerostat
|
||||
desc = "A Vir System Authority automated combat mech with an aged apperance."
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
say_list = /datum/say_list/gygax_aerostat
|
||||
|
||||
/datum/say_list/gygax_aerostat
|
||||
speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.")
|
||||
emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity")
|
||||
|
||||
say_understood = list("Affirmative.", "Positive.")
|
||||
say_cannot = list("Denied.", "Negative.")
|
||||
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
|
||||
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
|
||||
say_threaten = list("This area is condemned by Vir System Authority. Please leave immediately. You have 20 seconds to comply.")
|
||||
say_stand_down = list("Visual lost.", "Error: Target not found.")
|
||||
say_escalate = list("Intruder is tresspassing. Maximum force authorized by Vir System Suthority.")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/GygaxIntruder4.ogg'
|
||||
stand_down_sound = 'modular_chomp/sound/mob/robots/GygaxDanger.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
threaten_delay = 20 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
BIN
modular_chomp/icons/mob/raptorborg/raptor.dmi
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
modular_chomp/sound/mob/robots/Cyber_Horror.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_Cat.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_Changeling.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingLeap.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingMelee.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_Corgi.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_Grey.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_Plasma.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_Tajaran.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/Cyber_Horror_Vox.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/DroneFreeze.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/DroneFreezeLong.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/DroneLostTarget.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/GygaxDanger.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/GygaxIntruder4.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/MasterSee.ogg
Normal file
BIN
modular_chomp/sound/mob/robots/infector.ogg
Normal file
BIN
modular_chomp/sound/weapons/SmallLaser.ogg
Normal file
BIN
modular_chomp/sound/weapons/meleetear.ogg
Normal file
BIN
modular_chomp/sound/weapons/plasmaNEW.ogg
Normal file
@@ -4550,12 +4550,17 @@
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_species.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\traits\negative.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\traits\positive.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\silicon\robot\drone\drone_items.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\donteatbossmonsters.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob_abilities.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\teppi.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\xenomorph.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\xenomorph_abilities.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\horror\Master.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\mechanical\disbot.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\mechanical\drones\combat_drone.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\gygax.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\bigdragon.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\greatwolf.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\vore.dm"
|
||||
|
||||