Merge remote-tracking branch 'origin/BaseBlep' into BranchBlep

This commit is contained in:
Fluff
2023-07-05 08:42:57 -04:00
226 changed files with 118346 additions and 52688 deletions

View File

@@ -58,7 +58,7 @@ var/global/list/vr_mob_tf_options = list(
"Construct Artificer" = /mob/living/simple_mob/construct/artificer,
"Tech golem" = /mob/living/simple_mob/mechanical/technomancer_golem,
"Metroid" = /mob/living/simple_mob/metroid/juvenile/baby,
"Otie" = /mob/living/simple_mob/otie/cotie/chubby,
"Otie" = /mob/living/simple_mob/vore/otie/cotie/chubby,
"Shadekin" = /mob/living/simple_mob/shadekin,
"Slime" = /mob/living/simple_mob/slime/xenobio/metal,
"Corrupt hound" = /mob/living/simple_mob/vore/aggressive/corrupthound,
@@ -73,7 +73,7 @@ var/global/list/vr_mob_tf_options = list(
//"Dragon" = /mob/living/simple_mob/vore/bigdragon/friendly, //Currently adds 12 bellies to the user when transformed into. Do not uncomment without fixing this.
"Riftwalker" = /mob/living/simple_mob/vore/demon/wendigo,
"Horse" = /mob/living/simple_mob/vore/horse/big,
"Morph" = /mob/living/simple_mob/vore/hostile/morph,
"Morph" = /mob/living/simple_mob/vore/morph,
"Leopardmander" = /mob/living/simple_mob/vore/leopardmander,
"Rabbit" = /mob/living/simple_mob/vore/rabbit,
"Red panda" = /mob/living/simple_mob/vore/redpanda,

View File

@@ -728,15 +728,15 @@ var/global/list/xenobio_gold_mobs_hostile = list(
/mob/living/simple_mob/vore/aggressive/dino,
/mob/living/simple_mob/vore/aggressive/dragon,
/mob/living/simple_mob/vore/aggressive/frog,
/mob/living/simple_mob/otie,
/mob/living/simple_mob/otie/red,
/mob/living/simple_mob/vore/otie,
/mob/living/simple_mob/vore/otie/red,
/mob/living/simple_mob/vore/aggressive/panther,
/mob/living/simple_mob/vore/aggressive/rat,
/mob/living/simple_mob/vore/aggressive/giant_snake,
/mob/living/simple_mob/vore/sect_drone,
/mob/living/simple_mob/vore/sect_queen,
/mob/living/simple_mob/vore/weretiger,
/mob/living/simple_mob/animal/wolf,
/mob/living/simple_mob/vore/wolf,
/mob/living/simple_mob/vore/xeno_defanged)
var/global/list/xenobio_gold_mobs_bosses = list(
@@ -783,7 +783,7 @@ var/global/list/xenobio_gold_mobs_safe = list(
/mob/living/simple_mob/vore/fennix,
/mob/living/simple_mob/vore/hippo,
/mob/living/simple_mob/vore/horse,
/mob/living/simple_mob/animal/space/jelly,
/mob/living/simple_mob/vore/jelly,
/mob/living/simple_mob/vore/oregrub,
/mob/living/simple_mob/vore/oregrub/lava,
/mob/living/simple_mob/vore/rabbit,
@@ -935,14 +935,14 @@ var/global/list/event_wildlife_roaming = list(
list(
list(/mob/living/simple_mob/vore/aggressive/frog = 1),
list(/mob/living/simple_mob/tomato = 1),
list(/mob/living/simple_mob/animal/wolf = 1),
list(/mob/living/simple_mob/vore/wolf = 1),
list(/mob/living/simple_mob/vore/aggressive/dino = 1),
list(/mob/living/simple_mob/animal/space/bats = 1)
),
list(
list(/mob/living/simple_mob/animal/space/bear = 1),
list(/mob/living/simple_mob/vore/aggressive/deathclaw = 1),
list(/mob/living/simple_mob/otie = 1),
list(/mob/living/simple_mob/vore/otie = 1),
list(/mob/living/simple_mob/vore/aggressive/panther = 1),
list(/mob/living/simple_mob/vore/aggressive/rat = 1),
list(/mob/living/simple_mob/vore/aggressive/giant_snake = 1),

View File

@@ -78,7 +78,7 @@ SUBSYSTEM_DEF(mapping)
var/list/deffo_load = using_map.lateload_z_levels
var/list/maybe_load = using_map.lateload_gateway
var/list/also_load = using_map.lateload_overmap
var/list/redgate_load = using_map.lateload_redgate
for(var/list/maplist in deffo_load)
if(!islist(maplist))
@@ -134,6 +134,27 @@ SUBSYSTEM_DEF(mapping)
else
MT.load_new_z(centered = FALSE)
if(LAZYLEN(redgate_load))
var/picklist = pick(redgate_load)
if(!picklist) //No lateload maps at all
return
if(!islist(picklist)) //So you can have a 'chain' of z-levels that make up one away mission
error("Randompick Z level [picklist] is not a list! Must be in a list!")
return
for(var/map in picklist)
if(islist(map))
// TRIPLE NEST. In this situation we pick one at random from the choices in the list.
//This allows a sort of a1,a2,a3,b1,b2,b3,c1,c2,c3 setup where it picks one 'a', one 'b', one 'c'
map = pick(map)
var/datum/map_template/MT = map_templates[map]
if(!istype(MT))
error("Randompick Z level \"[map]\" is not a valid map!")
else
MT.load_new_z(centered = FALSE)
/datum/controller/subsystem/mapping/proc/preloadShelterTemplates()
for(var/datum/map_template/shelter/shelter_type as anything in subtypesof(/datum/map_template/shelter))

View File

@@ -1,4 +1,4 @@
/area/awaymission
/area
name = "\improper Unknown Location"
icon_state = "away"
var/list/valid_spawn_turfs = list()
@@ -6,47 +6,80 @@
var/list/valid_flora = list()
var/mobcountmax = 0
var/floracountmax = 0
var/semirandom = FALSE
var/semirandom_groups = 0
var/semirandom_group_min = 0
var/semirandom_group_max = 10
var/mob_intent = "default" //"default" uses default settings, use "hostile", "retaliate", or "passive" respectively
/area/awaymission/proc/EvalValidSpawnTurfs()
/area/proc/EvalValidSpawnTurfs()
//Adds turfs to the valid)turfs list, used for spawning.
if(mobcountmax || floracountmax)
if(mobcountmax || floracountmax || semirandom)
for(var/turf/simulated/floor/F in src)
valid_spawn_turfs += F
for(var/turf/unsimulated/floor/F in src)
valid_spawn_turfs += F
/area/awaymission/LateInitialize()
/area/LateInitialize()
..()
EvalValidSpawnTurfs()
if(!valid_spawn_turfs.len && (mobcountmax || floracountmax))
to_world_log("Error! [src] does not have any turfs!")
log_and_message_admins("Error! [src] does not have any turfs!")
return TRUE
//Handles random mob placement for mobcountmax, as defined/randomized in initialize of each individual area.
if(mobcountmax)
if(mobcountmax || semirandom)
spawn_mob_on_turf()
//Handles random flora placement for floracountmax, as defined/randomized in initialize of each individual area.
if(floracountmax)
spawn_flora_on_turf()
to_world("Away mission spawning done.")
/area/awaymission/proc/spawn_mob_on_turf()
/area/proc/spawn_mob_on_turf()
if(!valid_mobs.len)
to_world_log("[src] does not have a set valid mobs list!")
return TRUE
var/mob/M
var/turf/Turf
for(var/mobscount = 0 to mobcountmax)
M = pick(valid_mobs)
if(semirandom)
for(var/groupscount = 0 to (semirandom_groups - 1))
var/ourgroup = pickweight(valid_mobs)
var/goodnum = rand(semirandom_group_min, semirandom_group_max)
for(var/mobscount = 0 to (goodnum - 1))
M = pickweight(ourgroup)
Turf = pick(valid_spawn_turfs)
valid_spawn_turfs -= Turf
new M(Turf)
var/mob/ourmob = new M(Turf)
adjust_mob(ourmob)
else
for(var/mobscount = 0 to mobcountmax)
M = pickweight(valid_mobs)
Turf = pick(valid_spawn_turfs)
valid_spawn_turfs -= Turf
var/mob/ourmob = new M(Turf)
adjust_mob(ourmob)
/area/awaymission/proc/spawn_flora_on_turf()
/area/proc/adjust_mob(var/mob/living/M)
if(!isliving(M))
log_admin("[src] spawned [M.type], which is not mob/living, FIXIT")
return
var/datum/ai_holder/AI = M.ai_holder
switch(mob_intent)
if("default")
return
if("hostile")
AI.hostile = TRUE
AI.retaliate = TRUE
if("retaliate")
AI.hostile = FALSE
AI.retaliate = TRUE
if("passive")
AI.hostile = FALSE
AI.retaliate = FALSE
/area/proc/spawn_flora_on_turf()
if(!valid_flora.len)
to_world_log("[src] does not have a set valid flora list!")
return TRUE

View File

@@ -124,6 +124,7 @@
icon_state = "blue"
requires_power = 0
limit_dark_respite = TRUE
limit_mob_size = FALSE
ambience = AMBIENCE_OTHERWORLDLY
flags = RAD_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT | BLUE_SHIELDED

View File

@@ -203,7 +203,7 @@
else if(src.density && (user.a_intent == I_HURT)) //If we can't pry it open and it's not a weapon.... Eh, let's attack it anyway.
var/obj/item/weapon/W = C
user.setClickCooldown(user.get_attack_speed(W))
if(W.damtype == BRUTE || W.damtype == BURN)
if(istype(W) && (W.damtype == BRUTE || W.damtype == BURN))
user.do_attack_animation(src)
if(W.force < min_force) //No actual non-weapon item shouls have a force greater than the min_force, but let's include this just in case.
user.visible_message("<span class='danger'>\The [user] hits \the [src] with \the [W] with no visible effect.</span>")

View File

@@ -3,7 +3,7 @@ var/bomb_set
/obj/machinery/nuclearbomb
name = "\improper Nuclear Fission Explosive"
desc = "Uh oh. RUN!!!!"
icon = 'icons/obj/stationobjs.dmi'
icon = 'modular_chomp/icons/obj/stationobjs.dmi' //chompedit, use the better one
icon_state = "nuclearbomb0"
density = TRUE
var/deployable = 0.0
@@ -47,6 +47,7 @@ var/bomb_set
if(timing)
bomb_set = 1 //So long as there is one nuke timing, it means one nuke is armed.
timeleft--
playsound(src, 'sound/items/timer.ogg',50) //chompedit... beep :)
if(timeleft <= 0)
explode()
for(var/mob/M in viewers(1, src))
@@ -275,6 +276,7 @@ var/bomb_set
icon_state = "nuclearbomb1"
timing = 0
bomb_set = 0
set_security_level("red") //chompedit
if(light_wire == temp_wire)
lighthack = !lighthack
@@ -322,10 +324,13 @@ var/bomb_set
icon_state = "nuclearbomb2"
if(!safety)
bomb_set = 1//There can still be issues with this reseting when there are multiple bombs. Not a big deal tho for Nuke/N
set_security_level("delta")//chompedit
else
bomb_set = 0
set_security_level("red")
else
bomb_set = 0
set_security_level("red") //chompedit
if(!lighthack)
icon_state = "nuclearbomb1"
if(href_list["safety"])
@@ -333,6 +338,7 @@ var/bomb_set
if(safety)
timing = 0
bomb_set = 0
set_security_level("red") //chompedit
if(href_list["anchor"])
if(removal_stage == 5)
@@ -370,7 +376,7 @@ var/bomb_set
safety = 1
if(!lighthack)
icon_state = "nuclearbomb3"
playsound(src,'sound/machines/Alarm.ogg',100,0,5)
world << sound('sound/machines/Alarm.ogg')//chompedit, nuke is big event, make it global
if(ticker && ticker.mode)
ticker.mode.explosion_in_progress = 1
sleep(100)

View File

@@ -110,7 +110,7 @@
// Also recharge their internal battery.
if(H.isSynthetic() && H.nutrition < 500) //VOREStation Edit
H.nutrition = min(H.nutrition+(10*(1-max(H.species.synthetic_food_coeff, 0.9))), 500) //VOREStation Edit
H.nutrition = min(H.nutrition+(10*(1-min(H.species.synthetic_food_coeff, 0.9))), 500) //VOREStation Edit
cell.use(7000/450*10)
// And clear up radiation

View File

@@ -185,12 +185,5 @@
name = "Weasel Head"
id = "weasel_head"
build_path = /obj/item/mecha_parts/micro/part/weasel_head
materials = list(MAT_STEEL = 7000, MAT_GLASS = 2500) */
/datum/design/item/mecha/medigun //Who the fuck thought it was a good idea to put this here?
name = "BL-3/P directed restoration system"
desc = "A portable medical system used to treat external injuries from afar."
id = "mech_medigun"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_BIO = 6)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 1750, MAT_DIAMOND = 1500, MAT_PHORON = 4000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun
materials = list(MAT_STEEL = 7000, MAT_GLASS = 2500)
*/

View File

@@ -56,8 +56,8 @@ var/global/list/semirandom_mob_spawner_decisions = list()
list(/mob/living/simple_mob/animal/passive/tindalos),
list(/mob/living/simple_mob/animal/passive/yithian),
list(
/mob/living/simple_mob/animal/wolf = 10,
/mob/living/simple_mob/animal/wolf/direwolf = 5,
/mob/living/simple_mob/vore/wolf = 10,
/mob/living/simple_mob/vore/wolf/direwolf = 5,
/mob/living/simple_mob/vore/greatwolf = 1,
/mob/living/simple_mob/vore/greatwolf/black = 1,
/mob/living/simple_mob/vore/greatwolf/grey = 1
@@ -75,10 +75,10 @@ var/global/list/semirandom_mob_spawner_decisions = list()
/mob/living/simple_mob/animal/space/bear/brown
),
list(
/mob/living/simple_mob/otie/feral,
/mob/living/simple_mob/otie/feral/chubby,
/mob/living/simple_mob/otie/red,
/mob/living/simple_mob/otie/red/chubby
/mob/living/simple_mob/vore/otie/feral,
/mob/living/simple_mob/vore/otie/feral/chubby,
/mob/living/simple_mob/vore/otie/red,
/mob/living/simple_mob/vore/otie/red/chubby
),
list(/mob/living/simple_mob/animal/sif/diyaab),
list(/mob/living/simple_mob/animal/sif/duck),
@@ -144,7 +144,7 @@ var/global/list/semirandom_mob_spawner_decisions = list()
/mob/living/simple_mob/animal/space/carp/large/huge = 5
),
list(/mob/living/simple_mob/animal/space/goose),
list(/mob/living/simple_mob/animal/space/jelly),
list(/mob/living/simple_mob/vore/jelly),
list(/mob/living/simple_mob/animal/space/tree),
list(
/mob/living/simple_mob/vore/aggressive/corrupthound = 10,
@@ -245,12 +245,12 @@ var/global/list/semirandom_mob_spawner_decisions = list()
list(/mob/living/simple_mob/mechanical/wahlem),
list(/mob/living/simple_mob/animal/passive/fox/syndicate),
list(/mob/living/simple_mob/animal/passive/fox),
list(/mob/living/simple_mob/animal/space/jelly),
list(/mob/living/simple_mob/vore/jelly),
list(
/mob/living/simple_mob/otie/feral,
/mob/living/simple_mob/otie/feral/chubby,
/mob/living/simple_mob/otie/red,
/mob/living/simple_mob/otie/red/chubby
/mob/living/simple_mob/vore/otie/feral,
/mob/living/simple_mob/vore/otie/feral/chubby,
/mob/living/simple_mob/vore/otie/red,
/mob/living/simple_mob/vore/otie/red/chubby
),
list(
/mob/living/simple_mob/shadekin/blue = 100,
@@ -377,8 +377,8 @@ var/global/list/semirandom_mob_spawner_decisions = list()
list(/mob/living/simple_mob/animal/passive/tindalos) = 10,
list(/mob/living/simple_mob/animal/passive/yithian) = 10,
list(
/mob/living/simple_mob/animal/wolf = 10,
/mob/living/simple_mob/animal/wolf/direwolf = 5,
/mob/living/simple_mob/vore/wolf = 10,
/mob/living/simple_mob/vore/wolf/direwolf = 5,
/mob/living/simple_mob/vore/greatwolf = 1,
/mob/living/simple_mob/vore/greatwolf/black = 1,
/mob/living/simple_mob/vore/greatwolf/grey = 1
@@ -396,10 +396,10 @@ var/global/list/semirandom_mob_spawner_decisions = list()
/mob/living/simple_mob/animal/space/bear/brown
) = 1,
list(
/mob/living/simple_mob/otie/feral = 50,
/mob/living/simple_mob/otie/feral/chubby = 10,
/mob/living/simple_mob/otie/red = 5,
/mob/living/simple_mob/otie/red/chubby = 1
/mob/living/simple_mob/vore/otie/feral = 50,
/mob/living/simple_mob/vore/otie/feral/chubby = 10,
/mob/living/simple_mob/vore/otie/red = 5,
/mob/living/simple_mob/vore/otie/red/chubby = 1
) = 5,
list(/mob/living/simple_mob/vore/aggressive/rat) = 15,
list(/mob/living/simple_mob/animal/sif/diyaab) = 5,
@@ -467,8 +467,8 @@ var/global/list/semirandom_mob_spawner_decisions = list()
/mob/living/simple_mob/shadekin/purple = 10
) = 1,
list(
/mob/living/simple_mob/animal/wolf = 10,
/mob/living/simple_mob/animal/wolf/direwolf = 5,
/mob/living/simple_mob/vore/wolf = 10,
/mob/living/simple_mob/vore/wolf/direwolf = 5,
/mob/living/simple_mob/vore/greatwolf = 1,
/mob/living/simple_mob/vore/greatwolf/black = 1,
/mob/living/simple_mob/vore/greatwolf/grey = 1
@@ -502,13 +502,13 @@ var/global/list/semirandom_mob_spawner_decisions = list()
/mob/living/simple_mob/animal/space/carp/large/huge = 5
) = 50,
list(/mob/living/simple_mob/animal/space/goose) = 50,
list(/mob/living/simple_mob/animal/space/jelly) = 40,
list(/mob/living/simple_mob/vore/jelly) = 40,
list(/mob/living/simple_mob/animal/space/tree) = 15,
list(
/mob/living/simple_mob/otie/feral = 50,
/mob/living/simple_mob/otie/feral/chubby = 10,
/mob/living/simple_mob/otie/red = 5,
/mob/living/simple_mob/otie/red/chubby = 1
/mob/living/simple_mob/vore/otie/feral = 50,
/mob/living/simple_mob/vore/otie/feral/chubby = 10,
/mob/living/simple_mob/vore/otie/red = 5,
/mob/living/simple_mob/vore/otie/red/chubby = 1
) = 40,
list(
/mob/living/simple_mob/vore/aggressive/corrupthound = 10,
@@ -719,17 +719,17 @@ var/global/list/semirandom_mob_spawner_decisions = list()
possible_mob_types = list(
list(
/mob/living/simple_mob/animal/wolf/direwolf = 5,
/mob/living/simple_mob/vore/wolf/direwolf = 5,
/mob/living/simple_mob/vore/greatwolf = 1,
/mob/living/simple_mob/vore/greatwolf/black = 1,
/mob/living/simple_mob/vore/greatwolf/grey = 1
) = 100,
list(/mob/living/simple_mob/animal/space/jelly) = 70,
list(/mob/living/simple_mob/vore/jelly) = 70,
list(
/mob/living/simple_mob/otie/feral,
/mob/living/simple_mob/otie/feral/chubby,
/mob/living/simple_mob/otie/red,
/mob/living/simple_mob/otie/red/chubby
/mob/living/simple_mob/vore/otie/feral,
/mob/living/simple_mob/vore/otie/feral/chubby,
/mob/living/simple_mob/vore/otie/red,
/mob/living/simple_mob/vore/otie/red/chubby
) = 50,
list(
/mob/living/simple_mob/shadekin/blue = 100,

View File

@@ -5,7 +5,7 @@
icon = 'icons/effects/effects.dmi'
anchored = TRUE
density = FALSE
var/health = 15
var/health = 10
//similar to weeds, but only barfed out by nurses manually
/obj/effect/spider/ex_act(severity)
@@ -312,7 +312,7 @@
name = "cocoon"
desc = "Something wrapped in silky spider web"
icon_state = "cocoon1"
health = 60
health = 15
/obj/effect/spider/cocoon/New()
icon_state = pick("cocoon1","cocoon2","cocoon3")

View File

@@ -29,7 +29,7 @@
//The stuff we want to be revivable normally
/mob/living/simple_mob/animal
ic_revivable = TRUE
/mob/living/simple_mob/otie
/mob/living/simple_mob/vore/otie
ic_revivable = TRUE
/mob/living/simple_mob/vore
ic_revivable = TRUE

View File

@@ -0,0 +1,99 @@
/obj/item/device/healthanalyzer/verb/toggle_guide()
name = "Toggle Guidance"
desc = "Toggles whether or not \the [src] will provide guidance and instruction in addition to scanning."
guide = !guide
to_chat(usr, "<span class='notice'>You toggle \the [src]'s guidance system.</span>")
/obj/item/device/healthanalyzer/guide
name = "Instructional health analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject. It shows extra information to medical personnel!"
guide = TRUE
icon_state = "health-g"
/obj/item/device/healthanalyzer/proc/guide(var/mob/living/carbon/human/M, mob/living/user)
var/obj/item/weapon/card/id/ourid = user?.GetIdCard()
if(!ourid)
return
if(access_change_ids in ourid.access)
playsound(src, 'sound/machines/defib_failed.ogg', 50, 0)
return
if(access_medical in ourid.access)
playsound(src, 'sound/effects/pop.ogg', 50, FALSE)
else
playsound(src, 'sound/machines/defib_failed.ogg', 50, 0)
return
if(!ishuman(M))
return
var/dat = ""
var/bleeding_external = FALSE
var/bleeding_internal = FALSE
var/infection = FALSE
var/organ = FALSE
var/bone = FALSE
var/bloodloss = FALSE
var/robotparts = FALSE
for(var/obj/item/organ/org in M.organs)
if(org.robotic >= ORGAN_ROBOT)
robotparts = TRUE
continue
if(istype(org,/obj/item/organ/external))
var/obj/item/organ/external/e = org
if(e.status & ORGAN_BLEEDING)
bleeding_external = TRUE
if(e.status & ORGAN_BROKEN && (!e.splinted))
bone = TRUE
if(istype(org,/obj/item/organ/internal))
if(org.status & ORGAN_BLEEDING)
bleeding_internal = TRUE
if(org.damage)
organ = TRUE
if(org.germ_level > INFECTION_LEVEL_ONE)
infection = TRUE
var/blood_volume = M.vessel.get_reagent_amount("blood")
if(blood_volume <= M.species.blood_volume*M.species.blood_level_safe)
bloodloss = TRUE
if(bleeding_external)
dat += "<b>Surface bleeding</b> - Bandage immediately or apply brute-damage fixing chemicals (i.e. Bicaridine) if no bandages available.<br>"
if(bleeding_internal && (advscan >= 1 && showadvscan == 1))
dat += "<b>Internal bleeding</b> - Commence internal vein repair surgery or apply clotting chemicals (i.e. Myelamine).<br>"
if(M.getOxyLoss())
dat += "<b>Suffociation</b> - Give Dexalin or Dexaline Plus. Check for heart or lung damage.<br>"
if(infection)
dat += "<b>Infection</b> - Give Spaceacilin. If severe, use Corophizine or overdose on Spaceacilin and monitor until well.<br>"
if((M.getBrainLoss() >= 1 && advscan >= 2 && showadvscan == 1) || M.getBrainLoss() >= 10)
dat += "<b>Brain damage</b> - Commence brain repair surgery, apply Alkysine, or universal organ-repair chemicals. (i.e. Peridaxon)<br>"
if(M.radiation || M.accumulated_rads)
dat += "<b>Radiation</b> - Give Hyroanlin or Arithazine. Monitor for genetic damage.<br>"
if(organ && (advscan >= 1 && showadvscan == 1))
dat += "<b>Organ damage</b> - Give Peridaxon. Perform full body scan for targetted organ repair surgery.<br>"
if(bloodloss)
dat += "<b>Low blood volume</b> - Commence blood transfusion via IV drip or provide blood-restorative chemicals (i.e. Iron)."
if(M.getToxLoss())
dat += "<b>Toxins</b> - Give Dylovene or Cartholine. Vomitting is normal and helpful. Tends to be a symptom of larger issues, such as infection.<br>"
if(M.getBruteLoss())
dat += "<b>Brute Trauma</b> - Bandage wounded body part. Give Bicaridine or Vermicetol.<br>"
if(M.getFireLoss())
dat += "<b>Surface burn</b> - Salve wounded body part in ointment. Give Kelotane or Dermaline. Check for infections.<br>"
if(M.getCloneLoss())
dat += "<b>Genetic damage</b> - Utilize cryogenic pod with appropriate chemicals (i.e. Cryoxadone) and below 70 K, or give Rezadone.<br>"
if(bone)
dat += "<b>Bone fracture</b> - Splint damaged area. Treat with bone repair surgery or Osteodaxon after treating brute damage.<br>"
if(M.virus2.len)
dat += "<b>Viral infection</b> - Proceed with virology pathogen curing procedures or apply antiviral chemicals (i.e. Corophizine)<br>"
if(robotparts)
dat += "<b>Robotic body parts</b> - Should not be repaired by medical personnel, refer to robotics if damaged."
var/peeb
if(dat)
peeb +="<span class='notice'><b>GUIDANCE SYSTEM BEGIN</b></span><br>"
peeb += dat
peeb += "<span class='notice'>For more detailed information about patient condition, use the stationary scanner in medbay.</span>"
user.show_message(peeb, 1)

View File

@@ -15,12 +15,20 @@
var/mode = 1;
var/advscan = 0
var/showadvscan = 1
var/guide = FALSE
/obj/item/device/healthanalyzer/New()
if(advscan >= 1)
verbs += /obj/item/device/healthanalyzer/proc/toggle_adv
..()
/obj/item/device/healthanalyzer/examine(mob/user)
. = ..()
if(guide)
. += "<span class='notice'>Guidance is currently enabled.</span>"
else
. += "<span class='notice'>Guidance is currently disabled.</span>"
/obj/item/device/healthanalyzer/do_surgery(mob/living/M, mob/living/user)
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
return ..()
@@ -109,19 +117,14 @@
severity = "Lethal"
else if(M.radiation >= 600)
severity = "Critical"
else if(M.radiation >= 50)
else if(M.radiation >= 400)
severity = "Severe"
else if(M.radiation >= 25)
else if(M.radiation >= 300)
severity = "Moderate"
else if(M.radiation >= 1)
else if(M.radiation >= 100)
severity = "Low"
dat += "<span class='warning'>[severity] levels of radiation detected. [(severity == "Critical") ? " Immediate treatment advised." : ""]</span><br>"
dat += "<span class='warning'>[severity] levels of acute radiation sickness detected. [round(M.radiation/50)]Gy. [(severity == "Critical" || severity == "Lethal") ? " Immediate treatment advised." : ""]</span><br>"
else
dat += "<span class='warning'>Radiation detected.</span><br>"
dat += "<span class='warning'>Acute radiation sickness detected.</span><br>"
if(M.accumulated_rads)
if(advscan >= 2 && showadvscan == 1)
@@ -303,6 +306,8 @@
dat += "<span class='notice'>Subject is a Xenochimera. Treat accordingly.</span>"
// VOREStation Edit End
user.show_message(dat, 1)
if(guide)
guide(M, user)
/obj/item/device/healthanalyzer/verb/toggle_mode()
set name = "Switch Verbosity"

View File

@@ -208,7 +208,7 @@
var/mattermult = istype(Ob, /obj/item) ? min(2000, 400 * Ob.w_class) : 2000
Ob.matter[recipe.use_material] = mattermult / produced * required
Ob.matter[recipe.matter_material] = mattermult / produced * required
O.set_dir(user.dir)
O.add_fingerprint(user)

View File

@@ -14,6 +14,7 @@
name = "tile"
singular_name = "tile"
desc = "A non-descript floor tile"
icon = 'icons/obj/stacks.dmi' //CHOMPedit - parent obj/item/stack got edited, this puts icon back for carpets.
randpixel = 7
w_class = ITEMSIZE_NORMAL
max_amount = 60

View File

@@ -592,8 +592,8 @@
list(/mob/living/simple_mob/animal/passive/tindalos),
list(/mob/living/simple_mob/animal/passive/yithian),
list(
/mob/living/simple_mob/animal/wolf,
/mob/living/simple_mob/animal/wolf/direwolf
/mob/living/simple_mob/vore/wolf,
/mob/living/simple_mob/vore/wolf/direwolf
),
list(/mob/living/simple_mob/vore/rabbit),
list(/mob/living/simple_mob/vore/redpanda),
@@ -608,10 +608,10 @@
/mob/living/simple_mob/animal/space/bear/brown
),
list(
/mob/living/simple_mob/otie/feral,
/mob/living/simple_mob/otie/feral/chubby,
/mob/living/simple_mob/otie/red,
/mob/living/simple_mob/otie/red/chubby
/mob/living/simple_mob/vore/otie/feral,
/mob/living/simple_mob/vore/otie/feral/chubby,
/mob/living/simple_mob/vore/otie/red,
/mob/living/simple_mob/vore/otie/red/chubby
),
list(/mob/living/simple_mob/animal/sif/diyaab),
list(/mob/living/simple_mob/animal/sif/duck),
@@ -650,8 +650,8 @@
/mob/living/simple_mob/animal/giant_spider/webslinger = 5,
/mob/living/simple_mob/animal/giant_spider/broodmother = 1),
list(
/mob/living/simple_mob/animal/wolf = 10,
/mob/living/simple_mob/animal/wolf/direwolf = 5,
/mob/living/simple_mob/vore/wolf = 10,
/mob/living/simple_mob/vore/wolf/direwolf = 5,
/mob/living/simple_mob/vore/greatwolf = 1,
/mob/living/simple_mob/vore/greatwolf/black = 1,
/mob/living/simple_mob/vore/greatwolf/grey = 1
@@ -684,7 +684,7 @@
/mob/living/simple_mob/animal/space/carp/large/huge = 5
),
list(/mob/living/simple_mob/animal/space/goose),
list(/mob/living/simple_mob/animal/space/jelly),
list(/mob/living/simple_mob/vore/jelly),
list(/mob/living/simple_mob/animal/space/tree),
list(
/mob/living/simple_mob/vore/aggressive/corrupthound = 10,
@@ -785,13 +785,13 @@
list(/mob/living/simple_mob/mechanical/wahlem),
list(/mob/living/simple_mob/animal/passive/fox/syndicate),
list(/mob/living/simple_mob/animal/passive/fox),
list(/mob/living/simple_mob/animal/wolf/direwolf),
list(/mob/living/simple_mob/animal/space/jelly),
list(/mob/living/simple_mob/vore/wolf/direwolf),
list(/mob/living/simple_mob/vore/jelly),
list(
/mob/living/simple_mob/otie/feral,
/mob/living/simple_mob/otie/feral/chubby,
/mob/living/simple_mob/otie/red,
/mob/living/simple_mob/otie/red/chubby
/mob/living/simple_mob/vore/otie/feral,
/mob/living/simple_mob/vore/otie/feral/chubby,
/mob/living/simple_mob/vore/otie/red,
/mob/living/simple_mob/vore/otie/red/chubby
),
list(
/mob/living/simple_mob/shadekin/blue = 100,

View File

@@ -102,17 +102,17 @@
/obj/item/weapon/grenade/spawnergrenade/casino/otie
desc = "It is set to detonate in 5 seconds. It will release a otie that has been won from the golden goose casino!"
name = "Casino Creature Container (Otie)"
spawner_type = /mob/living/simple_mob/otie/friendly
spawner_type = /mob/living/simple_mob/vore/otie/friendly
/obj/item/weapon/grenade/spawnergrenade/casino/otie/chubby
desc = "It is set to detonate in 5 seconds. It will release a chonker otie that has been won from the golden goose casino!"
name = "Casino Creature Container (Well feed Otie)"
spawner_type = /mob/living/simple_mob/otie/friendly/chubby
spawner_type = /mob/living/simple_mob/vore/otie/friendly/chubby
/obj/item/weapon/grenade/spawnergrenade/casino/zorgoia
desc = "It is set to detonate in 5 seconds. It will release a zorgoia that has been won from the golden goose casino!"
name = "Casino Creature Container (Zorgoia)"
spawner_type = /mob/living/simple_mob/otie/zorgoia/friendly
spawner_type = /mob/living/simple_mob/vore/otie/zorgoia/friendly
/obj/item/weapon/grenade/spawnergrenade/casino/gygax
desc = "You feel great power inside this small round sphere, with great powers comes great responsibilities!"

View File

@@ -13,7 +13,7 @@
var/static/non_micro_types = list(
/mob/living/simple_mob/vore/squirrel,
/mob/living/simple_mob/vore/alienanimals/catslug,
/mob/living/simple_mob/vore/hostile/morph,
/mob/living/simple_mob/vore/morph,
/mob/living/simple_mob/protean_blob,
/mob/living/simple_mob/slime
)

View File

@@ -13,7 +13,7 @@
/mob/living/simple_mob/animal/space/carp = 10,
/obj/structure/closet/crate/mimic = 2,
/mob/living/simple_mob/animal/space/bats = 70,
/mob/living/simple_mob/animal/space/jelly = 25,
/mob/living/simple_mob/vore/jelly = 25,
/mob/living/simple_mob/animal/space/bear = 1,
/mob/living/simple_mob/vore/aggressive/deathclaw = 1,
/mob/living/simple_mob/animal/space/goose = 60,

View File

@@ -157,7 +157,7 @@ It also makes it so a ghost wont know where all the goodies/mobs are.
invisibility = 101
spawn_types = list(
/mob/living/simple_mob/animal/passive/gaslamp = 20,
// /mob/living/simple_mob/otie/feral = 10,
// /mob/living/simple_mob/vore/otie/feral = 10,
/mob/living/simple_mob/vore/aggressive/dino/virgo3b = 5,
/mob/living/simple_mob/vore/aggressive/dragon/virgo3b = 1
)

View File

@@ -184,7 +184,7 @@
/obj/random/outside_mob/item_to_spawn() // Special version for mobs to have the same faction.
return pick(
prob(50);/mob/living/simple_mob/animal/passive/gaslamp,
// prob(50);/mob/living/simple_mob/otie/feral, // Removed until Otie code is unfucked.
// prob(50);/mob/living/simple_mob/vore/otie/feral, // Removed until Otie code is unfucked.
prob(20);/mob/living/simple_mob/vore/aggressive/dino/virgo3b,
prob(1);/mob/living/simple_mob/vore/aggressive/dragon/virgo3b)

View File

@@ -47,16 +47,16 @@
/mob/living/simple_mob/vore/horse,
/mob/living/simple_mob/vore/aggressive/panther,
/mob/living/simple_mob/vore/aggressive/giant_snake,
/mob/living/simple_mob/animal/wolf,
/mob/living/simple_mob/vore/wolf,
/mob/living/simple_mob/animal/space/bear;0.5,
/mob/living/simple_mob/animal/space/carp,
/mob/living/simple_mob/vore/aggressive/mimic,
/mob/living/simple_mob/vore/aggressive/rat,
/mob/living/simple_mob/vore/aggressive/rat/tame,
/mob/living/simple_mob/otie/zorgoia, //CHOMPstation edit
/mob/living/simple_mob/vore/otie/zorgoia, //CHOMPstation edit
/mob/living/simple_mob/vore/rabbit,
/mob/living/simple_mob/vore/weretiger;0.5,
/mob/living/simple_mob/otie;0.5
// /mob/living/simple_mob/vore/otie;0.5
))
return ..()
@@ -72,9 +72,9 @@
/mob/living/simple_mob/animal/space/alien/drone,
/mob/living/simple_mob/animal/space/alien/sentinel,
/mob/living/simple_mob/animal/space/alien/queen,
/mob/living/simple_mob/otie/feral,
/mob/living/simple_mob/otie/feral/chubby,
/mob/living/simple_mob/otie/red,
/mob/living/simple_mob/vore/otie/feral, //ChompEDIT uncomment
/mob/living/simple_mob/vore/otie/feral/chubby, //ChompEDIT add
/mob/living/simple_mob/vore/otie/red, //ChompEDIT uncomment
/mob/living/simple_mob/vore/aggressive/corrupthound))
return ..()
@@ -83,11 +83,11 @@
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs."
icon = 'icons/obj/storage_vr.dmi'
icon_state = "sotiecrate"
starts_with = list(/mob/living/simple_mob/otie/security)
starts_with = list(/mob/living/simple_mob/vore/otie/security)
/obj/structure/largecrate/animal/otie/guardbeast/Initialize()
starts_with = list(pick(/mob/living/simple_mob/otie/security,
/mob/living/simple_mob/otie/security/chubby))
starts_with = list(pick(/mob/living/simple_mob/vore/otie/security,
/mob/living/simple_mob/vore/otie/security/chubby))
return ..()
/obj/structure/largecrate/animal/guardmutant
@@ -95,12 +95,12 @@
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs. This one can survive hostile atmosphere."
icon = 'icons/obj/storage_vr.dmi'
icon_state = "sotiecrate"
starts_with = list(/mob/living/simple_mob/otie/security/phoron)
starts_with = list(/mob/living/simple_mob/vore/otie/security/phoron)
/obj/structure/largecrate/animal/otie/guardmutant/Initialize()
starts_with = list(pick(/mob/living/simple_mob/otie/security/phoron;2,
/mob/living/simple_mob/otie/security/phoron/red;0.5,
/mob/living/simple_mob/otie/security/phoron/red/chubby;0.5))
starts_with = list(pick(/mob/living/simple_mob/vore/otie/security/phoron;2,
/mob/living/simple_mob/vore/otie/security/phoron/red;0.5,
/mob/living/simple_mob/vore/otie/security/phoron/red/chubby;0.5))
return ..()
/obj/structure/largecrate/animal/otie
@@ -108,23 +108,23 @@
desc = "A warning on the side says the creature inside was returned to the supplier after injuring or devouring several unlucky members of the previous adoption family. It was given a second chance with the next customer. Godspeed and good luck with your new pet!"
icon = 'icons/obj/storage_vr.dmi'
icon_state = "otiecrate2"
starts_with = list(/mob/living/simple_mob/otie/cotie)
starts_with = list(/mob/living/simple_mob/vore/otie/cotie)
var/taped = 1
/obj/structure/largecrate/animal/otie/Initialize()
starts_with = list(pick(/mob/living/simple_mob/otie/cotie,
/mob/living/simple_mob/otie/cotie/chubby))
starts_with = list(pick(/mob/living/simple_mob/vore/otie/cotie,
/mob/living/simple_mob/vore/otie/cotie/chubby))
return ..()
/obj/structure/largecrate/animal/otie/phoron
name = "VARMAcorp adaptive beta subject (Experimental)"
desc = "VARMAcorp experimental hostile environment adaptive breeding development kit. WARNING, DO NOT RELEASE IN WILD!"
starts_with = list(/mob/living/simple_mob/otie/cotie/phoron)
starts_with = list(/mob/living/simple_mob/vore/otie/cotie/phoron)
/obj/structure/largecrate/animal/otie/phoron/Initialize()
starts_with = list(pick(/mob/living/simple_mob/otie/cotie/phoron;2,
/mob/living/simple_mob/otie/red/friendly;0.5,
/mob/living/simple_mob/otie/red/chubby;0.5))
starts_with = list(pick(/mob/living/simple_mob/vore/otie/cotie/phoron;2,
/mob/living/simple_mob/vore/otie/red/friendly;0.5,
/mob/living/simple_mob/vore/otie/red/chubby;0.5)) //ChompEDIT add
return ..()
/obj/structure/largecrate/animal/otie/attack_hand(mob/living/carbon/human/M as mob)//I just couldn't decide between the icons lmao

View File

@@ -29,10 +29,10 @@
"Lizardman" = /mob/living/simple_mob/vore/aggressive/lizardman,//CHOMPedit: more mobs
"Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog,
"Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat,
"Jelly Blob" = /mob/living/simple_mob/animal/space/jelly,
"Wolf" = /mob/living/simple_mob/animal/wolf,
"Dire Wolf" = /mob/living/simple_mob/animal/wolf/direwolf,//CHOMPedit: more mobs
"Large Dog" = /mob/living/simple_mob/animal/wolf/direwolf/dog,//CHOMPedit: more mobs
"Jelly Blob" = /mob/living/simple_mob/vore/jelly,
"Wolf" = /mob/living/simple_mob/vore/wolf,
"Dire Wolf" = /mob/living/simple_mob/vore/wolf/direwolf,//CHOMPedit: more mobs
"Large Dog" = /mob/living/simple_mob/vore/wolf/direwolf/dog,//CHOMPedit: more mobs
"Hyena" = /mob/living/simple_mob/animal/hyena,//CHOMPedit: more mobs
"Juvenile Solargrub" = /mob/living/simple_mob/vore/solargrub,
"Sect Queen" = /mob/living/simple_mob/vore/sect_queen,
@@ -41,13 +41,13 @@
"Panther" = /mob/living/simple_mob/vore/aggressive/panther,
"Giant Snake" = /mob/living/simple_mob/vore/aggressive/giant_snake,
"Deathclaw" = /mob/living/simple_mob/vore/aggressive/deathclaw,
"Otie" = /mob/living/simple_mob/otie,
"Chubby Otie" = /mob/living/simple_mob/otie/friendly/chubby,//CHOMPedit: more mobs
"Mutated Otie" = /mob/living/simple_mob/otie/feral,
"Chubby Mutated Otie" = /mob/living/simple_mob/otie/feral/chubby,//CHOMPedit: more mobs
"Red Otie" = /mob/living/simple_mob/otie/red,
"Chubby Red Otie" = /mob/living/simple_mob/otie/red/chubby,//CHOMPedit: more mobs
"Zorgoia" = /mob/living/simple_mob/otie/zorgoia,//CHOMPedit: more mobs
"Otie" = /mob/living/simple_mob/vore/otie,
"Chubby Otie" = /mob/living/simple_mob/vore/otie/friendly/chubby,//CHOMPedit: more mobs
"Mutated Otie" =/mob/living/simple_mob/vore/otie/feral,
"Chubby Mutated Otie" = /mob/living/simple_mob/vore/otie/feral/chubby,//CHOMPedit: more mobs
"Red Otie" = /mob/living/simple_mob/vore/otie/red,
"Chubby Red Otie" = /mob/living/simple_mob/vore/otie/red/chubby,//CHOMPedit: more mobs
"Zorgoia" = /mob/living/simple_mob/vore/otie/zorgoia,//CHOMPedit: more mobs
"Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound,
"Corrupt Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi,
"Hunter Giant Spider" = /mob/living/simple_mob/animal/giant_spider/hunter,
@@ -104,6 +104,7 @@
to_chat(M, "<span class='warning'>You may be a spooky space monster, but your role is to facilitate spooky space monster roleplay, not to fight the station and kill people. You can of course eat and/or digest people as you like if OOC prefs align, but this should be done as part of roleplay. If you intend to fight the station and kill people and such, you need permission from the staff team. GENERALLY, this role should avoid well populated areas. Youre a weird spooky space monster, so the bar is probably not where youd want to go if you intend to survive. Of course, youre welcome to try to make friends and roleplay how you will in this regard, but something to keep in mind.</span>")
newPred.ckey = M.ckey
newPred.visible_message("<span class='warning'>[newPred] emerges from somewhere!</span>")
log_and_message_admins("successfully entered \a [src] and became a [newPred].")
qdel(src)
/obj/structure/ghost_pod/ghost_activated/maintpred/no_announce
@@ -124,7 +125,7 @@
/obj/structure/ghost_pod/ghost_activated/morphspawn/create_occupant(var/mob/M)
..()
var/mob/living/simple_mob/vore/hostile/morph/newMorph = new /mob/living/simple_mob/vore/hostile/morph(get_turf(src))
var/mob/living/simple_mob/vore/morph/newMorph = new /mob/living/simple_mob/vore/morph(get_turf(src))
newMorph.voremob_loaded = TRUE //CHOMPedit: On-demand belly loading.
newMorph.init_vore() //CHOMPedit: On-demand belly loading.
if(M.mind)
@@ -140,6 +141,7 @@
newMorph.ckey = M.ckey
newMorph.visible_message("<span class='warning'>A morph appears to crawl out of somewhere.</span>")
log_and_message_admins("successfully entered \a [src] and became a Morph.")
qdel(src)
/obj/structure/ghost_pod/ghost_activated/morphspawn/no_announce

View File

@@ -41,6 +41,15 @@
handle_clothing_setup()
/obj/structure/ghost_pod/manual/survivor/trigger()
. = ..()
desc += "\n The Pod's stasis is broken!"
visible_message(message = SPAN_WARNING("\The [src] hisses and blinks in a myriad of lights as its stasis ceases! \n \
What or whoever lays beneath may yet stir once more, but their wounds may be too grevious... "),
blind_message = SPAN_WARNING("You hear hissing from [src]!"),
runemessage = "HISS")
/obj/structure/ghost_pod/manual/survivor/proc/handle_clothing_setup()
clothing_possibilities = list()

View File

@@ -0,0 +1,36 @@
/obj/structure/prop/altevian_generator_wrecked
name = "Converted High Energy Exchange Supplier Extractor"
desc = "A take on the classic PACMAN reactors that are seen throughout the galaxy. The altevians have ripped apart the tech and seemed to of found a way to maximize the fuel usage one would see with this kind of process. \
However, it is a lot bulkier and nearly impossible to break apart, but still can be moved if need be with special tools. This one appears to be totally wrecked though."
icon = 'icons/obj/props/decor64x64.dmi'
icon_state = "alteviangenwrecked"
bound_width = 64
bound_height = 64
/obj/structure/prop/altevian_jump_drive
name = "Prosper-M Stellar Drive"
desc = "A drive created by the Altevian Hegemony that focuses heavily on using Bluespace and other tactics to achieve a stable traversal between the stars. \
This drive is commonly seen on their medium sized craft to help with logistical operations."
icon = 'icons/obj/props/decor128x128.dmi'
icon_state = "altevian_jump_drive"
bound_width = 128
bound_height = 128
var/has_misc_overlay = TRUE
/obj/structure/prop/altevian_jump_drive/Initialize()
.=..()
update_icon()
/obj/structure/prop/altevian_jump_drive/update_icon()
cut_overlays()
if(has_misc_overlay)
add_overlay("jump_drive_misc_anim_overlay")
/obj/structure/prop/altevian_jump_drive/active
icon_state = "altevian_jump_drive-active"
/obj/structure/prop/altevian_jump_drive/wrecked
icon_state = "altevian_jump_drive_wrecked"
desc = "A drive created by the Altevian Hegemony that focuses heavily on using Bluespace and other tactics to achieve a stable traversal between the stars. \
This drive is commonly seen on their medium sized craft to help with logistical operations. This one appears to be totally wrecked."
has_misc_overlay = FALSE

View File

@@ -55,9 +55,9 @@ var/world_time_season
/mob/living/simple_mob/vore/alienanimals/dustjumper = 20,
/mob/living/simple_mob/vore/bee = 20,
/mob/living/simple_mob/vore/horse/big = 5,
/mob/living/simple_mob/animal/wolf = 5,
/mob/living/simple_mob/animal/wolf/direwolf = 1,
/mob/living/simple_mob/animal/wolf/direwolf/dog = 1,
/mob/living/simple_mob/vore/wolf = 5,
/mob/living/simple_mob/vore/wolf/direwolf = 1,
/mob/living/simple_mob/vore/wolf/direwolf/dog = 1,
/mob/living/simple_mob/vore/squirrel = 20
)
grass_types = list(
@@ -97,7 +97,7 @@ var/world_time_season
/mob/living/simple_mob/vore/horse/big = 5,
/mob/living/simple_mob/vore/pakkun = 2,
/mob/living/simple_mob/vore/fennix = 1,
/mob/living/simple_mob/animal/wolf/direwolf/dog = 1,
/mob/living/simple_mob/vore/wolf/direwolf/dog = 1,
/mob/living/simple_mob/animal/passive/bird/parrot = 1,
/mob/living/simple_mob/vore/squirrel = 20
)
@@ -123,9 +123,9 @@ var/world_time_season
/mob/living/simple_mob/vore/horse/big = 10,
/mob/living/simple_mob/vore/alienanimals/dustjumper = 20,
/mob/living/simple_mob/vore/horse/big = 1,
/mob/living/simple_mob/animal/wolf = 1,
/mob/living/simple_mob/animal/wolf/direwolf = 1,
/mob/living/simple_mob/animal/wolf/direwolf/dog = 1,
/mob/living/simple_mob/vore/wolf = 1,
/mob/living/simple_mob/vore/wolf/direwolf = 1,
/mob/living/simple_mob/vore/wolf/direwolf/dog = 1,
/mob/living/simple_mob/vore/squirrel = 20
)
grass_types = list(
@@ -148,13 +148,13 @@ var/world_time_season
/mob/living/simple_mob/vore/alienanimals/teppi = 10,
/mob/living/simple_mob/vore/alienanimals/teppi/mutant = 1,
/mob/living/simple_mob/vore/redpanda = 10,
/mob/living/simple_mob/animal/wolf = 10,
/mob/living/simple_mob/animal/wolf/direwolf = 1,
/mob/living/simple_mob/animal/wolf/direwolf/dog = 1,
/mob/living/simple_mob/otie/friendly = 2,
/mob/living/simple_mob/otie/friendly/chubby = 1,
/mob/living/simple_mob/otie/red/friendly = 1,
/mob/living/simple_mob/otie/red/chubby = 1,
/mob/living/simple_mob/vore/wolf = 10,
/mob/living/simple_mob/vore/wolf/direwolf = 1,
/mob/living/simple_mob/vore/wolf/direwolf/dog = 1,
/mob/living/simple_mob/vore/otie/friendly = 2,
/mob/living/simple_mob/vore/otie/friendly/chubby = 1,
/mob/living/simple_mob/vore/otie/red/friendly = 1,
/mob/living/simple_mob/vore/otie/red/chubby = 1,
/mob/living/simple_mob/vore/squirrel = 20
)
if(prob(snow_chance))

View File

@@ -307,10 +307,10 @@
/datum/entity_narrate/proc/narrate_tgui_atom(atom/A, message as text)
message = sanitize(message)
if(tgui_narrate_mode && tgui_narrate_privacy)
A.visible_message("<i><b>[A.name]</b> [message]</i>", range = 1)
A.visible_message("<i><b>\The [A.name]</b> [message]</i>", range = 1)
else if(tgui_narrate_mode && !tgui_narrate_privacy)
A.visible_message("<b>[A.name]</b> [message]",)
A.visible_message("<b>\The [A.name]</b> [message]",)
else if(!tgui_narrate_mode && tgui_narrate_privacy)
A.audible_message("<i><b>[A.name]</b> [message]</i>", hearing_distance = 1)
A.audible_message("<i><b>\The [A.name]</b> [message]</i>", hearing_distance = 1)
else if(!tgui_narrate_mode && !tgui_narrate_privacy)
A.audible_message("<b>[A.name]</b> [message]")
A.audible_message("<b>\The [A.name]</b> [message]")

View File

@@ -0,0 +1,141 @@
/obj/structure/redgate
name = "redgate"
desc = "It leads to someplace else!"
icon = 'icons/obj/redgate.dmi'
icon_state = "off"
density = FALSE
unacidable = TRUE
anchored = TRUE
pixel_x = -16
var/obj/structure/redgate/target
var/list/exceptions = list(/obj/structure/ore_box) //made it a var so that GMs or map makers can selectively allow things to pass through
/obj/structure/redgate/Destroy()
if(target)
target.target = null
target.toggle_portal()
target = null
set_light(0)
return ..()
/obj/structure/redgate/proc/teleport(var/mob/M as mob)
var/keycheck = TRUE
if (!istype(M,/mob/living)) //We only want mob/living, no bullets or mechs or AI eyes or items
if(M.type in exceptions)
keycheck = FALSE //we'll allow it
else
return
if(keycheck) //exceptions probably won't have a ckey
if(!M.ckey) //We only want players, no bringing the weird stuff on the other side back
return
if(!target)
toggle_portal()
var/turf/place = get_turf(target)
var/possible_turfs = place.AdjacentTurfs()
if(isemptylist(possible_turfs))
to_chat(M, "<span class='notice'>Something blocks your way.</span>")
return
var/turf/temptarg = pick(possible_turfs)
do_safe_teleport(M, temptarg, 0)
/obj/structure/redgate/proc/toggle_portal()
if(target)
icon_state = "on"
density = TRUE
plane = ABOVE_MOB_PLANE
set_light(5, 0.75, "#da5656")
else
icon_state = "off"
density = FALSE
plane = OBJ_PLANE
set_light(0)
/obj/structure/redgate/Bumped(mob/M as mob)
src.teleport(M)
return
/obj/structure/redgate/Crossed(mob/M as mob)
src.teleport(M)
return
/obj/structure/redgate/attack_hand(mob/M as mob)
if(density)
src.teleport(M)
else
if(!find_partner())
to_chat(M, "<span class='warning'>The [src] remains off... seems like it doesn't have a destination.</span>")
/obj/structure/redgate/attack_ghost(var/mob/observer/dead/user)
if(target && user?.client?.holder)
user.forceMove(get_turf(target))
else
return ..()
/obj/structure/redgate/away/Initialize()
. = ..()
if(!find_partner())
log_and_message_admins("An away redgate spawned but wasn't able to find a gateway to link to. If this appeared at roundstart, something has gone wrong, otherwise if you spawn another gate they should connect.")
/obj/structure/redgate/proc/find_partner()
for(var/obj/structure/redgate/g in world)
if(istype(g, /obj/structure/redgate))
if(g.target)
continue
else if(g == src)
continue
else if(g.z in using_map.station_levels)
target = g
g.target = src
toggle_portal()
target.toggle_portal()
break
else if(g != src)
target = g
g.target = src
toggle_portal()
target.toggle_portal()
break
if(!target)
return FALSE
else
return TRUE
/area/redgate
name = "redgate"
icon = 'icons/turf/areas_vr.dmi'
icon_state = "redblacir"
base_turf = /turf/simulated/mineral/floor/cave
/area/redgate/wilds
name = "wilderness"
/area/redgate/structure
name = "structure"
icon_state = "redwhisqu"
/area/redgate/structure/powered
requires_power = 0
/area/redgate/lit
dynamic_lighting = 0
/area/redgate/structure/powered/teppi_ranch
name = "ranch"
/area/redgate/structure/powered/teppi_ranch/barn
name = "barn"
/obj/item/weapon/paper/teppiranch
name = "elegantly scrawled note"
info = {"<i>Goeleigh,<BR><BR>
This isn't how I wanted to give this message to you. They say that the light is coming this way, and we won't even know it's here until it's upon us. There's no way to know when it will arrive, so we can't really afford to wait around. My family has secured us a ride on a ship, and we'll be going to one of the rimward colonies. They say that they are making strides to build some new kind of gate there, something that will take us far from that light, somewhere safe. We can't really bring the animals, but perhaps you can make some arrangements for them.<BR><BR>
As soon as you read this, get yourself out of here and come find us. We left you enough money to make the trip in the usual spot. We'll be in the registry once we arrive. We're waiting for you.<BR><BR>
Yours, Medley</i>"}

View File

@@ -73,7 +73,7 @@
/obj/item/weapon/grenade/spawnergrenade/casino/otie
desc = "It is set to detonate in 5 seconds. It will release a otie won from the casino prize vendor!"
name = "Casino Creature Container (Otie)"
spawner_type = /mob/living/simple_mob/otie/friendly
spawner_type = /mob/living/simple_mob/vore/otie/friendly
/obj/item/weapon/grenade/spawnergrenade/casino/goldcrest
desc = "It is set to detonate in 5 seconds. It will release a bird won from the casino prize vendor!"

View File

@@ -24,6 +24,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
"morph" = 1, // 18
"corgi" = 1, // 19
"cursed sword" = 1, // 20
"Ship Survivor" = 1, // 21
//VOREStation Add End
)

View File

@@ -41,7 +41,7 @@
pref.alternate_languages.len = (S.num_alternate_languages + pref.extra_languages) // Truncate to allowed length
// VOREStation Edit Start
if(!(pref.preferred_language in pref.alternate_languages) || !pref.preferred_language) // Safety handling for if our preferred language is ever somehow removed from the character's list of langauges, or they don't have one set
if((!(pref.preferred_language in pref.alternate_languages) && !(pref.preferred_language == LANGUAGE_GALCOM) && !(pref.preferred_language == S.language)) || !pref.preferred_language) // Safety handling for if our preferred language is ever somehow removed from the character's list of langauges, or they don't have one set
pref.preferred_language = S.language // Reset to default, for safety
// VOREStation Edit end

View File

@@ -252,3 +252,15 @@
/datum/gear/shoes/circuitry
display_name = "boots, circuitry (empty)"
path = /obj/item/clothing/shoes/circuitry
/datum/gear/shoes/ballet
display_name = "pointe shoes"
path = /obj/item/clothing/shoes/ballet
/datum/gear/shoes/ballet/New()
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/shoes/halfmoon
display_name = "half moon boots"
path = /obj/item/clothing/shoes/boots/half_moon

View File

@@ -676,3 +676,55 @@
"Earth kimono" = /obj/item/clothing/suit/kimono/earth
)
gear_tweaks += new/datum/gear_tweak/path(kimonos)
//cropped hoodies
/datum/gear/suit/roles/croppedhoodies
display_name = "cropped hoodie selection"
path = /obj/item/clothing/suit/storage/croppedhoodie
/datum/gear/suit/roles/croppedhoodies/New()
..()
var/list/croppedhoodies = list(
"cropped hoodie"=/obj/item/clothing/suit/storage/croppedhoodie,
"high cropped hoodie"=/obj/item/clothing/suit/storage/croppedhoodie/croppier,
"very high cropped hoodie"=/obj/item/clothing/suit/storage/croppedhoodie/croppierer,
"super high cropped hoodie"=/obj/item/clothing/suit/storage/croppedhoodie/croppiest
)
gear_tweaks += gear_tweak_free_color_choice
gear_tweaks += new/datum/gear_tweak/path(croppedhoodies)
/datum/gear/suit/drive
display_name = "relatable jacket"
path = /obj/item/clothing/suit/storage/drive
/datum/gear/suit/motojacket
display_name = "motorcycle jacket"
path = /obj/item/clothing/suit/storage/toggle/moto_jacket
/datum/gear/suit/punkvest
display_name = "punk vest"
path = /obj/item/clothing/suit/storage/punkvest
/datum/gear/suit/raincoat
display_name = "raincoat"
path = /obj/item/clothing/suit/storage/hooded/raincoat
//hooded cloaks
/datum/gear/suit/roles/hoodedcloaks
display_name = "hooded cloak selection"
path = /obj/item/clothing/suit/storage/hooded/cloak
/datum/gear/suit/roles/hoodedcloaks/New()
..()
var/list/hoodedcloaks = list(
"hooded maroon cloak"=/obj/item/clothing/suit/storage/hooded/cloak,
"hooded winter cloak"=/obj/item/clothing/suit/storage/hooded/cloak/winter,
"hooded asymmetric cloak"=/obj/item/clothing/suit/storage/hooded/cloak/asymmetric,
"hooded fancy cloak"=/obj/item/clothing/suit/storage/hooded/cloak/fancy
)
gear_tweaks += new/datum/gear_tweak/path(hoodedcloaks)
//nerdy shirt
/datum/gear/suit/nerdshirt
display_name = "nerdy shirt"
path = /obj/item/clothing/suit/nerdshirt

View File

@@ -117,10 +117,10 @@ Talon winter coat
path = /obj/item/clothing/suit/armor/combat/crusader_explo/FM
allowed_roles = list ("Paramedic")
//Atmos-coloured hazard vest
display_name = "hazard vest, atmospherics"
path = /obj/item/clothing/suit/storage/hazardvest/atmos
allowed_roles = list("Chief Engineer","Atmospheric Technician", "Engineer")
//Long fur coat
/datum/gear/suit/russofurcoat
display_name = "long fur coat"
path = /obj/item/clothing/suit/storage/vest/hoscoat/russofurcoat
//Colorable Hoodie
/datum/gear/suit/hoodie_vr

View File

@@ -516,3 +516,73 @@
/datum/gear/uniform/tropical_outfit/blue
display_name = "tropical outfit, miami vice"
path = /obj/item/clothing/under/tropical/blue
//leotards
/datum/gear/uniform/leotard
display_name = "leotard, black"
path = /obj/item/clothing/under/leotard
/datum/gear/uniform/leotardcolor
display_name = "leotard, colorable"
path = /obj/item/clothing/under/leotardcolor
/datum/gear/uniform/leotardcolor/New()
..()
gear_tweaks += gear_tweak_free_color_choice
//skinsuits
/datum/gear/uniform/skinsuits
display_name = "skinsuit selection"
path = /obj/item/clothing/under/skinsuit
/datum/gear/uniform/skinsuits/New()
..()
var/list/skinsuits = list(
"skinsuit"=/obj/item/clothing/under/skinsuit,
"feminine skinsuit"=/obj/item/clothing/under/skinsuit/fem,
"gray skinsuit"=/obj/item/clothing/under/skinsuit/gray,
"feminine gray skinsuit"=/obj/item/clothing/under/skinsuit/fem/gray,
"leotard skinsuit"=/obj/item/clothing/under/skinsuit/leotard,
"feminine leotard skinsuit"=/obj/item/clothing/under/skinsuit/fem/leotard,
"gray leotard skinsuit"=/obj/item/clothing/under/skinsuit/leotard/gray,
"feminine gray leotard skinsuit"=/obj/item/clothing/under/skinsuit/fem/leotard/gray
)
gear_tweaks += list(new/datum/gear_tweak/path(skinsuits))
//baggy turtlenecks
/datum/gear/uniform/turtlebaggys
display_name = "baggy turtleneck selection"
path = /obj/item/clothing/under/turtlebaggy
/datum/gear/uniform/turtlebaggys/New()
..()
var/list/turtlebaggys = list(
"cream baggy turtleneck"=/obj/item/clothing/under/turtlebaggy,
"feminine cream baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/cream_fem,
"purple baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/purple,
"feminine purple baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/purple_fem,
"red baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/red,
"feminine red baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/red_fem,
"blue baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/blue,
"feminine blue baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/blue_fem,
"green baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/green,
"feminine green baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/green_fem,
"black baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/black,
"feminine black baggy turtleneck"=/obj/item/clothing/under/turtlebaggy/black_fem
)
gear_tweaks += list(new/datum/gear_tweak/path(turtlebaggys))
//half-moon outfit
/datum/gear/uniform/halfmoon
display_name = "half moon outfit"
path = /obj/item/clothing/under/half_moon
//fiend clothes
/datum/gear/uniform/fiendsuit
display_name = "fiendish suit"
path = /obj/item/clothing/under/fiendsuit
/datum/gear/uniform/fienddress
display_name = "fiendish dress"
path = /obj/item/clothing/under/fienddress

View File

@@ -109,3 +109,7 @@
"Khaki cargo shorts" = /obj/item/clothing/under/shorts/cshorts/khaki
)
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cargo_shorts))
/datum/gear/uniform/tacticool
display_name = "Tacticool turtleneck"
path = /obj/item/clothing/under/syndicate/tacticool/loadout

