From b0e8c905312ce8f709b5bd6cac6f5c6eb6e7bfef Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Thu, 23 Apr 2020 02:19:04 -0400
Subject: [PATCH 1/6] Update spacevine.dm
---
code/modules/events/spacevine.dm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 3b8f8de359..10c9092230 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -22,7 +22,9 @@
if(turfs.len) //Pick a turf to spawn at if we can
var/turf/T = pick(turfs)
- new /datum/spacevine_controller(T) //spawn a controller at turf
+ new /datum/spacevine_controller(T, pick(subtypesof(/datum/spacevine_mutation)), rand(30,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation
+
+
/datum/spacevine_mutation
From f1a5ba0754f7aad0b81480d24528ab2a16641443 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Thu, 23 Apr 2020 02:28:16 -0400
Subject: [PATCH 2/6] wew
---
code/modules/events/spacevine.dm | 59 ++++++++++++++++----------------
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 10c9092230..c94c1773e2 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -22,9 +22,7 @@
if(turfs.len) //Pick a turf to spawn at if we can
var/turf/T = pick(turfs)
- new /datum/spacevine_controller(T, pick(subtypesof(/datum/spacevine_mutation)), rand(30,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation
-
-
+ new /datum/spacevine_controller(T, pick(subtypesof(/datum/spacevine_mutation)), rand(10,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation
/datum/spacevine_mutation
@@ -174,8 +172,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/oxygen])
return
- GM.gases[/datum/gas/oxygen] = max(GM.gases[/datum/gas/oxygen] - severity * holder.energy, 0)
- GAS_GARBAGE_COLLECT(GM.gases)
+ GM.gases[/datum/gas/oxygen][MOLES] = max(GM.gases[/datum/gas/oxygen][MOLES] - severity * holder.energy, 0)
+ GM.garbage_collect()
/datum/spacevine_mutation/nitro_eater
name = "nitrogen consuming"
@@ -189,8 +187,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/nitrogen])
return
- GM.gases[/datum/gas/nitrogen] = max(GM.gases[/datum/gas/nitrogen] - severity * holder.energy, 0)
- GAS_GARBAGE_COLLECT(GM.gases)
+ GM.gases[/datum/gas/nitrogen][MOLES] = max(GM.gases[/datum/gas/nitrogen][MOLES] - severity * holder.energy, 0)
+ GM.garbage_collect()
/datum/spacevine_mutation/carbondioxide_eater
name = "CO2 consuming"
@@ -204,8 +202,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/carbon_dioxide])
return
- GM.gases[/datum/gas/carbon_dioxide] = max(GM.gases[/datum/gas/carbon_dioxide] - severity * holder.energy, 0)
- GAS_GARBAGE_COLLECT(GM.gases)
+ GM.gases[/datum/gas/carbon_dioxide][MOLES] = max(GM.gases[/datum/gas/carbon_dioxide][MOLES] - severity * holder.energy, 0)
+ GM.garbage_collect()
/datum/spacevine_mutation/plasma_eater
name = "toxins consuming"
@@ -219,8 +217,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/plasma])
return
- GM.gases[/datum/gas/plasma] = max(GM.gases[/datum/gas/plasma] - severity * holder.energy, 0)
- GAS_GARBAGE_COLLECT(GM.gases)
+ GM.gases[/datum/gas/plasma][MOLES] = max(GM.gases[/datum/gas/plasma][MOLES] - severity * holder.energy, 0)
+ GM.garbage_collect()
/datum/spacevine_mutation/thorns
name = "thorny"
@@ -229,13 +227,13 @@
quality = NEGATIVE
/datum/spacevine_mutation/thorns/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
- if(prob(severity) && istype(crosser) && !isvineimmune(holder))
+ if(prob(severity) && istype(crosser) && !isvineimmune(crosser))
var/mob/living/M = crosser
M.adjustBruteLoss(5)
to_chat(M, "You cut yourself on the thorny vines.")
/datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
- if(prob(severity) && istype(hitter) && !isvineimmune(holder))
+ if(prob(severity) && istype(hitter) && !isvineimmune(hitter))
var/mob/living/M = hitter
M.adjustBruteLoss(5)
to_chat(M, "You cut yourself on the thorny vines.")
@@ -253,7 +251,7 @@
holder.obj_integrity = holder.max_integrity
/datum/spacevine_mutation/woodening/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
- if(I.get_sharpness())
+ if(I?.get_sharpness())
. = expected_damage * 0.5
else
. = expected_damage
@@ -346,16 +344,17 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src, 'sound/weapons/slash.ogg', 50, 1)
+ playsound(src, 'sound/weapons/slash.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, 1)
+ playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
+ playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
-/obj/structure/spacevine/Crossed(mob/crosser)
- if(isliving(crosser))
- for(var/datum/spacevine_mutation/SM in mutations)
- SM.on_cross(src, crosser)
+/obj/structure/spacevine/Crossed(atom/movable/AM)
+ if(!isliving(AM))
+ return
+ for(var/datum/spacevine_mutation/SM in mutations)
+ SM.on_cross(src, AM)
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/structure/spacevine/attack_hand(mob/user)
@@ -380,10 +379,12 @@
var/list/vine_mutations_list
var/mutativeness = 1
-/datum/spacevine_controller/New(turf/location, list/muts, potency, production)
+/datum/spacevine_controller/New(turf/location, list/muts, potency, production, datum/round_event/event = null)
vines = list()
growth_queue = list()
- spawn_spacevine_piece(location, null, muts)
+ var/obj/structure/spacevine/SV = spawn_spacevine_piece(location, null, muts)
+ if (event)
+ event.announce_to_ghosts(SV)
START_PROCESSING(SSobj, src)
vine_mutations_list = list()
init_subtypes(/datum/spacevine_mutation/, vine_mutations_list)
@@ -430,6 +431,7 @@
for(var/datum/spacevine_mutation/SM in SV.mutations)
SM.on_birth(SV)
location.Entered(SV)
+ return SV
/datum/spacevine_controller/proc/VineDestroyed(obj/structure/spacevine/S)
S.master = null
@@ -532,15 +534,14 @@
if(!override)
qdel(src)
-/obj/structure/spacevine/CanPass(atom/movable/mover, turf/target)
+/obj/structure/spacevine/CanAllowThrough(atom/movable/mover, turf/target)
+ . = ..()
if(isvineimmune(mover))
- . = TRUE
- else
- . = ..()
+ return TRUE
/proc/isvineimmune(atom/A)
- . = FALSE
if(isliving(A))
var/mob/living/M = A
if(("vines" in M.faction) || ("plants" in M.faction))
- . = TRUE
+ return TRUE
+ return FALSE
From 86abfefa1b7cfc250f5908b4533938decd2d8139 Mon Sep 17 00:00:00 2001
From: TrilbySpaceClone
Date: Thu, 23 Apr 2020 02:52:07 -0400
Subject: [PATCH 3/6] still dosnt work
---
code/modules/events/spacevine.dm | 18 +-
.../simple_animal/hostile/venus_human_trap.dm | 190 ++++++++++++------
.../code/modules/language/sylvan.dm | 22 ++
tgstation.dme | 1 +
4 files changed, 158 insertions(+), 73 deletions(-)
create mode 100644 modular_citadel/code/modules/language/sylvan.dm
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index c94c1773e2..3155642c4a 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -172,8 +172,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/oxygen])
return
- GM.gases[/datum/gas/oxygen][MOLES] = max(GM.gases[/datum/gas/oxygen][MOLES] - severity * holder.energy, 0)
- GM.garbage_collect()
+ GM.gases[/datum/gas/oxygen] = max(GM.gases[/datum/gas/oxygen] - severity * holder.energy, 0)
+ GAS_GARBAGE_COLLECT(GM.gases)
/datum/spacevine_mutation/nitro_eater
name = "nitrogen consuming"
@@ -187,8 +187,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/nitrogen])
return
- GM.gases[/datum/gas/nitrogen][MOLES] = max(GM.gases[/datum/gas/nitrogen][MOLES] - severity * holder.energy, 0)
- GM.garbage_collect()
+ GM.gases[/datum/gas/nitrogen] = max(GM.gases[/datum/gas/nitrogen] - severity * holder.energy, 0)
+ GAS_GARBAGE_COLLECT(GM.gases)
/datum/spacevine_mutation/carbondioxide_eater
name = "CO2 consuming"
@@ -202,8 +202,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/carbon_dioxide])
return
- GM.gases[/datum/gas/carbon_dioxide][MOLES] = max(GM.gases[/datum/gas/carbon_dioxide][MOLES] - severity * holder.energy, 0)
- GM.garbage_collect()
+ GM.gases[/datum/gas/carbon_dioxide] = max(GM.gases[/datum/gas/carbon_dioxide] - severity * holder.energy, 0)
+ GAS_GARBAGE_COLLECT(GM.gases)
/datum/spacevine_mutation/plasma_eater
name = "toxins consuming"
@@ -217,8 +217,8 @@
var/datum/gas_mixture/GM = T.air
if(!GM.gases[/datum/gas/plasma])
return
- GM.gases[/datum/gas/plasma][MOLES] = max(GM.gases[/datum/gas/plasma][MOLES] - severity * holder.energy, 0)
- GM.garbage_collect()
+ GM.gases[/datum/gas/plasma] = max(GM.gases[/datum/gas/plasma] - severity * holder.energy, 0)
+ GAS_GARBAGE_COLLECT(GM.gases)
/datum/spacevine_mutation/thorns
name = "thorny"
@@ -544,4 +544,4 @@
var/mob/living/M = A
if(("vines" in M.faction) || ("plants" in M.faction))
return TRUE
- return FALSE
+ return FALSE
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 13a4d1793e..4189e40a3d 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -1,5 +1,13 @@
-
-
+/**
+ * Kudzu Flower Bud
+ *
+ * A flower created by flowering kudzu which spawns a venus human trap after a certain amount of time has passed.
+ *
+ * A flower created by kudzu with the flowering mutation. Spawns a venus human trap after 2 minutes under normal circumstances.
+ * Also spawns 4 vines going out in diagonal directions from the bud. Any living creature not aligned with plants is damaged by these vines.
+ * Once it grows a venus human trap, the bud itself will destroy itself.
+ *
+ */
/obj/structure/alien/resin/flower_bud_enemy //inheriting basic attack/damage stuff from alien structures
name = "flower bud"
desc = "A large pulsating plant..."
@@ -9,9 +17,9 @@
opacity = 0
canSmoothWith = list()
smooth = SMOOTH_FALSE
+ /// The amount of time it takes to create a venus human trap, in deciseconds
var/growth_time = 1200
-
/obj/structure/alien/resin/flower_bud_enemy/Initialize()
. = ..()
var/list/anchors = list()
@@ -25,36 +33,49 @@
B.sleep_time = 10 //these shouldn't move, so let's slow down updates to 1 second (any slower and the deletion of the vines would be too slow)
addtimer(CALLBACK(src, .proc/bear_fruit), growth_time)
+/**
+ * Spawns a venus human trap, then qdels itself.
+ *
+ * Displays a message, spawns a human venus trap, then qdels itself.
+ */
/obj/structure/alien/resin/flower_bud_enemy/proc/bear_fruit()
- visible_message("the plant has borne fruit!")
+ visible_message("The plant has borne fruit!")
new /mob/living/simple_animal/hostile/venus_human_trap(get_turf(src))
qdel(src)
-
/obj/effect/ebeam/vine
name = "thick vine"
mouse_opacity = MOUSE_OPACITY_ICON
desc = "A thick vine, painful to the touch."
-
/obj/effect/ebeam/vine/Crossed(atom/movable/AM)
+ . = ..()
if(isliving(AM))
var/mob/living/L = AM
- if(!("vines" in L.faction))
+ if(!isvineimmune(L))
L.adjustBruteLoss(5)
to_chat(L, "You cut yourself on the thorny vines.")
-
-
+/**
+ * Venus Human Trap
+ *
+ * The result of a kudzu flower bud, these enemies use vines to drag prey close to them for attack.
+ *
+ * A carnivorious plant which uses vines to catch and ensnare prey. Spawns from kudzu flower buds.
+ * Each one has a maximum of four vines, which can be attached to a variety of things. Carbons are stunned when a vine is attached to them, and movable entities are pulled closer over time.
+ * Attempting to attach a vine to something with a vine already attached to it will pull all movable targets closer on command.
+ * Once the prey is in melee range, melee attacks from the venus human trap heals itself for 10% of its max health, assuming the target is alive.
+ * Akin to certain spiders, venus human traps can also be possessed and controlled by ghosts.
+ *
+ */
/mob/living/simple_animal/hostile/venus_human_trap
name = "venus human trap"
desc = "Now you know how the fly feels."
icon_state = "venus_human_trap"
- threat = 1
layer = SPACEVINE_MOB_LAYER
health = 50
maxHealth = 50
- ranged = 1
+ ranged = TRUE
harm_intent_damage = 5
obj_damage = 60
melee_damage_lower = 25
@@ -63,65 +84,106 @@
attack_sound = 'sound/weapons/bladeslice.ogg'
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
unsuitable_atmos_damage = 0
+ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
faction = list("hostile","vines","plants")
- var/list/grasping = list()
- var/max_grasps = 4
- var/grasp_chance = 20
- var/grasp_pull_chance = 85
- var/grasp_range = 4
- del_on_death = 1
+ initial_language_holder = /datum/language_holder/venus
+ del_on_death = TRUE
+ /// A list of all the plant's vines
+ var/list/vines = list()
+ /// The maximum amount of vines a plant can have at one time
+ var/max_vines = 4
+ /// How far away a plant can attach a vine to something
+ var/vine_grab_distance = 5
+ /// Whether or not this plant is ghost possessable
+ var/playable_plant = TRUE
-/mob/living/simple_animal/hostile/venus_human_trap/Destroy()
- for(var/L in grasping)
- var/datum/beam/B = grasping[L]
- if(B)
- qdel(B)
- grasping = null
- return ..()
-
-/mob/living/simple_animal/hostile/venus_human_trap/handle_automated_action()
- if(..())
- for(var/mob/living/L in grasping)
- if(L.stat == DEAD)
- var/datum/beam/B = grasping[L]
- if(B)
- B.End()
- grasping -= L
-
- //Can attack+pull multiple times per cycle
- if(L.Adjacent(src))
- L.attack_animal(src)
- else
- if(prob(grasp_pull_chance))
- setDir(get_dir(src,L) )//staaaare
- step(L,get_dir(L,src)) //reel them in
- L.DefaultCombatKnockdown(60) //you can't get away now~
-
- if(grasping.len < max_grasps)
- grasping:
- for(var/mob/living/L in view(grasp_range, src))
- if(L == src || faction_check_mob(L) || (L in grasping) || L == target)
- continue
- for(var/t in getline(src,L))
- for(var/a in t)
- var/atom/A = a
- if(A.density && A != L)
- continue grasping
- if(prob(grasp_chance))
- to_chat(L, "\The [src] has you entangled!")
- grasping[L] = Beam(L, "vine", time=INFINITY, maxdistance=5, beam_type=/obj/effect/ebeam/vine)
-
- break //only take 1 new victim per cycle
+/mob/living/simple_animal/hostile/venus_human_trap/Life()
+ . = ..()
+ pull_vines()
+/mob/living/simple_animal/hostile/venus_human_trap/AttackingTarget()
+ . = ..()
+ if(isliving(target))
+ var/mob/living/L = target
+ if(L.stat != DEAD)
+ adjustHealth(-maxHealth * 0.1)
/mob/living/simple_animal/hostile/venus_human_trap/OpenFire(atom/the_target)
- var/dist = get_dist(src,the_target)
- Beam(the_target, "vine", time=dist*2, maxdistance=dist+2, beam_type=/obj/effect/ebeam/vine)
- the_target.attack_animal(src)
+ for(var/datum/beam/B in vines)
+ if(B.target == the_target)
+ pull_vines()
+ ranged_cooldown = world.time + (ranged_cooldown_time * 0.5)
+ return
+ if(get_dist(src,the_target) > vine_grab_distance || vines.len == max_vines)
+ return
+ for(var/turf/T in getline(src,target))
+ if (T.density)
+ return
+ for(var/obj/O in T)
+ if(O.density)
+ return
+ var/datum/beam/newVine = Beam(the_target, "vine", time=INFINITY, maxdistance = vine_grab_distance, beam_type=/obj/effect/ebeam/vine)
+ RegisterSignal(newVine, COMSIG_PARENT_QDELETING, .proc/remove_vine, newVine)
+ vines += newVine
+ if(isliving(the_target))
+ var/mob/living/L = the_target
+ L.Paralyze(20)
+ ranged_cooldown = world.time + ranged_cooldown_time
-/mob/living/simple_animal/hostile/venus_human_trap/CanAttack(atom/the_target)
+/mob/living/simple_animal/hostile/venus_human_trap/Login()
+ . = ..()
+ to_chat(src, "You a venus human trap! Protect the kudzu at all costs, and feast on those who oppose you!")
+
+/mob/living/simple_animal/hostile/venus_human_trap/attack_ghost(mob/user)
. = ..()
if(.)
- if(the_target in grasping)
- return 0
+ return
+ humanize_plant(user)
+
+/**
+ * Sets a ghost to control the plant if the plant is eligible
+ *
+ * Asks the interacting ghost if they would like to control the plant.
+ * If they answer yes, and another ghost hasn't taken control, sets the ghost to control the plant.
+ * Arguments:
+ * * mob/user - The ghost to possibly control the plant
+ */
+/mob/living/simple_animal/hostile/venus_human_trap/proc/humanize_plant(mob/user)
+ if(key || !playable_plant || stat)
+ return
+ var/plant_ask = alert("Become a venus human trap?", "Are you reverse vegan?", "Yes", "No")
+ if(plant_ask == "No" || QDELETED(src))
+ return
+ if(key)
+ to_chat(user, "Someone else already took this plant!")
+ return
+ key = user.key
+ log_game("[key_name(src)] took control of [name].")
+
+/**
+ * Manages how the vines should affect the things they're attached to.
+ *
+ * Pulls all movable targets of the vines closer to the plant
+ * If the target is on the same tile as the plant, destroy the vine
+ * Removes any QDELETED vines from the vines list.
+ */
+/mob/living/simple_animal/hostile/venus_human_trap/proc/pull_vines()
+ for(var/datum/beam/B in vines)
+ if(istype(B.target, /atom/movable))
+ var/atom/movable/AM = B.target
+ if(!AM.anchored)
+ step(AM,get_dir(AM,src))
+ if(get_dist(src,B.target) == 0)
+ B.End()
+
+/**
+ * Removes a vine from the list.
+ *
+ * Removes the vine from our list.
+ * Called specifically when the vine is about to be destroyed, so we don't have any null references.
+ * Arguments:
+ * * datum/beam/vine - The vine to be removed from the list.
+ */
+mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
+ vines -= vine
\ No newline at end of file
diff --git a/modular_citadel/code/modules/language/sylvan.dm b/modular_citadel/code/modules/language/sylvan.dm
new file mode 100644
index 0000000000..8748a73083
--- /dev/null
+++ b/modular_citadel/code/modules/language/sylvan.dm
@@ -0,0 +1,22 @@
+// The language of the vinebings. Yes, it's a shameless ripoff of elvish.
+/datum/language/sylvan
+ name = "Sylvan"
+ desc = "A complicated, ancient language spoken by vine like beings."
+ speech_verb = "expresses"
+ ask_verb = "inquires"
+ exclaim_verb = "declares"
+ key = "h"
+ space_chance = 20
+ syllables = list(
+ "fii", "sii", "rii", "rel", "maa", "ala", "san", "tol", "tok", "dia", "eres",
+ "fal", "tis", "bis", "qel", "aras", "losk", "rasa", "eob", "hil", "tanl", "aere",
+ "fer", "bal", "pii", "dala", "ban", "foe", "doa", "cii", "uis", "mel", "wex",
+ "incas", "int", "elc", "ent", "aws", "qip", "nas", "vil", "jens", "dila", "fa",
+ "la", "re", "do", "ji", "ae", "so", "qe", "ce", "na", "mo", "ha", "yu"
+ )
+ icon_state = "plant"
+ default_priority = 90
+
+/datum/language_holder/venus
+ languages = list(/datum/language/common, /datum/language/sylvan, /datum/language/machine)
+ only_speaks_language = /datum/language/sylvan
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 7bfbd2dde2..7c362bcaa2 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3303,6 +3303,7 @@
#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"
+#include "modular_citadel\code\modules\language\sylvan.dm"
#include "modular_citadel\code\modules\mentor\dementor.dm"
#include "modular_citadel\code\modules\mentor\follow.dm"
#include "modular_citadel\code\modules\mentor\mentor.dm"
From 7761990919808f8e0094ebc73e701276b5edcfee Mon Sep 17 00:00:00 2001
From: TrilbySpaceClone
Date: Thu, 23 Apr 2020 03:13:07 -0400
Subject: [PATCH 4/6] soooo this complies but does it work?
---
code/modules/events/spacevine.dm | 7 ++-----
.../mob/living/simple_animal/hostile/venus_human_trap.dm | 2 +-
modular_citadel/code/game/machinery/wishgranter.dm | 3 +--
3 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 3155642c4a..60f2aef629 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -22,7 +22,7 @@
if(turfs.len) //Pick a turf to spawn at if we can
var/turf/T = pick(turfs)
- new /datum/spacevine_controller(T, pick(subtypesof(/datum/spacevine_mutation)), rand(10,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation
+ new /datum/spacevine_controller(T, pick(subtypesof(/datum/spacevine_mutation)), rand(30,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation
/datum/spacevine_mutation
@@ -382,9 +382,6 @@
/datum/spacevine_controller/New(turf/location, list/muts, potency, production, datum/round_event/event = null)
vines = list()
growth_queue = list()
- var/obj/structure/spacevine/SV = spawn_spacevine_piece(location, null, muts)
- if (event)
- event.announce_to_ghosts(SV)
START_PROCESSING(SSobj, src)
vine_mutations_list = list()
init_subtypes(/datum/spacevine_mutation/, vine_mutations_list)
@@ -534,7 +531,7 @@
if(!override)
qdel(src)
-/obj/structure/spacevine/CanAllowThrough(atom/movable/mover, turf/target)
+/obj/structure/spacevine/CanPass(atom/movable/mover, turf/target)
. = ..()
if(isvineimmune(mover))
return TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 4189e40a3d..cbfa7780da 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -186,4 +186,4 @@
* * datum/beam/vine - The vine to be removed from the list.
*/
mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
- vines -= vine
\ No newline at end of file
+ vines -= vine
diff --git a/modular_citadel/code/game/machinery/wishgranter.dm b/modular_citadel/code/game/machinery/wishgranter.dm
index 7758c0d613..6cfe07b7a0 100644
--- a/modular_citadel/code/game/machinery/wishgranter.dm
+++ b/modular_citadel/code/game/machinery/wishgranter.dm
@@ -94,9 +94,8 @@
var/mob/living/simple_animal/hostile/venus_human_trap/killwish = new /mob/living/simple_animal/hostile/venus_human_trap(loc)
killwish.maxHealth = 1500
killwish.health = killwish.maxHealth
- killwish.grasp_range = 6
+ killwish.vine_grab_distance = 6
killwish.melee_damage_upper = 30
- killwish.grasp_chance = 50
killwish.loot = list(/obj/item/twohanded/dualsaber/hypereutactic)
charges--
insisting = FALSE
From 3e0519455ae9d4126bd293e6d51285ce1d073be6 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Thu, 23 Apr 2020 03:34:38 -0400
Subject: [PATCH 5/6] Update sylvan.dm
---
modular_citadel/code/modules/language/sylvan.dm | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/modular_citadel/code/modules/language/sylvan.dm b/modular_citadel/code/modules/language/sylvan.dm
index 8748a73083..c9458bb4cf 100644
--- a/modular_citadel/code/modules/language/sylvan.dm
+++ b/modular_citadel/code/modules/language/sylvan.dm
@@ -14,9 +14,10 @@
"incas", "int", "elc", "ent", "aws", "qip", "nas", "vil", "jens", "dila", "fa",
"la", "re", "do", "ji", "ae", "so", "qe", "ce", "na", "mo", "ha", "yu"
)
- icon_state = "plant"
+ icon = 'icons/obj/hydroponics/harvest.dmi'
+ icon_state = "lily"
default_priority = 90
/datum/language_holder/venus
languages = list(/datum/language/common, /datum/language/sylvan, /datum/language/machine)
- only_speaks_language = /datum/language/sylvan
\ No newline at end of file
+ only_speaks_language = /datum/language/sylvan
From 83ba5c1b9b1015faaf91f3b2745326f08b70cd12 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Thu, 23 Apr 2020 16:52:24 -0400
Subject: [PATCH 6/6] Update venus_human_trap.dm
---
.../mob/living/simple_animal/hostile/venus_human_trap.dm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index cbfa7780da..5111b0b180 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -95,7 +95,10 @@
/// How far away a plant can attach a vine to something
var/vine_grab_distance = 5
/// Whether or not this plant is ghost possessable
- var/playable_plant = TRUE
+ var/playable_plant = FALSE //Normal plants can **not** have players.
+
+/mob/living/simple_animal/hostile/venus_human_trap/ghost_playable
+ playable_plant = TRUE //For admins that want to buss some harmless plants
/mob/living/simple_animal/hostile/venus_human_trap/Life()
. = ..()
@@ -149,6 +152,7 @@
* Arguments:
* * mob/user - The ghost to possibly control the plant
*/
+
/mob/living/simple_animal/hostile/venus_human_trap/proc/humanize_plant(mob/user)
if(key || !playable_plant || stat)
return