From 66ee1659b6d8b624ed2ed0f05e78d976dac0cb3e Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 26 Feb 2017 21:40:46 -0800 Subject: [PATCH 1/2] Post-PR-3 bugfix & rebalance pass Changes: 1) Fixes wireless AEGs being able to be recharged in conventional rechargers. This prevents people with recharger access using them as regular laserguns. 2) Fixes spiderlings from dying Mother of Terrors lingering around for a long time. Now, they're forced to ventcrawl immediately if they can. 3) Improves queen health regen. She was regularly getting picked off by one guy with a gun or two. 4) Queen and Mother now gain vent smash ability. Given how often the crew welds literally every vent, this is necessary to avoid them being totally shut out of the vent system in the late game. 5) Prince loses vent smash ability. Instead, he gets the ability to spin thicker (vision-blocking) webs, and +10 melee damage. 6) Fixes 'evil looking spiderling' meta by requiring that queen has laid at least 10 eggs before the ability is usable, so newbie queens don't use it first thing and instantly get discovered/swarmed. 7) Adds confirmation prompt to queen nesting. Queens will no longer be confused about why the cannot ventcrawl after nesting. 8) Reduces the chances of terror spiderlings skittering onto space tiles. Makes them less likely to space themselves. 9) Tweaks TS event by increasing timer, and having one of the possible infestation types spawn 4, rather than 3, green terrors. --- .../mission_code/UO71-terrorspiders.dm | 1 + code/modules/events/spider_terror.dm | 4 +-- .../hostile/terror_spiders/actions.dm | 29 ++++++++++++++----- .../hostile/terror_spiders/mother.dm | 6 ++++ .../hostile/terror_spiders/prince.dm | 11 ++++--- .../hostile/terror_spiders/queen.dm | 17 ++++++++--- .../hostile/terror_spiders/reproduction.dm | 7 +++-- 7 files changed, 53 insertions(+), 22 deletions(-) diff --git a/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm b/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm index a3b8db53bf2..52d8caa6f74 100644 --- a/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm +++ b/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm @@ -186,6 +186,7 @@ force = 10 origin_tech = null selfcharge = 1 + can_charge = 0 var/inawaymission = 1 /obj/item/weapon/gun/energy/laser/awaymission_aeg/process() diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index 2623bad0cfe..aed998713c2 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -1,6 +1,6 @@ /datum/event/spider_terror - announceWhen = 120 + announceWhen = 240 var/spawncount = 1 /datum/event/spider_terror/setup() @@ -22,7 +22,7 @@ switch(infestation_type) if(1) spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/green - spawncount = 3 + spawncount = 4 if(2) spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/white spawncount = 2 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm index 276fb905a7b..9547fa23b61 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm @@ -7,7 +7,7 @@ /datum/action/innate/terrorspider/web/Activate() var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner - user.Web() + user.Web(0) /datum/action/innate/terrorspider/wrap name = "Wrap" @@ -32,14 +32,25 @@ // ---------- PRINCE ACTIONS -/datum/action/innate/terrorspider/princesmash +/datum/action/innate/terrorspider/thickweb + name = "Thick Web" + icon_icon = 'icons/effects/effects.dmi' + button_icon_state = "stickyweb2" + +/datum/action/innate/terrorspider/thickweb/Activate() + var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner + user.Web(1) + +// ---------- BOSS ACTIONS + +/datum/action/innate/terrorspider/ventsmash name = "Smash Welded Vent" icon_icon = 'icons/atmos/vent_pump.dmi' button_icon_state = "map_vent" -/datum/action/innate/terrorspider/princesmash/Activate() - var/mob/living/simple_animal/hostile/poison/terror_spider/prince/user = owner - user.DoPrinceSmash() +/datum/action/innate/terrorspider/ventsmash/Activate() + var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner + user.DoVentSmash() // ---------- QUEEN ACTIONS @@ -50,7 +61,7 @@ /datum/action/innate/terrorspider/queen/queennest/Activate() var/mob/living/simple_animal/hostile/poison/terror_spider/queen/user = owner - user.NestMode() + user.NestPrompt() /datum/action/innate/terrorspider/queen/queensense name = "Hive Sense" @@ -81,7 +92,7 @@ // ---------- WEB -/mob/living/simple_animal/hostile/poison/terror_spider/proc/Web() +/mob/living/simple_animal/hostile/poison/terror_spider/proc/Web(var/thick = 0) var/turf/mylocation = loc visible_message("[src] begins to secrete a sticky substance.") if(do_after(src, delay_web, target = loc)) @@ -96,6 +107,8 @@ else var/obj/effect/spider/terrorweb/W = new /obj/effect/spider/terrorweb(loc) W.creator_ckey = ckey + if(thick) + W.opacity = 1 /obj/effect/spider/terrorweb name = "terror web" @@ -214,7 +227,7 @@ busy = 0 stop_automated_movement = 0 -/mob/living/simple_animal/hostile/poison/terror_spider/prince/proc/DoPrinceSmash() +/mob/living/simple_animal/hostile/poison/terror_spider/proc/DoVentSmash() for(var/obj/machinery/atmospherics/unary/vent_pump/P in view(1,src)) if(P.welded) P.welded = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm index 8e3f5ee20cd..fa162ab8848 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm @@ -25,7 +25,12 @@ spider_tier = TS_TIER_3 spider_opens_doors = 2 var/canspawn = 1 + var/datum/action/innate/terrorspider/ventsmash/ventsmash_action +/mob/living/simple_animal/hostile/poison/terror_spider/mother/New() + ..() + ventsmash_action = new() + ventsmash_action.Grant(src) /mob/living/simple_animal/hostile/poison/terror_spider/mother/death(gibbed) if(canspawn) @@ -38,6 +43,7 @@ else if(prob(10)) S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/black, /mob/living/simple_animal/hostile/poison/terror_spider/green) S.amount_grown = 50 // double speed growth + S.immediate_ventcrawl = 1 visible_message("[src] breaks apart, the many spiders on its back scurrying everywhere!") degenerate = 1 ..() diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm index b18f1c18492..40e6515668f 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm @@ -19,8 +19,8 @@ maxHealth = 600 // 30 laser shots health = 600 regen_points_per_hp = 6 // double the normal - IE halved regen speed - melee_damage_lower = 20 - melee_damage_upper = 30 + melee_damage_lower = 30 + melee_damage_upper = 40 move_to_delay = 4 // faster than normal ventcrawler = 0 ai_ventcrawls = 0 @@ -29,13 +29,12 @@ idle_ventcrawl_chance = 0 spider_tier = TS_TIER_3 spider_opens_doors = 2 - var/datum/action/innate/terrorspider/princesmash/princesmash_action - + var/datum/action/innate/terrorspider/thickweb/thickweb_action /mob/living/simple_animal/hostile/poison/terror_spider/prince/New() ..() - princesmash_action = new() - princesmash_action.Grant(src) + thickweb_action = new() + thickweb_action.Grant(src) /mob/living/simple_animal/hostile/poison/terror_spider/prince/death(gibbed) if(!hasdied) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index 3c7a9ca5677..e4a6a5da3cd 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -18,6 +18,7 @@ icon_dead = "terror_queen_dead" maxHealth = 200 health = 200 + regen_points_per_tick = 3 melee_damage_lower = 10 melee_damage_upper = 20 move_to_delay = 15 // yeah, this is very slow, but @@ -30,7 +31,7 @@ var/neststep = 0 var/hasnested = 0 var/spider_max_per_nest = 20 // above this, queen stops spawning more, and declares war. - var/canlay = 0 // main counter for egg-laying ability! # = num uses, incremented at intervals + var/canlay = 4 // main counter for egg-laying ability! # = num uses, incremented at intervals var/eggslaid = 0 var/spider_can_fakelings = 3 // spawns defective spiderlings that don't grow up, used to freak out crew, atmosphere idle_ventcrawl_chance = 0 @@ -47,12 +48,14 @@ var/datum/action/innate/terrorspider/queen/queensense/queensense_action var/datum/action/innate/terrorspider/queen/queeneggs/queeneggs_action var/datum/action/innate/terrorspider/queen/queenfakelings/queenfakelings_action - + var/datum/action/innate/terrorspider/ventsmash/ventsmash_action /mob/living/simple_animal/hostile/poison/terror_spider/queen/New() ..() queennest_action = new() queennest_action.Grant(src) + ventsmash_action = new() + ventsmash_action.Grant(src) spider_myqueen = src if(spider_awaymission) spider_growinstantly = 1 @@ -160,8 +163,6 @@ if(prob(20)) var/obj/effect/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src) if(!N) - if(!spider_awaymission) - QueenFakeLings() spider_lastspawn = world.time DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 2, 1) neststep = 5 @@ -215,6 +216,11 @@ DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 2, 0) neststep = 6 +/mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/NestPrompt() + var/confirm = alert(src, "Are you sure you want to nest? You will be able to lay eggs, and smash walls, but not ventcrawl.","Nest?","Yes","No") + if(confirm == "Yes") + NestMode() + /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/NestMode() queeneggs_action = new() queeneggs_action.Grant(src) @@ -316,6 +322,9 @@ C.toggle_cam(src, 0) /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/QueenFakeLings() + if(eggslaid < 10) + to_chat(src, "You must lay at least 10 eggs before doing this.") + return if(spider_can_fakelings) spider_can_fakelings-- var/numlings = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm index 4e58a858504..f6188ced362 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm @@ -15,6 +15,7 @@ var/spider_myqueen = null var/use_vents = 1 var/list/enemies = list() + var/immediate_ventcrawl = 0 /obj/effect/spider/spiderling/terror_spiderling/New() ..() @@ -73,8 +74,10 @@ var/list/nearby = oview(10, src) if(nearby.len) var/target_atom = pick(nearby) - walk_to(src, target_atom) - else if(prob(10) && use_vents) + if(!istype(get_turf(target_atom),/turf/space)) + walk_to(src, target_atom) + else if(immediate_ventcrawl || (prob(10) && use_vents)) + immediate_ventcrawl = 0 for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(7,src)) if(!v.welded) entry_vent = v From e6950ef66327dbf2a58dafb273017e8bb4c1c650 Mon Sep 17 00:00:00 2001 From: Kyep Date: Tue, 28 Feb 2017 22:50:41 -0800 Subject: [PATCH 2/2] reduces TS event chance --- code/modules/events/event_container.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 89ae637b84b..56d7d374167 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -191,7 +191,7 @@ var/list/event_last_fired = list() new /datum/event_meta(EVENT_LEVEL_MAJOR, "Abductor Visit", /datum/event/abductor, 80, is_one_shot = 1), new /datum/event_meta/alien(EVENT_LEVEL_MAJOR, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Traders", /datum/event/traders, 0, is_one_shot = 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Terror Spiders", /datum/event/spider_terror, 0, list(ASSIGNMENT_SECURITY = 20), is_one_shot = 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Terror Spiders", /datum/event/spider_terror, 0, list(ASSIGNMENT_SECURITY = 15), is_one_shot = 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Slaughter Demon", /datum/event/spawn_slaughter, 15, is_one_shot = 1) )