View File

@@ -790,7 +790,7 @@
var/image/standing = ..()
if(taurized) //Special snowflake var on suits
standing.pixel_x = -16
standing.layer = BODY_LAYER + 17 // 17 is above tail layer, so will not be covered by taurbody. TAIL_UPPER_LAYER +1
standing.layer = BODY_LAYER + 18 // 18 is above tail layer, so will not be covered by taurbody. TAIL_UPPER_LAYER +1 //CHOMPEDIT - CHECK human/update_icons.dm BEFORE YOU CHANGE THIS.
return standing
/obj/item/clothing/suit/apply_accessories(var/image/standing)

View File

@@ -108,7 +108,7 @@
/obj/item/clothing/head/collectable/hardhat
name = "collectable hard hat"
desc = "WARNING! Offers no real protection, or luminosity, but it is damn fancy!"
icon_state = "hardhat0_yellow"
icon_state = "hardhat0_old_yellow"
body_parts_covered = 0
/obj/item/clothing/head/collectable/HoS

View File

@@ -80,6 +80,52 @@
icon_state = "helmet_firefighter_ce"
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + 10000
/obj/item/clothing/head/hardhat/old
name = "classic hard hat"
icon_state = "hardhat0_old_yellow"
light_overlay = "hardhat_light_old"
/obj/item/clothing/head/hardhat/orange/old
name = "classic orange hard hat"
icon_state = "hardhat0_old_orange"
light_overlay = "hardhat_light_old"
/obj/item/clothing/head/hardhat/white/old
name = "classic sleek hard hat"
icon_state = "hardhat0_old_white"
light_overlay = "hardhat_light_old"
/obj/item/clothing/head/hardhat/dblue/old
name = "classic blue hard hat"
icon_state = "hardhat0_old_dblue"
light_overlay = "hardhat_light_old"
/obj/item/clothing/head/hardhat/red/old
name = "classic fire helmet"
icon_state = "hardhat0_old_red"
light_overlay = "hardhat_light_old"
/obj/item/clothing/head/hardhat/firefighter/old
name = "classic firefighter helmet"
icon_state = "helmet_firefighter_old"
sprite_sheets = list(
SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi'
)
/obj/item/clothing/head/hardhat/firefighter/atmos/old
name = "classic atmospheric firefighter helmet"
icon_state = "atmos_fire_old"
sprite_sheets = list(
SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi'
)
/obj/item/clothing/head/hardhat/firefighter/chief/old
name = "classic chief firefighter helmet"
icon_state = "helmet_firefighter_ce_old"
sprite_sheets = list(
SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi'
)
/*
* Ranger Hats
*/

