Almost all chemicals sould heal and harm humans and non-humans properly.

Various bugfixes for cult.
-raised and manifested are cultists
-you cannot use target for sacrificing
-free a cultis frees from muzzle, closets, pods
-removed unused files.
Added satitize() to emotes.
Extended and Random were returned to Game Panel.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1432 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2011-04-10 20:57:42 +00:00
parent 83e4a41480
commit ae1d99ee73
41 changed files with 542 additions and 1374 deletions

View File

@@ -266,6 +266,8 @@ var/showadminmessages = 1
var/dat = {"<B>What mode do you wish to play?</B><HR>"}
for (var/mode in config.modes)
dat += {"<A href='?src=\ref[src];c_mode2=[mode]'>[config.mode_names[mode]]</A><br>"}
dat += {"<A href='?src=\ref[src];c_mode2=secret'>Secret</A><br>"}
dat += {"<A href='?src=\ref[src];c_mode2=random'>Random</A><br>"}
dat += {"Now: [master_mode]"}
usr << browse(dat, "window=c_mode")
@@ -280,6 +282,7 @@ var/showadminmessages = 1
world << "\blue <b>The mode is now: [master_mode]</b>"
world.save_mode(master_mode)
.(href, list("c_mode"=1))
if (href_list["monkeyone"])
if ((src.rank in list( "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
@@ -634,7 +637,7 @@ var/showadminmessages = 1
alert("Is a Revolutionary!")
return
if("cult")
if(M.mind in current_mode:cult)
if(M.mind in current_mode.cult)
alert("Is a Cultist!")
return
if("wizard")
@@ -1957,24 +1960,15 @@ var/showadminmessages = 1
alert("[M.name] is not prisoned.")
/mob/proc/revive()
if(istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
for(var/A in H.organs)
var/datum/organ/external/affecting = null
if(!H.organs[A]) continue
affecting = H.organs[A]
if(!istype(affecting, /datum/organ/external)) continue
affecting.heal_damage(1000, 1000) //fixes getting hit after ingestion, killing you when game updates organ health
H.UpdateDamageIcon()
src.fireloss = 0
//src.fireloss = 0
src.toxloss = 0
src.bruteloss = 0
//src.bruteloss = 0
src.oxyloss = 0
src.paralysis = 0
src.stunned = 0
src.weakened =0
src.health = 100
src.updatehealth()
//src.health = 100
src.heal_overall_damage(1000, 1000)
src.buckled = initial(src.buckled)
src.handcuffed = initial(src.handcuffed)
if(src.stat > 1) src.stat=0

View File

@@ -221,7 +221,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!wordtravel)
runerandom()
if(M)
if(cultists.Find(M))
if(M.mind in ticker.mode.cult)
return
else
if(alert("Spawn that person a tome?",,"Yes","No")=="Yes")
@@ -247,12 +247,11 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M << "\red You remembered one thing from the glimpse... [wordself] is self..."
if("8")
M << "\red You remembered one thing from the glimpse... [wordsee] is see..."
cultists.Add(M)
if(M.mind)
M.mind.special_role = "Cultist"
ticker.mode.cult += M.mind
src << "Made [M] a cultist."
if(ticker.mode.name == "cult")
ticker.mode:cult += M.mind
/client/proc/cmd_debug_del_all()
set category = "Debug"

View File

@@ -421,26 +421,18 @@ TO DO: actually integrate random appearance and player preference save.
alert("Cannot revive a ghost")
return
if(config.allow_admin_rev)
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
for(var/A in H.organs)
var/datum/organ/external/affecting = null
if(!H.organs[A]) continue
affecting = H.organs[A]
if(!istype(affecting, /datum/organ/external)) continue
affecting.heal_damage(1000, 1000) //fixes getting hit after ingestion, killing you when game updates organ health
H.UpdateDamageIcon()
M.fireloss = 0
//M.fireloss = 0
M.toxloss = 0
M.bruteloss = 0
//M.bruteloss = 0
M.oxyloss = 0
M.paralysis = 0
M.stunned = 0
M.weakened = 0
M.radiation = 0
M.health = 100
//M.health = 100
M.nutrition = 400
M.updatehealth()
M.heal_overall_damage(1000, 1000)
//M.updatehealth()
M.buckled = initial(M.buckled)
M.handcuffed = initial(M.handcuffed)
if (M.stat > 1)

View File

@@ -16,11 +16,12 @@
set category = "Special Verbs"
set name = "Ghost"
set desc = "You cannot be revived as a ghost"
if(src.stat != 2)
/*if(src.stat != 2) //this check causes nothing but troubles. Commented out for Nar-Sie's sake. --rastaf0
src << "Only dead people and admins get to ghost, and admins don't use this verb to ghost while alive."
return
return*/
if(src.client)
src.client.mob = new/mob/dead/observer(src)
src.verbs -= /mob/proc/ghostize
return
/mob/proc/adminghostize()
@@ -79,7 +80,7 @@
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
if(iscultist(corpse) && corpse.ajourn==1 && corpse.stat!=2) //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)
@@ -90,6 +91,8 @@
if(corpse.ajourn)
corpse.ajourn=0
src.client.mob = corpse
if (corpse.stat==2)
src.verbs += /mob/proc/ghostize
del(src)
/mob/dead/observer/proc/dead_tele()

View File

@@ -805,4 +805,9 @@ In all, this is a lot like the monkey code. /N
/mob/living/carbon/alien/heal_organ_damage(var/brute, var/burn)
bruteloss = max(0, bruteloss-brute) //HACK
fireloss = max(0, fireloss-burn) //HACK
src.updatehealth()
src.updatehealth()
/mob/living/carbon/alien/take_organ_damage(var/brute, var/burn)
bruteloss += brute //HACK
fireloss += burn //HACK
src.updatehealth()

View File

@@ -45,7 +45,10 @@
m_type = 1
if ("custom")
var/input = input("Choose an emote to display.")
var/input = input("Choose an emote to display.") as text|null
if (!input)
return
input = sanitize(input)
var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
if (input2 == "Visible")
m_type = 1

View File

@@ -2761,6 +2761,10 @@ It can still be worn/put on as normal.
..()
src.UpdateDamageIcon()
/mob/living/carbon/human/take_organ_damage(var/brute, var/burn)
..()
src.UpdateDamageIcon()
/mob/living/carbon/human/proc/isarmored(var/datum/organ/external/def_zone)
if(def_zone.name == "head")
if(src.head && istype(src.head,/obj/item/clothing/head/helmet))

View File

@@ -724,6 +724,13 @@
if(!src.druggy)
src.see_invisible = 2
else if (src.seer)
var/obj/rune/R = locate() in src.loc
if (istype(R) && R.word1 == wordsee && R.word2 == wordhell && R.word3 == wordjoin)
see_invisible = 15
else
seer = 0
see_invisible = 0
else if (istype(src.wear_mask, /obj/item/clothing/mask/gas/space_ninja))
switch(src.wear_mask:mode)
if(1)

View File

@@ -709,4 +709,9 @@
/mob/living/carbon/monkey/heal_organ_damage(var/brute, var/burn)
bruteloss = max(0, bruteloss-brute) //HACK
fireloss = max(0, fireloss-burn) //HACK
src.updatehealth()
/mob/living/carbon/monkey/take_organ_damage(var/brute, var/burn)
bruteloss += brute //HACK
fireloss += burn //HACK
src.updatehealth()

View File

@@ -47,7 +47,10 @@
m_type = 1
if ("custom")
var/input = input("Choose an emote to display.")
var/input = input("Choose an emote to display.") as text|null
if (!input)
return
input = sanitize(input)
var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
if (input2 == "Visible")
m_type = 1

View File

@@ -56,7 +56,10 @@
m_type = 2
if ("custom")
var/input = input("Choose an emote to display.")
var/input = input("Choose an emote to display.") as text|null
if (!input)
return
input = sanitize(input)
var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
if (input2 == "Visible")
m_type = 1

View File

@@ -56,7 +56,10 @@
m_type = 2
if ("custom")
var/input = input("Choose an emote to display.")
var/input = input("Choose an emote to display.") as text|null
if (!input)
return
input = sanitize(input)
var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
if (input2 == "Visible")
m_type = 1

View File

@@ -2256,16 +2256,74 @@ note dizziness decrements automatically in the mob's Life() proc.
var/datum/organ/external/def_zone = ran_zone(t)
return def_zone
// heal ONE external organ, organ gets randomly selected from damaged ones.
/mob/proc/heal_organ_damage(var/brute, var/burn)
var/list/parts = list()
for(var/A in src.organs)
if(!src.organs[A]) continue
var/datum/organ/external/affecting = src.organs[A]
if(!istype(affecting)) continue
if((brute && affecting.brute_dam) || (burn && affecting.burn_dam))
parts += affecting
var/list/datum/organ/external/parts = list()
for(var/organ_name in src.organs)
var/datum/organ/external/organ = src.organs[organ_name]
if((brute && organ.brute_dam) || (burn && organ.burn_dam))
parts += organ
if(!parts.len) return
if(!parts.len)
return
var/datum/organ/external/picked = pick(parts)
picked.heal_damage(brute,burn)
src.updatehealth()
// damage ONE external organ, organ gets randomly selected from damaged ones.
/mob/proc/take_organ_damage(var/brute, var/burn)
var/list/datum/organ/external/parts = list()
for(var/organ_name in src.organs)
var/datum/organ/external/organ = src.organs[organ_name]
if(organ.brute_dam + organ.burn_dam < organ.max_damage)
parts += organ
if(!parts.len)
return
var/datum/organ/external/picked = pick(parts)
picked.take_damage(brute,burn)
src.updatehealth()
// heal MANY external organs, in random order
/mob/proc/heal_overall_damage(var/brute, var/burn)
var/list/datum/organ/external/parts = list()
for(var/organ_name in src.organs)
var/datum/organ/external/organ = src.organs[organ_name]
if((brute && organ.brute_dam) || (burn && organ.burn_dam))
parts += organ
while(parts.len && (brute>0 || burn>0) )
var/datum/organ/external/picked = pick(parts)
var/brute_was = picked.brute_dam
var/burn_was = picked.burn_dam
picked.heal_damage(brute,burn)
brute -= (brute_was-picked.brute_dam)
burn -= (burn_was-picked.burn_dam)
parts -= picked
src.updatehealth()
// damage MANY external organs, in random order
/mob/proc/take_overall_damage(var/brute, var/burn)
var/list/datum/organ/external/parts = list()
for(var/organ_name in src.organs)
var/datum/organ/external/organ = src.organs[organ_name]
if(organ.brute_dam + organ.burn_dam < organ.max_damage)
parts += organ
while(parts.len && (brute>0 || burn>0) )
var/datum/organ/external/picked = pick(parts)
var/brute_was = picked.brute_dam
var/burn_was = picked.burn_dam
picked.take_damage(brute,burn)
brute -= (picked.brute_dam-brute_was)
burn -= (picked.burn_dam-burn_was)
parts -= picked
src.updatehealth()

View File

@@ -42,6 +42,8 @@
O.virus.affected_mob = O
if (src.client)
src.client.mob = O
if(src.mind)
src.mind.transfer_to(O)
O.a_intent = "hurt"
O << "<B>You are now a monkey.</B>"
var/prev_body = src