Skip to content
This repository has been archived by the owner on Aug 21, 2023. It is now read-only.

Monkedome fauna #746

Draft
wants to merge 10 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions beestation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3882,6 +3882,11 @@
#include "monkestation\code\modules\mob\living\simple_animal\friendly\walterverse.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\bees.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\pandora_exploration.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\monkedome\bullfrog.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\monkedome\megafly.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\monkedome\monkedome_fauna.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\monkedome\spore.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\monkedome\walker_snake.dm"
#include "monkestation\code\modules\neuromods\neuromod_items.dm"
#include "monkestation\code\modules\neuromods\surgery.dm"
#include "monkestation\code\modules\particles\byond_particles\particle_holder.dm"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/mob/living/simple_animal/friendly_monkedome_fauna/bullfrog
name = "domeflower"
icon = 'monkestation/icons/mob/monkedome/monkedome_monsters.dmi'
icon_state = "domeflower"
icon_living = "domeflower"
icon_dead = "domeflower_dead"
mob_size = MOB_SIZE_SMALL

health = 5
maxHealth = 5

response_help = "pets"
response_harm = "stomps"
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//the base mining mob
/mob/living/simple_animal/friendly_monkedome_fauna
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)
faction = list("dome")
minbodytemp = 0
maxbodytemp = INFINITY
a_intent = INTENT_HELP
see_in_dark = 9
mob_size = MOB_SIZE_LARGE
discovery_points = 500


Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/mob/living/simple_animal/hostile/monkedome_fauna/bullfrog
name = "bullfrog"
icon = 'monkestation/icons/mob/monkedome/monkedome_monsters.dmi'
icon_state = "bullfrog"
icon_living = "bullfrog"
icon_dead = "bullfrog_dead"

ranged = TRUE
projectiletype = /obj/item/projectile/bullfrog_tongue

health = 75
maxHealth = 75

melee_damage = 25
obj_damage = 15

faction = list("dome","hostile")

ranged_message = "launches it's tongue at"
ranged_cooldown_time = 5 SECONDS

check_friendly_fire = TRUE

move_to_delay = 0.5 SECONDS

/mob/living/simple_animal/hostile/monkedome_fauna/faction_check_mob(mob/target, exact_match)
if(istype(target,/mob/living/simple_animal/hostile/monkedome_fauna/megafly)) //Allow them to target megaflies
return FALSE
return ..()

//Projectile

/obj/item/projectile/bullfrog_tongue
name = "rock"
icon_state = "bullet"
pass_flags = PASSTABLE
range = 8
var/tongue
flag = "bullet"

/obj/item/projectile/bullfrog_tongue/fire(setAngle)
if(firer)
tongue = firer.Beam(src, icon_state = "tentacle", time = INFINITY, maxdistance = INFINITY, beam_sleep_time = 1)
..()

/obj/item/projectile/bullfrog_tongue/on_hit(atom/target, blocked)
. = ..()
if(isliving(target))
var/mob/living/living_target = target
living_target.visible_message("<span class='danger'>[living_target] is grabbed by [firer]'s tongue!</span>","<span class='userdanger'>A tongue grabs you and pulls you towards [firer]!</span>")
if(istype(target,/mob/living/simple_animal/hostile/monkedome_fauna/megafly)) //Tongue instantly kills flies
living_target.throw_at(get_step_towards(firer,living_target), 8, 2, firer, TRUE, TRUE, callback=CALLBACK(src, .proc/hit_fly, firer, living_target))
return BULLET_ACT_HIT
living_target.throw_at(get_step_towards(firer,living_target), 8, 2, firer, TRUE, TRUE)
living_target.Stun(2 SECONDS)
living_target.Knockdown(3 SECONDS)
return BULLET_ACT_HIT

/obj/item/projectile/bullfrog_tongue/proc/hit_fly(mob/firer,mob/target_fly)
target_fly.visible_message("<span class='danger'>[firer] eats [target_fly] in one swift motion!</span>")
qdel(target_fly)

/obj/item/projectile/bullfrog_tongue/Destroy()
qdel(tongue)
return ..()
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/mob/living/simple_animal/hostile/monkedome_fauna/megafly
name = "megafly"
icon = 'monkestation/icons/mob/monkedome/monkedome_monsters.dmi'
icon_state = "megafly"
icon_living = "megafly"
icon_dead = "megafly_dead"

health = 35
maxHealth = 35