View File

@@ -216,3 +216,30 @@
icon = 'icons/inventory/head/item_vr.dmi'
icon_override = 'icons/inventory/head/mob_vr.dmi'
icon_state = "hood_plain"
/obj/item/clothing/head/hood/raincoat
name = "raincoat hood"
desc = "A hood attached to a raincoat."
icon_state = "raincoat"
//hooded cloak hoods
/obj/item/clothing/head/hood/cloak
name = "maroon cloak hood"
desc = "A hood attached to a maroon cloak."
icon_state = "maroon_cloakhood"
flags_inv = HIDEEARS|BLOCKHAIR
/obj/item/clothing/head/hood/cloak/winter
name = "winter cloak hood"
desc = "A hood attached to a winter cloak."
icon_state = "winter_cloakhood"
/obj/item/clothing/head/hood/cloak/asymmetric
name = "asymmetric cloak hood"
desc = "A hood attached to an asymmetric cloak."
icon_state = "royalist_cloakhood"
/obj/item/clothing/head/hood/cloak/fancy
name = "fancy cloak hood"
desc = "A hood attached to a fancy cloak."
icon_state = "hb_cloakhood"

View File

@@ -252,3 +252,8 @@
name = "yellow performer's boots"
desc = "These boots were made for dancing."
icon_state = "ysing"
/obj/item/clothing/shoes/boots/half_moon
name = "half moon boots"
desc = "Flexible and tight, these boots ensure the wearer will be leaving a solid impression without sacrificing mobility."
icon_state = "half_moon"

