From 5762ef8a255be886b97347e657c022e9e970176a Mon Sep 17 00:00:00 2001 From: Razgriz Date: Thu, 19 Nov 2020 20:45:37 -0700 Subject: [PATCH] Metroid 1.0 Finally. Adds the full SR388 metroid bestiary. You got baby metroids, super metroids, alpha, gamma, zeta, omega, and queen. They are weak to bullet-type weapons and most are super weak to bombs. The baby and supers act just like slimes in that they will succ head, so click them to get them off. The rest can still gain nutrition via melee and vore. If they get enough nutrition, they will evolve to their next phase. Cold guns will do 100 damage per tick to baby and super metroids. The rest lose their cold vulnerability. --- .../simple_mob/subtypes/metroid/metObjects.dm | 2 +- .../simple_mob/subtypes/metroid/metTypes.dm | 117 +++++------------- 2 files changed, 33 insertions(+), 86 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/metroid/metObjects.dm b/code/modules/mob/living/simple_mob/subtypes/metroid/metObjects.dm index 5520c46263..70290def22 100644 --- a/code/modules/mob/living/simple_mob/subtypes/metroid/metObjects.dm +++ b/code/modules/mob/living/simple_mob/subtypes/metroid/metObjects.dm @@ -39,4 +39,4 @@ amount_grown += rand(0,2) if(amount_grown >= 100) new metroid_type(src.loc, src) - qdel(src) + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm b/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm index b06bbc168e..d78c44387c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm +++ b/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm @@ -1,81 +1,41 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. /* -//The metroids' base variables! +//All the REAL types of metroids! */ +//Remember to add vent crawling at some point. - - - - -/* - - - - layer = MOB_LAYER + 1 - - - var/obj/machinery/atmospherics/unary/vent_pump/entry_vent //Graciously stolen from spider code, for vent travel. - - - - - - - var/mob/living/victim = null // the person the metroid is currently feeding on - var/optimal_combat = FALSE // Used to dumb down the combat AI somewhat. If true, the metroid tends to be really dangerous to fight alone due to stunlocking. - var/evo_point = 0 - var/evo_limit = 0 - var/next = null - - - - - - - - - - - -/mob/living/simple_mob/metroid //activate noms - vore_active = 1 - vore_pounce_chance = 25 - vore_icons = SA_ICON_LIVING -*/ - -/*/mob/living/simple_mob/metroid/pet //Security's pet +/mob/living/simple_mob/metroid/pet //Security's pet name = "Jellybrig" desc = "This one scree's happily at you." - ai_holder_type = /datum/ai_holder/simple_mob/metroid/passive + ai_holder_type = /datum/ai_holder/simple_mob/juvenile_metroid/passive + say_list_type = /datum/say_list/metroid faction = "neutral" maxHealth = 400 health = 400 melee_damage_lower = 2 - melee_damage_upper = 9 - move_to_delay = 6 - harm_intent_damage = 1 - speak_chance = 1 - stop_when_pulled = 1 + melee_damage_upper = 6 + movement_cooldown = 6 + harm_intent_damage = 3 armor = list( "melee" = 50, "bullet" = -90, "laser" = 0, "energy" = -50, - "bomb" = 70, + "bomb" = -100, "bio" = 100, "rad" = 100) vore_active = 1 - vore_bump_chance = 0 + vore_bump_chance = 25 vore_capacity = 3 vore_icons = SA_ICON_LIVING vore_pounce_chance = 90 //Don't punch or grab this guy. He will grab you instead! swallowTime = 1 SECONDS //Hungry little bastards. vore_default_mode = DM_HOLD - vore_digest_chance = 1 // Chance to switch to digest mode if resisted + vore_digest_chance = 1 //Chance to switch to digest mode if resisted vore_absorb_chance = 0 - vore_escape_chance = 10 -*/ + vore_escape_chance = 10 //Chance to escape if resisted. + /mob/living/simple_mob/metroid/mine name = "Mochtroid" @@ -88,12 +48,13 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. next = null vore_active = 1 - vore_pounce_chance = 50 + vore_pounce_chance = 25 vore_icons = SA_ICON_LIVING + /mob/living/simple_mob/metroid/mine/init_vore() ..() var/obj/belly/B = vore_selected - B.digest_burn = 1 + B.digest_burn = .5 B.digest_brute = 0 @@ -102,7 +63,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. ..() if(prob(20)) visible_message("\The [src] dropped some toy!") -// var/location = get_turf(src) + new /obj/item/toy/figure/bounty_hunter(loc, src) @@ -120,7 +81,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. icon_living = "baby" icon_state = "baby" ai_holder_type = /datum/ai_holder/simple_mob/juvenile_metroid - speak_emote = list("churrs") + say_list_type = /datum/say_list/metroid health = 200 maxHealth = 200 melee_damage_lower = 1 @@ -182,7 +143,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. icon_living = "metroid" icon_state = "metroid" ai_holder_type = /datum/ai_holder/simple_mob/juvenile_metroid - speak_emote = list("churrs") + say_list_type = /datum/say_list/metroid health = 250 maxHealth = 250 melee_damage_lower = 2 @@ -191,7 +152,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. armor = list( "melee" = 0, "bullet" = -50, - "laser" = 90, + "laser" = 70, "energy" = 10, "bomb" = -100, "bio" = 100, @@ -252,7 +213,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. icon_living = "alpha" icon_state = "alpha" ai_holder_type = /datum/ai_holder/simple_mob/juvenile_metroid - say_list_type = /datum/say_list/metroid/gamma + say_list_type = /datum/say_list/metroid movement_cooldown = 1 health = 300 maxHealth = 300 @@ -261,7 +222,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. melee_miss_chance = 5 attacktext = list("rammed") armor = list( - "melee" = 50, + "melee" = 40, "bullet" = 15, "laser" = 50, "energy" = 60, @@ -325,14 +286,13 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. icon_living = "gamma" icon_state = "gamma" ai_holder_type = /datum/ai_holder/simple_mob/juvenile_metroid - say_list_type = /datum/say_list/metroid/gamma - movement_cooldown = 1 + say_list_type = /datum/say_list/metroid + movement_cooldown = 1.5 health = 400 maxHealth = 400 melee_damage_lower = 10 melee_damage_upper = 20 melee_miss_chance = 5 - ranged_attack_delay = 5 SECOND attacktext = list("rammed") armor = list( "melee" = 55, @@ -346,10 +306,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. faction = "metroids" max_nutrition = 2200 nutrition = 0 - - //move_shoot = 1 //Move and shoot at the same time. - //ranged_cooldown = 0 //What the starting cooldown is on ranged attacks - //ranged_cooldown_time = 150 //How long, in deciseconds, the cooldown of ranged attacks is + ranged_cooldown_time = 5 SECOND projectilesound = 'sound/weapons/taser2.ogg' projectiletype = /obj/item/projectile/beam/stun/weak @@ -389,7 +346,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. vore_escape_chance = 30 -/datum/say_list/metroid/gamma +/datum/say_list/metroid speak = list("Skree.", "Eree.", "Errer?") emote_see = list("floats about","looks around", "rubs its talons") emote_hear = list("chitters") @@ -431,7 +388,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. attacktext = list("slashed") armor = list( "melee" = 70, - "bullet" = 15, + "bullet" = 0, "laser" = 50, "energy" = 60, "bomb" = 10, @@ -443,11 +400,8 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. nutrition = 0 makes_dirt = TRUE - //move_shoot = 1 //Move and shoot at the same time. - //ranged_cooldown = 0 //What the starting cooldown is on ranged attacks - //ranged_cooldown_time = 60 //How long, in deciseconds, the cooldown of ranged attacks is -// rapid = 0 // Three-round-burst fire mode //decided to disalbe for the zeta -// projectiletype = /obj/item/projectile/energy/metroidacid // The projectiles I shoot + ranged_cooldown_time = 5 SECOND + projectiletype = /obj/item/projectile/energy/metroidacid //The projectiles I shoot projectilesound = 'sound/weapons/slashmiss.ogg' // The sound I make when I do it @@ -531,7 +485,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. attacktext = list("slashed") armor = list( "melee" = 75, - "bullet" = 40, + "bullet" = 20, "laser" = 55, "energy" = 60, "bomb" = 10, @@ -542,10 +496,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. max_nutrition = 2200 nutrition = 0 makes_dirt = TRUE - //move_shoot = 1 //Move and shoot at the same time. - //ranged_cooldown = 0 //What the starting cooldown is on ranged attacks - //ranged_cooldown_time = 150 //How long, in deciseconds, the cooldown of ranged attacks is -// rapid = 0 // Three-round-burst fire mode + ranged_cooldown_time = 2.5 SECOND projectiletype = /obj/item/projectile/beam/smalllaser // The projectiles I shoot projectilesound = 'sound/weapons/Flamer.ogg' // The sound I make when I do it @@ -627,7 +578,6 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. melee_damage_lower = 30 melee_damage_upper = 60 melee_miss_chance = 5 - ranged_attack_delay = 1 SECOND attack_armor_pen = 20 attacktext = list("gnashed") armor = list( @@ -643,10 +593,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world. max_nutrition = 2200 nutrition = 0 makes_dirt = TRUE - //move_shoot = 1 //Move and shoot at the same time. - //ranged_cooldown = 0 //What the starting cooldown is on ranged attacks - //ranged_cooldown_time = 120 //How long, in deciseconds, the cooldown of ranged attacks is -// rapid = 1 // Three-round-burst fire mode + ranged_cooldown_time = 1 SECOND projectiletype = /obj/item/projectile/energy/metroidacid // The projectiles I shoot projectilesound = 'sound/weapons/slashmiss.ogg' // The sound I make when I do it