mirror of
https://github.com/KabKebab/GS13.git
synced 2026-08-23 21:16:16 +01:00
+11
-11
@@ -36,17 +36,17 @@
|
||||
#define BLOODCRAWL_EAT 2
|
||||
|
||||
//Mob bio-types
|
||||
#define MOB_ORGANIC "organic"
|
||||
#define MOB_INORGANIC "inorganic"
|
||||
#define MOB_ROBOTIC "robotic"
|
||||
#define MOB_SILICON "silicon"
|
||||
#define MOB_UNDEAD "undead"
|
||||
#define MOB_HUMANOID "humanoid"
|
||||
#define MOB_BUG "bug"
|
||||
#define MOB_BEAST "beast"
|
||||
#define MOB_EPIC "epic" //megafauna
|
||||
#define MOB_REPTILE "reptile"
|
||||
#define MOB_SPIRIT "spirit"
|
||||
#define MOB_ORGANIC (1 << 0)
|
||||
#define MOB_INORGANIC (1 << 1)
|
||||
#define MOB_ROBOTIC (1 << 2)
|
||||
#define MOB_SILICON (1 << 3)
|
||||
#define MOB_UNDEAD (1 << 4)
|
||||
#define MOB_HUMANOID (1 << 5)
|
||||
#define MOB_BUG (1 << 6)
|
||||
#define MOB_BEAST (1 << 7)
|
||||
#define MOB_EPIC (1 << 8) //megafauna
|
||||
#define MOB_REPTILE (1 << 9)
|
||||
#define MOB_SPIRIT (1 << 10)
|
||||
|
||||
//Organ defines for carbon mobs
|
||||
#define ORGAN_ORGANIC 1
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(isliving(parent))
|
||||
host_mob = parent
|
||||
|
||||
if(MOB_SILICON in host_mob.mob_biotypes) //Shouldn't happen, but this avoids HUD runtimes in case a silicon gets them somehow.
|
||||
if((MOB_SILICON & host_mob.mob_biotypes)) //Shouldn't happen, but this avoids HUD runtimes in case a silicon gets them somehow.
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
host_mob.hud_set_nanite_indicator()
|
||||
@@ -196,7 +196,7 @@
|
||||
NP.receive_signal(code, source)
|
||||
|
||||
/datum/component/nanites/proc/check_viable_biotype()
|
||||
if((MOB_SILICON in host_mob.mob_biotypes))
|
||||
if((MOB_SILICON & host_mob.mob_biotypes))
|
||||
qdel(src) //bodytype no longer sustains nanites
|
||||
|
||||
/datum/component/nanites/proc/check_access(datum/source, obj/O)
|
||||
|
||||
@@ -17,12 +17,7 @@
|
||||
if(HasDisease(D))
|
||||
return FALSE
|
||||
|
||||
var/can_infect = FALSE
|
||||
for(var/host_type in D.infectable_biotypes)
|
||||
if(host_type in mob_biotypes)
|
||||
can_infect = TRUE
|
||||
break
|
||||
if(!can_infect)
|
||||
if(!(D.infectable_biotypes & mob_biotypes))
|
||||
return FALSE
|
||||
|
||||
if(!(type in D.viable_mobtypes))
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
var/list/required_organs = list()
|
||||
var/needs_all_cures = TRUE
|
||||
var/list/strain_data = list() //dna_spread special bullshit
|
||||
var/list/infectable_biotypes = list(MOB_ORGANIC) //if the disease can spread on organics, synthetics, or undead
|
||||
var/infectable_biotypes = MOB_ORGANIC //if the disease can spread on organics, synthetics, or undead
|
||||
var/process_dead = FALSE //if this ticks while the host is dead
|
||||
var/copy_type = null //if this is null, copies will use the type of the instance being copied
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
/datum/symptom/undead_adaptation/OnRemove(datum/disease/advance/A)
|
||||
A.process_dead = FALSE
|
||||
A.infectable_biotypes -= MOB_UNDEAD
|
||||
A.infectable_biotypes &= ~MOB_UNDEAD
|
||||
|
||||
/datum/symptom/inorganic_adaptation
|
||||
name = "Inorganic Biology"
|
||||
@@ -30,4 +30,4 @@
|
||||
A.infectable_biotypes |= MOB_INORGANIC
|
||||
|
||||
/datum/symptom/inorganic_adaptation/OnRemove(datum/disease/advance/A)
|
||||
A.infectable_biotypes -= MOB_INORGANIC
|
||||
A.infectable_biotypes &= ~MOB_INORGANIC
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
desc = "If left untreated subject will regurgitate bees."
|
||||
severity = DISEASE_SEVERITY_MEDIUM
|
||||
infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD) //bees nesting in corpses
|
||||
infectable_biotypes = MOB_ORGANIC|MOB_UNDEAD //bees nesting in corpses
|
||||
|
||||
/datum/disease/beesease/stage_act()
|
||||
..()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
permeability_mod = 0.75
|
||||
desc = "This disease disrupts the magnetic field of your body, making it act as if a powerful magnet. Injections of iron help stabilize the field."
|
||||
severity = DISEASE_SEVERITY_MEDIUM
|
||||
infectable_biotypes = list(MOB_ORGANIC, MOB_ROBOTIC)
|
||||
infectable_biotypes = MOB_ORGANIC|MOB_ROBOTIC
|
||||
process_dead = TRUE
|
||||
|
||||
/datum/disease/magnitis/stage_act()
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
desc = "Subject is possessed by the vengeful spirit of a parrot. Call the priest."
|
||||
severity = DISEASE_SEVERITY_MEDIUM
|
||||
infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_INORGANIC, MOB_ROBOTIC)
|
||||
infectable_biotypes = MOB_ORGANIC|MOB_UNDEAD|MOB_INORGANIC|MOB_ROBOTIC
|
||||
bypasses_immunity = TRUE //2spook
|
||||
var/mob/living/simple_animal/parrot/Poly/ghost/parrot
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
stage4 = list("<span class='danger'>Your skin feels very loose.</span>", "<span class='danger'>You can feel... something...inside you.</span>")
|
||||
stage5 = list("<span class='danger'>Your skin feels as if it's about to burst off!</span>")
|
||||
new_form = /mob/living/silicon/robot
|
||||
infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_ROBOTIC)
|
||||
infectable_biotypes = MOB_ORGANIC|MOB_UNDEAD|MOB_ROBOTIC
|
||||
bantype = "Cyborg"
|
||||
|
||||
/datum/disease/transformation/robot/stage_act()
|
||||
@@ -284,7 +284,7 @@
|
||||
stage4 = list("<span class='danger'>You're ravenous.</span>")
|
||||
stage5 = list("<span class='danger'>You have become a morph.</span>")
|
||||
new_form = /mob/living/simple_animal/hostile/morph
|
||||
infectable_biotypes = list(MOB_ORGANIC, MOB_INORGANIC, MOB_UNDEAD) //magic!
|
||||
infectable_biotypes = MOB_ORGANIC|MOB_INORGANIC|MOB_UNDEAD //magic!
|
||||
|
||||
/datum/disease/transformation/gondola
|
||||
name = "Gondola Transformation"
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
say("Subject may not have abiotic items on.")
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1)
|
||||
return
|
||||
if(!(MOB_ORGANIC in C.mob_biotypes))
|
||||
if(!(MOB_ORGANIC & C.mob_biotypes))
|
||||
say("Subject is not organic.")
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1)
|
||||
return
|
||||
|
||||
@@ -307,7 +307,23 @@
|
||||
/obj/item/storage/bag/tray/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_items = 15 //I want my sushi god damn it
|
||||
STR.insert_preposition = "on"
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/reagent_containers/food,
|
||||
/obj/item/kitchen,
|
||||
/obj/item/storage/box/donkpockets))
|
||||
|
||||
/obj/item/storage/bag/tray/pre_attack(atom/A, mob/living/user, params)
|
||||
if(istype(A, /obj/structure/table) && user.a_intent == INTENT_HELP) //I want my tray god damn it
|
||||
if(user.transferItemToLoc(src, get_turf(A)))
|
||||
var/list/click_params = params2list(params)
|
||||
if(!click_params || !click_params["icon-x"] || !click_params["icon-y"])
|
||||
return
|
||||
pixel_x = CLAMP(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2)
|
||||
pixel_y = CLAMP(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/storage/bag/tray/attack(mob/living/M, mob/living/user)
|
||||
. = ..()
|
||||
@@ -336,7 +352,10 @@
|
||||
/obj/item/storage/bag/tray/update_icon()
|
||||
cut_overlays()
|
||||
for(var/obj/item/I in contents)
|
||||
add_overlay(new /mutable_appearance(I))
|
||||
var/mutable_appearance/MA = new (I) //I want my icons god damn it
|
||||
MA.pixel_x = rand(-6, 6)
|
||||
MA.pixel_y = rand(-6, 6)
|
||||
add_overlay(MA)
|
||||
|
||||
/obj/item/storage/bag/tray/Entered()
|
||||
. = ..()
|
||||
|
||||
@@ -416,99 +416,53 @@
|
||||
icon_state = "donkpocketbox"
|
||||
illustration=null
|
||||
price = 10
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket
|
||||
var/warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm
|
||||
|
||||
/obj/item/storage/box/donkpockets/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket))
|
||||
STR.can_hold = typecacheof(list(donktype, warmtype), TRUE)
|
||||
|
||||
/obj/item/storage/box/donkpockets/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new donktype(src)
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketspicy
|
||||
name = "box of spicy-flavoured donk-pockets"
|
||||
icon_state = "donkpocketboxspicy"
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket/spicy
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketspicy/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket/spicy))
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketspicy/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket/spicy(src)
|
||||
donktype = /obj/item/reagent_containers/food/snacks/donkpocket/spicy
|
||||
warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm/spicy
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketteriyaki
|
||||
name = "box of teriyaki-flavoured donk-pockets"
|
||||
icon_state = "donkpocketboxteriyaki"
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket/teriyaki
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketteriyaki/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket/teriyaki))
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketteriyaki/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket/teriyaki(src)
|
||||
donktype = /obj/item/reagent_containers/food/snacks/donkpocket/teriyaki
|
||||
warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm/teriyaki
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketpizza
|
||||
name = "box of pizza-flavoured donk-pockets"
|
||||
icon_state = "donkpocketboxpizza"
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket/pizza
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketpizza/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket/pizza))
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketpizza/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket/pizza(src)
|
||||
donktype = /obj/item/reagent_containers/food/snacks/donkpocket/pizza
|
||||
warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm/pizza
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketgondola
|
||||
name = "box of gondola-flavoured donk-pockets"
|
||||
icon_state = "donkpocketboxgondola"
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket/gondola
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketgondola/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket/gondola))
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketgondola/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket/gondola(src)
|
||||
donktype = /obj/item/reagent_containers/food/snacks/donkpocket/gondola
|
||||
warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm/gondola
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketberry
|
||||
name = "box of berry-flavoured donk-pockets"
|
||||
icon_state = "donkpocketboxberry"
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket/berry
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketberry/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket/berry))
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketberry/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket/berry(src)
|
||||
donktype = /obj/item/reagent_containers/food/snacks/donkpocket/berry
|
||||
warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm/berry
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpockethonk
|
||||
name = "box of banana-flavoured donk-pockets"
|
||||
icon_state = "donkpocketboxbanana"
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket/honk
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpockethonk/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket/honk))
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpockethonk/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket/honk(src)
|
||||
donktype = /obj/item/reagent_containers/food/snacks/donkpocket/honk
|
||||
warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm/honk
|
||||
|
||||
/obj/item/storage/box/monkeycubes
|
||||
name = "monkey cube box"
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
health = maxHealth
|
||||
name = "blob zombie"
|
||||
desc = "A shambling corpse animated by the blob."
|
||||
mob_biotypes += MOB_HUMANOID
|
||||
mob_biotypes |= MOB_HUMANOID
|
||||
melee_damage_lower += 8
|
||||
melee_damage_upper += 11
|
||||
movement_type = GROUND
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "clockwork marauder"
|
||||
desc = "The stalwart apparition of a soldier, blazing with crimson flames. It's armed with a gladius and shield."
|
||||
icon_state = "clockwork_marauder"
|
||||
mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_INORGANIC|MOB_HUMANOID
|
||||
health = 120
|
||||
maxHealth = 120
|
||||
force_threshold = 8
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "imp"
|
||||
icon_living = "imp"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speed = 1
|
||||
a_intent = INTENT_HARM
|
||||
stop_automated_movement = 1
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
var/icon_stun = "revenant_stun"
|
||||
var/icon_drain = "revenant_draining"
|
||||
var/stasis = FALSE
|
||||
mob_biotypes = list(MOB_SPIRIT)
|
||||
mob_biotypes = MOB_SPIRIT
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
health = INFINITY //Revenants don't use health, they use essence instead
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "daemon"
|
||||
icon_living = "daemon"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speed = 1
|
||||
a_intent = INTENT_HARM
|
||||
stop_automated_movement = 1
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
speak_emote = list("tones")
|
||||
initial_language_holder = /datum/language_holder/swarmer
|
||||
bubble_icon = "swarmer"
|
||||
mob_biotypes = list(MOB_ROBOTIC)
|
||||
mob_biotypes = MOB_ROBOTIC
|
||||
health = 40
|
||||
maxHealth = 40
|
||||
status_flags = CANPUSH
|
||||
|
||||
@@ -289,6 +289,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=2' [current_tab == 2 ? "class='linkOn'" : ""]>Character Appearance</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=3' [current_tab == 3 ? "class='linkOn'" : ""]>Loadout</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>Game Preferences</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=4' [current_tab == 4 ? "class='linkOn'" : ""]>Antagonist Preferences</a>"
|
||||
|
||||
if(!path)
|
||||
dat += "<div class='notice'>Please create an account to save your preferences</div>"
|
||||
@@ -301,26 +302,26 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
dat += "<HR>"
|
||||
|
||||
switch(current_tab)
|
||||
if (0) // Character Settings#
|
||||
if(path)
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(S)
|
||||
dat += "<center>"
|
||||
var/name
|
||||
var/unspaced_slots = 0
|
||||
for(var/i=1, i<=max_save_slots, i++)
|
||||
unspaced_slots++
|
||||
if(unspaced_slots > 4)
|
||||
dat += "<br>"
|
||||
unspaced_slots = 0
|
||||
S.cd = "/character[i]"
|
||||
S["real_name"] >> name
|
||||
if(!name)
|
||||
name = "+"
|
||||
dat += "<a style='white-space:nowrap;' href='?_src_=prefs;preference=changeslot;num=[i];' [i == default_slot ? "class='linkOn'" : ""]>[name]</a> "
|
||||
dat += "</center>"
|
||||
if(path) //Show list of characters
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(S)
|
||||
dat += "<center>"
|
||||
var/name
|
||||
var/unspaced_slots = 0
|
||||
for(var/i=1, i<=max_save_slots, i++)
|
||||
unspaced_slots++
|
||||
if(unspaced_slots > 4)
|
||||
dat += "<br>"
|
||||
unspaced_slots = 0
|
||||
S.cd = "/character[i]"
|
||||
S["real_name"] >> name
|
||||
if(!name)
|
||||
name = "+"
|
||||
dat += "<a style='white-space:nowrap;' href='?_src_=prefs;preference=changeslot;num=[i];' [i == default_slot ? "class='linkOn'" : ""]>[name]</a> "
|
||||
dat += "</center>"
|
||||
|
||||
switch(current_tab)
|
||||
if (0) // Character Settings
|
||||
dat += "<center><h2>Occupation Choices</h2>"
|
||||
dat += "<a href='?_src_=prefs;preference=job;task=menu'>Set Occupation Preferences</a><br></center>"
|
||||
if(CONFIG_GET(flag/roundstart_traits))
|
||||
@@ -379,24 +380,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
//Character Appearance
|
||||
if(2)
|
||||
if(path)
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(S)
|
||||
dat += "<center>"
|
||||
var/name
|
||||
var/unspaced_slots = 0
|
||||
for(var/i=1, i<=max_save_slots, i++)
|
||||
unspaced_slots++
|
||||
if(unspaced_slots > 4)
|
||||
dat += "<br>"
|
||||
unspaced_slots = 0
|
||||
S.cd = "/character[i]"
|
||||
S["real_name"] >> name
|
||||
if(!name)
|
||||
name = "+"
|
||||
dat += "<a style='white-space:nowrap;' href='?_src_=prefs;preference=changeslot;num=[i];' [i == default_slot ? "class='linkOn'" : ""]>[name]</a> "
|
||||
dat += "</center>"
|
||||
|
||||
update_preview_icon()
|
||||
dat += "<table><tr><td width='340px' height='300px' valign='top'>"
|
||||
dat += "<h2>Flavor Text</h2>"
|
||||
@@ -981,7 +964,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
if(jobban_isbanned(user, ROLE_SYNDICATE))
|
||||
dat += "<font color=red><b>You are banned from antagonist roles.</b></font>"
|
||||
src.be_special = list()
|
||||
be_special = list()
|
||||
|
||||
|
||||
for (var/i in GLOB.hyper_special_roles)
|
||||
@@ -1060,35 +1043,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
p_map += " (No longer exists)"
|
||||
if(CONFIG_GET(flag/allow_map_voting))
|
||||
dat += "<b>Preferred Map:</b> <a href='?_src_=prefs;preference=preferred_map;task=input'>[p_map]</a><br>"
|
||||
|
||||
dat += "</td><td width='300px' height='300px' valign='top'>"
|
||||
|
||||
dat += "<h2>Special Role Settings</h2>"
|
||||
|
||||
if(jobban_isbanned(user, ROLE_SYNDICATE))
|
||||
dat += "<font color=red><b>You are banned from antagonist roles.</b></font>"
|
||||
src.be_special = list()
|
||||
|
||||
|
||||
for (var/i in GLOB.special_roles)
|
||||
if(jobban_isbanned(user, i))
|
||||
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;jobbancheck=[i]'>BANNED</a><br>"
|
||||
else
|
||||
var/days_remaining = null
|
||||
if(ispath(GLOB.special_roles[i]) && CONFIG_GET(flag/use_age_restriction_for_jobs)) //If it's a game mode antag, check if the player meets the minimum age
|
||||
var/mode_path = GLOB.special_roles[i]
|
||||
var/datum/game_mode/temp_mode = new mode_path
|
||||
days_remaining = temp_mode.get_remaining_days(user.client)
|
||||
|
||||
if(days_remaining)
|
||||
dat += "<b>Be [capitalize(i)]:</b> <font color=red> \[IN [days_remaining] DAYS]</font><br>"
|
||||
else
|
||||
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;preference=be_special;be_special_type=[i]'>[(i in be_special) ? "Enabled" : "Disabled"]</a><br>"
|
||||
dat += "<b>Midround Antagonist:</b> <a href='?_src_=prefs;preference=allow_midround_antag'>[(toggles & MIDROUND_ANTAG) ? "Enabled" : "Disabled"]</a><br>"
|
||||
|
||||
dat += "<br>"
|
||||
|
||||
if(3)
|
||||
if(3) //Item Loadout
|
||||
if(!gear_tab)
|
||||
gear_tab = GLOB.loadout_items[1]
|
||||
dat += "<table align='center' width='100%'>"
|
||||
@@ -1144,6 +1101,28 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "</td><td><font size=2><i>[gear.description]</i></font></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(4) //Antag Preferences
|
||||
dat += "<h1>Special Role Settings</h1>"
|
||||
if(jobban_isbanned(user, ROLE_SYNDICATE))
|
||||
dat += "<font color=red><h3><b>You are banned from antagonist roles.</b></h3></font>"
|
||||
be_special = list()
|
||||
|
||||
for (var/i in GLOB.special_roles)
|
||||
if(jobban_isbanned(user, i))
|
||||
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;jobbancheck=[i]'>BANNED</a><br>"
|
||||
else
|
||||
var/days_remaining = null
|
||||
if(ispath(GLOB.special_roles[i]) && CONFIG_GET(flag/use_age_restriction_for_jobs)) //If it's a game mode antag, check if the player meets the minimum age
|
||||
var/mode_path = GLOB.special_roles[i]
|
||||
var/datum/game_mode/temp_mode = new mode_path
|
||||
days_remaining = temp_mode.get_remaining_days(user.client)
|
||||
|
||||
if(days_remaining)
|
||||
dat += "<b>Be [capitalize(i)]:</b> <font color=red> \[IN [days_remaining] DAYS]</font><br>"
|
||||
else
|
||||
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;preference=be_special;be_special_type=[i]'>[(i in be_special) ? "Enabled" : "Disabled"]</a><br>"
|
||||
dat += "<b>Midround Antagonist:</b> <a href='?_src_=prefs;preference=allow_midround_antag'>[(toggles & MIDROUND_ANTAG) ? "Enabled" : "Disabled"]</a><br>"
|
||||
|
||||
dat += "<hr><center>"
|
||||
|
||||
if(!IsGuestKey(user.key))
|
||||
@@ -2504,9 +2483,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if("be_special")
|
||||
var/be_special_type = href_list["be_special_type"]
|
||||
if(be_special_type in be_special)
|
||||
be_special -= be_special_type
|
||||
be_special -= list(be_special_type)
|
||||
else
|
||||
be_special += be_special_type
|
||||
be_special += list(be_special_type)
|
||||
|
||||
if("name")
|
||||
be_random_name = !be_random_name
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// You do not need to raise this if you are adding new values that have sane defaults.
|
||||
// Only raise this value when changing the meaning/format/name/layout of an existing value
|
||||
// where you would want the updater procs below to run
|
||||
#define SAVEFILE_VERSION_MAX 22
|
||||
#define SAVEFILE_VERSION_MAX 23
|
||||
|
||||
/*
|
||||
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
|
||||
@@ -44,6 +44,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
/datum/preferences/proc/update_preferences(current_version, savefile/S)
|
||||
if(current_version < 21)
|
||||
clientfps = 60
|
||||
if(current_version < 23)
|
||||
S["be_special"] >> be_special
|
||||
return
|
||||
|
||||
/datum/preferences/proc/update_character(current_version, savefile/S)
|
||||
@@ -56,6 +58,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
features["balls_fluid"] = /datum/reagent/consumable/semen
|
||||
if(features["breasts_fluid"])
|
||||
features["breasts_fluid"] = /datum/reagent/consumable/milk
|
||||
if(current_version < 23)
|
||||
if(be_special)
|
||||
WRITE_FILE(S["special_roles"], be_special)
|
||||
|
||||
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
||||
if(!ckey)
|
||||
@@ -91,7 +96,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["tgui_lock"] >> tgui_lock
|
||||
S["buttons_locked"] >> buttons_locked
|
||||
S["windowflash"] >> windowflashing
|
||||
S["be_special"] >> be_special
|
||||
|
||||
|
||||
S["default_slot"] >> default_slot
|
||||
@@ -214,7 +218,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["tgui_lock"], tgui_lock)
|
||||
WRITE_FILE(S["buttons_locked"], buttons_locked)
|
||||
WRITE_FILE(S["windowflash"], windowflashing)
|
||||
WRITE_FILE(S["be_special"], be_special)
|
||||
WRITE_FILE(S["default_slot"], default_slot)
|
||||
WRITE_FILE(S["toggles"], toggles)
|
||||
WRITE_FILE(S["chat_toggles"], chat_toggles)
|
||||
@@ -362,6 +365,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["job_engsec_med"] >> job_engsec_med
|
||||
S["job_engsec_low"] >> job_engsec_low
|
||||
|
||||
//Antags
|
||||
S["special_roles"] >> be_special
|
||||
|
||||
//Quirks
|
||||
S["all_quirks"] >> all_quirks
|
||||
|
||||
@@ -585,22 +591,23 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["prefered_security_department"] , prefered_security_department)
|
||||
|
||||
//Jobs
|
||||
WRITE_FILE(S["joblessrole"] , joblessrole)
|
||||
WRITE_FILE(S["joblessrole"] , joblessrole)
|
||||
WRITE_FILE(S["job_civilian_high"] , job_civilian_high)
|
||||
WRITE_FILE(S["job_civilian_med"] , job_civilian_med)
|
||||
WRITE_FILE(S["job_civilian_low"] , job_civilian_low)
|
||||
WRITE_FILE(S["job_medsci_high"] , job_medsci_high)
|
||||
WRITE_FILE(S["job_medsci_high"] , job_medsci_high)
|
||||
WRITE_FILE(S["job_medsci_med"] , job_medsci_med)
|
||||
WRITE_FILE(S["job_medsci_low"] , job_medsci_low)
|
||||
WRITE_FILE(S["job_engsec_high"] , job_engsec_high)
|
||||
WRITE_FILE(S["job_engsec_high"] , job_engsec_high)
|
||||
WRITE_FILE(S["job_engsec_med"] , job_engsec_med)
|
||||
WRITE_FILE(S["job_engsec_low"] , job_engsec_low)
|
||||
//Record Flavor Text
|
||||
WRITE_FILE(S["security_records"] , security_records)
|
||||
WRITE_FILE(S["medical_records"] , medical_records)
|
||||
//hide c-key
|
||||
WRITE_FILE(S["hide_ckey"] , hide_ckey)
|
||||
//Quirks
|
||||
WRITE_FILE(S["security_records"] , security_records)
|
||||
WRITE_FILE(S["medical_records"] , medical_records)
|
||||
|
||||
//Misc.
|
||||
WRITE_FILE(S["special_roles"] , be_special) //Preferences don't load every character change
|
||||
WRITE_FILE(S["hide_ckey"] , hide_ckey)
|
||||
WRITE_FILE(S["all_quirks"] , all_quirks)
|
||||
|
||||
cit_character_pref_save(S)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
continue
|
||||
if(!H.getorgan(/obj/item/organ/appendix)) //Don't give the disease to some who lacks it, only for it to be auto-cured
|
||||
continue
|
||||
if(!(MOB_ORGANIC in H.mob_biotypes)) //biotype sleeper bugs strike again, once again making appendicitis pick a target that can't take it
|
||||
if(!(MOB_ORGANIC & H.mob_biotypes)) //biotype sleeper bugs strike again, once again making appendicitis pick a target that can't take it
|
||||
continue
|
||||
var/foundAlready = FALSE //don't infect someone that already has appendicitis
|
||||
for(var/datum/disease/appendicitis/A in H.diseases)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
foodtype = GRAIN | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizza/margherita/robo/Initialize()
|
||||
bonus_reagents += list("nanomachines" = 70)
|
||||
bonus_reagents += list(/datum/reagent/nanomachines = 70)
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizzaslice/margherita
|
||||
|
||||
@@ -738,11 +738,10 @@
|
||||
if(1)
|
||||
new /obj/item/melee/ghost_sword(src)
|
||||
if(2)
|
||||
new /obj/item/lava_staff(src)
|
||||
if(3)
|
||||
new /obj/item/book/granter/spell/sacredflame(src)
|
||||
new /obj/item/gun/magic/wand/fireball(src)
|
||||
if(4)
|
||||
new /obj/item/lava_staff(src)
|
||||
if(3 to 4)
|
||||
new /obj/item/dragons_blood(src)
|
||||
|
||||
/obj/structure/closet/crate/necropolis/dragon/crusher
|
||||
@@ -852,33 +851,19 @@
|
||||
icon_state = "vial"
|
||||
|
||||
/obj/item/dragons_blood/attack_self(mob/living/carbon/human/user)
|
||||
if(!istype(user))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/random = rand(1,4)
|
||||
|
||||
switch(random)
|
||||
if(1)
|
||||
to_chat(user, "<span class='danger'>Your appearance morphs to that of a very small humanoid ash dragon! You get to look like a freak without the cool abilities.</span>")
|
||||
H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade Legs")
|
||||
H.eye_color = "fee5a3"
|
||||
H.set_species(/datum/species/lizard)
|
||||
if(2)
|
||||
to_chat(user, "<span class='danger'>Your flesh begins to melt! Miraculously, you seem fine otherwise.</span>")
|
||||
H.set_species(/datum/species/skeleton)
|
||||
if(3)
|
||||
to_chat(user, "<span class='danger'>Power courses through you! You can now shift your form at will.</span>")
|
||||
if(user.mind)
|
||||
var/obj/effect/proc_holder/spell/targeted/shapeshift/dragon/D = new
|
||||
user.mind.AddSpell(D)
|
||||
if(4)
|
||||
to_chat(user, "<span class='danger'>You feel like you could walk straight through lava now.</span>")
|
||||
H.weather_immunities |= "lava"
|
||||
if(prob(50))
|
||||
to_chat(user, "<span class='danger'>You feel like you could walk straight through lava now.</span>")
|
||||
user.weather_immunities |= "lava"
|
||||
else
|
||||
to_chat(user, "<span class='danger'>Power courses through you! You can now shift your form at will.</span>")
|
||||
if(user.mind)
|
||||
var/obj/effect/proc_holder/spell/targeted/shapeshift/dragon/D = new
|
||||
user.mind.AddSpell(D)
|
||||
|
||||
playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/datum/disease/transformation/dragon
|
||||
name = "dragon transformation"
|
||||
cure_text = "nothing"
|
||||
@@ -974,9 +959,7 @@
|
||||
switch(loot)
|
||||
if(1)
|
||||
new /obj/item/mayhem(src)
|
||||
if(2)
|
||||
new /obj/item/gun/magic/staff/spellblade(src)
|
||||
if(3)
|
||||
if(2 to 3)
|
||||
new /obj/item/gun/magic/staff/spellblade(src)
|
||||
|
||||
/obj/structure/closet/crate/necropolis/bubblegum/crusher
|
||||
@@ -1066,6 +1049,7 @@
|
||||
var/random_crystal = pick(choices)
|
||||
new random_crystal(src)
|
||||
new /obj/item/organ/vocal_cords/colossus(src)
|
||||
new /obj/item/skin_dissolver(src)
|
||||
|
||||
/obj/structure/closet/crate/necropolis/colossus/crusher
|
||||
name = "angelic colossus chest"
|
||||
@@ -1354,3 +1338,88 @@
|
||||
new /obj/item/wisp_lantern(src)
|
||||
if(3)
|
||||
new /obj/item/prisoncube(src)
|
||||
|
||||
//THE legion
|
||||
/obj/structure/closet/crate/necropolis/legion
|
||||
name = "\improper Guardian of the Necropolis crate"
|
||||
|
||||
/obj/structure/closet/crate/necropolis/legion/PopulateContents()
|
||||
new /obj/item/staff/storm(src)
|
||||
new /obj/item/skin_dissolver(src)
|
||||
|
||||
/obj/item/staff/storm
|
||||
name = "staff of storms"
|
||||
desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it."
|
||||
icon_state = "staffofstorms"
|
||||
item_state = "staffofstorms"
|
||||
icon = 'icons/obj/guns/magic.dmi'
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
force = 25
|
||||
damtype = BURN
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
var/storm_type = /datum/weather/ash_storm
|
||||
var/storm_cooldown = 0
|
||||
var/static/list/excluded_areas = list(/area/reebe/city_of_cogs)
|
||||
|
||||
/obj/item/staff/storm/attack_self(mob/user)
|
||||
if(storm_cooldown > world.time)
|
||||
to_chat(user, "<span class='warning'>The staff is still recharging!</span>")
|
||||
return
|
||||
|
||||
var/area/user_area = get_area(user)
|
||||
var/turf/user_turf = get_turf(user)
|
||||
if(!user_area || !user_turf || (user_area.type in excluded_areas))
|
||||
to_chat(user, "<span class='warning'>Something is preventing you from using the staff here.</span>")
|
||||
return
|
||||
var/datum/weather/A
|
||||
for(var/V in SSweather.processing)
|
||||
var/datum/weather/W = V
|
||||
if((user_turf.z in W.impacted_z_levels) && W.area_type == user_area.type)
|
||||
A = W
|
||||
break
|
||||
|
||||
if(A)
|
||||
if(A.stage != END_STAGE)
|
||||
if(A.stage == WIND_DOWN_STAGE)
|
||||
to_chat(user, "<span class='warning'>The storm is already ending! It would be a waste to use the staff now.</span>")
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user] holds [src] skywards as an orange beam travels into the sky!</span>", \
|
||||
"<span class='notice'>You hold [src] skyward, dispelling the storm!</span>")
|
||||
playsound(user, 'sound/magic/staff_change.ogg', 200, 0)
|
||||
A.wind_down()
|
||||
log_game("[user] ([key_name(user)]) has dispelled a storm at [AREACOORD(user_turf)]")
|
||||
return
|
||||
else
|
||||
A = new storm_type(list(user_turf.z))
|
||||
A.name = "staff storm"
|
||||
log_game("[user] ([key_name(user)]) has summoned [A] at [AREACOORD(user_turf)]")
|
||||
if (is_special_character(user))
|
||||
message_admins("[A] has been summoned in [ADMIN_VERBOSEJMP(user_turf)] by [user] ([key_name_admin(user)], a non-antagonist")
|
||||
A.area_type = user_area.type
|
||||
A.telegraph_duration = 100
|
||||
A.end_duration = 100
|
||||
|
||||
user.visible_message("<span class='warning'>[user] holds [src] skywards as red lightning crackles into the sky!</span>", \
|
||||
"<span class='notice'>You hold [src] skyward, calling down a terrible storm!</span>")
|
||||
playsound(user, 'sound/magic/staff_change.ogg', 200, 0)
|
||||
A.telegraph()
|
||||
storm_cooldown = world.time + 200
|
||||
|
||||
/obj/item/skin_dissolver
|
||||
name = "bottle of acid"
|
||||
desc = "Of course, you're only planning on keeping this in a safe place..."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "vial"
|
||||
|
||||
/obj/item/skin_dissolver/attack_self(mob/living/carbon/human/user)
|
||||
to_chat(user, "<span class='danger'>Your flesh begins to melt! Miraculously, you seem fine otherwise.</span>")
|
||||
user.set_species(/datum/species/skeleton)
|
||||
playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/skin_dissolver/attack(mob/M, mob/user)
|
||||
if(M == user)
|
||||
attack_self(user)
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
pressure_resistance = 25
|
||||
can_buckle = TRUE
|
||||
buckle_lying = FALSE
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
//Hair colour and style
|
||||
var/hair_color = "000"
|
||||
var/hair_style = "Bald"
|
||||
|
||||
@@ -54,7 +54,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
var/list/species_traits = list()
|
||||
// generic traits tied to having the species
|
||||
var/list/inherent_traits = list()
|
||||
var/list/inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
var/list/inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
|
||||
var/attack_verb = "punch" // punch-specific attack verb
|
||||
var/sound/attack_sound = 'sound/weapons/punch1.ogg'
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
say_mod = "states"
|
||||
species_traits = list(NOBLOOD,NOGENITALS,NOAROUSAL)
|
||||
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_NOFIRE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_NOTHIRST,TRAIT_LIMBATTACHMENT)
|
||||
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
|
||||
meat = null
|
||||
gib_types = /obj/effect/gibspawner/robot
|
||||
damage_overlay_type = "synth"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
id = "fly"
|
||||
say_mod = "buzzes"
|
||||
species_traits = list(NOEYES)
|
||||
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG)
|
||||
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
|
||||
mutanttongue = /obj/item/organ/tongue/fly
|
||||
mutantliver = /obj/item/organ/liver/fly
|
||||
mutantstomach = /obj/item/organ/stomach/fly
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
id = "iron golem"
|
||||
species_traits = list(NOBLOOD,MUTCOLORS,NO_UNDERWEAR,NOGENITALS,NOAROUSAL)
|
||||
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER)
|
||||
inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_INORGANIC|MOB_HUMANOID
|
||||
mutant_organs = list(/obj/item/organ/adamantine_resonator)
|
||||
speedmod = 2
|
||||
armor = 55
|
||||
@@ -634,7 +634,7 @@
|
||||
limbs_id = "clockgolem"
|
||||
info_text = "<span class='bold alloy'>As a </span><span class='bold brass'>Clockwork Golem</span><span class='bold alloy'>, you are faster than other types of golems. On death, you will break down into scrap.</span>"
|
||||
species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES)
|
||||
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
|
||||
armor = 20 //Reinforced, but much less so to allow for fast movement
|
||||
attack_verb = "smash"
|
||||
attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg'
|
||||
@@ -691,7 +691,7 @@
|
||||
Being made of cloth, your body is magic resistant and faster than that of other golems, but weaker and less resilient."
|
||||
species_traits = list(NOBLOOD,NO_UNDERWEAR) //no mutcolors, and can burn
|
||||
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOGUNS)
|
||||
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||
armor = 15 //feels no pain, but not too resistant
|
||||
burnmod = 2 // don't get burned
|
||||
speedmod = 1 // not as heavy as stone
|
||||
@@ -965,7 +965,7 @@
|
||||
special_names = list("Head", "Broth", "Fracture", "Rattler", "Appetit")
|
||||
liked_food = GROSS | MEAT | RAW
|
||||
toxic_food = null
|
||||
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||
mutanttongue = /obj/item/organ/tongue/bone
|
||||
sexes = FALSE
|
||||
fixed_mut_color = "ffffff"
|
||||
@@ -1014,7 +1014,7 @@
|
||||
else
|
||||
playsound(get_turf(owner),'sound/magic/RATTLEMEBONES.ogg', 100)
|
||||
for(var/mob/living/L in orange(7, get_turf(owner)))
|
||||
if((MOB_UNDEAD in L.mob_biotypes) || isgolem(L) || HAS_TRAIT(L, TRAIT_RESISTCOLD))
|
||||
if((MOB_UNDEAD & L.mob_biotypes) || isgolem(L) || HAS_TRAIT(L, TRAIT_RESISTCOLD))
|
||||
return //Do not affect our brothers
|
||||
|
||||
to_chat(L, "<span class='cultlarge'>A spine-chilling sound chills you to the bone!</span>")
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
say_mod = "hisses"
|
||||
default_color = "00FF00"
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,LIPS,WINGCOLOR)
|
||||
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_REPTILE)
|
||||
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE
|
||||
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur", "deco_wings")
|
||||
mutanttongue = /obj/item/organ/tongue/lizard
|
||||
mutanttail = /obj/item/organ/tail/lizard
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
say_mod = "flutters"
|
||||
default_color = "00FF00"
|
||||
species_traits = list(LIPS, NOEYES)
|
||||
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG)
|
||||
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
|
||||
mutant_bodyparts = list("moth_wings", "moth_fluff")
|
||||
default_features = list("moth_wings" = "Plain", "moth_fluff" = "Plain")
|
||||
attack_verb = "slash"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
meat = /obj/item/stack/sheet/mineral/plasma
|
||||
species_traits = list(NOBLOOD,NOTRANSSTING)
|
||||
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_NOHUNGER,TRAIT_NOTHIRST)
|
||||
inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_INORGANIC|MOB_HUMANOID
|
||||
mutantlungs = /obj/item/organ/lungs/plasmaman
|
||||
mutanttongue = /obj/item/organ/tongue/bone/plasmaman
|
||||
mutantliver = /obj/item/organ/liver/plasmaman
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton
|
||||
species_traits = list(NOBLOOD,NOGENITALS,NOAROUSAL)
|
||||
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_NOTHIRST,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_FAKEDEATH, TRAIT_CALCIUM_HEALER)
|
||||
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||
mutanttongue = /obj/item/organ/tongue/bone
|
||||
damage_overlay_type = ""//let's not show bloody wounds or burns over bones.
|
||||
disliked_food = NONE
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
sexes = 0
|
||||
species_traits = list(NOTRANSSTING,NOGENITALS,NOAROUSAL) //all of these + whatever we inherit from the real species
|
||||
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOTHIRST,TRAIT_NOBREATH)
|
||||
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
|
||||
dangerous_existence = 1
|
||||
blacklisted = 1
|
||||
meat = null
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
default_color = "FFFFFF"
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD)
|
||||
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOTHIRST,TRAIT_NOBREATH)
|
||||
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||
default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None")
|
||||
exotic_bloodtype = "U"
|
||||
use_skintones = TRUE
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
|
||||
species_traits = list(NOBLOOD,NOZOMBIE,NOTRANSSTING)
|
||||
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH,TRAIT_FAKEDEATH)
|
||||
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||
mutanttongue = /obj/item/organ/tongue/zombie
|
||||
var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg')
|
||||
disliked_food = NONE
|
||||
|
||||
@@ -393,7 +393,7 @@
|
||||
return
|
||||
|
||||
// Also no decay if corpse chilled or not organic/undead
|
||||
if(bodytemperature <= T0C-10 || (!(MOB_ORGANIC in mob_biotypes) && !(MOB_UNDEAD in mob_biotypes)))
|
||||
if(bodytemperature <= T0C-10 || (!(MOB_ORGANIC & mob_biotypes) && !(MOB_UNDEAD & mob_biotypes)))
|
||||
return
|
||||
|
||||
// Wait a bit before decaying
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
gender = NEUTER
|
||||
pass_flags = PASSTABLE
|
||||
ventcrawler = VENTCRAWLER_NUDE
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1)
|
||||
type_of_meat = /obj/item/reagent_containers/food/snacks/meat/slab/monkey
|
||||
gib_type = /obj/effect/decal/cleanable/blood/gibs
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/mob/living/proc/spawn_gibs(with_bodyparts, atom/loc_override)
|
||||
var/location = loc_override ? loc_override.drop_location() : drop_location()
|
||||
if(MOB_ROBOTIC in mob_biotypes)
|
||||
if((MOB_ROBOTIC & mob_biotypes))
|
||||
new /obj/effect/gibspawner/robot(location, src, get_static_viruses())
|
||||
else
|
||||
new /obj/effect/gibspawner/generic(location, src, get_static_viruses())
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
var/Noncon = 0
|
||||
var/ERP = 0
|
||||
|
||||
var/list/mob_biotypes = list(MOB_ORGANIC)
|
||||
var/mob_biotypes = MOB_ORGANIC
|
||||
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
|
||||
var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head)
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
bubble_icon = "machine"
|
||||
weather_immunities = list("ash")
|
||||
possible_a_intents = list(INTENT_HELP, INTENT_HARM)
|
||||
mob_biotypes = list(MOB_SILICON)
|
||||
mob_biotypes = MOB_SILICON
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
speech_span = SPAN_ROBOT
|
||||
flags_1 = PREVENT_CONTENTS_EXPLOSION_1 | HEAR_1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "ghost"
|
||||
icon_living = "ghost"
|
||||
mob_biotypes = list(MOB_SPIRIT)
|
||||
mob_biotypes = MOB_SPIRIT
|
||||
attacktext = "raises the hairs on the neck of"
|
||||
response_harm = "disrupts the concentration of"
|
||||
response_disarm = "wafts"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
icon = 'icons/mob/aibots.dmi'
|
||||
layer = MOB_LAYER
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_ROBOTIC)
|
||||
mob_biotypes = MOB_ROBOTIC
|
||||
light_range = 3
|
||||
light_power = 0.9
|
||||
light_color = "#CDDDFF"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
real_name = "Construct"
|
||||
desc = ""
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_INORGANIC)
|
||||
mob_biotypes = MOB_INORGANIC
|
||||
speak_emote = list("hisses")
|
||||
response_help = "thinks better of touching"
|
||||
response_disarm = "flails at"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BUG)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BUG
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
verb_say = "flutters"
|
||||
verb_ask = "flutters inquisitively"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
minbodytemp = 200
|
||||
maxbodytemp = 400
|
||||
unsuitable_atmos_damage = 1
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
maxbodytemp = INFINITY
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BUG)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BUG
|
||||
response_help = "pokes"
|
||||
response_disarm = "shoos"
|
||||
response_harm = "splats"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//Dogs.
|
||||
|
||||
/mob/living/simple_animal/pet/dog
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
response_help = "pets"
|
||||
response_disarm = "bops"
|
||||
response_harm = "kicks"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
sight = (SEE_TURFS | SEE_OBJS)
|
||||
status_flags = (CANPUSH | CANSTUN | CANKNOCKDOWN)
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_ROBOTIC)
|
||||
mob_biotypes = MOB_ROBOTIC
|
||||
speak_emote = list("chirps")
|
||||
speech_span = SPAN_ROBOT
|
||||
bubble_icon = "machine"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
faction = list("neutral")
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
attack_same = 1
|
||||
attacktext = "kicks"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
@@ -112,7 +112,7 @@
|
||||
icon_dead = "cow_dead"
|
||||
icon_gib = "cow_gib"
|
||||
gender = FEMALE
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak = list("moo?","moo","MOOOOOO")
|
||||
speak_emote = list("moos","moos hauntingly")
|
||||
emote_hear = list("brays.")
|
||||
@@ -189,7 +189,7 @@
|
||||
icon_dead = "chick_dead"
|
||||
icon_gib = "chick_gib"
|
||||
gender = FEMALE
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
|
||||
speak_emote = list("cheeps")
|
||||
emote_hear = list("cheeps.")
|
||||
@@ -235,7 +235,7 @@
|
||||
name = "\improper chicken"
|
||||
desc = "Hopefully the eggs are good this season."
|
||||
gender = FEMALE
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
icon_state = "chicken_brown"
|
||||
icon_living = "chicken_brown"
|
||||
icon_dead = "chicken_brown_dead"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST, MOB_REPTILE)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_REPTILE
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
var/body_color //brown, gray and white, leave blank for random
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
var/chew_probability = 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/mob/living/simple_animal/pet
|
||||
icon = 'icons/mob/pets.dmi'
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
blood_volume = BLOOD_VOLUME_NORMAL
|
||||
var/unique_pet = FALSE // if the mob can be renamed
|
||||
var/obj/item/clothing/neck/petcollar/pcollar
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
melee_damage_lower = 18
|
||||
melee_damage_upper = 18
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST, MOB_REPTILE)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_REPTILE
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
|
||||
@@ -10,7 +10,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
desc = "A mysterious being that stands by its charge, ever vigilant."
|
||||
speak_emote = list("hisses")
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_INORGANIC)
|
||||
mob_biotypes = MOB_INORGANIC
|
||||
bubble_icon = "guardian"
|
||||
response_help = "passes through"
|
||||
response_disarm = "flails at"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_living = "bear"
|
||||
icon_dead = "bear_dead"
|
||||
icon_gib = "bear_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak = list("RAWR!","Rawr!","GRR!","Growl!")
|
||||
speak_emote = list("growls", "roars")
|
||||
emote_hear = list("rawrs.","grumbles.","grawls.")
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
density = FALSE
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BUG)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BUG
|
||||
movement_type = FLYING
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
search_objects = 1 //have to find those plant trays!
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/mob/living/simple_animal/hostile/boss/paper_wizard
|
||||
name = "Mjor the Creative"
|
||||
desc = "A wizard with a taste for the arts."
|
||||
mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_INORGANIC|MOB_HUMANOID
|
||||
boss_abilities = list(/datum/action/boss/wizard_summon_minions, /datum/action/boss/wizard_mimic)
|
||||
faction = list("hostile","stickman")
|
||||
del_on_death = TRUE
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_living = "carp"
|
||||
icon_dead = "carp_dead"
|
||||
icon_gib = "carp_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 2)
|
||||
@@ -107,7 +107,7 @@
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 18
|
||||
var/held_icon = "carp"
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/ComponentInitialize()
|
||||
. = ..()
|
||||
AddElement(/datum/element/wuv, "bloops happily!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "gnashes!", EMOTE_AUDIBLE)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
attacktext = "slashes at"
|
||||
attack_sound = 'sound/weapons/circsawhit.ogg'
|
||||
a_intent = INTENT_HARM
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/cat_butcher, /obj/item/circular_saw)
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
|
||||
unsuitable_atmos_damage = 15
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_living = "eyeball"
|
||||
icon_gib = ""
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_ORGANIC)
|
||||
mob_biotypes = MOB_ORGANIC
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "hits"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "faithless"
|
||||
icon_living = "faithless"
|
||||
icon_dead = "faithless_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
gender = MALE
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
icon_state = "guard"
|
||||
icon_living = "guard"
|
||||
icon_dead = "guard_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BUG)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BUG
|
||||
speak_emote = list("chitters")
|
||||
emote_hear = list("chitters")
|
||||
speak_chance = 5
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "goose" // sprites by cogwerks from goonstation, used with permission
|
||||
icon_living = "goose"
|
||||
icon_dead = "goose_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 2)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
icon_state = "crawling"
|
||||
icon_living = "crawling"
|
||||
icon_dead = "dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 80
|
||||
maxHealth = 220
|
||||
health = 220
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon_living = "basic"
|
||||
icon_dead = "basic"
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_ROBOTIC)
|
||||
mob_biotypes = MOB_ROBOTIC
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
healable = 0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_living = "static"
|
||||
icon_dead = "null"
|
||||
gender = NEUTER
|
||||
mob_biotypes = list()
|
||||
mob_biotypes = 0
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
a_intent = INTENT_HARM
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon_state = "leaper"
|
||||
icon_living = "leaper"
|
||||
icon_dead = "leaper_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
maxHealth = 300
|
||||
health = 300
|
||||
ranged = TRUE
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_state = "arachnid"
|
||||
icon_living = "arachnid"
|
||||
icon_dead = "arachnid_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BUG)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BUG
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
maxHealth = 300
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_state = "mook"
|
||||
icon_living = "mook"
|
||||
icon_dead = "mook_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
pixel_x = -16
|
||||
maxHealth = 45
|
||||
health = 45
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
desc = "Death to Nanotrasen. This variant comes in MECHA DEATH flavour."
|
||||
wanted_objects = list()
|
||||
search_objects = 0
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
|
||||
var/spawn_mecha_type = /obj/mecha/combat/marauder/mauler/loaded
|
||||
var/obj/mecha/mecha //Ref to pilot's mecha instance
|
||||
|
||||
@@ -28,7 +28,7 @@ Difficulty: Medium
|
||||
icon_state = "miner"
|
||||
icon_living = "miner"
|
||||
icon = 'icons/mob/broadMobs.dmi'
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
light_color = "#E4C7C5"
|
||||
movement_type = GROUND
|
||||
speak_emote = list("roars")
|
||||
|
||||
@@ -135,7 +135,7 @@ Difficulty: Medium
|
||||
last_legion = FALSE
|
||||
break
|
||||
if(last_legion)
|
||||
loot = list(/obj/item/staff/storm)
|
||||
loot = list(/obj/structure/closet/crate/necropolis/legion)
|
||||
elimination = 0
|
||||
else if(prob(5))
|
||||
loot = list(/obj/structure/closet/crate/necropolis/tendril)
|
||||
@@ -147,64 +147,3 @@ Difficulty: Medium
|
||||
desc = "The message repeats."
|
||||
invisibility = 100
|
||||
|
||||
|
||||
//Loot
|
||||
|
||||
/obj/item/staff/storm
|
||||
name = "staff of storms"
|
||||
desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it."
|
||||
icon_state = "staffofstorms"
|
||||
item_state = "staffofstorms"
|
||||
icon = 'icons/obj/guns/magic.dmi'
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
force = 25
|
||||
damtype = BURN
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
var/storm_type = /datum/weather/ash_storm
|
||||
var/storm_cooldown = 0
|
||||
var/static/list/excluded_areas = list(/area/reebe/city_of_cogs)
|
||||
|
||||
/obj/item/staff/storm/attack_self(mob/user)
|
||||
if(storm_cooldown > world.time)
|
||||
to_chat(user, "<span class='warning'>The staff is still recharging!</span>")
|
||||
return
|
||||
|
||||
var/area/user_area = get_area(user)
|
||||
var/turf/user_turf = get_turf(user)
|
||||
if(!user_area || !user_turf || (user_area.type in excluded_areas))
|
||||
to_chat(user, "<span class='warning'>Something is preventing you from using the staff here.</span>")
|
||||
return
|
||||
var/datum/weather/A
|
||||
for(var/V in SSweather.processing)
|
||||
var/datum/weather/W = V
|
||||
if((user_turf.z in W.impacted_z_levels) && W.area_type == user_area.type)
|
||||
A = W
|
||||
break
|
||||
|
||||
if(A)
|
||||
if(A.stage != END_STAGE)
|
||||
if(A.stage == WIND_DOWN_STAGE)
|
||||
to_chat(user, "<span class='warning'>The storm is already ending! It would be a waste to use the staff now.</span>")
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user] holds [src] skywards as an orange beam travels into the sky!</span>", \
|
||||
"<span class='notice'>You hold [src] skyward, dispelling the storm!</span>")
|
||||
playsound(user, 'sound/magic/staff_change.ogg', 200, 0)
|
||||
A.wind_down()
|
||||
log_game("[user] ([key_name(user)]) has dispelled a storm at [AREACOORD(user_turf)]")
|
||||
return
|
||||
else
|
||||
A = new storm_type(list(user_turf.z))
|
||||
A.name = "staff storm"
|
||||
log_game("[user] ([key_name(user)]) has summoned [A] at [AREACOORD(user_turf)]")
|
||||
if (is_special_character(user))
|
||||
message_admins("[A] has been summoned in [ADMIN_VERBOSEJMP(user_turf)] by [user] ([key_name_admin(user)], a non-antagonist")
|
||||
A.area_type = user_area.type
|
||||
A.telegraph_duration = 100
|
||||
A.end_duration = 100
|
||||
|
||||
user.visible_message("<span class='warning'>[user] holds [src] skywards as red lightning crackles into the sky!</span>", \
|
||||
"<span class='notice'>You hold [src] skyward, calling down a terrible storm!</span>")
|
||||
playsound(user, 'sound/magic/staff_change.ogg', 200, 0)
|
||||
A.telegraph()
|
||||
storm_cooldown = world.time + 200
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
a_intent = INTENT_HARM
|
||||
sentience_type = SENTIENCE_BOSS
|
||||
environment_smash = ENVIRONMENT_SMASH_RWALLS
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_EPIC)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_EPIC
|
||||
obj_damage = 400
|
||||
light_range = 3
|
||||
faction = list("mining", "boss")
|
||||
|
||||
@@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
|
||||
icon_state = "swarmer_console"
|
||||
health = 750
|
||||
maxHealth = 750 //""""low-ish"""" HP because it's a passive boss, and the swarm itself is the real foe
|
||||
mob_biotypes = list(MOB_ROBOTIC)
|
||||
mob_biotypes = MOB_ROBOTIC
|
||||
medal_type = BOSS_MEDAL_SWARMERS
|
||||
score_type = SWARMER_BEACON_SCORE
|
||||
faction = list("mining", "boss", "swarmer")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
maxHealth = 250
|
||||
health = 250
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_INORGANIC)
|
||||
mob_biotypes = MOB_INORGANIC
|
||||
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 8
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_aggro = "Basilisk_alert"
|
||||
icon_dead = "Basilisk_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
move_to_delay = 20
|
||||
projectiletype = /obj/item/projectile/temp/basilisk
|
||||
projectilesound = 'sound/weapons/pierce.ogg'
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "curseblob"
|
||||
icon_living = "curseblob"
|
||||
icon_aggro = "curseblob"
|
||||
mob_biotypes = list(MOB_SPIRIT)
|
||||
mob_biotypes = MOB_SPIRIT
|
||||
movement_type = FLYING
|
||||
move_to_delay = 5
|
||||
vision_range = 20
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_aggro = "Goldgrub_alert"
|
||||
icon_dead = "Goldgrub_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
vision_range = 2
|
||||
aggro_vision_range = 9
|
||||
move_to_delay = 5
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_aggro = "Goliath_alert"
|
||||
icon_dead = "Goliath_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
move_to_delay = 10
|
||||
ranged = 1
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "gutlunch"
|
||||
icon_living = "gutlunch"
|
||||
icon_dead = "gutlunch"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak_emote = list("warbles", "quavers")
|
||||
emote_hear = list("trills.")
|
||||
emote_see = list("sniffs.", "burps.")
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_aggro = "Hivelord_alert"
|
||||
icon_dead = "Hivelord_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC)
|
||||
mob_biotypes = MOB_ORGANIC
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
move_to_delay = 14
|
||||
ranged = 1
|
||||
@@ -98,7 +98,7 @@
|
||||
icon_aggro = "legion"
|
||||
icon_dead = "legion"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
obj_damage = 60
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_living = "nanotrasen"
|
||||
icon_dead = null
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 12
|
||||
turns_per_move = 5
|
||||
response_help = "pokes"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "otherthing"
|
||||
icon_living = "otherthing"
|
||||
icon_dead = "otherthing-dead"
|
||||
mob_biotypes = list(MOB_INORGANIC)
|
||||
mob_biotypes = MOB_INORGANIC
|
||||
health = 80
|
||||
maxHealth = 80
|
||||
obj_damage = 100
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "piratemelee"
|
||||
icon_living = "piratemelee"
|
||||
icon_dead = "pirate_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
response_help = "pushes"
|
||||
@@ -43,7 +43,7 @@
|
||||
var/obj/effect/light_emitter/red_energy_sword/sord
|
||||
|
||||
do_footstep = TRUE
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/melee/space
|
||||
name = "Space Pirate Swashbuckler"
|
||||
icon_state = "piratespace"
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
faction = list("rat")
|
||||
|
||||
/mob/living/simple_animal/hostile/rat/Initialize()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
response_help = "brushes aside"
|
||||
response_disarm = "flails at"
|
||||
response_harm = "hits"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak_chance = 0
|
||||
maxHealth = 15
|
||||
health = 15
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_living = "clown"
|
||||
icon_dead = "clown_dead"
|
||||
icon_gib = "clown_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
turns_per_move = 5
|
||||
response_help = "pokes"
|
||||
response_disarm = "gently pushes aside"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "frog"
|
||||
icon_living = "frog"
|
||||
icon_dead = "frog_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak = list("ribbit","croak")
|
||||
emote_see = list("hops in a circle.", "shakes.")
|
||||
speak_chance = 1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "ghost"
|
||||
icon_living = "ghost"
|
||||
mob_biotypes = list(MOB_SPIRIT)
|
||||
mob_biotypes = MOB_SPIRIT
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
response_help = "passes through"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_living = "old"
|
||||
icon_dead = "old_dead"
|
||||
icon_gib = "clown_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
gender = MALE
|
||||
turns_per_move = 5
|
||||
response_help = "pokes"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_living = "russianmelee"
|
||||
icon_dead = "russianmelee_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
response_help = "pokes"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_living = "skeleton"
|
||||
icon_dead = "skeleton"
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||
turns_per_move = 5
|
||||
speak_emote = list("rattles")
|
||||
emote_see = list("rattles")
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
icon_dead = "human_male"
|
||||
gender = NEUTER
|
||||
a_intent = INTENT_HARM
|
||||
mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_INORGANIC|MOB_HUMANOID
|
||||
|
||||
response_help = "touches"
|
||||
response_disarm = "pushes"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_living = "stickman"
|
||||
icon_dead = "stickman_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_INORGANIC|MOB_HUMANOID
|
||||
gender = MALE
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
@@ -51,7 +51,7 @@
|
||||
icon_state = "stickdog"
|
||||
icon_living = "stickdog"
|
||||
icon_dead = "stickdog_dead"
|
||||
mob_biotypes = list(MOB_INORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_INORGANIC|MOB_BEAST
|
||||
|
||||
/mob/living/simple_animal/hostile/stickman/Initialize(mapload, var/wizard_summoned)
|
||||
. = ..()
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
icon_living = "syndicate"
|
||||
icon_dead = "syndicate_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
response_help = "pokes"
|
||||
@@ -287,7 +287,7 @@
|
||||
icon_living = "viscerator_attack"
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
a_intent = INTENT_HARM
|
||||
mob_biotypes = list(MOB_ROBOTIC)
|
||||
mob_biotypes = MOB_ROBOTIC
|
||||
health = 25
|
||||
maxHealth = 25
|
||||
melee_damage_lower = 15
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "wizard"
|
||||
icon_living = "wizard"
|
||||
icon_dead = "wizard_dead"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 0
|
||||
turns_per_move = 3
|
||||
response_help = "pokes"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_aggro = "Fugu0"
|
||||
icon_dead = "Fugu_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
move_to_delay = 5
|
||||
friendly = "floats near"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/mob/simple_human.dmi'
|
||||
icon_state = "zombie"
|
||||
icon_living = "zombie"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 0
|
||||
stat_attack = UNCONSCIOUS //braains
|
||||
maxHealth = 100
|
||||
@@ -64,7 +64,7 @@
|
||||
icon_state = "husk"
|
||||
icon_living = "husk"
|
||||
icon_dead = "husk"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
speak_chance = 0
|
||||
stat_attack = UNCONSCIOUS //braains
|
||||
maxHealth = 100
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "shade"
|
||||
icon_living = "shade"
|
||||
mob_biotypes = list(MOB_SPIRIT)
|
||||
mob_biotypes = MOB_SPIRIT
|
||||
maxHealth = 40
|
||||
health = 40
|
||||
spacewalk = TRUE
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user