View File

@@ -282,3 +282,9 @@
footstep++
// CHOMPedit end.
/obj/item/clothing/shoes/ballet
name = "pointe shoes"
desc = "These shoes feature long lace straps and flattened off toes. Great for the most elegant of dances!"
icon_state = "ballet"
item_state = "ballet"

View File

@@ -393,3 +393,41 @@
desc = "For those who REALLY love their toasters."
icon_state = "techpriest"
hoodtype = /obj/item/clothing/head/hood/techpriest
/obj/item/clothing/suit/storage/hooded/raincoat
name = "raincoat"
desc = "A thin, opaque coat meant to protect you from all sorts of rain. Preferred by outdoorsmen and janitors alike across the rift. Of course, the only type of fluids you'd like to protect yourself from around this place don't rain down from the sky. Usually. Comes with a hood!"
icon_state = "raincoat"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
flags_inv = HIDEHOLSTER
hoodtype = /obj/item/clothing/head/hood/raincoat
allowed = list(/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit)
//hooded cloaks
/obj/item/clothing/suit/storage/hooded/cloak
name = "hooded maroon cloak"
desc = "A simple maroon colored cloak."
icon_state = "maroon_cloak"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
hoodtype = /obj/item/clothing/head/hood/cloak
/obj/item/clothing/suit/storage/hooded/cloak/winter
name = "hooded winter cloak"
desc = "A simple wool cloak used during winter."
icon_state = "winter_cloak"
hoodtype = /obj/item/clothing/head/hood/cloak/winter
/obj/item/clothing/suit/storage/hooded/cloak/asymmetric
name = "hooded asymmetric cloak"
desc = "A blue hooded cloak with an asymmetric design."
icon_state = "asymmetric_cloak"
hoodtype = /obj/item/clothing/head/hood/cloak/asymmetric
/obj/item/clothing/suit/storage/hooded/cloak/fancy
name = "hooded fancy cloak"
desc = "A fancy black hooded cloak."
icon_state = "hb_cloak"
hoodtype = /obj/item/clothing/head/hood/cloak/fancy

View File

@@ -321,6 +321,12 @@
body_parts_covered = UPPER_TORSO|ARMS
flags_inv = HIDETIE|HIDEHOLSTER
//nerdy shirt
/obj/item/clothing/suit/nerdshirt
name = "nerdy shirt"
desc = "A comfy white t-shirt with a picture of a cartoon hedgehog on it. Although clean, it still seems like the wearer should be embarrassed for owning it."
icon_state = "nerdshirt"
/*
* Kimonos
*/
@@ -1050,3 +1056,45 @@
body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat")
//Cropped hoodies
/obj/item/clothing/suit/storage/croppedhoodie
name = "cropped hoodie"
desc = "This style of hoodie is sometimes worn by those who cannot fit, or choose not to hide their delectable bellies under the full, soft confines of a hoodie. The hood is cosmetic, and non-functional."
icon_state = "croppedhoodie"
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/croppedhoodie/croppier
name = "high cropped hoodie"
desc = "This style of hoodie is worn by those that wish to display ample amounts of midriff, or never threw out their childhood apparel. The hood is cosmetic, and non-functional."
icon_state = "croppierhoodie"
/obj/item/clothing/suit/storage/croppedhoodie/croppierer
name = "very high cropped hoodie"
desc = "This style of hoodie is worn by those that wish to display ample amounts of underboob, and love the breeze. Comes with a free 'functionally_nude' sticker. The hood is cosmetic, and non-functional."
icon_state = "highcrophoodie"
/obj/item/clothing/suit/storage/croppedhoodie/croppiest
name = "super cropped hoodie"
desc = "This style of hoodie is worn by those that have little respect for the concept of a hoodie. Often seen in nightclubs and your daughter's wardrdobe. The hood is cosmetic, and non-functional."
icon_state = "supercroppedhoodie"
//Drive jacket
/obj/item/clothing/suit/storage/drive
name = "relatable jacket"
desc = "An all white jacket with a shine. It seems easy to identify with the wearer."
icon_state = "drivejacket"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
/obj/item/clothing/suit/storage/toggle/moto_jacket
name = "motorcycle jacket"
desc = "A recreation of one of the famous Sol-based biwheeled driver assemblies. Patches on the back denote an AI-generated 'biker logo'. It looks unintelligible."
icon_state = "motojacket"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask) //same as leather jackets
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/punkvest
name = "punk vest"
desc = "For the spiritual rebels that nevertheless wish to conform to standard goth trends. You're totally showing them your anti-authority spunk."
icon_state = "punkvest"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO

View File

@@ -1076,6 +1076,21 @@
desc = "A rather skimpy cow patterned swimsuit."
icon_state = "swim_cow"
/obj/item/clothing/under/swimsuit/highclass
name = "high class swimsuit"
desc = "An elegant swimsuit with a white bikini top and black bikini bottom. Thin black silk drapes down the back and goes to the upper thighs, and authentic gold rings hold the top together at the bust and back."
icon_state = "swim_highclass"
/obj/item/clothing/under/swimsuit/risque
name = "risque swimsuit"
desc = "This fits a bit too snug in all the right places. Comes with a collar, for inscrutable reasons."
icon_state = "swim_risque"
/obj/item/clothing/under/swimsuit/streamlined
name = "streamlined swimsuit"
desc = "An all white one-piece that maintains modesty without sacrificing class."
icon_state = "swim_stream"
/obj/item/clothing/under/wetsuit
name = "wetsuit"
desc = "For when you need to scuba dive your way into an enemy base."
@@ -1524,3 +1539,132 @@
name = "green crop-top christmas suit"
desc = "A simple green christmas suit that doesn't quite looks like Mrs Claus'. Smells minty!"
icon_state = "christmascroppedgreen"
//leotards
/obj/item/clothing/under/leotard
name = "black leotard"
desc = "A black leotard with a piece of semi-transparent cloth near the bust. Perfect for showing off cleavage. Bunny ears not included."
icon_state = "leotard"
/obj/item/clothing/under/leotardcolor
name = "colored leotard"
desc = "A colorable leotard with a piece of semi-transparent cloth near the bust. Perfect for showing off cleavage. Bunny ears not included."
icon_state = "leotard_color"
//skinsuits
/obj/item/clothing/under/skinsuit
name = "skinsuit"
desc = "Similar to other form-fitting latex bodysuits in design and function, skinsuits typically feature integrated hardpoints around common wear areas."
icon_state = "skinsuit"
/obj/item/clothing/under/skinsuit/gray
name = "gray skinsuit"
icon_state = "skinsuit_g"
/obj/item/clothing/under/skinsuit/leotard
name = "leotard skinsuit"
desc = "The skinsuit's leotard variant has long since eclipsed its initial function as a breathable undersuit for submersible hardsuits. Although still utilized in this role, it has become rather fashionable to wear outside of deep water operations."
icon_state = "skinsuitleo"
/obj/item/clothing/under/skinsuit/leotard/gray
name = "gray leotard skinsuit"
icon_state = "skinsuitleo_g"
/obj/item/clothing/under/skinsuit/fem
name = "feminine skinsuit"
desc = "Similar to other form-fitting latex bodysuits in design and function, skinsuits typically feature integrated hardpoints around common wear areas."
icon_state = "skinsuitfem"
/obj/item/clothing/under/skinsuit/fem/gray
name = "feminine gray skinsuit"
icon_state = "skinsuitfem_g"
/obj/item/clothing/under/skinsuit/fem/leotard
name = "feminine leotard skinsuit"
desc = "The skinsuit's leotard variant has long since eclipsed its initial function as a breathable undersuit for submersible hardsuits. Although still utilized in this role, it has become rather fashionable to wear outside of deep water operations."
icon_state = "skinsuitfemleo"
/obj/item/clothing/under/skinsuit/fem/leotard/gray
name = "feminine gray leotard skinsuit"
icon_state = "skinsuitfemleo_g"
//baggy turtlenecks
/obj/item/clothing/under/turtlebaggy
name = "cream baggy turtleneck (cream)"
desc = "A cozy knit turtleneck. It's too baggy and comfortable to be tactical."
icon_state = "bb_turtle"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
/obj/item/clothing/under/turtlebaggy/cream_fem
name = "feminine cream baggy turtleneck"
icon_state = "bb_turtle_fem"
/obj/item/clothing/under/turtlebaggy/purple
name = "purple baggy turtleneck"
icon_state = "bb_turtlepur"
/obj/item/clothing/under/turtlebaggy/purple_fem
name = "feminine purple baggy turtleneck"
icon_state = "bb_turtlepur_fem"
/obj/item/clothing/under/turtlebaggy/red
name = "red baggy turtleneck"
icon_state = "bb_turtlered"
/obj/item/clothing/under/turtlebaggy/red_fem
name = "feminine red baggy turtleneck"
icon_state = "bb_turtlered_fem"
/obj/item/clothing/under/turtlebaggy/blue
name = "blue baggy turtleneck"
icon_state = "bb_turtleblu"
/obj/item/clothing/under/turtlebaggy/blue_fem
name = "feminine blue baggy turtleneck"
icon_state = "bb_turtleblu_fem"
/obj/item/clothing/under/turtlebaggy/green
name = "green baggy turtleneck"
icon_state = "bb_turtlegrn"
/obj/item/clothing/under/turtlebaggy/green_fem
name = "feminine green baggy turtleneck"
icon_state = "bb_turtlegrn_fem"
/obj/item/clothing/under/turtlebaggy/black
name = "black baggy turtleneck"
icon_state = "bb_turtleblk"
/obj/item/clothing/under/turtlebaggy/black_fem
name = "feminine black baggy turtleneck"
icon_state = "bb_turtleblk_fem"
//half-moon outfit
/obj/item/clothing/under/half_moon
name = "half moon outfit"
desc = "This eminently fashionable outfit consists of a tailored latex leotard and daringly cut white shorts. Paired with plunging off-color stockings, it's to die for."
icon_state = "half_moon"
//fiend clothes
/obj/item/clothing/under/fiendsuit
name = "fiendish suit"
desc = "A red and black suit befitting someone from the dark pits themselves… Or someone way too edgy."
icon_state = "fiendsuit"
/obj/item/clothing/under/fienddress
name = "fiendish dress"
desc = "A red and black dress befitting someone from the dark pits themselves… Or someone way too edgy."
icon_state = "fienddress"

View File

@@ -0,0 +1,3 @@
/obj/item/clothing/under/syndicate/tacticool/loadout //loadout tacticool option. No armor, but has sensors
has_sensor = 1
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)

View File

