Revert "pls"

This reverts commit 8c97511871.
This commit is contained in:
Fermi
2019-11-24 03:04:04 +00:00
parent 4c1c257035
commit c8b206a4cf
3003 changed files with 63963 additions and 157107 deletions
@@ -18,16 +18,20 @@
return FALSE
return .
/mob/living/carbon/proc/toggle_combat_mode()
/mob/living/carbon/proc/toggle_combat_mode(forced)
if(recoveringstam)
return TRUE
if(!forced)
for(var/datum/status_effect/S in status_effects)
if(S.blocks_combatmode)
return TRUE
combatmode = !combatmode
if(voremode)
toggle_vore_mode()
if(combatmode)
playsound_local(src, 'modular_citadel/sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay!
playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay!
else
playsound_local(src, 'modular_citadel/sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above!
playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above!
if(client)
client.show_popup_menus = !combatmode // So we can right-click for alternate actions and all that other good shit. Also moves examine to shift+rightclick to make it possible to attack while sprinting
if(hud_used && hud_used.static_inventory)
@@ -1,12 +1,3 @@
/mob/living/carbon/human/species/mammal
race = /datum/species/mammal
/mob/living/carbon/human/species/insect
race = /datum/species/insect
/mob/living/carbon/human/species/xeno
race = /datum/species/xeno
/mob/living/proc/resist_embedded()
return
@@ -24,9 +24,9 @@
sprinting = !sprinting
if(!resting && m_intent == MOVE_INTENT_RUN && canmove)
if(sprinting)
playsound_local(src, 'modular_citadel/sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE)
playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE)
else
playsound_local(src, 'modular_citadel/sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
playsound_local(src, 'sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
if(hud_used && hud_used.static_inventory)
for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory)
selector.insert_witty_toggle_joke_here(src)
@@ -13,7 +13,7 @@
var/sprint_buffer_max = 42
var/sprint_buffer_regen_ds = 0.3 //Tiles per world.time decisecond
var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math.
var/sprint_stamina_cost = 0.55 //stamina loss per tile while insufficient sprint buffer.
var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer.
//---End
/mob/living/movement_delay(ignorewalk = 0)
@@ -116,7 +116,7 @@
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
resting = TRUE
if(combatmode)
toggle_combat_mode()
toggle_combat_mode(TRUE)
recoveringstam = TRUE
filters += CIT_FILTER_STAMINACRIT
update_canmove()
@@ -1,633 +0,0 @@
// List is required to compile the resources into the game when it loads.
// Dynamically loading it has bad results with sounds overtaking each other, even with the wait variable.
#ifdef AI_VOX
GLOBAL_LIST_INIT(vox_sounds_male, list("," = 'modular_citadel/sound/vox/_comma.ogg',
"." = 'modular_citadel/sound/vox/_period.ogg',
"a" = 'modular_citadel/sound/vox/a.ogg',
"accelerating" = 'modular_citadel/sound/vox/accelerating.ogg',
"accelerator" = 'modular_citadel/sound/vox/accelerator.ogg',
"accepted" = 'modular_citadel/sound/vox/accepted.ogg',
"access" = 'modular_citadel/sound/vox/access.ogg',
"acknowledge" = 'modular_citadel/sound/vox/acknowledge.ogg',
"acknowledged" = 'modular_citadel/sound/vox/acknowledged.ogg',
"acquired" = 'modular_citadel/sound/vox/acquired.ogg',
"acquisition" = 'modular_citadel/sound/vox/acquisition.ogg',
"across" = 'modular_citadel/sound/vox/across.ogg',
"activate" = 'modular_citadel/sound/vox/activate.ogg',
"activated" = 'modular_citadel/sound/vox/activated.ogg',
"activity" = 'modular_citadel/sound/vox/activity.ogg',
"adios" = 'modular_citadel/sound/vox/adios.ogg',
"administration" = 'modular_citadel/sound/vox/administration.ogg',
"advanced" = 'modular_citadel/sound/vox/advanced.ogg',
"after" = 'modular_citadel/sound/vox/after.ogg',
"agent" = 'modular_citadel/sound/vox/agent.ogg',
"alarm" = 'modular_citadel/sound/vox/alarm.ogg',
"alert" = 'modular_citadel/sound/vox/alert.ogg',
"alien" = 'modular_citadel/sound/vox/alien.ogg',
"aligned" = 'modular_citadel/sound/vox/aligned.ogg',
"all" = 'modular_citadel/sound/vox/all.ogg',
"alpha" = 'modular_citadel/sound/vox/alpha.ogg',
"am" = 'modular_citadel/sound/vox/am.ogg',
"amigo" = 'modular_citadel/sound/vox/amigo.ogg',
"ammunition" = 'modular_citadel/sound/vox/ammunition.ogg',
"an" = 'modular_citadel/sound/vox/an.ogg',
"and" = 'modular_citadel/sound/vox/and.ogg',
"announcement" = 'modular_citadel/sound/vox/announcement.ogg',
"anomalous" = 'modular_citadel/sound/vox/anomalous.ogg',
"antenna" = 'modular_citadel/sound/vox/antenna.ogg',
"any" = 'modular_citadel/sound/vox/any.ogg',
"apprehend" = 'modular_citadel/sound/vox/apprehend.ogg',
"approach" = 'modular_citadel/sound/vox/approach.ogg',
"are" = 'modular_citadel/sound/vox/are.ogg',
"area" = 'modular_citadel/sound/vox/area.ogg',
"arm" = 'modular_citadel/sound/vox/arm.ogg',
"armed" = 'modular_citadel/sound/vox/armed.ogg',
"armor" = 'modular_citadel/sound/vox/armor.ogg',
"armory" = 'modular_citadel/sound/vox/armory.ogg',
"arrest" = 'modular_citadel/sound/vox/arrest.ogg',
"ass" = 'modular_citadel/sound/vox/ass.ogg',
"at" = 'modular_citadel/sound/vox/at.ogg',
"atomic" = 'modular_citadel/sound/vox/atomic.ogg',
"attention" = 'modular_citadel/sound/vox/attention.ogg',
"authorize" = 'modular_citadel/sound/vox/authorize.ogg',
"authorized" = 'modular_citadel/sound/vox/authorized.ogg',
"automatic" = 'modular_citadel/sound/vox/automatic.ogg',
"away" = 'modular_citadel/sound/vox/away.ogg',
"b" = 'modular_citadel/sound/vox/b.ogg',
"back" = 'modular_citadel/sound/vox/back.ogg',
"backman" = 'modular_citadel/sound/vox/backman.ogg',
"bad" = 'modular_citadel/sound/vox/bad.ogg',
"bag" = 'modular_citadel/sound/vox/bag.ogg',
"bailey" = 'modular_citadel/sound/vox/bailey.ogg',
"barracks" = 'modular_citadel/sound/vox/barracks.ogg',
"base" = 'modular_citadel/sound/vox/base.ogg',
"bay" = 'modular_citadel/sound/vox/bay.ogg',
"be" = 'modular_citadel/sound/vox/be.ogg',
"been" = 'modular_citadel/sound/vox/been.ogg',
"before" = 'modular_citadel/sound/vox/before.ogg',
"beyond" = 'modular_citadel/sound/vox/beyond.ogg',
"biohazard" = 'modular_citadel/sound/vox/biohazard.ogg',
"biological" = 'modular_citadel/sound/vox/biological.ogg',
"birdwell" = 'modular_citadel/sound/vox/birdwell.ogg',
"bizwarn" = 'modular_citadel/sound/vox/bizwarn.ogg',
"black" = 'modular_citadel/sound/vox/black.ogg',
"blast" = 'modular_citadel/sound/vox/blast.ogg',
"blocked" = 'modular_citadel/sound/vox/blocked.ogg',
"bloop" = 'modular_citadel/sound/vox/bloop.ogg',
"blue" = 'modular_citadel/sound/vox/blue.ogg',
"bottom" = 'modular_citadel/sound/vox/bottom.ogg',
"bravo" = 'modular_citadel/sound/vox/bravo.ogg',
"breach" = 'modular_citadel/sound/vox/breach.ogg',
"breached" = 'modular_citadel/sound/vox/breached.ogg',
"break" = 'modular_citadel/sound/vox/break.ogg',
"bridge" = 'modular_citadel/sound/vox/bridge.ogg',
"bust" = 'modular_citadel/sound/vox/bust.ogg',
"but" = 'modular_citadel/sound/vox/but.ogg',
"button" = 'modular_citadel/sound/vox/button.ogg',
"buzwarn" = 'modular_citadel/sound/vox/buzwarn.ogg',
"bypass" = 'modular_citadel/sound/vox/bypass.ogg',
"c" = 'modular_citadel/sound/vox/c.ogg',
"cable" = 'modular_citadel/sound/vox/cable.ogg',
"call" = 'modular_citadel/sound/vox/call.ogg',
"called" = 'modular_citadel/sound/vox/called.ogg',
"canal" = 'modular_citadel/sound/vox/canal.ogg',
"cap" = 'modular_citadel/sound/vox/cap.ogg',
"captain" = 'modular_citadel/sound/vox/captain.ogg',
"capture" = 'modular_citadel/sound/vox/capture.ogg',
"captured" = 'modular_citadel/sound/vox/captured.ogg',
"ceiling" = 'modular_citadel/sound/vox/ceiling.ogg',
"celsius" = 'modular_citadel/sound/vox/celsius.ogg',
"center" = 'modular_citadel/sound/vox/center.ogg',
"centi" = 'modular_citadel/sound/vox/centi.ogg',
"central" = 'modular_citadel/sound/vox/central.ogg',
"chamber" = 'modular_citadel/sound/vox/chamber.ogg',
"charlie" = 'modular_citadel/sound/vox/charlie.ogg',
"check" = 'modular_citadel/sound/vox/check.ogg',
"checkpoint" = 'modular_citadel/sound/vox/checkpoint.ogg',
"chemical" = 'modular_citadel/sound/vox/chemical.ogg',
"cleanup" = 'modular_citadel/sound/vox/cleanup.ogg',
"clear" = 'modular_citadel/sound/vox/clear.ogg',
"clearance" = 'modular_citadel/sound/vox/clearance.ogg',
"close" = 'modular_citadel/sound/vox/close.ogg',
"clown" = 'modular_citadel/sound/vox/clown.ogg',
"code" = 'modular_citadel/sound/vox/code.ogg',
"coded" = 'modular_citadel/sound/vox/coded.ogg',
"collider" = 'modular_citadel/sound/vox/collider.ogg',
"command" = 'modular_citadel/sound/vox/command.ogg',
"communication" = 'modular_citadel/sound/vox/communication.ogg',
"complex" = 'modular_citadel/sound/vox/complex.ogg',
"computer" = 'modular_citadel/sound/vox/computer.ogg',
"condition" = 'modular_citadel/sound/vox/condition.ogg',
"containment" = 'modular_citadel/sound/vox/containment.ogg',
"contamination" = 'modular_citadel/sound/vox/contamination.ogg',
"control" = 'modular_citadel/sound/vox/control.ogg',
"coolant" = 'modular_citadel/sound/vox/coolant.ogg',
"coomer" = 'modular_citadel/sound/vox/coomer.ogg',
"core" = 'modular_citadel/sound/vox/core.ogg',
"correct" = 'modular_citadel/sound/vox/correct.ogg',
"corridor" = 'modular_citadel/sound/vox/corridor.ogg',
"crew" = 'modular_citadel/sound/vox/crew.ogg',
"cross" = 'modular_citadel/sound/vox/cross.ogg',
"cryogenic" = 'modular_citadel/sound/vox/cryogenic.ogg',
"d" = 'modular_citadel/sound/vox/d.ogg',
"dadeda" = 'modular_citadel/sound/vox/dadeda.ogg',
"damage" = 'modular_citadel/sound/vox/damage.ogg',
"damaged" = 'modular_citadel/sound/vox/damaged.ogg',
"danger" = 'modular_citadel/sound/vox/danger.ogg',
"day" = 'modular_citadel/sound/vox/day.ogg',
"deactivated" = 'modular_citadel/sound/vox/deactivated.ogg',
"decompression" = 'modular_citadel/sound/vox/decompression.ogg',
"decontamination" = 'modular_citadel/sound/vox/decontamination.ogg',
"deeoo" = 'modular_citadel/sound/vox/deeoo.ogg',
"defense" = 'modular_citadel/sound/vox/defense.ogg',
"degrees" = 'modular_citadel/sound/vox/degrees.ogg',
"delta" = 'modular_citadel/sound/vox/delta.ogg',
"denied" = 'modular_citadel/sound/vox/denied.ogg',
"deploy" = 'modular_citadel/sound/vox/deploy.ogg',
"deployed" = 'modular_citadel/sound/vox/deployed.ogg',
"destroy" = 'modular_citadel/sound/vox/destroy.ogg',
"destroyed" = 'modular_citadel/sound/vox/destroyed.ogg',
"detain" = 'modular_citadel/sound/vox/detain.ogg',
"detected" = 'modular_citadel/sound/vox/detected.ogg',
"detonation" = 'modular_citadel/sound/vox/detonation.ogg',
"device" = 'modular_citadel/sound/vox/device.ogg',
"did" = 'modular_citadel/sound/vox/did.ogg',
"die" = 'modular_citadel/sound/vox/die.ogg',
"dimensional" = 'modular_citadel/sound/vox/dimensional.ogg',
"dirt" = 'modular_citadel/sound/vox/dirt.ogg',
"disengaged" = 'modular_citadel/sound/vox/disengaged.ogg',
"dish" = 'modular_citadel/sound/vox/dish.ogg',
"disposal" = 'modular_citadel/sound/vox/disposal.ogg',
"distance" = 'modular_citadel/sound/vox/distance.ogg',
"distortion" = 'modular_citadel/sound/vox/distortion.ogg',
"do" = 'modular_citadel/sound/vox/do.ogg',
"doctor" = 'modular_citadel/sound/vox/doctor.ogg',
"doop" = 'modular_citadel/sound/vox/doop.ogg',
"door" = 'modular_citadel/sound/vox/door.ogg',
"down" = 'modular_citadel/sound/vox/down.ogg',
"dual" = 'modular_citadel/sound/vox/dual.ogg',
"duct" = 'modular_citadel/sound/vox/duct.ogg',
"e" = 'modular_citadel/sound/vox/e.ogg',
"east" = 'modular_citadel/sound/vox/east.ogg',
"echo" = 'modular_citadel/sound/vox/echo.ogg',
"ed" = 'modular_citadel/sound/vox/ed.ogg',
"effect" = 'modular_citadel/sound/vox/effect.ogg',
"egress" = 'modular_citadel/sound/vox/egress.ogg',
"eight" = 'modular_citadel/sound/vox/eight.ogg',
"eighteen" = 'modular_citadel/sound/vox/eighteen.ogg',
"eighty" = 'modular_citadel/sound/vox/eighty.ogg',
"electric" = 'modular_citadel/sound/vox/electric.ogg',
"electromagnetic" = 'modular_citadel/sound/vox/electromagnetic.ogg',
"elevator" = 'modular_citadel/sound/vox/elevator.ogg',
"eleven" = 'modular_citadel/sound/vox/eleven.ogg',
"eliminate" = 'modular_citadel/sound/vox/eliminate.ogg',
"emergency" = 'modular_citadel/sound/vox/emergency.ogg',
"enemy" = 'modular_citadel/sound/vox/enemy.ogg',
"energy" = 'modular_citadel/sound/vox/energy.ogg',
"engage" = 'modular_citadel/sound/vox/engage.ogg',
"engaged" = 'modular_citadel/sound/vox/engaged.ogg',
"engine" = 'modular_citadel/sound/vox/engine.ogg',
"enter" = 'modular_citadel/sound/vox/enter.ogg',
"entry" = 'modular_citadel/sound/vox/entry.ogg',
"environment" = 'modular_citadel/sound/vox/environment.ogg',
"error" = 'modular_citadel/sound/vox/error.ogg',
"escape" = 'modular_citadel/sound/vox/escape.ogg',
"evacuate" = 'modular_citadel/sound/vox/evacuate.ogg',
"exchange" = 'modular_citadel/sound/vox/exchange.ogg',
"exit" = 'modular_citadel/sound/vox/exit.ogg',
"expect" = 'modular_citadel/sound/vox/expect.ogg',
"experiment" = 'modular_citadel/sound/vox/experiment.ogg',
"experimental" = 'modular_citadel/sound/vox/experimental.ogg',
"explode" = 'modular_citadel/sound/vox/explode.ogg',
"explosion" = 'modular_citadel/sound/vox/explosion.ogg',
"exposure" = 'modular_citadel/sound/vox/exposure.ogg',
"exterminate" = 'modular_citadel/sound/vox/exterminate.ogg',
"extinguish" = 'modular_citadel/sound/vox/extinguish.ogg',
"extinguisher" = 'modular_citadel/sound/vox/extinguisher.ogg',
"extreme" = 'modular_citadel/sound/vox/extreme.ogg',
"f" = 'modular_citadel/sound/vox/f.ogg',
"face" = 'modular_citadel/sound/vox/face.ogg',
"facility" = 'modular_citadel/sound/vox/facility.ogg',
"fahrenheit" = 'modular_citadel/sound/vox/fahrenheit.ogg',
"failed" = 'modular_citadel/sound/vox/failed.ogg',
"failure" = 'modular_citadel/sound/vox/failure.ogg',
"farthest" = 'modular_citadel/sound/vox/farthest.ogg',
"fast" = 'modular_citadel/sound/vox/fast.ogg',
"feet" = 'modular_citadel/sound/vox/feet.ogg',
"field" = 'modular_citadel/sound/vox/field.ogg',
"fifteen" = 'modular_citadel/sound/vox/fifteen.ogg',
"fifth" = 'modular_citadel/sound/vox/fifth.ogg',
"fifty" = 'modular_citadel/sound/vox/fifty.ogg',
"final" = 'modular_citadel/sound/vox/final.ogg',
"fine" = 'modular_citadel/sound/vox/fine.ogg',
"fire" = 'modular_citadel/sound/vox/fire.ogg',
"first" = 'modular_citadel/sound/vox/first.ogg',
"five" = 'modular_citadel/sound/vox/five.ogg',
"flag" = 'modular_citadel/sound/vox/flag.ogg',
"flooding" = 'modular_citadel/sound/vox/flooding.ogg',
"floor" = 'modular_citadel/sound/vox/floor.ogg',
"fool" = 'modular_citadel/sound/vox/fool.ogg',
"for" = 'modular_citadel/sound/vox/for.ogg',
"forbidden" = 'modular_citadel/sound/vox/forbidden.ogg',
"force" = 'modular_citadel/sound/vox/force.ogg',
"forms" = 'modular_citadel/sound/vox/forms.ogg',
"found" = 'modular_citadel/sound/vox/found.ogg',
"four" = 'modular_citadel/sound/vox/four.ogg',
"fourteen" = 'modular_citadel/sound/vox/fourteen.ogg',
"fourth" = 'modular_citadel/sound/vox/fourth.ogg',
"fourty" = 'modular_citadel/sound/vox/fourty.ogg',
"foxtrot" = 'modular_citadel/sound/vox/foxtrot.ogg',
"freeman" = 'modular_citadel/sound/vox/freeman.ogg',
"freezer" = 'modular_citadel/sound/vox/freezer.ogg',
"from" = 'modular_citadel/sound/vox/from.ogg',
"front" = 'modular_citadel/sound/vox/front.ogg',
"fuel" = 'modular_citadel/sound/vox/fuel.ogg',
"g" = 'modular_citadel/sound/vox/g.ogg',
"gay" = 'modular_citadel/sound/vox/gay.ogg',
"get" = 'modular_citadel/sound/vox/get.ogg',
"go" = 'modular_citadel/sound/vox/go.ogg',
"going" = 'modular_citadel/sound/vox/going.ogg',
"good" = 'modular_citadel/sound/vox/good.ogg',
"goodbye" = 'modular_citadel/sound/vox/goodbye.ogg',
"gordon" = 'modular_citadel/sound/vox/gordon.ogg',
"got" = 'modular_citadel/sound/vox/got.ogg',
"government" = 'modular_citadel/sound/vox/government.ogg',
"granted" = 'modular_citadel/sound/vox/granted.ogg',
"great" = 'modular_citadel/sound/vox/great.ogg',
"green" = 'modular_citadel/sound/vox/green.ogg',
"grenade" = 'modular_citadel/sound/vox/grenade.ogg',
"guard" = 'modular_citadel/sound/vox/guard.ogg',
"gulf" = 'modular_citadel/sound/vox/gulf.ogg',
"gun" = 'modular_citadel/sound/vox/gun.ogg',
"guthrie" = 'modular_citadel/sound/vox/guthrie.ogg',
"handling" = 'modular_citadel/sound/vox/handling.ogg',
"hangar" = 'modular_citadel/sound/vox/hangar.ogg',
"has" = 'modular_citadel/sound/vox/has.ogg',
"have" = 'modular_citadel/sound/vox/have.ogg',
"hazard" = 'modular_citadel/sound/vox/hazard.ogg',
"head" = 'modular_citadel/sound/vox/head.ogg',
"health" = 'modular_citadel/sound/vox/health.ogg',
"heat" = 'modular_citadel/sound/vox/heat.ogg',
"helicopter" = 'modular_citadel/sound/vox/helicopter.ogg',
"helium" = 'modular_citadel/sound/vox/helium.ogg',
"hello" = 'modular_citadel/sound/vox/hello.ogg',
"help" = 'modular_citadel/sound/vox/help.ogg',
"here" = 'modular_citadel/sound/vox/here.ogg',
"hide" = 'modular_citadel/sound/vox/hide.ogg',
"high" = 'modular_citadel/sound/vox/high.ogg',
"highest" = 'modular_citadel/sound/vox/highest.ogg',
"hit" = 'modular_citadel/sound/vox/hit.ogg',
"holds" = 'modular_citadel/sound/vox/holds.ogg',
"hole" = 'modular_citadel/sound/vox/hole.ogg',
"hostile" = 'modular_citadel/sound/vox/hostile.ogg',
"hot" = 'modular_citadel/sound/vox/hot.ogg',
"hotel" = 'modular_citadel/sound/vox/hotel.ogg',
"hour" = 'modular_citadel/sound/vox/hour.ogg',
"hours" = 'modular_citadel/sound/vox/hours.ogg',
"hundred" = 'modular_citadel/sound/vox/hundred.ogg',
"hydro" = 'modular_citadel/sound/vox/hydro.ogg',
"i" = 'modular_citadel/sound/vox/i.ogg',
"idiot" = 'modular_citadel/sound/vox/idiot.ogg',
"illegal" = 'modular_citadel/sound/vox/illegal.ogg',
"immediate" = 'modular_citadel/sound/vox/immediate.ogg',
"immediately" = 'modular_citadel/sound/vox/immediately.ogg',
"in" = 'modular_citadel/sound/vox/in.ogg',
"inches" = 'modular_citadel/sound/vox/inches.ogg',
"india" = 'modular_citadel/sound/vox/india.ogg',
"ing" = 'modular_citadel/sound/vox/ing.ogg',
"inoperative" = 'modular_citadel/sound/vox/inoperative.ogg',
"inside" = 'modular_citadel/sound/vox/inside.ogg',
"inspection" = 'modular_citadel/sound/vox/inspection.ogg',
"inspector" = 'modular_citadel/sound/vox/inspector.ogg',
"interchange" = 'modular_citadel/sound/vox/interchange.ogg',
"intruder" = 'modular_citadel/sound/vox/intruder.ogg',
"invallid" = 'modular_citadel/sound/vox/invallid.ogg',
"invasion" = 'modular_citadel/sound/vox/invasion.ogg',
"is" = 'modular_citadel/sound/vox/is.ogg',
"it" = 'modular_citadel/sound/vox/it.ogg',
"johnson" = 'modular_citadel/sound/vox/johnson.ogg',
"juliet" = 'modular_citadel/sound/vox/juliet.ogg',
"key" = 'modular_citadel/sound/vox/key.ogg',
"kill" = 'modular_citadel/sound/vox/kill.ogg',
"kilo" = 'modular_citadel/sound/vox/kilo.ogg',
"kit" = 'modular_citadel/sound/vox/kit.ogg',
"lab" = 'modular_citadel/sound/vox/lab.ogg',
"lambda" = 'modular_citadel/sound/vox/lambda.ogg',
"laser" = 'modular_citadel/sound/vox/laser.ogg',
"last" = 'modular_citadel/sound/vox/last.ogg',
"launch" = 'modular_citadel/sound/vox/launch.ogg',
"leak" = 'modular_citadel/sound/vox/leak.ogg',
"leave" = 'modular_citadel/sound/vox/leave.ogg',
"left" = 'modular_citadel/sound/vox/left.ogg',
"legal" = 'modular_citadel/sound/vox/legal.ogg',
"level" = 'modular_citadel/sound/vox/level.ogg',
"lever" = 'modular_citadel/sound/vox/lever.ogg',
"lie" = 'modular_citadel/sound/vox/lie.ogg',
"lieutenant" = 'modular_citadel/sound/vox/lieutenant.ogg',
"life" = 'modular_citadel/sound/vox/life.ogg',
"light" = 'modular_citadel/sound/vox/light.ogg',
"lima" = 'modular_citadel/sound/vox/lima.ogg',
"liquid" = 'modular_citadel/sound/vox/liquid.ogg',
"loading" = 'modular_citadel/sound/vox/loading.ogg',
"locate" = 'modular_citadel/sound/vox/locate.ogg',
"located" = 'modular_citadel/sound/vox/located.ogg',
"location" = 'modular_citadel/sound/vox/location.ogg',
"lock" = 'modular_citadel/sound/vox/lock.ogg',
"locked" = 'modular_citadel/sound/vox/locked.ogg',
"locker" = 'modular_citadel/sound/vox/locker.ogg',
"lockout" = 'modular_citadel/sound/vox/lockout.ogg',
"lower" = 'modular_citadel/sound/vox/lower.ogg',
"lowest" = 'modular_citadel/sound/vox/lowest.ogg',
"magnetic" = 'modular_citadel/sound/vox/magnetic.ogg',
"main" = 'modular_citadel/sound/vox/main.ogg',
"maintenance" = 'modular_citadel/sound/vox/maintenance.ogg',
"malfunction" = 'modular_citadel/sound/vox/malfunction.ogg',
"man" = 'modular_citadel/sound/vox/man.ogg',
"mass" = 'modular_citadel/sound/vox/mass.ogg',
"materials" = 'modular_citadel/sound/vox/materials.ogg',
"maximum" = 'modular_citadel/sound/vox/maximum.ogg',
"may" = 'modular_citadel/sound/vox/may.ogg',
"med" = 'modular_citadel/sound/vox/med.ogg',
"medical" = 'modular_citadel/sound/vox/medical.ogg',
"men" = 'modular_citadel/sound/vox/men.ogg',
"mercy" = 'modular_citadel/sound/vox/mercy.ogg',
"mesa" = 'modular_citadel/sound/vox/mesa.ogg',
"message" = 'modular_citadel/sound/vox/message.ogg',
"meter" = 'modular_citadel/sound/vox/meter.ogg',
"micro" = 'modular_citadel/sound/vox/micro.ogg',
"middle" = 'modular_citadel/sound/vox/middle.ogg',
"mike" = 'modular_citadel/sound/vox/mike.ogg',
"miles" = 'modular_citadel/sound/vox/miles.ogg',
"military" = 'modular_citadel/sound/vox/military.ogg',
"milli" = 'modular_citadel/sound/vox/milli.ogg',
"million" = 'modular_citadel/sound/vox/million.ogg',
"minefield" = 'modular_citadel/sound/vox/minefield.ogg',
"minimum" = 'modular_citadel/sound/vox/minimum.ogg',
"minutes" = 'modular_citadel/sound/vox/minutes.ogg',
"mister" = 'modular_citadel/sound/vox/mister.ogg',
"mode" = 'modular_citadel/sound/vox/mode.ogg',
"motor" = 'modular_citadel/sound/vox/motor.ogg',
"motorpool" = 'modular_citadel/sound/vox/motorpool.ogg',
"move" = 'modular_citadel/sound/vox/move.ogg',
"must" = 'modular_citadel/sound/vox/must.ogg',
"nearest" = 'modular_citadel/sound/vox/nearest.ogg',
"nice" = 'modular_citadel/sound/vox/nice.ogg',
"nine" = 'modular_citadel/sound/vox/nine.ogg',
"nineteen" = 'modular_citadel/sound/vox/nineteen.ogg',
"ninety" = 'modular_citadel/sound/vox/ninety.ogg',
"no" = 'modular_citadel/sound/vox/no.ogg',
"nominal" = 'modular_citadel/sound/vox/nominal.ogg',
"north" = 'modular_citadel/sound/vox/north.ogg',
"not" = 'modular_citadel/sound/vox/not.ogg',
"november" = 'modular_citadel/sound/vox/november.ogg',
"now" = 'modular_citadel/sound/vox/now.ogg',
"number" = 'modular_citadel/sound/vox/number.ogg',
"objective" = 'modular_citadel/sound/vox/objective.ogg',
"observation" = 'modular_citadel/sound/vox/observation.ogg',
"of" = 'modular_citadel/sound/vox/of.ogg',
"officer" = 'modular_citadel/sound/vox/officer.ogg',
"ok" = 'modular_citadel/sound/vox/ok.ogg',
"on" = 'modular_citadel/sound/vox/on.ogg',
"one" = 'modular_citadel/sound/vox/one.ogg',
"open" = 'modular_citadel/sound/vox/open.ogg',
"operating" = 'modular_citadel/sound/vox/operating.ogg',
"operations" = 'modular_citadel/sound/vox/operations.ogg',
"operative" = 'modular_citadel/sound/vox/operative.ogg',
"option" = 'modular_citadel/sound/vox/option.ogg',
"order" = 'modular_citadel/sound/vox/order.ogg',
"organic" = 'modular_citadel/sound/vox/organic.ogg',
"oscar" = 'modular_citadel/sound/vox/oscar.ogg',
"out" = 'modular_citadel/sound/vox/out.ogg',
"outside" = 'modular_citadel/sound/vox/outside.ogg',
"over" = 'modular_citadel/sound/vox/over.ogg',
"overload" = 'modular_citadel/sound/vox/overload.ogg',
"override" = 'modular_citadel/sound/vox/override.ogg',
"pacify" = 'modular_citadel/sound/vox/pacify.ogg',
"pain" = 'modular_citadel/sound/vox/pain.ogg',
"pal" = 'modular_citadel/sound/vox/pal.ogg',
"panel" = 'modular_citadel/sound/vox/panel.ogg',
"percent" = 'modular_citadel/sound/vox/percent.ogg',
"perimeter" = 'modular_citadel/sound/vox/perimeter.ogg',
"permitted" = 'modular_citadel/sound/vox/permitted.ogg',
"personnel" = 'modular_citadel/sound/vox/personnel.ogg',
"pipe" = 'modular_citadel/sound/vox/pipe.ogg',
"plant" = 'modular_citadel/sound/vox/plant.ogg',
"platform" = 'modular_citadel/sound/vox/platform.ogg',
"please" = 'modular_citadel/sound/vox/please.ogg',
"point" = 'modular_citadel/sound/vox/point.ogg',
"portal" = 'modular_citadel/sound/vox/portal.ogg',
"power" = 'modular_citadel/sound/vox/power.ogg',
"presence" = 'modular_citadel/sound/vox/presence.ogg',
"press" = 'modular_citadel/sound/vox/press.ogg',
"primary" = 'modular_citadel/sound/vox/primary.ogg',
"proceed" = 'modular_citadel/sound/vox/proceed.ogg',
"processing" = 'modular_citadel/sound/vox/processing.ogg',
"progress" = 'modular_citadel/sound/vox/progress.ogg',
"proper" = 'modular_citadel/sound/vox/proper.ogg',
"propulsion" = 'modular_citadel/sound/vox/propulsion.ogg',
"prosecute" = 'modular_citadel/sound/vox/prosecute.ogg',
"protective" = 'modular_citadel/sound/vox/protective.ogg',
"push" = 'modular_citadel/sound/vox/push.ogg',
"quantum" = 'modular_citadel/sound/vox/quantum.ogg',
"quebec" = 'modular_citadel/sound/vox/quebec.ogg',
"question" = 'modular_citadel/sound/vox/question.ogg',
"questioning" = 'modular_citadel/sound/vox/questioning.ogg',
"quick" = 'modular_citadel/sound/vox/quick.ogg',
"quit" = 'modular_citadel/sound/vox/quit.ogg',
"radiation" = 'modular_citadel/sound/vox/radiation.ogg',
"radioactive" = 'modular_citadel/sound/vox/radioactive.ogg',
"rads" = 'modular_citadel/sound/vox/rads.ogg',
"rapid" = 'modular_citadel/sound/vox/rapid.ogg',
"reach" = 'modular_citadel/sound/vox/reach.ogg',
"reached" = 'modular_citadel/sound/vox/reached.ogg',
"reactor" = 'modular_citadel/sound/vox/reactor.ogg',
"red" = 'modular_citadel/sound/vox/red.ogg',
"relay" = 'modular_citadel/sound/vox/relay.ogg',
"released" = 'modular_citadel/sound/vox/released.ogg',
"remaining" = 'modular_citadel/sound/vox/remaining.ogg',
"renegade" = 'modular_citadel/sound/vox/renegade.ogg',
"repair" = 'modular_citadel/sound/vox/repair.ogg',
"report" = 'modular_citadel/sound/vox/report.ogg',
"reports" = 'modular_citadel/sound/vox/reports.ogg',
"required" = 'modular_citadel/sound/vox/required.ogg',
"research" = 'modular_citadel/sound/vox/research.ogg',
"reset" = 'modular_citadel/sound/vox/reset.ogg',
"resevoir" = 'modular_citadel/sound/vox/resevoir.ogg',
"resistance" = 'modular_citadel/sound/vox/resistance.ogg',
"returned" = 'modular_citadel/sound/vox/returned.ogg',
"right" = 'modular_citadel/sound/vox/right.ogg',
"rocket" = 'modular_citadel/sound/vox/rocket.ogg',
"roger" = 'modular_citadel/sound/vox/roger.ogg',
"romeo" = 'modular_citadel/sound/vox/romeo.ogg',
"room" = 'modular_citadel/sound/vox/room.ogg',
"round" = 'modular_citadel/sound/vox/round.ogg',
"run" = 'modular_citadel/sound/vox/run.ogg',
"safe" = 'modular_citadel/sound/vox/safe.ogg',
"safety" = 'modular_citadel/sound/vox/safety.ogg',
"sargeant" = 'modular_citadel/sound/vox/sargeant.ogg',
"satellite" = 'modular_citadel/sound/vox/satellite.ogg',
"save" = 'modular_citadel/sound/vox/save.ogg',
"science" = 'modular_citadel/sound/vox/science.ogg',
"scores" = 'modular_citadel/sound/vox/scores.ogg',
"scream" = 'modular_citadel/sound/vox/scream.ogg',
"screen" = 'modular_citadel/sound/vox/screen.ogg',
"search" = 'modular_citadel/sound/vox/search.ogg',
"second" = 'modular_citadel/sound/vox/second.ogg',
"secondary" = 'modular_citadel/sound/vox/secondary.ogg',
"seconds" = 'modular_citadel/sound/vox/seconds.ogg',
"sector" = 'modular_citadel/sound/vox/sector.ogg',
"secure" = 'modular_citadel/sound/vox/secure.ogg',
"secured" = 'modular_citadel/sound/vox/secured.ogg',
"security" = 'modular_citadel/sound/vox/security.ogg',
"select" = 'modular_citadel/sound/vox/select.ogg',
"selected" = 'modular_citadel/sound/vox/selected.ogg',
"service" = 'modular_citadel/sound/vox/service.ogg',
"seven" = 'modular_citadel/sound/vox/seven.ogg',
"seventeen" = 'modular_citadel/sound/vox/seventeen.ogg',
"seventy" = 'modular_citadel/sound/vox/seventy.ogg',
"severe" = 'modular_citadel/sound/vox/severe.ogg',
"sewage" = 'modular_citadel/sound/vox/sewage.ogg',
"sewer" = 'modular_citadel/sound/vox/sewer.ogg',
"shield" = 'modular_citadel/sound/vox/shield.ogg',
"shipment" = 'modular_citadel/sound/vox/shipment.ogg',
"shock" = 'modular_citadel/sound/vox/shock.ogg',
"shoot" = 'modular_citadel/sound/vox/shoot.ogg',
"shower" = 'modular_citadel/sound/vox/shower.ogg',
"shut" = 'modular_citadel/sound/vox/shut.ogg',
"side" = 'modular_citadel/sound/vox/side.ogg',
"sierra" = 'modular_citadel/sound/vox/sierra.ogg',
"sight" = 'modular_citadel/sound/vox/sight.ogg',
"silo" = 'modular_citadel/sound/vox/silo.ogg',
"six" = 'modular_citadel/sound/vox/six.ogg',
"sixteen" = 'modular_citadel/sound/vox/sixteen.ogg',
"sixty" = 'modular_citadel/sound/vox/sixty.ogg',
"slime" = 'modular_citadel/sound/vox/slime.ogg',
"slow" = 'modular_citadel/sound/vox/slow.ogg',
"soldier" = 'modular_citadel/sound/vox/soldier.ogg',
"some" = 'modular_citadel/sound/vox/some.ogg',
"someone" = 'modular_citadel/sound/vox/someone.ogg',
"something" = 'modular_citadel/sound/vox/something.ogg',
"son" = 'modular_citadel/sound/vox/son.ogg',
"sorry" = 'modular_citadel/sound/vox/sorry.ogg',
"south" = 'modular_citadel/sound/vox/south.ogg',
"squad" = 'modular_citadel/sound/vox/squad.ogg',
"square" = 'modular_citadel/sound/vox/square.ogg',
"stairway" = 'modular_citadel/sound/vox/stairway.ogg',
"status" = 'modular_citadel/sound/vox/status.ogg',
"sterile" = 'modular_citadel/sound/vox/sterile.ogg',
"sterilization" = 'modular_citadel/sound/vox/sterilization.ogg',
"stolen" = 'modular_citadel/sound/vox/stolen.ogg',
"storage" = 'modular_citadel/sound/vox/storage.ogg',
"sub" = 'modular_citadel/sound/vox/sub.ogg',
"subsurface" = 'modular_citadel/sound/vox/subsurface.ogg',
"sudden" = 'modular_citadel/sound/vox/sudden.ogg',
"suit" = 'modular_citadel/sound/vox/suit.ogg',
"superconducting" = 'modular_citadel/sound/vox/superconducting.ogg',
"supercooled" = 'modular_citadel/sound/vox/supercooled.ogg',
"supply" = 'modular_citadel/sound/vox/supply.ogg',
"surface" = 'modular_citadel/sound/vox/surface.ogg',
"surrender" = 'modular_citadel/sound/vox/surrender.ogg',
"surround" = 'modular_citadel/sound/vox/surround.ogg',
"surrounded" = 'modular_citadel/sound/vox/surrounded.ogg',
"switch" = 'modular_citadel/sound/vox/switch.ogg',
"system" = 'modular_citadel/sound/vox/system.ogg',
"systems" = 'modular_citadel/sound/vox/systems.ogg',
"tactical" = 'modular_citadel/sound/vox/tactical.ogg',
"take" = 'modular_citadel/sound/vox/take.ogg',
"talk" = 'modular_citadel/sound/vox/talk.ogg',
"tango" = 'modular_citadel/sound/vox/tango.ogg',
"tank" = 'modular_citadel/sound/vox/tank.ogg',
"target" = 'modular_citadel/sound/vox/target.ogg',
"team" = 'modular_citadel/sound/vox/team.ogg',
"temperature" = 'modular_citadel/sound/vox/temperature.ogg',
"temporal" = 'modular_citadel/sound/vox/temporal.ogg',
"ten" = 'modular_citadel/sound/vox/ten.ogg',
"terminal" = 'modular_citadel/sound/vox/terminal.ogg',
"terminated" = 'modular_citadel/sound/vox/terminated.ogg',
"termination" = 'modular_citadel/sound/vox/termination.ogg',
"test" = 'modular_citadel/sound/vox/test.ogg',
"that" = 'modular_citadel/sound/vox/that.ogg',
"the" = 'modular_citadel/sound/vox/the.ogg',
"then" = 'modular_citadel/sound/vox/then.ogg',
"there" = 'modular_citadel/sound/vox/there.ogg',
"third" = 'modular_citadel/sound/vox/third.ogg',
"thirteen" = 'modular_citadel/sound/vox/thirteen.ogg',
"thirty" = 'modular_citadel/sound/vox/thirty.ogg',
"this" = 'modular_citadel/sound/vox/this.ogg',
"those" = 'modular_citadel/sound/vox/those.ogg',
"thousand" = 'modular_citadel/sound/vox/thousand.ogg',
"threat" = 'modular_citadel/sound/vox/threat.ogg',
"three" = 'modular_citadel/sound/vox/three.ogg',
"through" = 'modular_citadel/sound/vox/through.ogg',
"time" = 'modular_citadel/sound/vox/time.ogg',
"to" = 'modular_citadel/sound/vox/to.ogg',
"top" = 'modular_citadel/sound/vox/top.ogg',
"topside" = 'modular_citadel/sound/vox/topside.ogg',
"touch" = 'modular_citadel/sound/vox/touch.ogg',
"towards" = 'modular_citadel/sound/vox/towards.ogg',
"track" = 'modular_citadel/sound/vox/track.ogg',
"train" = 'modular_citadel/sound/vox/train.ogg',
"transportation" = 'modular_citadel/sound/vox/transportation.ogg',
"truck" = 'modular_citadel/sound/vox/truck.ogg',
"tunnel" = 'modular_citadel/sound/vox/tunnel.ogg',
"turn" = 'modular_citadel/sound/vox/turn.ogg',
"turret" = 'modular_citadel/sound/vox/turret.ogg',
"twelve" = 'modular_citadel/sound/vox/twelve.ogg',
"twenty" = 'modular_citadel/sound/vox/twenty.ogg',
"two" = 'modular_citadel/sound/vox/two.ogg',
"unauthorized" = 'modular_citadel/sound/vox/unauthorized.ogg',
"under" = 'modular_citadel/sound/vox/under.ogg',
"uniform" = 'modular_citadel/sound/vox/uniform.ogg',
"unlocked" = 'modular_citadel/sound/vox/unlocked.ogg',
"until" = 'modular_citadel/sound/vox/until.ogg',
"up" = 'modular_citadel/sound/vox/up.ogg',
"upper" = 'modular_citadel/sound/vox/upper.ogg',
"uranium" = 'modular_citadel/sound/vox/uranium.ogg',
"us" = 'modular_citadel/sound/vox/us.ogg',
"usa" = 'modular_citadel/sound/vox/usa.ogg',
"use" = 'modular_citadel/sound/vox/use.ogg',
"used" = 'modular_citadel/sound/vox/used.ogg',
"user" = 'modular_citadel/sound/vox/user.ogg',
"vacate" = 'modular_citadel/sound/vox/vacate.ogg',
"valid" = 'modular_citadel/sound/vox/valid.ogg',
"vapor" = 'modular_citadel/sound/vox/vapor.ogg',
"vent" = 'modular_citadel/sound/vox/vent.ogg',
"ventillation" = 'modular_citadel/sound/vox/ventillation.ogg',
"victor" = 'modular_citadel/sound/vox/victor.ogg',
"violated" = 'modular_citadel/sound/vox/violated.ogg',
"violation" = 'modular_citadel/sound/vox/violation.ogg',
"voltage" = 'modular_citadel/sound/vox/voltage.ogg',
"vox_login" = 'modular_citadel/sound/vox/vox_login.ogg',
"walk" = 'modular_citadel/sound/vox/walk.ogg',
"wall" = 'modular_citadel/sound/vox/wall.ogg',
"want" = 'modular_citadel/sound/vox/want.ogg',
"wanted" = 'modular_citadel/sound/vox/wanted.ogg',
"warm" = 'modular_citadel/sound/vox/warm.ogg',
"warn" = 'modular_citadel/sound/vox/warn.ogg',
"warning" = 'modular_citadel/sound/vox/warning.ogg',
"waste" = 'modular_citadel/sound/vox/waste.ogg',
"water" = 'modular_citadel/sound/vox/water.ogg',
"we" = 'modular_citadel/sound/vox/we.ogg',
"weapon" = 'modular_citadel/sound/vox/weapon.ogg',
"west" = 'modular_citadel/sound/vox/west.ogg',
"whiskey" = 'modular_citadel/sound/vox/whiskey.ogg',
"white" = 'modular_citadel/sound/vox/white.ogg',
"wilco" = 'modular_citadel/sound/vox/wilco.ogg',
"will" = 'modular_citadel/sound/vox/will.ogg',
"with" = 'modular_citadel/sound/vox/with.ogg',
"without" = 'modular_citadel/sound/vox/without.ogg',
"woop" = 'modular_citadel/sound/vox/woop.ogg',
"xeno" = 'modular_citadel/sound/vox/xeno.ogg',
"yankee" = 'modular_citadel/sound/vox/yankee.ogg',
"yards" = 'modular_citadel/sound/vox/yards.ogg',
"year" = 'modular_citadel/sound/vox/year.ogg',
"yellow" = 'modular_citadel/sound/vox/yellow.ogg',
"yes" = 'modular_citadel/sound/vox/yes.ogg',
"you" = 'modular_citadel/sound/vox/you.ogg',
"your" = 'modular_citadel/sound/vox/your.ogg',
"yourself" = 'modular_citadel/sound/vox/yourself.ogg',
"zero" = 'modular_citadel/sound/vox/zero.ogg',
"zone" = 'modular_citadel/sound/vox/zone.ogg',
"zulu" = 'modular_citadel/sound/vox/zulu.ogg',))
#endif
@@ -13,13 +13,23 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
w_class = 3
hitsound = 'sound/weapons/bite.ogg'
sharpness = IS_SHARP
var/stamtostunconversion = 0.1 //Total stamloss gets multiplied by this value for the help intent hard stun. Resting adds an additional 2x multiplier on top. Keep this low or so help me god.
var/stuncooldown = 4 SECONDS //How long it takes before you're able to attempt to stun a target again
var/nextstuntime
/obj/item/dogborg/jaws/examine(mob/user)
. = ..()
if(!CONFIG_GET(flag/weaken_secborg))
to_chat(user, "<span class='notice'>Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets.</span>")
/obj/item/dogborg/jaws/big
name = "combat jaws"
desc = "The jaws of the law. Very sharp."
icon_state = "jaws"
force = 10 //Lowered to match secborg. No reason it should be more than a secborg's baton.
force = 15 //Chomp chomp. Crew harm.
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
stamtostunconversion = 0.2 // 100*0.2*2=40. Stun's just long enough to slap on cuffs with click delay if the target is near hard stamcrit.
stuncooldown = 6 SECONDS
/obj/item/dogborg/jaws/small
@@ -31,11 +41,36 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
var/status = 0
/obj/item/dogborg/jaws/attack(atom/A, mob/living/silicon/robot/user)
..()
user.do_attack_animation(A, ATTACK_EFFECT_BITE)
if(!istype(user))
return
if(!CONFIG_GET(flag/weaken_secborg) && user.a_intent != INTENT_HARM && istype(A, /mob/living))
if(A == user.pulling)
to_chat(user, "<span class='warning'>You already have [A] in your jaws.</span>")
return
if(nextstuntime >= world.time)
to_chat(user, "<span class='warning'>Your jaw servos are still recharging.</span>")
return
nextstuntime = world.time + stuncooldown
var/mob/living/M = A
var/cachedstam = M.getStaminaLoss()
var/totalstuntime = cachedstam * stamtostunconversion * (M.lying ? 2 : 1)
if(!M.resting)
M.Knockdown(cachedstam*2) //BORK BORK. GET DOWN.
M.Stun(totalstuntime)
user.do_attack_animation(A, ATTACK_EFFECT_BITE)
user.start_pulling(M, TRUE) //Yip yip. Come with.
user.changeNext_move(CLICK_CD_MELEE)
M.visible_message("<span class='danger'>[user] clamps [user.p_their()] [src] onto [M] and latches on!</span>", "<span class='userdanger'>[user] clamps [user.p_their()] [src] onto you and latches on!</span>")
if(totalstuntime >= 4 SECONDS)
playsound(usr, 'sound/effects/k9_jaw_strong.ogg', 75, FALSE, 2) //Wuff wuff. Big stun.
else
playsound(usr, 'sound/effects/k9_jaw_weak.ogg', 50, TRUE, -1) //Arf arf. Pls buff.
else
. = ..()
user.do_attack_animation(A, ATTACK_EFFECT_BITE)
/obj/item/dogborg/jaws/small/attack_self(mob/user)
var/mob/living/silicon/robot.R = user
var/mob/living/silicon/robot/R = user
if(R.cell && R.cell.charge > 100)
if(R.emagged && status == 0)
name = "combat jaws"
@@ -43,14 +78,18 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
desc = "The jaws of the law."
force = 12
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
stamtostunconversion = 0.15
stuncooldown = 5 SECONDS
status = 1
to_chat(user, "<span class='notice'>Your jaws are now [status ? "Combat" : "Pup'd"].</span>")
else
name = "puppy jaws"
icon_state = "smalljaws"
desc = "The jaws of a small dog."
force = 5
force = initial(force)
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
stamtostunconversion = initial(stamtostunconversion)
stuncooldown = initial(stuncooldown)
status = 0
if(R.emagged)
to_chat(user, "<span class='notice'>Your jaws are now [status ? "Combat" : "Pup'd"].</span>")
@@ -143,7 +182,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/obj/item/storage/bag/borgdelivery/ComponentInitialize()
. = ..()
GET_COMPONENT(STR, /datum/component/storage)
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_w_class = WEIGHT_CLASS_BULKY
STR.max_combined_w_class = 5
STR.max_items = 1
@@ -167,7 +206,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
item_flags |= NOBLUDGEON //No more attack messages
/obj/item/soap/tongue/attack_self(mob/user)
var/mob/living/silicon/robot.R = user
var/mob/living/silicon/robot/R = user
if(R.cell && R.cell.charge > 100)
if(R.emagged && status == 0)
status = !status
@@ -187,7 +226,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
update_icon()
/obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity)
var/mob/living/silicon/robot.R = user
var/mob/living/silicon/robot/R = user
if(!proximity || !check_allowed_items(target))
return
if(R.client && (target in R.client.screen))
@@ -273,7 +312,6 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
target.wash_cream()
return
<<<<<<< HEAD
//Nerfed tongue for flavour reasons (haha geddit?). Used for aux skins for regular borgs
/obj/item/soap/tongue/flavour
desc = "For giving affectionate kisses."
@@ -310,8 +348,6 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
user.visible_message("<span class='notice'>[user] [pick(attack_verb)] \the [target.name] with their nose!</span>")
=======
>>>>>>> parent of b404e18b15... Merge branch 'master' into FERMICHEMCurTweaks
//Dogfood
/obj/item/trash/rkibble
@@ -346,8 +382,10 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/mob/living/silicon/robot
var/leaping = 0
var/pounce_cooldown = 0
var/pounce_cooldown_time = 20 //Buffed to counter balance changes
var/pounce_spoolup = 1
var/pounce_cooldown_time = 30 //Time in deciseconds between pounces
var/pounce_spoolup = 5 //Time in deciseconds for the pounce to happen after clicking
var/pounce_stamloss_cap = 120 //How much staminaloss pounces alone are capable of bringing a spaceman to
var/pounce_stamloss = 80 //Base staminaloss value of the pounce
var/leap_at
var/disabler
var/laser
@@ -359,13 +397,12 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/obj/item/dogborg/pounce/afterattack(atom/A, mob/user)
var/mob/living/silicon/robot/R = user
if(R && !R.pounce_cooldown)
R.pounce_cooldown = !R.pounce_cooldown
if(R && (world.time >= R.pounce_cooldown))
R.pounce_cooldown = world.time + R.pounce_cooldown_time
to_chat(R, "<span class ='warning'>Your targeting systems lock on to [A]...</span>")
playsound(R, 'sound/effects/servostep.ogg', 100, TRUE)
addtimer(CALLBACK(R, /mob/living/silicon/robot.proc/leap_at, A), R.pounce_spoolup)
spawn(R.pounce_cooldown_time)
R.pounce_cooldown = !R.pounce_cooldown
else if(R && R.pounce_cooldown)
else if(R && (world.time < R.pounce_cooldown))
to_chat(R, "<span class='danger'>Your leg actuators are still recharging!</span>")
/mob/living/silicon/robot/proc/leap_at(atom/A)
@@ -388,6 +425,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
update_icons()
throw_at(A, MAX_K9_LEAP_DIST, 1, spin=0, diagonals_first = 1)
cell.use(750) //Less than a stunbaton since stunbatons hit everytime.
playsound(src, 'sound/effects/stealthoff.ogg', 25, TRUE, -1)
weather_immunities -= "lava"
/mob/living/silicon/robot/throw_impact(atom/A)
@@ -405,7 +443,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
blocked = 1
if(!blocked)
L.visible_message("<span class ='danger'>[src] pounces on [L]!</span>", "<span class ='userdanger'>[src] pounces on you!</span>")
L.Knockdown(iscarbon(L) ? 225 : 45) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice.
L.Knockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice.
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1)
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
step_towards(src,L)
@@ -1,26 +0,0 @@
mob/living/silicon
no_vore = TRUE
/mob/living/silicon/robot
var/dogborg = FALSE
/mob/living/silicon/robot/lay_down()
..()
update_canmove()
/mob/living/silicon/robot/update_canmove()
..()
if(client && stat != DEAD && dogborg == FALSE)
if(resting)
cut_overlays()
icon_state = "[module.cyborg_base_icon]-rest"
else
icon_state = "[module.cyborg_base_icon]"
update_icons()
/mob/living/silicon/robot/adjustStaminaLossBuffered(amount, updating_stamina = 1)
if(istype(cell))
cell.charge -= amount*5
@@ -1,465 +0,0 @@
/mob/living/silicon/robot/modules/medihound
set_module = /obj/item/robot_module/medihound
/mob/living/silicon/robot/modules/k9
set_module = /obj/item/robot_module/k9
/mob/living/silicon/robot/modules/scrubpup
set_module = /obj/item/robot_module/scrubpup
/mob/living/silicon/robot/modules/borgi
set_module = /obj/item/robot_module/borgi
/mob/living/silicon/robot/proc/get_cit_modules()
var/list/modulelist = list()
modulelist["MediHound"] = /obj/item/robot_module/medihound
if(!CONFIG_GET(flag/disable_secborg))
modulelist["Security K-9"] = /obj/item/robot_module/k9
modulelist["Scrub Puppy"] = /obj/item/robot_module/scrubpup
modulelist["Borgi"] = /obj/item/robot_module/borgi
return modulelist
/obj/item/robot_module
var/sleeper_overlay
var/icon/cyborg_icon_override
var/has_snowflake_deadsprite
var/cyborg_pixel_offset
var/moduleselect_alternate_icon
var/dogborg = FALSE
/obj/item/robot_module/k9
name = "Security K-9 Unit"
basic_modules = list(
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/storage/bag/borgdelivery,
/obj/item/dogborg/jaws/big,
/obj/item/dogborg/pounce,
/obj/item/clothing/mask/gas/sechailer/cyborg,
/obj/item/soap/tongue,
/obj/item/analyzer/nose,
/obj/item/dogborg/sleeper/K9,
/obj/item/gun/energy/disabler/cyborg,
/obj/item/pinpointer/crew)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "k9"
moduleselect_icon = "k9"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
can_be_pushed = FALSE
hat_offset = INFINITY
sleeper_overlay = "ksleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
/obj/item/robot_module/k9/do_transform_animation()
..()
to_chat(loc,"<span class='userdanger'>While you have picked the Security K-9 module, you still have to follow your laws, NOT Space Law. \
For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")
/obj/item/robot_module/k9/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/sechoundmodels = list("Default", "Dark", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
sechoundmodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in sechoundmodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "k9"
if("Alina")
cyborg_base_icon = "alina-sec"
special_light_key = "alina"
sleeper_overlay = "alinasleeper"
if("Dark")
cyborg_base_icon = "k9dark"
if("Vale")
cyborg_base_icon = "valesec"
return ..()
/obj/item/robot_module/medihound
name = "MediHound"
basic_modules = list(
/obj/item/dogborg/jaws/small,
/obj/item/storage/bag/borgdelivery,
/obj/item/analyzer/nose,
/obj/item/soap/tongue,
/obj/item/extinguisher/mini,
/obj/item/healthanalyzer,
/obj/item/dogborg/sleeper/medihound,
/obj/item/roller/robo,
/obj/item/reagent_containers/borghypo,
/obj/item/twohanded/shockpaddles/cyborg/hound,
/obj/item/stack/medical/gauze/cyborg,
/obj/item/pinpointer/crew,
/obj/item/sensor_device)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "medihound"
moduleselect_icon = "medihound"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
can_be_pushed = FALSE
hat_offset = INFINITY
sleeper_overlay = "msleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
/obj/item/robot_module/medihound/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/medhoundmodels = list("Default", "Dark", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
medhoundmodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medhoundmodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "medihound"
if("Dark")
cyborg_base_icon = "medihounddark"
sleeper_overlay = "mdsleeper"
if("Vale")
cyborg_base_icon = "valemed"
sleeper_overlay = "valemedsleeper"
if("Alina")
cyborg_base_icon = "alina-med"
special_light_key = "alina"
sleeper_overlay = "alinasleeper"
return ..()
/obj/item/robot_module/scrubpup
name = "Scrub Pup"
basic_modules = list(
/obj/item/dogborg/jaws/small,
/obj/item/analyzer/nose,
/obj/item/soap/tongue/scrubpup,
/obj/item/lightreplacer/cyborg,
/obj/item/extinguisher/mini,
/obj/item/dogborg/sleeper/compactor)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/janitor,
/obj/item/clockwork/replica_fabricator/cyborg)
cyborg_base_icon = "scrubpup"
moduleselect_icon = "janitor"
hat_offset = INFINITY
clean_on_move = TRUE
sleeper_overlay = "jsleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
cyborg_pixel_offset = -16
dogborg = TRUE
/obj/item/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
if(LR)
for(var/i in 1 to coeff)
LR.Charge(R)
/obj/item/robot_module/scrubpup/do_transform_animation()
..()
to_chat(loc,"<span class='userdanger'>As tempting as it might be, do not begin binging on important items. Eat your garbage responsibly. People are not included under Garbage.</span>")
/obj/item/robot_module/borgi
name = "Borgi"
basic_modules = list(
/obj/item/dogborg/jaws/small,
/obj/item/storage/bag/borgdelivery,
/obj/item/analyzer/nose,
/obj/item/soap/tongue,
/obj/item/healthanalyzer,
/obj/item/extinguisher/mini,
/obj/item/borg/cyborghug)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg,
/obj/item/clockwork/weapon/ratvarian_spear,
/obj/item/clockwork/replica_fabricator/cyborg)
cyborg_base_icon = "borgi"
moduleselect_icon = "borgi"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
has_snowflake_deadsprite = TRUE
/*
/obj/item/robot_module/orepup
name = "Ore Pup"
basic_modules = list(
/obj/item/storage/bag/ore/cyborg,
/obj/item/analyzer/nose,
/obj/item/storage/bag/borgdelivery,
/obj/item/dogborg/sleeper/ore,
/obj/item/pickaxe/drill/cyborg,
/obj/item/shovel,
/obj/item/crowbar/cyborg,
/obj/item/weldingtool/mini,
/obj/item/extinguisher/mini,
/obj/item/t_scanner/adv_mining_scanner,
/obj/item/gun/energy/kinetic_accelerator/cyborg,
/obj/item/gps/cyborg)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/miner,
/obj/item/clockwork/weapon/ratvarian_spear,
/obj/item/borg/sight/xray/truesight_lens)
cyborg_base_icon = "orepup"
moduleselect_icon = "orepup"
sleeper_overlay = "osleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
cyborg_pixel_offset = -16
/obj/item/robot_module/miner/do_transform_animation()
var/mob/living/silicon/robot/R = loc
R.cut_overlays()
R.setDir(SOUTH)
flick("orepup_transform", R)
do_transform_delay()
R.update_headlamp()
*/
/obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "medical"
if("Droid")
cyborg_base_icon = "medical"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
hat_offset = 4
if("Sleek")
cyborg_base_icon = "sleekmed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinamed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Eyebot")
cyborg_base_icon = "eyebotmed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavymed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/janitor/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/janimodels = list("Default", "Sleek", "Marina", "Can", "Heavy")
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in janimodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "janitor"
if("Marina")
cyborg_base_icon = "marinajan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleekjan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "canjan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavyres"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/peacekeeper/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Spider")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "peace"
if("Spider")
cyborg_base_icon = "whitespider"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/security/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Default - Treads", "Heavy", "Sleek", "Can", "Marina", "Spider")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "sec"
if("Default - Treads")
cyborg_base_icon = "sec-tread"
special_light_key = "sec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleeksec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinasec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "cansec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidersec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavysec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Waitress", "Heavy", "Sleek", "Butler", "Tophat", "Kent", "Bro", "DarkK9", "Vale", "ValeDark")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Waitress")
cyborg_base_icon = "service_f"
if("Butler")
cyborg_base_icon = "service_m"
if("Bro")
cyborg_base_icon = "brobot"
if("Kent")
cyborg_base_icon = "kent"
special_light_key = "medical"
hat_offset = 3
if("Tophat")
cyborg_base_icon = "tophat"
special_light_key = null
hat_offset = INFINITY //He is already wearing a hat
if("Sleek")
cyborg_base_icon = "sleekserv"
special_light_key = "sleekserv"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavyserv"
special_light_key = "heavyserv"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("DarkK9")
cyborg_base_icon = "k50"
special_light_key = "k50"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("Vale")
cyborg_base_icon = "valeserv"
special_light_key = "valeserv"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("ValeDark")
cyborg_base_icon = "valeservdark"
special_light_key = "valeservdark"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
return ..()
/obj/item/robot_module/engineering/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/engymodels = list("Default", "Default - Treads", "Heavy", "Sleek", "Marina", "Can", "Spider", "Loader","Handy", "Pup Dozer", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
engymodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in engymodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "engineer"
if("Default - Treads")
cyborg_base_icon = "engi-tread"
special_light_key = "engineer"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Loader")
cyborg_base_icon = "loaderborg"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
has_snowflake_deadsprite = TRUE
if("Handy")
cyborg_base_icon = "handyeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleekeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "caneng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinaeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidereng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavyeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Pup Dozer")
cyborg_base_icon = "pupdozer"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("Vale")
cyborg_base_icon = "valeeng"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("Alina")
cyborg_base_icon = "alina-eng"
special_light_key = "alina"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
return ..()
/obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Lavaland")
cyborg_base_icon = "miner"
if("Asteroid")
cyborg_base_icon = "minerOLD"
special_light_key = "miner"
if("Droid")
cyborg_base_icon = "miner"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
hat_offset = 4
if("Sleek")
cyborg_base_icon = "sleekmin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "canmin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinamin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidermin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavymin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
@@ -11,6 +11,7 @@
. = ..()
if(!resting && !sprinting)
. += 1
. += speed
/mob/living/silicon/robot/proc/togglesprint(shutdown = FALSE) //Basically a copypaste of the proc from /mob/living/carbon/human
if(!shutdown && (!cell || cell.charge < 25))
@@ -18,11 +19,11 @@
sprinting = shutdown ? FALSE : !sprinting
if(!resting && canmove)
if(sprinting)
playsound_local(src, 'modular_citadel/sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE)
playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE)
else
if(shutdown)
playsound_local(src, 'sound/effects/light_flicker.ogg', 50, FALSE, pressure_affected = FALSE)
playsound_local(src, 'modular_citadel/sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
playsound_local(src, 'sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
if(hud_used && hud_used.static_inventory)
for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory)
selector.insert_witty_toggle_joke_here(src)
@@ -1,151 +0,0 @@
/obj/item/seeds/banana/Initialize()
. = ..()
mutatelist += /obj/item/seeds/banana/exotic_banana
/obj/item/seeds/banana/exotic_banana
name = "pack of exotic banana seeds"
desc = "They're seeds that grow into banana trees. However, those bananas might be alive."
icon = 'modular_citadel/icons/mob/BananaSpider.dmi'
icon_state = "seed_ExoticBanana"
species = "banana"
plantname = "Exotic Banana Tree"
product = /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable
growing_icon = 'modular_citadel/icons/mob/BananaSpider.dmi'
icon_dead = "banana-dead"
mutatelist = list()
genes = list(/datum/plant_gene/trait/slip)
reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable
seed = /obj/item/seeds/banana/exotic_banana
name = "banana spider"
desc = "You do not know what it is, but you can bet the clown would love it."
icon = 'modular_citadel/icons/mob/BananaSpider.dmi'
icon_state = "banana"
item_state = "banana"
filling_color = "#FFFF00"
list_reagents = list("nutriment" = 3, "vitamin" = 2)
foodtype = GROSS | MEAT | RAW | FRUIT
grind_results = list("blood" = 20, "liquidgibs" = 5)
juice_results = list("banana" = 0)
var/awakening = 0
/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user)
if(awakening || isspaceturf(user.loc))
return
to_chat(user, "<span class='notice'>You decide to wake up the banana spider...</span>")
awakening = 1
spawn(30)
if(!QDELETED(src))
var/mob/living/simple_animal/banana_spider/S = new /mob/living/simple_animal/banana_spider(get_turf(src.loc))
S.speed += round(10 / seed.potency)
S.visible_message("<span class='notice'>The banana spider chitters as it stretches its legs.</span>")
qdel(src)
/mob/living/simple_animal/banana_spider
icon = 'modular_citadel/icons/mob/BananaSpider.dmi'
name = "banana spider"
desc = "What the fuck is this abomination?"
icon_state = "banana"
icon_dead = "banana_peel"
health = 1
maxHealth = 1
turns_per_move = 5 //this isn't player speed =|
speed = 2 //this is player speed
loot = list(/obj/item/reagent_containers/food/snacks/deadbanana_spider)
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)
minbodytemp = 270
maxbodytemp = INFINITY
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
response_help = "pokes"
response_disarm = "shoos"
response_harm = "splats"
speak_emote = list("chitters")
mouse_opacity = 2
density = TRUE
ventcrawler = VENTCRAWLER_ALWAYS
gold_core_spawnable = FRIENDLY_SPAWN
verb_say = "chitters"
verb_ask = "chitters inquisitively"
verb_exclaim = "chitters loudly"
verb_yell = "chitters loudly"
var/squish_chance = 50
var/projectile_density = TRUE //griffons get shot
del_on_death = TRUE
/mob/living/simple_animal/banana_spider/Initialize()
. = ..()
var/area/A = get_area(src)
if(A)
notify_ghosts("A banana spider has been created in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE)
/mob/living/simple_animal/banana_spider/attack_ghost(mob/user)
if(key) //please stop using src. without a good reason.
return
if(CONFIG_GET(flag/use_age_restriction_for_jobs))
if(!isnum(user.client.player_age))
return
if(!SSticker.mode)
to_chat(user, "Can't become a banana spider before the game has started.")
return
var/be_spider = alert("Become a banana spider? (Warning, You can no longer be cloned!)",,"Yes","No")
if(be_spider == "No" || QDELETED(src) || !isobserver(user))
return
sentience_act()
user.transfer_ckey(src, FALSE)
density = TRUE
/mob/living/simple_animal/banana_spider/ComponentInitialize()
. = ..()
AddComponent(/datum/component/slippery, 40)
/mob/living/simple_animal/banana_spider/Crossed(atom/movable/AM) //no /var in proc headers
. = ..()
if(istype(AM, /obj/item/projectile) && projectile_density) //forced projectile density
var/obj/item/projectile/P = AM
P.Bump(src)
if(ismob(AM))
if(isliving(AM))
var/mob/living/A = AM
if(A.mob_size > MOB_SIZE_SMALL && !(A.movement_type & FLYING))
if(prob(squish_chance))
A.visible_message("<span class='notice'>[A] squashed [src].</span>", "<span class='notice'>You squashed [src] under your weight as you fell.</span>")
adjustBruteLoss(1)
else
visible_message("<span class='notice'>[src] avoids getting crushed.</span>")
else
if(isstructure(AM))
if(prob(squish_chance))
AM.visible_message("<span class='notice'>[src] was crushed under [AM]'s weight as they fell.</span>")
adjustBruteLoss(1)
else
visible_message("<span class='notice'>[src] avoids getting crushed.</span>")
/mob/living/simple_animal/banana_spider/ex_act()
return
/mob/living/simple_animal/banana_spider/start_pulling()
return FALSE //No.
/obj/item/reagent_containers/food/snacks/deadbanana_spider
name = "dead banana spider"
desc = "Thank god it's gone...but it does look slippery."
icon = 'modular_citadel/icons/mob/BananaSpider.dmi'
icon_state = "banana_peel"
bitesize = 3
eatverb = "devours"
list_reagents = list("nutriment" = 3, "vitamin" = 2)
foodtype = GROSS | MEAT | RAW
grind_results = list("blood" = 20, "liquidgibs" = 5)
juice_results = list("banana" = 0)
/obj/item/reagent_containers/food/snacks/deadbanana_spider/Initialize()
. = ..()
AddComponent(/datum/component/slippery, 20)
@@ -1,134 +0,0 @@
/mob/living/simple_animal/kiwi
name = "space kiwi"
desc = "Exposure to low gravity made them grow larger."
gender = FEMALE
icon = 'modular_citadel/icons/mob/kiwi.dmi'
icon_state = "kiwi"
icon_living = "kiwi"
icon_dead = "dead"
speak = list("Chirp!","Cheep cheep chirp!!","Cheep.")
speak_emote = list("chirps","trills")
emote_hear = list("chirps.")
emote_see = list("pecks at the ground.","jumps in place.")
density = FALSE
speak_chance = 2
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 3)
var/egg_type = /obj/item/reagent_containers/food/snacks/egg/kiwiEgg
var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
attacktext = "kicks"
health = 25
maxHealth = 25
ventcrawler = VENTCRAWLER_ALWAYS
var/eggsleft = 0
var/eggsFertile = TRUE
pass_flags = PASSTABLE | PASSMOB
mob_size = MOB_SIZE_SMALL
var/list/feedMessages = list("It chirps happily.","It chirps happily.")
var/list/layMessage = list("lays an egg.","squats down and croons.","begins making a huge racket.","begins chirping raucously.")
gold_core_spawnable = FRIENDLY_SPAWN
var/static/kiwi_count = 0
/mob/living/simple_animal/kiwi/Destroy()
--kiwi_count
return ..()
/mob/living/simple_animal/kiwi/Initialize()
. = ..()
++kiwi_count
/mob/living/simple_animal/kiwi/Life()
. =..()
if(!.)
return
if((!stat && prob(3) && eggsleft > 0) && egg_type)
visible_message("[src] [pick(layMessage)]")
eggsleft--
var/obj/item/E = new egg_type(get_turf(src))
E.pixel_x = rand(-6,6)
E.pixel_y = rand(-6,6)
if(eggsFertile)
if(kiwi_count < MAX_CHICKENS && prob(25))
START_PROCESSING(SSobj, E)
/obj/item/reagent_containers/food/snacks/egg/kiwiEgg/process()
if(isturf(loc))
amount_grown += rand(1,2)
if(amount_grown >= 100)
visible_message("[src] hatches with a quiet cracking sound.")
new /mob/living/simple_animal/babyKiwi(get_turf(src))
STOP_PROCESSING(SSobj, src)
qdel(src)
else
STOP_PROCESSING(SSobj, src)
/mob/living/simple_animal/kiwi/attackby(obj/item/O, mob/user, params)
if(istype(O, food_type)) //feedin' dem kiwis
if(!stat && eggsleft < 8)
var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]"
user.visible_message(feedmsg)
qdel(O)
eggsleft += rand(1, 4)
else
to_chat(user, "<span class='warning'>[name] doesn't seem hungry!</span>")
else
..()
/mob/living/simple_animal/babyKiwi
name = "baby space kiwi"
desc = "So huggable."
icon = 'modular_citadel/icons/mob/kiwi.dmi'
icon_state = "babyKiwi"
icon_living = "babyKiwi"
icon_dead = "deadBaby"
icon_gib = "chick_gib"
gender = FEMALE
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
speak_emote = list("chirps")
emote_hear = list("chirps.")
emote_see = list("pecks at the ground.","Happily bounces in place.")
density = FALSE
speak_chance = 2
turns_per_move = 2
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
attacktext = "kicks"
health = 10
maxHealth = 10
ventcrawler = VENTCRAWLER_ALWAYS
var/amount_grown = 0
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
gold_core_spawnable = FRIENDLY_SPAWN
/mob/living/simple_animal/babyKiwi/Initialize()
. = ..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
/mob/living/simple_animal/babyKiwi/Life()
. =..()
if(!.)
return
if(!stat && !ckey)
amount_grown += rand(1,2)
if(amount_grown >= 100)
new /mob/living/simple_animal/kiwi(src.loc)
qdel(src)
/obj/item/reagent_containers/food/snacks/egg/kiwiEgg
name = "kiwi egg"
icon = 'modular_citadel/icons/mob/kiwi.dmi'
desc = "A slightly bigger egg!"
icon_state = "egg"
@@ -1,135 +0,0 @@
//CARBON MOBS
/mob/living/carbon/alien
devourable = TRUE
digestable = TRUE
feeding = TRUE
/mob/living/carbon/monkey
devourable = TRUE
digestable = TRUE
feeding = TRUE
/*
REFER TO code/modules/mob/living/simple_animal/simple_animal_vr.dm for Var information!
*/
//NUETRAL MOBS
/mob/living/simple_animal/crab
devourable = TRUE
digestable = TRUE
feeding = TRUE
/mob/living/simple_animal/cow
devourable = TRUE
digestable = TRUE
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_HOLD
/mob/living/simple_animal/chick
devourable = TRUE
digestable = TRUE
/mob/living/simple_animal/chicken
devourable = TRUE
digestable = TRUE
/mob/living/simple_animal/mouse
devourable = TRUE
digestable = TRUE
/mob/living/simple_animal/kiwi
devourable = TRUE
digestable = TRUE
//STATION PETS
/mob/living/simple_animal/pet
devourable = TRUE
digestable = TRUE
feeding = TRUE
/mob/living/simple_animal/pet/fox
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_HOLD
/mob/living/simple_animal/pet/cat
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_HOLD
/mob/living/simple_animal/pet/dog
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_HOLD
/mob/living/simple_animal/sloth
devourable = TRUE
digestable = TRUE
/mob/living/simple_animal/parrot
devourable = TRUE
digestable = TRUE
//HOSTILE MOBS
/mob/living/simple_animal/hostile/retaliate/goat
devourable = TRUE
digestable = TRUE
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_stomach_flavor = "You find yourself squeezed into the hollow of the goat, the smell of oats and hay thick in the tight space, all of which grinds in on you. Harmless for now..."
vore_default_mode = DM_HOLD
/mob/living/simple_animal/hostile/lizard
devourable = TRUE
digestable = TRUE
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/alien
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/bear
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/poison/giant_spider
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/retaliate/poison/snake
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/gorilla
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/asteroid/goliath
feeding = TRUE //for pet Goliaths I guess or something.
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/carp
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
vore_default_mode = DM_DIGEST
+4 -2
View File
@@ -3,9 +3,11 @@
/mob/say_mod(input, message_mode)
var/customsayverb = findtext(input, "*")
if(customsayverb)
if(customsayverb && message_mode != MODE_WHISPER_CRIT)
message_mode = MODE_CUSTOM_SAY
return lowertext(copytext(input, 1, customsayverb))
. = ..()
else
return ..()
/atom/movable/proc/attach_spans(input, list/spans)
var/customsayverb = findtext(input, "*")