mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 00:55:20 +01:00
Merge branch 'master' into w_class
Conflicts: code/game/objects/items/weapons/twohanded.dm
This commit is contained in:
@@ -607,3 +607,8 @@ var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
|
||||
#define TIMER_NORMAL "normal"
|
||||
#define TIMER_UNIQUE "unique"
|
||||
|
||||
// Ventcrawling
|
||||
#define VENTCRAWLER_NONE 0
|
||||
#define VENTCRAWLER_NUDE 1
|
||||
#define VENTCRAWLER_ALWAYS 2
|
||||
|
||||
@@ -75,7 +75,7 @@ var/datum/subsystem/timer/SStimer
|
||||
var/hashlist = args.Copy()
|
||||
|
||||
hashlist[1] = "[thingToCall](\ref[thingToCall])"
|
||||
event.hash = jointext(args, null)
|
||||
event.hash = jointext(hashlist, null)
|
||||
|
||||
var/bad_args = unique != TIMER_NORMAL && unique != TIMER_UNIQUE
|
||||
if(args.len > 4 || bad_args)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/var/global/list/mutations_list = list()
|
||||
|
||||
/datum/mutation/
|
||||
/datum/mutation
|
||||
|
||||
var/name
|
||||
|
||||
|
||||
@@ -16,11 +16,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
|
||||
/area/engine/
|
||||
/area/engine
|
||||
|
||||
/area/ai_monitored //stub defined ai_monitored.dm
|
||||
|
||||
/area/ai_monitored/turret_protected/
|
||||
/area/ai_monitored/turret_protected
|
||||
|
||||
/area/arrival
|
||||
requires_power = 0
|
||||
@@ -642,7 +642,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Mech Bay"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/janitor/
|
||||
/area/janitor
|
||||
name = "Custodial Closet"
|
||||
icon_state = "janitor"
|
||||
flags = NONE
|
||||
@@ -798,7 +798,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
icon_state = "storage"
|
||||
|
||||
|
||||
/area/ai_monitored/turret_protected/
|
||||
/area/ai_monitored/turret_protected
|
||||
ambientsounds = list('sound/ambience/ambimalf.ogg')
|
||||
|
||||
/area/ai_monitored/turret_protected/ai_upload
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//Parent types
|
||||
|
||||
/area/ruin/
|
||||
/area/ruin
|
||||
name = "\improper Unexplored Location"
|
||||
icon_state = "away"
|
||||
has_gravity = 1
|
||||
|
||||
@@ -29,31 +29,40 @@
|
||||
if(!isturf(T))
|
||||
return TRUE
|
||||
|
||||
if(isliving(target) && ranged_ability_user.Adjacent(target))
|
||||
var/mob/living/L = target
|
||||
if(is_servant_of_ratvar(L))
|
||||
if(L != ranged_ability_user)
|
||||
ranged_ability_user << "<span class='sevtug'>\"[L.p_they(TRUE)] already serve[L.p_s()] Ratvar. [text2ratvar("Perhaps [ranged_ability_user.p_theyre()] into bondage?")]\"</span>"
|
||||
return TRUE
|
||||
if(L.stat == DEAD)
|
||||
ranged_ability_user << "<span class='sevtug'>\"[L.p_theyre(TRUE)] dead, idiot.\"</span>"
|
||||
return TRUE
|
||||
var/target_is_binding = istype(target, /obj/structure/destructible/clockwork/geis_binding)
|
||||
|
||||
if(istype(L.buckled, /obj/structure/destructible/clockwork/geis_binding)) //if they're already bound, just stun them
|
||||
L.Stun(1)
|
||||
if((target_is_binding || isliving(target)) && ranged_ability_user.Adjacent(target))
|
||||
if(target_is_binding)
|
||||
var/obj/structure/destructible/clockwork/geis_binding/GB = target
|
||||
GB.repair_and_interrupt()
|
||||
successful = TRUE
|
||||
else
|
||||
in_progress = TRUE
|
||||
clockwork_say(ranged_ability_user, text2ratvar("Be bound, heathen!"))
|
||||
remove_mousepointer(ranged_ability_user.client)
|
||||
ranged_ability_user.notransform = TRUE
|
||||
addtimer(src, "reset_user_notransform", 5, TIMER_NORMAL, ranged_ability_user) //stop us moving for a little bit so we don't break the scripture following this
|
||||
slab.busy = null
|
||||
var/datum/clockwork_scripture/geis/conversion = new
|
||||
conversion.slab = slab
|
||||
conversion.invoker = ranged_ability_user
|
||||
conversion.target = target
|
||||
successful = conversion.run_scripture()
|
||||
var/mob/living/L = target
|
||||
if(is_servant_of_ratvar(L))
|
||||
if(L != ranged_ability_user)
|
||||
ranged_ability_user << "<span class='sevtug'>\"[L.p_they(TRUE)] already serve[L.p_s()] Ratvar. [text2ratvar("Perhaps [ranged_ability_user.p_theyre()] into bondage?")]\"</span>"
|
||||
return TRUE
|
||||
if(L.stat == DEAD)
|
||||
ranged_ability_user << "<span class='sevtug'>\"[L.p_theyre(TRUE)] dead, idiot.\"</span>"
|
||||
return TRUE
|
||||
|
||||
if(istype(L.buckled, /obj/structure/destructible/clockwork/geis_binding)) //if they're already bound, just stun them
|
||||
var/obj/structure/destructible/clockwork/geis_binding/GB = L.buckled
|
||||
GB.repair_and_interrupt()
|
||||
successful = TRUE
|
||||
else
|
||||
in_progress = TRUE
|
||||
clockwork_say(ranged_ability_user, text2ratvar("Be bound, heathen!"))
|
||||
remove_mousepointer(ranged_ability_user.client)
|
||||
if(slab.speed_multiplier >= 0.5) //excuse my debug...
|
||||
ranged_ability_user.notransform = TRUE
|
||||
addtimer(src, "reset_user_notransform", 5, TIMER_NORMAL, ranged_ability_user) //stop us moving for a little bit so we don't break the scripture following this
|
||||
slab.busy = null
|
||||
var/datum/clockwork_scripture/geis/conversion = new
|
||||
conversion.slab = slab
|
||||
conversion.invoker = ranged_ability_user
|
||||
conversion.target = target
|
||||
successful = conversion.run_scripture()
|
||||
|
||||
remove_ranged_ability()
|
||||
|
||||
@@ -71,12 +80,15 @@
|
||||
obj_integrity = 30
|
||||
density = 0
|
||||
icon = 'icons/effects/clockwork_effects.dmi'
|
||||
icon_state = "geisbinding"
|
||||
break_message = "<span class='warning'>The glowing ring shatters!</span>"
|
||||
icon_state = "geisbinding_full"
|
||||
break_message = null
|
||||
break_sound = 'sound/magic/Repulse.ogg'
|
||||
debris = list()
|
||||
can_buckle = TRUE
|
||||
buckle_lying = 0
|
||||
buckle_prevents_pull = TRUE
|
||||
var/resisting = FALSE
|
||||
var/mob_layer = MOB_LAYER
|
||||
|
||||
/obj/structure/destructible/clockwork/geis_binding/examine(mob/user)
|
||||
icon_state = "geisbinding_full"
|
||||
@@ -90,6 +102,8 @@
|
||||
if(M.buckled == src)
|
||||
desc = "A flickering, glowing purple ring around [M]."
|
||||
clockwork_desc = "A binding ring around [M], preventing [M.p_them()] from taking action while [M.p_theyre()] being converted."
|
||||
icon_state = "geisbinding"
|
||||
mob_layer = M.layer
|
||||
layer = M.layer - 0.01
|
||||
var/image/GB = new('icons/effects/clockwork_effects.dmi', src, "geisbinding_top", M.layer + 0.01)
|
||||
add_overlay(GB)
|
||||
@@ -102,18 +116,68 @@
|
||||
M.visible_message("<span class='warning'>A [name] appears around [M]!</span>", \
|
||||
"<span class='warning'>A [name] appears around you!</span>\n<span class='userdanger'>Resist!</span>")
|
||||
else
|
||||
var/obj/effect/overlay/temp/ratvar/geis_binding/G = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding, M.loc)
|
||||
var/obj/effect/overlay/temp/ratvar/geis_binding/T = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding/top, M.loc)
|
||||
G.layer = mob_layer - 0.01
|
||||
T.layer = mob_layer + 0.01
|
||||
G.alpha = alpha
|
||||
T.alpha = alpha
|
||||
animate(G, transform = matrix()*2, alpha = 0, time = 8, easing = EASE_OUT)
|
||||
animate(T, transform = matrix()*2, alpha = 0, time = 8, easing = EASE_OUT)
|
||||
M.visible_message("<span class='warning'>[src] snaps into glowing pieces and dissipates!</span>")
|
||||
for(var/obj/item/geis_binding/G in M.held_items)
|
||||
M.unEquip(G, TRUE)
|
||||
for(var/obj/item/geis_binding/GB in M.held_items)
|
||||
M.unEquip(GB, TRUE)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/destructible/clockwork/geis_binding/relaymove(mob/user, direction)
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
L.resist()
|
||||
|
||||
/obj/structure/destructible/clockwork/geis_binding/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
playsound(src, 'sound/effects/EMPulse.ogg', 50, 1)
|
||||
|
||||
/obj/structure/destructible/clockwork/geis_binding/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
|
||||
. = ..()
|
||||
if(.)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/destructible/clockwork/geis_binding/update_icon()
|
||||
alpha = min(initial(alpha) + ((obj_integrity - max_integrity) * 5), 255)
|
||||
|
||||
/obj/structure/destructible/clockwork/geis_binding/proc/repair_and_interrupt()
|
||||
obj_integrity = max_integrity
|
||||
update_icon()
|
||||
for(var/m in buckled_mobs)
|
||||
var/mob/living/L = m
|
||||
if(L)
|
||||
L.Stun(1, 1, 1)
|
||||
visible_message("<span class='sevtug'>[src] flares brightly!</span>")
|
||||
var/obj/effect/overlay/temp/ratvar/geis_binding/G1 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding, loc)
|
||||
var/obj/effect/overlay/temp/ratvar/geis_binding/G2 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding, loc)
|
||||
var/obj/effect/overlay/temp/ratvar/geis_binding/T1 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding/top, loc)
|
||||
var/obj/effect/overlay/temp/ratvar/geis_binding/T2 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding/top, loc)
|
||||
G1.layer = mob_layer - 0.01
|
||||
G2.layer = mob_layer - 0.01
|
||||
T1.layer = mob_layer + 0.01
|
||||
T2.layer = mob_layer + 0.01
|
||||
animate(G1, pixel_y = pixel_y + 9, alpha = 0, time = 8, easing = EASE_IN)
|
||||
animate(G2, pixel_y = pixel_y - 9, alpha = 0, time = 8, easing = EASE_IN)
|
||||
animate(T1, pixel_y = pixel_y + 9, alpha = 0, time = 8, easing = EASE_IN)
|
||||
animate(T2, pixel_y = pixel_y - 9, alpha = 0, time = 8, easing = EASE_IN)
|
||||
|
||||
/obj/structure/destructible/clockwork/geis_binding/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
|
||||
if(buckled_mob == user)
|
||||
user.visible_message("<span class='warning'>[user] starts struggling against [src]...</span>", "<span class='userdanger'>You start breaking out of [src]...</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
user.visible_message("<span class='warning'>[user] breaks [src]!</span>", "<span class='userdanger'>You break [src]!</span>")
|
||||
unbuckle_mob(user, TRUE)
|
||||
return user
|
||||
if(!resisting)
|
||||
resisting = TRUE
|
||||
user.visible_message("<span class='warning'>[user] starts struggling against [src]...</span>", "<span class='userdanger'>You start breaking out of [src]...</span>")
|
||||
while(do_after(user, 7.5, target = src) && resisting && obj_integrity)
|
||||
if(obj_integrity - 5 <= 0)
|
||||
user.visible_message("<span class='warning'>[user] breaks [src]!</span>", "<span class='userdanger'>You break [src]!</span>")
|
||||
take_damage(5)
|
||||
return user
|
||||
take_damage(5)
|
||||
resisting = FALSE
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
descname = "Melee Convert Attack"
|
||||
name = "Geis"
|
||||
desc = "Charges your slab with divine energy, allowing you to bind a nearby heretic for conversion. This is very obvious and will make your slab visible in-hand."
|
||||
invocations = list("Divinity, grant me strength...", "...to enlighten the heathen!")
|
||||
invocations = list("Divinity, grant...", "...me strength...", "...to enlighten...", "...the heathen!")
|
||||
whispered = TRUE
|
||||
channel_time = 20
|
||||
required_components = list(GEIS_CAPACITOR = 1)
|
||||
@@ -135,6 +135,8 @@
|
||||
servants++
|
||||
if(servants > SCRIPT_SERVANT_REQ)
|
||||
whispered = FALSE
|
||||
servants -= SCRIPT_SERVANT_REQ
|
||||
channel_time = min(channel_time + servants*3, 50)
|
||||
return ..()
|
||||
|
||||
//The scripture that does the converting.
|
||||
@@ -162,7 +164,7 @@
|
||||
servants++
|
||||
if(servants > SCRIPT_SERVANT_REQ)
|
||||
servants -= SCRIPT_SERVANT_REQ
|
||||
channel_time = min(channel_time + servants*5, 100)
|
||||
channel_time = min(channel_time + servants*7, 120)
|
||||
if(target.buckled)
|
||||
target.buckled.unbuckle_mob(target, TRUE)
|
||||
binding = new(get_turf(target))
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
gender = NEUTER
|
||||
health = 350
|
||||
maxHealth = 350
|
||||
ventcrawler = 0
|
||||
ventcrawler = VENTCRAWLER_NONE
|
||||
density = 1
|
||||
pass_flags = 0
|
||||
var/ascended = 0
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
if(gang.bosses.len < 3)
|
||||
usr << "<span class='notice'><b>Gangtools</b> allow you to promote a gangster to be your Lieutenant, enabling them to recruit and purchase items like you. Simply have them register the gangtool. You may promote up to [3-gang.bosses.len] more Lieutenants</span>"
|
||||
else
|
||||
item_type = /obj/item/device/gangtool/spare/
|
||||
item_type = /obj/item/device/gangtool/spare
|
||||
pointcost = 10
|
||||
if("dominator")
|
||||
if(!gang.dom_attempts)
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
|
||||
var/power_type
|
||||
|
||||
/datum/AI_Module/large/
|
||||
/datum/AI_Module/large
|
||||
uses = 1
|
||||
|
||||
/datum/AI_Module/small/
|
||||
/datum/AI_Module/small
|
||||
uses = 5
|
||||
|
||||
/datum/AI_Module/large/nuke_station
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
|
||||
/obj/item/organ/gland/ventcrawling/activate()
|
||||
owner << "<span class='notice'>You feel very stretchy.</span>"
|
||||
owner.ventcrawler = 2
|
||||
owner.ventcrawler = VENTCRAWLER_ALWAYS
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ var/total_borer_hosts_needed = 10
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
faction = list("creature")
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
AIStatus = AI_OFF
|
||||
pass_flags = PASSTABLE
|
||||
mob_size = MOB_SIZE_TINY
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
ranged = 1
|
||||
projectiletype = /obj/item/projectile/beam/disabler
|
||||
ranged_cooldown_time = 20
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
stop_automated_movement = 1
|
||||
status_flags = CANPUSH
|
||||
pass_flags = PASSTABLE
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxHealth = 150
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/machinery/computer/arcade/
|
||||
/obj/machinery/computer/arcade
|
||||
name = "random arcade"
|
||||
desc = "random arcade machine"
|
||||
icon_state = "arcade"
|
||||
|
||||
@@ -219,12 +219,12 @@
|
||||
name = "training bomb"
|
||||
icon_state = "training-bomb"
|
||||
desc = "A salvaged syndicate device gutted of its explosives to be used as a training aid for aspiring bomb defusers."
|
||||
payload = /obj/item/weapon/bombcore/training/
|
||||
payload = /obj/item/weapon/bombcore/training
|
||||
|
||||
/obj/machinery/syndicatebomb/badmin
|
||||
name = "generic summoning badmin bomb"
|
||||
desc = "Oh god what is in this thing?"
|
||||
payload = /obj/item/weapon/bombcore/badmin/summon/
|
||||
payload = /obj/item/weapon/bombcore/badmin/summon
|
||||
|
||||
/obj/machinery/syndicatebomb/badmin/clown
|
||||
name = "clown bomb"
|
||||
@@ -234,7 +234,7 @@
|
||||
beepsound = 'sound/items/bikehorn.ogg'
|
||||
|
||||
/obj/machinery/syndicatebomb/badmin/varplosion
|
||||
payload = /obj/item/weapon/bombcore/badmin/explosion/
|
||||
payload = /obj/item/weapon/bombcore/badmin/explosion
|
||||
|
||||
/obj/machinery/syndicatebomb/empty
|
||||
name = "bomb"
|
||||
@@ -333,7 +333,7 @@
|
||||
qdel(B)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/bombcore/badmin/summon/
|
||||
/obj/item/weapon/bombcore/badmin/summon
|
||||
var/summon_path = /obj/item/weapon/reagent_containers/food/snacks/cookie
|
||||
var/amt_summon = 1
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
var/buckle_requires_restraints = 0 //require people to be handcuffed before being able to buckle. eg: pipes
|
||||
var/list/mob/living/buckled_mobs = null //list()
|
||||
var/max_buckled_mobs = 1
|
||||
var/buckle_prevents_pull = FALSE
|
||||
|
||||
//Interaction
|
||||
/atom/movable/attack_hand(mob/living/user)
|
||||
@@ -49,12 +50,14 @@
|
||||
usr << "<span class='warning'>You are unable to buckle [M] to the [src]!</span>"
|
||||
return 0
|
||||
|
||||
if(M.pulledby && buckle_prevents_pull)
|
||||
M.pulledby.stop_pulling()
|
||||
M.buckled = src
|
||||
M.setDir(dir)
|
||||
buckled_mobs |= M
|
||||
M.update_canmove()
|
||||
post_buckle_mob(M)
|
||||
M.throw_alert("buckled", /obj/screen/alert/restrained/buckled, new_master = src)
|
||||
post_buckle_mob(M)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -306,6 +306,12 @@
|
||||
pixel_y = -16
|
||||
pixel_x = -16
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/geis_binding
|
||||
icon_state = "geisbinding"
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/geis_binding/top
|
||||
icon_state = "geisbinding_top"
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/component
|
||||
icon = 'icons/obj/clockwork_objects.dmi'
|
||||
icon_state = "belligerent_eye"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
/obj/item/device/encryptionkey/
|
||||
/obj/item/device/encryptionkey
|
||||
name = "standard encryption key"
|
||||
desc = "An encryption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
desc = "A roll of cloth roughly cut from something that can stop bleeding, but does not heal wounds."
|
||||
stop_bleeding = 900
|
||||
|
||||
/obj/item/stack/medical/gauze/cyborg/
|
||||
/obj/item/stack/medical/gauze/cyborg
|
||||
materials = list()
|
||||
is_cyborg = 1
|
||||
cost = 250
|
||||
|
||||
@@ -66,7 +66,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/rods/cyborg/
|
||||
/obj/item/stack/rods/cyborg
|
||||
materials = list()
|
||||
is_cyborg = 1
|
||||
cost = 250
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
SSpersistence.new_secret_satchels -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/secret/
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/secret
|
||||
var/list/reward_one_of_these = list() //Intended for map editing
|
||||
var/list/reward_all_of_these = list() //use paths!
|
||||
var/revealed = 0
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
/obj/item/device/analyzer,
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/clothing/gloves/
|
||||
/obj/item/clothing/gloves
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/chief
|
||||
@@ -355,7 +355,7 @@
|
||||
/obj/item/weapon/soap,
|
||||
/obj/item/weapon/holosign_creator,
|
||||
/obj/item/key/janitor,
|
||||
/obj/item/clothing/gloves/
|
||||
/obj/item/clothing/gloves
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/box/syndicate/
|
||||
/obj/item/weapon/storage/box/syndicate
|
||||
|
||||
/obj/item/weapon/storage/box/syndicate/New()
|
||||
..()
|
||||
@@ -131,7 +131,7 @@
|
||||
new /obj/item/weapon/grenade/plastic/c4 (src) // 1 tc
|
||||
new /obj/item/weapon/card/emag(src) // 6 tc
|
||||
return
|
||||
|
||||
|
||||
if("ninja") // 33 tc worth
|
||||
new /obj/item/weapon/katana(src) // Unique , hard to tell how much tc this is worth. 8 tc?
|
||||
new /obj/item/weapon/implanter/adrenalin(src) // 8 tc
|
||||
|
||||
@@ -559,7 +559,7 @@ var/highlander_claymores = 0
|
||||
/mob/living/simple_animal/hostile/poison/bees/,
|
||||
/mob/living/simple_animal/butterfly,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/obj/item/queen_bee/
|
||||
/obj/item/queen_bee
|
||||
))
|
||||
|
||||
/obj/item/weapon/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
icon_state = "drake_statue_falling"
|
||||
|
||||
|
||||
/obj/structure/fluff/bus/
|
||||
/obj/structure/fluff/bus
|
||||
name = "bus"
|
||||
desc = "GO TO SCHOOL. READ A BOOK."
|
||||
icon = 'icons/obj/bus.dmi'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/
|
||||
/obj/item/weapon
|
||||
name = "weapon"
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ var/list/hardcoded_gases = list("o2","n2","co2","plasma") //the main four gases,
|
||||
specific_heat = 20
|
||||
name = "BZ"
|
||||
|
||||
/obj/effect/overlay/gas/
|
||||
/obj/effect/overlay/gas
|
||||
icon = 'icons/effects/tile_effects.dmi'
|
||||
mouse_opacity = 0
|
||||
layer = FLY_LAYER
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/datum/round_event_control/wizard/robelesscasting //EI NUDTH!
|
||||
name = "Robeless Casting"
|
||||
weight = 2
|
||||
typepath = /datum/round_event/wizard/robelesscasting/
|
||||
typepath = /datum/round_event/wizard/robelesscasting
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/datum/round_event_control/wizard/improvedcasting //blink x5 disintergrate x5 here I come!
|
||||
name = "Improved Casting"
|
||||
weight = 3
|
||||
typepath = /datum/round_event/wizard/improvedcasting/
|
||||
typepath = /datum/round_event/wizard/improvedcasting
|
||||
max_occurrences = 4 //because that'd be max level spells
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/blobies //avast!
|
||||
name = "Zombie Outbreak"
|
||||
weight = 3
|
||||
typepath = /datum/round_event/wizard/blobies/
|
||||
typepath = /datum/round_event/wizard/blobies
|
||||
max_occurrences = 3
|
||||
earliest_start = 12000 // 20 minutes (gotta get some bodies made!)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/cursed_items //fashion disasters
|
||||
name = "Cursed Items"
|
||||
weight = 3
|
||||
typepath = /datum/round_event/wizard/cursed_items/
|
||||
typepath = /datum/round_event/wizard/cursed_items
|
||||
max_occurrences = 3
|
||||
earliest_start = 0
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if("swords")
|
||||
loadout[5] = /obj/item/weapon/katana/cursed
|
||||
if("bigfatdoobie")
|
||||
loadout[4] = /obj/item/clothing/mask/cigarette/rollie/trippy/
|
||||
loadout[4] = /obj/item/clothing/mask/cigarette/rollie/trippy
|
||||
ruins_spaceworthiness = 1
|
||||
if("boxing")
|
||||
loadout[4] = /obj/item/clothing/mask/luchador
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/deprevolt //stationwide!
|
||||
name = "Departmental Uprising"
|
||||
weight = 0 //An order that requires order in a round of chaos was maybe not the best idea. Requiescat in pace departmental uprising August 2014 - March 2015
|
||||
typepath = /datum/round_event/wizard/deprevolt/
|
||||
typepath = /datum/round_event/wizard/deprevolt
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/fake_explosion //Oh no the station is gone!
|
||||
name = "Fake Nuclear Explosion"
|
||||
weight = 0 //Badmin exclusive now because once it's expected its not funny
|
||||
typepath = /datum/round_event/wizard/fake_explosion/
|
||||
typepath = /datum/round_event/wizard/fake_explosion
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/ghost //The spook is real
|
||||
name = "G-G-G-Ghosts!"
|
||||
weight = 3
|
||||
typepath = /datum/round_event/wizard/ghost/
|
||||
typepath = /datum/round_event/wizard/ghost
|
||||
max_occurrences = 5
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/greentext //Gotta have it!
|
||||
name = "Greentext"
|
||||
weight = 4
|
||||
typepath = /datum/round_event/wizard/greentext/
|
||||
typepath = /datum/round_event/wizard/greentext
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/imposter //Mirror Mania
|
||||
name = "Imposter Wizard"
|
||||
weight = 1
|
||||
typepath = /datum/round_event/wizard/imposter/
|
||||
typepath = /datum/round_event/wizard/imposter
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/invincible //Boolet Proof
|
||||
name = "Invincibility"
|
||||
weight = 3
|
||||
typepath = /datum/round_event/wizard/invincible/
|
||||
typepath = /datum/round_event/wizard/invincible
|
||||
max_occurrences = 5
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/datum/round_event_control/wizard/lava //THE LEGEND NEVER DIES
|
||||
name = "The Floor Is LAVA!"
|
||||
weight = 2
|
||||
typepath = /datum/round_event/wizard/lava/
|
||||
typepath = /datum/round_event/wizard/lava
|
||||
max_occurrences = 3
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/wizard/lava/
|
||||
/datum/round_event/wizard/lava
|
||||
endWhen = 0
|
||||
var/started = FALSE
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/datum/round_event_control/wizard/magicarp //these fish is loaded
|
||||
name = "Magicarp"
|
||||
weight = 1
|
||||
typepath = /datum/round_event/wizard/magicarp/
|
||||
typepath = /datum/round_event/wizard/magicarp
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/wizard/magicarp/
|
||||
/datum/round_event/wizard/magicarp
|
||||
announceWhen = 3
|
||||
startWhen = 50
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/datum/round_event_control/wizard/petsplosion //the horror
|
||||
name = "Petsplosion"
|
||||
weight = 2
|
||||
typepath = /datum/round_event/wizard/petsplosion/
|
||||
typepath = /datum/round_event/wizard/petsplosion
|
||||
max_occurrences = 1 //Exponential growth is nothing to sneeze at!
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/wizard/petsplosion/
|
||||
/datum/round_event/wizard/petsplosion
|
||||
endWhen = 61 //1 minute (+1 tick for endWhen not to interfere with tick)
|
||||
var/countdown = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/race //Lizard Wizard? Lizard Wizard.
|
||||
name = "Race Swap"
|
||||
weight = 2
|
||||
typepath = /datum/round_event/wizard/race/
|
||||
typepath = /datum/round_event/wizard/race
|
||||
max_occurrences = 5
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/rpgloot //its time to minmax your shit
|
||||
name = "RPG Loot"
|
||||
weight = 3
|
||||
typepath = /datum/round_event/wizard/rpgloot/
|
||||
typepath = /datum/round_event/wizard/rpgloot
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/datum/round_event_control/wizard/shuffleloc //Somewhere an AI is crying
|
||||
name = "Change Places!"
|
||||
weight = 2
|
||||
typepath = /datum/round_event/wizard/shuffleloc/
|
||||
typepath = /datum/round_event/wizard/shuffleloc
|
||||
max_occurrences = 5
|
||||
earliest_start = 0
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
/datum/round_event_control/wizard/shufflenames //Face/off joke
|
||||
name = "Change Faces!"
|
||||
weight = 4
|
||||
typepath = /datum/round_event/wizard/shufflenames/
|
||||
typepath = /datum/round_event/wizard/shufflenames
|
||||
max_occurrences = 5
|
||||
earliest_start = 0
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
/datum/round_event_control/wizard/shuffleminds //Basically Mass Ranged Mindswap
|
||||
name = "Change Minds!"
|
||||
weight = 1
|
||||
typepath = /datum/round_event/wizard/shuffleminds/
|
||||
typepath = /datum/round_event/wizard/shuffleminds
|
||||
max_occurrences = 3
|
||||
earliest_start = 0
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
shuffle(mobs)
|
||||
|
||||
var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new /obj/effect/proc_holder/spell/targeted/mind_transfer/
|
||||
var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new /obj/effect/proc_holder/spell/targeted/mind_transfer
|
||||
while(mobs.len > 1)
|
||||
var/mob/living/carbon/human/H = pick(mobs)
|
||||
mobs -= H
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/round_event_control/wizard/summonguns //The Classic
|
||||
name = "Summon Guns"
|
||||
weight = 1
|
||||
typepath = /datum/round_event/wizard/summonguns/
|
||||
typepath = /datum/round_event/wizard/summonguns
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/datum/round_event_control/wizard/summonmagic //The Somewhat Less Classic
|
||||
name = "Summon Magic"
|
||||
weight = 1
|
||||
typepath = /datum/round_event/wizard/summonmagic/
|
||||
typepath = /datum/round_event/wizard/summonmagic
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
|
||||
*/
|
||||
|
||||
/mob/living/carbon/
|
||||
/mob/living/carbon
|
||||
var/image/halimage
|
||||
var/image/halbody
|
||||
var/obj/halitem
|
||||
|
||||
@@ -488,7 +488,7 @@
|
||||
/datum/chemical_reaction/grape_soda
|
||||
name = "grape soda"
|
||||
id = "grapesoda"
|
||||
results = list("grape_soda" = 2)
|
||||
results = list("grapesoda" = 2)
|
||||
required_reagents = list("grapejuice" = 1, "sodawater" = 1)
|
||||
|
||||
/datum/chemical_reaction/grappa
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
H.visible_message("<span class='danger'>[H] steps on a cactus!</span>", \
|
||||
"<span class='userdanger'>You step on a cactus!</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ash_flora/
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ash_flora
|
||||
name = "mushroom shavings"
|
||||
desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl."
|
||||
icon = 'icons/obj/lavaland/ash_flora.dmi'
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
|
||||
)
|
||||
|
||||
/datum/data/mining_equipment/
|
||||
/datum/data/mining_equipment
|
||||
var/equipment_name = "generic"
|
||||
var/equipment_path = null
|
||||
var/cost = 0
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
gender = FEMALE //All xenos are girls!!
|
||||
dna = null
|
||||
faction = list("alien")
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
languages_spoken = ALIEN
|
||||
languages_understood = ALIEN
|
||||
sight = SEE_MOBS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
//Common stuffs for Praetorian and Queen
|
||||
icon = 'icons/mob/alienqueen.dmi'
|
||||
status_flags = 0
|
||||
ventcrawler = 0 //pull over that ass too fat
|
||||
ventcrawler = VENTCRAWLER_NONE //pull over that ass too fat
|
||||
unique_name = 0
|
||||
pixel_x = -16
|
||||
bubble_icon = "alienroyal"
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
var/co2overloadtime = null
|
||||
var/temperature_resistance = T0C+75
|
||||
has_limbs = 1
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/meat/slab/type_of_meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/meat/slab/type_of_meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab
|
||||
|
||||
var/list/obj/effect/proc_holder/alien/abilities = list()
|
||||
var/gib_type = /obj/effect/decal/cleanable/blood/gibs
|
||||
|
||||
@@ -908,7 +908,7 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.visible_message("<span class='warning'>[H] starts vibrating!</span>", "<span class='danger'>You start charging your bluespace core...</span>")
|
||||
playsound(get_turf(H), 'sound/weapons/flash.ogg', 25, 1)
|
||||
addtimer(src, "teleport", 15)
|
||||
addtimer(src, "teleport", 15, TIMER_NORMAL, H)
|
||||
|
||||
/datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H)
|
||||
H.visible_message("<span class='warning'>[H] disappears in a shower of sparks!</span>", "<span class='danger'>You teleport!</span>")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
pass_flags = PASSTABLE
|
||||
languages_spoken = MONKEY
|
||||
languages_understood = MONKEY
|
||||
ventcrawler = 1
|
||||
ventcrawler = VENTCRAWLER_NUDE
|
||||
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1)
|
||||
type_of_meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/monkey
|
||||
gib_type = /obj/effect/decal/cleanable/blood/gibs
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
density = 0
|
||||
movement_type = FLYING
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
mob_size = MOB_SIZE_TINY
|
||||
gold_core_spawnable = 2
|
||||
verb_say = "flutters"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
speak_chance = 1
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
minbodytemp = 200
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
response_disarm = "shoos"
|
||||
response_harm = "splats"
|
||||
density = 0
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
gold_core_spawnable = 2
|
||||
var/squish_chance = 50
|
||||
loot = list(/obj/effect/decal/cleanable/deadcockroach)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
response_harm = "stomps"
|
||||
stop_automated_movement = 1
|
||||
friendly = "pinches"
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
var/obj/item/inventory_head
|
||||
var/obj/item/inventory_mask
|
||||
gold_core_spawnable = 2
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
unsuitable_atmos_damage = 0
|
||||
wander = 0
|
||||
speed = 0
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
healable = 0
|
||||
density = 0
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
harm_intent_damage = 5
|
||||
density = TRUE
|
||||
speed = 1
|
||||
ventcrawler = 0
|
||||
ventcrawler = VENTCRAWLER_NONE
|
||||
faction = list("ratvar")
|
||||
speak_emote = list("clanks", "clinks", "clunks", "clangs")
|
||||
verb_ask = "requests"
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
hacked = 1
|
||||
mind.special_role = "hacked drone"
|
||||
seeStatic = 0 //I MUST SEE THEIR TERRIFIED FACES
|
||||
ventcrawler = 0 //Again, balance
|
||||
ventcrawler = VENTCRAWLER_NONE //Again, balance
|
||||
speed = 1 //gotta go slow
|
||||
message_admins("[src] ([src.key]) became a hacked drone hellbent on [clockwork ? "serving Ratvar" : "destroying the station"]!")
|
||||
else
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
attacktext = "kicks"
|
||||
health = 3
|
||||
maxHealth = 3
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
var/amount_grown = 0
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
@@ -226,7 +226,7 @@ var/global/chicken_count = 0
|
||||
attacktext = "kicks"
|
||||
health = 15
|
||||
maxHealth = 15
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
var/eggsleft = 0
|
||||
var/eggsFertile = TRUE
|
||||
var/body_color
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "shoos"
|
||||
response_harm = "stomps on"
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
density = 0
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "splats"
|
||||
density = 0
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
var/body_color //brown, gray and white, leave blank for random
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
var/busy = 0
|
||||
pass_flags = PASSTABLE
|
||||
move_to_delay = 6
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
unique_name = 1
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
obj_damage = 0
|
||||
environment_smash = 0
|
||||
speak_emote = list("squeaks")
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
var/datum/mind/origin
|
||||
var/egg_lain = 0
|
||||
gold_core_spawnable = 1 //are you sure about this??
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
melee_damage_upper = 12
|
||||
attacktext = "slams"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
faction = list("plants")
|
||||
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
|
||||
@@ -608,7 +608,7 @@ Difficulty: Very Hard
|
||||
density = 0
|
||||
movement_type = FLYING
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
mob_size = MOB_SIZE_TINY
|
||||
gold_core_spawnable = 0
|
||||
verb_say = "warps"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/asteroid/
|
||||
/mob/living/simple_animal/hostile/asteroid
|
||||
vision_range = 2
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
faction = list("mining")
|
||||
@@ -479,7 +479,7 @@
|
||||
if(icon_state != icon_aggro)
|
||||
icon_state = icon_aggro
|
||||
|
||||
/obj/effect/goliath_tentacle/
|
||||
/obj/effect/goliath_tentacle
|
||||
name = "Goliath tentacle"
|
||||
icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
|
||||
icon_state = "Goliath_tentacle"
|
||||
@@ -875,7 +875,7 @@
|
||||
response_harm = "squishes"
|
||||
friendly = "pinches"
|
||||
a_intent = "help"
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
gold_core_spawnable = 2
|
||||
stat_attack = 1
|
||||
gender = NEUTER
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
stat_attack = 2
|
||||
mouse_opacity = 1
|
||||
speed = 1
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
robust_searching = 1
|
||||
unique_name = 1
|
||||
speak_emote = list("squeaks")
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
obj_damage = 0
|
||||
environment_smash = 0
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
mob_size = MOB_SIZE_TINY
|
||||
movement_type = FLYING
|
||||
speak_emote = list("squeaks")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
response_disarm = "pokes"
|
||||
response_harm = "splats"
|
||||
density = 0
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
faction = list("hostile")
|
||||
attack_sound = 'sound/effects/Reee.ogg'
|
||||
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/nugget = 1)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
faction = list("hostile","stickman")
|
||||
check_friendly_fire = 1
|
||||
status_flags = CANPUSH
|
||||
var/datum/action/boss/wizard_summon_minions/changesummons = /datum/action/boss/wizard_summon_minions/
|
||||
var/datum/action/boss/wizard_summon_minions/changesummons = /datum/action/boss/wizard_summon_minions
|
||||
var/summoned_by_wizard = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/stickman/ranged
|
||||
|
||||
@@ -9,7 +9,7 @@ var/list/slime_colours = list("rainbow", "grey", "purple", "metal", "orange",
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
icon_state = "grey baby slime"
|
||||
pass_flags = PASSTABLE
|
||||
ventcrawler = 2
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
gender = NEUTER
|
||||
var/is_adult = 0
|
||||
var/docile = 0
|
||||
|
||||
@@ -302,6 +302,10 @@ var/next_mob_id = 0
|
||||
return
|
||||
if(AM.anchored || AM.throwing)
|
||||
return
|
||||
if(isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
if(L.buckled && L.buckled.buckle_prevents_pull)
|
||||
return
|
||||
if(throwing || incapacitated())
|
||||
return
|
||||
|
||||
|
||||
@@ -309,14 +309,19 @@
|
||||
|
||||
//moves the mob/object we're pulling
|
||||
/mob/proc/Move_Pulled(atom/A)
|
||||
if (!pulling)
|
||||
if(!pulling)
|
||||
return
|
||||
if (pulling.anchored || !pulling.Adjacent(src))
|
||||
if(pulling.anchored || !pulling.Adjacent(src))
|
||||
stop_pulling()
|
||||
return
|
||||
if (A == loc && pulling.density)
|
||||
if(isliving(pulling))
|
||||
var/mob/living/L = pulling
|
||||
if(L.buckled && L.buckled.buckle_prevents_pull) //if they're buckled to something that disallows pulling, prevent it
|
||||
stop_pulling()
|
||||
return
|
||||
if(A == loc && pulling.density)
|
||||
return
|
||||
if (!Process_Spacemove(get_dir(pulling.loc, A)))
|
||||
if(!Process_Spacemove(get_dir(pulling.loc, A)))
|
||||
return
|
||||
step(pulling, get_dir(pulling.loc, A))
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var/global/static/ntnrc_uid = 0
|
||||
|
||||
/datum/ntnet_conversation/
|
||||
/datum/ntnet_conversation
|
||||
var/id = null
|
||||
var/title = "Untitled Conversation"
|
||||
var/datum/computer_file/program/chatclient/operator // "Administrator" of this channel. Creator starts as channel's operator,
|
||||
|
||||
@@ -2,7 +2,7 @@ var/global/datum/ntnet/ntnet_global = new()
|
||||
|
||||
|
||||
// This is the NTNet datum. There can be only one NTNet datum in game at once. Modular computers read data from this.
|
||||
/datum/ntnet/
|
||||
/datum/ntnet
|
||||
var/list/relays = list()
|
||||
var/list/logs = list()
|
||||
var/list/available_station_software = list()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var/global/file_uid = 0
|
||||
|
||||
/datum/computer_file/
|
||||
/datum/computer_file
|
||||
var/filename = "NewFile" // Placeholder. No spacebars
|
||||
var/filetype = "XXX" // File full names are [filename].[filetype] so like NewFile.XXX in this case
|
||||
var/size = 1 // File size in GQ. Integers only!
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
target = nTarget
|
||||
update_text()
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/
|
||||
/obj/item/weapon/paper/contract/infernal
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/suicide_act(mob/user)
|
||||
if(signed && (user == target.current) && istype(user,/mob/living/carbon/human/))
|
||||
|
||||
@@ -332,8 +332,9 @@ display round(lastgen) and plasmatank amount
|
||||
power_gen = 15000
|
||||
time_per_sheet = 85
|
||||
board_path = /obj/item/weapon/circuitboard/machine/pacman/super
|
||||
overheat()
|
||||
explosion(src.loc, 3, 3, 3, -1)
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/super/overheat()
|
||||
explosion(src.loc, 3, 3, 3, -1)
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/mrs
|
||||
name = "\improper M.R.S.P.A.C.M.A.N.-type portable generator"
|
||||
@@ -342,5 +343,6 @@ display round(lastgen) and plasmatank amount
|
||||
power_gen = 40000
|
||||
time_per_sheet = 80
|
||||
board_path = /obj/item/weapon/circuitboard/machine/pacman/mrs
|
||||
overheat()
|
||||
explosion(src.loc, 4, 4, 4, -1)
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/mrs/overheat()
|
||||
explosion(src.loc, 4, 4, 4, -1)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/////SINGULARITY SPAWNER
|
||||
/obj/machinery/the_singularitygen/
|
||||
/obj/machinery/the_singularitygen
|
||||
name = "Gravitational Singularity Generator"
|
||||
desc = "An Odd Device which produces a Gravitational Singularity when set up."
|
||||
icon = 'icons/obj/singularity.dmi'
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
variance = 25
|
||||
|
||||
|
||||
/obj/item/ammo_casing/shotgun/improvised/overload/
|
||||
/obj/item/ammo_casing/shotgun/improvised/overload
|
||||
name = "overloaded improvised shell"
|
||||
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \
|
||||
propellant. It's like playing russian roulette, with a shotgun."
|
||||
|
||||
@@ -32,10 +32,6 @@
|
||||
update_icon()
|
||||
chamber_round(0)
|
||||
|
||||
if(unique_rename)
|
||||
if(istype(A, /obj/item/weapon/pen))
|
||||
rename_weapon(user)
|
||||
|
||||
/obj/item/weapon/gun/ballistic/revolver/attack_self(mob/living/user)
|
||||
var/num_unloaded = 0
|
||||
chambered = null
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/gun/magic/staff/
|
||||
/obj/item/weapon/gun/magic/staff
|
||||
slot_flags = SLOT_BACK
|
||||
|
||||
/obj/item/weapon/gun/magic/staff/change
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/gun/magic/wand/
|
||||
/obj/item/weapon/gun/magic/wand
|
||||
name = "wand of nothing"
|
||||
desc = "It's not just a stick, it's a MAGIC stick!"
|
||||
ammo_type = /obj/item/ammo_casing/magic
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/projectile/bullet/reusable
|
||||
name = "reusable bullet"
|
||||
desc = "How do you even reuse a bullet?"
|
||||
var/ammo_type = /obj/item/ammo_casing/caseless/
|
||||
var/ammo_type = /obj/item/ammo_casing/caseless
|
||||
var/dropped = 0
|
||||
impact_effect_type = null
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
PoolOrNew(/obj/effect/hotspot, turf)
|
||||
holder.chem_temp = 1000 // hot as shit
|
||||
|
||||
/datum/chemical_reaction/reagent_explosion/methsplosion/
|
||||
/datum/chemical_reaction/reagent_explosion/methsplosion
|
||||
name = "Meth explosion"
|
||||
id = "methboom1"
|
||||
results = list("methboom1" = 1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/touch/
|
||||
/obj/effect/proc_holder/spell/targeted/touch
|
||||
var/hand_path = "/obj/item/weapon/melee/touch_attack"
|
||||
var/obj/item/weapon/melee/touch_attack/attached_hand = null
|
||||
invocation_type = "none" //you scream on connecting, not summoning
|
||||
|
||||
@@ -245,12 +245,12 @@
|
||||
if((!O.use_digitigrade && swap_back == FALSE) || (O.use_digitigrade && swap_back == TRUE))
|
||||
if(O.body_part == LEG_LEFT)
|
||||
if(swap_back == TRUE)
|
||||
N = new /obj/item/bodypart/l_leg/
|
||||
N = new /obj/item/bodypart/l_leg
|
||||
else
|
||||
N = new /obj/item/bodypart/l_leg/digitigrade
|
||||
else if(O.body_part == LEG_RIGHT)
|
||||
if(swap_back == TRUE)
|
||||
N = new /obj/item/bodypart/r_leg/
|
||||
N = new /obj/item/bodypart/r_leg
|
||||
else
|
||||
N = new /obj/item/bodypart/r_leg/digitigrade
|
||||
if(!N)
|
||||
|
||||
@@ -55,6 +55,22 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">02 December 2016</h2>
|
||||
<h3 class="author">Cobby updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Removes the exploit that allowed you to bypass grabcooldowns with Ctrl+Click</li>
|
||||
</ul>
|
||||
<h3 class="author">PeopleAreStrange updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Changed F7 to buildmode, F8 to Invismin (again). Removed stealthmin toggle</li>
|
||||
</ul>
|
||||
<h3 class="author">RemieRichards updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added a new lavaland "boss"</li>
|
||||
<li class="tweak">Hostile mobs will now find a new target if they failed to attack their current one for 30 seconds, this reduces cheese by simply making the mob find something else to do/someone to kill</li>
|
||||
<li class="bugfix">Hostile mobs with search_objects will now regain that value after a certain 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.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">30 November 2016</h2>
|
||||
<h3 class="author">ANGRY CODER updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -8180,3 +8180,17 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- rscadd: Added anti-armour launcher. A single-use rocket launcher capable of penetrating
|
||||
all but the heaviest of armour. Deals massively increased damage to cyborgs
|
||||
and mechs.
|
||||
2016-12-02:
|
||||
Cobby:
|
||||
- bugfix: Removes the exploit that allowed you to bypass grabcooldowns with Ctrl+Click
|
||||
PeopleAreStrange:
|
||||
- tweak: Changed F7 to buildmode, F8 to Invismin (again). Removed stealthmin toggle
|
||||
RemieRichards:
|
||||
- rscadd: Added a new lavaland "boss"
|
||||
- tweak: Hostile mobs will now find a new target if they failed to attack their
|
||||
current one for 30 seconds, this reduces cheese by simply making the mob find
|
||||
something else to do/someone to kill
|
||||
- bugfix: Hostile mobs with search_objects will now regain that value after a certain
|
||||
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.
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
author: "RemieRichards"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added a new lavaland \"boss\""
|
||||
- tweak: "Hostile mobs will now find a new target if they failed to attack their current one for 30 seconds, this reduces cheese by simply making the mob find something else to do/someone to kill"
|
||||
- bugfix: "Hostile mobs with search_objects will now regain that value after a certain 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."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "PeopleAreStrange"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Changed F7 to buildmode, F8 to Invismin (again). Removed stealthmin toggle"
|
||||
@@ -0,0 +1,7 @@
|
||||
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,4 +0,0 @@
|
||||
author: "Cobby"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Removes the exploit that allowed you to bypass grabcooldowns with Ctrl+Click"
|
||||
Reference in New Issue
Block a user