@@ -275,14 +275,21 @@
desc = "Fueled by your inner inadequacy!"
description_fluff = "Provided by NanoMed, SweatMAX promises solutions to all of your problems. Premium gains at premium prices. Resale of SweatMAX products is a violation of NanoTrasen guidelines."
icon_state = "fitness"
//VOREStation Edit Start
products = list(/obj/item/weapon/reagent_containers/food/drinks/smallmilk = 16,
/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk = 16,
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 10,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake = 8,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask = 8,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder = 16,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/vanilla = 16,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/banana = 16,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/chocolate = 16,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/strawberry = 16,
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 16,
/obj/item/weapon/reagent_containers/food/snacks/fruitbar = 16,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood = 8,
/obj/item/weapon/reagent_containers/food/snacks/liquidvitamin = 8,
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 8,
/obj/item/weapon/reagent_containers/pill/diet = 8,
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5, //VOREStation Removal, //CHOMPedit nah
/obj/item/weapon/towel/random = 8,
@@ -290,18 +297,27 @@
prices = list(/obj/item/weapon/reagent_containers/food/drinks/smallmilk = 3,
/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk = 3,
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 2,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake = 15,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask = 1,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder = 5,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/vanilla = 5,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/banana = 5,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/chocolate = 5,
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/strawberry = 5,
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 5,
/obj/item/weapon/reagent_containers/food/snacks/fruitbar = 5,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood = 5,
/obj/item/weapon/reagent_containers/food/snacks/liquidvitamin = 5,
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 5,
/obj/item/weapon/reagent_containers/pill/diet = 25,
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5, //CHOMPedit nah
/obj/item/weapon/towel/random = 20,
/obj/item/toy/tennis = 15)
//VOREStation Edit End
contraband = list(/obj/item/weapon/reagent_containers/syringe/steroid = 4, /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteanshake = 2, /obj/item/toy/baseball = 2) // VOREStation Add - Slurpable blobs.
contraband = list(/obj/item/weapon/reagent_containers/syringe/steroid = 4,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteanshake = 2,
/obj/item/toy/baseball = 2) // VOREStation Add - Slurpable blobs.
/obj/machinery/vending/cart
name = "PTech"

View File

@@ -239,11 +239,6 @@
// Food Machines (for event/away maps)
/obj/machinery/vending/fitness/New()
products += list(/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 8)
prices += list(/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 5)
..()
/obj/machinery/vending/blood
name = "Blood-Onator"
desc = "Freezer-vendor for storage and quick dispensing of blood packs"
@@ -951,6 +946,9 @@
/obj/item/weapon/storage/box/fluff/swimsuit/security = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/medical = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/highclass = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/risque = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/streamlined = 5,
/obj/item/clothing/under/utility = 5,
/obj/item/clothing/under/utility/grey = 5,
/obj/item/clothing/under/utility/blue = 5,
@@ -1126,6 +1124,9 @@
/obj/item/weapon/storage/box/fluff/swimsuit/security = 50,
/obj/item/weapon/storage/box/fluff/swimsuit/medical = 50,
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 50,
/obj/item/weapon/storage/box/fluff/swimsuit/highclass = 50,
/obj/item/weapon/storage/box/fluff/swimsuit/risque = 50,
/obj/item/weapon/storage/box/fluff/swimsuit/streamlined = 50,
/obj/item/clothing/under/utility = 50,
/obj/item/clothing/under/utility/grey = 50,
/obj/item/clothing/under/utility/blue = 50,
@@ -2195,6 +2196,9 @@
/obj/item/weapon/storage/box/fluff/swimsuit/security = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/medical = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/highclass = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/risque = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/streamlined = 5,
/obj/item/clothing/under/utility = 5,
/obj/item/clothing/under/utility/grey = 5,
/obj/item/clothing/under/utility/blue = 5,

View File

@@ -51,7 +51,7 @@
endWhen = worst_case_end()
/datum/event/meteor_wave/proc/get_wave_size()
return severity * rand(2, 3)
return severity * rand(2,4) //CHOMP Edit: Increase maximum multipler from 3 to 4.
/datum/event/meteor_wave/proc/worst_case_end()
return activeFor + ((30 / severity) * waves) + 10

View File

@@ -11,7 +11,7 @@
kill()
return
announceWhen = rand(announceWhen, announceWhen + 60)
spawncount = rand(6 * severity, 14 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: old: 2/4 new: 6/14
spawncount = rand(4 * severity, 10 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: old: 2/4 new: 6/14 new: 4/10
sent_spiders_to_station = 0
/datum/event/spider_infestation/announce()
@@ -33,6 +33,13 @@
while((spawncount >= 1) && vents.len)
var/obj/vent = pick(vents)
new /obj/effect/spider/spiderling(vent.loc) //VOREStation Edit - No nurses //Oh my JESUS CHRIST, this slipped past me. Literally no nurses. Well guess what, nurses are back.
//CHOMPEDIT START adding spider EGGS to the possible spawns instead of singular spiderling spawns.
var/spawn_spiderlings = pickweight(list(
/obj/effect/spider/spiderling = 85,
/obj/effect/spider/eggcluster = 10,
/obj/effect/spider/eggcluster/royal = 5
))
new spawn_spiderlings(vent.loc) //VOREStation Edit - No nurses //Oh my JESUS CHRIST, this slipped past me. Literally no nurses. Well guess what, nurses are back.
//CHOMPEDIT END
vents -= vent
spawncount--

View File

@@ -17,10 +17,10 @@
return
else // They're outside and hopefully on a planet.
var/datum/planet/P = SSplanets.z_to_planet[T.z]
if(!P)
if(!(T.z in SSplanets.z_to_planet) || !(SSplanets.z_to_planet[T.z]))
to_chat(usr, span("warning", "You appear to be outside, but not on a planet... Something is wrong."))
return
var/datum/planet/P = SSplanets.z_to_planet[T.z]
var/datum/weather_holder/WH = P.weather_holder

View File

@@ -6,11 +6,12 @@
base_icon = "fitness-cup"
volume = 100
matter = list(MAT_PLASTIC = 2000)
filling_states = list(10,20,30,40,50,60,70,80,90,100)
filling_states = list(10,20,30,40,50,60,70,80)
possible_transfer_amounts = list(5, 10, 15, 25)
rim_pos = null // no fruit slices
var/lid_color = "black"
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/Initialize()
. = ..()
lid_color = pick("black", "red", "blue")
@@ -19,19 +20,22 @@
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/update_icon()
..()
icon_state = "[base_icon]_[lid_color]"
cut_overlays()
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake
name = "protein shake"
icon = 'icons/obj/drinks.dmi'
icon_state = "protein_shake"
base_icon = "protein_shake"
desc = "NanoTrasen brand pre-done pre-workout mix. Also perfect for an empty stomach."
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/Initialize()
. = ..()
cut_overlays()
reagents.add_reagent("nutriment", 30)
reagents.add_reagent("iron", 10)
reagents.add_reagent("protein", 35)
reagents.add_reagent("water", 25)
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/update_icon()
..()
// And now set half the stuff back because our name shouldn't change
name = initial(name)
desc = initial(desc)
return

View File

@@ -1,13 +1,15 @@
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteanshake
name = "protean shake"
icon = 'icons/obj/drinks.dmi'
icon_state = "protean_shake"
base_icon = "protean_shake"
desc = "A strangely unlabeled, unbranded pre-workout drink carton."
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteanshake/Initialize()
. = ..()
cut_overlays()
reagents.add_reagent("liquid_protean", 50)
reagents.add_reagent("nutriment", 50)
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteanshake/update_icon()
..()
// And now set half the stuff back because our name shouldn't change
name = initial(name)
desc = initial(desc)
return

View File

@@ -526,3 +526,48 @@
/obj/item/weapon/reagent_containers/food/condiment/spacespice/Initialize()
. = ..()
reagents.add_reagent("spacespice", 40)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder
name = "protein powder packet"
desc = "Contains 5u of regular protein powder. Mix with 25u of water and enjoy."
icon_state = "protein_powder1"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/Initialize()
. = ..()
reagents.add_reagent("protein_powder", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/vanilla
name = "vanilla protein powder packet"
desc = "Contains 5u of vanilla flavored protein powder. Mix with 25u of water and enjoy."
icon_state = "protein_powder2"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/vanilla/Initialize()
. = ..()
reagents.add_reagent("vanilla_protein_powder", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/banana
name = "banana protein powder packet"
desc = "Contains 5u of banana flavored protein powder. Mix with 25u of water and enjoy."
icon_state = "protein_powder3"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/banana/Initialize()
. = ..()
reagents.add_reagent("banana_protein_powder", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/chocolate
name = "chocolate protein powder packet"
desc = "Contains 5u of chocolate flavored protein powder. Mix with 25u of water and enjoy."
icon_state = "protein_powder4"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/chocolate/Initialize()
. = ..()
reagents.add_reagent("chocolate_protein_powder", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/strawberry
name = "strawberry protein powder packet"
desc = "Contains 5u of strawberry flavored protein powder. Mix with 25u of water and enjoy."
icon_state = "protein_powder5"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein_powder/strawberry/Initialize()
. = ..()
reagents.add_reagent("strawberry_protein_powder", 5)

View File

@@ -4784,8 +4784,8 @@
var/composition_reagent
var/composition_reagent_quantity
/mob/living/simple_mob/adultslime
composition_reagent = "slimejelly"
///mob/living/simple_mob/adultslime //The literal only thing in the game that uses this is commented out, so I comment out this too
// composition_reagent = "slimejelly"
/mob/living/carbon/alien/diona
composition_reagent = "nutriment"//Dionae are plants, so eating them doesn't give animal protein

View File

@@ -5,6 +5,9 @@
icon_state = "fakesun"
invisibility = INVISIBILITY_ABSTRACT
var/atom/movable/sun_visuals/sun
var/family = null //Allows multipe maps that are THEORETICALLY connected to use the same settings when not in a connected Z stack
var/shared_settings //Automatically set if using the family var
var/static/world_suns = list() //List of all the fake_suns in the world, used for checking for family members
var/list/possible_light_setups = list(
list(
@@ -78,13 +81,26 @@
)
/obj/effect/fake_sun/New(loc, ...)
. = ..()
world_suns += src
/obj/effect/fake_sun/Initialize()
..()
return INITIALIZE_HINT_LATELOAD
/obj/effect/fake_sun/LateInitialize()
. = ..()
var/list/choice = pick(possible_light_setups)
var/list/choice
if(family) //Allows one to make multiple fake_suns to use the same settings
for(var/obj/effect/fake_sun/l in world_suns) //check all the suns that exist
if(l.family == family && l.shared_settings) //do you have settings we need?
choice = l.shared_settings
break
if(!choice) //We didn't get anything from our family, let's pick something
choice = pick(possible_light_setups)
if(family) //Let's pass our settings on to our family
shared_settings = choice
if(choice["brightness"] <= LIGHTING_SOFT_THRESHOLD) // dark!
return

View File

@@ -54,10 +54,10 @@
EQUIPMENT("Defense Equipment - Plasteel Machete", /obj/item/weapon/material/knife/machete, 50),
EQUIPMENT("Defense Equipment - Razor Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/manhacks/station/locked, 100),
EQUIPMENT("Defense Equipment - Sentry Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/ward, 150),
EQUIPMENT("Defense Equipment - Marksman Frontier Phaser", /obj/item/weapon/gun/energy/locked/frontier/rifle, 1500), //CHOMPADD
EQUIPMENT("Defense Equipment - Frontier Carbine", /obj/item/weapon/gun/energy/locked/frontier/carbine, 1500), //CHOMPEDIT
EQUIPMENT("Defense Equipment - Frontier Phaser", /obj/item/weapon/gun/energy/locked/frontier, 1200), //CHOMPADD
EQUIPMENT("Defense Equipment - Holdout Frontier Phaser", /obj/item/weapon/gun/energy/locked/frontier/holdout, 700), //CHOMPADD
EQUIPMENT("Defense Equipment - Marksman Frontier Phaser", /obj/item/weapon/gun/energy/locked/frontier/rifle, 800), //CHOMPADD
EQUIPMENT("Defense Equipment - Frontier Carbine", /obj/item/weapon/gun/energy/locked/frontier/carbine, 800), //CHOMPEDIT
EQUIPMENT("Defense Equipment - Frontier Phaser", /obj/item/weapon/gun/energy/locked/frontier, 600), //CHOMPADD
EQUIPMENT("Defense Equipment - Holdout Frontier Phaser", /obj/item/weapon/gun/energy/locked/frontier/holdout, 300), //CHOMPADD
EQUIPMENT("Hybrid Equipment - Proto-Kinetic Dagger", /obj/item/weapon/kinetic_crusher/machete/dagger, 75),
EQUIPMENT("Hybrid Equipment - Proto-Kinetic Machete", /obj/item/weapon/kinetic_crusher/machete, 250),
EQUIPMENT("Fishing Net", /obj/item/weapon/material/fishing_net, 50),

View File

@@ -197,7 +197,7 @@
icon_state = "medibot[on]"
/mob/living/bot/medbot/attack_hand(mob/living/carbon/human/H)
if(H.a_intent == I_DISARM && !is_tipped)
if(istype(H) && H.a_intent == I_DISARM && !is_tipped)
H.visible_message("<span class='danger'>[H] begins tipping over [src].</span>", "<span class='warning'>You begin tipping over [src]...</span>")
if(world.time > last_tipping_action_voice + 15 SECONDS)
@@ -210,7 +210,7 @@
if(do_after(H, 3 SECONDS, target=src))
tip_over(H)
else if(H.a_intent == I_HELP && is_tipped)
else if(istype(H) && H.a_intent == I_HELP && is_tipped)
H.visible_message("<span class='notice'>[H] begins righting [src].</span>", "<span class='notice'>You begin righting [src]...</span>")
if(do_after(H, 3 SECONDS, target=src))
set_right(H)

View File

@@ -10,5 +10,7 @@ GLOBAL_LIST_INIT(hair_gradients, list(
"Reflected (Inverted)" = "reflected_inverse",
"Reflected High" = "reflected_high",
"Reflected High (Inverted)" = "reflected_inverse_high",
"Wavy" = "wavy"
"Wavy" = "wavy",
"Striped" = "striped",
"Striped (Vertical)" = "striped_vertical"
))

View File

@@ -84,6 +84,10 @@ GLOBAL_LIST_BOILERPLATE(all_darkportal_hubs, /obj/structure/dark_portal/hub)
locked = src
locked_name = src.name
/obj/structure/dark_portal/hub/New()
..()
set_light(2, 3, "#ffffff")
/obj/structure/dark_portal/hub/close_portal()
locked = src
locked_name = src.name

View File

@@ -261,6 +261,7 @@
a climbable wall. To climbe like so, use the verb 'Climb Down Wall' in IC tab!"
cost = 0
custom_only = FALSE
var_changes = list("can_climb" = TRUE)
allowed_species = list(SPECIES_XENOCHIMERA, SPECIES_CUSTOM) //So that we avoid needless bloat for xenochim
excludes = list(/datum/trait/positive/wall_climber_pro, /datum/trait/positive/wall_climber)

View File

@@ -1040,6 +1040,8 @@
var/desired_scale_y = size_multiplier * icon_scale_y //VOREStation edit
// Now for the regular stuff.
if(offset_override) //CHOMPEdit
center_offset = 0 //CHOMPEdit
var/matrix/M = matrix()
M.Scale(desired_scale_x, desired_scale_y)
M.Translate(center_offset * desired_scale_x, (vis_height/2)*(desired_scale_y-1)) //CHOMPEdit

View File

@@ -36,6 +36,10 @@
"Parrot" = "pai-parrot",
"Rabbit" = "pai-rabbit",
//VOREStation Addition Start
"Dire wolf" = "pai-diredog",
"Horse (Lune)" = "pai-horse_lune",
"Horse (Soleil)" = "pai-horse_soleil",
"Dragon" = "pai-pdragon",
"Bear" = "pai-bear",
"Fennec" = "pai-fen",
"Type Zero" = "pai-typezero",

View File

@@ -47,7 +47,11 @@
"car",
"typeone",
"13",
"pai-raptor"
"pai-raptor",
"pai-diredog",
"pai-horse_lune",
"pai-horse_soleil",
"pai-pdragon"
)
//These vars keep track of whether you have the related software, used for easily updating the UI
var/soft_ut = FALSE //universal translator

View File

@@ -22,7 +22,7 @@
/obj/item/weapon/circuitboard,
/obj/item/weapon/smes_coil,
/obj/item/weapon/fuel_assembly,
/obj/item/weapon/ore/bluespace_crystal
/obj/item/weapon/bluespace_crystal //Chomp EDIT
) // CHOMPEdit - Buffing the gripper to allow bluespace crystal use for telesci building.
var/obj/item/wrapped = null // Item currently being held.

View File

@@ -104,7 +104,7 @@
value = CATALOGUER_REWARD_TRIVIAL //Worth less points since it lives on the ship
/mob/living/simple_mob/otie/red/chubby/cocoa
/mob/living/simple_mob/vore/otie/red/chubby/cocoa
name = "Cocoa"
desc = "A good boi, eats the scraps when you're not looking."
devourable = 0

View File

@@ -5,7 +5,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
name = "chicken"
desc = "Hopefully the eggs are good this season."
tt_desc = "E Gallus gallus"
icon_state = "chicken"
icon_state = "chicken_white"
icon_living = "chicken"
icon_dead = "chicken_dead"

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/otie/zorgoia //Yes im basing the goias on oties for now, sue me....please dont sue me - Jack
/mob/living/simple_mob/vore/otie/zorgoia //Yes im basing the goias on oties for now, sue me....please dont sue me - Jack
name = "zorgoia"
desc = "It's a a reptilian mammal hybrid, known for its voracious nature and love for fruits. By more popular terms its refered to as the furry slinky!"
tt_desc = "Zorgoyuh slinkus"
@@ -33,7 +33,7 @@
pain_emote_1p = list("yelp", "whine", "bark", "growl")
pain_emote_3p = list("yelps", "whines", "barks", "growls")
/mob/living/simple_mob/otie/zorgoia/New()
/mob/living/simple_mob/vore/otie/zorgoia/New()
..()
switch(rand(9))
if(0)
@@ -57,7 +57,7 @@
if(9)
color = "#393939"
/mob/living/simple_mob/otie/zorgoia/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
/mob/living/simple_mob/vore/otie/zorgoia/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
name = "agressive zorgoia"
desc = "It's a a reptilian mammal hybrid, known for its voracious nature and love for fruits. By more popular terms its refered to as the furry slinky! This one seems quite hungry and in a bad mood!"
faction = "virgo3b"
@@ -71,7 +71,7 @@
min_n2 = 0
max_n2 = 0
/mob/living/simple_mob/otie/zorgoia/friendly //gets the pet2tame feature and doesn't kill you right away
/mob/living/simple_mob/vore/otie/zorgoia/friendly //gets the pet2tame feature and doesn't kill you right away
name = "friendly zorgoia"
desc = "It's a a reptilian mammal hybrid, known for its voracious nature and love for fruits. By more popular terms its refered to as the furry slinky! This one seems harmless and friendly!"
faction = "neutral"

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/animal/space/jelly
/mob/living/simple_mob/vore/jelly
name = "jelly blob"
desc = "Some sort of undulating blob of slime!"
@@ -19,8 +19,17 @@
can_be_drop_prey = FALSE //CHOMP Add
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
// Activate Noms!
/mob/living/simple_mob/animal/space/jelly
vore_active = 1
vore_pounce_chance = 0
vore_icons = SA_ICON_LIVING

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/mobs_monsters/clowns/big
/mob/living/simple_mob/clowns/big
tt_desc = "E Homo sapiens corydon horrificus" //this clown is stronk
faction = "clown"
@@ -18,8 +18,6 @@
loot_list = list(/obj/item/weapon/bikehorn = 100)
/mob/living/simple_mob/mobs_monsters/clowns/big
min_oxy = 0
max_oxy = 500
min_tox = 0

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/mobs_monsters/clowns/
/mob/living/simple_mob/clowns/
tt_desc = "E Homo sapiens corydon" //this is a clown
faction = "clown"
movement_sound = 'sound/effects/clownstep2.ogg'

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/mobs_monsters/clowns/big/normal
/mob/living/simple_mob/clowns/big/normal
name = "Clown"
desc = "A regular, every tuesday Clown."
tt_desc = "E Homo sapiens corydon" //this is a clown
@@ -10,7 +10,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/honkmunculus
/mob/living/simple_mob/clowns/big/honkmunculus
name = "A Clown?"
desc = "That clown has some interesting proportions."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -28,7 +28,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/cluwne
/mob/living/simple_mob/clowns/big/cluwne
name = "A Clown?"
desc = "Oh no not that thing."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -40,7 +40,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/tunnelclown
/mob/living/simple_mob/clowns/big/tunnelclown
name = "A Clown?"
desc = "Have you heard about our lord and savior, Honkus Chrust?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -52,7 +52,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/sentinel
/mob/living/simple_mob/clowns/big/sentinel
name = "A Clown?"
desc = "This guy means business..."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -64,7 +64,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/punished
/mob/living/simple_mob/clowns/big/punished
name = "A Clown?"
desc = "A clown at peak performance."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -82,7 +82,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/thicc
/mob/living/simple_mob/clowns/big/thicc
name = "A Clown..."
desc = "I mean, you see it don't you?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -100,7 +100,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/perm
/mob/living/simple_mob/clowns/big/perm
name = "A Clown?"
desc = "That clown really needs to get that hair under control."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -118,7 +118,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/wide
/mob/living/simple_mob/clowns/big/wide
name = "A Clown?"
desc = "He looks good from some angles!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -136,7 +136,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/thin
/mob/living/simple_mob/clowns/big/thin
name = "A Clown?"
desc = "Is he eating enough?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -148,7 +148,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/hulk
/mob/living/simple_mob/clowns/big/hulk
name = "A Clown?"
desc = "Just look at those muscles."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -168,7 +168,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/longface
/mob/living/simple_mob/clowns/big/longface
name = "A Clown?"
desc = "Why the long face?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -186,7 +186,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/giggles
/mob/living/simple_mob/clowns/big/giggles
name = "A Giggles?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -198,7 +198,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/destroyer
/mob/living/simple_mob/clowns/big/destroyer
name = "A Clown?"
desc = "That clown looks like he means business."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -239,7 +239,7 @@
)
/mob/living/simple_mob/mobs_monsters/clowns/big/chlown
/mob/living/simple_mob/clowns/big/chlown
name = "A Clown?"
desc = "No."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -257,7 +257,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/scary
/mob/living/simple_mob/clowns/big/scary
name = "A Clown?"
desc = "Hey that clown looks familiar!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -269,7 +269,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/flesh
/mob/living/simple_mob/clowns/big/flesh
name = "A Clown?"
desc = "WOOOOO STREAKING WOOOO!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -281,7 +281,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/clowns
/mob/living/simple_mob/clowns/big/clowns
name = "Definitely a singular clown"
desc = "Is it one clown, or many clowns in not a trenchcoat?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -299,7 +299,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/mutant
/mob/living/simple_mob/clowns/big/mutant
name = "A Clown?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -317,7 +317,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/blob
/mob/living/simple_mob/clowns/big/blob
name = "A Clown?"
desc = "Go to a gym fatty!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -335,7 +335,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/mayor
/mob/living/simple_mob/clowns/big/mayor
name = "A clown?"
desc = "One speaks in riddles..."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -353,7 +353,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/honkling
/mob/living/simple_mob/clowns/big/honkling
name = "A Clown?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -367,7 +367,7 @@
//template
///mob/living/simple_mob/mobs_monsters/clowns/big/
///mob/living/simple_mob/clowns/big/
// name = "A Clown?"
// desc = "Oh sweet space christ."
// tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown

View File

@@ -1,7 +1,7 @@
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift
/mob/living/simple_mob/clowns/big/c_shift
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
faction = "clown"
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/New()
/mob/living/simple_mob/clowns/big/c_shift/New()
..()
verbs += /mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/proc/phase_shift
verbs += /mob/living/simple_mob/clowns/big/c_shift/proc/phase_shift

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/anormal
/mob/living/simple_mob/clowns/big/c_shift/anormal
name = "Clown"
desc = "A regular, every tuesday Clown."
tt_desc = "E Homo sapiens corydon" //this is a clown
@@ -10,7 +10,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/honkmunculus
/mob/living/simple_mob/clowns/big/c_shift/honkmunculus
name = "A Clown?"
desc = "That clown has some interesting proportions."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -28,7 +28,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/cluwne
/mob/living/simple_mob/clowns/big/c_shift/cluwne
name = "A Clown?"
desc = "Oh no not that thing."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -40,7 +40,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/tunnelclown
/mob/living/simple_mob/clowns/big/c_shift/tunnelclown
name = "A Clown?"
desc = "Have you heard about our lord and savior, Honkus Chrust?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -52,7 +52,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/sentinel
/mob/living/simple_mob/clowns/big/c_shift/sentinel
name = "A Clown?"
desc = "This guy means business..."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -64,7 +64,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/punished
/mob/living/simple_mob/clowns/big/c_shift/punished
name = "A Clown?"
desc = "A clown at peak performance."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -82,7 +82,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/thicc
/mob/living/simple_mob/clowns/big/c_shift/thicc
name = "A Clown..."
desc = "I mean, you see it don't you?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -100,7 +100,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/perm
/mob/living/simple_mob/clowns/big/c_shift/perm
name = "A Clown?"
desc = "That clown really needs to get that hair under control."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -118,7 +118,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/wide
/mob/living/simple_mob/clowns/big/c_shift/wide
name = "A Clown?"
desc = "He looks good from some angles!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -136,7 +136,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/thin
/mob/living/simple_mob/clowns/big/c_shift/thin
name = "A Clown?"
desc = "Is he eating enough?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -148,7 +148,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/hulk
/mob/living/simple_mob/clowns/big/c_shift/hulk
name = "A Clown?"
desc = "Just look at those muscles."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -168,7 +168,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/longface
/mob/living/simple_mob/clowns/big/c_shift/longface
name = "A Clown?"
desc = "Why the long face?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -186,7 +186,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/giggles
/mob/living/simple_mob/clowns/big/c_shift/giggles
name = "A Giggles?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -198,7 +198,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/destroyer
/mob/living/simple_mob/clowns/big/c_shift/destroyer
name = "A Clown?"
desc = "That clown looks like he means business."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -239,7 +239,7 @@
)
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/chlown
/mob/living/simple_mob/clowns/big/c_shift/chlown
name = "A Clown?"
desc = "No."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -257,7 +257,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/scary
/mob/living/simple_mob/clowns/big/c_shift/scary
name = "A Clown?"
desc = "Hey that clown looks familiar!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -269,7 +269,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/flesh
/mob/living/simple_mob/clowns/big/c_shift/flesh
name = "A Clown?"
desc = "WOOOOO STREAKING WOOOO!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -281,7 +281,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/clowns
/mob/living/simple_mob/clowns/big/c_shift/clowns
name = "Definitely a singular clown"
desc = "Is it one clown, or many clowns in not a trenchcoat?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -299,7 +299,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/mutant
/mob/living/simple_mob/clowns/big/c_shift/mutant
name = "A Clown?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -317,7 +317,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/blob
/mob/living/simple_mob/clowns/big/c_shift/blob
name = "A Clown?"
desc = "Go to a gym fatty!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -335,7 +335,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/mayor
/mob/living/simple_mob/clowns/big/c_shift/mayor
name = "A clown?"
desc = "One speaks in riddles..."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -353,7 +353,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/honkling
/mob/living/simple_mob/clowns/big/c_shift/honkling
name = "A Clown?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown

View File

@@ -1,8 +1,8 @@
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift
/mob/living/simple_mob/clowns/big/c_shift
var/ability_flags = 0 //Flags for active abilities
// Phase shifting procs (and related procs)
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/proc/phase_shift()
/mob/living/simple_mob/clowns/big/c_shift/proc/phase_shift()
var/turf/T = get_turf(src)
if(!T.CanPass(src,T) || loc != T)
to_chat(src,"<span class='warning'>You can't use that here!</span>")
@@ -73,19 +73,19 @@
density = FALSE
force_max_speed = TRUE
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/UnarmedAttack()
/mob/living/simple_mob/clowns/big/c_shift/UnarmedAttack()
if(ability_flags & AB_PHASE_SHIFTED)
return FALSE //Nope.
. = ..()
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/can_fall()
/mob/living/simple_mob/clowns/big/c_shift/can_fall()
if(ability_flags & AB_PHASE_SHIFTED)
return FALSE //Nope!
return ..()
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/zMove(direction)
/mob/living/simple_mob/clowns/big/c_shift/zMove(direction)
if(ability_flags & AB_PHASE_SHIFTED)
var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src)
if(destination)

View File

@@ -17,7 +17,7 @@
/obj/structure/ghost_pod/manual/clegg/create_occupant(var/mob/M)
lightning_strike(get_turf(src), cosmetic = TRUE)
var/list/choices = list(/mob/living/simple_mob/mobs_monsters/clowns/normal, /mob/living/simple_mob/mobs_monsters/clowns/honkling, /mob/living/simple_mob/mobs_monsters/clowns/mayor, /mob/living/simple_mob/mobs_monsters/clowns/blob, /mob/living/simple_mob/mobs_monsters/clowns/mutant, /mob/living/simple_mob/mobs_monsters/clowns/clowns, /mob/living/simple_mob/mobs_monsters/clowns/flesh, /mob/living/simple_mob/mobs_monsters/clowns/scary, /mob/living/simple_mob/mobs_monsters/clowns/chlown, /mob/living/simple_mob/mobs_monsters/clowns/destroyer, /mob/living/simple_mob/mobs_monsters/clowns/giggles, /mob/living/simple_mob/mobs_monsters/clowns/longface, /mob/living/simple_mob/mobs_monsters/clowns/hulk, /mob/living/simple_mob/mobs_monsters/clowns/thin, /mob/living/simple_mob/mobs_monsters/clowns/wide, /mob/living/simple_mob/mobs_monsters/clowns/perm, /mob/living/simple_mob/mobs_monsters/clowns/thicc, /mob/living/simple_mob/mobs_monsters/clowns/punished, /mob/living/simple_mob/mobs_monsters/clowns/sentinel, /mob/living/simple_mob/mobs_monsters/clowns/tunnelclown, /mob/living/simple_mob/mobs_monsters/clowns/cluwne, /mob/living/simple_mob/mobs_monsters/clowns/honkmunculus)
var/list/choices = list(/mob/living/simple_mob/clowns/normal, /mob/living/simple_mob/clowns/honkling, /mob/living/simple_mob/clowns/mayor, /mob/living/simple_mob/clowns/blob, /mob/living/simple_mob/clowns/mutant, /mob/living/simple_mob/clowns/clowns, /mob/living/simple_mob/clowns/flesh, /mob/living/simple_mob/clowns/scary, /mob/living/simple_mob/clowns/chlown, /mob/living/simple_mob/clowns/destroyer, /mob/living/simple_mob/clowns/giggles, /mob/living/simple_mob/clowns/longface, /mob/living/simple_mob/clowns/hulk, /mob/living/simple_mob/clowns/thin, /mob/living/simple_mob/clowns/wide, /mob/living/simple_mob/clowns/perm, /mob/living/simple_mob/clowns/thicc, /mob/living/simple_mob/clowns/punished, /mob/living/simple_mob/clowns/sentinel, /mob/living/simple_mob/clowns/tunnelclown, /mob/living/simple_mob/clowns/cluwne, /mob/living/simple_mob/clowns/honkmunculus)
var/chosen_clown = tgui_input_list(M, "Redspace clowns like themes, what's yours?", "Theme Choice", choices)
density = FALSE
var/mob/living/simple_mob/R = new chosen_clown(get_turf(src))

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/honkelemental
/mob/living/simple_mob/clowns/big/c_shift/honkelemental
name = "Honk Elemental"
desc = "That thing can't be real, right?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -23,7 +23,7 @@
speak = list("HONK", "Honk!", "Henk!")
emote_see = list("honks")
/mob/living/simple_mob/mobs_monsters/clowns/big/c_shift/honkelemental/verb/spawn_egg()
/mob/living/simple_mob/clowns/big/c_shift/honkelemental/verb/spawn_egg()
set category = "Abilities"
set name = "Spawn Clown Egg"
set desc = "Spawns an egg that a player can touch, which will call on ghosts to spawn as clowns."

View File

@@ -1,4 +1,4 @@
/mob/living/simple_mob/mobs_monsters/clowns/
/mob/living/simple_mob/clowns/
response_help = "pokes"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -13,7 +13,7 @@
/mob/living/simple_mob/mobs_monsters/clowns/honkmunculus
/mob/living/simple_mob/clowns/honkmunculus
name = "A Clown?"
desc = "That clown has some interesting proportions."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -31,7 +31,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/cluwne
/mob/living/simple_mob/clowns/cluwne
name = "A Clown?"
desc = "Oh no not that thing."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -43,7 +43,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/tunnelclown
/mob/living/simple_mob/clowns/tunnelclown
name = "A Clown?"
desc = "Have you heard about our lord and savior, Honkus Chrust?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -55,7 +55,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/sentinel
/mob/living/simple_mob/clowns/sentinel
name = "A Clown?"
desc = "This guy means business..."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -68,7 +68,7 @@
/mob/living/simple_mob/mobs_monsters/clowns/punished
/mob/living/simple_mob/clowns/punished
name = "A Clown?"
desc = "A clown at peak performance."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -86,7 +86,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/thicc
/mob/living/simple_mob/clowns/thicc
name = "A Clown..."
desc = "I mean, you see it don't you?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -104,7 +104,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/perm
/mob/living/simple_mob/clowns/perm
name = "A Clown?"
desc = "That clown really needs to get that hair under control."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -122,7 +122,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/wide
/mob/living/simple_mob/clowns/wide
name = "A Clown?"
desc = "He looks good from some angles!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -140,7 +140,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/thin
/mob/living/simple_mob/clowns/thin
name = "A Clown?"
desc = "Is he eating enough?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -152,7 +152,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/hulk
/mob/living/simple_mob/clowns/hulk
name = "A Clown?"
desc = "Just look at those muscles."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -170,7 +170,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/longface
/mob/living/simple_mob/clowns/longface
name = "A Clown?"
desc = "Why the long face?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -188,7 +188,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/giggles
/mob/living/simple_mob/clowns/giggles
name = "A Giggles?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -200,7 +200,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/destroyer
/mob/living/simple_mob/clowns/destroyer
name = "A Clown?"
desc = "That clown looks like he means business."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -218,7 +218,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/chlown
/mob/living/simple_mob/clowns/chlown
name = "A Clown?"
desc = "No."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -236,7 +236,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/scary
/mob/living/simple_mob/clowns/scary
name = "A Clown?"
desc = "Hey that clown looks familiar!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -248,7 +248,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/flesh
/mob/living/simple_mob/clowns/flesh
name = "A Clown?"
desc = "WOOOOO STREAKING WOOOO!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -260,7 +260,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/clowns
/mob/living/simple_mob/clowns/clowns
name = "Definitely a singular clown"
desc = "Is it one clown, or many clowns in not a trenchcoat?"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -278,7 +278,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/mutant
/mob/living/simple_mob/clowns/mutant
name = "A Clown?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -296,7 +296,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/blob
/mob/living/simple_mob/clowns/blob
name = "A Clown?"
desc = "Go to a gym fatty!"
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -314,7 +314,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/mayor
/mob/living/simple_mob/clowns/mayor
name = "A clown?"
desc = "One speaks in riddles..."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -332,7 +332,7 @@
pixel_y = 0
/mob/living/simple_mob/mobs_monsters/clowns/honkling
/mob/living/simple_mob/clowns/honkling
name = "A Clown?"
desc = "Oh sweet space christ."
tt_desc = "E Homo sapiens corydon horrificus" //this is a redspace clown
@@ -344,7 +344,7 @@
vis_height = 32
/mob/living/simple_mob/mobs_monsters/clowns/normal
/mob/living/simple_mob/clowns/normal
name = "Clown"
desc = "A regular, every tuesday Clown."
tt_desc = "E Homo sapiens corydon" //this is a clown

View File

@@ -1,6 +1,6 @@
#define MORPH_COOLDOWN 50
/mob/living/simple_mob/vore/hostile/morph
/mob/living/simple_mob/vore/morph
name = "morph"
real_name = "morph"
desc = "A revolting, pulsating pile of flesh."
@@ -58,25 +58,25 @@
var/static/list/blacklist_typecache = typecacheof(list(
/obj/screen,
/obj/singularity,
/mob/living/simple_mob/vore/hostile/morph,
/mob/living/simple_mob/vore/morph,
/obj/effect))
/mob/living/simple_mob/vore/hostile/morph/Initialize()
/mob/living/simple_mob/vore/morph/Initialize()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/simple_mob/vore/hostile/morph/proc/take_over_prey
if(!istype(src, /mob/living/simple_mob/vore/hostile/morph/dominated_prey))
verbs += /mob/living/simple_mob/vore/hostile/morph/proc/morph_color
verbs += /mob/living/simple_mob/vore/morph/proc/take_over_prey
if(!istype(src, /mob/living/simple_mob/vore/morph/dominated_prey))
verbs += /mob/living/simple_mob/vore/morph/proc/morph_color
return ..()
/mob/living/simple_mob/vore/hostile/morph/Destroy()
/mob/living/simple_mob/vore/morph/Destroy()
form = null
return ..()
/mob/living/simple_mob/vore/hostile/morph/proc/allowed(atom/movable/A)
/mob/living/simple_mob/vore/morph/proc/allowed(atom/movable/A)
return !is_type_in_typecache(A, blacklist_typecache) && (isobj(A) || ismob(A))
/mob/living/simple_mob/vore/hostile/morph/examine(mob/user)
/mob/living/simple_mob/vore/morph/examine(mob/user)
if(morphed)
. = form.examine(user)
if(get_dist(user, src) <= 3 && !resting)
@@ -84,7 +84,7 @@
else
. = ..()
/mob/living/simple_mob/vore/hostile/morph/ShiftClickOn(atom/movable/A)
/mob/living/simple_mob/vore/morph/ShiftClickOn(atom/movable/A)
if(Adjacent(A))
if(morph_time <= world.time && !stat)
if(A == src)
@@ -97,7 +97,7 @@
else
..()
/mob/living/simple_mob/vore/hostile/morph/proc/assume(atom/movable/target)
/mob/living/simple_mob/vore/morph/proc/assume(atom/movable/target)
var/mob/living/carbon/human/humantarget = target
if(istype(humantarget) && humantarget.resleeve_lock && ckey != humantarget.resleeve_lock)
to_chat(src, "<span class='warning'>[target] cannot be impersonated!</span>")
@@ -142,7 +142,7 @@
return
/mob/living/simple_mob/vore/hostile/morph/proc/restore(var/silent = FALSE)
/mob/living/simple_mob/vore/morph/proc/restore(var/silent = FALSE)
if(!morphed)
to_chat(src, "<span class='warning'>You're already in your normal form!</span>")
return
@@ -187,21 +187,21 @@
morph_time = world.time + MORPH_COOLDOWN
/mob/living/simple_mob/vore/hostile/morph/death(gibbed)
/mob/living/simple_mob/vore/morph/death(gibbed)
if(morphed)
visible_message("<span class='warning'>[src] twists and dissolves into a pile of flesh!</span>")
restore(TRUE)
..()
/mob/living/simple_mob/vore/hostile/morph/will_show_tooltip()
/mob/living/simple_mob/vore/morph/will_show_tooltip()
return (!morphed)
/mob/living/simple_mob/vore/hostile/morph/resize(var/new_size, var/animate = TRUE, var/uncapped = FALSE, var/ignore_prefs = FALSE, var/aura_animation = TRUE)
/mob/living/simple_mob/vore/morph/resize(var/new_size, var/animate = TRUE, var/uncapped = FALSE, var/ignore_prefs = FALSE, var/aura_animation = TRUE)
if(morphed && !ismob(form))
return
return ..()
/mob/living/simple_mob/vore/hostile/morph/lay_down()
/mob/living/simple_mob/vore/morph/lay_down()
if(morphed)
var/temp_state = icon_state
..()
@@ -225,18 +225,18 @@
else
..()
/mob/living/simple_mob/vore/hostile/morph/update_icon()
/mob/living/simple_mob/vore/morph/update_icon()
if(morphed)
return
return ..()
/mob/living/simple_mob/vore/hostile/morph/update_icons()
/mob/living/simple_mob/vore/morph/update_icons()
if(morphed)
return
return ..()
/mob/living/simple_mob/vore/hostile/morph/update_transform()
/mob/living/simple_mob/vore/morph/update_transform()
if(morphed)
var/matrix/M = matrix()
M.Scale(icon_scale_x, icon_scale_y)
@@ -245,7 +245,7 @@
else
..()
/mob/living/simple_mob/vore/hostile/morph/proc/morph_color()
/mob/living/simple_mob/vore/morph/proc/morph_color()
set name = "Pick Color"
set category = "Abilities"
set desc = "You can set your color!"
@@ -255,7 +255,7 @@
chosen_color = newcolor
/mob/living/simple_mob/vore/hostile/morph/proc/take_over_prey()
/mob/living/simple_mob/vore/morph/proc/take_over_prey()
set name = "Take Over Prey"
set category = "Abilities"
set desc = "Take command of your prey's body."
@@ -302,23 +302,23 @@
stop_pulling()
original_ckey = ckey
log_and_message_admins("[key_name_admin(src)] has swapped bodies with [key_name_admin(M)] as a morph at [get_area(src)] - [COORD(src)].")
new /mob/living/simple_mob/vore/hostile/morph/dominated_prey(M.vore_selected, M.ckey, src, M)
new /mob/living/simple_mob/vore/morph/dominated_prey(M.vore_selected, M.ckey, src, M)
else
to_chat(src, "<span class='warning'>\The [M] declined your request for control.</span>")
else
to_chat(src, "<span class='warning'>\The [M] declined your request for control.</span>")
/mob/living/simple_mob/vore/hostile/morph/dominated_prey
/mob/living/simple_mob/vore/morph/dominated_prey
name = "subservient node"
color = "#171717"
digestable = 0
devourable = 0
var/mob/living/simple_mob/vore/hostile/morph/parent_morph
var/mob/living/simple_mob/vore/morph/parent_morph
var/mob/living/carbon/human/prey_body
var/prey_ckey
/mob/living/simple_mob/vore/hostile/morph/dominated_prey/New(loc, pckey, parent, prey)
/mob/living/simple_mob/vore/morph/dominated_prey/New(loc, pckey, parent, prey)
. = ..()
if(pckey)
prey_ckey = pckey
@@ -336,17 +336,17 @@
else
qdel(src)
/mob/living/simple_mob/vore/hostile/morph/dominated_prey/death(gibbed)
/mob/living/simple_mob/vore/morph/dominated_prey/death(gibbed)
. = ..()
undo_prey_takeover(FALSE)
/mob/living/simple_mob/vore/hostile/morph/dominated_prey/Destroy()
/mob/living/simple_mob/vore/morph/dominated_prey/Destroy()
. = ..()
parent_morph = null
prey_body = null
/mob/living/simple_mob/vore/hostile/morph/dominated_prey/proc/undo_prey_takeover(ooc_escape)
/mob/living/simple_mob/vore/morph/dominated_prey/proc/undo_prey_takeover(ooc_escape)
if(buckled)
buckled.unbuckle_mob()
if(prey_body.buckled)

View File

@@ -6,7 +6,7 @@
**the catalogue entry ends here.**"
value = CATALOGUER_REWARD_MEDIUM
/mob/living/simple_mob/otie //Spawn this one only if you're looking for a bad time. Not friendly.
/mob/living/simple_mob/vore/otie //Spawn this one only if you're looking for a bad time. Not friendly.
name = "otie"
desc = "The classic bioengineered longdog."
tt_desc = "Otus robustus"
@@ -57,7 +57,7 @@
// Activate Noms!
/mob/living/simple_mob/otie
/mob/living/simple_mob/vore/otie
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 20
@@ -68,7 +68,7 @@
vore_default_contamination_color = "black"
vore_default_item_mode = IM_DIGEST
/mob/living/simple_mob/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
/mob/living/simple_mob/vore/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
name = "mutated feral otie"
desc = "The classic bioengineered longdog. No pets. Only bite. This one seems to have developed a mutation from an abnormally phoron-rich diet." //CHOMPedit
tt_desc = "Otus phoronis"
@@ -89,14 +89,14 @@
max_n2 = 0
has_eye_glow = TRUE
/mob/living/simple_mob/otie/feral/chubby
/mob/living/simple_mob/vore/otie/feral/chubby
name = "chubby mutated feral otie"
desc = "The classic bioengineered longdog. No pets. Only bite. This one seems to have developed a mutation from an abnormally phoron-rich diet. What an absolute unit." //CHOMPedit
icon_state = "photiec"
icon_living = "photiec"
icon_rest = "photiec_rest"
/mob/living/simple_mob/otie/red
/mob/living/simple_mob/vore/otie/red
name = "feral red otie"
desc = "Seems this ominous looking longdog has been infused with wicked infernal forces."
tt_desc = "Otus infernalis"
@@ -118,13 +118,13 @@
maxbodytemp = 1000
has_eye_glow = TRUE
/mob/living/simple_mob/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away
/mob/living/simple_mob/vore/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away
name = "red otie"
desc = "Seems this ominous looking longdog has been infused with wicked infernal forces. This one seems rather peaceful though."
faction = "neutral"
tamed = 1
/mob/living/simple_mob/otie/red/chubby //gets the pet2tame feature and doesn't kill you right away
/mob/living/simple_mob/vore/otie/red/chubby //gets the pet2tame feature and doesn't kill you right away
name = "chubby red otie"
desc = "Seems this ominous looking longdog has been infused with wicked infernal forces. What an absolute unit."
icon_state = "hotiec"
@@ -133,20 +133,20 @@
faction = "neutral"
tamed = 1
/mob/living/simple_mob/otie/friendly //gets the pet2tame feature and doesn't kill you right away
/mob/living/simple_mob/vore/otie/friendly //gets the pet2tame feature and doesn't kill you right away
name = "otie"
desc = "The classic bioengineered longdog. This one might even tolerate you!"
faction = "neutral"
tamed = 1
/mob/living/simple_mob/otie/friendly/chubby
/mob/living/simple_mob/vore/otie/friendly/chubby
name = "chubby otie"
desc = "The classic bioengineered longdog. This one might even tolerate you! What an absolute unit"
icon_state = "fotie"
icon_living = "fotie"
icon_rest = "fotie_rest"
/mob/living/simple_mob/otie/cotie //same as above but has a little collar :v
/mob/living/simple_mob/vore/otie/cotie //same as above but has a little collar :v
name = "tamed otie"
desc = "The classic bioengineered longdog. This one has a nice little collar on its neck. However a proper domesticated otie is an oxymoron and the collar is likely just a decoration."
icon_state = "cotie"
@@ -155,14 +155,14 @@
faction = "neutral"
tamed = 1
/mob/living/simple_mob/otie/cotie/chubby
/mob/living/simple_mob/vore/otie/cotie/chubby
name = "chubby tamed otie"
desc = "The classic bioengineered longdog. This one has a nice little collar on its neck. What an absolute unit."
icon_state = "fcotie"
icon_living = "fcotie"
icon_rest = "fcotie_rest"
/mob/living/simple_mob/otie/cotie/phoron //friendly phoron pup with collar
/mob/living/simple_mob/vore/otie/cotie/phoron //friendly phoron pup with collar
name = "mutated otie"
desc = "Looks like someone did manage to domesticate one of those wild phoron mutants. What a badass."
tt_desc = "Otus phoronis"
@@ -180,7 +180,7 @@
max_n2 = 0
has_eye_glow = TRUE
/mob/living/simple_mob/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho.
/mob/living/simple_mob/vore/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho.
name = "guard otie"
desc = "The VARMAcorp bioengineering division flagship product on big mean guard dogs."
icon_state = "sotie"
@@ -198,7 +198,7 @@
var/check_records = 0 // If true, arrests people without a record.
var/check_arrest = 1 // If true, arrests people who are set to arrest.
/mob/living/simple_mob/otie/security/chubby
/mob/living/simple_mob/vore/otie/security/chubby
name = "chubby guard otie"
desc = "The VARMAcorp bioengineering division flagship product on big mean guard dogs. What an absolute unit."
icon_state = "fsotie"
@@ -206,7 +206,7 @@
icon_rest = "fsotie_rest"
icon_dead = "fsotie-dead"
/mob/living/simple_mob/otie/security/phoron
/mob/living/simple_mob/vore/otie/security/phoron
name = "mutated guard otie"
desc = "An extra rare phoron resistant version of the VARMAcorp trained guard dogs adapted for hostile environments."
tt_desc = "Otus phoronis"
@@ -223,7 +223,7 @@
min_n2 = 0
max_n2 = 0
/mob/living/simple_mob/otie/security/phoron/red
/mob/living/simple_mob/vore/otie/security/phoron/red
name = "red guard otie"
desc = "An ominous looking version of the big mean VARMAcorp guard dogs."
tt_desc = "Otus infernalis"
@@ -233,20 +233,20 @@
icon_dead = "sechotie-dead"
maxbodytemp = 1000
/mob/living/simple_mob/otie/security/phoron/red/chubby
/mob/living/simple_mob/vore/otie/security/phoron/red/chubby
name = "chubby red guard otie"
desc = "An ominous looking version of the big mean VARMAcorp guard dogs. What an absolute unit."
icon_state = "hotiesc"
icon_living = "hotiesc"
icon_rest = "hotiesc_rest"
/mob/living/simple_mob/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims.
/mob/living/simple_mob/vore/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims.
if(istype(O, /obj/item/weapon/reagent_containers/food))
qdel(O)
playsound(src,'sound/items/eatfood.ogg', rand(10,50), 1)
if(!has_AI())//No autobarf on player control.
return
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_mob/otie/security))
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_mob/vore/otie/security))
to_chat(user,"<span class='notice'>The guard pup accepts your offer for their catch.</span>")
release_vore_contents()
else if(prob(2)) //Small chance to get prey out from non-sec oties.
@@ -255,7 +255,7 @@
return
. = ..()
/mob/living/simple_mob/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging.
/mob/living/simple_mob/vore/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging.
if(ishuman(prey))
vore_selected.digest_mode = DM_HOLD
if(check_threat(prey) >= 4)
@@ -264,12 +264,12 @@
vore_selected.digest_mode = DM_DIGEST
. = ..()
/mob/living/simple_mob/otie/security/proc/check_threat(var/mob/living/M)
/mob/living/simple_mob/vore/otie/security/proc/check_threat(var/mob/living/M)
if(!M || !ishuman(M) || M.stat == DEAD || src == M)
return 0
return M.assess_perp(0, 0, 0, check_records, check_arrest)
/mob/living/simple_mob/otie/security/proc/target_name(mob/living/T)
/mob/living/simple_mob/vore/otie/security/proc/target_name(mob/living/T)
if(ishuman(T))
var/mob/living/carbon/human/H = T
return H.get_id_name("unidentified person")
@@ -277,7 +277,7 @@
//Pet 4 friendly
/mob/living/simple_mob/otie/attack_hand(mob/living/carbon/human/M as mob)
/mob/living/simple_mob/vore/otie/attack_hand(mob/living/carbon/human/M as mob)
switch(M.a_intent)
if(I_HELP)
@@ -314,12 +314,12 @@
else
..()
/mob/living/simple_mob/otie/death(gibbed, deathmessage = "dies!")
/mob/living/simple_mob/vore/otie/death(gibbed, deathmessage = "dies!")
.=..()
resting = 0
icon_state = icon_dead
/mob/living/simple_mob/otie/Login()
/mob/living/simple_mob/vore/otie/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
@@ -327,7 +327,7 @@
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
/mob/living/simple_mob/otie/MouseDrop_T(mob/living/M, mob/living/user)
/mob/living/simple_mob/vore/otie/MouseDrop_T(mob/living/M, mob/living/user)
return
/datum/say_list/otie
@@ -339,7 +339,7 @@
/datum/ai_holder/simple_mob/melee/evasive/otie
/datum/ai_holder/simple_mob/melee/evasive/otie/New(var/mob/living/simple_mob/otie/new_holder)
/datum/ai_holder/simple_mob/melee/evasive/otie/New(var/mob/living/simple_mob/vore/otie/new_holder)
.=..()
if(new_holder.tamed)
hostile = FALSE

View File

@@ -5,7 +5,7 @@
love to nip and bite at things, as well as sniffing around. They seem to mark their territory by way of scent-marking/urinating on things."
value = CATALOGUER_REWARD_EASY
/mob/living/simple_mob/animal/wolf
/mob/living/simple_mob/vore/wolf
name = "grey wolf"
desc = "My, what big jaws it has!"
tt_desc = "Canis lupus"
@@ -42,7 +42,7 @@
// Activate Noms!
/mob/living/simple_mob/animal/wolf
/mob/living/simple_mob/vore/wolf
vore_active = 1
vore_icons = SA_ICON_LIVING
@@ -59,7 +59,7 @@
B.belly_fullscreen = "anim_belly" // CHOMPedit - Belly Fullscreen
// Space edition, stronger and bitier
/mob/living/simple_mob/animal/wolf/space
/mob/living/simple_mob/vore/wolf/space
name = "space wolf"
tt_desc = "Canis lupus aetherius"
@@ -83,10 +83,10 @@
minbodytemp = 0
maxbodytemp = 700
/mob/living/simple_mob/animal/wolf/space/Process_Spacemove(var/check_drift = 0)
/mob/living/simple_mob/vore/wolf/space/Process_Spacemove(var/check_drift = 0)
return TRUE
/mob/living/simple_mob/animal/wolf/direwolf
/mob/living/simple_mob/vore/wolf/direwolf
name = "dire wolf"
desc = "The biggest and baddest wolf around."
tt_desc = "Canis maxdirus"
@@ -116,7 +116,7 @@
buckle_lying = FALSE
vore_icons = SA_ICON_LIVING | SA_ICON_REST
/mob/living/simple_mob/animal/wolf/direwolf/Login()
/mob/living/simple_mob/vore/wolf/direwolf/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
@@ -124,10 +124,10 @@
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = -1
/mob/living/simple_mob/animal/wolf/direwolf/MouseDrop_T(mob/living/M, mob/living/user)
/mob/living/simple_mob/vore/wolf/direwolf/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/animal/wolf/direwolf/dog
/mob/living/simple_mob/vore/wolf/direwolf/dog
name = "large dog"
desc = "The biggest and goodest dog around."
tt_desc = "Canis maxdirus familiaris"
@@ -136,7 +136,7 @@
icon_state = "diredog"
icon_rest = "diredog_rest"
/mob/living/simple_mob/animal/wolf/direwolf/dog/sec
/mob/living/simple_mob/vore/wolf/direwolf/dog/sec
name = "large guard dog"
desc = "The biggest and goodest guard dog around."
icon_dead = "diredogs-dead"
@@ -144,7 +144,7 @@
icon_state = "diredogs"
icon_rest = "diredogs_rest"
/mob/living/simple_mob/animal/wolf/direwolf/sec
/mob/living/simple_mob/vore/wolf/direwolf/sec
name = "dire guard wolf"
desc = "The biggest and baddest guard wolf around."
icon_dead = "direwolfs-dead"
@@ -152,7 +152,7 @@
icon_state = "direwolfs"
icon_rest = "direwolfs_rest"
/mob/living/simple_mob/animal/wolf/direwolf/rykka
/mob/living/simple_mob/vore/wolf/direwolf/rykka
name = "Rykka"
desc = "This big canine looks like a GSD. It has a collar tagged, 'Bitch'"
tt_desc = "Canidae"
@@ -186,7 +186,7 @@
vore_stomach_name = "Gut"
vore_stomach_flavor = "A black-and-purple veined gut, pulsing warmly around you. Loud gurgles sound around you as the gut squishes inwards and attempts to crush you - Rykka seems intent on digesting you, like the meat you are."
/mob/living/simple_mob/animal/wolf/direwolf/andrews
/mob/living/simple_mob/vore/wolf/direwolf/andrews
name = "andrewsarchus"
desc = "That's one massive mean-looking piece of long extinct megafauna."
tt_desc = "Andrewsarchus mongoliensis"

View File

@@ -223,10 +223,11 @@
response_disarm = "gently pushes aside"
response_harm = "hits"
// Chomp EDIT
/mob/living/simple_mob/hostile/carp/pike
vore_active = 1
// NO VORE SPRITES
// Chomp EDIT END
/mob/living/simple_mob/animal/space/carp/holographic
vore_icons = 0 // NO VORE SPRITES

View File

@@ -411,6 +411,10 @@
name = "Devil Lock"
icon_state = "hair_devilock"
/datum/sprite_accessory/hair/diagonalbangs
name = "Diagonal Bangs"
icon_state = "hair_diagonalbangs"
/datum/sprite_accessory/hair/dirk
name = "Dirk"
icon_state = "hair_dirk"
@@ -1187,6 +1191,11 @@
icon_state = "hair_volaju"
flags = HAIR_TIEABLE
/datum/sprite_accessory/hair/volaju_pompless
name = "Volaju, pompless"
icon_state = "hair_volajupompless"
flags = HAIR_TIEABLE
/datum/sprite_accessory/hair/wisp
name = "Wisp"
icon_state = "hair_wisp"

View File

@@ -0,0 +1,10 @@
//For use with various spawners! Put your selections inside of a list!
/var/global/list/theme_animal = list()
/var/global/list/theme_monster = list()
/var/global/list/theme_alien = list()
/var/global/list/theme_cold = list()
/var/global/list/theme_hot = list()
/var/global/list/theme_aquatic = list()
/var/global/list/theme_dark = list()
/var/global/list/theme_forest = list()
/var/global/list/theme_humanoid = list()

View File

@@ -186,23 +186,28 @@
climb_time +=3 SECONDS
if(fall_chance < 30)
fall_chance = 30
L.custom_emote(VISIBLE_MESSAGE, "begins to climb up on \The [src]")
L.visible_message(message = "<b>[L]</b> begins to climb up on <b>\The [src]</b>", self_message = "You begin to clumb up on <b>\The [src]</b>", \
blind_message = "You hear the sounds of climbing!", runemessage = "Tap Tap")
var/oops_time = world.time
var/grace_time = 4 SECONDS
to_chat(L, SPAN_WARNING("If you get interrupted after [(grace_time / (1 SECOND))] seconds of climbing, you will fall and hurt yourself, beware!"))
if(do_after(L,climb_time))
if(prob(fall_chance))
to_chat(L, SPAN_DANGER("You slipped and fell!"))
L.forceMove(above_mob)
L.visible_message(message = "<b>[L]</b> falls off <b>\The [src]</b>", self_message = SPAN_DANGER("You slipped off <b>\The [src]</b>"), \
blind_message = "you hear a loud thud!", runemessage = "CRASH!")
else
if(drop_our_held)
L.drop_item(get_turf(L))
L.forceMove(above_wall)
L.visible_message(message = "<b>[L]</b> climbed up on <b>\The [src]</b>", \
self_message = SPAN_NOTICE("You successfully scaled <b>\The [src]</b>"), \
blind_message = "The sounds of climbing cease.", runemessage = "Tap Tap")
L.adjust_nutrition(-nutrition_cost)
to_chat(L, SPAN_NOTICE("You clambered up successfully!"))
else if(world.time > (oops_time + grace_time))
L.forceMove(above_mob)
L.visible_message(message = "<b>[L]</b> falls off <b>\The [src]</b>", self_message = SPAN_DANGER("You slipped off <b>\The [src]</b>"), \
blind_message = "you hear a loud thud!", runemessage = "CRASH!")
/mob/living/verb/climb_down()
set name = "Climb down wall"
@@ -303,17 +308,27 @@
to_chat(src, SPAN_DANGER("\The [climbing_surface] is not suitable for climbing! Even for a master climber, this is risky!"))
if(fall_chance < 75 )
fall_chance = 75
src.custom_emote(VISIBLE_MESSAGE, "begins to climb down along \The [below_wall]")
src.visible_message(message = "<b>[src]</b> climb down <b>\The [below_wall]</b>", \
self_message = "You begin to descend <b>\The [below_wall]</b>", \
blind_message = "You hear the sounds of climbing!", runemessage = "Tap Tap")
below_wall.audible_message(message = "You hear something climbing up <b>\The [below_wall]</b>", runemessage= "Tap Tap")
var/oops_time = world.time
var/grace_time = 3 SECONDS
to_chat(src, SPAN_WARNING("If you get interrupted after [(grace_time / (1 SECOND))] seconds of climbing, you will fall and hurt yourself, beware!"))
if(do_after(src,climb_time))
if(prob(fall_chance))
to_chat(src, SPAN_DANGER("You slipped and fell!"))
src.forceMove(front_of_us)
src.visible_message(message = "<b>[src]</b> falls off <b>\The [below_wall]</b>", \
self_message = SPAN_DANGER("You slipped off <b>\The [below_wall]</b>"), \
blind_message = "you hear a loud thud!", runemessage = "CRASH!")
else
src.forceMove(destination)
to_chat(src, SPAN_NOTICE("You descended successfully!"))
src.visible_message(message = "<b>[src]</b> climbed down on <b>\The [below_wall]</b>", \
self_message = SPAN_NOTICE("You successfully descended <b>\The [below_wall]</b>"), \
blind_message = "The sounds of climbing cease.", runemessage = "Tap Tap")
adjust_nutrition(-nutrition_cost)
else if(world.time > (oops_time + grace_time))
src.forceMove(front_of_us)
src.visible_message(message = "<b>[src]</b> falls off <b>\The [below_wall]</b>", \
self_message = SPAN_DANGER("You slipped off <b>\The [below_wall]</b>"), \
blind_message = "you hear a loud thud!", runemessage = "CRASH!")

View File

@@ -32,11 +32,11 @@
/obj/machinery/power/port_gen/proc/TogglePower()
if(active)
active = FALSE
icon_state = "[initial(icon_state)]"
update_icon()
// soundloop.stop()
else if(HasFuel())
active = TRUE
icon_state = "[initial(icon_state)]on"
update_icon()
// soundloop.start()
/obj/machinery/power/port_gen/process()
@@ -45,9 +45,15 @@
UseFuel()
else
active = FALSE
icon_state = initial(icon_state)
update_icon()
handleInactive()
/obj/machinery/power/port_gen/update_icon()
if(active)
icon_state = "[initial(icon_state)]on"
else
icon_state = initial(icon_state)
/obj/machinery/power/powered()
return 1 //doesn't require an external power source

View File

@@ -412,3 +412,89 @@
circuit = /obj/item/weapon/circuitboard/machine/reg_c
default_power_gen = 500000 //Half power
nutrition_drain = 0.5 //for half cost - EQUIVALENT EXCHANGE >:O
// Big altevian version of pacman. has a lot of copypaste from regular kind, but less flexible.
/obj/machinery/power/port_gen/large_altevian
name = "Converted High Energy Exchange Supplier Extractor"
desc = "A take on the classic PACMAN reactors that are seen throughout the galaxy. The altevians have ripped apart the tech and seemed to of found a way to maximize the fuel usage one would see with this kind of process. \
However, it is a lot bulkier and nearly impossible to break apart, but still can be moved if need be with special tools."
icon = 'icons/obj/props/decor64x64.dmi'
icon_state = "alteviangen"
bound_width = 64
bound_height = 64
anchored = TRUE
power_gen = 200000
var/sheet_name = "Phoron Sheets"
var/sheet_path = /obj/item/stack/material/phoron
var/sheets = 0 //How many sheets of material are loaded in the generator
var/sheet_left = 0 //How much is left of the current sheet
var/time_per_sheet = 120 //fuel efficiency - how long 1 sheet lasts at power level 1
var/max_sheets = 100 //max capacity of the hopper
/obj/machinery/power/port_gen/large_altevian/Initialize()
.=..()
if(anchored)
connect_to_network()
/obj/machinery/power/port_gen/large_altevian/Destroy()
DropFuel()
return ..()
/obj/machinery/power/port_gen/large_altevian/examine(mob/user)
. = ..()
. += "There [sheets == 1 ? "is" : "are"] [sheets] sheet\s left in the hopper."
/obj/machinery/power/port_gen/large_altevian/HasFuel()
var/needed_sheets = power_output / time_per_sheet
if(sheets >= needed_sheets - sheet_left)
return 1
return 0
/obj/machinery/power/port_gen/large_altevian/DropFuel()
if(sheets)
var/obj/item/stack/material/S = new sheet_path(loc, sheets)
sheets -= S.get_amount()
/obj/machinery/power/port_gen/large_altevian/UseFuel()
var/needed_sheets = power_output / time_per_sheet
if (needed_sheets > sheet_left)
sheets--
sheet_left = (1 + sheet_left) - needed_sheets
else
sheet_left -= needed_sheets
/obj/machinery/power/port_gen/large_altevian/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, sheet_path))
var/obj/item/stack/addstack = O
var/amount = min((max_sheets - sheets), addstack.get_amount())
if(amount < 1)
to_chat(user, "<span class='warning'>The [src.name] is full!</span>")
return
to_chat(user, "<span class='notice'>You add [amount] sheet\s to the [src.name].</span>")
sheets += amount
addstack.use(amount)
update_icon()
return
return ..()
/obj/machinery/power/port_gen/large_altevian/attack_hand(mob/user as mob)
..()
if (!anchored)
return
TogglePower()
/obj/machinery/power/port_gen/large_altevian/attack_ai(mob/user as mob)
TogglePower()
/obj/machinery/power/port_gen/large_altevian/update_icon()
..()
cut_overlays()
if(sheets > 75)
add_overlay("alteviangen-fuel-100")
else if(sheets > 25)
add_overlay("alteviangen-fuel-66")
else if(sheets > 0)
add_overlay("alteviangen-fuel-33")

