Merge pull request #578 from Hawk-v3/master

MORE TG UPDATES
This commit is contained in:
SkyMarshal
2012-03-01 12:03:50 -08:00
13 changed files with 120 additions and 16 deletions
+4 -2
View File
@@ -1119,13 +1119,15 @@
origin_tech = "biotech=4"
var/POWERFLAG = 0 // sshhhhhhh
var/Flush = 30
var/Uses = 5 // uses before it goes inert
New()
..()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
R.my_atom = src
POWERFLAG = rand(1,10)
Uses = rand(2, 5)
//flags |= NOREACT
spawn()
@@ -1133,7 +1135,7 @@
proc/Life()
while(src)
sleep(10)
sleep(25)
Flush--
if(Flush <= 0)
reagents.clear_reagents()
+9 -7
View File
@@ -1256,12 +1256,14 @@ proc/listclearnulls(list/list)
/proc/do_after(mob/M as mob, time as num)
var/turf/T = get_turf(M)
var/holding = M.equipped()
sleep(time)
if(M)
if ((M.loc == T && M.equipped() == holding && !( M.stat )))
return 1
else
return 0
for(var/i=0, i<time)
if(M)
if ((M.loc == T && M.equipped() == holding && !( M.stat )))
i++
sleep(1)
else
return 0
return 1
/proc/hasvar(var/datum/A, var/varname)
//Takes: Anything that could possibly have variables and a varname to check.
@@ -1538,4 +1540,4 @@ proc/get_opposite(var/checkdir)
var/a = copytext(text,i,i+1)
if(a == character)
count++
return count
return count
+80
View File
@@ -0,0 +1,80 @@
/obj/item/device/soulstone
name = "Soul Stone Shard"
icon = 'wizard.dmi'
icon_state = "soulstone"
item_state = "electronic"
desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefacts power."
w_class = 1.0
flags = FPRINT | TABLEPASS | ONBELT
var/flush = null
origin_tech = "bluespace=4;materials=4"
attack(mob/living/carbon/human/M as mob, mob/user as mob)
if(!istype(M, /mob/living/carbon/human))//If target is not a human.
return ..()
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their soul captured with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to capture the soul of [M.name] ([M.ckey])</font>")
transfer_soul("VICTIM", M, user)
return
attack_self(mob/user)
if (!in_range(src, user))
return
user.machine = src
var/dat = "<TT><B>Soul Stone</B><BR>"
for(var/mob/living/carbon/human/A in src)
dat += "Captured Soul: [A.name]<br>"
user << browse(dat, "window=aicard")
onclose(user, "aicard")
return
/obj/item/proc/transfer_soul(var/choice as text, var/target, var/mob/U as mob).
switch(choice)
if("VICTIM")
var/mob/living/carbon/human/T = target
var/obj/item/device/soulstone/C = src
if (T.stat == 0)
U << "\red <b>Capture failed!</b>: \black Kill or maim the victim first!"
else
if(T.ckey == null)
U << "\red <b>Capture failed!</b>: \black The soul has already fled it's mortal frame."
else
if(C.contents.len)
U << "\red <b>Capture failed!</b>: \black The soul stone is full! Use or free an existing soul to make room."
else
for(var/obj/item/W in T)
T.drop_from_slot(W)
new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton
T.invisibility = 101
var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc )
animation.icon_state = "blank"
animation.icon = 'mob.dmi'
animation.master = T
flick("dust-h", animation)
del(animation)
T.nodamage = 1 //So they won't suffocate inside the stone
T.canmove = 0//Can't move out of the soul stone
T.loc = C//Throw "soul" into the stone.
T.stat = 0//Revive the victim as a "soul"
T.mutantrace = "trappedsoul" //To prevent suicide/maybe some other special effects later on
T.setToxLoss(0)
T.setOxyLoss(0)
T.setCloneLoss(0)
T.SetParalysis(0)
T.SetStunned(0)
T.SetWeakened(0)
T.radiation = 0
T.heal_overall_damage(T.getBruteLoss(), T.getFireLoss())
T.cancel_camera()
T.nodamage = 1 //So they won't suffocate inside the stone
C.icon_state = "soulstone2"
T << "Your soul has been captured!"
U << "\blue <b>Capture successful!</b>: \black [T.name]'s soul has been ripped from their body and stored within the soul stone."
return
@@ -79,7 +79,9 @@ AI MODULES
src.transmitInstructions(comp.current, usr)
comp.current << "These are your laws now:"
comp.current.show_laws()
for(var/mob/living/silicon/robot/R in world)
if(R.lawupdate && (R.connected_ai == comp.current))
R << "Your AI has set your 'laws waiting' flag."
usr << "Upload complete. The AI's laws have been modified."
+20 -1
View File
@@ -142,4 +142,23 @@
"/obj/item/weapon/zippo",
"/obj/item/device/taperecorder",
"/obj/item/weapon/evidencebag"
)
)
/obj/item/weapon/storage/belt/soulstone
name = "soul stone belt"
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
icon_state = "soulstonebelt"
item_state = "soulstonebelt"
storage_slots = 6
can_hold = list(
"/obj/item/device/soulstone"
)
/obj/item/weapon/storage/belt/soulstone/full/New()
..()
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
+3 -1
View File
@@ -32,7 +32,9 @@
if(alien_egg_flag)
src << "The alien inside you forces you to breathe, preventing you from suiciding."
return
if(mutantrace == "trappedsoul")
src << "You are already dead, your soul trapped and contained!"
return
if(confirm == "Yes")
message_admins("[ckey] has suicided.", 1)
suiciding = 1
@@ -765,7 +765,6 @@
for(var/mob/living/carbon/metroid/M in view(1,src))
M.UpdateFeed(src)
src.moved_recently = 120
return
/mob/living/carbon/human/update_clothing()
@@ -93,7 +93,6 @@
step(src, pick(cardinal))
if(prob(1))
emote(pick("scratch","jump","roll","tail"))
src.moved_recently = max(0, src.moved_recently-1)
/mob/living/carbon/monkey
proc
@@ -560,7 +560,6 @@
for(var/mob/living/carbon/metroid/M in view(1,src))
M.UpdateFeed(src)
src.moved_recently = 120
return
/mob/living/carbon/monkey/verb/removeinternal()
+1 -1
View File
@@ -70,7 +70,7 @@
return // nope.avi
if(!silenced)
visible_message("\red [A.name] has been shot by the [src.name]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
visible_message("\red [A.name] is hit by the [src.name]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
else
M << "\red You've been shot!"
if(istype(firer, /mob))
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 776 B

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB