[MIRROR] Adds unique projectile hit messages to simplemobs

This commit is contained in:
Chompstation Bot
2021-10-28 01:07:42 +00:00
parent 4f36828e4c
commit eef3a58cfb
54 changed files with 318 additions and 31 deletions

View File

@@ -1,6 +1,7 @@
// Reorganized and somewhat cleaned up.
// AI code has been made into a datum, inside the AI module folder.
/mob/living/simple_mob
name = "animal"
desc = ""
@@ -59,6 +60,7 @@
var/harm_intent_damage = 3 // How much an unarmed harm click does to this mob.
var/list/loot_list = list() // The list of lootable objects to drop, with "/path = prob%" structure
var/obj/item/weapon/card/id/myid// An ID card if they have one to give them access to stuff.
var/organ_names = /decl/mob_organ_names //'False' bodyparts that can be shown as hit by projectiles in place of the default humanoid bodyplan.
//Mob environment settings
var/minbodytemp = 250 // Minimum "okay" temperature in kelvin
@@ -176,11 +178,18 @@
if(has_eye_glow)
add_eyes()
<<<<<<< HEAD
if(!IsAdvancedToolUser()) //CHOMPSTATION edit: Moved here so the verb is useable before initialising vorgans.
verbs |= /mob/living/simple_mob/proc/animal_nom
verbs |= /mob/living/proc/shred_limb
verbs |= /mob/living/simple_mob/proc/nutrition_heal
||||||| parent of e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250
=======
if(organ_names)
organ_names = GET_DECL(organ_names)
>>>>>>> e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250
return ..()
/mob/living/simple_mob/Destroy()
@@ -297,4 +306,7 @@
if(understands_common && speaking?.name == LANGUAGE_GALCOM)
return TRUE
return ..()
//Vorestation Add End
//Vorestation Add End
/decl/mob_organ_names
var/list/hit_zones = list("body") //When in doubt, it's probably got a body.

View File

@@ -6,6 +6,8 @@
response_disarm = "shoos"
response_harm = "hits"
organ_names = /decl/mob_organ_names/quadruped
ai_holder_type = /datum/ai_holder/simple_mob/melee
internal_organs = list(\
@@ -20,3 +22,6 @@
butchery_loot = list(\
/obj/item/stack/animalhide = 3\
)
/decl/mob_organ_names/quadruped //Most subtypes have this basic body layout.
hit_zones = list("head", "torso", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "tail")

View File

@@ -16,6 +16,8 @@
attacktext = list("nipped")
friendly = list("prods")
organ_names = /decl/mob_organ_names/borer
status_flags = CANPUSH
pass_flags = PASSTABLE
movement_cooldown = 5
@@ -266,3 +268,7 @@
continue
else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
to_chat(M, "[src.true_name] whispers to [host], \"[message]\"")
/decl/mob_organ_names/borer
hit_zones = list("head", "central segment", "tail segment")

View File

@@ -20,6 +20,8 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
response_harm = "kicks"
attacktext = list("pecked")
organ_names = /decl/mob_organ_names/chicken
has_langs = list("Bird")
say_list_type = /datum/say_list/chicken
@@ -159,9 +161,16 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
emote_hear = list("cheeps")
emote_see = list("pecks at the ground","flaps its tiny wings")
<<<<<<< HEAD
//YW Addition
/mob/living/simple_mob/animal/passive/chicken/clucky
name = "Commander Clucky"
real_name = "Commander Clucky"
desc = "It's Commander Clucky!"
||||||| parent of e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250
=======
/decl/mob_organ_names/chicken
hit_zones = list("head", "body", "left wing", "right wing", "left leg", "right leg", "tendies")
>>>>>>> e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250

View File

@@ -15,6 +15,8 @@
response_harm = "kicks"
attacktext = list("kicked")
organ_names = /decl/mob_organ_names/cow
say_list_type = /datum/say_list/cow
meat_amount = 6
@@ -64,4 +66,7 @@
/datum/say_list/cow
speak = list("moo?","moo","MOOOOOO")
emote_hear = list("brays", "moos","moos hauntingly")
emote_see = list("shakes its head")
emote_see = list("shakes its head")
/decl/mob_organ_names/cow
hit_zones = list("head", "torso", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "udder")

View File

@@ -83,6 +83,9 @@
response_disarm = "gently pushes aside"
response_harm = "punches"
organ_names = /decl/mob_organ_names/spider
melee_damage_lower = 18
melee_damage_upper = 30
attack_sharp = TRUE
@@ -141,3 +144,6 @@
if(poison_per_bite)
poison_per_bite *= 1.3
/decl/mob_organ_names/spider
hit_zones = list("cephalothorax", "abdomen", "left forelegs", "right forelegs", "left hind legs", "right hind legs", "pedipalp", "mouthparts")

View File

@@ -16,6 +16,8 @@
response_harm = "stomps"
friendly = "pinches"
organ_names = /decl/mob_organ_names/crab
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/crab
say_list_type = /datum/say_list/crab
@@ -54,4 +56,7 @@
/obj/item/weapon/reagent_containers/food/snacks/meat/crab
name = "meat"
desc = "A chunk of meat."
icon_state = "crustacean-meat"
icon_state = "crustacean-meat"
/decl/mob_organ_names/crab
hit_zones = list("cephalothorax", "abdomen", "left walking legs", "right walking legs", "left swimming legs", "right swimming legs", "left pincer", "right pincer")

View File

@@ -18,6 +18,8 @@
plane = TURF_PLANE
layer = UNDERWATER_LAYER
organ_names = /decl/mob_organ_names/fish
holder_type = /obj/item/weapon/holder/fish
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish
@@ -320,3 +322,6 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/murkin)
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif/murkfish
/decl/mob_organ_names/fish
hit_zones = list("head", "body", "dorsal fin", "left pectoral fin", "right pectoral fin", "tail fin")

