Moved into their own folder and got split into three files.
Damage  zones have been regrouped slightly to make it easier to deal with them. Currently the organ groups are head, l/r leg, l/r arm, and head.

Attacking:
Armor is properly checked.
Currently aiming for the chest gives a higher chance to stun whereas the head will stun for longer.
Stungloves/Disarm now show up in the attack log.
Stungloves ignore intent.

Silicon:
AI units can now move between cams that are not on the ss13 network.
Cyborg's alert screen should not longer pop up every time they get an alert if they have opened it once during the round.
Robot vision now uses the standard amount of energy.

Gamemodes:
Added Deuryn's unrev message.
Runes can only be examined if you are close to them.
Moved the Loyalty implants to the HoS' locker at the request of HerpA.
Nuke agents now come with explosive implants that will activate upon death.

Projectiles:
Once again went though the gun code and cleaned things up, it is much better now.
Bullet_act fixed up and most mobs now use the one in living, just overload it if they need to do something diff.
Freeze /caplaser/xbow no longer have an infinite loop.
Shotguns have to be pumped manually.

Went though the latest runtime log.

Power cells now use return on their give/use procs

Assemblies have been reworked and are nearly finished, just need to finish up the special assembly code, redo the signalers, and add one or two new assembly items.
Laying down will now only take 3 ticks to get up, from 5.

You can no longer punch people on the spawn screen.

This is a big one and was cleared by two heads, TK will only allow you to pick up items.  If you have an item in your hand it will act normal.

