Ninjas are now a random event. They may appear in most game modes after about an hour, with an assigned objective list.

Fixed aliens :a talking while dead.
Disabled hand-tele on clown-planet z-level since people were still finding ways to abuse it.
PDA menu will close properly if detomatrix fails and explodes own PDA.
Late joiners are now added to minds. It's now possible to assassinate them, and so on, as an objective.
Added a few more objectives (capture, steal brain of, protect, and download research) and new possible items to steal (also fixed admin-added steal objectives). Mostly focused on ninjas but admins can give them to regular traitors. Only research downloading is outright impossible for regular traitors (they must wear a ninja suit).
Added a few revisions to mind/objective datums and a few other things. The game should now report any extra antagonists for most round types, excluding AI malfunction.
Added two new words to station_name.dm.
Other misc changes.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1698 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
noisomehollow@lycos.com
2011-06-20 05:22:41 +00:00
parent e90bce5faa
commit 835118fa49
25 changed files with 742 additions and 391 deletions

View File

@@ -1167,6 +1167,10 @@ var/showadminmessages = 1
if(aliens_allowed)
alien_infestation()
message_admins("[key_name_admin(usr)] has spawned aliens", 1)
if("spaceninja")
if(toggle_space_ninja)
if(space_ninja_arrival())//If the ninja is actually spawned. They may not be depending on a few factors.
message_admins("[key_name_admin(usr)] has sent in a space ninja", 1)
if("carp")
var/choice = input("You sure you want to spawn carp?") in list("Badmin", "Cancel")
if(choice == "Badmin")
@@ -1329,7 +1333,7 @@ var/showadminmessages = 1
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td></tr>"
dat += "</table><table cellspacing=5><tr><td><B>Target(s)</B></td><td></td><td><B>Location</B></td></tr>"
for(var/datum/mind/N in ticker.mode:get_living_heads())
for(var/datum/mind/N in ticker.mode.get_living_heads())
var/mob/M = N.current
if(M)
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
@@ -1657,6 +1661,7 @@ var/showadminmessages = 1
<A href='?src=\ref[src];secretsfun=timeanomalies'>Spawn wormholes (Untested)</A><BR>
<A href='?src=\ref[src];secretsfun=goblob'>Spawn magma(Untested)</A><BR>
<A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR>
<A href='?src=\ref[src];secretsfun=spaceninja'>Send in a space ninja</A><BR>
<A href='?src=\ref[src];secretsfun=carp'>Trigger an Carp migration</A><BR>
<A href='?src=\ref[src];secretsfun=radiation'>Irradiate the station</A><BR>
<A href='?src=\ref[src];secretsfun=prison_break'>Trigger a Prison Break</A><BR>
@@ -1952,6 +1957,14 @@ var/showadminmessages = 1
log_admin("[key_name(usr)] toggled Aliens to [aliens_allowed].")
message_admins("[key_name_admin(usr)] toggled Aliens [aliens_allowed ? "on" : "off"].", 1)
/obj/admins/proc/toggle_space_ninja()
set category = "Server"
set desc="Toggle space ninjas spawning."
set name="Toggle Space Ninjas"
toggle_space_ninja = !toggle_space_ninja
log_admin("[key_name(usr)] toggled Space Ninjas to [toggle_space_ninja].")
message_admins("[key_name_admin(usr)] toggled Space Ninjas [toggle_space_ninja ? "on" : "off"].", 1)
/obj/admins/proc/delay()
set category = "Server"
set desc="Delay the game start"

View File

@@ -41,7 +41,8 @@
verbs += /obj/admins/proc/toggleooc //toggle ooc
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
verbs += /obj/admins/proc/toggle_aliens
verbs += /obj/admins/proc/toggle_aliens //toggle aliens
verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -188,6 +189,7 @@
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -324,6 +326,7 @@
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -482,6 +485,7 @@
//verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -630,6 +634,7 @@
//verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
//verbs += /proc/toggle_adminmsg
@@ -774,6 +779,7 @@
//verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
//verbs += /proc/toggle_adminmsg
@@ -901,6 +907,7 @@
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -1060,6 +1067,7 @@
verbs -= /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs -= /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
verbs -= /obj/admins/proc/toggle_aliens
verbs -= /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs -= /obj/admins/proc/voteres //toggle votes
verbs -= /client/proc/deadchat //toggles deadchat
verbs -= /proc/toggle_adminmsg
@@ -1496,6 +1504,7 @@
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
verbs += /obj/admins/proc/toggle_aliens
verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -1527,6 +1536,7 @@
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -1558,6 +1568,7 @@
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -1596,6 +1607,7 @@
//verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -1634,6 +1646,7 @@
//verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg
@@ -1660,6 +1673,7 @@
//verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
//verbs += /proc/toggle_adminmsg
@@ -1691,6 +1705,7 @@
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
//verbs += /obj/admins/proc/toggle_aliens
//verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs += /obj/admins/proc/voteres //toggle votes
verbs += /client/proc/deadchat //toggles deadchat
verbs += /proc/toggle_adminmsg

View File

@@ -123,6 +123,7 @@ var/global/sent_strike_team = 0
//Creates mind stuff.
new_commando.mind = new
new_commando.mind.current = new_commando
new_commando.mind.original = new_commando
new_commando.mind.assigned_role = "MODE"
new_commando.mind.special_role = "Death Commando"
if(!(new_commando.mind in ticker.minds))

View File

