mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
Okay, there's a couple things up with this revision:
Metroids:
No, they're not working yet, and I planned on committing this when they were finished, but the basic framework is there. The Metroid in xenobiology now moves around, I guess, kinda like a monkey. ADMINS: !! DO NOT TRY TO POSSESS/CONTROL A METROID, unless you're willing to take a risk! I haven't tested it thoroughly yet, it might have some glitchy results!
Turrets:
Fixed some lingering bugs with the targetting system. Hopefully these should be pretty stable now.
Reagents/Chemicals:
I fixed some problems with virus combinations and weird stuff with the PANDEMIC machine.
There's probably some other stuff people requested I fix on IRC that I didn't mention, I can't remember anything else though. Hopefully this should stabilize some of the more annoying bugs with reagents!
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1759 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -281,6 +281,10 @@ datum
|
|||||||
var/list/that = data["viruses"]
|
var/list/that = data["viruses"]
|
||||||
this += that // combine the two
|
this += that // combine the two
|
||||||
|
|
||||||
|
for(var/datum/disease/D in this) // makes sure no two viruses are in the reagent at the same time
|
||||||
|
for(var/datum/disease/d in this)
|
||||||
|
d.cure(0)
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
for(var/A in typesof(/datum/reagent) - /datum/reagent)
|
for(var/A in typesof(/datum/reagent) - /datum/reagent)
|
||||||
|
|||||||
@@ -769,6 +769,9 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(ismob(target))//Blood!
|
if(ismob(target))//Blood!
|
||||||
|
if(istype(src, /mob/living/carbon/metroid))
|
||||||
|
user << "\red You are unable to locate any blood."
|
||||||
|
return
|
||||||
if(src.reagents.has_reagent("blood"))
|
if(src.reagents.has_reagent("blood"))
|
||||||
user << "\red There is already a blood sample in this syringe"
|
user << "\red There is already a blood sample in this syringe"
|
||||||
return
|
return
|
||||||
@@ -795,7 +798,7 @@
|
|||||||
B.data["viruses"] = list()
|
B.data["viruses"] = list()
|
||||||
|
|
||||||
|
|
||||||
B.data["virus"] += new D.type
|
B.data["viruses"] += new D.type
|
||||||
|
|
||||||
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
||||||
if(T.resistances&&T.resistances.len)
|
if(T.resistances&&T.resistances.len)
|
||||||
|
|||||||
@@ -1,9 +1,34 @@
|
|||||||
/mob/living/carbon/alien/larva/metroid
|
|
||||||
|
///mob/living/carbon/alien/larva/metroid
|
||||||
|
|
||||||
|
/mob/living/carbon/metroid
|
||||||
name = "baby metroid"
|
name = "baby metroid"
|
||||||
icon = 'mob.dmi'
|
icon = 'mob.dmi'
|
||||||
icon_state = "metroid"
|
icon_state = "baby metroid"
|
||||||
pass_flags = PASSTABLE
|
pass_flags = PASSTABLE
|
||||||
|
voice_message = "chatters"
|
||||||
|
say_message = "says"
|
||||||
|
|
||||||
health = 250
|
health = 250
|
||||||
|
gender = NEUTER
|
||||||
|
|
||||||
update_icon = 0
|
update_icon = 0
|
||||||
|
nutrition = 100
|
||||||
|
|
||||||
|
var/amount_grown = 0// controls how long the metroid has been overfed, if 10, grows into an adult
|
||||||
|
// if adult: if 10: reproduces
|
||||||
|
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
|
||||||
|
|
||||||
|
var/mob/living/Victim = null // the person the metroid is currently feeding on
|
||||||
|
|
||||||
|
/mob/living/carbon/metroid/adult
|
||||||
|
name = "adult metroid"
|
||||||
|
icon = 'mob.dmi'
|
||||||
|
icon_state = "adult metroid"
|
||||||
|
|
||||||
|
health = 300
|
||||||
|
gender = NEUTER
|
||||||
|
|
||||||
|
update_icon = 0
|
||||||
|
nutrition = 100
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
|
|
||||||
|
|
||||||
metroid
|
metroid
|
||||||
input = /mob/living/carbon/alien/larva/metroid
|
input = /mob/living/carbon/metroid
|
||||||
output = /obj/item/weapon/reagent_containers/food/drinks/jar
|
output = /obj/item/weapon/reagent_containers/food/drinks/jar
|
||||||
|
|
||||||
monkey
|
monkey
|
||||||
|
|||||||
@@ -323,11 +323,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
|||||||
if(emagged) // if emagged, HOLY SHIT EVERYONE IS DANGEROUS beep boop beep
|
if(emagged) // if emagged, HOLY SHIT EVERYONE IS DANGEROUS beep boop beep
|
||||||
targets += C
|
targets += C
|
||||||
else
|
else
|
||||||
if((stun_all && !src.allowed(C)) || attacked && !src.allowed(C))
|
|
||||||
// if the turret has been attacked or is angry, target all non-sec people
|
|
||||||
targets += C
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if (C.stat || C.handcuffed) // if the perp is handcuffed or dead/dying, no need to bother really
|
if (C.stat || C.handcuffed) // if the perp is handcuffed or dead/dying, no need to bother really
|
||||||
continue // move onto next potential victim!
|
continue // move onto next potential victim!
|
||||||
@@ -412,6 +408,11 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
|||||||
|
|
||||||
if(src.emagged) return 10 // if emagged, always return 10.
|
if(src.emagged) return 10 // if emagged, always return 10.
|
||||||
|
|
||||||
|
if((stun_all && !src.allowed(perp)) || attacked && !src.allowed(perp))
|
||||||
|
// if the turret has been attacked or is angry, target all non-sec people
|
||||||
|
if(!src.allowed(perp))
|
||||||
|
return 10
|
||||||
|
|
||||||
if(auth_weapons) // check for weapon authorization
|
if(auth_weapons) // check for weapon authorization
|
||||||
if((isnull(perp:wear_id)) || (istype(perp:wear_id, /obj/item/weapon/card/id/syndicate)))
|
if((isnull(perp:wear_id)) || (istype(perp:wear_id, /obj/item/weapon/card/id/syndicate)))
|
||||||
|
|
||||||
@@ -692,12 +693,12 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
|||||||
if(!installation) return
|
if(!installation) return
|
||||||
build_step = 3
|
build_step = 3
|
||||||
|
|
||||||
user << "You remove \the [installation] from the turret frame."
|
|
||||||
var/obj/item/weapon/gun/energy/Gun = new installation(src.loc)
|
var/obj/item/weapon/gun/energy/Gun = new installation(src.loc)
|
||||||
Gun.power_supply.charge=gun_charge
|
Gun.power_supply.charge=gun_charge
|
||||||
Gun.update_icon()
|
Gun.update_icon()
|
||||||
installation = null
|
installation = null
|
||||||
gun_charge = 0
|
gun_charge = 0
|
||||||
|
user << "You remove \the [Gun] from the turret frame."
|
||||||
|
|
||||||
if(5)
|
if(5)
|
||||||
user << "You remove the prox sensor from the turret frame."
|
user << "You remove the prox sensor from the turret frame."
|
||||||
@@ -729,7 +730,36 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
|||||||
// The below code is pretty much just recoded from the initial turret object. It's necessary but uncommented because it's exactly the same!
|
// The below code is pretty much just recoded from the initial turret object. It's necessary but uncommented because it's exactly the same!
|
||||||
|
|
||||||
/obj/machinery/porta_turret_cover/attack_ai(mob/user as mob)
|
/obj/machinery/porta_turret_cover/attack_ai(mob/user as mob)
|
||||||
return attack_hand(user)
|
. = ..()
|
||||||
|
if (.)
|
||||||
|
return
|
||||||
|
var/dat
|
||||||
|
|
||||||
|
dat += text({"
|
||||||
|
<TT><B>Automatic Portable Turret Installation</B></TT><BR><BR>
|
||||||
|
Status: []<BR>
|
||||||
|
Behaviour controls are [Parent_Turret.locked ? "locked" : "unlocked"]"},
|
||||||
|
|
||||||
|
"<A href='?src=\ref[src];power=1'>[Parent_Turret.on ? "On" : "Off"]</A>" )
|
||||||
|
|
||||||
|
|
||||||
|
dat += text({"<BR>
|
||||||
|
Check for Weapon Authorization: []<BR>
|
||||||
|
Check Security Records: []<BR>
|
||||||
|
Neutralize Identified Criminals: []<BR>
|
||||||
|
Neutralize All Non-Security and Non-Command Personnel: []<BR>
|
||||||
|
Neutralize All Unidentified Life Signs: []<BR>"},
|
||||||
|
|
||||||
|
"<A href='?src=\ref[src];operation=authweapon'>[Parent_Turret.auth_weapons ? "Yes" : "No"]</A>",
|
||||||
|
"<A href='?src=\ref[src];operation=checkrecords'>[Parent_Turret.check_records ? "Yes" : "No"]</A>",
|
||||||
|
"<A href='?src=\ref[src];operation=shootcrooks'>[Parent_Turret.criminals ? "Yes" : "No"]</A>",
|
||||||
|
"<A href='?src=\ref[src];operation=shootall'>[Parent_Turret.stun_all ? "Yes" : "No"]</A>" ,
|
||||||
|
"<A href='?src=\ref[src];operation=checkxenos'>[Parent_Turret.check_anomalies ? "Yes" : "No"]</A>" )
|
||||||
|
|
||||||
|
|
||||||
|
user << browse("<HEAD><TITLE>Automatic Portable Turret Installation</TITLE></HEAD>[dat]", "window=autosec")
|
||||||
|
onclose(user, "autosec")
|
||||||
|
return
|
||||||
|
|
||||||
/obj/machinery/porta_turret_cover/attack_hand(mob/user as mob)
|
/obj/machinery/porta_turret_cover/attack_hand(mob/user as mob)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
else
|
else
|
||||||
user << "\red The spike already has something on it, finish collecting its meat first!"
|
user << "\red The spike already has something on it, finish collecting its meat first!"
|
||||||
else if(istype(G.affecting, /mob/living/carbon/alien) && !istype(G.affecting, /mob/living/carbon/alien/larva/metroid))
|
else if(istype(G.affecting, /mob/living/carbon/alien))
|
||||||
if(src.occupied == 0)
|
if(src.occupied == 0)
|
||||||
src.icon_state = "spikebloodygreen"
|
src.icon_state = "spikebloodygreen"
|
||||||
src.occupied = 1
|
src.occupied = 1
|
||||||
|
|||||||
@@ -3,8 +3,11 @@
|
|||||||
return
|
return
|
||||||
if(src.healths)
|
if(src.healths)
|
||||||
src.healths.icon_state = "health6"
|
src.healths.icon_state = "health6"
|
||||||
|
|
||||||
|
/*
|
||||||
if(istype(src,/mob/living/carbon/alien/larva/metroid))
|
if(istype(src,/mob/living/carbon/alien/larva/metroid))
|
||||||
src.icon_state = "metroid_dead"
|
src.icon_state = "metroid_dead"
|
||||||
|
*/
|
||||||
else
|
else
|
||||||
src.icon_state = "larva_l"
|
src.icon_state = "larva_l"
|
||||||
src.stat = 2
|
src.stat = 2
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
//grow!! but not if metroid or dead
|
//grow!! but not if metroid or dead
|
||||||
if(!istype(src,/mob/living/carbon/alien/larva/metroid) && health>-100)
|
if(health>-100)
|
||||||
amount_grown++
|
amount_grown++
|
||||||
|
|
||||||
if (radiation)
|
if (radiation)
|
||||||
|
|||||||
@@ -248,3 +248,27 @@
|
|||||||
spawn(0)//To prevent the proc from returning null.
|
spawn(0)//To prevent the proc from returning null.
|
||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/Metroidize()
|
||||||
|
if (monkeyizing)
|
||||||
|
return
|
||||||
|
for(var/obj/item/W in src)
|
||||||
|
drop_from_slot(W)
|
||||||
|
update_clothing()
|
||||||
|
monkeyizing = 1
|
||||||
|
canmove = 0
|
||||||
|
icon = null
|
||||||
|
invisibility = 101
|
||||||
|
for(var/t in organs)
|
||||||
|
del(organs[t])
|
||||||
|
|
||||||
|
var/mob/living/carbon/metroid/new_metroid = new /mob/living/carbon/metroid (loc)
|
||||||
|
|
||||||
|
new_metroid.mind_initialize(src)
|
||||||
|
new_metroid.key = key
|
||||||
|
|
||||||
|
new_metroid.a_intent = "hurt"
|
||||||
|
new_metroid << "<B>You are now a Metroid.</B>"
|
||||||
|
spawn(0)//To prevent the proc from returning null.
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 137 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
@@ -5126,7 +5126,7 @@
|
|||||||
"bUD" = (/obj/machinery/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
"bUD" = (/obj/machinery/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||||
"bUE" = (/obj/item/weapon/paper{name = "Work in Progress"},/obj/machinery/door/window{dir = 8; icon = 'windoor.dmi'; name = "Containment Exterior"; req_access_txt = "55"},/obj/machinery/light,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
|
"bUE" = (/obj/item/weapon/paper{name = "Work in Progress"},/obj/machinery/door/window{dir = 8; icon = 'windoor.dmi'; name = "Containment Exterior"; req_access_txt = "55"},/obj/machinery/light,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
|
||||||
"bUF" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "containment"; name = "Xenobiology Blast Doors"; opacity = 0},/obj/machinery/door/window{base_state = "right"; dir = 4; icon = 'windoor.dmi'; icon_state = "right"; name = "Containment Interior"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
|
"bUF" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "containment"; name = "Xenobiology Blast Doors"; opacity = 0},/obj/machinery/door/window{base_state = "right"; dir = 4; icon = 'windoor.dmi'; icon_state = "right"; name = "Containment Interior"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
|
||||||
"bUG" = (/obj/landmark{name = "xeno_spawn"; pixel_x = -1},/mob/living/carbon/alien/larva/metroid,/turf/simulated/floor{icon_state = "dark"},/area/toxins/xenobiology)
|
"bUG" = (/obj/landmark{name = "xeno_spawn"; pixel_x = -1},/mob/living/carbon/metroid,/turf/simulated/floor{icon_state = "dark"},/area/toxins/xenobiology)
|
||||||
"bUH" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/maintenance/aft)
|
"bUH" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||||
"bUI" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor,/area/assembly/assembly_line)
|
"bUI" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor,/area/assembly/assembly_line)
|
||||||
"bUJ" = (/turf/simulated/floor/plating,/area/assembly/assembly_line)
|
"bUJ" = (/turf/simulated/floor/plating,/area/assembly/assembly_line)
|
||||||
@@ -6598,7 +6598,7 @@
|
|||||||
"cwT" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
|
"cwT" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
|
||||||
"cwU" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
|
"cwU" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
|
||||||
"cwV" = (/obj/item/weapon/spacecash,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/planet/clown)
|
"cwV" = (/obj/item/weapon/spacecash,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/planet/clown)
|
||||||
"cwW" = (/mob/living/carbon/alien/larva/metroid{desc = "A tamed other thing. Very smart looking."; icon = 'otherthing.dmi'; icon_state = "otherthing"; name = "Tamed Otherthing"; toxloss = 0; voice_message = "gurgles"; voice_name = "otherthing"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
"cwW" = (/mob/living/carbon/metroid{desc = "A tamed other thing. Very smart looking."; icon = 'otherthing.dmi'; icon_state = "otherthing"; name = "Tamed Otherthing"; toxloss = 0; voice_message = "gurgles"; voice_name = "otherthing"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||||
"cwX" = (/obj/grille,/obj/window/reinforced,/obj/window/reinforced{dir = 4},/obj/window/reinforced{dir = 8},/turf/unsimulated/floor,/area/wizard_station)
|
"cwX" = (/obj/grille,/obj/window/reinforced,/obj/window/reinforced{dir = 4},/obj/window/reinforced{dir = 8},/turf/unsimulated/floor,/area/wizard_station)
|
||||||
"cwY" = (/obj/stool,/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station)
|
"cwY" = (/obj/stool,/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station)
|
||||||
"cwZ" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station)
|
"cwZ" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station)
|
||||||
|
|||||||
@@ -92,6 +92,7 @@
|
|||||||
#define FILE_DIR "code/modules/mob/living/carbon/beast"
|
#define FILE_DIR "code/modules/mob/living/carbon/beast"
|
||||||
#define FILE_DIR "code/modules/mob/living/carbon/brain"
|
#define FILE_DIR "code/modules/mob/living/carbon/brain"
|
||||||
#define FILE_DIR "code/modules/mob/living/carbon/human"
|
#define FILE_DIR "code/modules/mob/living/carbon/human"
|
||||||
|
#define FILE_DIR "code/modules/mob/living/carbon/metroid"
|
||||||
#define FILE_DIR "code/modules/mob/living/carbon/monkey"
|
#define FILE_DIR "code/modules/mob/living/carbon/monkey"
|
||||||
#define FILE_DIR "code/modules/mob/living/silicon"
|
#define FILE_DIR "code/modules/mob/living/silicon"
|
||||||
#define FILE_DIR "code/modules/mob/living/silicon/ai"
|
#define FILE_DIR "code/modules/mob/living/silicon/ai"
|
||||||
@@ -702,6 +703,13 @@
|
|||||||
#include "code\modules\mob\living\carbon\human\savefile.dm"
|
#include "code\modules\mob\living\carbon\human\savefile.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\say.dm"
|
#include "code\modules\mob\living\carbon\human\say.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\whisper.dm"
|
#include "code\modules\mob\living\carbon\human\whisper.dm"
|
||||||
|
#include "code\modules\mob\living\carbon\metroid\death.dm"
|
||||||
|
#include "code\modules\mob\living\carbon\metroid\emote.dm"
|
||||||
|
#include "code\modules\mob\living\carbon\metroid\examine.dm"
|
||||||
|
#include "code\modules\mob\living\carbon\metroid\hud.dm"
|
||||||
|
#include "code\modules\mob\living\carbon\metroid\life.dm"
|
||||||
|
#include "code\modules\mob\living\carbon\metroid\metroid.dm"
|
||||||
|
#include "code\modules\mob\living\carbon\metroid\powers.dm"
|
||||||
#include "code\modules\mob\living\carbon\monkey\death.dm"
|
#include "code\modules\mob\living\carbon\monkey\death.dm"
|
||||||
#include "code\modules\mob\living\carbon\monkey\emote.dm"
|
#include "code\modules\mob\living\carbon\monkey\emote.dm"
|
||||||
#include "code\modules\mob\living\carbon\monkey\examine.dm"
|
#include "code\modules\mob\living\carbon\monkey\examine.dm"
|
||||||
@@ -814,5 +822,5 @@
|
|||||||
#include "code\WorkInProgress\recycling\scrap.dm"
|
#include "code\WorkInProgress\recycling\scrap.dm"
|
||||||
#include "code\WorkInProgress\recycling\sortingmachinery.dm"
|
#include "code\WorkInProgress\recycling\sortingmachinery.dm"
|
||||||
#include "interface\skin.dmf"
|
#include "interface\skin.dmf"
|
||||||
#include "maps\tgstation.2.0.7.dmm"
|
#include "maps\TestingMap.dmm"
|
||||||
// END_INCLUDE
|
// END_INCLUDE
|
||||||
|
|||||||
Reference in New Issue
Block a user