View File

@@ -8,6 +8,8 @@
icon_dead = "yithian_dead"
icon = 'icons/jungle.dmi'
organ_names = /decl/mob_organ_names/yithian
// Same stats as lizards.
health = 5
maxHealth = 5
@@ -23,7 +25,15 @@
icon_dead = "tindalos_dead"
icon = 'icons/jungle.dmi'
organ_names = /decl/mob_organ_names/tindalos
// Same stats as lizards.
health = 5
maxHealth = 5
mob_size = MOB_MINISCULE
mob_size = MOB_MINISCULE
/decl/mob_organ_names/yithian
hit_zones = list("head", "abdomen", "left foreleg", "right foreleg", "left hind leg", "right hind leg")
/decl/mob_organ_names/tindalos
hit_zones = list("head", "thorax", "abdomen", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "left middle leg", "right middle leg")

View File

@@ -14,6 +14,8 @@
response_disarm = "pushes aside"
response_harm = "hits"
organ_names = /decl/mob_organ_names/penguin
harm_intent_damage = 5
melee_damage_lower = 10
melee_damage_upper = 15
@@ -25,3 +27,6 @@
name = "Tux"
desc = "A penguin that has been known to associate with gnus."
speak_emote = list("interjects")
/decl/mob_organ_names/penguin
hit_zones = list("chest", "left leg", "right leg", "left flipper", "right flipper", "head")

View File

@@ -74,10 +74,10 @@
/datum/ai_holder/simple_mob/passive/possum/poppy
var/static/list/aaa_words = list(
"delaminat",
"meteor",
"fire",
"breach",
"delaminat",
"meteor",
"fire",
"breach",
"loose",
"level 7",
"level seven",
@@ -127,6 +127,7 @@
response_disarm = "gently pushes aside"
response_harm = "stamps on"
density = FALSE
organ_names = /decl/mob_organ_names/possum
minbodytemp = 223
maxbodytemp = 323
universal_speak = FALSE
@@ -195,5 +196,12 @@
icon_dead = "poppy_dead"
icon_rest = "poppy_dead"
tt_desc = "Didelphis astrum salutem"
organ_names = /decl/mob_organ_names/poppy
holder_type = /obj/item/weapon/holder/possum/poppy
ai_holder_type = /datum/ai_holder/simple_mob/passive/possum/poppy
/decl/mob_organ_names/possum
hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "pouch")
/decl/mob_organ_names/poppy
hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "pouch", "cute little jacket")

View File

@@ -29,6 +29,7 @@
response_help = "pets"
response_disarm = "gently moves aside"
response_harm = "swats"
organ_names = /decl/mob_organ_names/bird
say_list_type = /datum/say_list/bird
holder_type = /obj/item/weapon/holder/bird
@@ -84,3 +85,6 @@
tt_desc = "E Streptopelia risoria" // This is actually disputed IRL but since we can't tell the future it'll stay the same for 500+ years.
icon_scale_x = 0.5
icon_scale_y = 0.5
/decl/mob_organ_names/bird
hit_zones = list("head", "chest", "left leg", "right leg", "left wing", "right wing")

