mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-31 07:56:25 +01:00
For an example, let's say the phrase is: culture, wine, admit. The response is: massive, tired, doctor's delight. A traitor may begin a conversation with something like: "A man of culture always drinks wine, I must admit. What do you think?" The response to that: "When I am massively tired, I drink doctor's delight. Otherwise, I abstain." The example is best referenced in the Bar, or any place where drinks are available. With enough creativity and linguistical acumen, it may be used elsewhere. The point here is to make conversation seem as natural as possible while providing traitors a means to recognize each other. The words do no have to be exact, either. Quarter Master may be QM and the Captain may be Cap'n. Traitors should still recognize what is being communicated--or not. #Deactivated AI cores are no longer mobs. This is mostly cosmetic. You cannot gib a deactivated AI since it will be an object, not a mob. It will also not announce arrivals since it's an object, not a mob (this is an improvement, in my opinion). #Some code tweaks to AIs. They will now auto-start with a random name instead of their default-chosen name (which is still changeable). #Intelicards should no longer constantly refresh the window when they are being wiped. #Added new mech sprite. #Resin walls should no longer delete the person inside when killed in certain ways. Hulks will easily break free from resin if placed inside. #Ninjas can now download the AI onto spiderOS, provided Drain is on. SpiderOS works with AI cores, AI cards, and restoration terminals. Make sure Drain is on when you click on either the object (core/terminal) or the suit (aicard). AIs with law zero may get to have some fun, depending on circumstances. #Toggle Drain renamed to Toggle Interaction. It now serves as general trigger for special ninja interactions. #Added energy net power to ninjas. Prototype for HerpA and whatever he may want to do with it but it's pretty much finished. The energy net can be destroyed by the person trapped (or others) and will teleport them to the prison after 30 seconds. #Ninjas can now slice cameras apart per request. #Added a few more type checking procs (isliving, islarva, isobserver, ishivemainframe). #Mobs that are anchored will no longer be able to move (AIs will still move as normal). You will also not be able to grab them. #Incorporeal Move now works properly for regular mobs once more. #Marauders from CentCom can now launch directly from their bay. Start the shuttle and wait on a mass driver. On that note, mechs can now go through portals and launch through mass drivers. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1558 316c924e-a436-60f5-8080-3fe189b3f50e
169 lines
5.1 KiB
Plaintext
169 lines
5.1 KiB
Plaintext
// Resin walls improved. /N
|
|
|
|
/obj/alien/resin/proc/healthcheck()
|
|
if(health <=0)
|
|
density = 0
|
|
if(affecting)
|
|
var/mob/living/carbon/M = affecting
|
|
contents.Remove(affecting)
|
|
if(ishuman(M))
|
|
M.verbs += /mob/living/carbon/human/verb/suicide
|
|
else
|
|
M.verbs += /mob/living/carbon/monkey/verb/suicide
|
|
M.loc = loc
|
|
M.paralysis += 10
|
|
for(var/mob/O in viewers(src, 3))
|
|
O.show_message(text("A body appeared from the dead resin!"), 1, text("You hear faint moaning somewhere about you."), 2)
|
|
del(src)
|
|
return
|
|
|
|
/obj/alien/resin/bullet_act(flag)
|
|
switch(flag)
|
|
if (PROJECTILE_BULLET)
|
|
health -= 35
|
|
if (PROJECTILE_PULSE)
|
|
health -= 50
|
|
if (PROJECTILE_LASER)
|
|
health -= 10
|
|
healthcheck()
|
|
return
|
|
|
|
/obj/alien/resin/ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
health-=50
|
|
healthcheck()
|
|
if(2.0)
|
|
health-=50
|
|
healthcheck()
|
|
if(3.0)
|
|
if (prob(50))
|
|
health-=50
|
|
healthcheck()
|
|
else
|
|
health-=25
|
|
healthcheck()
|
|
return
|
|
|
|
/obj/alien/resin/blob_act()
|
|
health-=50
|
|
healthcheck()
|
|
return
|
|
|
|
/obj/alien/resin/meteorhit()
|
|
health-=50
|
|
healthcheck()
|
|
return
|
|
|
|
/obj/alien/resin/hitby(AM as mob|obj)
|
|
..()
|
|
for(var/mob/O in viewers(src, null))
|
|
O.show_message(text("\red <B>[src] was hit by [AM].</B>"), 1)
|
|
var/tforce = 0
|
|
if(ismob(AM))
|
|
tforce = 10
|
|
else
|
|
tforce = AM:throwforce
|
|
playsound(src.loc, 'attackblob.ogg', 100, 1)
|
|
health = max(0, health - tforce)
|
|
healthcheck()
|
|
..()
|
|
return
|
|
|
|
/obj/alien/resin/attack_hand()
|
|
if ((usr.mutations & HULK))
|
|
usr << text("\blue You easily destroy the resin wall.")
|
|
for(var/mob/O in oviewers(src))
|
|
O.show_message(text("\red [] destroys the resin wall!", usr), 1)
|
|
health-=50
|
|
healthcheck()
|
|
return
|
|
|
|
/obj/alien/resin/attack_paw()
|
|
return attack_hand()
|
|
|
|
/obj/alien/resin/attack_alien()
|
|
if (islarva(usr))//Safety check for larva. /N
|
|
return
|
|
usr << text("\green You claw at the resin wall.")
|
|
for(var/mob/O in oviewers(src))
|
|
O.show_message(text("\red [] claws at the resin!", usr), 1)
|
|
playsound(loc, 'attackblob.ogg', 100, 1)
|
|
health -= rand(10, 20)
|
|
if(health <= 0)
|
|
usr << text("\green You slice the resin wall to pieces.")
|
|
for(var/mob/O in oviewers(src))
|
|
O.show_message(text("\red [] slices the resin wall apart!", usr), 1)
|
|
healthcheck()
|
|
return
|
|
|
|
/obj/alien/resin/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
|
var/obj/item/weapon/grab/G = W
|
|
if(isalien(user)&&(ishuman(G.affecting)||ismonkey(G.affecting)))
|
|
//Only aliens can stick humans and monkeys into resin walls. Also, the wall must not have a person inside already.
|
|
if(!affecting)
|
|
if(G.state<2)
|
|
user << "\red You need a better grip to do that!"
|
|
return
|
|
G.affecting.loc = src
|
|
G.affecting.paralysis = 10
|
|
for(var/mob/O in viewers(world.view, src))
|
|
if (O.client)
|
|
O << text("\green [] places [] in the resin wall!", G.assailant, G.affecting)
|
|
affecting=G.affecting
|
|
del(W)
|
|
spawn(0)
|
|
process()
|
|
else
|
|
user << "\red This wall is already occupied."
|
|
return
|
|
|
|
var/aforce = W.force
|
|
health = max(0, health - aforce)
|
|
playsound(src.loc, 'attackblob.ogg', 100, 1)
|
|
healthcheck()
|
|
..()
|
|
return
|
|
|
|
/obj/alien/resin/proc/process()
|
|
if(affecting)
|
|
var/mob/living/carbon/M = affecting
|
|
var/check = 0
|
|
if(ishuman(affecting))//So they do not suicide and kill the babby.
|
|
M.verbs -= /mob/living/carbon/human/verb/suicide
|
|
else
|
|
check = 1
|
|
M.verbs -= /mob/living/carbon/monkey/verb/suicide
|
|
|
|
contents.Add(affecting)
|
|
|
|
while(!isnull(M)&&!isnull(src))//While M and wall exist
|
|
if(prob(90)&& M.mutations & HULK)//If they're the Hulk, they're getting out.
|
|
M << "You smash your way to freedom!"
|
|
break
|
|
if(prob(30))//Let's people know that someone is trapped in the resin wall.
|
|
M << "\green You feel a strange sense of calm as a flesh-like substance seems to completely envelop you."
|
|
for(var/mob/O in viewers(src, 3))
|
|
O.show_message(text("There appears to be a person stuck inside a resin wall nearby."), 1, text("You hear faint moaning somewhere about you."), 2)
|
|
if(prob(5))//MAYBE they are able to crawl out on their own. Not likely...
|
|
M << "You are able to crawl your way through the sticky mass, and out to freedom. But for how long?"
|
|
break
|
|
M.paralysis = 10//Set theis paralysis to 10 so they cannot act.
|
|
sleep(50)//To cut down on processing time
|
|
|
|
if(!isnull(src))
|
|
affecting = null
|
|
|
|
if(!isnull(M))//As long as they still exist.
|
|
if(!check)//And now they can suicide again, even if they are already dead in case they get revived.
|
|
M.verbs += /mob/living/carbon/human/verb/suicide
|
|
else
|
|
M.verbs += /mob/living/carbon/monkey/verb/suicide
|
|
for(var/mob/O in viewers(src, 3))
|
|
O.show_message(text("A body appeared from the dead resin!"), 1, text("You hear faint moaning somewhere about you."), 2)
|
|
else
|
|
for(var/mob/O in viewers(src, 3))
|
|
O.show_message(text("\red An alien larva bursts from the resin wall!"), 1, text("\red You hear a high, alien screech nearby!"), 2)
|
|
return
|