Files
CHOMPStation2/code/game/gamemodes/objective.dm
uporotiy be044b18c8 -Finished work on the "cult" gamemode. I'll still add features to it later, but it is safe to be put on secret rotation now.
-Added an energy cutlass and made a pirate version of the space suit in preparation for a later nuke update.
-Changeling now ends 15 minutes after changeling death, unless he's ressurected.
-Further fixing of wizarditis teleporting into space.
-Fixed the wise beard sprite.
-Fixed missing sprite for monkeyburgers.
-Fixed Beepsky automatically adding 2 treason points to EVERYONE.
I believe that's everything.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@365 316c924e-a436-60f5-8080-3fe189b3f50e
2010-11-02 19:13:32 +00:00

225 lines
6.4 KiB
Plaintext

datum
objective
var/datum/mind/owner
var/explanation_text
New(var/text)
if(text)
src.explanation_text = text
proc
check_completion()
return 1
assassinate
var/datum/mind/target
proc/find_target()
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
if((possible_target != owner) && istype(possible_target.current, /mob/living/carbon/human))
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [target.assigned_role]."
else
explanation_text = "Free Objective"
return target
proc/find_target_by_role(var/role)
for(var/datum/mind/possible_target in ticker.minds)
if((possible_target != owner) && istype(possible_target.current, /mob/living/carbon/human) && (possible_target.assigned_role == role))
target = possible_target
break
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [target.assigned_role]."
else
explanation_text = "Free Objective"
return target
check_completion()
if(target && target.current)
if(target.current.stat == 2 || istype(target.current.loc.loc, /area/tdome)) //Assuming this works, people in the thunderdome now count as dead for traitor objectives. --NeoFite
return 1
else
return 0
else
return 1
hijack
explanation_text = "Hijack the emergency shuttle by escaping alone."
check_completion()
if(emergency_shuttle.location<2)
return 0
if(!owner.current || owner.current.stat ==2)
return 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
for(var/mob/living/player in world)
if (player.mind && (player.mind != owner))
if (player.stat != 2) //they're not dead
if (get_turf(player) in shuttle)
return 0
return 1
escape
explanation_text = "Escape on the shuttle alive."
check_completion()
if(emergency_shuttle.location<2)
return 0
if(!owner.current || owner.current.stat ==2)
return 0
var/turf/location = get_turf(owner.current.loc)
if(!location)
return 0
var/area/check_area = location.loc
if(istype(check_area, /area/shuttle/escape/centcom))
return 1
else
return 0
survive
explanation_text = "Stay alive until the end"
check_completion()
if(!owner.current || owner.current.stat == 2)
return 0
return 1
steal
var/obj/item/steal_target
var/target_name
proc/find_target()
var/list/items = list("captain's antique laser gun", "hand teleporter", "RCD", "jetpack", "captains jumpsuit", "functional ai")
target_name = pick(items)
switch(target_name)
if("captain's antique laser gun")
steal_target = /obj/item/weapon/gun/energy/laser_gun/captain
if("hand teleporter")
steal_target = /obj/item/weapon/hand_tele
if("RCD")
steal_target = /obj/item/weapon/rcd
if("jetpack")
steal_target = /obj/item/weapon/tank/jetpack
if("captains jumpsuit")
steal_target = /obj/item/clothing/under/rank/captain
if("functional ai")
steal_target = /obj/item/device/aicard
explanation_text = "Steal a [target_name]."
return steal_target
check_completion()
if(steal_target)
if(owner.current)
if(owner.current.check_contents_for(steal_target))
if(target_name == "functional ai")
// world << "dude's after an AI, time to check for one."
for(var/obj/item/device/aicard/C in owner.current.contents)
// world << "Found an intelicard, checking it for an AI"
for(var/mob/living/silicon/ai/M in C)
// world << "Found an AI, checking if it's alive"
if(istype(M, /mob/living/silicon/ai) && M.stat != 2)
// world << "yay, you win!"
return 1
// world << "didn't find a living AI on the card"
return 0
else
return 1
else
return 0
nuclear
explanation_text = "Destroy the station with a nuclear device."
absorb
var/num_to_eat //this is supposed to be semi-random but fuck it for now, this is alpha
proc/gen_num_to_eat() //this doesn't work -- should work now, changed it a bit -- Urist
num_to_eat = rand (4,6)
explanation_text = "Absorb [num_to_eat] compatible genomes."
return num_to_eat
check_completion()
if((owner.current.absorbed_dna.len - 1) >= num_to_eat)
return 1
else
return 0
/* Isn't suited for global objectives
/*---------CULTIST----------*/
eldergod
explanation_text = "Summon Nar-Sie via the use of an appropriate rune. It will only work if nine cultists stand on and around it."
check_completion()
if(eldergod) //global var, defined in rune4.dm
return 1
return 0
survivecult
var/num_cult
explanation_text = "Our knowledge must live on. Make sure at least 5 acolytes escape on the shuttle to spread their work on an another station."
check_completion()
if(emergency_shuttle.location<2)
return 0
var/cultists_escaped = 0
var/area/shuttle/escape/centcom/C = /area/shuttle/escape/centcom
for(var/turf/T in get_area_turfs(C.type))
for(var/mob/living/carbon/human/H in T)
if(cultists.Find(H))
cultists_escaped++
if(cultists_escaped>=5)
return 1
return 0
sacrifice //stolen from traitor target objective
proc/find_target() //I don't know how to make it work with the rune otherwise, so I'll do it via a global var, sacrifice_target, defined in rune15.dm
var/list/possible_targets = call(/datum/game_mode/cult/proc/get_unconvertables)()
if(possible_targets.len > 0)
sacrifice_target = pick(possible_targets)
if(sacrifice_target && sacrifice_target.current)
explanation_text = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell join blood) and three acolytes to do so."
else
explanation_text = "Free Objective"
return sacrifice_target
check_completion() //again, calling on a global list defined in rune15.dm
if(sacrifice_target.current in sacrificed)
return 1
else
return 0
/*-------ENDOF CULTIST------*/
*/