[MIRROR] Harvesters are more fun to play (#894)

* Harvesters are more fun to play

* resolve .rej
This commit is contained in:
CitadelStationBot
2017-05-18 07:12:29 -05:00
committed by Poojawa
parent 593a784583
commit 6617f68604
27 changed files with 211 additions and 164 deletions
@@ -117,12 +117,10 @@
if(!isnewplayer(M))
flash_color(M, flash_color="#966400", flash_time=1)
shake_camera(M, 4, 3)
var/ratvar_chance = min(SSticker.mode.servants_of_ratvar.len, 50)
var/narsie_chance = SSticker.mode.cult.len
for(var/mob/living/simple_animal/hostile/construct/harvester/C in GLOB.player_list)
narsie_chance++
var/ratvar_chance = min(LAZYLEN(SSticker.mode.servants_of_ratvar), 50)
var/narsie_chance = min(LAZYLEN(SSticker.mode.cult), 50)
ratvar_chance = rand(base_victory_chance, ratvar_chance)
narsie_chance = rand(base_victory_chance, min(narsie_chance, 50))
narsie_chance = rand(base_victory_chance, narsie_chance)
if(ratvar_chance > narsie_chance)
winner = "Ratvar"
break
+7 -6
View File
@@ -279,12 +279,13 @@
var/explanation
switch(cult_objectives[obj_count])
if("sacrifice")
if(GLOB.sac_complete)
explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. <span class='greenannounce'>Success!</span>"
SSblackbox.add_details("cult_objective","cult_sacrifice|SUCCESS")
else
explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. <span class='boldannounce'>Fail.</span>"
SSblackbox.add_details("cult_objective","cult_sacrifice|FAIL")
if(GLOB.sac_mind)
if(GLOB.sac_complete)
explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. <span class='greenannounce'>Success!</span>"
SSblackbox.add_details("cult_objective","cult_sacrifice|SUCCESS")
else
explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. <span class='boldannounce'>Fail.</span>"
SSblackbox.add_details("cult_objective","cult_sacrifice|FAIL")
if("eldergod")
if(!eldergod)
explanation = "Summon Nar-Sie. <span class='greenannounce'>Success!</span>"
+2 -2
View File
@@ -141,7 +141,7 @@
to_chat(B.current, "<span class='cultlarge'>[Nominee] could not win the cult's support and shall continue to serve as an acolyte.")
return FALSE
GLOB.cult_mastered = TRUE
SSticker.mode.remove_cultist(Nominee.mind, FALSE)
SSticker.mode.remove_cultist(Nominee.mind, TRUE)
Nominee.mind.add_antag_datum(ANTAG_DATUM_CULT_MASTER)
for(var/datum/mind/B in SSticker.mode.cult)
if(B.current)
@@ -288,7 +288,7 @@
B.current.client.images += GLOB.blood_target_image
attached_action.owner.update_action_buttons_icon()
remove_ranged_ability("<span class='cult'>The marking rite is complete! It will last for 90 seconds.</span>")
addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target), 900, TIMER_OVERRIDE)
GLOB.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target), 900, TIMER_STOPPABLE)
return TRUE
return FALSE
+6 -1
View File
@@ -481,7 +481,12 @@ structure_check() searches for nearby cultist structures required for the invoca
if(src)
color = "#FF0000"
SSticker.mode.eldergod = FALSE
new /obj/singularity/narsie/large(T) //Causes Nar-Sie to spawn even if the rune has been removed
deltimer(GLOB.blood_target_reset_timer)
GLOB.blood_target = new /obj/singularity/narsie/large(T) //Causes Nar-Sie to spawn even if the rune has been removed
for(var/datum/mind/cult_mind in SSticker.mode.cult)
if(isliving(cult_mind.current))
var/mob/living/L = cult_mind.current
L.narsie_act()
/obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal.
if((istype(I, /obj/item/weapon/tome) && iscultist(user)))
+3 -4
View File
@@ -216,9 +216,8 @@
to_chat(newstruct, "<b>You are still bound to serve the cult[stoner ? " and [stoner]":""], follow their orders and help them complete their goals at all costs.</b>")
else if(stoner)
to_chat(newstruct, "<b>You are still bound to serve your creator, [stoner], follow their orders and help them complete their goals at all costs.</b>")
newstruct.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
var/obj/screen/alert/bloodsense/BS = newstruct.alerts["bloodsense"]
BS.Cviewer = newstruct
var/obj/screen/alert/bloodsense/BS = newstruct.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
BS.Cviewer = newstruct
newstruct.cancel_camera()
@@ -271,4 +270,4 @@
T.dropItemToGround(W)
init_shade(T, U)
qdel(T)
return 1
return 1
+1 -1
View File
@@ -52,7 +52,7 @@
update_icon()
/obj/machinery/computer/narsie_act()
if(clockwork && clockwork != initial(clockwork) && prob(20)) //if it's clockwork but isn't normally clockwork
if(clockwork && clockwork != initial(clockwork)) //if it's clockwork but isn't normally clockwork
clockwork = FALSE
icon_screen = initial(icon_screen)
icon_keyboard = initial(icon_keyboard)
+10 -11
View File
@@ -179,18 +179,17 @@
/obj/machinery/door/airlock/narsie_act()
var/turf/T = get_turf(src)
var/runed = prob(20)
if(prob(20))
if(glass)
if(runed)
new/obj/machinery/door/airlock/cult/glass(T)
else
new/obj/machinery/door/airlock/cult/unruned/glass(T)
if(glass)
if(runed)
new/obj/machinery/door/airlock/cult/glass(T)
else
if(runed)
new/obj/machinery/door/airlock/cult(T)
else
new/obj/machinery/door/airlock/cult/unruned(T)
qdel(src)
new/obj/machinery/door/airlock/cult/unruned/glass(T)
else
if(runed)
new/obj/machinery/door/airlock/cult(T)
else
new/obj/machinery/door/airlock/cult/unruned(T)
qdel(src)
/obj/machinery/door/airlock/ratvar_act() //Airlocks become pinion airlocks that only allow servants
if(glass)
@@ -71,9 +71,8 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
qdel(src)
/obj/item/stack/sheet/metal/narsie_act()
if(prob(20))
new /obj/item/stack/sheet/runed_metal(loc, amount)
qdel(src)
new /obj/item/stack/sheet/runed_metal(loc, amount)
qdel(src)
/obj/item/stack/sheet/metal/fifty
amount = 50
@@ -325,9 +324,8 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
turf_type = /turf/open/floor/clockwork
/obj/item/stack/tile/brass/narsie_act()
if(prob(20))
new /obj/item/stack/sheet/runed_metal(loc, amount)
qdel(src)
new /obj/item/stack/sheet/runed_metal(loc, amount)
qdel(src)
/obj/item/stack/tile/brass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.brass_recipes
@@ -37,10 +37,9 @@
return attack_hand(user)
/obj/structure/chair/narsie_act()
if(prob(20))
var/obj/structure/chair/wood/W = new/obj/structure/chair/wood(get_turf(src))
W.setDir(dir)
qdel(src)
var/obj/structure/chair/wood/W = new/obj/structure/chair/wood(get_turf(src))
W.setDir(dir)
qdel(src)
/obj/structure/chair/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT))
@@ -239,10 +238,9 @@
var/obj/structure/chair/origin_type = /obj/structure/chair
/obj/item/chair/narsie_act()
if(prob(20))
var/obj/item/chair/wood/W = new/obj/item/chair/wood(get_turf(src))
W.setDir(dir)
qdel(src)
var/obj/item/chair/wood/W = new/obj/item/chair/wood(get_turf(src))
W.setDir(dir)
qdel(src)
/obj/item/chair/attack_self(mob/user)
plant(user)
+2 -3
View File
@@ -297,9 +297,8 @@
qdel(src)
/obj/structure/girder/narsie_act()
if(prob(25))
new /obj/structure/girder/cult(loc)
qdel(src)
new /obj/structure/girder/cult(loc)
qdel(src)
/obj/structure/girder/displaced
name = "displaced girder"
+2 -3
View File
@@ -84,9 +84,8 @@
qdel(src)
/obj/structure/table_frame/narsie_act()
if(prob(20))
new /obj/structure/table_frame/wood(src.loc)
qdel(src)
new /obj/structure/table_frame/wood(src.loc)
qdel(src)
/obj/structure/table_frame/ratvar_act()
new /obj/structure/table_frame/brass(src.loc)
+1 -2
View File
@@ -47,8 +47,7 @@
queue_smooth_neighbors(src)
/obj/structure/table/narsie_act()
if(prob(20))
new /obj/structure/table/wood(src.loc)
new /obj/structure/table/wood(src.loc)
/obj/structure/table/ratvar_act()
new /obj/structure/table/reinforced/brass(src.loc)
+3 -2
View File
@@ -188,8 +188,9 @@
else if(prob(50))
ReplaceWithLattice()
/turf/open/floor/narsie_act()
if(prob(20))
/turf/open/floor/narsie_act(force, ignore_mobs, probability = 20)
. = ..()
if(.)
ChangeTurf(/turf/open/floor/engine/cult)
/turf/open/floor/ratvar_act(force, ignore_mobs)
@@ -158,8 +158,14 @@
if(smooth)
queue_smooth_neighbors(src)
/turf/open/floor/carpet/narsie_act()
return
/turf/open/floor/carpet/narsie_act(force, ignore_mobs, probability = 20)
. = (prob(probability) || force)
for(var/I in src)
var/atom/A = I
if(ignore_mobs && ismob(A))
continue
if(ismob(A) || .)
A.narsie_act()
/turf/open/floor/carpet/break_tile()
broken = 1
@@ -250,9 +250,10 @@
if(severity < 3 || target == src)
ChangeTurf(src.baseturf)
/turf/open/floor/vines/narsie_act()
if(prob(20))
ChangeTurf(src.baseturf) //nar sie eats this shit
/turf/open/floor/vines/narsie_act(force, ignore_mobs, probability = 20)
if(prob(probability) || force)
ChangeTurf(baseturf) //nar sie eats this shit
narsie_act(force, ignore_mobs, probability)
/turf/open/floor/vines/singularity_pull(S, current_size)
if(current_size >= STAGE_FIVE)
@@ -125,9 +125,6 @@
qdel(realappearence)
realappearence = null
/turf/open/floor/engine/cult/narsie_act()
return
/turf/open/floor/engine/cult/ratvar_act()
. = ..()
if(istype(src, /turf/open/floor/engine/cult)) //if we haven't changed type
+11 -3
View File
@@ -4,19 +4,27 @@
icon = 'icons/turf/walls/cult_wall.dmi'
icon_state = "cult"
canSmoothWith = null
smooth = SMOOTH_MORE
sheet_type = /obj/item/stack/sheet/runed_metal
sheet_amount = 1
girder_type = /obj/structure/girder/cult
/turf/closed/wall/mineral/cult/Initialize()
new /obj/effect/overlay/temp/cult/turf(src)
..()
. = ..()
/turf/closed/wall/mineral/cult/devastate_wall()
new sheet_type(get_turf(src), sheet_amount)
/turf/closed/wall/mineral/cult/narsie_act()
return
/turf/closed/wall/mineral/cult/Exited(atom/movable/AM, atom/newloc)
. = ..()
if(istype(AM, /mob/living/simple_animal/hostile/construct/harvester)) //harvesters can go through cult walls, dragging something with
var/mob/living/simple_animal/hostile/construct/harvester/H = AM
var/atom/movable/stored_pulling = H.pulling
if(stored_pulling)
stored_pulling.setDir(get_dir(stored_pulling.loc, newloc))
stored_pulling.forceMove(src)
H.start_pulling(stored_pulling, TRUE)
/turf/closed/wall/mineral/cult/ratvar_act()
. = ..()
+3 -2
View File
@@ -238,8 +238,9 @@
if(prob(30))
dismantle_wall()
/turf/closed/wall/narsie_act()
if(prob(20))
/turf/closed/wall/narsie_act(force, ignore_mobs, probability = 20)
. = ..()
if(.)
ChangeTurf(/turf/closed/wall/mineral/cult)
/turf/closed/wall/ratvar_act(force, ignore_mobs)
+9
View File
@@ -375,6 +375,15 @@
A.ex_act(severity, target)
CHECK_TICK
/turf/narsie_act(force, ignore_mobs, probability = 20)
. = (prob(probability) || force)
for(var/I in src)
var/atom/A = I
if(ignore_mobs && ismob(A))
continue
if(ismob(A) || .)
A.narsie_act()
/turf/ratvar_act(force, ignore_mobs, probability = 40)
. = (prob(probability) || force)
for(var/I in src)