View File

@@ -8,7 +8,7 @@
wielded_item_state = "laser-wielded"
fire_delay = 8
slot_flags = SLOT_BELT|SLOT_BACK
w_class = ITEMSIZE_HUGE //CHOMP Edit
w_class = ITEMSIZE_LARGE //CHOMP Edit - huge was dumb for this.
force = 10
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
matter = list(MAT_STEEL = 2000)
@@ -258,15 +258,15 @@
icon_state = "lasercannon"
item_state = null
wielded_item_state = "mhdhowitzer-wielded" //Placeholder
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 6, TECH_POWER = 6) //ChompEdit improved.
slot_flags = SLOT_BELT|SLOT_BACK
projectile_type = /obj/item/projectile/beam/heavylaser/cannon
battery_lock = 1
battery_lock = 0 //ChompEdit This thing is worthless with this.
fire_delay = 20
w_class = ITEMSIZE_HUGE //CHOMP Edit. Lol a cannon used to be just large size? Are you kidding me? A CANNON.
w_class = ITEMSIZE_HUGE //CHOMP Edit. Lol a cannon used to be just large size? Are you kidding me? A CANNON. Deserves this.
one_handed_penalty = 90 // The thing's heavy and huge.
accuracy = 45
charge_cost = 400 //CHOMP Edit. Let's give this thing some more shots, seeing as it needs to be recharged at a charger.
charge_cost = 400 //CHOMP Edit. Let's give this thing some more shots, seeing as it needs to be recharged at a charger - Most everything else is cheaper on charge cost now or smaller, this can stay the same, but with replacable batteries.
/obj/item/weapon/gun/energy/lasercannon/mounted
name = "mounted laser cannon"
@@ -289,7 +289,7 @@
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
projectile_type = /obj/item/projectile/beam/xray
charge_cost = 200
w_class = ITEMSIZE_HUGE //CHOMP Edit.
w_class = ITEMSIZE_LARGE //CHOMP Edit. - huge is too big, this thing hits for 25
/obj/item/weapon/gun/energy/sniperrifle
name = "marksman energy rifle"

