Fix lost changes (#6633)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Raeschen <Raeschen@users.noreply.github.com>
Co-authored-by: FluffMedic <109300046+FluffMedic@users.noreply.github.com>
Co-authored-by: Victor Zisthus <56660717+VictorZisthus@users.noreply.github.com>
Co-authored-by: Razgriz1032 <Razgriz1032@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: CHOMPStation2 <58959929+CHOMPStation2@users.noreply.github.com>
Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: CHOMPStation2 <chompsation2@gmail.com>
Co-authored-by: purplefoxy27 <38367315+purplefoxy27@users.noreply.github.com>
Co-authored-by: Casey <a.roaming.shadow@gmail.com>
Co-authored-by: Aroliacue <96730930+Aroliacue@users.noreply.github.com>
This commit is contained in:
Raeschen
2023-07-21 08:44:40 +02:00
committed by GitHub
co-authored by Raeschen FluffMedic Victor Zisthus Razgriz1032 dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> CHOMPStation2 Heroman3003 CHOMPStation2 purplefoxy27 Casey Aroliacue
parent 66ce5daf87
commit 071905fed5
50 changed files with 1073 additions and 147 deletions
+3 -1
View File
@@ -1,2 +1,4 @@
#define SMITE_PIE "Pie Splat"
#define SMITE_SPICE "Spicy Air"
#define SMITE_SPICE "Spicy Air"
#define NEWSFILE "data/news.sav"
+2
View File
@@ -114,8 +114,10 @@
#define ui_temp "EAST-1:28,CENTER-2:13"
#define ui_health "EAST-1:28,CENTER-1:15"
#define ui_internal "EAST-1:28,CENTER:17"
#define ui_under_health "EAST-1:28,CENTER-2:13"
//borgs
#define ui_borg_health "EAST-1:28,CENTER-2:13" //borgs have the health display where humans have the pressure damage indicator.
#define ui_borg_under_health "EAST-1:31,CENTER-3:13"
#define ui_alien_health "EAST-1:28,CENTER-2:13" //aliens have the health display where humans have the pressure damage indicator.
#define ui_ling_chemical_display "EAST-1:28,CENTER-3:15"
+58 -2
View File
@@ -160,6 +160,13 @@
using.alpha = HUD.ui_alpha
adding += using
using = new /obj/screen/useself()
using.icon = HUD.ui_style
using.screen_loc = ui_swaphand2
using.color = HUD.ui_color
using.alpha = HUD.ui_alpha
adding |= using
inv_box = new /obj/screen/inventory/hand()
inv_box.hud = HUD
inv_box.name = "r_hand"
@@ -261,16 +268,53 @@
autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi'
autowhisper_display.icon_state = "autowhisper"
autowhisper_display.name = "autowhisper"
autowhisper_display.screen_loc = "EAST-1:28,CENTER-2:13"
autowhisper_display.screen_loc = ui_under_health
hud_elements |= autowhisper_display
var/obj/screen/aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "aw-select"
aw.name = "autowhisper mode"
aw.screen_loc = "EAST-1:28,CENTER-2:13"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "pose"
aw.name = "set pose"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = HUD.ui_style
aw.icon_state = "use"
aw.name = "use held item on self"
aw.screen_loc = ui_swaphand2
using.color = HUD.ui_color
using.alpha = HUD.ui_alpha
adding |= using
//VOREStation Addition begin
shadekin_display = new /obj/screen/shadekin()
shadekin_display.screen_loc = ui_shadekin_display
@@ -378,3 +422,15 @@
/obj/screen/wizard/energy
name = "energy"
icon_state = "wiz_energy"
/obj/screen/useself
name = "use held item on self"
icon_state = "use"
var/next = 0
/obj/screen/useself/proc/can_use(var/mob/living/carbon/human/h, var/obj/item/i) //Basically trying to use the item this way skips the cooldown
if(world.time >= next) //And trying to check the cooldown doesn't work because when you click the UI it sets a cooldown
next = h.get_attack_speed(i) //So instead we'll just put a cooldown on the use button and apply the item's cooldown to the player
h.setClickCooldown(next) //Otherwise you can click the button and yourself faster than the normal cooldown. SO WE SET BOTH!!!!
next += world.time
i.attack(h, h)
+29 -2
View File
@@ -94,16 +94,43 @@ var/obj/screen/robot_inventory
autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi'
autowhisper_display.icon_state = "autowhisper"
autowhisper_display.name = "autowhisper"
autowhisper_display.screen_loc = "EAST-1:31,CENTER-3:13"
autowhisper_display.screen_loc = ui_borg_under_health
other |= autowhisper_display
var/obj/screen/aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "aw-select"
aw.name = "autowhisper mode"
aw.screen_loc = "EAST-1:31,CENTER-3:13"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "pose"
aw.name = "set pose"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_borg_under_health
other |= aw
//Installed Module
hands = new /obj/screen()
+23
View File
@@ -462,6 +462,29 @@
if(isliving(usr))
var/mob/living/u = usr
u.autowhisper_mode()
if("check known languages")
usr.check_languages()
if("set pose")
if(ishuman(usr))
var/mob/living/carbon/human/u = usr
u.pose()
else if (issilicon(usr))
var/mob/living/silicon/u = usr
u.pose()
if("move upwards")
usr.up()
if("move downwards")
usr.down()
if("use held item on self")
var/obj/screen/useself/s = src
if(ishuman(usr))
var/mob/living/carbon/human/u = usr
var/obj/item/i = u.get_active_hand()
if(i)
s.can_use(u,i)
else
to_chat(usr, "<span class='notice'>You're not holding anything to use. You need to have something in your active hand to use it.</span>")
if("module")
if(isrobot(usr))
@@ -259,9 +259,10 @@
/obj/item/weapon/cell/standin/New(newloc, var/mob/living/carbon/human/H)
..()
hume = H
charge = H.nutrition
maxcharge = initial(H.nutrition)
if(istype(H, /mob/living/carbon/human))//ChompEDIT - fix a runtime
hume = H
charge = H.nutrition
maxcharge = initial(H.nutrition)
QDEL_IN(src, 20 SECONDS)
+52 -34
View File
@@ -55,9 +55,56 @@
if(8)
pixel_x = -32
/obj/structure/micro_tunnel/proc/find_destinations()
var/list/destinations = list()
var/turf/myturf = get_turf(src.loc)
var/datum/planet/planet
for(var/datum/planet/P in SSplanets.planets)
if(myturf.z in P.expected_z_levels)
planet = P
else
for(var/obj/structure/micro_tunnel/t in world)
if(t == src)
continue
if(magic || t.magic)
destinations |= t
continue
if(t.z == z)
destinations |= t
continue
var/turf/targetturf = get_turf(t.loc)
if(planet)
if(targetturf.z in planet.expected_z_levels)
destinations |= t
continue
else
var/above = GetAbove(myturf)
if(above && t.z == z + 1)
destinations |= t
continue
var/below = GetBelow(myturf)
if(below && t.z == z - 1)
destinations |= t
return destinations
/obj/structure/micro_tunnel/attack_hand(mob/living/user)
if(!isliving(user))
tunnel_interact(user)
return ..()
/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb)
tunnel_interact(user)
return ..()
/obj/structure/micro_tunnel/attack_robot(mob/living/user)
var/turf/hole = get_turf(src) //Borgs can click stuff from far away, let's make sure they're next to the hole
var/turf/borg = get_turf(user)
if(hole.AdjacentQuick(borg))
tunnel_interact(user)
return ..()
/obj/structure/micro_tunnel/proc/tunnel_interact(mob/living/user)
if(!isliving(user))
return
if(user.loc == src)
var/list/our_options = list("Exit", "Move")
@@ -83,35 +130,7 @@
to_chat(user, "<span class = 'warning'>You can't do that unless you're in \the [src].</span>")
return
var/list/destinations = list()
var/turf/myturf = get_turf(src.loc)
var/datum/planet/planet
for(var/datum/planet/P in SSplanets.planets)
if(myturf.z in P.expected_z_levels)
planet = P
else
for(var/obj/structure/micro_tunnel/t in world)
if(t == src)
continue
if(magic || t.magic)
destinations |= t
continue
if(t.z == z)
destinations |= t
continue
var/turf/targetturf = get_turf(t.loc)
if(planet)
if(targetturf.z in planet.expected_z_levels)
destinations |= t
continue
else
var/above = GetAbove(myturf)
if(above && t.z == z + 1)
destinations |= t
continue
var/below = GetBelow(myturf)
if(below && t.z == z - 1)
destinations |= t
var/list/destinations = find_destinations()
if(!destinations.len)
to_chat(user, "<span class = 'warning'>There are no other tunnels connected to this one!</span>")
@@ -212,10 +231,6 @@
return FALSE
/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb)
attack_hand(user)
return ..()
/obj/structure/micro_tunnel/MouseDrop_T(mob/living/M, mob/living/user)
. = ..()
if(M != user)
@@ -301,6 +316,9 @@
to_chat(usr, "<span class = 'warning'>You can't do that unless you're in \the [src].</span>")
return
var/list/destinations = list()
if(istype(src,/obj/structure/micro_tunnel)) //If we're in a tunnel let's also get the tunnel's destinations
var/obj/structure/micro_tunnel/t = src
destinations = t.find_destinations()
var/turf/myturf = get_turf(src.loc)
for(var/obj/o in range(1,myturf))
if(!istype(o,/obj))
@@ -7,27 +7,30 @@
closet_appearance = /decl/closet_appearance/bio
starts_with = list(
/obj/item/clothing/suit/bio_suit/general,
/obj/item/clothing/head/bio_hood/general)
/obj/item/clothing/suit/bio_suit/general = 2, // CHOMP Block Edit Start
/obj/item/clothing/head/bio_hood/general = 2,
/obj/item/weapon/tank/oxygen = 2,
/obj/item/clothing/mask/gas = 2) // CHOMP Block Edit End
/obj/structure/closet/l3closet/virology
closet_appearance = /decl/closet_appearance/bio/virology
starts_with = list(
/obj/item/clothing/suit/bio_suit/virology,
/obj/item/clothing/head/bio_hood/virology,
/obj/item/clothing/mask/gas,
/obj/item/weapon/tank/oxygen)
/obj/item/clothing/suit/bio_suit/virology = 2, // CHOMP Block Edit Start
/obj/item/clothing/head/bio_hood/virology = 2,
/obj/item/clothing/mask/gas = 2,
/obj/item/weapon/tank/oxygen = 2) // CHOMP Block Edit End
/obj/structure/closet/l3closet/security
closet_appearance = /decl/closet_appearance/bio/security
starts_with = list(
/obj/item/clothing/suit/bio_suit/security,
/obj/item/clothing/head/bio_hood/security)
///obj/item/weapon/gun/energy/taser/xeno/sec) //VOREStation Removal
/obj/item/clothing/suit/bio_suit/security = 2, // CHOMP Block Edit Start
/obj/item/clothing/head/bio_hood/security = 2,
/obj/item/clothing/mask/gas = 2,
/obj/item/weapon/tank/oxygen = 2) // CHOMP Block Edit End
/obj/structure/closet/l3closet/janitor
closet_appearance = /decl/closet_appearance/bio/janitor
@@ -43,14 +46,19 @@
closet_appearance = /decl/closet_appearance/bio/science
starts_with = list(
/obj/item/clothing/suit/bio_suit/scientist,
/obj/item/clothing/head/bio_hood/scientist)
/obj/item/clothing/suit/bio_suit/scientist = 2, // CHOMP Block Edit Start
/obj/item/clothing/head/bio_hood/scientist = 2,
/obj/item/clothing/mask/gas = 2,
/obj/item/weapon/tank/oxygen = 2) // CHOMP Block Edit End
/obj/structure/closet/l3closet/scientist/double
starts_with = list(
/obj/item/clothing/suit/bio_suit/scientist = 2,
/obj/item/clothing/suit/bio_suit/scientist = 2, // CHOMP Block Edit Start
/obj/item/clothing/head/bio_hood/scientist = 2,
/obj/item/weapon/storage/bag/xeno = 2) // VOREEdit, adding the xenobag to xenobio.
/obj/item/weapon/storage/bag/xeno = 2,
/obj/item/clothing/mask/gas = 2,
/obj/item/weapon/tank/oxygen = 2,
/obj/item/weapon/storage/bag/xeno = 2) // CHOMP Block Edit End
/obj/structure/closet/l3closet/medical
@@ -59,4 +67,5 @@
starts_with = list(
/obj/item/clothing/suit/bio_suit/general = 3,
/obj/item/clothing/head/bio_hood/general = 3,
/obj/item/clothing/mask/gas = 3)
/obj/item/clothing/mask/gas = 3, // CHOMP Block Edit Start
/obj/item/weapon/tank/oxygen = 3) // CHOMP Block Edit End
@@ -40,7 +40,8 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/security/hos,
/obj/item/clothing/shoes/boots/winter/security,
//CHOMP Add ^
/obj/item/clothing/mask/gas/half)
/obj/item/clothing/mask/gas/half, // CHOMPADD
/obj/item/clothing/mask/gas/sechailer/swat/hos) // CHOMPADD
/obj/structure/closet/secure_closet/hos2
name = "head of security's gear"
@@ -61,6 +62,8 @@
/obj/item/weapon/melee/baton/loaded,
// /obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos,
//YW Removal,
/obj/item/weapon/gun/projectile/caseless/prototype/loaded, // CHOMPADD
/obj/item/ammo_magazine/m5mmcaseless, // CHOMPADD
/obj/item/weapon/gun/energy/x01,
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/melee/telebaton,
@@ -68,6 +71,7 @@
// /obj/item/clothing/suit/storage/hooded/wintercoat/security, //CHOMP Remove
// /obj/item/clothing/shoes/boots/winter/security, //CHOMP Remove
/obj/item/device/ticket_printer, //CHOMP Add
/obj/item/weapon/gun/energy/taser, // CHOMPADD
/obj/item/device/flashlight/maglight)
//Custom NT Security Lockers, Only found at central command
+9 -1
View File
@@ -1,5 +1,4 @@
#define RECOMMENDED_VERSION 513
// CHOMPedit Start - Tracy
/proc/prof_init()
var/lib
@@ -31,6 +30,15 @@
//ChompADD Start - Better Changelogs
var/latest_changelog = file("html/changelogs_ch/archive/" + time2text(world.timeofday, "YYYY-MM") + ".yml")
changelog_hash = fexists(latest_changelog) ? md5(latest_changelog) : 0 //for telling if the changelog has changed recently
//Newsfile
var/savefile/F = new(NEWSFILE)
if(F)
var/title
F["title"] >> title
F["title"] >> title //This is done twice on purpose. For some reason BYOND misses the first read, if performed before the world starts
var/body
F["body"] >> body
servernews_hash = md5("[title]" + "[body]")
//ChompADD End
if(byond_version < RECOMMENDED_VERSION)
+3 -2
View File
@@ -41,6 +41,7 @@ var/const/starsys_name = "Virgo-Erigone"
//CHOMPStation Removal End
var/const/game_version = "CHOMPStation" //CHOMPStation Edit TFF 24/12/19 - Chompers
var/changelog_hash = ""
var/servernews_hash = "" //ChompADD - news hash gen
var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 544) //YW EDIT
var/round_progressing = 1
@@ -141,10 +142,10 @@ var/global/list/alphabet_uppercase = list("A","B","C","D","E","F","G","H","I","J
// Used by robots and robot preferences for regular modules.
var/list/robot_module_types = list(
"Standard", "Engineering", "Surgeon", "Crisis",
"Standard", "Engineering",/* "Surgeon",*/ "Crisis", //CHOMPedit: Combining Surgeon and Crisis.
"Miner", "Janitor", "Service", "Clerical", "Security",
"Research", "Medihound", "K9", "Janihound", "Sci-borg", "Pupdozer",
"Service-Hound", "BoozeHound", "KMine", "TraumaHound"
"Service-Hound", "BoozeHound", "KMine"//, "TraumaHound" // CHOMPedit: Combining Medihound and Traumahound.
)
// List of modules added during code red
var/list/emergency_module_types = list(
+18 -8
View File
@@ -1,14 +1,12 @@
#define NEWSFILE "data/news.sav" //where the memos are saved
//#define NEWSFILE "data/news.sav" //where the memos are saved //ChompEDIT - moved to __defines/admin_ch
/client/
//var/last_news_hash = null // Stores a hash of the last news window it saw, which gets compared to the current one to see if it is different.
// Returns true if news was updated since last seen.
/client/proc/check_for_new_server_news()
var/savefile/F = get_server_news()
if(F)
if(md5(F["body"]) != prefs.lastnews)
return TRUE
if(servernews_hash != prefs.lastnews) //ChompEDIT
return TRUE
return FALSE
/client/proc/modify_server_news()
@@ -20,8 +18,15 @@
var/savefile/F = new(NEWSFILE)
if(F)
var/title = F["title"]
var/body = html2paper_markup(F["body"])
//ChompEDIT start - handle reads correctly
var/title
F["title"] >> title //This is done twice on purpose. For some reason BYOND misses the first read, if performed before the world starts
F["title"] >> title
var/body
F["body"] >> body
body = html2paper_markup(body)
//ChompEDIT end
var/new_title = sanitize(tgui_input_text(src,"Write a good title for the news update. Note: HTML is NOT supported.","Write News", title), extra = 0)
if(!new_title)
return
@@ -34,16 +39,21 @@
if(findtext(new_body,"<script",1,0) ) // Is this needed with santize()?
return
servernews_hash = md5("[new_title]" + "[new_body]") //ChompADD - update the servernews hash global
F["title"] << new_title
F["body"] << new_body
F["author"] << key
F["timestamp"] << time2text(world.realtime, "DDD, MMM DD YYYY")
message_admins("[key] modified the news to read:<br>[new_title]<br>[new_body]")
/proc/get_server_news()
/client/proc/get_server_news() //ChompEDIT - child of /client/
var/savefile/F = new(NEWSFILE)
if(F)
if(servernews_hash != prefs.lastnews) //ChompADD
prefs.lastnews = servernews_hash //ChompADD
SScharacter_setup.queue_preferences_save(prefs) //ChompADD
return F
// This is used when submitting the news input, so the safe markup can get past sanitize.
/proc/paper_markup2html(var/text)
text = replacetext(text, "\n", "<br>")
@@ -1127,6 +1127,13 @@
ckeywhitelist = list("suicidalpickles")
character_name = list("Silent Stripes")
/datum/gear/fluff/parrizjacket
path = /obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket
display_name = "pink crop bomber"
slot = slot_wear_suit
ckeywhitelist = list("satinisle")
character_name = list("Parriz Tavakdavi")
// T CKEYS
/datum/gear/fluff/ascian_medal
path = /obj/item/clothing/accessory/medal/silver/unity/tabiranth
@@ -545,6 +545,14 @@
)
gear_tweaks += new/datum/gear_tweak/path(flannel)
/datum/gear/suit/flannelrecolour
display_name = "flannel jacket, recolourable"
path = /obj/item/clothing/suit/storage/flannel/recolour
/datum/gear/suit/flannelrecolour/New()
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/denim_jacket
display_name = "denim jacket and vest selection"
description = "Select from a small range of denim jackets and vests."
@@ -966,6 +966,11 @@
icon_state = "flannel_brown"
item_state_slots = list(slot_r_hand_str = "johnny", slot_l_hand_str = "johnny")
/obj/item/clothing/suit/storage/flannel/recolour
desc = "A comfy, flannel shirt. Unleash your inner hipster."
icon_state = "flannel_recolour"
//Green Uniform
/obj/item/clothing/suit/storage/toggle/greengov
@@ -339,6 +339,33 @@
aw.screen_loc = "EAST-1:28,CENTER-2:13"
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "pose"
aw.name = "set pose"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
if(client)
client.screen = list()
@@ -196,10 +196,12 @@
/obj/item/weapon/reagent_containers/borghypo/hound
name = "MediHound hypospray"
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves, designed for heavy-duty medical equipment."
charge_cost = 10
reagent_ids = list("inaprovaline", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "paracetamol")
// charge_cost = 10 // CHOMPedit: Water requirement removal.
reagent_ids = list("inaprovaline", "tricordrazine", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "tramadol", "adranol") // CHOMPedit: More chems for Medihound
var/datum/matter_synth/water = null
/* CHOMPedit start: Water requirement removal. *
/obj/item/weapon/reagent_containers/borghypo/hound/process() //Recharges in smaller steps and uses the water reserves as well.
if(isrobot(loc))
var/mob/living/silicon/robot/R = loc
@@ -211,6 +213,8 @@
reagent_volumes[T] = min(reagent_volumes[T] + 1, volume)
return 1
* CHOMPedit end: Water requirement removal. */
/obj/item/weapon/reagent_containers/borghypo/hound/lost
name = "Hound hypospray"
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves."
@@ -5,7 +5,7 @@ var/global/list/robot_modules = list(
"Research" = /obj/item/weapon/robot_module/robot/research/general,
"Miner" = /obj/item/weapon/robot_module/robot/miner/general,
"Crisis" = /obj/item/weapon/robot_module/robot/medical/crisis,
"Surgeon" = /obj/item/weapon/robot_module/robot/medical/surgeon,
// "Surgeon" = /obj/item/weapon/robot_module/robot/medical/surgeon, // CHOMPedit: Surgeon module removal.
"Security" = /obj/item/weapon/robot_module/robot/security/general,
"Combat" = /obj/item/weapon/robot_module/robot/security/combat,
"Engineering" = /obj/item/weapon/robot_module/robot/engineering/general,
@@ -224,6 +224,8 @@ var/global/list/robot_modules = list(
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) //Give the surgeon ability to watch Crew monitor
can_be_pushed = 0
/* CHOMPedit start: Removal of Surgeon module. *
/obj/item/weapon/robot_module/robot/medical/surgeon
name = "surgeon robot module"
sprites = list(
@@ -309,6 +311,8 @@ var/global/list/robot_modules = list(
..()
* CHOMPedit end: Removal of Surgeon module. */
/obj/item/weapon/robot_module/robot/medical/crisis
name = "crisis robot module"
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) //Give the medical Crisis ability to watch Crew monitor
@@ -343,22 +347,41 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/reagent_containers/borghypo/crisis(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src)
src.modules += new /obj/item/device/sleevemate(src) // CHOMPedit: Lets them scan people.
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
src.modules += new /obj/item/weapon/gripper/medical(src)
src.modules += new /obj/item/weapon/shockpaddles/robot(src)
src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src) //VOREStation Add - This is kinda important for rescuing people without making it worse for everyone
// CHOMPedit start: Combining Surgeon and Crisis.
src.modules += new /obj/item/weapon/autopsy_scanner(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/hemostat/cyborg(src)
src.modules += new /obj/item/weapon/surgical/retractor/cyborg(src)
src.modules += new /obj/item/weapon/surgical/cautery/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonegel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/FixOVein/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonesetter/cyborg(src)
src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bioregen/cyborg(src)
// CHOMPedit end: Combining Surgeon and Crisis.
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.modules += new /obj/item/device/sleevemate(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000)
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(30000) // CHOMPedit: Increased capacity.
synths += medicine
var/obj/item/stack/medical/advanced/clotting/C = new (src) // CHOMPedit: Clotting kit from medhound.
var/obj/item/stack/medical/advanced/ointment/O = new /obj/item/stack/medical/advanced/ointment(src)
var/obj/item/stack/medical/advanced/bruise_pack/B = new /obj/item/stack/medical/advanced/bruise_pack(src)
var/obj/item/stack/medical/splint/S = new /obj/item/stack/medical/splint(src)
// CHOMPedit start: Clotting kit from medhound.
C.uses_charge = 1
C.charge_costs = list(5000)
C.synths = list(medicine)
// CHOMPedit end: Clotting kit from medhound.
O.uses_charge = 1
O.charge_costs = list(1000)
O.synths = list(medicine)
@@ -546,7 +569,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src)
src.modules += new /obj/item/weapon/gripper/security(src)
src.modules += new /obj/item/device/ticket_printer(src) //VOREStation Add
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src) //CHOMPedit: Phasegun for regular sec cyborg.
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src) // CHOMPedit: Phasegun for regular sec cyborg.
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
/obj/item/weapon/robot_module/robot/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
@@ -51,7 +51,7 @@
robot_modules["BoozeHound"] = /obj/item/weapon/robot_module/robot/clerical/butler/booze
robot_modules["KMine"] = /obj/item/weapon/robot_module/robot/miner/kmine
robot_modules["Stray"] = /obj/item/weapon/robot_module/robot/stray
robot_modules["TraumaHound"] = /obj/item/weapon/robot_module/robot/medical/traumahound
// robot_modules["TraumaHound"] = /obj/item/weapon/robot_module/robot/medical/traumahound // CHOMPedit: Combining Medihound and Traumahound.
return 1
//Just add a new proc with the robot_module type if you wish to run some other vore code
@@ -211,10 +211,11 @@
"Cat" = "vixsec", //CHOMPEdit
"Drake" = "drakesec",
"Raptor V-4" = "secraptor",
"MEKA" = "mekasec", //CHOMPEdit Start - Tallborgs
"MEKA" = "mekasec",
//"MEKA v2" = "newmekasec", //ChompREMOVE - we put the better sprite on the base
"NIKO" = "mmekasec",
"NIKA" = "fmekasec",
"K4T" = "k4tsec" //CHOMPEdit End - Tallborgs
"K4T" = "k4tsec"
)
/obj/item/weapon/robot_module/robot/security/knine/New(var/mob/living/silicon/robot/R)
@@ -227,7 +228,7 @@
src.modules += new /obj/item/weapon/dogborg/pounce(src) //Pounce
src.modules += new /obj/item/device/ticket_printer(src)
src.modules += new /obj/item/weapon/gripper/security(src) //CHOMPADD why doesnt the sec hound have the sec gripper?
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src) //CHOMPedit: Phasegun for security hound.
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src) // CHOMPedit: Phasegun for security hound.
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src) //Emag. Not a big problem.
var/datum/matter_synth/water = new /datum/matter_synth(500) //Starts full and has a max of 500
@@ -285,6 +286,7 @@
/obj/item/weapon/robot_module/robot/medical/medihound
name = "MediHound module"
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) //CHOMPedit: Give the Medihound ability to watch the crew monitor.
sprites = list(
"Medical Hound" = "medihound",
"Dark Medical Hound (Static)" = "medihounddark",
@@ -294,18 +296,26 @@
"Cat" = "vixmed", //CHOMPEdit
"Drake" = "drakemed",
"Raptor V-4" = "medraptor",
"MEKA" = "mekamed", //CHOMPEdit Start - Tallborgs
"NIKO" = "mmekamed",
"MEKA" = "mekamed",
//"MEKA v2" = "newmekamed", //ChompREMOVE - we put the better sprite on the base
"NIKA" = "fmekamed",
"NIKO" = "mmekamed",
"K4T" = "k4tmed",
"K4Talt" = "k4tmed_alt1" //CHOMPEdit End - Tallborgs
"K4Talt" = "k4tmed_alt1",
// CHOMPedit start: Trauma sprites for regular medihound borgs.
"Traumahound" = "traumavale",
"Traumadrake" = "draketrauma",
"Traumaborgi" = "borgi-trauma",
"Traumaraptor V-4" = "traumaraptor"
// CHOMPedit end: Trauma sprites for regular medihound borgs.
)
/obj/item/weapon/robot_module/robot/medical/medihound/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src) //In case a patient is being attacked by carp.
src.modules += new /obj/item/device/dogborg/boop_module(src) //Boop the crew.
src.modules += new /obj/item/device/healthanalyzer(src) // See who's hurt specificially.
src.modules += new /obj/item/borg/sight/hud/med(src) //See who's hurt generally.
src.modules += new /obj/item/roller_holder(src) // CHOMPedit: Allows medihounds to deploy roller beds in case prefs don't align.
// src.modules += new /obj/item/borg/sight/hud/med(src) // CHOMPedit: Already has an integrated medical scanner.
src.modules += new /obj/item/weapon/reagent_containers/syringe(src) //In case the chemist is nice!
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)//For holding the chemicals when the chemist is nice, made it the large variant in 2022
src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people.
@@ -313,10 +323,24 @@
src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src) //This is kinda important for rescuing people without making it worse for everyone
src.modules += new /obj/item/weapon/gripper/medical(src) //Let them do literally anything in medbay other than patch external damage and lick people
src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src) //dropper is nice to have for so much actually
// CHOMPedit start: Combining Medihound and Traumahound.
src.modules += new /obj/item/weapon/reagent_containers/borghypo/hound(src)
src.modules += new /obj/item/weapon/autopsy_scanner(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/hemostat/cyborg(src)
src.modules += new /obj/item/weapon/surgical/retractor/cyborg(src)
src.modules += new /obj/item/weapon/surgical/cautery/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonegel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/FixOVein/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonesetter/cyborg(src)
src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bioregen/cyborg(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
// CHOMPedit end: Combining Medihound and Traumahound.
src.emag = new /obj/item/weapon/dogborg/pounce(src) //Pounce
src.modules += new /obj/item/weapon/gripper/medical(src)//Now you can set up cyro or make peri. //CHOMPEdit
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000) //CHOMPedit
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(30000) //CHOMPedit: QOL, More capacity before requiring a restock.
synths += medicine
var/obj/item/stack/medical/advanced/clotting/C = new (src)
@@ -330,17 +354,21 @@
src.modules += C
src.modules += S
var/datum/matter_synth/water = new /datum/matter_synth(500)
var/datum/matter_synth/water = new /datum/matter_synth(1000) // CHOMPedit: Water to 1000.
water.name = "Water reserves"
water.recharge_rate = 10 //CHOMPedit water shouldn't be a giant pain to get, rechargers should provide it.
water.max_energy = 1000 //CHOMPedit increased water storage from 500 to 1000
water.recharge_rate = 20 // CHOMPedit: Water charge rate doubled alongside max capacity.
water.max_energy = 1000 // CHOMPedit: Water to 1000
R.water_res = water
synths += water
/* CHOMPedit start: Hypo no longer uses water. *
var/obj/item/weapon/reagent_containers/borghypo/hound/H = new /obj/item/weapon/reagent_containers/borghypo/hound(src)
H.water = water
src.modules += H
* CHOMPedit end: Hypo no longer uses water. */
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
src.modules += T
@@ -385,6 +413,8 @@
R.verbs |= /mob/living/silicon/robot/proc/rest_style
..()
/* CHOMPedit start: Commenting out Traumahound, no longer used. *
/obj/item/weapon/robot_module/robot/medical/traumahound
name = "traumahound robot module"
sprites = list(
@@ -469,6 +499,8 @@
R.verbs |= /mob/living/silicon/robot/proc/rest_style
..()
* CHOMPedit end: Commenting out Traumahound, no longer used. */
/obj/item/weapon/robot_module/robot/security/ert
name = "Emergency Responce module"
sprites = list(
@@ -531,11 +563,12 @@
"Cat" = "vixjani", //CHOMPEdit
"Drake" = "drakejanit",
"Raptor V-4" = "janiraptor",
"MEKA" = "mekajani", //CHOMPEdit Start - Tallborgs
"MEKA" = "mekajani",
//"MEKA v2" = "newmekajani", //ChompREMOVE - we put the better sprite on the base
"NIKO" = "mmekajani",
"NIKA" = "fmekajani",
"K4T" = "k4tjani",
"K4Talt" = "k4tjani_alt1" //CHOMPEdit End - Tallborgs
"K4Talt" = "k4tjani_alt1"
)
can_be_pushed = 0
@@ -628,10 +661,11 @@
"Cat" = "vixsci", //CHOMPEdit
"Drake" = "drakesci",
"Raptor V-4" = "sciraptor",
"MEKA" = "mekastandard", //CHOMPEdit Start - Tallborgs
"MEKA" = "mekasci",
//"MEKA v2" = "newmekasci", //ChompREMOVE - we put the better sprite on the base
"NIKO" = "mmekasci",
"NIKA" = "fmekasci",
"K4T" = "k4tsci" //CHOMPEdit end - Tallborgs
"K4T" = "k4tsci"
)
can_be_pushed = 0
@@ -723,11 +757,12 @@
"Cat" = "vixengi", //CHOMPEdit
"Drake" = "drakeeng",
"Raptor V-4" = "engiraptor",
"MEKA" = "mekaengi", //CHOMPEdit Start - Tallborgs
"MEKA" = "mekaengi",
//"MEKA v2" = "newmekaengi", //ChompREMOVE - we put the better sprite on the base
"NIKO" = "mmekaeng",
"NIKA" = "fmekaeng",
"K4T" = "k4tengi",
"K4Talt" = "k4tengi_alt1" //CHOMPEdit End - Tallborgs
"K4Talt" = "k4tengi_alt1"
)
can_be_pushed = 0
@@ -888,17 +923,17 @@
"Drake" = "drakemine",
"Raptor V-4" = "serviraptor",
"Raptor V-4000" = "fancyraptor",
"MEKA" = "mekaserve", //CHOMPEdit Start - Tallborgs
"MEKAalt" = "mekaserve_alt",
"MEKA" = "mekaserve",
//"MEKA v2" = "newmekaserve", //ChompREMOVE - we put the better sprite on the base
"NIKO" = "mmekaserv",
"NIKA" = "fmekaserv",
"K4T" = "k4tserve",
"K4Talt" = "k4tserve_alt" //CHOMPEdit End - Tallborgs
"K4Talt" = "k4tserve_alt1"
)
can_be_pushed = 0
// In a nutshell, basicly service/butler robot but in dog form. - Port from CitadelRP
// In a nutshell, basically service/butler robot but in dog form. - Port from CitadelRP
/obj/item/weapon/robot_module/robot/clerical/butler/brodog/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/gripper/service(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
@@ -977,11 +1012,12 @@
"Cat Cargo" = "vixcargo", //CHOMPEdit
"Drake" = "drakemine",
"Raptor V-4" = "mineraptor",
"MEKA" = "mekamine", //CHOMPEdit Start - Tallborgs
"MEKA" = "mekamine",
//"MEKA v2" = "newmekamine", //ChompREMOVE - we put the better sprite on the base
"NIKO" = "mmekamine",
"NIKA" = "fmekamine",
"K4T" = "k4tmine",
"K4Talt" = "k4tmine_alt1" //CHOMPEdit End - Tallborgs
"K4Talt" = "k4tmine_alt1"
)
can_be_pushed = 0
@@ -180,7 +180,7 @@
add_overlay("wreck-overlay")
/mob/living/silicon/robot/proc/vr_sprite_check()
vis_height = 32 // CHOMPedit: sanitizing tile centering for larger sprites.
vis_height = 32
if(custom_sprite == TRUE)
return
if(wideborg == TRUE)
@@ -198,6 +198,11 @@
icon = 'modular_chomp/icons/mob/tallborg/tallrobots-wide.dmi' //CHOMPEDIT: TallBorg, I dunno how to code but i'll love it if someone could change this mess into how TG does it
vis_height = 64 // CHOMPedit: sanitizing tile centering for larger sprites.
update_transform() // CHOMPedit: sanitizing tile centering for larger sprites.
/* //CHOMP Remove START - re use our own sprites. The icontype below is not used.
else if(icontype == "MEKA v2") //tallborgs. if anyone can code them not to be a dogborg subtype please do so, but this'll do for now.
icon = 'icons/mob/tallborg/tallborg.dmi'
vis_height = 64
update_transform()*/ //CHOMP Remove END
else
icon = wideborg_dept
return
+10 -6
View File
@@ -14,12 +14,16 @@
switch(a_intent)
if(I_HELP)
var/mob/living/L = A
if(istype(L) && (!has_hands || !L.attempt_to_scoop(src)))
if(src.zone_sel.selecting == BP_GROIN) //CHOMPEdit
if(src.vore_bellyrub(A))
return
custom_emote(1,"[pick(friendly)] \the [A]!")
if(isliving(A))
var/mob/living/L = A
if(istype(L) && (!has_hands || !L.attempt_to_scoop(src)))
if(src.zone_sel.selecting == BP_GROIN) //CHOMPEdit
if(src.vore_bellyrub(A)) //ChompEDIT
return //ChompEDIT
custom_emote(1,"[pick(friendly)] \the [A]!")
if(istype(A,/obj/structure/micro_tunnel)) //Allows simplemobs to click on mouse holes, mice should be allowed to go in mouse holes, and other mobs
var/obj/structure/micro_tunnel/t = A //should be allowed to drag the mice out of the mouse holes!
t.tunnel_interact(src)
if(I_HURT)
if(can_special_attack(A) && special_attack_target(A))
@@ -172,6 +172,26 @@
aw.screen_loc = "EAST-1:28,CENTER-2:13"
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
pain = new /obj/screen( null )
@@ -295,3 +295,13 @@ var/global/list/grub_machine_overlays = list()
to_chat(user, "<span class='warning'>You disturb a grub nesting in \the [O]!</span>")
return
return ..()
/obj/item/weapon/melee/baton/afterattack(obj/O, mob/user, proximity)
if(proximity)
if(istype(O, /obj/machinery))
var/mob/living/simple_mob/animal/solargrub_larva/grub = locate() in O
if(grub)
grub.eject_from_machine(O)
to_chat(user, "<span class='warning'>You disturb a grub nesting in \the [O]!</span>")
return
return ..()
+25 -15
View File
@@ -38,16 +38,19 @@
if(!ticker || ticker.current_state <= GAME_STATE_PREGAME)
if(ready)
output += "<p>\[ <span class='linkOn'><b>Ready</b></span> | <a href='byond://?src=\ref[src];ready=0'>Not Ready</a> \]</p>"
output += "<p>\[ <span class='linkOn'><b>Ready</b></span> | <a href='byond://?src=\ref[src];ready=0'>Not Ready</a> \]</p>" //ChompEDIT - fixed height
else
output += "<p>\[ <a href='byond://?src=\ref[src];ready=1'>Ready</a> | <span class='linkOn'><b>Not Ready</b></span> \]</p>"
output += "<p>\[ <a href='byond://?src=\ref[src];ready=1'>Ready</a> | <span class='linkOn'><b>Not Ready</b></span> \]</p>" //ChompEDIT - fixed height
output += "<p><s>Join Game!</s></p>" //ChompEDIT - fixed height
else
output += "<a href='byond://?src=\ref[src];manifest=1'>View the Crew Manifest</A><br><br>"
output += "<p><a href='byond://?src=\ref[src];manifest=1'>View the Crew Manifest</A></p>" //ChompEDIT - fixed height
output += "<p><a href='byond://?src=\ref[src];late_join=1'>Join Game!</A></p>"
output += "<p><a href='byond://?src=\ref[src];observe=1'>Observe</A></p>"
output += "<hr>" //ChompADD - a line divider between functional and info buttons
if(!IsGuestKey(src.key))
establish_db_connection()
@@ -63,27 +66,27 @@
break
qdel(query) //CHOMPEdit TGSQL
if(newpoll)
output += "<p><b><a href='byond://?src=\ref[src];showpoll=1'>Show Player Polls</A> (NEW!)</b></p>"
output += "<p><b><a href='byond://?src=\ref[src];showpoll=1'>Show Player Polls</A><br>(NEW!)</b></p>" //ChompEDIT - fixed height
else
output += "<p><a href='byond://?src=\ref[src];showpoll=1'>Show Player Polls</A></p>"
output += "<p><a href='byond://?src=\ref[src];showpoll=1'>Show Player Polls</A><br><i>No Changes</i></p>" //ChompEDIT - fixed height
if(client.check_for_new_server_news())
output += "<p><b><a href='byond://?src=\ref[src];shownews=1'>Show Server News</A><br>(NEW!)</b></p>" //ChompEDIT 'Game updates' --> 'Server news'
else
output += "<p><a href='byond://?src=\ref[src];shownews=1'>Show Server News</A></p>" //ChompEDIT 'Game updates' --> 'Server news'
output += "<p><a href='byond://?src=\ref[src];shownews=1'>Show Server News</A><br><i>No Changes</i></p>" //ChompEDIT 'Game updates' --> 'Server news'
if(SSsqlite.can_submit_feedback(client))
output += "<p>[href(src, list("give_feedback" = 1), "Give Feedback")]</p>"
if(GLOB.news_data.station_newspaper)
if(client.prefs.lastlorenews == GLOB.news_data.newsindex)
output += "<p><a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News</A></p>"
output += "<p><a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News<br><i>No Changes</i></A></p>" //ChompEDIT - fixed height
else
output += "<p><b><a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News (NEW!)</A></b></p>"
output += "<p><b><a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News<br>(NEW!)</A></b></p>" //ChompEDIT - fixed height
//ChompEDIT start: Show Changelog
if(client.prefs.lastchangelog == changelog_hash)
output += "<p><a href='byond://?src=\ref[src];open_changelog=1'>Show Changelog</A></p>"
output += "<p><a href='byond://?src=\ref[src];open_changelog=1'>Show Changelog</A><br><i>No Changes</i></p>"
else
output += "<p><b><a href='byond://?src=\ref[src];open_changelog=1'>Show Changelog</A><br>(NEW!)</b></p>"
//ChompEDIT End
@@ -98,7 +101,7 @@
client.prefs.lastlorenews = GLOB.news_data.newsindex
SScharacter_setup.queue_preferences_save(client.prefs)
panel = new(src, "Welcome","Welcome", 210, 320, src) // VOREStation Edit //ChompEDIT, height 300 -> 320
panel = new(src, "Welcome","Welcome", 210, 360, src) // VOREStation Edit //ChompEDIT, height 300 -> 360
panel.set_window_options("can_close=0")
panel.set_content(output)
panel.open()
@@ -368,15 +371,22 @@
/mob/new_player/proc/handle_server_news()
if(!client)
return
var/savefile/F = get_server_news()
var/savefile/F = client.get_server_news()
if(F)
client.prefs.lastnews = md5(F["body"])
SScharacter_setup.queue_preferences_save(client.prefs)
//client.prefs.lastnews = md5(F["body"]) //Chomp REMOVE
//SScharacter_setup.queue_preferences_save(client.prefs) //Chomp REMOVE
//ChompEDIT start - handle reads correctly
var/title
F["title"] >> title
F["title"] >> title //This is done twice on purpose. For some reason BYOND misses the first read, if performed before the world starts
var/body
F["body"] >> body
//ChompEDIT end
var/dat = "<html><body><center>"
dat += "<h1>[F["title"]]</h1>"
dat += "<h1>[title]</h1>"
dat += "<br>"
dat += "[F["body"]]"
dat += "[body]"
dat += "<br>"
dat += "<font size='2'><i>Last written by [F["author"]], on [F["timestamp"]].</i></font>"
dat += "</center></body></html>"
@@ -80,6 +80,12 @@
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "hair_twincurl"
/datum/sprite_accessory/hair/twindrillslong
name = "Twin Drills Long"
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "hair_twincurllong"
/datum/sprite_accessory/hair/crescent_moon
name = "Crescent-Moon"
icon = 'icons/mob/human_face_vr.dmi'
@@ -399,7 +405,7 @@
icon = 'modular_chomp/icons/mob/human_face_ch.dmi' //chompstation edit
icon_add = 'modular_chomp/icons/mob/human_face_ch_add.dmi' //chompstation edit
icon_state = "cxeno_drone"
species_allowed = list(SPECIES_XENOHYBRID)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
// figure this one out for better coloring
/datum/sprite_accessory/hair/xeno_head_sentinel_color
@@ -407,7 +413,7 @@
icon = 'modular_chomp/icons/mob/human_face_ch.dmi'//chompstation edit
icon_add = 'modular_chomp/icons/mob/human_face_ch_add.dmi'//chompstation edit
icon_state = "cxeno_sentinel"
species_allowed = list(SPECIES_XENOHYBRID)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
/datum/sprite_accessory/hair/xeno_head_queen_color
@@ -415,7 +421,7 @@
icon = 'modular_chomp/icons/mob/human_face_ch.dmi'//chompstation edit
icon_add = 'modular_chomp/icons/mob/human_face_ch_add.dmi'//chompstation edit
icon_state = "cxeno_queen"
species_allowed = list(SPECIES_XENOHYBRID)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
/datum/sprite_accessory/hair/xeno_head_hunter_color
@@ -423,7 +429,7 @@
icon = 'modular_chomp/icons/mob/human_face_ch.dmi'//chompstation edit
icon_add = 'modular_chomp/icons/mob/human_face_ch_add.dmi'//chompstation edit
icon_state = "cxeno_hunter"
species_allowed = list(SPECIES_XENOHYBRID)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
/datum/sprite_accessory/hair/xeno_head_praetorian_color
@@ -431,7 +437,7 @@
icon = 'modular_chomp/icons/mob/human_face_ch.dmi'//chompstation edit
icon_add = 'modular_chomp/icons/mob/human_face_ch_add.dmi'//chompstation edit
icon_state = "cxeno_praetorian"
species_allowed = list(SPECIES_XENOHYBRID)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
// Shadekin stuffs
@@ -440,7 +446,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "shadekin_short"
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
/datum/sprite_accessory/hair/shadekin_hair_poofy
@@ -448,7 +454,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "shadekin_poofy"
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
/datum/sprite_accessory/hair/shadekin_hair_long
@@ -456,17 +462,17 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "shadekin_long"
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW, SPECIES_ALTEVIAN) //ChompEDIT: allow for all
gender = NEUTER
/datum/sprite_accessory/hair/shadekin_hair_rivyr
/* /datum/sprite_accessory/hair/shadekin_hair_rivyr //Chomp REMOVE START
name = "Rivyr Hair"
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "shadekin_rivyr"
ckeys_allowed = list("verysoft")
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
gender = NEUTER
gender = NEUTER */ //Chomp REMOVE END
/datum/sprite_accessory/hair/slicker
name = "Slicker"
@@ -52,11 +52,11 @@
icon_state = "dragonfly"
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/wing/citheroniamoth
/* /datum/sprite_accessory/wing/citheroniamoth //Chomp REMOVE START
name = "citheronia wings"
desc = ""
icon_state = "citheronia_wings"
ckeys_allowed = list("kira72")
ckeys_allowed = list("kira72") */ //Chomp REMOVE END
/datum/sprite_accessory/wing/feathered
name = "feathered wings, colorable"
@@ -326,4 +326,4 @@
icon = 'icons/mob/vore/wings_vr.dmi'
icon_state = "feathered_kara"
ckeys_allowed = list("satinisle")
*/
*/
@@ -22,7 +22,7 @@
reagent_ids = list("tricordrazine", "inaprovaline", "oxycodone", "dexalin" ,"spaceacillin")
/obj/item/weapon/reagent_containers/borghypo/crisis
reagent_ids = list("tricordrazine", "inaprovaline", "anti_toxin", "tramadol", "dexalin" ,"spaceacillin")
reagent_ids = list("inaprovaline", "tricordrazine", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "tramadol", "adranol") // CHOMPedit: Unifying chems with dogborg equivalent.
/obj/item/weapon/reagent_containers/borghypo/lost
reagent_ids = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
@@ -2659,12 +2659,6 @@ Departamental Swimsuits, for general use
item_state = "giantbow_mob"
..()
//Halored: Mercury
/obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury
name = "Mercury's Mate Ring"
desc = "A band of void opal, given to Mercury by Lumen"
End CHOMP Removal*/
/obj/item/clothing/head/fluff/giantbow //Public version
@@ -2677,3 +2671,16 @@ End CHOMP Removal*/
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "giantbow_mob"
//Halored: Mercury
/* /obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury //Chomp REMOVE Start
name = "Mercury's Mate Ring"
desc = "A band of void opal, given to Mercury by Lumen"
//satinisle: Parriz Tavakdavi
/obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket
name = "pink crop bomber"
desc = "A pink crop bomber jacket that is just barely able to zip up at the front. It has a small Virgo Orbital Research Establishment patch on each shoulder."
icon_state = "parriz_jacket" */ //Chomp REMOVE END
+37
View File
@@ -7,6 +7,7 @@
- qol: Upped Cyborg job limit from 4 to 8.
FluffMedic:
- bugfix: fixes the coloring of a medkit.
- rscadd: 'Balance: Swaps an item to the proper version'
FoxglovePurpur:
- bugfix: Fix a typo in 'posessed'
Jesseman1:
@@ -18,9 +19,45 @@
there are new changes since you last viewed
- bugfix: fix bug with 'changelog_hash' var not being set properly
- bugfix: fix changelog tgui links to be correct
- bugfix: remove species-locked customisaiton options for xeno heads(hair) and shadekin
hair
- bugfix: removes some missed fluff items
Scarlet-Oduko:
- rscadd: adds a new cult faction
UniquaSa:
- imageadd: Tallborgs finally receive some bellies, Thank you Kcin!
Upstream:
- bugfix: PDA records missing linebreaks & fixes communicator weather app gibberish
2023-07-19:
Raeschen:
- bugfix: start menu consistency/redesign
- bugfix: Show server news (NEW) now resets on read
- bugfix: fix a runtime in inducer.vr
- bugfix: fixed weird savefile behavior when done before roundstart
Upstream:
- rscadd: adds ui buttons for language panel, pose, move up, move down, and using
objects on self
VictorZisthus:
- rscadd: HoS now has a fun new gun at round-start!
- bugfix: fixed a few missing things from several closets.
2023-07-20:
Aroliacue:
- rscadd: 'balance: Stun Batons can now disrupt solargrubs infesting machinery,
similar to a multitool.'
- balance: Combined the medical borg and surgeon borg modules into one.
- balance: Doubled medical borg's medicine capacity from 15,000 to 30,000.
- balance: medical borgs now have access to more basic chems from their hyposprays.
- balance: medihound hypospray no longer requires water to function.
- qol: Gave the medihound access to the remote crew monitor, which it was lacking.
FluffMedic:
- rscadd: 'adds: a new event'
- rscadd: 'adds: 3 new mobs similiar to solar moth, tied with the event'
- rscadd: 'adds: Event_container_CH, disabled the VR version'
Raeschen:
- rscadd: xeno & a few shadekin hairstyles unlocked for all
Upstream:
- rscadd: Adds 'twin drills long' hair
- bugfix: Renames custom subtle back to subtle (Custom)
- rscadd: cooldown on 'use item on self' UI button (not the hotkey)
- bugfix: mouse-hole interactions
- rscadd: adds a recolorable flannel jacket to loadout
Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 KiB

