diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm
index 829c819faf..36b092556c 100644
--- a/code/game/machinery/biogenerator.dm
+++ b/code/game/machinery/biogenerator.dm
@@ -105,8 +105,9 @@
dat += "Activate Biogenerator!
"
dat += "Detach Container
"
dat += "Food
"
- dat += "10 milk ([round(20/build_eff)])
"
- dat += "Slab of meat ([round(50/build_eff)])
"
+ dat += "10 milk ([round(20/build_eff)]) | x3 | x6
"
+ dat += "10 cream ([round(20/build_eff)]) | x3 | x6
"
+ dat += "Slab of meat ([round(50/build_eff)]) | x5 | x10
"
dat += "Nutrient
"
dat += "E-Z-Nutrient ([round(60/build_eff)]) | x5
"
dat += "Left 4 Zed ([round(120/build_eff)]) | x5
"
@@ -126,8 +127,8 @@
dat += "Leather Jacket ([round(500/build_eff)])
"
dat += "Winter Coat ([round(500/build_eff)])
"
dat += "4 Algae Sheets ([round(400/build_eff)])
" //VOREStation Edit - Algae for oxygen generator
- //dat += "Other
"
- //dat += "Monkey (500)
"
+ dat += "Other
"
+ dat += "Monkey (500)
"
else
dat += "
No beaker inside. Please insert a beaker.
"
if("nopoints")
@@ -187,8 +188,35 @@
switch(item)
if("milk")
beaker.reagents.add_reagent("milk", 10)
+ if("milk30")
+ beaker.reagents.add_reagent("milk", 30)
+ if("milk60")
+ beaker.reagents.add_reagent("milk", 60)
+ if("cream")
+ beaker.reagents.add_reagent("cream", 10)
+ if("cream30")
+ beaker.reagents.add_reagent("cream", 30)
+ if("cream60")
+ beaker.reagents.add_reagent("cream", 60)
if("meat")
new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ if("meat5")
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ if("meat10")
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
+ new/obj/item/weapon/reagent_containers/food/snacks/meat(loc)
if("ez")
new/obj/item/weapon/reagent_containers/glass/bottle/eznutrient(loc)
if("l4z")
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 28acd6aa36..047107420a 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -521,6 +521,11 @@
set_trait(TRAIT_WATER_CONSUMPTION, get_trait(TRAIT_WATER_CONSUMPTION) +rand(-degree,degree),50,0)
set_trait(TRAIT_JUICY, !get_trait(TRAIT_JUICY))
set_trait(TRAIT_STINGS, !get_trait(TRAIT_STINGS))
+ if(prob(5))
+ consume_gasses = list()
+ var/gas = pick("oxygen","nitrogen","phoron","carbon_dioxide")
+ consume_gasses[gas] = rand(3,9)
+ source_turf.visible_message("\The [display_name] seems to be drawing in air.")
if(2)
set_trait(TRAIT_IDEAL_HEAT, get_trait(TRAIT_IDEAL_HEAT) + (rand(-5,5)*degree),800,70)
set_trait(TRAIT_HEAT_TOLERANCE, get_trait(TRAIT_HEAT_TOLERANCE) + (rand(-5,5)*degree),800,70)
@@ -534,34 +539,59 @@
set_trait(TRAIT_TOXINS_TOLERANCE, get_trait(TRAIT_TOXINS_TOLERANCE)+(rand(-2,2)*degree),10,0)
if(5)
set_trait(TRAIT_WEED_TOLERANCE, get_trait(TRAIT_WEED_TOLERANCE)+(rand(-2,2)*degree),10, 0)
- if(prob(5))
+ if(prob(10))
set_trait(TRAIT_CARNIVOROUS, get_trait(TRAIT_CARNIVOROUS)+rand(-degree,degree),2, 0)
if(get_trait(TRAIT_CARNIVOROUS))
source_turf.visible_message("\The [display_name] shudders hungrily.")
if(6)
set_trait(TRAIT_WEED_TOLERANCE, get_trait(TRAIT_WEED_TOLERANCE)+(rand(-2,2)*degree),10, 0)
- if(prob(5))
+ if(prob(10))
set_trait(TRAIT_PARASITE,!get_trait(TRAIT_PARASITE))
+ if(prob(10))
+ var/additional_chems = rand(1,3)
+
+ if(additional_chems)
+
+ var/list/banned_chems = list(
+ "adminordrazine",
+ "nutriment"
+ )
+
+ for(var/x=1;x<=additional_chems;x++)
+
+ var/new_chem = pick(chemical_reagents_list)
+ if(new_chem in banned_chems)
+ continue
+ banned_chems += new_chem
+ chems[new_chem] = list(rand(1,10),rand(10,20))
+ source_turf.visible_message("\The [display_name] produce seems to be different!")
+
if(7)
if(get_trait(TRAIT_YIELD) != -1)
set_trait(TRAIT_YIELD, get_trait(TRAIT_YIELD)+(rand(-2,2)*degree),10,0)
+ if(prob(5))
+ exude_gasses = list()
+ var/gas = pick("oxygen","nitrogen","phoron","carbon_dioxide")
+ exude_gasses[gas] = rand(3,9)
+ source_turf.visible_message("\The [display_name] seems to be releasing gas.")
if(8)
set_trait(TRAIT_ENDURANCE, get_trait(TRAIT_ENDURANCE)+(rand(-5,5)*degree),100,10)
set_trait(TRAIT_PRODUCTION, get_trait(TRAIT_PRODUCTION)+(rand(-1,1)*degree),10, 1)
set_trait(TRAIT_POTENCY, get_trait(TRAIT_POTENCY)+(rand(-15,20)*degree),200, 0)
- if(prob(5))
+ if(prob(10))
set_trait(TRAIT_SPREAD, get_trait(TRAIT_SPREAD)+rand(-1,1),2, 0)
source_turf.visible_message("\The [display_name] spasms visibly, shifting in the tray.")
if(9)
set_trait(TRAIT_MATURATION, get_trait(TRAIT_MATURATION)+(rand(-1,1)*degree),30, 0)
- if(prob(5))
+ if(prob(10))
set_trait(TRAIT_HARVEST_REPEAT, !get_trait(TRAIT_HARVEST_REPEAT))
+ source_turf.visible_message("\The [display_name] quivers in its tray, its produce looks more harvestable.")
if(10)
if(prob(10))
set_trait(TRAIT_BIOLUM, !get_trait(TRAIT_BIOLUM))
if(get_trait(TRAIT_BIOLUM))
source_turf.visible_message("\The [display_name] begins to glow!")
- if(prob(25))
+ if(prob(50))
set_trait(TRAIT_BIOLUM_COLOUR,"#[get_random_colour(0,75,190)]")
source_turf.visible_message("\The [display_name]'s glow changes colour!")
else
@@ -571,6 +601,9 @@
if(11)
set_trait(TRAIT_TELEPORTING,1)
+ if(prob(5))
+ set_trait(TRAIT_ALTER_TEMP,rand(-5,5))
+ source_turf.visible_message("\The air around the [display_name]'s seems to be of a different temperature...")
return
diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm
index 3b3767077a..7b9e88453b 100644
--- a/code/modules/hydroponics/seed_datums.dm
+++ b/code/modules/hydroponics/seed_datums.dm
@@ -866,6 +866,7 @@
name = "wheat"
seed_name = "wheat"
display_name = "wheat stalks"
+ mutants = list("meatwheat")
chems = list("nutriment" = list(1,25), "flour" = list(15,15))
kitchen_tag = "wheat"
@@ -881,6 +882,17 @@
set_trait(TRAIT_PLANT_ICON,"stalk2")
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
+
+/datum/seed/wheat/meatwheat
+ name = "meatwheat"
+ seed_name = "meatwheat"
+ display_name = "meatwheat stalks"
+ mutants = null
+ chems = list("nutriment" = list(1,25), "protein" = list(4,10))
+
+/datum/seed/wheat/meatwheat/New()
+ ..()
+ set_trait(TRAIT_PRODUCT_COLOUR,"#440000")
/datum/seed/rice
name = "rice"
diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm
index 92242bc3e6..d2cb01b9df 100644
--- a/code/modules/hydroponics/seed_packets.dm
+++ b/code/modules/hydroponics/seed_packets.dm
@@ -154,6 +154,9 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
/obj/item/seeds/wheatseed
seed_type = "wheat"
+
+/obj/item/seeds/meatwheatseed
+ seed_type = "meatwheat"
/obj/item/seeds/riceseed
seed_type = "rice"
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index fdffdafeaf..de3fc7278d 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -125,8 +125,8 @@ var/list/mob_hat_cache = list()
add_language("Drone Talk", 1)
//They are unable to be upgraded, so let's give them a bit of a better battery.
- cell.maxcharge = 10000
- cell.charge = 10000
+ cell.maxcharge = 20000 //Original val 10000, doubled for ease of use of powertransmission circuit.
+ cell.charge = 20000
// NO BRAIN.
mmi = null
@@ -430,3 +430,18 @@ var/list/mob_hat_cache = list()
chassis = possible_chassis[choice]
verbs |= /mob/living/proc/hide
+//POWER Transmission code
+/mob/living/silicon/robot/drone/proc/transmitpower(var/power=250)
+ set category ="Robot Commands"
+ set name = "Transmit Power"
+ power = input(usr, "How much would you like to transmit? Keep in mind this is multiplied for each cell near you.", "Power Transmission", null)
+ if(power<=0 || power>=cell.maxcharge || power>=cell.charge) return //Safeties to not kill ourselves, also safeties to not use this to drain.
+ for(var/obj/item/weapon/cell/remotecell in range(1, src)) //assuming 1 = 1 tile next to us, if this works will lower to 0
+ if(power>=cell.charge) return //rechecking our initial safety so if we mass charge we dont die.
+ var/newcharge = remotecell.charge + power //What the battery is at after charge
+ if(newcharge<=remotecell.maxcharge) //Making sure we arent wasting power
+ remotecell.give(power) //give is a proc native to cells that increases charge and updates the iconstate if needed
+ cell.give(-power)//TO BE TESTED, no idea if negative give works, once i've tested this i'll add this as a verb-shark
+ else return
+
+
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm
index 106c1351c6..654d8df003 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm
@@ -23,17 +23,42 @@
holder_type = /obj/item/weapon/holder/drone
//var/selected_icon = null //Can be compared to "Wideborg" will tell us in the future if we ar eusing non standardized icon.
+
+/mob/living/silicon/robot/drone/unify/powerengineering
+ law_type = /datum/ai_laws/powerbank_drone
+ icon_state = "constructiondrone"
+ module_type = /obj/item/weapon/robot_module/drone/powerbank
+
////////////////////////////////////////
//DRONE MODULES
////////////////////////////////////////
/obj/item/weapon/robot_module/drone/unify
//yup this is nothing for now until we build more drone versions
+/obj/item/weapon/robot_module/drone/powerbank
+ name = "Engineering Power drone module"
+ hide_on_manifest = 1
+ channels = list("Engineering" = 1)
+ languages = list()
+
+/obj/item/weapon/robot_module/drone/powerbank/New() //Trading in the RCD for a Powergenerating device
+ ..()
+ src.modules += new /obj/item/device/dogborg/sleeper/compactor/drone(src)
+
////////////////////////////////////////
//DRONE LAWS
////////////////////////////////////////
//TODO: Remake drone laws, Add subroutine clause "If no maintenance are active nor maintenance crew your duties include maintenance"
//TODO: Unify Drone law system, might be impossible due to how the ..() are structured may need to look into how to add additional laws if add_inherent fails.
+/datum/ai_laws/powerbank_drone
+ name = "Power Protocols"
+ law_header = "Power Protocols"
+
+/datum/ai_laws/powerbank_drone/New()
+ add_inherent_law("Do not interfere with the construction work of non-drones whenever possible.")
+ add_inherent_law("Repair, refit upgrade and restore power to your assigned vessel.")
+ add_inherent_law("Prevent unplanned damage to your assigned vessel wherever possible.")
+ ..()
////////////////////////////////////////
//DRONE HELLO WORLD
@@ -45,7 +70,14 @@
src << "Use :d to talk to other drones and say to speak silently to your nearby fellows."
src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics.."
-
+/mob/living/silicon/robot/drone/powerbank/welcome_drone()
+ src << "You are a power restoration drone, an autonomous engineering and fabrication system.."
+ src << "You are assigned to a Sol Central construction project. The name is irrelevant. Your task is to complete power restoration and subsystem integration as soon as possible."
+ src << "Use :d to talk to other drones and say to speak silently to your nearby fellows."
+ src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics.."
+/mob/living/silicon/robot/drone/unify/powerengineering/init()
+ ..()
+ flavor_text = "It's a bulky engineering drone stamped with a Sol Central glyph."
////////////////////////////////////////
//DRONE ITEMS (mostly mods of other items)
////////////////////////////////////////
@@ -67,6 +99,14 @@
/obj/machinery/computer/drone_control/mining
req_access = list(access_mining)
+/obj/item/device/dogborg/sleeper/compactor/drone //Janihound gut. But for drones to generate power from garbage
+ name = "Minor Biocombustion Engine"
+ desc = "A mounted garbage compactor unit with fuel processor."
+ icon_state = "compactor"
+ injection_chems = null //So they don't have all the same chems as the medihound!
+ compactor = TRUE
+ max_item_count = 50 //Douibled since its purpose is garbage combustion
+
////////////////////////////////////////
//DRONE FABRICATOR, ONE FOR ALL SYSTEM.
////////////////////////////////////////
@@ -78,6 +118,7 @@
drone_type = null //Gonna try to set this later
var/list/possible_drones = list("UNIFY Module (Same as Maintenance)" = /mob/living/silicon/robot/drone/unify,
"Construction Module" = /mob/living/silicon/robot/drone/construction,
+ "Power Restoration Module" = /mob/living/silicon/robot/drone/unify/powerengineering,
"Mining Module" = /mob/living/silicon/robot/drone/mining,
"Security Module" = /mob/living/silicon/robot/drone/security,
"Maintenance Module" = /mob/living/silicon/robot/drone,)
@@ -86,6 +127,15 @@
//DRONE PROCS
////////////////////////////////////////
//Drone Drone Procs
+/mob/living/silicon/robot/drone/unify/powerengineering/New()
+ ..()
+ cell.maxcharge = 100000
+ cell.charge = 100000
+ verbs |= /mob/living/silicon/robot/drone/proc/transmitpower
+
+/mob/living/silicon/robot/drone/unify/powerengineering/updatename()
+ real_name = "engineering drone ([rand(100,999)])"
+ name = real_name
/mob/living/silicon/robot/drone/unify/updatename()
real_name = "Unified Drone Module ([rand(100,999)])" //UDMs, sounds kinda nice, maybe call them this Lore wise?
name = real_name
diff --git a/code/modules/mob/living/simple_animal/aliens/hivebot.dm b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
index e322198815..ff0a5dcc9a 100644
--- a/code/modules/mob/living/simple_animal/aliens/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
@@ -10,7 +10,9 @@
icon_state = "basic"
icon_living = "basic"
icon_dead = "basic"
-
+
+ var/zergoverride=0
+
faction = "hivebot"
intelligence_level = SA_ROBOTIC
maxHealth = 3 LASERS_TO_KILL
@@ -137,12 +139,13 @@
/mob/living/simple_animal/hostile/hivebot/death()
..()
- visible_message("[src] blows apart!")
- new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(3, 1, src)
- s.start()
- qdel(src)
+ if(!zergoverride)//CHOMPEDIT OVerriding death for zerg
+ visible_message("[src] blows apart!")
+ new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(3, 1, src)
+ s.start()
+ qdel(src)
/mob/living/simple_animal/hostile/hivebot/speech_bubble_appearance()
return "synthetic_evil"
diff --git a/code/modules/mob/living/simple_animal/aliens/zerg.dm b/code/modules/mob/living/simple_animal/aliens/zerg.dm
new file mode 100644
index 0000000000..4799b338f9
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/aliens/zerg.dm
@@ -0,0 +1,74 @@
+//Hivebot based zergs woo
+#define LASERS_TO_KILL *30 //Explanation in hivebot.dm
+/mob/living/simple_animal/hostile/hivebot/zerg //Base Zerg template
+ name = "zerg template"
+ desc = "The Zerg Swarm is a terrifying and ruthless amalgamation of biologically advanced, arthropodal aliens. Dedicated to the pursuit of genetic perfection."
+ faction = "zerg"
+ speed = 2
+ melee_damage_lower = 2
+ melee_damage_upper = 2
+
+ zergoverride = 1
+
+ projectilesound = 'sound/effects/splat.ogg'
+ projectiletype = /obj/item/projectile/energy/acid
+
+ speak = list("For the Hive!",)
+ emote_hear = list()
+ emote_see = list("looks around the area", "turns from side to side")
+ 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.", "Threat removal engaged.", "Engaging target.")
+
+ var/zerg_types = list("Zerg Drone" = /mob/living/simple_animal/hostile/hivebot/zerg/worker,)
+
+
+/mob/living/simple_animal/hostile/hivebot/zerg/isSynthetic()
+ return FALSE
+
+/mob/living/simple_animal/hostile/hivebot/zerg/larva/proc/evolve()
+ //TODDO MAke this work nicely
+ set name = "EVOLVE"
+ set desc = "Performs larva evolution."
+ set category = "Abilities"
+ var/location = get_turf(src)
+ chosentype = input(usr,"What type would you like to be?") as null|anything in zerg_types
+ if(!chosentype) return
+ if(!src.ckey)
+ death()
+ qdel(src)
+ new /mob/living/simple_animal/hostile/hivebot/zerg/worker(location)
+ else
+ var/myuser = src.key
+ death()
+ qdel(src)
+ var/mob/living/simple_animal/hostile/newmob = new chosentype(location)
+ newmob.ckey = myuser
+
+/mob/living/simple_animal/hostile/hivebot/zerg/larva
+ name = "zerg larva"
+ desc = "Larva are a fundamental zerg type, able to turn into other types"
+ melee_damage_lower = 0
+ melee_damage_upper = 0
+ maxHealth = 0.2 LASERS_TO_KILL
+ health = 0.2 LASERS_TO_KILL
+ var/chosentype = null
+/mob/living/simple_animal/hostile/hivebot/zerg/larva/Life()
+ ..()
+
+/mob/living/simple_animal/hostile/hivebot/zerg/larva/New()
+ ..()
+ verbs |= /mob/living/simple_animal/hostile/hivebot/zerg/larva/proc/evolve
+
+/mob/living/simple_animal/hostile/hivebot/zerg/larva/initialize()
+ spawn(1200)
+ if(!src.ckey)
+ evolve()
+/mob/living/simple_animal/hostile/hivebot/zerg/worker
+ name = "Zerg Drone"
+ desc = "Drones are fundamental to economic and tech development, as they harvest resources and construct buildings."
+ maxHealth = 1 LASERS_TO_KILL
+ health = 1 LASERS_TO_KILL
+ melee_damage_lower = 1
+ melee_damage_upper = 1
diff --git a/code/modules/mob/living/simple_animal/animals/tarrasque.dm b/code/modules/mob/living/simple_animal/animals/tarrasque.dm
index 51be94b90c..e88346e4b1 100644
--- a/code/modules/mob/living/simple_animal/animals/tarrasque.dm
+++ b/code/modules/mob/living/simple_animal/animals/tarrasque.dm
@@ -95,6 +95,7 @@
/mob/living/simple_animal/hostile/tarrasque/mrx
icon = 'icons/mob/64x64.dmi'
name = "Entity X"
+ pixel_x = -15
desc = "The call of the abyss manifested. Doors have proven inefective against it."
hasdrops = 0
health = 2000
@@ -106,11 +107,15 @@
size_multiplier = 1.5
icon_state = "arachnid"
icon_living = "arachnid"
- icon_dead = "arachnid_dead"
+ //icon_dead = "arachnid_dead"
+ icon_dead = "arachnid_stunned" //Same as dead but no blood
+ icon_rest = "arachnid_sleeping"
tt_desc = "Unknown Specimen"
attacktext = list("whacks","slashes","smashes")
melee_damage_lower = 0 //huh not so bad
melee_damage_upper = 50 //oh, oh no
+ universal_speak = 1
+ var/alang = LANGUAGE_GALCOM
armor = list(
"melee" = 99,
"bullet" = 99,
@@ -119,28 +124,88 @@
"bomb" = 99,
"bio" = 100,
"rad" = 100)
+//Vore stuff
+ vore_active = 1
+ vore_capacity = 2
+ vore_pounce_chance = 10 //Rare
+ vore_default_flags = null
+ vore_default_mode = DM_DIGEST
+ vore_standing_too = 1
+ vore_icons = SA_ICON_LIVING | SA_ICON_REST
+/mob/living/simple_animal/hostile/tarrasque/mrx/init_vore()
+ ..()
+ var/obj/belly/B = vore_selected
+ B.digest_burn = 10 //Normally this can only be 6 but since we are in code we can override this to be 10 so we dont need brute.
+ B.digest_brute = 0
+
+/mob/living/simple_animal/hostile/tarrasque/mrx/New()
+ ..()
+ update_icon()
+ seedarkness = 0
+ src.sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
+ add_language("Xenomorph")
+ verbs |= /mob/living/simple_animal/hostile/tarrasque/mrx/proc/hackervoice
+ verbs |= /mob/living/simple_animal/hostile/tarrasque/mrx/proc/scarethelights
/mob/living/simple_animal/hostile/tarrasque/mrx/Life()
..()
- if(resting)
+
+ if(resting && !client)
resting = !resting
+ update_icon()
if (anchored)
set_light(l_range = 1.5, l_power = 2, l_color = COLOR_RED)
- for(var/obj/machinery/door/airlock/door in range(3, src))
- door.open(1)
- door.lock(1)
+ if(!client)
+ for(var/obj/machinery/door/airlock/door in range(3, src))
+ door.open(1)
+ door.lock(1)
+ if(buckled)
+ resist()
+ buckled = null
//time for special MR X kick you in the shins and stands there code
/mob/living/simple_animal/hostile/tarrasque/mrx/DoPunch(var/atom/A)
. = ..()
if(.) // If we succeeded in hitting.
+ if(alang==LANGUAGE_GALCOM)
+ alang="Xenomorph"
+ else if(alang=="Xenomorph")
+ alang=LANGUAGE_GALCOM
for(var/obj/machinery/light/light in range(5, src))
light.flicker(10)
+ if(istype(A,/turf/simulated/wall))
+ var/turf/simulated/wall/wall = A
+ wall.dismantle_wall(null,null,1)
if(isliving(A))
+ src.say("Run tasty treat, run~", alang,"chitters") //may hiss may not, balanced
var/mob/living/L = A
L.Weaken(5)
stop_automated_movement = 1
anchored = 1
+ hostile = 0
spawn(100)
stop_automated_movement = 0
anchored = 0
+ hostile = 1
+
+/mob/living/simple_animal/hostile/tarrasque/mrx/handle_regular_hud_updates()
+ ..()
+ sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
+ see_in_dark = 8
+ see_invisible = SEE_INVISIBLE_LEVEL_TWO
+/////////////////////////////////////////
+//////////////Special EX PRocs go here // Mostly for playercontrolled stuff
+/////////////////////////////////////////
+/mob/living/simple_animal/hostile/tarrasque/mrx/proc/hackervoice()
+ set name = "Door Override"
+ set desc = "Hacker Voice: Im in"
+ set category = "X Powers"
+ for(var/obj/machinery/door/airlock/door in range(5, src))
+ door.open(1)
+ door.lock(1)
+/mob/living/simple_animal/hostile/tarrasque/mrx/proc/scarethelights()
+ set name = "Light Flicker"
+ set desc = "Hacker Voice: Im in"
+ set category = "X Powers"
+ for(var/obj/machinery/light/light in range(5, src))
+ light.flicker(2)
diff --git a/icons/mob/64x64.dmi b/icons/mob/64x64.dmi
index f290948771..cda1dab6ee 100644
Binary files a/icons/mob/64x64.dmi and b/icons/mob/64x64.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 437620ba10..27160c0c14 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2179,6 +2179,7 @@
#include "code\modules\mob\living\simple_animal\aliens\drone.dm"
#include "code\modules\mob\living\simple_animal\aliens\faithless.dm"
#include "code\modules\mob\living\simple_animal\aliens\hivebot.dm"
+#include "code\modules\mob\living\simple_animal\aliens\zerg.dm"
#include "code\modules\mob\living\simple_animal\aliens\mimic.dm"
#include "code\modules\mob\living\simple_animal\aliens\shade.dm"
#include "code\modules\mob\living\simple_animal\aliens\statue.dm"