View File

@@ -89,6 +89,7 @@
icon_living = "corgi"
icon_dead = "corgi_dead"
holder_type = /obj/item/weapon/holder/corgi
organ_names = /decl/mob_organ_names/corgi
/mob/living/simple_mob/animal/passive/dog/corgi/puppy
name = "corgi puppy"
@@ -280,4 +281,7 @@
desc = "It's a brittany spaniel."
icon_state = "brittany"
icon_living = "brittany"
icon_dead = "brittany_dead"
icon_dead = "brittany_dead"
/decl/mob_organ_names/corgi
hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "tail", "heart") //You monster.

View File

@@ -38,6 +38,8 @@
attack_edge = 1 // Razor-edged wings, and 'claws' made for digging through ice.
attacktext = list("nipped", "bit", "cut", "clawed")
organ_names = /decl/mob_organ_names/bird
tame_items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread = 90,
/obj/item/weapon/reagent_containers/food/snacks/slice/bread = 25

View File

@@ -47,6 +47,8 @@
base_attack_cooldown = 1.5 SECONDS
attacktext = list("nipped", "bit", "pinched")
organ_names = /decl/mob_organ_names/frostfly
projectiletype = /obj/item/projectile/energy/blob/freezing
special_attack_cooldown = 5 SECONDS
@@ -170,3 +172,6 @@
F.energy = max(0, F.energy - 1) // The AI will eventually flee.
/decl/mob_organ_names/frostfly
hit_zones = list("head", "thorax", "abdomen", "left vestigal wing", "right vestigal wing", "left legs", "right legs")

View File

