This commit is contained in:
Razharas
2015-09-02 19:04:16 +03:00
69 changed files with 595 additions and 502 deletions
-14
View File
@@ -323,20 +323,6 @@ var/next_external_rsc = 0
'icons/pda_icons/pda_scanner.png',
'icons/pda_icons/pda_signaler.png',
'icons/pda_icons/pda_status.png',
'icons/spideros_icons/sos_1.png',
'icons/spideros_icons/sos_2.png',
'icons/spideros_icons/sos_3.png',
'icons/spideros_icons/sos_4.png',
'icons/spideros_icons/sos_5.png',
'icons/spideros_icons/sos_6.png',
'icons/spideros_icons/sos_7.png',
'icons/spideros_icons/sos_8.png',
'icons/spideros_icons/sos_9.png',
'icons/spideros_icons/sos_10.png',
'icons/spideros_icons/sos_11.png',
'icons/spideros_icons/sos_12.png',
'icons/spideros_icons/sos_13.png',
'icons/spideros_icons/sos_14.png',
'icons/stamp_icons/large_stamp-clown.png',
'icons/stamp_icons/large_stamp-deny.png',
'icons/stamp_icons/large_stamp-ok.png',
+56 -88
View File
@@ -1,94 +1,6 @@
//Travel through pools of blood. Slaughter Demon powers for everyone!
#define BLOODCRAWL 1
#define BLOODCRAWL_EAT 2
/mob/living/proc/phaseout(obj/effect/decal/cleanable/B)
var/mob/living/kidnapped = null
var/turf/mobloc = get_turf(src.loc)
var/turf/bloodloc = get_turf(B.loc)
if(Adjacent(bloodloc))
src.notransform = TRUE
spawn(0)
src.visible_message("[src] sinks into the pool of blood.")
playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1)
var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,mobloc)
src.ExtinguishMob()
if(src.buckled)
src.buckled.unbuckle_mob()
if(src.pulling && src.bloodcrawl == BLOODCRAWL_EAT)
if(istype(src.pulling, /mob/living))
var/mob/living/victim = src.pulling
if(victim.stat == CONSCIOUS)
src.visible_message("[victim] kicks free of the [src] at the last second!")
else
victim.loc = holder
src.visible_message("<span class='warning'><B>The [src] drags [victim] into the pool of blood!</B>")
kidnapped = victim
src.loc = holder
src.holder = holder
if(kidnapped)
src << "<B>You begin to feast on [kidnapped]. You can not move while you are doing this.</B>"
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
sleep(30)
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
sleep(30)
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
sleep(30)
if(kidnapped)
src << "<B>You devour [kidnapped]. Your health is fully restored.</B>"
src.adjustBruteLoss(-1000)
src.adjustFireLoss(-1000)
src.adjustOxyLoss(-1000)
src.adjustToxLoss(-1000)
kidnapped.ghostize()
qdel(kidnapped)
else
src << "<B>You happily devour...nothing? Your meal vanished at some point!</B>"
src.notransform = 0
/mob/living/proc/phasein(obj/effect/decal/cleanable/B)
if(src.notransform)
src << "<B>Finish eating first!</B>"
else
src.loc = B.loc
src.client.eye = src
src.visible_message("<span class='warning'><B>The [src] rises out of the pool of blood!</B>")
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
qdel(src.holder)
src.holder = null
/obj/effect/decal/cleanable/blood/CtrlClick(mob/living/user)
..()
if(user.bloodcrawl)
if(user.holder)
user.phasein(src)
else
user.phaseout(src)
/obj/effect/decal/cleanable/trail_holder/CtrlClick(mob/living/user)
..()
if(user.bloodcrawl)
if(user.holder)
user.phasein(src)
else
user.phaseout(src)
/turf/CtrlClick(var/mob/living/user)
..()
if(user.bloodcrawl)
for(var/obj/effect/decal/cleanable/B in src.contents)
if(istype(B, /obj/effect/decal/cleanable/blood) || istype(B, /obj/effect/decal/cleanable/trail_holder))
if(user.holder)
user.phasein(B)
break
else
user.phaseout(B)
break
/obj/effect/dummy/slaughter //Can't use the wizard one, blocked by jaunt/slow
name = "water"
icon = 'icons/effects/effects.dmi'
@@ -116,3 +28,59 @@ obj/effect/dummy/slaughter/relaymove(mob/user, direction)
/obj/effect/dummy/slaughter/Destroy()
return QDEL_HINT_PUTINPOOL
/mob/living/proc/phaseout(obj/effect/decal/cleanable/B)
var/mob/living/kidnapped = null
var/turf/mobloc = get_turf(src.loc)
src.notransform = TRUE
spawn(0)
src.visible_message("[src] sinks into the pool of blood.")
playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1)
var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,mobloc)
src.ExtinguishMob()
if(src.buckled)
src.buckled.unbuckle_mob()
if(src.pulling && src.bloodcrawl == BLOODCRAWL_EAT)
if(istype(src.pulling, /mob/living))
var/mob/living/victim = src.pulling
if(victim.stat == CONSCIOUS)
src.visible_message("[victim] kicks free of the [src] at the last second!")
else
victim.loc = holder
src.visible_message("<span class='warning'><B>The [src] drags [victim] into the pool of blood!</B>")
kidnapped = victim
src.loc = holder
src.holder = holder
if(kidnapped)
src << "<B>You begin to feast on [kidnapped]. You can not move while you are doing this.</B>"
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
sleep(30)
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
sleep(30)
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
sleep(30)
if(kidnapped)
src << "<B>You devour [kidnapped]. Your health is fully restored.</B>"
src.adjustBruteLoss(-1000)
src.adjustFireLoss(-1000)
src.adjustOxyLoss(-1000)
src.adjustToxLoss(-1000)
kidnapped.ghostize()
qdel(kidnapped)
else
src << "<B>You happily devour...nothing? Your meal vanished at some point!</B>"
src.notransform = 0
/mob/living/proc/phasein(obj/effect/decal/cleanable/B)
if(src.notransform)
src << "<B>Finish eating first!</B>"
return 0
src.loc = B.loc
src.client.eye = src
src.visible_message("<span class='warning'><B>The [src] rises out of the pool of blood!</B>")
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
qdel(src.holder)
src.holder = null
return 1
+2 -2
View File
@@ -8,7 +8,7 @@
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 460K point and you are on fire
#define HEAT_DAMAGE_LEVEL_3 10 //Amount of damage applied when your body temperature passes the 460K point and you are on fire
#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point
#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point
@@ -123,7 +123,7 @@
if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT)
bodytemperature += 11
else
bodytemperature += BODYTEMP_HEATING_MAX
bodytemperature += (BODYTEMP_HEATING_MAX + (fire_stacks * 12))
/mob/living/carbon/human/IgniteMob()
+2 -2
View File
@@ -133,7 +133,7 @@
if(!on_fire)
return 1
if(fire_stacks > 0)
adjust_fire_stacks(-0.2) //the fire is slowly consumed
adjust_fire_stacks(-0.1) //the fire is slowly consumed
else
ExtinguishMob()
return
@@ -145,7 +145,7 @@
location.hotspot_expose(700, 50, 1)
/mob/living/fire_act()
adjust_fire_stacks(0.5)
adjust_fire_stacks(3)
IgniteMob()
@@ -114,6 +114,7 @@
set category = "Guardian"
set desc = "Communicate telepathically with your summoner."
var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "")
if(!input) return
for(var/mob/M in mob_list)
if(M == src.summoner || (M in dead_mob_list))
@@ -125,6 +126,7 @@
set category = "Guardian"
set desc = "Communicate telepathically with your guardian."
var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "")
if(!input) return
for(var/mob/M in mob_list)
if(istype (M, /mob/living/simple_animal/hostile/guardian))
@@ -55,7 +55,7 @@
/mob/living/simple_animal/slaughter/phasein()
..()
. = ..()
speed = 0
boost = world.time + 30
@@ -71,7 +71,12 @@
/obj/item/weapon/demonheart/attack_self(mob/living/user)
visible_message("[user] feasts upon the [src].")
for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list)
if(knownspell.type == /obj/effect/proc_holder/spell/bloodcrawl)
user <<"<span class='notice'>You already know how to blood crawl.</span>"
qdel(src)
return
user << "You absorb some of the demon's power!"
user.bloodcrawl = BLOODCRAWL
user.mind.AddSpell(new /obj/effect/proc_holder/spell/bloodcrawl)
qdel(src)
@@ -42,6 +42,9 @@
player_mind.transfer_to(S)
player_mind.assigned_role = "Slaughter Demon"
player_mind.special_role = "Slaughter Demon"
var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new
bloodspell.phased = 1
player_mind.AddSpell(bloodspell)
ticker.mode.traitors |= player_mind
S << S.playstyle_string
S << "<B>You are currently not currently in the same plane of existence as the station. Ctrl+Click a blood pool to manifest.</B>"
+1 -1
View File
@@ -81,7 +81,7 @@
A basic description as to what went wrong.
*/
message
stack/stack
datum/stack/stack
proc
/*
@@ -21,7 +21,7 @@
node
BlockDefinition/program
statement/FunctionDefinition/curFunction
stack
datum/stack
scopes = new()
functions = new()
+3 -3
View File
@@ -56,7 +56,7 @@
var
token/accessor/A=T
node/expression/value/variable/E//=new(A.member)
stack/S=new()
datum/stack/S = new()
while(istype(A.object, /token/accessor))
S.Push(A)
A=A.object
@@ -130,7 +130,7 @@
Takes the operator on top of the opr stack and assigns its operand(s). Then this proc pushes the value of that operation to the top
of the val stack.
*/
Reduce(stack/opr, stack/val)
Reduce(datum/stack/opr, datum/stack/val)
var/node/expression/operator/O=opr.Pop()
if(!O) return
if(!istype(O))
@@ -181,7 +181,7 @@
- <ParseParamExpression()>
*/
ParseExpression(list/end=list(/token/end), list/ErrChars=list("{", "}"), check_functions = 0)
var/stack
var/datum/stack
opr=new
val=new
src.expecting=VALUE
+1 -1
View File
@@ -37,7 +37,7 @@
The token at <index> in <tokens>.
*/
curToken
stack
datum/stack
blocks=new
node/BlockDefinition
GlobalBlock/global_block=new
-23
View File
@@ -1,23 +0,0 @@
/stack
var/list
contents=new
proc
Push(value)
contents+=value
Pop()
if(!contents.len) return null
. = contents[contents.len]
contents.len--
Top() //returns the item on the top of the stack without removing it
if(!contents.len) return null
return contents[contents.len]
Copy()
var/stack/S=new()
S.contents=src.contents.Copy()
return S
Clear()
contents.Cut()