diff --git a/code/__defines/admin_vr.dm b/code/__defines/admin_vr.dm index 62c4add906..5cc4ac2299 100644 --- a/code/__defines/admin_vr.dm +++ b/code/__defines/admin_vr.dm @@ -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)" diff --git a/code/_onclick/hud/popups_vr.dm b/code/_onclick/hud/popups_vr.dm index 76e72224ef..20dc1963da 100644 --- a/code/_onclick/hud/popups_vr.dm +++ b/code/_onclick/hud/popups_vr.dm @@ -68,4 +68,4 @@ /obj/screen/popup/default/New() ..() - icon_state = "popup[rand(1,4)]" \ No newline at end of file + icon_state = "popup[rand(1,10)]" \ No newline at end of file diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index 051c0e9e98..a374f19d8d 100644 --- a/code/game/objects/items/devices/hacktool.dm +++ b/code/game/objects/items/devices/hacktool.dm @@ -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, "No response from remote, check door power.") + else if(D.locked == TRUE && full_override == FALSE) + to_chat(user, "Unable to override door bolts!") + else if(D.locked == TRUE && full_override == TRUE && D.arePowerSystemsOn()) + to_chat(user, "Door bolts overridden.") + D.unlock() + else if(D.density == TRUE && D.locked == FALSE) + to_chat(user, "Overriding access. Door opening.") + D.open() + else if(D.density == FALSE && D.locked == FALSE) + to_chat(user, "Overriding access. Door closing.") + 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, "You begin hacking \the [D]...") 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) diff --git a/code/game/objects/items/trash_vr.dm b/code/game/objects/items/trash_vr.dm index 1f6cf5d3a8..17cf91d176 100644 --- a/code/game/objects/items/trash_vr.dm +++ b/code/game/objects/items/trash_vr.dm @@ -59,4 +59,9 @@ /obj/item/trash/ratpackcheese name = "\improper Prepackaged Meal Tray" icon = 'icons/obj/trash_vr.dmi' - icon_state = "altevian_pack_cheese-trash" \ No newline at end of file + 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" \ No newline at end of file diff --git a/code/modules/admin/verbs/smite_vr.dm b/code/modules/admin/verbs/smite_vr.dm index 5ac60fcfc1..f1a1a08deb 100644 --- a/code/modules/admin/verbs/smite_vr.dm +++ b/code/modules/admin/verbs/smite_vr.dm @@ -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. diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm index d2d04029c3..45fb51eabc 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm @@ -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)" diff --git a/code/modules/client/verbs/character_directory.dm b/code/modules/client/verbs/character_directory.dm index 304009c3f2..e737360234 100644 --- a/code/modules/client/verbs/character_directory.dm +++ b/code/modules/client/verbs/character_directory.dm @@ -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 diff --git a/code/modules/clothing/suits/miscellaneous_vr.dm b/code/modules/clothing/suits/miscellaneous_vr.dm index 67c255b1ee..6c2afc11f4 100644 --- a/code/modules/clothing/suits/miscellaneous_vr.dm +++ b/code/modules/clothing/suits/miscellaneous_vr.dm @@ -146,4 +146,31 @@ name = "cyberpunk vest" 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" \ No newline at end of file + 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" \ No newline at end of file diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index 9492802e86..85a475c03f 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -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) diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm index b1e3e878c2..f5c276d887 100644 --- a/code/modules/food/food/snacks_vr.dm +++ b/code/modules/food/food/snacks_vr.dm @@ -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) diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 3d2df063b5..f0ac7c002e 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -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 diff --git a/code/modules/mining/abandonedcrates_vr.dm b/code/modules/mining/abandonedcrates_vr.dm index 66bde0b4ff..7e4b8e2437 100644 --- a/code/modules/mining/abandonedcrates_vr.dm +++ b/code/modules/mining/abandonedcrates_vr.dm @@ -1,2 +1,173 @@ /obj/structure/closet/crate/secure/loot - tamper_proof = 2 \ No newline at end of file + 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() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/stripping.dm b/code/modules/mob/living/carbon/human/stripping.dm index 7aa08accbb..e8c38208b2 100644 --- a/code/modules/mob/living/carbon/human/stripping.dm +++ b/code/modules/mob/living/carbon/human/stripping.dm @@ -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) @@ -67,7 +73,7 @@ var/obj/item/weapon/grab/grab = held if(istype(grab) && grab.affecting == src) stripping = TRUE - + if(stripping) if(!istype(target_slot)) // They aren't holding anything valid and there's nothing to remove, why are we even here? return @@ -75,11 +81,19 @@ to_chat(user, "You cannot remove \the [src]'s [target_slot.name].") return visible_message("\The [user] is trying to remove \the [src]'s [target_slot.name]!") - 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("\The [user] is trying to put \a [held] in \the [src]'s mouth!") else visible_message("\The [user] is trying to put \a [held] on \the [src]!") + //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("\The [user] is trying to put \a [G.wrapped] in \the [src]'s mouth!") + else + visible_message("\The [user] is trying to put \a [G.wrapped] on \the [src]!") + //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) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index cc0d12c3f0..35474383a1 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -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 diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 2706cfd3ec..0af7b1a8b9 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -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) @@ -357,7 +359,7 @@ var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper(src) //So they can nom people and heal them B.water = water src.modules += B - + //CHOMPEdit Start - Give back the ATK/ABP since we don't have the surgeryhound var/obj/item/stack/medical/advanced/ointment/O = new /obj/item/stack/medical/advanced/ointment(src) var/obj/item/stack/medical/advanced/bruise_pack/P = new /obj/item/stack/medical/advanced/bruise_pack(src) @@ -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 diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm index 2d0f550c0e..dd0d900db4 100644 --- a/code/modules/mob/living/silicon/robot/robot_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_vr.dm @@ -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 diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror_ch.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror_ch.dm index 6dcc192684..b0db825340 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror_ch.dm @@ -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, "You feel nanites digging into your skin!") 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,8 +144,11 @@ 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) if(isliving(A)) @@ -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 diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi index 75feb5ee12..541a40a4b3 100644 Binary files a/icons/inventory/suit/item.dmi and b/icons/inventory/suit/item.dmi differ diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi index 045cdaf302..6b6ffed503 100644 Binary files a/icons/inventory/suit/mob.dmi and b/icons/inventory/suit/mob.dmi differ diff --git a/icons/mob/screen1_popups.dmi b/icons/mob/screen1_popups.dmi index cbdbcc7b8b..e2650ce8f5 100644 Binary files a/icons/mob/screen1_popups.dmi and b/icons/mob/screen1_popups.dmi differ diff --git a/icons/obj/food_vr.dmi b/icons/obj/food_vr.dmi index 54be219b75..6dc23e9275 100644 Binary files a/icons/obj/food_vr.dmi and b/icons/obj/food_vr.dmi differ diff --git a/icons/obj/trash_vr.dmi b/icons/obj/trash_vr.dmi index 0c4803f3ee..740fd0abc6 100644 Binary files a/icons/obj/trash_vr.dmi and b/icons/obj/trash_vr.dmi differ diff --git a/modular_chomp/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/modular_chomp/code/modules/mob/living/silicon/robot/drone/drone_items.dm new file mode 100644 index 0000000000..9b28792f66 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -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 + ) diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm new file mode 100644 index 0000000000..0cd595aeba --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm @@ -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 \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/disbot.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/disbot.dm new file mode 100644 index 0000000000..5f0c0da1b3 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/disbot.dm @@ -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 \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/drones/combat_drone.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/drones/combat_drone.dm new file mode 100644 index 0000000000..8c5d9c40db --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/drones/combat_drone.dm @@ -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 \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm new file mode 100644 index 0000000000..be5dcc6a4d --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm @@ -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 \ No newline at end of file diff --git a/modular_chomp/icons/mob/raptorborg/raptor.dmi b/modular_chomp/icons/mob/raptorborg/raptor.dmi new file mode 100644 index 0000000000..2d07b3d794 Binary files /dev/null and b/modular_chomp/icons/mob/raptorborg/raptor.dmi differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror.ogg new file mode 100644 index 0000000000..21cf70a6e0 Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_Cat.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_Cat.ogg new file mode 100644 index 0000000000..a45d87bfdd Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_Cat.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_Changeling.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_Changeling.ogg new file mode 100644 index 0000000000..39d57ea18b Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_Changeling.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingLeap.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingLeap.ogg new file mode 100644 index 0000000000..bb11c7898a Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingLeap.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingMelee.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingMelee.ogg new file mode 100644 index 0000000000..66f400c9a5 Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingMelee.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_Corgi.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_Corgi.ogg new file mode 100644 index 0000000000..b36e96d166 Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_Corgi.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_Grey.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_Grey.ogg new file mode 100644 index 0000000000..0c1d5af640 Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_Grey.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_Plasma.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_Plasma.ogg new file mode 100644 index 0000000000..86fae497ce Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_Plasma.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_Tajaran.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_Tajaran.ogg new file mode 100644 index 0000000000..c20f634955 Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_Tajaran.ogg differ diff --git a/modular_chomp/sound/mob/robots/Cyber_Horror_Vox.ogg b/modular_chomp/sound/mob/robots/Cyber_Horror_Vox.ogg new file mode 100644 index 0000000000..a1a4132128 Binary files /dev/null and b/modular_chomp/sound/mob/robots/Cyber_Horror_Vox.ogg differ diff --git a/modular_chomp/sound/mob/robots/DroneFreeze.ogg b/modular_chomp/sound/mob/robots/DroneFreeze.ogg new file mode 100644 index 0000000000..d6284b6861 Binary files /dev/null and b/modular_chomp/sound/mob/robots/DroneFreeze.ogg differ diff --git a/modular_chomp/sound/mob/robots/DroneFreezeLong.ogg b/modular_chomp/sound/mob/robots/DroneFreezeLong.ogg new file mode 100644 index 0000000000..59eb2b4ebb Binary files /dev/null and b/modular_chomp/sound/mob/robots/DroneFreezeLong.ogg differ diff --git a/modular_chomp/sound/mob/robots/DroneLostTarget.ogg b/modular_chomp/sound/mob/robots/DroneLostTarget.ogg new file mode 100644 index 0000000000..85fe3a081f Binary files /dev/null and b/modular_chomp/sound/mob/robots/DroneLostTarget.ogg differ diff --git a/modular_chomp/sound/mob/robots/GygaxDanger.ogg b/modular_chomp/sound/mob/robots/GygaxDanger.ogg new file mode 100644 index 0000000000..df6d257d0e Binary files /dev/null and b/modular_chomp/sound/mob/robots/GygaxDanger.ogg differ diff --git a/modular_chomp/sound/mob/robots/GygaxIntruder4.ogg b/modular_chomp/sound/mob/robots/GygaxIntruder4.ogg new file mode 100644 index 0000000000..47868c1118 Binary files /dev/null and b/modular_chomp/sound/mob/robots/GygaxIntruder4.ogg differ diff --git a/modular_chomp/sound/mob/robots/MasterSee.ogg b/modular_chomp/sound/mob/robots/MasterSee.ogg new file mode 100644 index 0000000000..7855751197 Binary files /dev/null and b/modular_chomp/sound/mob/robots/MasterSee.ogg differ diff --git a/modular_chomp/sound/mob/robots/infector.ogg b/modular_chomp/sound/mob/robots/infector.ogg new file mode 100644 index 0000000000..9407f86606 Binary files /dev/null and b/modular_chomp/sound/mob/robots/infector.ogg differ diff --git a/modular_chomp/sound/weapons/SmallLaser.ogg b/modular_chomp/sound/weapons/SmallLaser.ogg new file mode 100644 index 0000000000..9319ccf6e3 Binary files /dev/null and b/modular_chomp/sound/weapons/SmallLaser.ogg differ diff --git a/modular_chomp/sound/weapons/meleetear.ogg b/modular_chomp/sound/weapons/meleetear.ogg new file mode 100644 index 0000000000..edb5a00fca Binary files /dev/null and b/modular_chomp/sound/weapons/meleetear.ogg differ diff --git a/modular_chomp/sound/weapons/plasmaNEW.ogg b/modular_chomp/sound/weapons/plasmaNEW.ogg new file mode 100644 index 0000000000..a004753006 Binary files /dev/null and b/modular_chomp/sound/weapons/plasmaNEW.ogg differ diff --git a/vorestation.dme b/vorestation.dme index ed46b6e224..9341f6948d 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -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"