Merge branch 'master' into w_class

Conflicts:
	code/game/objects/items/weapons/twohanded.dm
This commit is contained in:
Mervill
2016-12-02 21:44:24 -08:00
95 changed files with 272 additions and 162 deletions
+5
View File
@@ -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
+1 -1
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
/var/global/list/mutations_list = list()
/datum/mutation/
/datum/mutation
var/name
+4 -4
View File
@@ -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 -1
View File
@@ -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
+1 -1
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
/obj/machinery/computer/arcade/
/obj/machinery/computer/arcade
name = "random arcade"
desc = "random arcade machine"
icon_state = "arcade"
+4 -4
View File
@@ -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
+4 -1
View File
@@ -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
+6
View File
@@ -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'
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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 -1
View File
@@ -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
+2 -2
View File
@@ -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 -1
View File
@@ -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!)
+2 -2
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -4
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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'
+1 -1
View File
@@ -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
+4
View File
@@ -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
+9 -4
View File
@@ -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!
+1 -1
View File
@@ -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/))
+6 -4
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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
+2 -2
View File
@@ -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)
+16
View File
@@ -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">
+14
View File
@@ -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"