@@ -52,6 +52,8 @@
attacktext = list("bit", "buffeted", "slashed")
organ_names = /decl/mob_organ_names/smallflying
tame_items = list(
/obj/item/weapon/reagent_containers/food/snacks/grown = 90,
/obj/item/weapon/reagent_containers/food/snacks/meat/crab = 10,
@@ -123,3 +125,6 @@
return
else if(prob(1))
hostile = initial(hostile)
/decl/mob_organ_names/smallflying
hit_zones = list("body", "left wing", "right wing") //For flying things too tiny to be granular

View File

@@ -58,6 +58,9 @@
response_disarm = "nudges"
response_harm = "kicks"
organ_names = /decl/mob_organ_names/hare
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
say_list_type = /datum/say_list/hare
@@ -65,4 +68,7 @@
/datum/say_list/hare
speak = list("Snrf...","Crk!")
emote_hear = list("crackles","sniffles")
emote_see = list("stomps the ground", "sniffs the air", "chews on something")
emote_see = list("stomps the ground", "sniffs the air", "chews on something")
/decl/mob_organ_names/hare
hit_zones = list("head", "chest", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "left head spike", "right head spike")

View File

@@ -81,6 +81,8 @@
attacktext = list("clawed", "pinched", "crushed")
speak_emote = list("clicks")
organ_names = /decl/mob_organ_names/crab
ai_holder_type = /datum/ai_holder/simple_mob/melee/hooligan
say_list_type = /datum/say_list/crab

View File

@@ -47,6 +47,8 @@
base_attack_cooldown = 2 SECONDS
attacktext = list("gouged", "bit", "cut", "clawed", "whipped")
organ_names = /decl/mob_organ_names/kururak
armor = list(
"melee" = 30,
"bullet" = 15,
@@ -421,3 +423,6 @@
evasion = 20
bleeding_rate_percent = 0.7
attack_speed_percent = 0.8
/decl/mob_organ_names/kururak
hit_zones = list("head", "chest", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "far left tail", "far right tail", "left middle tail", "right middle tail")

View File

@@ -69,6 +69,8 @@
attack_sharp = TRUE
attacktext = list("nipped", "bit", "pinched")
organ_names = /decl/mob_organ_names/leech
armor = list(
"melee" = 10,
"bullet" = 15,
@@ -497,3 +499,6 @@
holder.a_intent = I_HURT
else
holder.a_intent = I_HURT
/decl/mob_organ_names/leech
hit_zones = list("mouthparts", "central segment", "tail segment")

View File

@@ -48,6 +48,8 @@
base_attack_cooldown = 1.5 SECONDS
attacktext = list("nipped", "bit", "pinched")
organ_names = /decl/mob_organ_names/moth
projectiletype = /obj/item/projectile/energy/blob
special_attack_cooldown = 10 SECONDS
@@ -78,7 +80,6 @@
threaten_sound = 'sound/effects/spray3.ogg'
stand_down_sound = 'sound/effects/squelch1.ogg'
/obj/effect/effect/smoke/elemental/mothspore
name = "spore cloud"
desc = "A dust cloud filled with disorienting bacterial spores."
@@ -141,3 +142,6 @@
if(energy >= 20)
return TRUE
return FALSE
/decl/mob_organ_names/moth
hit_zones = list("head", "thorax", "abdomen", "left forewing", "left hindwing", "right forewing", "right hindwing", "left foreleg", "right foreleg", "left hindleg", "right hindleg")

View File

@@ -29,6 +29,8 @@
response_disarm = "rolls over"
response_harm = "stomps on"
organ_names = /decl/mob_organ_names/pillbug
armor = list(
"melee" = 30,
"bullet" = 10,
@@ -39,7 +41,6 @@
"rad" = 100
)
// The frostfly's body is incredibly cold at all times, natural resistance to things trying to burn it.
armor_soak = list(
"melee" = 10,
"bullet" = 0,
@@ -48,4 +49,7 @@
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
)
/decl/mob_organ_names/pillbug
hit_zones = list("cephalon", "pereon", "pleon", "left forelegs", "right forelegs", "left hind legs", "right hind legs")

View File

@@ -42,6 +42,8 @@
melee_attack_delay = 1 SECOND
attacktext = list("mauled")
organ_names = /decl/mob_organ_names/savik
player_msg = "You have the ability to <b>berserk at will</b>, which will grant strong physical bonuses for \
a short period of time, however it will tire you and you will be much weaker for awhile after it expires."
@@ -79,4 +81,13 @@
set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards."
set category = "Abilities"
<<<<<<< HEAD
add_modifier(/datum/modifier/berserk, 30 SECONDS)
||||||| parent of e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250
add_modifier(/datum/modifier/berserk, 30 SECONDS)
=======
add_modifier(/datum/modifier/berserk, 30 SECONDS)
/decl/mob_organ_names/savik
hit_zones = list("head", "torso", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "right bone plate", "left bone plate", "tail", "left claw", "right claw")
>>>>>>> e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250

View File

@@ -55,6 +55,8 @@
attack_edge = TRUE
attacktext = list("gouged")
organ_names = /decl/mob_organ_names/shantak
say_list_type = /datum/say_list/shantak
/datum/say_list/shantak
@@ -107,3 +109,6 @@
ai_holder_type = /datum/ai_holder/simple_mob/passive
makes_dirt = 0
faction = "neutral"
/decl/mob_organ_names/shantak
hit_zones = list("head", "torso", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "tail", "mane", "snout")

View File

@@ -20,6 +20,8 @@
response_disarm = "gently pushes aside the"
response_harm = "hits the"
organ_names = /decl/mob_organ_names/smallflying
harm_intent_damage = 10
melee_damage_lower = 5

View File

@@ -51,6 +51,8 @@
attack_sound = 'sound/weapons/bite.ogg'
attacktext = list("bitten")
organ_names = /decl/mob_organ_names/fish
meat_amount = 1
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat

View File

@@ -21,6 +21,8 @@
attacktext = list("pecked")
attack_sound = 'sound/weapons/bite.ogg'
organ_names = /decl/mob_organ_names/goose
has_langs = list("Bird")
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
@@ -41,4 +43,7 @@
set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards."
set category = "Abilities"
add_modifier(/datum/modifier/berserk, 30 SECONDS)
add_modifier(/datum/modifier/berserk, 30 SECONDS)
/decl/mob_organ_names/goose
hit_zones = list("head", "chest", "left leg", "right leg", "left wing", "right wing", "neck")

View File

@@ -29,6 +29,8 @@
attacktext = list("slammed")
organ_names = /decl/mob_organ_names
ai_holder_type = /datum/ai_holder/simple_mob/inert
mob_class = MOB_CLASS_ABERRATION // It's a monster.

View File

@@ -7,6 +7,8 @@
pass_flags = PASSBLOB | PASSTABLE
faction = "blob"
organ_names = /decl/mob_organ_names/blob
heat_damage_per_tick = 0
cold_damage_per_tick = 0
min_oxy = 0
@@ -82,3 +84,6 @@
break
return ally
/decl/mob_organ_names/blob
hit_zones = list("mass")

View File

@@ -24,6 +24,8 @@
attack_sound = 'sound/effects/slime_squish.ogg'
say_list_type = /datum/say_list/spore
organ_names = /decl/mob_organ_names/spore
var/mob/living/carbon/human/infested = null // The human this thing is totally not making into a zombie.
var/can_infest = FALSE
var/is_infesting = FALSE
@@ -151,3 +153,6 @@
if(helpers)
to_chat(src, span("notice", "Your attack is assisted by [helpers] other spore\s."))
return damage_to_do
/decl/mob_organ_names/spore
hit_zones = list("sporangium", "stolon", "sporangiophore")

View File

@@ -22,8 +22,13 @@
attacktext = list("attacked")
attack_sound = 'sound/items/bikehorn.ogg'
organ_names = /decl/mob_organ_names/clown
say_list_type = /datum/say_list/clown
/datum/say_list/clown
speak = list("HONK", "Honk!", "Welcome to clown planet!")
emote_see = list("honks")
emote_see = list("honks")
/decl/mob_organ_names/clown
hit_zones = list("head", "torso", "pie-hole", "honker", "left funny bone", "right funny bone", "left foot", "right foot", "unmentionables")

View File

@@ -15,6 +15,8 @@
health = 150 // Point of human crit, as of commenting
maxHealth = 150
organ_names = /decl/mob_organ_names/humanoid
// Most humans leave a corpse
var/corpse = null
@@ -23,4 +25,7 @@
if(corpse)
new corpse (src.loc)
qdel(src)
return
return
/decl/mob_organ_names/humanoid
hit_zones = list("head", "torso", "left leg", "right leg", "left arm", "right arm", "left hand", "right hand", "left foot", "right foot") //Same as real people!

View File

@@ -54,6 +54,8 @@
response_disarm = "gently pushes aside"
response_harm = "hits"
organ_names = /decl/mob_organ_names/combatdrone
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening
say_list_type = /datum/say_list/malf_drone
@@ -107,3 +109,6 @@
// It won't wander away from its spawn point
/mob/living/simple_mob/mechanical/combat_drone/event
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/event
/decl/mob_organ_names/combatdrone
hit_zones = list("chassis", "comms array", "sensor suite", "left weapons module", "right weapons module", "maneuvering thruster")

View File

@@ -40,6 +40,8 @@
response_disarm = "gently pushes aside"
response_harm = "hits"
organ_names = /decl/mob_organ_names/miningdrone
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening
say_list_type = /datum/say_list/malf_drone
@@ -124,3 +126,6 @@
src.Beam(OB, icon_state = "rped_upgrade", time = 1 SECONDS)
for(var/obj/item/I in my_storage)
my_storage.remove_from_storage(I, OB)
/decl/mob_organ_names/miningdrone
hit_zones = list("chassis", "comms array", "sensor suite", "left excavator module", "right excavator module", "maneuvering thruster")

View File

@@ -16,6 +16,8 @@
harm_intent_damage = 3
friendly = "hugs"
organ_names = /decl/mob_organ_names/golem
melee_damage_lower = 30 // It has a built in esword.
melee_damage_upper = 30
attack_armor_pen = 20
@@ -151,3 +153,6 @@
/mob/living/simple_mob/mechanical/technomancer_golem/special_post_animation(atom/A)
casting = FALSE
ranged_post_animation(A)
/decl/mob_organ_names/golem
hit_zones = list("helmet", "cuirass", "left tasset", "right tasset", "left gauntlet", "right gauntlet", "weapon")

View File

@@ -19,6 +19,8 @@
attacktext = list("clawed")
projectilesound = 'sound/weapons/Gunshot_old.ogg'
organ_names = /decl/mob_organ_names/hivebot
ai_holder_type = /datum/ai_holder/simple_mob/hivebot
say_list_type = /datum/say_list/hivebot
@@ -52,4 +54,13 @@
pointblank = TRUE
conserve_ammo = TRUE
firing_lanes = TRUE
<<<<<<< HEAD
can_flee = FALSE // Fearless dumb machines.
||||||| parent of e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250
can_flee = FALSE // Fearless dumb machines.
=======
can_flee = FALSE // Fearless dumb machines.
/decl/mob_organ_names/hivebot
hit_zones = list("central chassis", "positioning servo", "head", "sensor suite", "manipulator arm", "shoulder weapon mount", "weapons array", "front right leg", "front left leg", "rear left leg", "rear right leg")
>>>>>>> e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250

View File

@@ -118,6 +118,8 @@
icon_state = "red"
icon_living = "red"
organ_names = /decl/mob_organ_names/hivebotsiege
player_msg = "You are capable of firing <b>very long range bombardment attacks</b>.<br>\
To use, click on a tile or enemy at a long range. Note that the projectile arcs in the air, \
so it will fly over everything inbetween you and the target.<br>\
@@ -153,4 +155,13 @@
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/fragmentation
name = "anti-personnel artillery hivebot"
desc = "A large robot capable of delivering fragmentation shells to rip apart their fleshy enemies."
<<<<<<< HEAD
projectiletype = /obj/item/projectile/arc/fragmentation
||||||| parent of e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250
projectiletype = /obj/item/projectile/arc/fragmentation
=======
projectiletype = /obj/item/projectile/arc/fragmentation
/decl/mob_organ_names/hivebotsiege
hit_zones = list("central chassis", "armor plating", "reinforced positioning servo", "head", "sensor suite", "manipulator arm", "heavy weapons mount", "advanced weapons array", "front right leg", "front left leg", "rear left leg", "rear right leg")
>>>>>>> e5346a3920... Merge pull request #11675 from VOREStation/upstream-merge-8250

View File

@@ -8,6 +8,7 @@
melee_damage_lower = 2
melee_damage_upper = 2
organ_names = /decl/mob_organ_names/hivebotsupport
// This hivebot supplies a general buff to nearby hivebots that improve their performance.
// Note that the commander itself does not receive the buff.
@@ -85,3 +86,6 @@
to_chat(src, span("notice", "You have resupplied \the [SM]."))
last_resupply = world.time
break // Only one resupply per pulse.
/decl/mob_organ_names/hivebotsupport
hit_zones = list("central chassis", "positioning servo", "head", "sensor suite", "manipulator arm", "battle analytics mount", "weapons array", "front right leg", "front left leg", "rear left leg", "rear right leg")

View File

@@ -9,6 +9,8 @@
melee_damage_lower = 3
melee_damage_upper = 3
attack_sound = 'sound/weapons/Egloves.ogg'
organ_names = /decl/mob_organ_names/hivebottank
// All tank hivebots apply a modifier to their target, and force them to attack them if they're AI controlled.
/mob/living/simple_mob/mechanical/hivebot/tank/apply_melee_effects(atom/A)
@@ -166,3 +168,6 @@
return -1 // complete projectile permutation
return (..(P))
/decl/mob_organ_names/hivebottank
hit_zones = list("central chassis", "armor plating", "component shielding", "positioning servo", "head", "sensor suite", "heavy manipulator arm", "shoulder weapon mount", "weapons array", "front right leg", "front left leg", "rear left leg", "rear right leg")

View File

@@ -28,6 +28,8 @@
projectiletype = /obj/item/projectile/beam
base_attack_cooldown = 2 SECONDS
organ_names = /decl/mob_organ_names/hoverpod
var/datum/effect/effect/system/ion_trail_follow/ion_trail
/mob/living/simple_mob/mechanical/mecha/hoverpod/manned
@@ -39,5 +41,8 @@
ion_trail.start()
return ..()
/mob/living/simple_mob/mechanical/mecha/hoverpod/Process_Spacemove(var/check_drift = 0)
return TRUE
/mob/living/simple_mob/mechanical/mecha/hoverpod/Process_Spacemove(var/check_drift = 0)
return TRUE
/decl/mob_organ_names/hoverpod
hit_zones = list("central chassis", "control module", "hydraulics", "left manipulator", "right manipulator", "left landing strut", "right landing strut", "maneuvering thruster", "sensor suite", "radiator", "power supply")

View File

@@ -14,6 +14,8 @@
maxHealth = 300
mob_size = MOB_LARGE
organ_names = /decl/mob_organ_names/mecha
// Very close to the base 'damage_absorption' var on the base mecha class.
armor = list(
"melee" = 20,
@@ -139,3 +141,6 @@
severity++ // This somewhat misleadingly makes it less severe.
deflect_sprite()
..(severity)
/decl/mob_organ_names/mecha
hit_zones = list("central chassis", "control module", "hydraulics", "left arm", "right arm", "left leg", "right leg", "sensor suite", "radiator", "power supply", "left equipment mount", "right equipment mount")

View File

@@ -45,6 +45,8 @@
attack_sound = 'sound/weapons/bladeslice.ogg'
attacktext = list("cut", "sliced")
organ_names = /decl/mob_organ_names/viscerator
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
/mob/living/simple_mob/mechanical/viscerator/death()
@@ -93,3 +95,6 @@
attack_armor_pen = 20
base_attack_cooldown = 10 // One attack a second or so.
movement_cooldown = 0.5
/decl/mob_organ_names/viscerator
hit_zones = list("chassis", "rotor blades", "sensor array")

View File

@@ -15,6 +15,8 @@
response_harm = "punches"
faction = "wards" // Needed as most human mobs are in neutral faction. The owner is generally except from any ward hostility regardless.
organ_names = /decl/mob_organ_names/ward
maxHealth = 15
health = 15
movement_cooldown = 0
@@ -39,4 +41,7 @@
/mob/living/simple_mob/mechanical/ward/IIsAlly(mob/living/L)
if(owner == L)
return TRUE
return ..()
return ..()
/decl/mob_organ_names/ward
hit_zones = list("chassis", "sensor array", "hover thruster")

View File

@@ -16,6 +16,7 @@
harm_intent_damage = 5
melee_damage_lower = 15 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you.
melee_damage_upper = 20
organ_names = /decl/mob_organ_names/artificer
attacktext = list("rammed")
attack_sound = 'sound/weapons/rapidslice.ogg'
construct_spells = list(/spell/aoe_turf/conjure/construct/lesser,
@@ -27,4 +28,7 @@
/spell/aoe_turf/conjure/grille,
/spell/targeted/occult_repair_aura,
/spell/targeted/construct_advanced/mend_acolyte
)
)
/decl/mob_organ_names/artificer
hit_zones = list("body", "carapace", "right manipulator", "left manipulator", "upper left appendage", "upper right appendage", "eye")

View File

@@ -17,6 +17,7 @@
attack_sharp = TRUE
attacktext = list("violently stabbed")
friendly = list("caresses")
organ_names = /decl/mob_organ_names/harvester
movement_cooldown = 0
// environment_smash = 1 // Whatever this gets renamed to, Harvesters need to break things
@@ -37,4 +38,7 @@
/spell/targeted/construct_advanced/inversion_beam,
/spell/targeted/construct_advanced/agonizing_sphere,
/spell/rune_write
)
)
/decl/mob_organ_names/harvester
hit_zones = list("cephalothorax", "eye", "carapace", "energy crystal", "mandible")

View File

@@ -19,6 +19,7 @@
attack_armor_pen = 60 //Being punched by a living, floating statue.
attacktext = list("smashed their armoured gauntlet into")
friendly = list("pats")
organ_names = /decl/mob_organ_names/juggernaut
mob_size = MOB_HUGE
@@ -141,4 +142,7 @@
return -1 // complete projectile permutation
return (..(P))
return (..(P))
/decl/mob_organ_names/juggernaut
hit_zones = list("body", "left pauldron", "right pauldron", "left arm", "right arm", "eye", "head", "crystaline spike")

View File

@@ -20,6 +20,8 @@
attack_armor_pen = 100 //It's a ghost/horror from beyond, I ain't gotta explain 100 AP
attacktext = list("drained the life from")
organ_names = /decl/mob_organ_names/shade
minbodytemp = 0
maxbodytemp = 4000
min_oxy = 0
@@ -45,4 +47,7 @@
ghostize()
qdel(src)
return
return
/decl/mob_organ_names/shade
hit_zones = list("spectral robe", "featureless visage", "haunting glow")

View File

@@ -19,6 +19,7 @@
attack_edge = 1
attacktext = list("slashed")
friendly = list("pinches")
organ_names = /decl/mob_organ_names/wraith
movement_cooldown = 0
attack_sound = 'sound/weapons/rapidslice.ogg'
construct_spells = list(/spell/targeted/ethereal_jaunt/shift,
@@ -30,4 +31,7 @@
/mob/living/simple_mob/construct/wraith/apply_melee_effects(var/atom/A)
if(isliving(A))
var/mob/living/L = A
L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS)
L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS)
/decl/mob_organ_names/wraith
hit_zones = list("body", "eye", "crystaline spike", "left claw", "right claw")