View File

@@ -84,8 +84,8 @@
/obj/item/weapon/gun/energy/tommylaser
name = "M-2421 'Tommy-Laser'"
desc = "A automatic laser weapon resembling a Tommy-Gun. Designed by Cybersun Industries to be a man portable supressive fire laser weapon."
icon_state = "tommylas"
item_state = "tommylas"
icon_state = "etommy"
item_state = "etommy"
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
charge_cost = 60 // 40 shots, lay down the firepower

View File

@@ -157,20 +157,20 @@
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/inventory/belt/mob_vr.dmi')
fire_sound = 'sound/weapons/laser2.ogg'
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4)
charge_cost = 300
charge_cost = 100 //Chompedit Reduced cost
battery_lock = 1
unacidable = TRUE
var/recharging = 0
var/phase_power = 75
var/phase_power = 15
projectile_type = /obj/item/projectile/beam/phaser
//CHOMP Edit: Changed beam type to new phaser beam type.
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, charge_cost = 80),
)
list(mode_name="lethal", fire_delay=10, projectile_type=/obj/item/projectile/beam/phaser, charge_cost = 80), //Chompedit Reduced cost
list(mode_name="low-power", fire_delay=5, projectile_type=/obj/item/projectile/beam/phaser/light, charge_cost = 40), //Chompedit Reduced cost
) //CHOMPedit Adjusts cost and fire delay to match adjusted beams.
recoil_mode = 0 //CHOMP Addition: Removes recoil for micros.
/obj/item/weapon/gun/energy/locked/frontier/unload_ammo(var/mob/user)
@@ -185,7 +185,7 @@
break
playsound(src,'sound/items/change_drill.ogg',25,1)
user.hud_used.update_ammo_hud(user, src)
if(power_supply.give(phase_power/8) < phase_power/8) //CHOMP Edit: Nerfed charge time of all phasers by adding /8 in a couple spots to this line
if(power_supply.give(phase_power) < phase_power)
break
recharging = 0
@@ -215,19 +215,22 @@
/obj/item/weapon/gun/energy/locked/frontier/carbine
name = "frontier carbine"
desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
desc = "A larger and more efficient version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
description_fluff = "The NT Brand Model AT2 Secured Phaser System, a specialty phaser that has an intergrated chip that prevents the user from opperating the weapon within the vicinity of any NanoTrasen opperated outposts/stations/bases. However, this chip can be disabled so the weapon CAN BE used in the vicinity of any NanoTrasen opperated outposts/stations/bases. The weapon doesn't use traditional weapon power cells and instead works via a pump action that recharges the internal cells. It is a staple amongst exploration personell who usually don't have the license to opperate a lethal weapon through NT and provides them with a weapon that can be recharged away from civilization."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "carbinekill"
item_state = "energykill"
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi')
phase_power = 150
phase_power = 25
one_handed_penalty = 15 //CHOMPEdit Added this, same as phase carbine.
w_class = ITEMSIZE_LARGE //CHOMPEdit Should be bigger.
modifystate = "carbinekill"
//CHOMP Edit: Changed beam type to new phaser beam type.
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, modifystate="carbinekill", charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, modifystate="carbinestun", charge_cost = 80),
list(mode_name="lethal", fire_delay=10, projectile_type=/obj/item/projectile/beam/phaser, modifystate="carbinekill", charge_cost = 60), //Chompedit Reduced cost
list(mode_name="low-power", fire_delay=5, projectile_type=/obj/item/projectile/beam/phaser/light, modifystate="carbinestun", charge_cost = 30), //Chompedit Reduced cost
list(mode_name="burst", burst=3, fire_delay=10, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/phaser/light, charge_cost = 90), //Chompedit Added this
)
/obj/item/weapon/gun/energy/locked/frontier/carbine/update_icon()
@@ -251,15 +254,15 @@
icon = 'icons/obj/gun_vr.dmi'
icon_state = "holdoutkill"
item_state = null
phase_power = 100
phase_power = 15
w_class = ITEMSIZE_SMALL
charge_cost = 600
charge_cost = 200 //Chompedit Reduced cost
modifystate = "holdoutkill"
//CHOMP Edit: Changed beam type to new phaser beam type.
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, modifystate="holdoutkill", charge_cost = 600),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, modifystate="holdoutstun", charge_cost = 120),
list(mode_name="lethal", fire_delay=20, projectile_type=/obj/item/projectile/beam/phaser, modifystate="holdoutkill", charge_cost = 200), //Chompedit Reduced cost
list(mode_name="low-power", fire_delay=10, projectile_type=/obj/item/projectile/beam/phaser/light, modifystate="holdoutstun", charge_cost = 50), //Chompedit Reduced cost
list(mode_name="stun", fire_delay=12, projectile_type=/obj/item/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300),
)
@@ -285,13 +288,13 @@
accuracy = -15 //better than most snipers but still has penalty
scoped_accuracy = 40
one_handed_penalty = 50 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
phase_power = 150 //efficient crank charger
phase_power = 30 //ChompEdit efficient crank charger
projectile_type = /obj/item/projectile/beam/phaser/heavy //CHOMPEdit
modifystate = "riflekill"
//CHOMP Edit: Changed beam type to new phaser beam type.
firemodes = list(
list(mode_name="sniper", fire_delay=35, projectile_type=/obj/item/projectile/beam/phaser/heavy, modifystate="riflekill", charge_cost = 600),
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, modifystate="riflestun", charge_cost = 200),
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, modifystate="riflestun", charge_cost = 60), //Chompedit Reduced cost
list(mode_name="sniper", fire_delay=35, move_delay=4, projectile_type=/obj/item/projectile/beam/phaser/heavy, modifystate="riflekill", charge_cost = 100), //Chompedit Reduced cost
)
/obj/item/weapon/gun/energy/locked/frontier/rifle/ui_action_click()
@@ -325,14 +328,14 @@
icon = 'icons/obj/gun_vr.dmi'
icon_state = "handbowkill"
item_state = null
phase_power = 100
phase_power = 20
w_class = ITEMSIZE_SMALL
charge_cost = 600
charge_cost = 200 //Chompedit Reduced cost
modifystate = "handbowkill"
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/energy/phase/bolt/heavy, modifystate="handbowkill", charge_cost = 600), //CHOMP Edit
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/energy/phase/bolt, modifystate="handbowstun", charge_cost = 200), //CHOMP Edit
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/energy/phase/bolt/heavy, modifystate="handbowkill", charge_cost = 200), //CHOMP Edit
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/energy/phase/bolt, modifystate="handbowstun", charge_cost = 100), //CHOMP Edit
)
/obj/item/weapon/gun/energy/locked/frontier/handbow/unlocked