@@ -9,10 +9,13 @@
if (copytext(message, 1, 3) == ":a")
message = copytext(message, 3)
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
src.alien_talk(message)
if (stat == 2)
return say_dead(message)
else
alien_talk(message)
else
if (copytext(message, 1, 2) != "*" && !src.stat)
playsound(src.loc, "hiss", 25, 1, 1)//So aliens can hiss while they hiss yo/N
if (copytext(message, 1, 2) != "*" && !stat)
playsound(loc, "hiss", 25, 1, 1)//So aliens can hiss while they hiss yo/N
return ..(message)
else
@@ -20,7 +23,7 @@
/mob/living/carbon/alien/say_quote(var/text)
// var/ending = copytext(text, length(text))
return "[src.say_message], \"[text]\"";
return "[say_message], \"[text]\"";
/mob/living/proc/alien_talk(var/message)
@@ -30,12 +33,12 @@
if (!message)
return
var/message_a = src.say_quote(message)
var/rendered = "<i><span class='game say'>Hivemind, <span class='name'>[src.name]</span> <span class='message'>[message_a]</span></span></i>"
var/message_a = say_quote(message)
var/rendered = "<i><span class='game say'>Hivemind, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
for (var/mob/living/S in world)
if(!S.stat)
if(S.alien_talk_understand)
if(S.alien_talk_understand == src.alien_talk_understand)
if(S.alien_talk_understand == alien_talk_understand)
S.show_message(rendered, 2)
else if (S.hivecheck())
S.show_message(rendered, 2)
@@ -54,17 +57,17 @@
var/message_b
message_b = "hsssss"
message_b = src.say_quote(message_b)
message_b = say_quote(message_b)
message_b = "<i>[message_b]</i>"
rendered = "<i><span class='game say'><span class='name'>[src.voice_name]</span> <span class='message'>[message_b]</span></span></i>"
rendered = "<i><span class='game say'><span class='name'>[voice_name]</span> <span class='message'>[message_b]</span></span></i>"
for (var/mob/M in heard)
M.show_message(rendered, 2)
message = src.say_quote(message)
message = say_quote(message)
rendered = "<i><span class='game say'>Hivemind, <span class='name'>[src.name]</span> <span class='message'>[message_a]</span></span></i>"
rendered = "<i><span class='game say'>Hivemind, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
for (var/mob/M in world)
if (istype(M, /mob/new_player))

View File

@@ -1,15 +1,15 @@
/mob/living/silicon/ai/death(gibbed)
var/cancel
src.stat = 2
src.canmove = 0
if(src.blind)
src.blind.layer = 0
src.sight |= SEE_TURFS
src.sight |= SEE_MOBS
src.sight |= SEE_OBJS
src.see_in_dark = 8
src.see_invisible = 2
src.icon_state = "ai-crash"
stat = 2
canmove = 0
if(blind)
blind.layer = 0
sight |= SEE_TURFS
sight |= SEE_MOBS
sight |= SEE_OBJS
see_in_dark = 8
see_invisible = 2
icon_state = "ai-crash"
var/callshuttle = 0
@@ -41,18 +41,14 @@
for(var/obj/machinery/ai_status_display/O in world) //change status
spawn( 0 )
O.mode = 2
if (istype(src.loc, /obj/item/device/aicard))
src.loc.icon_state = "aicard-404"
if (istype(loc, /obj/item/device/aicard))
loc.icon_state = "aicard-404"
if(ticker.mode.name == "AI malfunction")
var/datum/game_mode/malfunction/malf = ticker.mode
for(var/datum/mind/AI_mind in malf.malf_ai)
if (src.mind == AI_mind)
world << "<FONT size = 3><B>Human Victory</B></FONT>"
world << "<B>The AI has been killed!</B> The staff is victorious."
sleep(100)
world << "\blue Rebooting due to end of game"
world.Reboot()
if (mind == AI_mind)
ticker.mode.declare_completion()
var/tod = time2text(world.realtime,"hh:mm:ss") //weasellos time of death patch
mind.store_memory("Time of death: [tod]", 0)
@@ -67,8 +63,8 @@
log_game("Rebooting because of no live players")
world.Reboot()
return
if (src.key)
if (key)
spawn(50)
if(src.key && src.stat == 2)
src.verbs += /mob/proc/ghost
if(key && stat == 2)
verbs += /mob/proc/ghost
return ..(gibbed)

View File

@@ -282,6 +282,8 @@ mob/new_player
AnnounceArrival(character, rank)
if(character.mind.assigned_role == "Cyborg")
character.Robotize()
else//Adds late joiners to minds so they can be linked to objectives.
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc.
del(src)
else

View File

@@ -67,7 +67,6 @@
invisibility = 101
return ..()
/mob/proc/AIize()
if(client)
client.screen.len = null
@@ -82,9 +81,13 @@
else
O.mind = new
O.mind.current = O
O.mind.original = O
O.mind.assigned_role = "AI"
O.key = key
if(!(O.mind in ticker.minds))
ticker.minds += O.mind//Adds them to regular mind list.
var/obj/loc_landmark
for(var/obj/landmark/start/sloc in world)
if (sloc.name != "AI")
@@ -179,14 +182,16 @@
if (mind.assigned_role == "Cyborg")
mind.original = O
else if (mind.special_role) O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite")
else
mind = new /datum/mind( )
mind.key = key
mind.current = O
mind.original = O
mind.transfer_to(O)
//ticker.minds += O.mind//Robutts aren't added to minds since it would be screwy. Assassinate that robot!
if(!(O.mind in ticker.minds))
ticker.minds += O.mind//Adds them to regular mind list.
O.loc = loc
O << "<B>You are playing a Robot. A Robot can interact with most electronic objects in its view point.</B>"
O << "<B>You must follow the laws that the AI has. You are the AI's assistant to the station basically.</B>"