View File

@@ -24,6 +24,8 @@
attacktext = list("chomped")
attack_sound = 'sound/weapons/bite.ogg'
organ_names = /decl/mob_organ_names/abberation
speak_emote = list("gibbers")
ai_holder_type = /datum/ai_holder/simple_mob/melee
@@ -65,4 +67,7 @@
harm_intent_damage = 5
melee_damage_lower = 13
melee_damage_upper = 25
melee_damage_upper = 25
/decl/mob_organ_names/abberation
hit_zones = list("fleshy mass", "maw", "eye(?)", "orifice(?)")

View File

@@ -25,6 +25,8 @@
attacktext = list("gripped")
attack_sound = 'sound/hallucinations/growl1.ogg'
organ_names = /decl/mob_organ_names/faithless
ai_holder_type = /datum/ai_holder/simple_mob/melee
@@ -74,4 +76,7 @@
harm_intent_damage = 5
melee_damage_lower = 13
melee_damage_upper = 28
melee_damage_upper = 28
/decl/mob_organ_names/faithless
hit_zones = list("body", "left appendage", "right appendage", "shadowy tendrils", "head", "right stump", "left stump", "infernal eye")

View File

@@ -17,6 +17,8 @@
response_disarm = "pushes aside"
response_harm = "smacks"
organ_names = /decl/mob_organ_names/tomato
harm_intent_damage = 5
melee_damage_upper = 15
melee_damage_lower = 10
@@ -25,3 +27,6 @@
ai_holder_type = /datum/ai_holder/simple_mob/melee
meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat
/decl/mob_organ_names/tomato
hit_zones = list("flesh", "leaf", "mouth")

View File

@@ -25,6 +25,8 @@
attacktext = list("bitten")
attack_sound = 'sound/weapons/bite.ogg'
organ_names = /decl/mob_organ_names/tree
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
pixel_x = -16
@@ -40,4 +42,7 @@
..(null,"is hacked into pieces!")
playsound(src, 'sound/effects/woodcutting.ogg', 100, 1)
new /obj/item/stack/material/wood(loc)
qdel(src)
qdel(src)
/decl/mob_organ_names/tree
hit_zones = list("trunk", "branches", "twigs")

View File

@@ -40,6 +40,8 @@ var/list/_slime_default_emotes = list(
response_help = "pets"
organ_names = /decl/mob_organ_names/slime
// Atmos stuff.
minbodytemp = T0C-30
heat_damage_per_tick = 0
@@ -241,4 +243,7 @@ var/list/_slime_default_emotes = list(
/mob/living/simple_mob/slime/proc/squish()
playsound(src, 'sound/effects/slime_squish.ogg', 50, 0)
visible_message("<b>\The [src]</b> squishes!")
visible_message("<b>\The [src]</b> squishes!")
/decl/mob_organ_names/slime
hit_zones = list("cytoplasmic membrane")

View File

@@ -679,17 +679,23 @@
playsound(target_mob, "bullet_miss", 75, 1)
return FALSE
var/impacted_organ = parse_zone(def_zone)
if(istype(target_mob, /mob/living/simple_mob))
var/mob/living/simple_mob/SM = target_mob
var/decl/mob_organ_names/organ_plan = SM.organ_names
impacted_organ = pick(organ_plan.hit_zones)
//hit messages
if(silenced)
playsound(target_mob, hitsound, 5, 1, -1)
to_chat(target_mob, span("critical", "You've been hit in the [parse_zone(def_zone)] by \the [src]!"))
to_chat(target_mob, span("critical", "You've been hit in the [impacted_organ] by \the [src]!"))
else
var/volume = vol_by_damage()
playsound(target_mob, hitsound, volume, 1, -1)
// X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
target_mob.visible_message(
span("danger", "\The [target_mob] was hit in the [parse_zone(def_zone)] by \the [src]!"),
span("critical", "You've been hit in the [parse_zone(def_zone)] by \the [src]!")
span("danger", "\The [target_mob] was hit in the [impacted_organ] by \the [src]!"),
span("critical", "You've been hit in the [impacted_organ] by \the [src]!")
)
//admin logs