mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
Merge branch 'master' into a_intent
Conflicts: code/modules/mob/mob_defines.dm
This commit is contained in:
@@ -85874,6 +85874,7 @@
|
||||
dir = 8;
|
||||
initialize_directions = 11
|
||||
},
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/floor/carpet,
|
||||
/area/chapel/main)
|
||||
"cQz" = (
|
||||
@@ -89976,11 +89977,9 @@
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/syndicate)
|
||||
"cXL" = (
|
||||
/obj/structure/chair{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/shuttle/red,
|
||||
/area/shuttle/syndicate)
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/bar)
|
||||
"cXM" = (
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
@@ -129978,7 +129977,7 @@ byY
|
||||
bAJ
|
||||
bza
|
||||
bAG
|
||||
bAG
|
||||
cXL
|
||||
bHA
|
||||
bJm
|
||||
bAG
|
||||
|
||||
@@ -52978,7 +52978,7 @@
|
||||
/area/atmos)
|
||||
"clX" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/effect/landmark/vr_spawn,
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/crew_quarters/bar)
|
||||
"clY" = (
|
||||
@@ -56229,7 +56229,7 @@
|
||||
/area/space/nearstation)
|
||||
"csT" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/effect/landmark/vr_spawn,
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/chapel/main)
|
||||
"csU" = (
|
||||
|
||||
@@ -577,6 +577,10 @@ var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
// Examples of huge items: Shotgun, Two Handed Melee Weapons
|
||||
// Examples of gigantic items: Mech Parts, Safe
|
||||
|
||||
// m_intent
|
||||
#define MOVE_INTENT_WALK "walk"
|
||||
#define MOVE_INTENT_RUN "run"
|
||||
|
||||
//Endgame Results
|
||||
|
||||
#define NUKE_NEAR_MISS 1
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
return time2text(world.timeofday, format)
|
||||
|
||||
/proc/gameTimestamp(format = "hh:mm:ss") // Get the game time in text
|
||||
return time2text(world.time - timezoneOffset + 432000, format)
|
||||
return time2text(world.time - timezoneOffset + 432000 - round_start_time, format)
|
||||
|
||||
/* Returns 1 if it is the selected month and day */
|
||||
/proc/isDay(month, day)
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
using = new /obj/screen/mov_intent()
|
||||
using.icon = ui_style
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
|
||||
using.screen_loc = ui_movi
|
||||
static_inventory += using
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
using = new /obj/screen/mov_intent()
|
||||
using.icon = ui_style
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
|
||||
using.screen_loc = ui_movi
|
||||
static_inventory += using
|
||||
|
||||
|
||||
@@ -284,10 +284,10 @@
|
||||
return
|
||||
switch(user.m_intent)
|
||||
if("run")
|
||||
user.m_intent = "walk"
|
||||
user.m_intent = MOVE_INTENT_WALK
|
||||
icon_state = "walking"
|
||||
if("walk")
|
||||
user.m_intent = "run"
|
||||
user.m_intent = MOVE_INTENT_RUN
|
||||
icon_state = "running"
|
||||
user.update_icons()
|
||||
|
||||
|
||||
@@ -351,7 +351,7 @@
|
||||
if("guest_ban")
|
||||
guests_allowed = 0
|
||||
if("usewhitelist")
|
||||
config.usewhitelist = 1
|
||||
config.usewhitelist = TRUE
|
||||
if("allow_metadata")
|
||||
config.allow_Metadata = 1
|
||||
if("kick_inactive")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
config_tag = "traitorchan"
|
||||
traitors_possible = 3 //hard limit on traitors if scaling is turned off
|
||||
restricted_jobs = list("AI", "Cyborg")
|
||||
required_players = 0
|
||||
required_players = 25
|
||||
required_enemies = 1 // how many of each type are required
|
||||
recommended_enemies = 3
|
||||
reroll_friendly = 1
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
//Metal conversion
|
||||
/obj/item/stack/rods/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer)
|
||||
if(!source)
|
||||
if(source)
|
||||
return FALSE
|
||||
if(proselytizer.metal_to_alloy)
|
||||
return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "alloy_cost" = -(amount*REPLICANT_ROD), "spawn_dir" = SOUTH)
|
||||
@@ -86,7 +86,7 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/stack/sheet/metal/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer)
|
||||
if(!source)
|
||||
if(source)
|
||||
return FALSE
|
||||
if(proselytizer.metal_to_alloy)
|
||||
return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "alloy_cost" = -(amount*REPLICANT_METAL), "spawn_dir" = SOUTH)
|
||||
@@ -104,7 +104,7 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/stack/sheet/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer)
|
||||
if(!source)
|
||||
if(source)
|
||||
return FALSE
|
||||
if(proselytizer.metal_to_alloy)
|
||||
return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "alloy_cost" = -(amount*REPLICANT_PLASTEEL), "spawn_dir" = SOUTH)
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
//Brass directly to alloy; scarab only
|
||||
/obj/item/stack/sheet/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer)
|
||||
if(!source)
|
||||
if(source)
|
||||
return FALSE
|
||||
if(!proselytizer.metal_to_alloy)
|
||||
return FALSE
|
||||
|
||||
@@ -52,7 +52,8 @@
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/engineer
|
||||
quickbound = list(/datum/clockwork_scripture/create_object/tinkerers_cache, /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/tinkerers_daemon)
|
||||
quickbound = list(/datum/clockwork_scripture/create_object/tinkerers_cache, /datum/clockwork_scripture/create_object/sigil_of_transgression, \
|
||||
/datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/tinkerers_daemon)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/medical
|
||||
quickbound = list(/datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/ranged_ability/sentinels_compromise, /datum/clockwork_scripture/fellowship_armory, \
|
||||
@@ -70,11 +71,12 @@
|
||||
/datum/clockwork_scripture/create_object/interdiction_lens)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/service
|
||||
quickbound = list(/datum/clockwork_scripture/replicant, /datum/clockwork_scripture/fellowship_armory, /datum/clockwork_scripture/spatial_gateway, \
|
||||
quickbound = list(/datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/fellowship_armory, /datum/clockwork_scripture/spatial_gateway, \
|
||||
/datum/clockwork_scripture/create_object/clockwork_obelisk)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/miner
|
||||
quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/spatial_gateway)
|
||||
quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, \
|
||||
/datum/clockwork_scripture/create_object/sigil_of_transgression, /datum/clockwork_scripture/spatial_gateway)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/access_display(mob/living/user)
|
||||
user << "<span class='warning'>Use the action buttons to recite your limited set of scripture!</span>"
|
||||
|
||||
@@ -243,7 +243,9 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
|
||||
invoker.visible_message(observer_message, creator_message)
|
||||
else if(creator_message)
|
||||
invoker << creator_message
|
||||
new object_path (get_turf(invoker))
|
||||
var/obj/O = new object_path (get_turf(invoker))
|
||||
if(istype(O, /obj/item))
|
||||
invoker.put_in_hands(O)
|
||||
return TRUE
|
||||
|
||||
//Uses a ranged slab ability, returning only when the ability no longer exists(ie, when interrupted) or finishes.
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
if(!is_servant_of_ratvar(C) && !C.null_rod_check() && number_legs) //you have legs right
|
||||
C.apply_damage(noncultist_damage * 0.5, BURN, "l_leg")
|
||||
C.apply_damage(noncultist_damage * 0.5, BURN, "r_leg")
|
||||
if(C.m_intent != "walk")
|
||||
if(C.m_intent != MOVE_INTENT_WALK)
|
||||
if(!iscultist(C))
|
||||
C << "<span class='warning'>Your leg[number_legs > 1 ? "s shiver":" shivers"] with pain!</span>"
|
||||
else //Cultists take extra burn damage
|
||||
@@ -226,8 +226,8 @@
|
||||
qdel(progbar)
|
||||
|
||||
|
||||
//Replicant: Creates a new clockwork slab. Doesn't use create_object because of its unique behavior.
|
||||
/datum/clockwork_scripture/replicant
|
||||
//Replicant: Creates a new clockwork slab.
|
||||
/datum/clockwork_scripture/create_object/replicant
|
||||
descname = "New Clockwork Slab"
|
||||
name = "Replicant"
|
||||
desc = "Creates a new clockwork slab."
|
||||
@@ -235,19 +235,16 @@
|
||||
channel_time = 10
|
||||
required_components = list(REPLICANT_ALLOY = 1)
|
||||
whispered = TRUE
|
||||
object_path = /obj/item/clockwork/slab
|
||||
creator_message = "<span class='brass'>You copy a piece of replicant alloy and command it into a new slab.</span>"
|
||||
usage_tip = "This is inefficient as a way to produce components, as the slab produced must be held by someone with no other slabs to produce components."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
space_allowed = TRUE
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 7
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a new Clockwork Slab."
|
||||
|
||||
/datum/clockwork_scripture/replicant/scripture_effects()
|
||||
invoker << "<span class='brass'>You copy a piece of replicant alloy and command it into a new slab.</span>" //No visible message, for stealth purposes
|
||||
var/obj/item/clockwork/slab/S = new(get_turf(invoker))
|
||||
invoker.put_in_hands(S) //Put it in your hands if possible
|
||||
return TRUE
|
||||
|
||||
|
||||
//Tinkerer's Cache: Creates a tinkerer's cache, allowing global component storage.
|
||||
/datum/clockwork_scripture/create_object/tinkerers_cache
|
||||
|
||||
@@ -1476,6 +1476,7 @@ var/list/airlock_overlays = list()
|
||||
else
|
||||
A = new /obj/structure/door_assembly/door_assembly_0(src.loc)
|
||||
//If you come across a null assemblytype, it will produce the default assembly instead of disintegrating.
|
||||
A.created_name = name
|
||||
|
||||
if(!disassembled)
|
||||
if(A)
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
|
||||
if(istype(AM, /mob/living/carbon))
|
||||
var/mob/living/carbon/M = AM
|
||||
if (M.m_intent != "walk" && anchored)
|
||||
if (M.m_intent != MOVE_INTENT_WALK && anchored)
|
||||
flash()
|
||||
|
||||
/obj/machinery/flasher/portable/attackby(obj/item/weapon/W, mob/user, params)
|
||||
@@ -207,4 +207,4 @@
|
||||
/obj/item/wallframe/flasher/after_attach(var/obj/O)
|
||||
..()
|
||||
var/obj/machinery/flasher/F = O
|
||||
F.id = id
|
||||
F.id = id
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
var/mob/living/L = AM
|
||||
if(L.movement_type & FLYING)
|
||||
return
|
||||
if(L.m_intent != "walk" && prob(40))
|
||||
if(L.m_intent != MOVE_INTENT_WALK && prob(40))
|
||||
var/acid_used = min(acid_level*0.05, 20)
|
||||
if(L.acid_act(10, acid_used, "feet"))
|
||||
acid_level = max(0, acid_level - acid_used*10)
|
||||
@@ -98,4 +98,4 @@
|
||||
if(8)
|
||||
visible_message("<span class='warning'>[target] is struggling to withstand the acid!</span>")
|
||||
if(4)
|
||||
visible_message("<span class='warning'>[target] begins to crumble under the acid!</span>")
|
||||
visible_message("<span class='warning'>[target] begins to crumble under the acid!</span>")
|
||||
|
||||
@@ -88,5 +88,4 @@
|
||||
/obj/item/device/multitool/cyborg
|
||||
name = "multitool"
|
||||
desc = "Optimised and stripped-down version of a regular multitool."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
toolspeed = 2
|
||||
@@ -347,7 +347,7 @@
|
||||
/obj/item/toy/snappop/Crossed(H as mob|obj)
|
||||
if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off
|
||||
var/mob/living/carbon/M = H
|
||||
if(issilicon(H) || M.m_intent == "run")
|
||||
if(issilicon(H) || M.m_intent == MOVE_INTENT_RUN)
|
||||
M << "<span class='danger'>You step on the snap pop!</span>"
|
||||
pop_burst(2, 0)
|
||||
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
/obj/item/weapon/wrench/cyborg
|
||||
name = "automatic wrench"
|
||||
desc = "An advanced robotic wrench. Can be found in construction cyborgs."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
toolspeed = 2
|
||||
|
||||
/obj/item/weapon/wrench/brass
|
||||
@@ -194,8 +193,6 @@
|
||||
/obj/item/weapon/screwdriver/cyborg
|
||||
name = "powered screwdriver"
|
||||
desc = "An electrical screwdriver, designed to be both precise and quick."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "screwdriver_cyborg"
|
||||
usesound = 'sound/items/drill_use.ogg'
|
||||
toolspeed = 2
|
||||
|
||||
@@ -253,8 +250,6 @@
|
||||
/obj/item/weapon/wirecutters/cyborg
|
||||
name = "wirecutters"
|
||||
desc = "This cuts wires."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "cutters_cyborg"
|
||||
toolspeed = 2
|
||||
|
||||
/obj/item/weapon/wirecutters/power
|
||||
@@ -567,8 +562,6 @@
|
||||
/obj/item/weapon/weldingtool/largetank/cyborg
|
||||
name = "integrated welding tool"
|
||||
desc = "An advanced welder designed to be used in robotic systems."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "indwelder"
|
||||
toolspeed = 2
|
||||
|
||||
/obj/item/weapon/weldingtool/largetank/flamethrower_screwdriver()
|
||||
@@ -677,7 +670,6 @@
|
||||
/obj/item/weapon/crowbar/cyborg
|
||||
name = "hydraulic crowbar"
|
||||
desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbar in construction cyborgs."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
usesound = 'sound/items/jaws_pry.ogg'
|
||||
force = 10
|
||||
toolspeed = 2
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
obj_integrity = 20
|
||||
max_integrity = 20
|
||||
var/allow_walk = 1 //can we pass through it on walk intent
|
||||
|
||||
|
||||
/obj/structure/holosign/barrier/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(!density)
|
||||
return 1
|
||||
@@ -59,7 +59,7 @@
|
||||
return 1
|
||||
if(iscarbon(mover))
|
||||
var/mob/living/carbon/C = mover
|
||||
if(allow_walk && C.m_intent == "walk")
|
||||
if(allow_walk && C.m_intent == MOVE_INTENT_WALK)
|
||||
return 1
|
||||
|
||||
/obj/structure/holosign/barrier/engineering
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
else
|
||||
if(C.lying || !(C.status_flags & CANWEAKEN)) // can't slip unbuckled mob if they're lying or can't fall.
|
||||
return 0
|
||||
if(C.m_intent=="walk" && (lube&NO_SLIP_WHEN_WALKING))
|
||||
if(C.m_intent == MOVE_INTENT_WALK && (lube&NO_SLIP_WHEN_WALKING))
|
||||
return 0
|
||||
if(!(lube&SLIDE_ICE))
|
||||
C << "<span class='notice'>You slipped[ O ? " on the [O.name]" : ""]!</span>"
|
||||
@@ -236,4 +236,3 @@
|
||||
wet_time = 0
|
||||
if(wet)
|
||||
addtimer(src, "HandleWet", 15)
|
||||
|
||||
|
||||
@@ -19,6 +19,17 @@
|
||||
if((ckey in admin_datums) || (ckey in deadmins))
|
||||
admin = 1
|
||||
|
||||
//Whitelist
|
||||
if(config.usewhitelist)
|
||||
if(!check_whitelist(ckey(key)))
|
||||
if (admin)
|
||||
log_admin("The admin [key] has been allowed to bypass the whitelist")
|
||||
message_admins("<span class='adminnotice'>The admin [key] has been allowed to bypass the whitelist</span>")
|
||||
addclientmessage(ckey,"<span class='adminnotice'>You have been allowed to bypass the whitelist</span>")
|
||||
else
|
||||
log_access("Failed Login: [key] - Not on whitelist")
|
||||
return list("reason"="whitelist", "desc" = "\nReason: You are not on the white list for this server")
|
||||
|
||||
//Guest Checking
|
||||
if(IsGuestKey(key))
|
||||
if (!guests_allowed)
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#define WHITELISTFILE "config/whitelist.txt"
|
||||
|
||||
var/list/whitelist
|
||||
|
||||
/proc/load_whitelist()
|
||||
whitelist = list()
|
||||
for(var/line in file2list(WHITELISTFILE))
|
||||
if(!line)
|
||||
continue
|
||||
if(findtextEx(line,"#",1,2))
|
||||
continue
|
||||
whitelist += line
|
||||
|
||||
if(!whitelist.len)
|
||||
whitelist = null
|
||||
|
||||
/proc/check_whitelist(var/ckey)
|
||||
if(!whitelist)
|
||||
return FALSE
|
||||
. = (ckey in whitelist)
|
||||
|
||||
#undef WHITELISTFILE
|
||||
@@ -109,7 +109,7 @@
|
||||
if(!(MM.movement_type & FLYING))
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == "run")
|
||||
if(H.m_intent == MOVE_INTENT_RUN)
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
|
||||
@@ -335,6 +335,8 @@ var/next_external_rsc = 0
|
||||
|
||||
/client/proc/check_randomizer(topic)
|
||||
. = FALSE
|
||||
if (connection != "seeker")
|
||||
return
|
||||
topic = params2list(topic)
|
||||
if (!config.check_randomizer)
|
||||
return
|
||||
|
||||
@@ -306,7 +306,8 @@
|
||||
new/obj/structure/alien/resin/flower_bud_enemy(get_turf(holder))
|
||||
|
||||
/datum/spacevine_mutation/flowering/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
|
||||
holder.entangle(crosser)
|
||||
if(prob(25))
|
||||
holder.entangle(crosser)
|
||||
|
||||
|
||||
// SPACE VINES (Note that this code is very similar to Biomass code)
|
||||
@@ -326,6 +327,10 @@
|
||||
var/obj/effect/spacevine_controller/master = null
|
||||
var/list/mutations = list()
|
||||
|
||||
/obj/structure/spacevine/New()
|
||||
..()
|
||||
add_atom_colour("#ffffff", FIXED_COLOUR_PRIORITY)
|
||||
|
||||
/obj/structure/spacevine/examine(mob/user)
|
||||
..()
|
||||
var/text = "This one is a"
|
||||
@@ -347,7 +352,7 @@
|
||||
if(!master.vines.len)
|
||||
var/obj/item/seeds/kudzu/KZ = new(loc)
|
||||
KZ.mutations |= mutations
|
||||
KZ.potency = min(100, master.mutativness * 10)
|
||||
KZ.potency = min(100, master.mutativeness * 10)
|
||||
KZ.production = (master.spread_cap / initial(master.spread_cap)) * 50
|
||||
mutations = list()
|
||||
SetOpacity(0)
|
||||
@@ -430,17 +435,19 @@
|
||||
var/spread_multiplier = 5
|
||||
var/spread_cap = 30
|
||||
var/list/mutations_list = list()
|
||||
var/mutativness = 1
|
||||
var/mutativeness = 1
|
||||
|
||||
/obj/effect/spacevine_controller/New(loc, list/muts, mttv, spreading)
|
||||
/obj/effect/spacevine_controller/New(loc, list/muts, potency, production)
|
||||
add_atom_colour("#ffffff", FIXED_COLOUR_PRIORITY)
|
||||
spawn_spacevine_piece(loc, , muts)
|
||||
START_PROCESSING(SSobj, src)
|
||||
init_subtypes(/datum/spacevine_mutation/, mutations_list)
|
||||
if(mttv != null)
|
||||
mutativness = mttv / 10
|
||||
if(spreading != null)
|
||||
spread_cap *= spreading / 50
|
||||
spread_multiplier /= spreading / 50
|
||||
if(potency != null)
|
||||
mutativeness = potency / 10
|
||||
if(production != null)
|
||||
spread_cap *= production / 5
|
||||
spread_multiplier /= production / 5
|
||||
..()
|
||||
|
||||
/obj/effect/spacevine_controller/ex_act() //only killing all vines will end this suffering
|
||||
return
|
||||
@@ -468,7 +475,7 @@
|
||||
SV.mutations |= parent.mutations
|
||||
var/parentcolor = parent.atom_colours[FIXED_COLOUR_PRIORITY]
|
||||
SV.add_atom_colour(parentcolor, FIXED_COLOUR_PRIORITY)
|
||||
if(prob(mutativness))
|
||||
if(prob(mutativeness))
|
||||
var/datum/spacevine_mutation/randmut = pick(mutations_list - SV.mutations)
|
||||
randmut.add_mutation_to_vinepiece(SV)
|
||||
|
||||
@@ -537,7 +544,7 @@
|
||||
SM.on_buckle(src, V)
|
||||
if((V.stat != DEAD) && (V.buckled != src)) //not dead or captured
|
||||
V << "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>"
|
||||
buckle_mob(V)
|
||||
buckle_mob(V, 1)
|
||||
|
||||
/obj/structure/spacevine/proc/spread()
|
||||
var/direction = pick(cardinal)
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
if(prob(20))
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
temp_mut_list.Cut()
|
||||
|
||||
if(S.has_reagent("welding_fuel", 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == POSITIVE)
|
||||
@@ -64,20 +65,26 @@
|
||||
if(prob(20))
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
temp_mut_list.Cut()
|
||||
|
||||
if(S.has_reagent("phenol", 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == MINOR_NEGATIVE)
|
||||
temp_mut_list += SM
|
||||
if(prob(20))
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
temp_mut_list.Cut()
|
||||
|
||||
if(S.has_reagent("blood", 15))
|
||||
production += rand(15, -5)
|
||||
production = Clamp(production + rand(15, -5),1,10)
|
||||
|
||||
if(S.has_reagent("amatoxin", 5))
|
||||
production += rand(5, -15)
|
||||
production = Clamp(production + rand(5, -15),1,10)
|
||||
|
||||
if(S.has_reagent("plasma", 5))
|
||||
potency += rand(5, -15)
|
||||
potency = Clamp(potency + rand(5, -15),0,100)
|
||||
|
||||
if(S.has_reagent("holywater", 10))
|
||||
potency += rand(15, -5)
|
||||
potency = Clamp(potency + rand(15, -5),0,100)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
|
||||
|
||||
@@ -684,7 +684,7 @@
|
||||
return
|
||||
if(alert(user, "This will make [src] self-sustaining but consume [O] forever. Are you sure?", "[name]", "I'm Sure", "Abort") == "Abort" || !user)
|
||||
return
|
||||
if(!O)
|
||||
if(!O || qdeleted(O))
|
||||
return
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
#define WHITELISTFILE "data/whitelist.txt"
|
||||
|
||||
var/list/whitelist
|
||||
|
||||
/proc/load_whitelist()
|
||||
whitelist = file2list(WHITELISTFILE)
|
||||
if(!whitelist.len)
|
||||
whitelist = null
|
||||
|
||||
/proc/check_whitelist(mob/M /*, var/rank*/)
|
||||
if(!whitelist)
|
||||
return 0
|
||||
return ("[M.ckey]" in whitelist)
|
||||
|
||||
#undef WHITELISTFILE
|
||||
@@ -59,7 +59,7 @@ var/const/SLIDE_ICE = 8
|
||||
nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous
|
||||
else if(nutrition && stat != DEAD)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
if(m_intent == "run")
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
if((disabilities & FAT) && m_intent == "run" && bodytemperature <= 360)
|
||||
if((disabilities & FAT) && m_intent == MOVE_INTENT_RUN && bodytemperature <= 360)
|
||||
bodytemperature += 2
|
||||
|
||||
@@ -447,11 +447,11 @@
|
||||
. += config.run_speed
|
||||
else
|
||||
switch(m_intent)
|
||||
if("run")
|
||||
if(MOVE_INTENT_RUN)
|
||||
if(drowsyness > 0)
|
||||
. += 6
|
||||
. += config.run_speed
|
||||
if("walk")
|
||||
if(MOVE_INTENT_WALK)
|
||||
. += config.walk_speed
|
||||
|
||||
/mob/living/proc/makeTrail(turf/T)
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
if(wires.is_cut(WIRE_CAMERA))
|
||||
camera.status = 0
|
||||
module = new /obj/item/weapon/robot_module(src)
|
||||
module.rebuild_modules()
|
||||
update_icons()
|
||||
..()
|
||||
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
var/obj/item/I = new i(src)
|
||||
ratvar_modules += I
|
||||
ratvar_modules -= i
|
||||
rebuild_modules()
|
||||
|
||||
/obj/item/weapon/robot_module/Destroy()
|
||||
basic_modules.Cut()
|
||||
@@ -163,7 +162,8 @@
|
||||
for(var/obj/item/I in added_modules)
|
||||
add_module(I, FALSE, FALSE)
|
||||
for(var/i in held_modules)
|
||||
R.activate_module(i)
|
||||
if(i)
|
||||
R.activate_module(i)
|
||||
if(R.hud_used)
|
||||
R.hud_used.update_robot_modules_display()
|
||||
|
||||
@@ -174,6 +174,7 @@
|
||||
qdel(RM)
|
||||
return
|
||||
R.module = RM
|
||||
RM.rebuild_modules()
|
||||
addtimer(RM, "do_transform_animation", 0)
|
||||
qdel(src)
|
||||
return RM
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
var/weakened = 0
|
||||
var/losebreath = 0//Carbon
|
||||
var/a_intent = INTENT_HELP//Living
|
||||
var/m_intent = "run"//Living
|
||||
var/m_intent = MOVE_INTENT_RUN//Living
|
||||
var/lastKnownIP = null
|
||||
var/atom/movable/buckled = null//Living
|
||||
|
||||
@@ -144,4 +144,4 @@
|
||||
|
||||
var/resize = 1 //Badminnery resize
|
||||
|
||||
var/list/observers = null //The list of people observing this mob.
|
||||
var/list/observers = null //The list of people observing this mob.
|
||||
|
||||
+2
-3
@@ -141,9 +141,8 @@ CHECK_RANDOMIZER
|
||||
## byond membership starts at $10 for 3 months, so to use the webclient to evade, they would have sink 10 bucks in each evade.
|
||||
#WEBCLIENT_ONLY_BYOND_MEMBERS
|
||||
|
||||
## Set to jobban everyone who's key is not listed in data/whitelist.txt from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions.
|
||||
## Uncomment to 1 to jobban, leave commented out to allow these positions for everyone (but see GUEST_JOBBAN above and regular jobbans)
|
||||
# USEWHITELIST
|
||||
## Set to prevent anyone but those ckeys listed in config/whitelist.txt and config/admins.txt from joining your server
|
||||
#USEWHITELIST
|
||||
|
||||
## set a server location for world reboot. Don't include the byond://, just give the address and port.
|
||||
# Don't set this to the same server, BYOND will automatically restart players to the server when it has restarted.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
###############################################################################################
|
||||
# Basically, a list of ckeys who make it past user connection #
|
||||
# Case is not important for ckey. #
|
||||
###############################################################################################
|
||||
#Optimumtact
|
||||
#kevinz000
|
||||
#Iamgoofball
|
||||
#Rshoe95
|
||||
#That one penguin who became an admin
|
||||
+20
-7
@@ -55,6 +55,26 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">04 December 2016</h2>
|
||||
<h3 class="author">Durkel updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Recent enemy reports indicate that changelings have grown bored with attacking near desolate stations and have shifted focus to more fertile hunting grounds.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">03 December 2016</h2>
|
||||
<h3 class="author">Joan updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Trying to move while bound by Geis will cause you to start resisting, but the time required to resist is up by half a second.</li>
|
||||
<li class="experiment">Resisting out of Geis now does damage to the binding, and as such being stunned while bound will no longer totally reset your resist progress.</li>
|
||||
<li class="rscadd">Using Geis on someone already bound by Geis will interrupt them resisting out of it and will fully repair the binding.</li>
|
||||
<li class="tweak">Geis's pre-binding channel now takes longer for each servant above 5. Geis's conversion channel also takes slightly longer for each servant above 5.</li>
|
||||
<li class="rscadd">Converted engineering and miner cyborgs can now create Sigils of Transgression.</li>
|
||||
</ul>
|
||||
<h3 class="author">RandomMarine updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Airlocks will keep their original name when their electronics are removed and replaced. You may still use a pen to rename the assembly if desired.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">02 December 2016</h2>
|
||||
<h3 class="author">Cobby updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -1145,13 +1165,6 @@
|
||||
<li class="imageadd">Improved/resprited a few bar signs, basketball/dodgeball/hoop, blood bags, and body bags.</li>
|
||||
<li class="imageadd">Improved/resprited Paper, stamps, folders, small fires, pens, energy daggers, cabinets, newspaper and other bureaucracy related items.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">01 October 2016</h2>
|
||||
<h3 class="author">Incoming5643 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">After years of having to live on a mostly blown up hunk of junk the wizard's ship has finally been repaired</li>
|
||||
<li class="rscdel">No one paid attention to that lore anyway</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<b>GoonStation 13 Development Team</b>
|
||||
|
||||
@@ -8194,3 +8194,21 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
amount of time (per-mob, base 3 seconds), this is because being attacked causes
|
||||
mobs with this var to turn it off, so they can run away, however it was literally
|
||||
never turned on which caused swarmers to get depression and never do anything.
|
||||
2016-12-03:
|
||||
Joan:
|
||||
- rscadd: Trying to move while bound by Geis will cause you to start resisting,
|
||||
but the time required to resist is up by half a second.
|
||||
- experiment: Resisting out of Geis now does damage to the binding, and as such
|
||||
being stunned while bound will no longer totally reset your resist progress.
|
||||
- rscadd: Using Geis on someone already bound by Geis will interrupt them resisting
|
||||
out of it and will fully repair the binding.
|
||||
- tweak: Geis's pre-binding channel now takes longer for each servant above 5. Geis's
|
||||
conversion channel also takes slightly longer for each servant above 5.
|
||||
- rscadd: Converted engineering and miner cyborgs can now create Sigils of Transgression.
|
||||
RandomMarine:
|
||||
- tweak: Airlocks will keep their original name when their electronics are removed
|
||||
and replaced. You may still use a pen to rename the assembly if desired.
|
||||
2016-12-04:
|
||||
Durkel:
|
||||
- tweak: Recent enemy reports indicate that changelings have grown bored with attacking
|
||||
near desolate stations and have shifted focus to more fertile hunting grounds.
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
author: "Joan"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Trying to move while bound by Geis will cause you to start resisting, but the time required to resist is up by half a second."
|
||||
- experiment: "Resisting out of Geis now does damage to the binding, and as such being stunned while bound will no longer totally reset your resist progress."
|
||||
- rscadd: "Using Geis on someone already bound by Geis will interrupt them resisting out of it and will fully repair the binding."
|
||||
- tweak: "Geis's pre-binding channel now takes longer for each servant above 5. Geis's conversion channel also takes slightly longer for each servant above 5."
|
||||
+1
-1
@@ -933,6 +933,7 @@
|
||||
#include "code\modules\admin\stickyban.dm"
|
||||
#include "code\modules\admin\topic.dm"
|
||||
#include "code\modules\admin\watchlist.dm"
|
||||
#include "code\modules\admin\whitelist.dm"
|
||||
#include "code\modules\admin\DB_ban\functions.dm"
|
||||
#include "code\modules\admin\permissionverbs\permissionedit.dm"
|
||||
#include "code\modules\admin\verbs\adminhelp.dm"
|
||||
@@ -1307,7 +1308,6 @@
|
||||
#include "code\modules\hydroponics\grown\towercap.dm"
|
||||
#include "code\modules\jobs\access.dm"
|
||||
#include "code\modules\jobs\jobs.dm"
|
||||
#include "code\modules\jobs\whitelist.dm"
|
||||
#include "code\modules\jobs\job_types\assistant.dm"
|
||||
#include "code\modules\jobs\job_types\captain.dm"
|
||||
#include "code\modules\jobs\job_types\cargo_service.dm"
|
||||
|
||||
Reference in New Issue
Block a user