Merge pull request #2 from CHOMPstation/master

casino up to date test
This commit is contained in:
Shadowfire117
2019-08-09 10:00:11 +02:00
committed by GitHub
40 changed files with 651 additions and 201 deletions
@@ -16,9 +16,9 @@
ai_inactive = TRUE //Always off
show_stat_health = FALSE //We will do it ourselves
response_help = "pats the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pats"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 2
melee_damage_lower = 10
@@ -241,7 +241,7 @@
//Message
blob.visible_message("<b>[src.name]</b> collapses into a gooey blob!")
//Duration of the to_puddle iconstate that the blob starts with
sleep(13)
blob.update_icon() //Will remove the collapse anim
@@ -268,7 +268,7 @@
if(pulledby)
pulledby.stop_pulling()
stop_pulling()
//Stop healing if we are
if(blob.healing)
blob.healing.expire()
@@ -278,7 +278,7 @@
//Message
blob.visible_message("<b>[src.name]</b> reshapes into a humanoid appearance!")
//Duration of above animation
sleep(8)
@@ -303,7 +303,7 @@
var/obj/belly/B = belly
B.forceMove(src)
B.owner = src
//Get rid of friend blob
qdel(blob)
+7 -5
View File
@@ -34,7 +34,8 @@
"Parrot" = "parrot",
"Rabbit" = "rabbit",
"Bear" = "bear", //VOREStation Edit
"Raccoon" = "raccoon" //Chompstation Edit
"Raccoon" = "raccoon", //Chompstation Edit
"Rat" = "rat"//Chompstation Edit
)
var/global/list/possible_say_verbs = list(
@@ -43,7 +44,8 @@
"Beep" = list("beeps","beeps loudly","boops"),
"Chirp" = list("chirps","chirrups","cheeps"),
"Feline" = list("purrs","yowls","meows"),
"Canine" = list("yaps","barks","woofs")
"Canine" = list("yaps","barks","woofs"),
"Rodent" = list("squeaks", "SQUEAKS", "sqiks")//Chompstation Edit
)
var/obj/item/weapon/pai_cable/cable // The cable we produce and use when door or camera jacking
@@ -316,7 +318,7 @@
return
close_up()
/*CHOMPstation edit | redefined in pai_vr.dm
/mob/living/silicon/pai/proc/choose_chassis()
set category = "pAI Commands"
set name = "Choose Chassis"
@@ -329,11 +331,11 @@
if(!choice) return
icon_state = possible_chassis[choice]
finalized = alert("Look at your sprite. Is this what you wish to use?",,"No","Yes")
finalized = alert("Look at your sprite. Is this what you wish to use?",,"No","Yes")//CHOMPStation edit
chassis = possible_chassis[choice]
verbs |= /mob/living/proc/hide
*/
/mob/living/silicon/pai/proc/choose_verbs()
set category = "pAI Commands"
set name = "Choose Speech Verbs"
@@ -1,6 +1,9 @@
/mob/living/silicon/pai
var/people_eaten = 0
icon = 'icons/mob/pai_vr.dmi'
var/global/list/wide_chassis = list(
"rat"
)
/mob/living/silicon/pai/proc/pai_nom(var/mob/living/T in oview(1))
set name = "pAI Nom"
@@ -31,6 +34,13 @@
else if(people_eaten && resting)
icon_state = "[chassis]_rest_full"
if(chassis in wide_chassis)
icon = 'icons/mob/pai_vr64x64.dmi'
pixel_x = -16
else
icon = 'icons/mob/pai_vr.dmi'
pixel_x = 0
/mob/living/silicon/pai/update_icons() //And other functions cause this to occur, such as digesting someone.
..()
update_fullness_pai()
@@ -42,3 +52,21 @@
icon_state = "[chassis]_full"
else if(people_eaten && resting)
icon_state = "[chassis]_rest_full"
if(chassis in wide_chassis)
icon = 'icons/mob/pai_vr64x64.dmi'
pixel_x = -16
else
icon = 'icons/mob/pai_vr.dmi'
pixel_x = 0
//proc override to avoid pAI players being invisible while the chassis selection window is open
/mob/living/silicon/pai/proc/choose_chassis()
set category = "pAI Commands"
set name = "Choose Chassis"
var/choice
choice = input(usr,"What would you like to use for your mobile chassis icon?") as null|anything in possible_chassis
if(!choice) return
chassis = possible_chassis[choice]
verbs |= /mob/living/proc/hide
update_icon()
@@ -671,4 +671,12 @@
desc = "A mounted matter decompiling unit with fuel processor."
icon_state = "decompiler"
max_item_count = 10
decompiler = TRUE
decompiler = TRUE
// PLACEHOLDER SERVICE BORG BELLY
/obj/item/device/dogborg/sleeper/servborg
name = "Gourmet Gut"
desc = "An underslung microwave, with optional fuel processor."
icon_state = "decompiler"
max_item_count = 10
injection_chems = null
@@ -43,6 +43,7 @@
robot_modules["Janihound"] = /obj/item/weapon/robot_module/robot/scrubpup
robot_modules["Sci-borg"] = /obj/item/weapon/robot_module/robot/science
robot_modules["Pupdozer"] = /obj/item/weapon/robot_module/robot/engiedog
robot_modules["Service-borg"] = /obj/item/weapon/robot_module/robot/servborg
return 1
//Just add a new proc with the robot_module type if you wish to run some other vore code
@@ -567,6 +568,83 @@
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
..()
// SKYVAAL ADDED SERVICE BORG CODE
/obj/item/weapon/robot_module/robot/servborg
name = "Service Hound Module"
can_buckle = 1
sprites = list(
"Chef-borg" = "servborg",
"Booze-borg" = "boozeborg"
)
channels = list("Service" = 1)
can_be_pushed = 0
/obj/item/weapon/robot_module/robot/servborg/New(var/mob/living/silicon/robot/R)
var/datum/matter_synth/water = new /datum/matter_synth()
water.name = "Water reserves"
water.recharge_rate = 0.1 // Recharging water for plants - hehe drooly borg
water.max_energy = 1000
water.energy = 0
R.water_res = water
synths += water
// Dogborg Standard
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
src.modules += T
// PLACEHOLDER AS 'BRIGBELLY' UNTIL MICROWAVE BELLY SORTED
var/obj/item/device/dogborg/sleeper/servborg/B = new /obj/item/device/dogborg/sleeper/servborg(src)
B.water = water
src.modules += B
//Service Module Copy/Paste
src.modules += new /obj/item/weapon/gripper/service(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
src.modules += new /obj/item/weapon/material/minihoe(src)
src.modules += new /obj/item/weapon/material/knife/machete/hatchet(src)
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
src.modules += new /obj/item/weapon/storage/bag/plants(src)
src.modules += new /obj/item/weapon/robot_harvester(src)
src.modules += new /obj/item/weapon/material/knife(src)
src.modules += new /obj/item/weapon/material/kitchen/rollingpin(src)
src.modules += new /obj/item/device/multitool(src) //to freeze trays
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
M.stored_matter = 30
src.modules += M
src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src)
var/obj/item/weapon/flame/lighter/zippo/L = new /obj/item/weapon/flame/lighter/zippo(src)
L.lit = 1
src.modules += L
src.modules += new /obj/item/weapon/tray/robotray(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/service(src)
src.emag = new /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer(src)
var/datum/reagents/F = new/datum/reagents(50)
src.emag.reagents = F
F.my_atom = src.emag
F.add_reagent("beer2", 50)
src.emag.name = "Mickey Finn's Special Brew"
R.icon = 'icons/mob/widerobot_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
..()
/obj/item/weapon/robot_module/Reset(var/mob/living/silicon/robot/R)
R.pixel_x = initial(pixel_x)
R.pixel_y = initial(pixel_y)
@@ -16,9 +16,9 @@
turns_per_move = 3
speed = 4
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 10
@@ -15,9 +15,9 @@
speed = 4
turns_per_move = 5
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 8
melee_damage_lower = 15
@@ -46,7 +46,7 @@
desc = "It's Coffee, the other pet!"
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
response_harm = "stomps on"
//Sif Crabs
/mob/living/simple_animal/giant_crab
@@ -78,18 +78,18 @@
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
response_harm = "kicks"
friendly = "pinches"
speak_chance = 1
speak_emote = list("clicks")
emote_hear = list("clicks")
emote_see = list("clacks")
//Enemy version.
/mob/living/simple_animal/hostile/giant_crab
/mob/living/simple_animal/hostile/giant_crab
name = "giant crab"
desc = "A giant enemy crab."
tt_desc = "S Cancer holligus"
@@ -116,7 +116,7 @@
attack_sharp = 1
attack_edge = 1
armor = list(
armor = list(
"melee" = 40,
"bullet" = 10,
"laser" = 25,
@@ -128,7 +128,7 @@
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
response_harm = "kicks"
friendly = "pinches"
speak_chance = 1
@@ -1,5 +1,5 @@
/mob/living/simple_animal/deer
name = "Deer"
name = "deer"
desc = "An animal with impressive antlers and skittish personality, though this one seems domesticated."
tt_desc = "Cervus elaphus"
icon_state = "Deer"
@@ -50,7 +50,7 @@
response_help = "pets"
response_disarm = "barely manage to push aside"
response_harm = "nibbles"
response_harm = "hits"
attacktext = list("nibbled")
speak_chance = 20
@@ -15,9 +15,9 @@
turns_per_move = 5
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 5
melee_damage_lower = 5 //they're meant to be annoying, not threatening.
@@ -1,5 +1,5 @@
/mob/living/simple_animal/lizard
name = "Lizard"
name = "lizard"
desc = "A cute tiny lizard."
faction = "lizard"
tt_desc = "E Anolis cuvieri"
@@ -25,11 +25,11 @@
speak_emote = list("hisses")
var/amount_grown = 0
/mob/living/simple_animal/lizard/event
desc = "This one looks like it is growing huge!"
/mob/living/simple_animal/lizard/event/Life()
. = ..()
if(amount_grown >= 0)
@@ -43,7 +43,7 @@
if(prob(99.999))
new /mob/living/simple_animal/hostile/lizardman(get_turf(src))
qdel(src)
else
else
new /mob/living/simple_animal/hostile/deathclaw(get_turf(src))
qdel(src)
@@ -9,9 +9,9 @@
icon_dead = "sculpture"
emote_hear = list("makes a faint scraping sound")
emote_see = list("twitches slightly", "shivers")
response_help = "touches the"
response_disarm = "pushes the"
response_harm = "hits the"
response_help = "touches"
response_disarm = "pushes"
response_harm = "hits"
see_in_dark = 8 //Needs to see in darkness to snap in darkness
pass_flags = PASSTABLE
var/response_snap = "snapped the neck of" //Past tense because it "happened before you could see it"
@@ -40,8 +40,8 @@
"rad" = 100)
has_hands = 1
response_help = "pets"
response_disarm = "gently pushes aside"
response_help = "pets the"
response_disarm = "gently pushes aside the"
pass_flags = PASSTABLE
@@ -182,7 +182,7 @@ mob/living/simple_animal/synx/PunchTarget()
metabolism = REM * 1 //ten times faster for convenience of testers.
color = "#00FFFF"
overdose = REAGENTS_OVERDOSE * 20 //it's all fake. But having nanomachines move through you is not good at a certain amount.
/datum/reagent/inaprovaline/synxchem/holo/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien != IS_DIONA)
if(prob(5))
@@ -230,8 +230,8 @@ mob/living/simple_animal/synx/PunchTarget()
M.adjustHalLoss(1) //dealing 5 times the amount of brute healed as halo, but we cant feel pain yet
// ^ I have no idea what this might cause, my ideal plan is that once the pain killer wears off you suddenly collapse;
//Since Halloss is not "real" damage this should not cause death
/datum/reagent/inaprovaline/synxchem/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien != IS_DIONA)
@@ -242,7 +242,7 @@ mob/living/simple_animal/synx/PunchTarget()
M.AdjustStunned(1)
if(prob(2))
M.AdjustParalysis(1)
/datum/reagent/inaprovaline/synxchem/holo/overdose(var/mob/living/carbon/M, var/alien, var/removed)
return
@@ -298,7 +298,7 @@ mob/living/simple_animal/synx/PunchTarget()
/mob/living/simple_animal/retaliate/synx/handle_idle_speaking()
if(voices && prob(speak_chance/2))
randomspeech()
//////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////// POWERS!!!! /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
@@ -349,7 +349,7 @@ mob/living/simple_animal/synx/PunchTarget()
set category = "Abilities"
if(speak && voices)
handle_mimic()
else
else
usr << "<span class='warning'>YOU NEED TO HEAR THINGS FIRST, try using Ventcrawl to eevesdrop on nerds</span>"
/mob/living/simple_animal/retaliate/synx/proc/handle_mimic()
@@ -370,14 +370,14 @@ mob/living/simple_animal/synx/PunchTarget()
glow_range = 4
glow_toggle = 1
player_msg = "You aren't supposed to be in this. Wrong mob."
/mob/living/simple_animal/retaliate/synx/pet/init_vore()
..()
var/obj/belly/B = vore_selected
B.vore_verb = "swallow"
B.digest_burn = 1
B.digest_brute = 0
/mob/living/simple_animal/retaliate/synx/pet/holo/init_vore()
..()
var/obj/belly/B = vore_selected
@@ -408,7 +408,7 @@ mob/living/simple_animal/synx/PunchTarget()
var/location = get_turf(src)
new /obj/item/seeds/hardlightseed/typesx(location)
qdel(src)
/mob/living/simple_animal/retaliate/synx/pet/holo/gib()
visible_message("<span class='notice'>\The [src] fades away!</span>")
var/location = get_turf(src)
@@ -469,7 +469,7 @@ mob/living/simple_animal/synx/PunchTarget()
icon_state = "synx_diablo_living"
icon_living = "synx_diablo_living"
icon_dead = "synx_diablo_dead"
speak = list( )
speak = list( )
//Vore Section
vore_capacity = 2
@@ -479,7 +479,7 @@ mob/living/simple_animal/synx/PunchTarget()
icon_state = "synx_diablo_living"
icon_living = "synx_diablo_living"
icon_dead = "synx_diablo_dead"
speak = list( )
speak = list( )
//Vore Section
vore_capacity = 2
@@ -502,7 +502,7 @@ mob/living/simple_animal/synx/PunchTarget()
//Vore Section
vore_default_mode = DM_HEAL
vore_capacity = 10
vore_digest_chance = 0
vore_digest_chance = 0
vore_pounce_chance = 1 //MAKE THEM HONK
vore_bump_chance = 0 //lowered bump chance
vore_escape_chance = 100
@@ -20,7 +20,7 @@
response_help = "touches"
response_disarm = "flails at"
response_harm = "punches the"
response_harm = "punches"
harm_intent_damage = 2
@@ -19,7 +19,7 @@
firing_lines = TRUE
investigates = TRUE
assist_distance = 100
turns_per_move = 5
stop_when_pulled = 0
@@ -85,9 +85,9 @@
icon_gib = "clown_gib"
speak_chance = 50
turns_per_move = 5
response_help = "pokes the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pokes"
response_disarm = "gently pushes aside"
response_harm = "hits"
speak = list("HONK", "Honk!")
speak_emote = list("squeals", "cries","sobs")
emote_hear = list("honks sadly")
@@ -127,15 +127,15 @@
icon_state = "ClownGoblin"
icon_living = "ClownGoblin"
icon_dead = null
response_help = "honks the"
response_help = "honks"
speak = list("Honk!")
speak_emote = list("sqeaks")
emote_hear = list("honks")
maxHealth = 100
health = 100
view_range = 30//owo
speed = 1
turns_per_move = 1
@@ -165,7 +165,7 @@
/mob/living/simple_animal/clowngang
name = "Pandoras box"
desc = "A honkmotherload of fun"
/mob/living/simple_animal/clowngang/Life()
death()
/mob/living/simple_animal/clowngang/death()
@@ -1,5 +1,5 @@
/mob/living/simple_animal/hostile/pirate
name = "Pirate"
name = "pirate"
desc = "Does what he wants cause a pirate is free."
tt_desc = "E Homo sapiens"
icon_state = "piratemelee"
@@ -18,9 +18,9 @@
returns_home = 1
reacts = 1
response_help = "pats the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pats"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 8
melee_damage_lower = 15
@@ -9,9 +9,9 @@
speak = list("Buzzzz")
speak_chance = 1
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
turns_per_move = 5
speed = 5
@@ -25,9 +25,9 @@
say_maybe_target = list("MEAT?", "N0w YOU DNE FcukED UP b0YO!", "WHAT!", "Not again. NOT AGAIN!")
say_got_target = list("D##FIN1Tly DNE FcukED UP nOW b0YO!", "YOU G1T D#V0VRED nOW!", "FUEL ME bOYO!", "I*M SO SORRY?!", "D1E Meat. DIG#ST!", "G1T DVNKED DWN The HaaTCH!", "Not again. NOT AGAIN!")
response_help = "pets the"
response_disarm = "bops the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "bops"
response_harm = "hits"
attacktext = list("ravaged")
friendly = list("nuzzles", "slobberlicks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on")
@@ -12,9 +12,9 @@
maxHealth = 30
health = 30
response_help = "pats the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pats"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 5
melee_damage_lower = 5
@@ -24,9 +24,9 @@
speak_emote = list("growls","hisses")
say_maybe_target = list("Rawr?")
say_got_target = list("GWAR!!")
response_help = "pets the"
response_disarm = "bops the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "bops"
response_harm = "hits"
attacktext = list("bit")
friendly = list("nuzzles", "licks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on")
@@ -19,9 +19,9 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
maxHealth = 25
health = 25
speed = 4
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 5
isEdible = 0 //They cannot be eaten while alive.
var/canEvolve = 1 //A variable for admins to turn off and on for when they like assign a player as a mob. I want to add a verb so that they can do it on command when the conditions are right in the future.
@@ -49,14 +49,14 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
emote_see = list("SKREE's")
meat_type = /obj/item/toy/figure/samus
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/power_charge = 0
var/evo_point = 0
var/evo_limit = 0
var/next = null
//Stuff for if a person is playing as a metroid.
show_stat_health = 1 // Does the percentage health show in the stat panel for the mob
ai_inactive = 0 // Set to 1 to turn off most AI actions
@@ -68,10 +68,10 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
//r_hand_sprite = "piranha_r" // If they have hands, //TODO make a leaf sprite for this
//l_hand_sprite = "piranha_l" // they could use some icons.
player_msg = "SUCC." // Message to print to players about 'how' to play this mob on login.
/mob/living/simple_animal/hostile/metroid //activate noms
vore_active = 1
vore_pounce_chance = 25
@@ -81,8 +81,8 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
/mob/living/simple_animal/hostile/metroid/death()
playsound(src, 'sound/effects/metroiddeath.ogg', 50, 1)
..()
/mob/living/simple_animal/hostile/metroid/mine
name = "Mochtroid"
@@ -125,7 +125,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
melee_damage_lower = 1
melee_damage_upper = 5
melee_miss_chance = 0
armor = list(
armor = list(
"melee" = 50,
"bullet" = 30,
"laser" = 80,
@@ -164,20 +164,20 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
cooperative = 1
evo_point = 800
evo_limit = 1000
next = "/mob/living/simple_animal/hostile/metroid/evolution/super"
next = "/mob/living/simple_animal/hostile/metroid/evolution/super"
vore_active = 0
/mob/living/simple_animal/hostile/metroid/evolution/baby/New()
playsound(src, 'sound/metroid/metroidsee.ogg', 100, 1)
..()
//------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
/mob/living/simple_animal/hostile/metroid/evolution/super
name = "super metroid"
desc = "Some kind of head sucky thing!"
@@ -193,7 +193,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
melee_damage_lower = 2
melee_damage_upper = 5
melee_miss_chance = 0
armor = list(
armor = list(
"melee" = 50,
"bullet" = 30,
"laser" = 90,
@@ -232,7 +232,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
evo_point = 1200
evo_limit = 1400
next = "/mob/living/simple_animal/hostile/metroid/combat/alpha"
vore_active = 1
vore_bump_chance = 0
vore_capacity = 1
@@ -240,20 +240,20 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
vore_pounce_chance = 25 //Metroids only eat incapacitated targets
vore_default_mode = DM_DIGEST
swallowTime = 1 SECONDS //Hungry little bastards.
vore_escape_chance = 25
vore_escape_chance = 25
/mob/living/simple_animal/hostile/metroid/evolution/super/New()
playsound(src, 'sound/metroid/metroidsee.ogg', 100, 1)
..()
/mob/living/simple_animal/hostile/metroid/evolution/super/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
//------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
@@ -272,7 +272,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
melee_damage_upper = 15
melee_miss_chance = 5
attacktext = list("rammed")
armor = list(
armor = list(
"melee" = 60,
"bullet" = 45,
"laser" = 50,
@@ -283,7 +283,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
gender = NEUTER
faction = "metroids"
move_to_delay = 3
//Alphas lose their vulnerability to cold.
minbodytemp = 0
min_oxy = 0
@@ -327,14 +327,14 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
vore_icons = SA_ICON_LIVING
vore_pounce_chance = 15 //Alphas will try knocking targets over since they lost their stun ability from the initial phases.
vore_default_mode = DM_DIGEST
swallowTime = 3 SECONDS
swallowTime = 3 SECONDS
vore_escape_chance = 25
//------------------------------------------------------------------------------------------------------------
@@ -354,7 +354,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
melee_damage_upper = 20
melee_miss_chance = 5
attacktext = list("rammed")
armor = list(
armor = list(
"melee" = 60,
"bullet" = 50,
"laser" = 50,
@@ -365,7 +365,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
gender = NEUTER
faction = "metroids"
move_to_delay = 4
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
@@ -407,7 +407,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
/mob/living/simple_animal/hostile/metroid/combat/gamma/New()
playsound(src, 'sound/metroid/metroidgamma.ogg', 100, 1)
..()
/mob/living/simple_animal/hostile/metroid/combat/gamma/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
@@ -417,14 +417,14 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
vore_bump_chance = 0
vore_capacity = 1
vore_icons = SA_ICON_LIVING
vore_pounce_chance = 15
vore_pounce_chance = 15
vore_default_mode = DM_DIGEST
swallowTime = 3 SECONDS
swallowTime = 3 SECONDS
vore_escape_chance = 20
//------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
@@ -444,7 +444,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
melee_miss_chance = 5
attack_armor_pen = 10
attacktext = list("slashed")
armor = list(
armor = list(
"melee" = 70,
"bullet" = 60,
"laser" = 50,
@@ -455,7 +455,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
gender = NEUTER
faction = "metroids"
move_to_delay = 4
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
@@ -474,7 +474,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
pixel_x = -16
pixel_y = -16
old_x = -16
@@ -499,7 +499,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
/mob/living/simple_animal/hostile/metroid/combat/zeta/New()
playsound(src, 'sound/metroid/metroidzeta.ogg', 100, 1)
..()
/mob/living/simple_animal/hostile/metroid/combat/zeta/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
@@ -509,15 +509,15 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
vore_bump_chance = 0
vore_capacity = 1
vore_icons = SA_ICON_LIVING
vore_pounce_chance = 20
vore_pounce_chance = 20
vore_default_mode = DM_DIGEST
swallowTime = 3 SECONDS
swallowTime = 3 SECONDS
vore_escape_chance = 15
//------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
@@ -537,7 +537,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
melee_miss_chance = 5
attack_armor_pen = 20
attacktext = list("slashed")
armor = list(
armor = list(
"melee" = 75,
"bullet" = 60,
"laser" = 55,
@@ -549,7 +549,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
faction = "metroids"
speed = 4
move_to_delay = 5
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
@@ -568,7 +568,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
old_x = -16
old_y = 0
default_pixel_x = -16
@@ -593,7 +593,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
/mob/living/simple_animal/hostile/metroid/combat/omega/New()
playsound(src, 'sound/metroid/metroidomega.ogg', 100, 1)
..()
/mob/living/simple_animal/hostile/metroid/combat/omega/death()
playsound(src, 'sound/metroid/metroidomegadeath.ogg', 100, 1)
..()
@@ -603,15 +603,15 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
vore_bump_chance = 0
vore_capacity = 2
vore_icons = SA_ICON_LIVING
vore_pounce_chance = 40
vore_pounce_chance = 40
vore_default_mode = DM_DIGEST
swallowTime = 3 SECONDS
vore_escape_chance = 5
//------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
@@ -631,7 +631,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
melee_miss_chance = 5
attack_armor_pen = 20
attacktext = list("gnashed")
armor = list(
armor = list(
"melee" = 75,
"bullet" = 60,
"laser" = 60,
@@ -661,7 +661,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
pixel_x = -16
pixel_y = -16
old_x = -16
@@ -678,18 +678,18 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
evo_point = 1100
evo_limit = INFINITY
next = null
/mob/living/simple_animal/hostile/metroid/combat/queen/New()
playsound(src, 'sound/metroid/metroidqueen.ogg', 100, 1)
queen_amount++
..()
/mob/living/simple_animal/hostile/metroid/combat/queen/death()
playsound(src, 'sound/metroid/metroidqueendeath.ogg', 100, 1)
queen_amount--
..()
/mob/living/simple_animal/hostile/metroid/combat/queen //active noms
vore_active = 1
vore_bump_chance = 0
@@ -706,13 +706,13 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
/*
//Objects related to the Metroids.
//Objects related to the Metroids.
//Projectile for the Metroids.
*/
/obj/item/projectile/energy/metroidacid
name = "metroid acid"
icon_state = "neurotoxin"
damage = 10
@@ -720,7 +720,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
agony = 10
check_armour = "bio"
armor_penetration = 50
//EGG! Metroid egg and its mechanics. Ripped from spiders.
/obj/effect/metroid/egg
name = "egg cluster"
@@ -758,9 +758,9 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
//------------------------------------------------------------------------------------------------------------
/*
//LIFE STUFF, AND MECHANICS!
@@ -776,7 +776,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
release_vore_contents()
prey_excludes.Cut()
stop_consumption()
if(canEvolve == 1 && nutrition >= evo_point && !buckled && vore_fullness == 0 && !victim)
playsound(src, 'sound/metroid/metroidgrow.ogg', 50, 1)
paralysis = 7998
@@ -794,8 +794,8 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
new next(get_turf(src))
visible_message("<span class='warning'>\The [src] suddenly evolves!</span>")
qdel(src)
/mob/living/simple_animal/hostile/metroid/evolution/handle_regular_status_updates()
if(stat != DEAD)
@@ -849,7 +849,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
if(prob(input * 2)) // Gain around one level per 50 nutrition
power_charge = min(power_charge++, 10)
/mob/living/simple_animal/hostile/metroid/evolution/PunchTarget() //this segment determines what the mob does depending on its intent.
if(victim)
return // Already eatting someone.
@@ -954,7 +954,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
/mob/living/simple_animal/hostile/metroid/evolution/DoPunch(var/mob/living/L) //Metroid melee.
var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1)
if(!Adjacent(L)) // Might've moved away in the meantime.
return
@@ -1062,8 +1062,8 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
paralysis = 7998
sleep(50)
paralysis = 0
/mob/living/simple_animal/hostile/metroid/evolution/FindTarget() //This makes it so it doesn't go after another target while succing.
if(victim) // Don't worry about finding another target if we're sucking on someone's head.
return
@@ -1081,9 +1081,9 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
return
else
..()
/mob/living/simple_animal/hostile/metroid/evolution/baby/Found(mob/living/L)
if(isliving(L))
if(SA_attackable(L))
@@ -1094,21 +1094,21 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
return H // Monkeys are always food.
else
return
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too.
return H // Monkeys are always food.
return
/*
//LIFE PROCS!
//FOR THE COMBAT FORMS
//LIFE PROCS!
//FOR THE COMBAT FORMS
*/
@@ -1119,7 +1119,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
if(canEvolve == 1 && nutrition >= evo_limit && vore_fullness == TRUE) //spit dat crap out if nutrition gets too high!
release_vore_contents()
prey_excludes.Cut()
if(canEvolve == 1 && nutrition >= evo_point && vore_fullness == 0 && next != "/mob/living/simple_animal/hostile/metroid/combat/queen")
playsound(src, 'sound/metroid/metroidgrow.ogg', 50, 1)
paralysis = 7998
@@ -1127,14 +1127,14 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
paralysis = 0
expand_troid()
return
else if(queen_amount == 0 && prob(5) && canEvolve == 1 && nutrition >= evo_point && vore_fullness == 0 && next == "/mob/living/simple_animal/hostile/metroid/combat/queen")
playsound(src, 'sound/metroid/metroidgrow.ogg', 50, 1)
paralysis = 7998
sleep(50)
paralysis = 0
expand_troid()
else if(next == null && canEvolve == 1 && nutrition >= evo_point)
playsound(src, 'sound/metroid/metroidgrow.ogg', 50, 1)
src.visible_message("<span class='notice'>\The [src] begins to lay an egg.</span>")
@@ -1144,12 +1144,12 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
stop_automated_movement = 0
nutrition = 400
return
if(stance == 7) //Necessary to fix a bug where if their prey or latching victim is laying down when they evolve, they get stuck in stance 7 and do nothing.
stance = 4
return
/mob/living/simple_animal/hostile/metroid/combat/proc/adjust_nutrition(input)
@@ -1168,7 +1168,7 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
/mob/living/simple_animal/hostile/metroid/combat/DoPunch(var/mob/living/L) //Metroid actions vs the player.
var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1)
if(!Adjacent(L)) // Might've moved away in the meantime.
return
@@ -1184,12 +1184,12 @@ var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
if(I_HURT) //The metroid does this if it can't latch onto the target or it decides not to try knocking them down.
ai_log("DoPunch() against [L], hurting.",2)
L.attack_generic(src, damage_to_do, pick(attacktext))
playsound(src, 'sound/weapons/bite.ogg', 75, 1)
// Give the Metroid some nutrition, if applicable, even if not attached.
if(!L.isSynthetic())
if(ishuman(L))
@@ -34,9 +34,9 @@
say_got_target = list("Rurrr!", "ROAR!", "MARR!", "RERR!", "RAHH!", "RAH!", "WARF!")
melee_damage_lower = 5
melee_damage_upper = 15 //Don't break my bones bro
response_help = "pets the"
response_disarm = "bops the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "bops"
response_harm = "hits"
attacktext = list("mauled")
friendly = list("nuzzles", "slobberlicks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on")
meat_amount = 6
@@ -25,9 +25,9 @@
emote_see = list("runs in a circle", "shakes", "scritches at something")
say_maybe_target = list("Squeek?")
say_got_target = list("SQUEEK!")
response_help = "pets the"
response_disarm = "bops the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "bops"
response_harm = "hits"
attacktext = list("ravaged")
friendly = list("nuzzles", "licks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on")
@@ -12,9 +12,9 @@
maxHealth = 30
health = 30
response_help = "pats the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pats"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 5
melee_damage_lower = 5
@@ -76,9 +76,9 @@
maxHealth = 150
health = 150
response_help = "pats the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
response_help = "pats"
response_disarm = "gently pushes aside"
response_harm = "hits"
harm_intent_damage = 5
melee_damage_lower = 5
@@ -43,9 +43,9 @@
emote_see = list("tailtwitches", "earflicks")
say_maybe_target = list("...mar?")
say_got_target = list("MAR!!!")
response_help = "pets the"
response_disarm = "bops the"
response_harm = "hits the"
response_help = "pets"
response_disarm = "bops"
response_harm = "hits"
attacktext = list("mauled","slashed","clawed")
friendly = list("boops", "pawbs", "mars softly at", "sniffs on")
reactions = list("Mar?" = "Marrr!", "Mar!" = "Marrr???", "Mar." = "Marrr.")