Files
kiwistation/code/modules/mob/dead/observer/observer.dm
T
morikou@gmail.com e7783df73b Yayificaiton Update:
- Added some comments to circuit imprinter.
- Sleepypen nerfed from 50 units to 30 units. Still FAR more then you really need but still keeps them down for quite a while. However, how a pen holds more reagents then a syringe is beyond me.
- Changelog updated.
- Ghost Teleport now works.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@820 316c924e-a436-60f5-8080-3fe189b3f50e
2011-01-09 06:45:27 +00:00

162 lines
5.4 KiB
Plaintext

/mob/dead/observer/New(mob/corpse)
src.invisibility = 10
src.sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
src.see_invisible = 15
src.see_in_dark = 100
src.verbs += /mob/dead/observer/proc/dead_tele
if(corpse)
src.corpse = corpse
src.loc = get_turf(corpse.loc)
src.real_name = corpse.real_name
src.name = corpse.real_name
src.verbs += /mob/dead/observer/proc/reenter_corpse
/mob/proc/ghostize()
set category = "Special Verbs"
set name = "Ghost"
set desc = "You cannot be revived as a ghost"
if(src.client)
src.client.mob = new/mob/dead/observer(src)
return
/mob/dead/observer/Move(NewLoc, direct)
if(NewLoc)
src.loc = NewLoc
return
if((direct & NORTH) && src.y < world.maxy)
src.y++
if((direct & SOUTH) && src.y > 1)
src.y--
if((direct & EAST) && src.x < world.maxx)
src.x++
if((direct & WEST) && src.x > 1)
src.x--
/mob/dead/observer/examine()
if(usr)
usr << src.desc
/mob/dead/observer/can_use_hands() return 0
/mob/dead/observer/is_active() return 0
/mob/dead/observer/Stat()
..()
statpanel("Status")
if (src.client.statpanel == "Status")
if(ticker.mode)
//world << "DEBUG: ticker not null"
if(ticker.mode.name == "AI malfunction")
//world << "DEBUG: malf mode ticker test"
if(ticker.mode:malf_mode_declared)
stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]")
if(emergency_shuttle)
if(emergency_shuttle.online && emergency_shuttle.location < 2)
var/timeleft = emergency_shuttle.timeleft()
if (timeleft)
stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
/mob/dead/observer/proc/reenter_corpse()
set category = "Special Verbs"
set name = "Re-enter Corpse"
if(!corpse)
alert("You don't have a corpse!")
return
// if(corpse.stat == 2)
// alert("Your body is dead!")
// return
if(src.client && src.client.holder && src.client.holder.state == 2)
var/rank = src.client.holder.rank
src.client.clear_admin_verbs()
src.client.holder.state = 1
src.client.update_admins(rank)
if(cultists.Find(corpse) && corpse.ajourn==1 && corpse.health>-100) //checks if it's an astral-journeying cultistm if it is and he's not on an astral journey rune, re-entering won't work
var/S=0
for(var/obj/rune/R in world)
if(corpse.loc==R.loc && R.word1 == wordhell && R.word2 == wordtravel && R.word3 == wordself)
S=1
if(!S)
usr << "\red The astral cord that ties your body and your spirit has been severed. You are likely to wander the realm beyond until your body is finally dead and thus reunited with you."
return
if(corpse.ajourn)
corpse.ajourn=0
src.client.mob = corpse
del(src)
/mob/dead/observer/proc/dead_tele()
set category = "Special Verbs"
set name = "Teleport"
set desc= "Teleport"
if((usr.stat != 2) || !istype(usr, /mob/dead/observer))
usr << "Not when you're not dead!"
return
usr.verbs -= /mob/dead/observer/proc/dead_tele
spawn(30)
usr.verbs += /mob/dead/observer/proc/dead_tele
var/A
A = input("Area to jump to", "BOOYEA", A) in ghostteleportlocs
var/area/thearea = ghostteleportlocs[A]
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
L+=T
usr.loc = pick(L)
var/list/karma_spenders = list()
/mob/dead/observer/verb/spend_karma(var/mob/M in world) // Karma system -- TLE
set name = "Spend Karma"
set desc = "Let the gods know whether someone's been naughty or nice. <One use only>"
if(!istype(M, /mob))
usr << "\red That's not a mob. You shouldn't have even been able to specify that. Please inform your server administrator post haste."
return
if(!M.client)
usr << "\red That mob has no client connected at the moment."
return
if(src.client.karma_spent)
usr << "\red You've already spent your karma for the round."
return
for(var/a in karma_spenders)
if(a == src.key)
usr << "\red You've already spent your karma for the round."
return
if(M.key == src.key)
usr << "\red You can't spend karma on yourself!"
return
var/choice = input("Give [M.name] good karma or bad karma?", "Karma") in list("Good", "Bad", "Cancel")
if(!choice || choice == "Cancel")
return
if(choice == "Good")
M.client.karma += 1
if(choice == "Bad")
M.client.karma -= 1
usr << "[choice] karma spent on [M.name]."
src.client.karma_spent = 1
karma_spenders.Add(src.key)
if(M.client.karma <= -2 || M.client.karma >= 2)
var/special_role = "None"
var/assigned_role = "None"
var/karma_diary = file("data/logs/karma_[time2text(world.realtime, "YYYY/MM-Month/DD-Day")].log")
if(M.mind)
if(M.mind.special_role)
special_role = M.mind.special_role
if(M.mind.assigned_role)
assigned_role = M.mind.assigned_role
karma_diary << "[M.name] ([M.key]) [assigned_role]/[special_role]: [M.client.karma] - [time2text(world.timeofday, "hh:mm:ss")]"
var/isnegative = 1
if(choice == "Good")
isnegative = 0
else
isnegative = 1
sql_report_karma(src, M, isnegative)
/mob/dead/observer/verb/toggle_alien_candidate()
set name = "Toggle Be Alien Candidate"
set desc = "Determines whether you will or will not be an alien candidate when someone bursts."
if(src.client.be_alien)
src.client.be_alien = 0
src << "You are now excluded from alien candidate lists until end of round."
else if(!src.client.be_alien)
src.client.be_alien = 1
src << "You are now included in alien candidate lists until end of round."