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>
@@ -1,2 +1,4 @@
|
||||
#define SMITE_PIE "Pie Splat"
|
||||
#define SMITE_SPICE "Spicy Air"
|
||||
#define SMITE_SPICE "Spicy Air"
|
||||
|
||||
#define NEWSFILE "data/news.sav"
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ..()
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 238 KiB |
|
Before Width: | Height: | Size: 690 KiB After Width: | Height: | Size: 693 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 42 KiB |
|
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.
|
||||
|
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
|
||||
|
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" = (
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||