This revision got much larger than originally intended my tests show everything is working fine, but you never know.  Ill likely do more mob teaks in the next few days.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2333 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
mport2004@gmail.com
2011-10-08 10:38:01 +00:00
parent ad80137505
commit 62e28c2abf
148 changed files with 6638 additions and 8653 deletions
+19 -57
View File
@@ -51,6 +51,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
runewords-=wordhide
/obj/effect/rune
desc = ""
anchored = 1
icon = 'rune.dmi'
icon_state = "1"
@@ -101,10 +102,24 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
AI.client.images += blood
examine()
set src in view(2)
if(!iscultist(usr))
usr << "A strange collection of symbols drawn in blood."
else
if(desc && !usr.stat)
usr << "It reads: <i>[desc]</i>."
sleep(30)
explosion(src.loc, 0, 2, 5, 5)
if(src)
del(src)
return
if(!desc)
usr << "A spell circle drawn in blood. It reads: <i>[word1] [word2] [word3]</i>."
else
usr << "Explosive Runes inscription in blood. It reads: <i>[desc]</i>."
return
attackby(I as obj, user as mob)
if(istype(I, /obj/item/weapon/tome) && iscultist(user))
@@ -118,6 +133,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
return
return
attack_hand(mob/user as mob)
if(!iscultist(user))
user << "You can't mouth the arcane scratchings without fumbling over them."
@@ -740,6 +756,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
R.word3=wordtech
R.loc = user.loc
R.check_icon()
/obj/item/weapon/paperscrap
name = "scrap of paper"
icon_state = "scrap"
@@ -760,59 +778,3 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
proc/view_scrap(var/viewer)
viewer << browse(data)
/obj/item/weapon/paper/talisman
icon_state = "papertalisman"
var/imbue = null
var/uses = 0
attack_self(mob/living/user as mob)
if(iscultist(user))
switch(imbue)
if("newtome")
call(/obj/effect/rune/proc/tomesummon)()
if("armor")
call(/obj/effect/rune/proc/armor)()
if("emp")
call(/obj/effect/rune/proc/emp)(usr.loc,3)
if("conceal")
call(/obj/effect/rune/proc/obscure)(2)
if("revealrunes")
call(/obj/effect/rune/proc/revealrunes)(src)
if("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri")
call(/obj/effect/rune/proc/teleport)(imbue)
if("communicate")
call(/obj/effect/rune/proc/communicate)()
if("deafen")
call(/obj/effect/rune/proc/deafen)()
if("blind")
call(/obj/effect/rune/proc/blind)()
if("runestun")
user << "\red To use this talisman, attack your target directly."
return
if("supply")
supply()
user.take_organ_damage(5, 0)
if(src && src.imbue!="supply" && src.imbue!="runestun")
del(src)
return
else
user << "You see strange symbols on the paper. Are they supposed to mean something?"
return
attack(mob/living/carbon/T as mob, mob/living/user as mob)
if(iscultist(user))
if(imbue == "runestun")
user.take_organ_damage(5, 0)
call(/obj/effect/rune/proc/runestun)(T)
del(src)
else
..() ///If its some other talisman, use the generic attack code, is this supposed to work this way?
else
..()
/obj/item/weapon/paper/talisman/supply
imbue = "supply"
uses = 3
@@ -1,48 +0,0 @@
/obj/item/weapon/paper/talisman/proc/supply(var/key)
if (!src.uses)
del(src)
return
var/dat = "<B>There are [src.uses] bloody runes on the parchment.</B><BR>"
dat += "Please choose the chant to be imbued into the fabric of reality.<BR>"
dat += "<HR>"
dat += "<A href='?src=\ref[src];rune=newtome'>N'ath reth sh'yro eth d'raggathnor!</A> - Allows you to summon a new arcane tome.<BR>"
dat += "<A href='?src=\ref[src];rune=teleport'>Sas'so c'arta forbici!</A> - Allows you to move to a rune with the same last word.<BR>"
dat += "<A href='?src=\ref[src];rune=emp'>Ta'gh fara'qha fel d'amar det!</A> - Allows you to destroy technology in a short range.<BR>"
dat += "<A href='?src=\ref[src];rune=conceal'>Kla'atu barada nikt'o!</A> - Allows you to conceal the runes you placed on the floor.<BR>"
dat += "<A href='?src=\ref[src];rune=communicate'>O bidai nabora se'sma!</A> - Allows you to coordinate with others of your cult.<BR>"
dat += "<A href='?src=\ref[src];rune=runestun'>Fuu ma'jin</A> - Allows you to stun a person by attacking them with the talisman.<BR>"
usr << browse(dat, "window=id_com;size=350x200")
return
/obj/item/weapon/paper/talisman/Topic(href, href_list)
if (!src)
return
if (usr.stat || usr.restrained() || !in_range(src, usr))
return
if (href_list["rune"])
switch(href_list["rune"])
if("newtome")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "newtome"
if("teleport")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "[pick("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")]"
T.info = "[T.imbue]"
if("emp")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "emp"
if("conceal")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "conceal"
if("communicate")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "communicate"
if("runestun")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "runestun"
src.uses--
supply()
return
+110
View File
@@ -0,0 +1,110 @@
/obj/item/weapon/paper/talisman
icon_state = "papertalisman"
var/imbue = null
var/uses = 0
examine()
set src in view(2)
..()
return
attack_self(mob/living/user as mob)
if(iscultist(user))
switch(imbue)
if("newtome")
call(/obj/effect/rune/proc/tomesummon)()
if("armor")
call(/obj/effect/rune/proc/armor)()
if("emp")
call(/obj/effect/rune/proc/emp)(usr.loc,3)
if("conceal")
call(/obj/effect/rune/proc/obscure)(2)
if("revealrunes")
call(/obj/effect/rune/proc/revealrunes)(src)
if("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri")
call(/obj/effect/rune/proc/teleport)(imbue)
if("communicate")
call(/obj/effect/rune/proc/communicate)()
if("deafen")
call(/obj/effect/rune/proc/deafen)()
if("blind")
call(/obj/effect/rune/proc/blind)()
if("runestun")
user << "\red To use this talisman, attack your target directly."
return
if("supply")
supply()
user.take_organ_damage(5, 0)
if(src && src.imbue!="supply" && src.imbue!="runestun")
del(src)
return
else
user << "You see strange symbols on the paper. Are they supposed to mean something?"
return
attack(mob/living/carbon/T as mob, mob/living/user as mob)
if(iscultist(user))
if(imbue == "runestun")
user.take_organ_damage(5, 0)
call(/obj/effect/rune/proc/runestun)(T)
del(src)
else
..() ///If its some other talisman, use the generic attack code, is this supposed to work this way?
else
..()
proc/supply(var/key)
if (!src.uses)
del(src)
return
var/dat = "<B>There are [src.uses] bloody runes on the parchment.</B><BR>"
dat += "Please choose the chant to be imbued into the fabric of reality.<BR>"
dat += "<HR>"
dat += "<A href='?src=\ref[src];rune=newtome'>N'ath reth sh'yro eth d'raggathnor!</A> - Allows you to summon a new arcane tome.<BR>"
dat += "<A href='?src=\ref[src];rune=teleport'>Sas'so c'arta forbici!</A> - Allows you to move to a rune with the same last word.<BR>"
dat += "<A href='?src=\ref[src];rune=emp'>Ta'gh fara'qha fel d'amar det!</A> - Allows you to destroy technology in a short range.<BR>"
dat += "<A href='?src=\ref[src];rune=conceal'>Kla'atu barada nikt'o!</A> - Allows you to conceal the runes you placed on the floor.<BR>"
dat += "<A href='?src=\ref[src];rune=communicate'>O bidai nabora se'sma!</A> - Allows you to coordinate with others of your cult.<BR>"
dat += "<A href='?src=\ref[src];rune=runestun'>Fuu ma'jin</A> - Allows you to stun a person by attacking them with the talisman.<BR>"
usr << browse(dat, "window=id_com;size=350x200")
return
talisman/Topic(href, href_list)
if(!src) return
if (usr.stat || usr.restrained() || !in_range(src, usr)) return
if (href_list["rune"])
switch(href_list["rune"])
if("newtome")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "newtome"
if("teleport")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "[pick("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")]"
T.info = "[T.imbue]"
if("emp")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "emp"
if("conceal")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "conceal"
if("communicate")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "communicate"
if("runestun")
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
T.imbue = "runestun"
src.uses--
supply()
return
/obj/item/weapon/paper/talisman/supply
imbue = "supply"
uses = 3
-297
View File
@@ -1,297 +0,0 @@
// BLATANTLY ripped from the facehugger.dm alien code. -- TLE
#define viewrange 7 //min 2
// Returns the surrounding cardinal turfs with open links
// Including through doors openable with the ID
// Includes spacetiles
/*
/obj/creature
name = "creature"
desc = "A sanity-destroying otherthing."
icon = 'otherthing.dmi'
icon_state = "otherthing"
layer = 5.0
density = 1
anchored = 0
unacidable = 1 //Creature is not harmed by acid.
var/state = 0
var/list/path = new/list()
var/frustration = 0
var/mob/living/carbon/target
var/list/path_target = new/list()
var/turf/trg_idle
var/list/path_idle = new/list()
var/alive = 1 //1 alive, 0 dead
var/health = 25
var/maxhealth = 25
var/cycle_pause = 5
flags = 258.0
New()
..()
health = maxhealth
src.process()
examine()
set src in view()
..()
if(!alive)
usr << text("\red <B>the thing isn't moving</B>")
else if (src.health > 15)
usr << text("\red <B>A sanity-destroying otherthing.</B>")
else
usr << text("\red <B>the thing looks hurt</B>")
return
attack_hand(user as mob)
return
attackby(obj/item/weapon/W as obj, mob/user as mob)
switch(W.damtype)
if("fire")
src.health -= W.force * 2
if("brute")
src.health -= W.force * 1
else
if (src.health <= 0)
src.death()
else if (W.force)
if(ishuman(user) || ismonkey(user))
src.target = user
src.state = 1
..()
bullet_act(var/obj/item/projectile/Proj)
health -= round(Proj.damage / 2)
healthcheck()
ex_act(severity)
switch(severity)
if(1.0)
src.death()
if(2.0)
src.health -= 15
healthcheck()
return
meteorhit()
src.death()
return
blob_act()
if(prob(50))
src.death()
return
Bumped(AM as mob|obj)
if(ismob(AM) && (ishuman(AM) || ismonkey(AM)) )
src.target = AM
set_attack()
else if(ismob(AM))
spawn(0)
var/turf/T = get_turf(src)
AM:loc = T
Bump(atom/A)
if(ismob(A) && (ishuman(A) || ismonkey(A)))
src.target = A
set_attack()
else if(ismob(A))
src.loc = A:loc
temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 200)
health -= 5
healthcheck()
proc/set_attack()
state = 1
if(path_idle.len) path_idle = new/list()
trg_idle = null
proc/set_idle()
state = 2
if (path_target.len) path_target = new/list()
target = null
frustration = 0
proc/set_null()
state = 0
if (path_target.len) path_target = new/list()
if (path_idle.len) path_idle = new/list()
target = null
trg_idle = null
frustration = 0
proc/process()
set background = 1
var/quick_move = 0
if (!alive)
return
if (!target)
if (path_target.len) path_target = new/list()
var/last_health = INFINITY
for (var/mob/living/carbon/C in range(viewrange-2,src.loc))
if (C.stat == 2 || !can_see(src,C,viewrange))
continue
if(C:stunned || C:paralysis || C:weakened)
target = C
break
if(C:health < last_health)
last_health = C:health
target = C
if(target)
set_attack()
else if(state != 2)
set_idle()
idle()
else if(target)
var/turf/distance = get_dist(src, target)
set_attack()
if(can_see(src,target,viewrange))
if(distance <= 1)
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src.target] has been attacked by [src]!</B>", 1, "\red You hear the sounds of combat", 2)
target:bruteloss += rand(1,10)
sleep(5)
//target:paralysis = max(target:paralysis, 10)
else
step_towards(src,get_step_towards2(src , target))
set_null()
spawn(cycle_pause) src.process()
return
else
if( !path_target.len )
path_attack(target)
if(!path_target.len)
set_null()
spawn(cycle_pause) src.process()
return
else
var/turf/next = path_target[1]
if(next in range(1,src))
path_attack(target)
if(!path_target.len)
src.frustration += 5
else
next = path_target[1]
path_target -= next
step_towards(src,next)
quick_move = 1
if (get_dist(src, src.target) >= distance) src.frustration++
else src.frustration--
if(frustration >= 35) set_null()
if(quick_move)
spawn(cycle_pause/2)
src.process()
else
spawn(cycle_pause)
src.process()
proc/idle()
set background = 1
var/quick_move = 0
if(state != 2 || !alive || target) return
if(!path_idle.len)
path_idle(trg_idle)
if(!path_idle.len)
trg_idle = null
set_idle()
spawn(cycle_pause) src.idle()
return
else
step(src,pick(cardinal))
else
if(can_see(src,trg_idle,viewrange))
switch(get_dist(src, trg_idle))
if(1)
if(istype(trg_idle,/obj/effect/alien/weeds))
step_towards(src,get_step_towards2(src , trg_idle))
if(2 to INFINITY)
step_towards(src,get_step_towards2(src , trg_idle))
if(path_idle.len) path_idle = new/list()
/*
if(viewrange+1 to INFINITY)
step_towards(src,get_step_towards2(src , trg_idle))
if(path_idle.len) path_idle = new/list()
quick_move = 1
*/
else
var/turf/next = path_idle[1]
if(!next in range(1,src))
path_idle(trg_idle)
if(!path_idle.len)
spawn(cycle_pause) src.idle()
return
else
next = path_idle[1]
path_idle -= next
step_towards(src,next)
quick_move = 1
if(quick_move)
spawn(cycle_pause/2)
idle()
else
spawn(cycle_pause)
idle()
proc/path_idle(var/atom/trg)
path_idle = AStar(src.loc, get_turf(trg), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_idle = reverselist(path_idle)
proc/path_attack(var/atom/trg)
target = trg
path_target = AStar(src.loc, target.loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_target = reverselist(path_target)
proc/death()
if(!alive) return
src.alive = 0
density = 0
icon_state = "dead"
set_null()
for(var/mob/O in hearers(src, null))
O.show_message("\red <B>[src] falls over dead!</B>", 1)
proc/healthcheck()
if (src.health <= 0)
src.death()
*/