melee_damage = 10

faction = list("dome","hostile")

movement_type = FLYING

move_to_delay = 0.15 SECONDS

/mob/living/simple_animal/hostile/monkedome_fauna/megafly/AttackingTarget()
. = ..()
if(iscarbon(target))
var/mob/living/carbon/carbon_target = target
carbon_target.blood_volume -= rand(7,16)
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//the base mining mob
/mob/living/simple_animal/hostile/monkedome_fauna
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)
faction = list("dome")
obj_damage = 30
environment_smash = ENVIRONMENT_SMASH_WALLS
minbodytemp = 0
maxbodytemp = INFINITY
response_help = "pokes"
response_disarm = "shoves"
response_harm = "strikes"
a_intent = INTENT_HARM
see_in_dark = 9
mob_size = MOB_SIZE_LARGE
hardattacks = TRUE
discovery_points = 1000

/mob/living/simple_animal/hostile/monkedome_fauna/Initialize(mapload)
. = ..()
set_varspeed(move_to_delay/10)


/mob/living/simple_animal/hostile/monkedome_fauna/bullet_act(obj/item/projectile/bullet)
if(!stat)
Aggro()
..()

/mob/living/simple_animal/hostile/monkedome_fauna/hitby(atom/movable/weapon, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
if(!stat)
Aggro()
..()


Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/mob/living/simple_animal/hostile/monkedome_fauna/spore
name = "spore"
icon = 'monkestation/icons/mob/monkedome/monkedome_monsters.dmi'
icon_state = "spore"
icon_living = "spore"
icon_dead = "spore_dead"

environment_smash = ENVIRONMENT_SMASH_NONE

ranged = TRUE
projectiletype = /obj/item/projectile/spore_shot

health = 10
maxHealth = 10

melee_damage = 0
obj_damage = 0

del_on_death = TRUE

faction = list("dome","hostile")

ranged_message = "shoots ooze at"
ranged_cooldown_time = 5 SECONDS
retreat_distance = 4
minimum_distance = 6

check_friendly_fire = TRUE

move_to_delay = 0.25 SECONDS

//Projectile

/obj/item/projectile/spore_shot
name = "rock"
icon_state = "bullet"
pass_flags = PASSTABLE
damage = 2
flag = "bullet"
var/list/static/possible_reagents = list(
/datum/reagent/toxin/acid,
/datum/reagent/toxin/spore,
/datum/reagent/drug/space_drugs,
/datum/reagent/toxin/mushroom_powder,
/datum/reagent/toxin/bungotoxin,
)

/obj/item/projectile/spore_shot/on_hit(atom/target, blocked, pierce_hit)
. = ..()
if(ishuman(target))
var/mob/living/carbon/human/human_target = target

var/reagent_amount = rand(15,45)
var/datum/reagents/spore_reagents = new()
spore_reagents.my_atom = src
spore_reagents.add_reagent(pick(possible_reagents), reagent_amount)

if(human_target.wear_suit && human_target.head && isclothing(human_target.wear_suit) && isclothing(human_target.head))
var/obj/item/clothing/clothing_suit = human_target.wear_suit
var/obj/item/clothing/clothing_head = human_target.head
if (clothing_suit.clothing_flags & clothing_head.clothing_flags & THICKMATERIAL)
spore_reagents.trans_to(target, reagent_amount, method = TOUCH, transfered_by = src)
return

spore_reagents.trans_to(target, reagent_amount, method = INJECT, transfered_by = src)
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/mob/living/simple_animal/hostile/monkedome_fauna/walker_snake
name = "walker snake"
icon = 'monkestation/icons/mob/monkedome/monkedome_monsters.dmi'
icon_state = "walker_snake"
icon_living = "walker_snake"
icon_dead = "walker_snake_dead"

ranged = TRUE
projectiletype = /obj/item/projectile/walker_snake_rock

health = 35
maxHealth = 35

melee_damage = 3
obj_damage = 15

faction = list("dome","hostile")

ranged_message = "hurls a rock at"
ranged_cooldown_time = 5 SECONDS
retreat_distance = 2
minimum_distance = 3

check_friendly_fire = TRUE

move_to_delay = 0.3 SECONDS

//Projectile

/obj/item/projectile/walker_snake_rock
name = "rock"
icon_state = "bullet"
pass_flags = PASSTABLE
damage = 5
flag = "bullet"
Binary file not shown.