Merge pull request #3232 from tigercat2000/stupid_fucking_hardcoded_whoreshit

objective fixes
This commit is contained in:
Fox McCloud
2016-01-14 17:42:53 -05:00
2 changed files with 51 additions and 27 deletions
+3 -6
View File
@@ -129,20 +129,18 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
return 0
for(var/obj/stack in cortical_stacks)
if (get_area(stack.loc) != locate(/area/shuttle/vox/station))
return 0
if(get_area(stack) != locate(/area/shuttle/vox) && get_area(stack) != locate(/area/vox_station))
return 0 //this is stupid as fuck
return 1
/datum/game_mode/proc/is_raider_crew_alive()
for(var/datum/mind/raider in raiders)
if(raider.current)
if(istype(raider.current,/mob/living/carbon/human) && raider.current.stat != 2)
if(istype(raider.current,/mob/living/carbon/human) && raider.current.stat != DEAD)
return 1
return 0
/datum/game_mode/proc/forge_vox_objectives()
var/i = 1
var/max_objectives = pick(2,2,2,2,3,3,3,4)
var/list/objs = list()
@@ -179,7 +177,6 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
show_objectives(raider)
/datum/game_mode/heist/declare_completion()
//No objectives, go straight to the feedback.
if(!(raid_objectives.len)) return ..()
+48 -21
View File
@@ -333,7 +333,7 @@ datum/objective/hijack
check_completion()
if(!owner.current || owner.current.stat)
return 0
if(!shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
if(shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
return 0
if(issilicon(owner.current))
return 0
@@ -362,7 +362,7 @@ datum/objective/hijack
check_completion()
if(!owner.current)
return 0
if(!shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
if(shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
return 0
var/area/A = shuttle_master.emergency.areaInstance
@@ -392,7 +392,7 @@ datum/objective/block
check_completion()
if(!istype(owner.current, /mob/living/silicon))
return 0
if(!shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
if(shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
return 0
if(!owner.current)
return 0
@@ -852,19 +852,21 @@ datum/objective/heist/kidnap
check_completion()
if(target && target.current)
if (target.current.stat == DEAD)
return 0 // They're dead. Fail.
//if (!target.current.restrained())
// return 0 // They're loose. Close but no cigar.
return 0
var/area/shuttle/vox/A = locate() //stupid fucking hardcoding
var/area/vox_station/B = locate() //but necessary
var/area/shuttle/vox/station/A = locate()
for(var/mob/living/carbon/human/M in A)
if(target.current == M)
return 1 //They're restrained on the shuttle. Success.
return 1
for(var/mob/living/carbon/human/M in B)
if(target.current == M)
return 1
else
return 0
datum/objective/heist/loot
choose_target()
var/loot = "an object"
switch(rand(1,8))
@@ -904,26 +906,38 @@ datum/objective/heist/loot
explanation_text = "We are lacking in hardware. Steal or trade [loot]."
check_completion()
var/total_amount = 0
for(var/obj/O in locate(/area/shuttle/vox/station))
if(istype(O,target)) total_amount++
for(var/obj/O in locate(/area/shuttle/vox))
if(istype(O, target))
total_amount++
for(var/obj/I in O.contents)
if(istype(I,target)) total_amount++
if(total_amount >= target_amount) return 1
if(istype(I, target))
total_amount++
if(total_amount >= target_amount)
return 1
for(var/obj/O in locate(/area/vox_station))
if(istype(O, target))
total_amount++
for(var/obj/I in O.contents)
if(istype(I, target))
total_amount++
if(total_amount >= target_amount)
return 1
var/datum/game_mode/heist/H = ticker.mode
for(var/datum/mind/raider in H.raiders)
if(raider.current)
for(var/obj/O in raider.current.get_contents())
if(istype(O,target)) total_amount++
if(total_amount >= target_amount) return 1
if(istype(O,target))
total_amount++
if(total_amount >= target_amount)
return 1
return 0
datum/objective/heist/salvage
choose_target()
switch(rand(1,8))
if(1)
@@ -954,16 +968,28 @@ datum/objective/heist/salvage
explanation_text = "Ransack or trade with the station and escape with [target_amount] [target]."
check_completion()
var/total_amount = 0
for(var/obj/item/O in locate(/area/shuttle/vox/station))
for(var/obj/item/O in locate(/area/shuttle/vox))
var/obj/item/stack/sheet/S
if(istype(O,/obj/item/stack/sheet))
if(O.name == target)
S = O
total_amount += S.get_amount()
for(var/obj/I in O.contents)
if(istype(I,/obj/item/stack/sheet))
if(I.name == target)
S = I
total_amount += S.get_amount()
for(var/obj/item/O in locate(/area/vox_station))
var/obj/item/stack/sheet/S
if(istype(O,/obj/item/stack/sheet))
if(O.name == target)
S = O
total_amount += S.get_amount()
for(var/obj/I in O.contents)
if(istype(I,/obj/item/stack/sheet))
if(I.name == target)
@@ -988,7 +1014,8 @@ datum/objective/heist/inviolate_crew
check_completion()
var/datum/game_mode/heist/H = ticker.mode
if(H.is_raider_crew_safe()) return 1
if(H.is_raider_crew_safe())
return 1
return 0
#define MAX_VOX_KILLS 10 //Number of kills during the round before the Inviolate is broken.