After

Width:  |  Height:  |  Size: 693 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,21 @@
Current version: v0
### Credits:
TheOOZ (https://github.com/theOOZ), AKA ghostsheep (https://twitter.com/_ghostsheep)
MekaNIKA skinline
- Peacekeeper
- Service
- Janitor
- Medical
- Cargotechnician
- Syndicate
- Ninja
### Terms of use:
Tallborg and its MekaNIKA skinline falls under the same licensing as the TG-13 repository.
If you are porting this content, it is the personal request of the artist that:
- This readme, and the credit icon_state within the .dmi's remain present besides the skinline art.
- This skinline is ported in full, even if your codebase has no use for a certain job-module.
This content was made for free.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

@@ -101,7 +101,7 @@
switch(pred.a_intent)
if(I_HELP)
if(prob(40)) //Reducing spam exclusively on I_HELP. Still more frequent than old pitiful prob(1)
if(prob(10)) //Reducing spam exclusively on I_HELP. Still more frequent than old pitiful prob(1)
if(pred.m_intent == "run")
message_prey = pick(
"You feel weightless for a brief moment as \the [name] move upwards.",
@@ -0,0 +1,97 @@
#define LOC_RIOT 0
#define LOC_ATMOS 1
#define LOC_DISPOSAL 2
#define LOC_TECH 3
#define LOC_VAULT 4
#define DANGER_CRAB 0
#define DANGER_ICE 1
#define DANGER_RAY 2
//infestation event of a diffrent variety
//meant for engineering and science to exploit
/datum/event/dangerinfestation
announceWhen = 10
endWhen = 11
var/location
var/locstring
var/danger
var/dangerstring
/datum/event/dangerinfestation/start()
location = rand(0,4)
var/list/turf/simulated/floor/turfs = list()
var/spawn_area_type
switch(location)
if(LOC_RIOT)
spawn_area_type = /area/security/riot_control
locstring = "riot control"
if(LOC_ATMOS)
spawn_area_type = /area/engineering/atmos
locstring = "atmospherics"
if(LOC_DISPOSAL)
spawn_area_type = /area/maintenance/disposal
locstring = "the disposal"
if(LOC_TECH)
spawn_area_type = /area/storage/tech
locstring = "technical storage"
if(LOC_VAULT)
spawn_area_type = /area/security/nuke_storage
locstring = "the vault"
for(var/areapath in typesof(spawn_area_type))
var/area/A = locate(areapath)
for(var/turf/simulated/floor/F in A.contents)
//VOREStation Edit - Fixes event
var/blocked = FALSE
for(var/atom/movable/AM in F)
if(AM.density)
blocked = TRUE
if(!blocked)
turfs += F
var/list/spawn_types = list()
var/min_number
var/max_number
danger = rand(0,2)
switch(danger)
if(DANGER_CRAB)
spawn_types = list(/mob/living/simple_mob/vore/radcrab)
min_number = 1
max_number = 4
dangerstring = "crystaline crabs"
if(DANGER_ICE)
spawn_types = list(/mob/living/simple_mob/vore/livingice)
min_number = 1
max_number = 4
dangerstring = "strange entities"
if(DANGER_RAY)
spawn_types = list(/mob/living/simple_mob/vore/solarray)
min_number = 1
max_number = 4
dangerstring = "solar rays"
spawn(0)
var/num = rand(min_number,max_number)
while(turfs.len > 0 && num > 0)
var/turf/simulated/floor/T = pick(turfs)
turfs.Remove(T)
num--
var/spawn_type = pick(spawn_types)
new spawn_type(T)
/datum/event/dangerinfestation/announce()
command_announcement.Announce("Bioscans indicate that [dangerstring] have been entered [locstring]. Contain them before they start causing damage.", "Alien infestation")
#undef LOC_RIOT
#undef LOC_ATMOS
#undef LOC_DISPOSAL
#undef LOC_TECH
#undef LOC_VAULT
#undef DANGER_CRAB
#undef DANGER_ICE
#undef DANGER_RAY
@@ -0,0 +1,157 @@
#define ASSIGNMENT_ANY "Any"
#define ASSIGNMENT_AI "AI"
#define ASSIGNMENT_CYBORG "Cyborg"
#define ASSIGNMENT_ENGINEER "Engineer"
#define ASSIGNMENT_GARDENER "Botanist"
#define ASSIGNMENT_JANITOR "Janitor"
#define ASSIGNMENT_MEDICAL "Medical"
#define ASSIGNMENT_SCIENTIST "Scientist"
#define ASSIGNMENT_SECURITY "Security"
#define ASSIGNMENT_HOS "Head of Security"
#define ASSIGNMENT_WARDEN "Warden"
#define ASSIGNMENT_CARGO "Cargo"
//
// VOREStation overrides to the default event manager configuration. //YW EDIT: WHY THE FUCK IS THIS NOT MENTIONED IN THE REGULAR FILE, AAAGGGHAA!
//
// This file lets us configure which events we want in the rotation without conflicts with upstream.
// It works because the actual event containers don't define New(), allowing us to use New() to replace
// the lists of available events. If they ever do define New() this will need to be changed.
//
// Specifically the change is to move events we don't want down into the disabled_events list
//
// Adds a list of pre-disabled events to the available events list.
// This keeps them in the rotation, but disabled, so they can be enabled with a click if desired that round.
/datum/event_container/proc/add_disabled_events(var/list/disabled_events)
for(var/datum/event_meta/EM in disabled_events)
EM.enabled = 0
available_events += EM
/datum/event_container/mundane/New()
available_events = list(
// Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 400),
// Bluescreens APCs, but they still work
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence,20, list(ASSIGNMENT_JANITOR = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Electrified Door", /datum/event/electrified_door, -5, list(ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_AI = 10)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lone Spacefish", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 15), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15),
//new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
// Spawns mice, lizards, or dud spiderlings
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_JANITOR = 100), 1),
// Rot only weakens walls, not destroy them
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50), 1),
)
add_disabled_events(list(
//DOes not work new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50),
//no new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1), //YW EDIT
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 40), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 1, 25, 50),
// new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Spiders", /datum/event/spider_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1), //YW EDIT //CHOMPStation Edit: Moved to disabled and commented. This just spawns spiders on carp spawns.
))
/datum/event_container/moderate/New()
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600),
// Leaks gas into an unoccupied room.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, -30, list(ASSIGNMENT_MEDICAL = 30), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
// Just disables comms for a short while.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 100, ASSIGNMENT_SECURITY = 50), 1),
// Just blows out a few lights
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 10, list(ASSIGNMENT_SCIENTIST = 40), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150), 1),
//Escaped slime event itself needs to be rejiggered because of the mob refactor.
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Escaped Slimes", /datum/event/escaped_slimes, -40, list(ASSIGNMENT_SCIENTIST = 30, ASSIGNMENT_SECURITY = 20)),
// This one is just too fun.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60), 1),
// Temporary power failure, but mitigatead by subgrids
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(ASSIGNMENT_SCIENTIST = 10, ASSIGNMENT_ENGINEER = 25), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, -20, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_ENGINEER = 40), 1),
// Pure RP fun, no mechanical effects.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 80, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5), min_jobs = list(ASSIGNMENT_AI = 1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 75, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_SCIENTIST = 10), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, -50, list(ASSIGNMENT_ENGINEER = 45), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0),
//New CHOMPStation event. Mice and lizards grow into rats and lizardmen respectively.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Mutants", /datum/event/mutants, 20, list(ASSIGNMENT_ANY = 15, ASSIGNMENT_SECURITY = 25), 1),
// Opens doors in brig. So just RP fun
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, -10, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_ENGINEER = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1), //YW EDIT, Readded
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, -30, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_HOS = 35, ASSIGNMENT_WARDEN = 35), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
// Radiation, but only in space.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 20, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 20), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spacefish Migration", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, -20, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_HOS = 20, ASSIGNMENT_WARDEN = 20), 0, min_jobs = list(ASSIGNMENT_SECURITY = 1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100), 1, min_jobs = list(ASSIGNMENT_SCIENTIST = 1), min_jobs = list(ASSIGNMENT_SCIENTIST = 1, ASSIGNMENT_SECURITY =1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, -20, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_SECURITY = 30, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
//Commenting this event out, the pod is not mapped in.
//Spacedust doesn't work, commenting this out.
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
//Check if wormhole code is good and then move to enabled.
// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 20, list(ASSIGNMENT_ANY = 5)),
// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Lost Spiders", /datum/event/spider_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1), //YW EDIT //CHOMPStation Edit: Moved to disabled. This is a YW feature that spawns spiders on carp spawns.
))
/datum/event_container/major/New()
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 900),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 5, list(ASSIGNMENT_ENGINEER = 35), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, -100, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ENGINEER = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, -110, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Horde Infestation", /datum/event/horde_infestation, -60, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ANY = 3), 0),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, -90, list(ASSIGNMENT_ENGINEER = 50, ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spacefish Swarm", /datum/event/spacefish_migration, 10, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 20, list(ASSIGNMENT_ENGINEER = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, -50, list(ASSIGNMENT_MEDICAL = 25), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Excotic Infestation", /datum/event/dangerinfestation, -60, list(ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENCE = 5, ASSIGNMENT_ANY = 1)),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station,0, list(ASSIGNMENT_ANY = 5), 0),
//Spiders moved into horde infestation
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation", /datum/event/spider_infestation, -60, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ANY = 3), 0),
//Metroids moved into horde infestation
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Metroid Infestation", /datum/event/metroid_infestation, -100, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_SCIENCE = 20, ASSIGNMENT_HOS = 15, ASSIGNMENT_WARDEN = 15, ASSIGNMENT_ANY = 2), 1 , min_jobs = list(ASSIGNMENT_SECURITY = 2, ASSIGNMENT_SCIENCE = 1)),
//Needs Xenobio containment breach fixed
//new /datum/event_meta(EVENT_LEVEL_MAJOR, "Xenobiology Breach", /datum/event/prison_break/xenobiology, -10, list(ASSIGNMENT_SCIENCE = 30, ASSIGNMENT_ENGINEER = 20), 1),
//new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
))
#undef ASSIGNMENT_ANY
#undef ASSIGNMENT_AI
#undef ASSIGNMENT_CYBORG
#undef ASSIGNMENT_ENGINEER
#undef ASSIGNMENT_GARDENER
#undef ASSIGNMENT_JANITOR
#undef ASSIGNMENT_MEDICAL
#undef ASSIGNMENT_SCIENTIST
#undef ASSIGNMENT_SECURITY
#undef ASSIGNMENT_HOS
#undef ASSIGNMENT_WARDEN
#undef ASSIGNMENT_CARGO
@@ -0,0 +1,279 @@
/mob/living/simple_mob/vore/solarray //solar moth lite, dies to water
name = "solar ray"
desc = "A sting ray of fire, drifting around"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "solarray"
icon_living = "solarray"
icon_dead = "solarray-dead"
health = 30
maxHealth = 30
movement_cooldown = 3 // Lower is faster.
aquatic_movement = 0 // If set, the mob will move through fluids with no hinderance.
minbodytemp = 0 // Minimum "okay" temperature in kelvin
maxbodytemp = 10000 // Maximum of above
heat_damage_per_tick = 3 // Amount of damage applied if animal's body temperature is higher than maxbodytemp
cold_damage_per_tick = 2 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum'
max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum'
min_tox = 0 // Phoron min
max_tox = 0 // Phoron max
min_co2 = 0 // CO2 min
max_co2 = 0 // CO2 max
min_n2 = 0 // N2 min
max_n2 = 0 // N2 max
unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above
melee_damage_lower = 12 // Lower bound of randomized melee damage
melee_damage_upper = 12 // Upper bound of randomized melee damage
attacktext = list("incinerate") // "You are [attacktext] by the mob!"
melee_miss_chance = 0 // percent chance to miss a melee attack.
attack_armor_type = "energy" // What armor does this check?
attack_armor_pen = 30 // How much armor pen this attack has.
attack_sharp = FALSE // Is the attack sharp?
attack_edge = FALSE // Does the attack have an edge?
melee_attack_delay = 1.5 // If set, the mob will do a windup animation and can miss if the target moves out of the way.
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
hovering = TRUE
//Damage resistances
grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure.
resistance = 0 // Damage reduction for all types
armor = list( // Values for normal getarmor() checks
"melee" = 90,
"bullet" = 95,
"laser" = 100,
"energy" = 100,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
armor_soak = list( // Values for getsoak() checks.
"melee" = 7,
"bullet" = 7,
"laser" = 7,
"energy" = 7,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
heat_resist = 1.0
cold_resist = 1.0
shock_resist = 0.0
water_resist = 0.0
taser_kill = 0
var/mycolour = COLOR_RED //Variable Lighting colours
var/original_temp = null //Value to remember temp
var/set_temperature = T0C + 5000 //Sets the target point of 10k degrees celsius
var/heating_power = 50000
/mob/living/simple_mob/vore/solarray/Life()
. = ..()
if(icon_state != icon_dead) //I mean on death() Life() should disable but i guess doesnt hurt to make sure -shark
var/turf/moth_loc = get_turf(src)
if(isturf(moth_loc) && moth_loc.air)
var/datum/gas_mixture/env = moth_loc.return_air() //Gets all the information on the local air.
var/transfer_moles = 0.25 * env.total_moles //The bigger the room, the harder it is to heat the room.
var/datum/gas_mixture/removed = env.remove(transfer_moles)
var/heat_transfer = removed.get_thermal_energy_change(set_temperature)
if(heat_transfer > 0 && env.temperature < T0C + 200) //This should start heating the room at a moderate pace up to 200 degrees celsius.
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater
removed.add_thermal_energy(heat_transfer)
else if(heat_transfer > 0 && env.temperature < set_temperature) //Set temperature is 10,000 degrees celsius. So this thing will start cooking crazy hot between the temperatures of 200C and 10,000C.
heating_power = original_temp*100 //Changed to work variable -shark //FLAME ON! This will make the moth heat up the room at an incredible rate.
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater. Except it's hot, so yeah.
removed.add_thermal_energy(heat_transfer)
else
return
env.merge(removed)
//Since I'm changing hyper mode to be variable we need to store old power
original_temp = heating_power
/mob/living/simple_mob/vore/livingice //frost solar moth or blue slime on crack. Dies to lasers or slighly toasty rooms
name = "living icicle"
desc = "A strange creature, a floating shard of ice"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "hermitcrab"
icon_living = "hermitcrab"
icon_dead = "hermitcrab-dead"
health = 30
maxHealth = 30
movement_cooldown = 3 //VOREStation Edit - 1 is slower than normal human speed // Lower is faster.
aquatic_movement = 0 // If set, the mob will move through fluids with no hinderance.
minbodytemp = 0 // Minimum "okay" temperature in kelvin
maxbodytemp = 300 // Maximum of above
heat_damage_per_tick = 15 // Amount of damage applied if animal's body temperature is higher than maxbodytemp
cold_damage_per_tick = 15 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum'
max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum'
min_tox = 0 // Phoron min
max_tox = 6 // Phoron max
min_co2 = 0 // CO2 min
max_co2 = 0 // CO2 max
min_n2 = 0 // N2 min
max_n2 = 0 // N2 max
unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above
melee_damage_lower = 30 // Lower bound of randomized melee damage
melee_damage_upper = 30 // Upper bound of randomized melee damage
attacktext = list("attacked") // "You are [attacktext] by the mob!"
melee_miss_chance = 0 // percent chance to miss a melee attack.
attack_armor_type = "melee" // What armor does this check?
attack_armor_pen = 0 // How much armor pen this attack has.
attack_sharp = FALSE // Is the attack sharp?
attack_edge = FALSE // Does the attack have an edge?
melee_attack_delay = 3 // If set, the mob will do a windup animation and can miss if the target moves out of the way..
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
hovering = TRUE
//Damage resistances
grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure.
resistance = 0 // Damage reduction for all types
armor = list( // Values for normal getarmor() checks
"melee" = 100,
"bullet" = 100,
"laser" = 0,
"energy" = 0,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
armor_soak = list( // Values for getsoak() checks.
"melee" = 7,
"bullet" = 7,
"laser" = 0,
"energy" = 0,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
heat_resist = 0.0
cold_resist = 0.0
shock_resist = 0.0
water_resist = 1.0
/mob/living/simple_mob/vore/livingice/proc/cold_aura()
for(var/mob/living/L in view(2, src))
var/turf/T = get_turf(src)
var/datum/gas_mixture/env = T.return_air()
if(env)
env.add_thermal_energy(-5 * 1000)
/mob/living/simple_mob/vore/radcrab //bullets, melee, and cold all crack the poor thing's shell
name = "crystaline crab"
desc = "A largeish hermit crab glowing green, irradting the nearby area"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "hermitcrab"
icon_living = "hermitcrab"
icon_dead = "hermitcrab-dead"
health = 30
maxHealth = 30
movement_cooldown = 3 //VOREStation Edit - 1 is slower than normal human speed // Lower is faster.
aquatic_movement = 1 // If set, the mob will move through fluids with no hinderance.
minbodytemp = 260 // Minimum "okay" temperature in kelvin
maxbodytemp = 10000 // Maximum of above
heat_damage_per_tick = 15 // Amount of damage applied if animal's body temperature is higher than maxbodytemp
cold_damage_per_tick = 15 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum'
max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum'
min_tox = 0 // Phoron min
max_tox = 0 // Phoron max
min_co2 = 0 // CO2 min
max_co2 = 5 // CO2 max
min_n2 = 0 // N2 min
max_n2 = 0 // N2 max
unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above
melee_damage_lower = 2 // Lower bound of randomized melee damage
melee_damage_upper = 2 // Upper bound of randomized melee damage
attacktext = list("pinches") // "You are [attacktext] by the mob!"
melee_miss_chance = 0 // percent chance to miss a melee attack.
attack_armor_type = "melee" // What armor does this check?
attack_armor_pen = 100 // How much armor pen this attack has.
attack_sharp = TRUE // Is the attack sharp?
attack_edge = TRUE // Does the attack have an edge?
melee_attack_delay = 0 // If set, the mob will do a windup animation and can miss if the target moves out of the way.
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
hovering = TRUE
//Damage resistances
grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure.
resistance = 0 // Damage reduction for all types
armor = list( // Values for normal getarmor() checks
"melee" = -50,
"bullet" = 0,
"laser" = 100,
"energy" = 100,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
armor_soak = list( // Values for getsoak() checks.
"melee" = 0,
"bullet" = 0,
"laser" = 7,
"energy" = 7,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
heat_resist = 0.0
cold_resist = 0.0
shock_resist = 0.0
water_resist = 1.0
taser_kill = 0
var/rads = 75
/mob/living/simple_mob/vore/radcrab/handle_special()
if(stat != DEAD)
irradiate()
..()
/mob/living/simple_mob/vore/radcrab/proc/irradiate()
SSradiation.radiate(src, rads)
/mob/living/simple_mob/vore/solarray
vore_bump_chance = 80
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/livingice
vore_bump_chance = 0
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/radcrab
vore_bump_chance = 40
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -456,7 +456,7 @@
dir = 4;
health = 1e+006
},
/obj/item/weapon/material/twohanded/sledgehammer/mjollnir,
/obj/item/weapon/twohanded/fireaxe/fluff/mjollnir,
/turf/simulated/floor/wood,
/area/survivalpod/superpose/ExplorerHome)
"be" = (
+3 -3
View File
@@ -10247,9 +10247,9 @@ __metadata:
linkType: hard
"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3":
version: 1.2.3
resolution: "word-wrap@npm:1.2.3"
checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f
version: 1.2.4
resolution: "word-wrap@npm:1.2.4"
checksum: 8f1f2e0a397c0e074ca225ba9f67baa23f99293bc064e31355d426ae91b8b3f6b5f6c1fc9ae5e9141178bb362d563f55e62fd8d5c31f2a77e3ade56cb3e35bd1
languageName: node
linkType: hard
+3 -1
View File
@@ -2388,7 +2388,6 @@
#include "code\modules\events\electrified_door.dm"
#include "code\modules\events\event.dm"
#include "code\modules\events\event_container.dm"
#include "code\modules\events\event_container_vr.dm"
#include "code\modules\events\event_dynamic.dm"
#include "code\modules\events\event_manager.dm"
#include "code\modules\events\gnat_migration.dm"
@@ -4621,6 +4620,8 @@
#include "modular_chomp\code\modules\economy\vending_machines_vr.dm"
#include "modular_chomp\code\modules\emotes\definitions\audiable.dm"
#include "modular_chomp\code\modules\emotes\definitions\audible_pain.dm"
#include "modular_chomp\code\modules\event\dangerinfestation.dm"
#include "modular_chomp\code\modules\event\event_container_ch.dm"
#include "modular_chomp\code\modules\food\drinkgglass\metaglass.dm"
#include "modular_chomp\code\modules\food\food\drinks\bottle.dm"
#include "modular_chomp\code\modules\food\food\snacks\meat.dm"
@@ -4713,6 +4714,7 @@
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\ashy.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\bigdragon.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\desert_planet_mobs.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\event.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\greatwolf.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\swoopie.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\vore.dm"