View File

@@ -10,7 +10,7 @@
item_state = "phasecarbine"
wielded_item_state = "phasecarbine-wielded"
slot_flags = SLOT_BACK|SLOT_BELT
charge_cost = 240
charge_cost = 80 //Chompedit Bringing charge cost down for all phase weapons.
projectile_type = /obj/item/projectile/energy/phase
one_handed_penalty = 15
recoil_mode = 0 //CHOMP Addition: Removes recoil for micros.
@@ -27,8 +27,8 @@
one_handed_penalty = 0
/obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg
charge_cost = 200 //ChompEdit Reduced from 480 to 200
recharge_time = 5 //ChompEdit Reduced from 7 to 5
charge_cost = 80 //ChompEdit Reduced from 480 to 200, further reduced to 80 to match normal phase guns
recharge_time = 16 //ChompEdit set up to 16 due to lower charge cost
/obj/item/weapon/gun/energy/locked/phasegun/pistol
name = "phase pistol"
@@ -37,7 +37,7 @@
item_state = "taser" //I don't have an in-hand sprite, taser will be fine
w_class = ITEMSIZE_NORMAL
slot_flags = SLOT_BELT|SLOT_HOLSTER
charge_cost = 300
charge_cost = 80 //Chompedit Bringing charge cost down for all phase weapons.
projectile_type = /obj/item/projectile/energy/phase/light
one_handed_penalty = 0
move_delay = 0 // CHOMPEdit: Pistols have move_delay of 0
@@ -54,7 +54,7 @@
use_external_power = 1
/obj/item/weapon/gun/energy/locked/phasegun/pistol/unlocked/mounted/cyborg
charge_cost = 400
charge_cost = 80 //Chompedit, bringing in line with normal phase weapons
recharge_time = 7
@@ -66,7 +66,7 @@
wielded_item_state = "phaserifle-wielded"
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
charge_cost = 150
charge_cost = 80 //Chompedit Bringing charge cost down for all phase weapons.
projectile_type = /obj/item/projectile/energy/phase/heavy
accuracy = 15
one_handed_penalty = 30
@@ -85,7 +85,7 @@
wielded_item_state = "phasecannon-wielded" //TODO: New Sprites
w_class = ITEMSIZE_HUGE // This thing is big.
slot_flags = SLOT_BACK
charge_cost = 100
charge_cost = 80 //Chompedit Bringing charge cost down for all phase weapons.
projectile_type = /obj/item/projectile/energy/phase/heavy/cannon
accuracy = 15
one_handed_penalty = 65

View File

@@ -1559,6 +1559,9 @@
update_icon()
update_transform()
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn //Default sawn shotgun needs it's old icon path back
icon = 'icons/obj/gun.dmi'
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/Initialize()
. = ..()
update_transform()

View File

@@ -1,7 +1,7 @@
/obj/item/projectile/beam/phaser //The "medium" phaser beam.
damage = 10
SA_bonus_damage = 40
SA_vulnerability = list(SA_ANIMAL, MOB_CLASS_SYNTHETIC, MOB_CLASS_ABERRATION, MOB_CLASS_HUMANOID)
damage = 20
SA_bonus_damage = 20
SA_vulnerability = list(SA_ANIMAL, MOB_CLASS_SYNTHETIC, MOB_CLASS_ABERRATION)
icon = 'icons/obj/projectiles_ch.dmi'
icon_state = "phaser"
light_color = "#F18F12"
@@ -12,8 +12,8 @@
/obj/item/projectile/beam/phaser/light
damage = 5
SA_bonus_damage = 30
damage = 10
SA_bonus_damage = 10
icon_state = "phaser_light"
light_range = 1.5
light_power = 0.3
@@ -23,7 +23,8 @@
/obj/item/projectile/beam/phaser/heavy
SA_bonus_damage = 55
damage = 30
SA_bonus_damage = 30
icon_state = "phaser_heavy"
light_range = 3
light_power = 1
@@ -33,8 +34,8 @@
/obj/item/projectile/beam/phaser/heavy/cannon
damage = 15
SA_bonus_damage = 60
damage = 40
SA_bonus_damage = 40
/obj/effect/projectile/tracer/phaser

View File

@@ -288,6 +288,7 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser
hud_state = "plasma_sphere"
/* ChompEdit, moving over to energy_ch.dm
/obj/item/projectile/energy/phase
name = "phase wave"
icon_state = "phase"
@@ -312,6 +313,7 @@
damage = 15
SA_bonus_damage = 60 // 75 total on animals
hud_state = "laser_heat"
*/
/obj/item/projectile/energy/electrode/strong
agony = 70

View File

@@ -24,3 +24,32 @@
hitsound = 'sound/weapons/sear.ogg'
hud_state = "laser_overcharge"
/obj/item/projectile/energy/phase
name = "phase wave"
icon_state = "phase"
range = 13
damage = 5
SA_bonus_damage = 45
armor_penetration = -35
SA_vulnerability = list(SA_ANIMAL, MOB_CLASS_SYNTHETIC, MOB_CLASS_ABERRATION, MOB_CLASS_HUMANOID) //CHOMP Edit expand this list
hud_state = "laser_heat"
/obj/item/projectile/energy/phase/light
range = 11
SA_bonus_damage = 35
armor_penetration = -50
hud_state = "laser_heat"
/obj/item/projectile/energy/phase/heavy
range = 16 //Chompedit This range was not great
damage = 10
SA_bonus_damage = 50
armor_penetration = -25
hud_state = "laser_heat"
/obj/item/projectile/energy/phase/heavy/cannon
range = 20 //Chompedit This range was mediocre, but not worth a cannon.
damage = 15
SA_bonus_damage = 60
armor_penetration = -20
hud_state = "laser_heat"

View File

@@ -204,3 +204,31 @@
result = "mudslide"
required_reagents = list("blackrussian" = 1, "irishcream" = 1)
result_amount = 2
/decl/chemical_reaction/instant/drinks/protein_shake
name = "Protein Shake"
id = "protein_shake"
result = "protein_shake"
required_reagents = list("water" = 5, "protein_powder" = 1)
result_amount = 5
/decl/chemical_reaction/instant/drinks/protein_shake/vanilla
name = "Vanilla Protein Shake"
id = "vanilla_protein_shake"
result = "vanilla_protein_shake"
required_reagents = list("water" = 5, "vanilla_protein_powder" = 1)
result_amount = 5
/decl/chemical_reaction/instant/drinks/protein_shake/banana
name = "Banana Protein Shake"
id = "banana_protein_shake"
result = "banana_protein_shake"
required_reagents = list("water" = 5, "banana_protein_powder" = 1)
result_amount = 5
/decl/chemical_reaction/instant/drinks/protein_shake/strawberry
name = "Strawberry Protein Shake"
id = "strawberry_protein_shake"
result = "strawberry_protein_shake"
required_reagents = list("water" = 5, "strawberry_protein_powder" = 1)
result_amount = 5

View File

@@ -554,3 +554,73 @@
color = "#a6898d"
////////////////END BrainzSnax Reagents////////////////
/datum/reagent/nutriment/protein_powder
name = "Protein Powder"
id = "protein_powder"
description = "Pure, powdered protein commonly used as a meal supplement."
taste_description = "powdery protein"
color = "#f4e6dd"
/datum/reagent/nutriment/protein_shake
name = "Protein Shake"
id = "protein_shake"
description = "A mixture of water and protein commonly used as a meal supplement."
taste_description = "pure protein"
color = "#ebd8cb"
/datum/reagent/nutriment/protein_powder/vanilla
name = "Vanilla Protein Powder"
id = "vanilla_protein_powder"
description = "Pure, powdered protein commonly used as a meal supplement. This one has added vanilla flavoring."
taste_description = "powdery vanilla"
color = "#fff7d2"
/datum/reagent/nutriment/protein_shake/vanilla
name = "Vanilla Protein Shake"
id = "vanilla_protein_shake"
description = "A mixture of water and protein commonly used as a meal supplement. This one has added vanilla flavoring."
taste_description = "vanilla"
color = "#faefbc"
/datum/reagent/nutriment/protein_powder/banana
name = "Banana Protein Powder"
id = "banana_protein_powder"
description = "Pure, powdered protein commonly used as a meal supplement. This one has added banana flavoring."
taste_description = "powdery banana"
color = "#faefbc"
/datum/reagent/nutriment/protein_shake/banana
name = "Banana Protein Powder"
id = "banana_protein_shake"
description = "A mixture of water and protein commonly used as a meal supplement. This one has added banana flavoring."
taste_description = "banana"
color = "#e6daa1"
/datum/reagent/nutriment/protein_powder/chocolate
name = "Chocolate Protein Powder"
id = "chocolate_protein_powder"
description = "Pure, powdered protein commonly used as a meal supplement. This one has added chocolate flavoring."
taste_description = "powdery chocolate"
color = "#865b3e"
/datum/reagent/nutriment/protein_shake/chocolate
name = "Chocolate Protein Shake"
id = "chocolate_protein_shake"
description = "A mixture of water and protein commonly used as a meal supplement. This one has added chocolate flavoring."
taste_description = "chocolate"
color = "#644730"
/datum/reagent/nutriment/protein_powder/strawberry
name = "Strawberry Protein Powder"
id = "strawberry_protein_powder"
description = "Pure, powdered protein commonly used as a meal supplement. This one has added strawberry flavoring."
taste_description = "powdery strawberry"
color = "#eba1a1"
/datum/reagent/nutriment/protein_shake/strawberry
name = "Strawberry Protein Shake"
id = "strawberry_protein_shake"
description = "A mixture of water and protein commonly used as a meal supplement. This one has added strawberry flavoring."
taste_description = "strawberry"
color = "#e28585"

View File

@@ -20,3 +20,11 @@
req_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 4, TECH_PHORON = 4, TECH_POWER = 4, TECH_ILLEGAL = 3)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 4000, MAT_PHORON = 2500, MAT_SILVER = 1000, MAT_GOLD = 500, MAT_URANIUM = 3000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/gamma
/datum/design/item/mecha/medigun
name = "BL-3/P directed restoration system"
desc = "A portable medical system used to treat external injuries from afar."
id = "mech_medigun"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_BIO = 6)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 1750, MAT_DIAMOND = 1500, MAT_PHORON = 4000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun

View File

@@ -75,17 +75,17 @@ var/datum/controller/rogue/rm_controller
/mob/living/simple_mob/animal/space/bats/roguemines = 1,
/mob/living/simple_mob/animal/space/carp/roguemines = 2,
/mob/living/simple_mob/animal/space/goose/roguemines = 2,
/mob/living/simple_mob/animal/wolf/space/roguemines = 1),
/mob/living/simple_mob/vore/wolf/space/roguemines = 1),
"tier3" = list(
/mob/living/simple_mob/animal/space/carp/roguemines = 1,
/mob/living/simple_mob/animal/space/goose/roguemines = 1,
/mob/living/simple_mob/animal/wolf/space/roguemines = 3,
/mob/living/simple_mob/vore/wolf/space/roguemines = 3,
/mob/living/simple_mob/animal/space/carp/large/roguemines = 2,
/mob/living/simple_mob/animal/space/bear/roguemines = 1),
"tier4" = list(
/mob/living/simple_mob/animal/wolf/space/roguemines = 1,
/mob/living/simple_mob/vore/wolf/space/roguemines = 1,
/mob/living/simple_mob/animal/space/carp/large/roguemines = 4,
/mob/living/simple_mob/animal/space/bear/roguemines = 2),

Some files were not shown because too many files have changed in this diff Show More