mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise
Conflicts: maps/cyberiad.dmm
This commit is contained in:
@@ -27,7 +27,7 @@
|
||||
icon_power_button = "spell_missile"
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/magic_missile
|
||||
amt_weakened = 5
|
||||
amt_weakened = 3
|
||||
amt_dam_fire = 10
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/noclothes
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
|
||||
smoke_spread = 1
|
||||
smoke_amt = 10
|
||||
smoke_amt = 1
|
||||
|
||||
inner_tele_radius = 0
|
||||
outer_tele_radius = 6
|
||||
@@ -268,7 +268,7 @@
|
||||
icon_power_button = "spell_fireball"
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/turf/fireball/cast(var/turf/T)
|
||||
explosion(T, -1, 0, 2, 0)
|
||||
explosion(T, -1, 0, 2, 3, 0)
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/fireball
|
||||
@@ -277,5 +277,5 @@
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/explosion/fireball
|
||||
ex_severe = -1
|
||||
ex_heavy = 0
|
||||
ex_light = 2
|
||||
ex_heavy = -1
|
||||
ex_light = 2
|
||||
@@ -550,7 +550,7 @@
|
||||
throwforce = 5.0
|
||||
sharp = 1
|
||||
edge = 1
|
||||
throw_speed = 1
|
||||
throw_speed = 2
|
||||
throw_range = 3
|
||||
w_class = 4.0
|
||||
flags = FPRINT | TABLEPASS | NOSHIELD
|
||||
@@ -594,6 +594,7 @@
|
||||
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
|
||||
icon_state = "RPED"
|
||||
item_state = "RPED"
|
||||
icon_override = 'icons/mob/in-hand/tools.dmi'
|
||||
w_class = 5
|
||||
can_hold = list("/obj/item/weapon/stock_parts","/obj/item/weapon/cell")
|
||||
storage_slots = 50
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob)
|
||||
..()
|
||||
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
|
||||
explosion(user.loc, -1, 0, 2, 3, 0)
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/smoke
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
flag = CYBORG
|
||||
department_flag = ENGSEC
|
||||
total_positions = 0
|
||||
spawn_positions = 2
|
||||
spawn_positions = 1
|
||||
supervisors = "your laws and the AI" //Nodrak
|
||||
selection_color = "#ddffdd"
|
||||
minimal_player_age = 21
|
||||
|
||||
@@ -713,24 +713,19 @@
|
||||
check_level_sanity()
|
||||
update_icon()
|
||||
|
||||
//Check if container is Plant-B-Gone spray (doesn't work with other sprays, may add in future)
|
||||
else if (istype(O, /obj/item/weapon/reagent_containers/spray/plantbgone))
|
||||
//Check if container is any spray container
|
||||
else if (istype(O, /obj/item/weapon/reagent_containers/spray))
|
||||
var/obj/item/weapon/reagent_containers/spray/S = O
|
||||
//Check if there is a plant in the tray
|
||||
if(seed)
|
||||
health -= rand(5,20)
|
||||
|
||||
if(pestlevel > 0)
|
||||
pestlevel -= 2
|
||||
|
||||
if(weedlevel > 0)
|
||||
weedlevel -= 3
|
||||
|
||||
toxins += 4
|
||||
|
||||
check_level_sanity()
|
||||
|
||||
if(!S.reagents.total_volume)
|
||||
user << "\red [S] is empty."
|
||||
return
|
||||
//Container not empty, transfer contents to tray
|
||||
S.reagents.trans_to(src, S.amount_per_transfer_from_this)
|
||||
visible_message("\red <B>\The [src] has been sprayed with \the [O][(user ? " by [user]." : ".")]")
|
||||
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
|
||||
check_level_sanity()
|
||||
update_icon()
|
||||
else
|
||||
user << "There's nothing in [src] to spray!"
|
||||
|
||||
@@ -56,8 +56,20 @@
|
||||
|
||||
|
||||
slime
|
||||
process(loc, what)
|
||||
var/mob/living/carbon/slime/S = what
|
||||
var/C = S.cores
|
||||
if(S.stat != DEAD)
|
||||
S.loc = loc
|
||||
S.visible_message("<span class='notice'>[C] crawls free of the processor!</span>")
|
||||
return
|
||||
for(var/i = 1, i <= C, i++)
|
||||
new S.coretype(loc)
|
||||
feedback_add_details("slime_core_harvested","[replacetext(S.colour," ","_")]")
|
||||
..()
|
||||
|
||||
input = /mob/living/carbon/slime
|
||||
output = /obj/item/weapon/reagent_containers/glass/beaker/slime
|
||||
output = null
|
||||
|
||||
monkey
|
||||
process(loc, what)
|
||||
|
||||
@@ -6,7 +6,7 @@ RCD
|
||||
*/
|
||||
/obj/item/weapon/rcd
|
||||
name = "rapid-construction-device (RCD)"
|
||||
desc = "A device used to rapidly build walls/floor."
|
||||
desc = "A device used to rapidly build and deconstruct walls and floors."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "rcd"
|
||||
opacity = 0
|
||||
@@ -18,7 +18,7 @@ RCD
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
m_amt = 30000
|
||||
m_amt = 100000
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
var/datum/effect/effect/system/spark_spread/spark_system
|
||||
var/matter = 0
|
||||
@@ -29,7 +29,7 @@ RCD
|
||||
|
||||
|
||||
New()
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/100 matter-units."
|
||||
src.spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
@@ -39,15 +39,15 @@ RCD
|
||||
attackby(obj/item/weapon/W, mob/user)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if((matter + 10) > 30)
|
||||
if((matter + 20) > 100)
|
||||
user << "<span class='notice'>The RCD cant hold any more matter-units.</span>"
|
||||
return
|
||||
user.drop_item()
|
||||
del(W)
|
||||
matter += 10
|
||||
matter += 20
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user << "<span class='notice'>The RCD now holds [matter]/30 matter-units.</span>"
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "<span class='notice'>The RCD now holds [matter]/100 matter-units.</span>"
|
||||
desc = "A RCD. It currently holds [matter]/100 matter-units."
|
||||
return
|
||||
|
||||
|
||||
@@ -148,11 +148,11 @@ RCD
|
||||
return 0
|
||||
|
||||
if(istype(A, /obj/machinery/door/airlock))
|
||||
if(checkResource(10, user))
|
||||
if(checkResource(20, user))
|
||||
user << "Deconstructing Airlock..."
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50))
|
||||
if(!useResource(10, user)) return 0
|
||||
if(!useResource(20, user)) return 0
|
||||
activate()
|
||||
del(A)
|
||||
return 1
|
||||
@@ -166,7 +166,7 @@ RCD
|
||||
if(matter < amount)
|
||||
return 0
|
||||
matter -= amount
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/100 matter-units."
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/rcd/proc/checkResource(var/amount, var/mob/user)
|
||||
@@ -174,17 +174,17 @@ RCD
|
||||
/obj/item/weapon/rcd/borg/useResource(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return 0
|
||||
return user:cell:use(amount * 30)
|
||||
return user:cell:use(amount * 160)
|
||||
|
||||
/obj/item/weapon/rcd/borg/checkResource(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return 0
|
||||
return user:cell:charge >= (amount * 30)
|
||||
return user:cell:charge >= (amount * 160)
|
||||
|
||||
/obj/item/weapon/rcd/borg/New()
|
||||
..()
|
||||
desc = "A device used to rapidly build walls/floor."
|
||||
canRwall = 0
|
||||
desc = "A device used to rapidly build and deconstruct walls and floors."
|
||||
canRwall = 1
|
||||
|
||||
/obj/item/weapon/rcd_ammo
|
||||
name = "compressed matter cartridge"
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
edge = 1
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg
|
||||
var/hitcost = 500
|
||||
|
||||
var/hitcost = 500
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
|
||||
if(R.cell)
|
||||
var/obj/item/weapon/cell/C = R.cell
|
||||
@@ -62,7 +62,7 @@
|
||||
//C.use(hitcost)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/pirate
|
||||
name = "energy cutlass"
|
||||
desc = "Arrrr matey."
|
||||
@@ -72,7 +72,7 @@
|
||||
name = "energy blade"
|
||||
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
|
||||
icon_state = "blade"
|
||||
force = 70.0//Normal attacks deal very high damage.
|
||||
force = 30.0 //Normal attacks deal esword damage
|
||||
sharp = 1
|
||||
edge = 1
|
||||
throwforce = 1//Throwing or dropping the item deletes it.
|
||||
|
||||
@@ -33,22 +33,24 @@
|
||||
active = !active
|
||||
if (active)
|
||||
force = 30
|
||||
throwforce = 20
|
||||
if(istype(src,/obj/item/weapon/melee/energy/sword/pirate))
|
||||
icon_state = "cutlass1"
|
||||
else
|
||||
icon_state = "sword[blade_color]"
|
||||
w_class = 4
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 35, 1)
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
user << "\blue [src] is now active."
|
||||
else
|
||||
force = 3
|
||||
throwforce = 5.0
|
||||
if(istype(src,/obj/item/weapon/melee/energy/sword/pirate))
|
||||
icon_state = "cutlass0"
|
||||
else
|
||||
icon_state = "sword0"
|
||||
w_class = 2
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 35, 1)
|
||||
hitsound = "swing_hit"
|
||||
user << "\blue [src] can now be concealed."
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
|
||||
@@ -443,8 +443,8 @@
|
||||
*/
|
||||
|
||||
/obj/item/weapon/crowbar
|
||||
name = "crowbar"
|
||||
desc = "Used to hit floors"
|
||||
name = "pocket crowbar"
|
||||
desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "crowbar"
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
@@ -462,6 +462,16 @@
|
||||
icon_state = "red_crowbar"
|
||||
item_state = "crowbar_red"
|
||||
|
||||
/obj/item/weapon/crowbar/large
|
||||
name = "crowbar"
|
||||
desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big."
|
||||
force = 12
|
||||
w_class = 3
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
m_amt = 66
|
||||
icon_state = "crowbar_large"
|
||||
|
||||
/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob)
|
||||
if(hasorgans(M))
|
||||
|
||||
@@ -480,7 +490,7 @@
|
||||
|
||||
if(S.brute_dam)
|
||||
var/obj/item/weapon/weldingtool/WT = src
|
||||
if (WT.remove_fuel(0,user))
|
||||
if (WT.remove_fuel(0,null))
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
S.heal_damage(15,0,0,1)
|
||||
user.visible_message("\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src].")
|
||||
|
||||
@@ -158,12 +158,13 @@ obj/item/weapon/twohanded/
|
||||
name = "fire axe"
|
||||
desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
|
||||
force = 5
|
||||
throwforce = 15
|
||||
sharp = 1
|
||||
edge = 1
|
||||
w_class = 4.0
|
||||
slot_flags = SLOT_BACK
|
||||
force_unwielded = 10
|
||||
force_wielded = 40
|
||||
force_unwielded = 5
|
||||
force_wielded = 24
|
||||
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
@@ -203,7 +204,7 @@ obj/item/weapon/twohanded/
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
force_unwielded = 3
|
||||
force_wielded = 30
|
||||
force_wielded = 34
|
||||
wieldsound = 'sound/weapons/saberon.ogg'
|
||||
unwieldsound = 'sound/weapons/saberoff.ogg'
|
||||
flags = FPRINT | TABLEPASS | NOSHIELD
|
||||
@@ -287,8 +288,9 @@ obj/item/weapon/twohanded/
|
||||
w_class = 4.0
|
||||
slot_flags = SLOT_BACK
|
||||
force_unwielded = 10
|
||||
force_wielded = 13
|
||||
throwforce = 15
|
||||
force_wielded = 18 // Was 13, Buffed - RR
|
||||
throwforce = 20
|
||||
throw_speed = 3
|
||||
flags = FPRINT | TABLEPASS | NOSHIELD
|
||||
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
layer = 3.9
|
||||
infra_luminosity = 15
|
||||
var/mob/living/carbon/occupant
|
||||
var/mob/living/carbon/occupant2 //two seaters
|
||||
var/datum/spacepod/equipment/equipment_system
|
||||
var/obj/item/weapon/cell/high/battery
|
||||
var/datum/gas_mixture/cabin_air
|
||||
@@ -27,6 +28,7 @@
|
||||
var/health = 100
|
||||
var/lights = 0
|
||||
var/lights_power = 6
|
||||
var/allow2enter = 1
|
||||
|
||||
/obj/spacepod/New()
|
||||
. = ..()
|
||||
@@ -77,19 +79,27 @@
|
||||
S.channel = 0 //Any channel
|
||||
S.volume = 50
|
||||
occupant << S
|
||||
if(occupant2)
|
||||
occupant2 << S
|
||||
if(occupant && oldhealth > health && !health)
|
||||
var/sound/S = sound('sound/effects/engine_alert1.ogg')
|
||||
S.wait = 0
|
||||
S.channel = 0
|
||||
S.volume = 50
|
||||
occupant << S
|
||||
if(occupant2)
|
||||
occupant2 << S
|
||||
if(!health)
|
||||
spawn(0)
|
||||
if(occupant)
|
||||
if(occupant2)
|
||||
occupant2 << "<big><span class='warning'>Critical damage to the vessel detected, core explosion imminent!</span></big>"
|
||||
occupant << "<big><span class='warning'>Critical damage to the vessel detected, core explosion imminent!</span></big>"
|
||||
for(var/i = 10, i >= 0; --i)
|
||||
if(occupant)
|
||||
occupant << "<span class='warning'>[i]</span>"
|
||||
if(occupant2)
|
||||
occupant2 << "<span class='warning'>[i]</span>"
|
||||
if(i == 0)
|
||||
explosion(loc, 2, 4, 8)
|
||||
sleep(10)
|
||||
@@ -100,10 +110,15 @@
|
||||
switch(severity)
|
||||
if(1)
|
||||
var/mob/living/carbon/human/H = occupant
|
||||
var/mob/living/carbon/human/H2 = occupant2
|
||||
if(H)
|
||||
H.loc = get_turf(src)
|
||||
H.ex_act(severity + 1)
|
||||
H << "<span class='warning'>You are forcefully thrown from \the [src]!</span>"
|
||||
if(H2)
|
||||
H2.loc = get_turf(src)
|
||||
H2.ex_act(severity + 1)
|
||||
H2 << "<span class='warning'>You are forcefully thrown from \the [src]!</span>"
|
||||
del(ion_trail)
|
||||
del(src)
|
||||
if(2)
|
||||
@@ -297,40 +312,91 @@
|
||||
return
|
||||
|
||||
/obj/spacepod/proc/moved_inside(var/mob/living/carbon/human/H as mob)
|
||||
var/fukkendisk = usr.GetTypeInAllContents(/obj/item/weapon/disk/nuclear)
|
||||
if(fukkendisk)
|
||||
usr << "\red <B>The nuke-disk locks the door as you try to get in. You evil person.</b>"
|
||||
return
|
||||
|
||||
if(H && H.client && H in range(1))
|
||||
H.reset_view(src)
|
||||
/*
|
||||
H.client.perspective = EYE_PERSPECTIVE
|
||||
H.client.eye = src
|
||||
*/
|
||||
H.stop_pulling()
|
||||
H.forceMove(src)
|
||||
src.occupant = H
|
||||
src.add_fingerprint(H)
|
||||
src.forceMove(src.loc)
|
||||
//dir = dir_in
|
||||
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
|
||||
return 1
|
||||
if(src.occupant)
|
||||
H.reset_view(src)
|
||||
/*
|
||||
H.client.perspective = EYE_PERSPECTIVE
|
||||
H.client.eye = src
|
||||
*/
|
||||
H.stop_pulling()
|
||||
H.forceMove(src)
|
||||
src.occupant2 = H
|
||||
src.add_fingerprint(H)
|
||||
src.forceMove(src.loc)
|
||||
//dir = dir_in
|
||||
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
|
||||
return 1
|
||||
|
||||
else
|
||||
H.reset_view(src)
|
||||
/*
|
||||
H.client.perspective = EYE_PERSPECTIVE
|
||||
H.client.eye = src
|
||||
*/
|
||||
H.stop_pulling()
|
||||
H.forceMove(src)
|
||||
src.occupant = H
|
||||
src.add_fingerprint(H)
|
||||
src.forceMove(src.loc)
|
||||
//dir = dir_in
|
||||
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/spacepod/proc/moved_other_inside(var/mob/living/carbon/human/H as mob)
|
||||
H.reset_view(src)
|
||||
H.stop_pulling()
|
||||
H.forceMove(src)
|
||||
src.occupant2 = H
|
||||
src.forceMove(src.loc)
|
||||
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/obj/spacepod/MouseDrop_T(mob/M as mob, mob/user as mob)
|
||||
if(M != user)
|
||||
return
|
||||
move_inside(M, user)
|
||||
if(M.stat != 0)
|
||||
move_inside(M, user)
|
||||
else
|
||||
return
|
||||
else
|
||||
move_inside(M, user)
|
||||
|
||||
|
||||
/obj/spacepod/verb/move_inside()
|
||||
set category = "Object"
|
||||
set name = "Enter Pod"
|
||||
set src in oview(1)
|
||||
var/fukkendisk = usr.GetTypeInAllContents(/obj/item/weapon/disk/nuclear)
|
||||
|
||||
if(fukkendisk)
|
||||
usr << "\red <B>The nuke-disk is locking the door every time you try to open it. You get the feeling that it doesn't want to go into the spacepod.</b>"
|
||||
return
|
||||
|
||||
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
if (usr.stat || !ishuman(usr))
|
||||
return
|
||||
if (src.occupant)
|
||||
usr << "\blue <B>The [src.name] is already occupied!</B>"
|
||||
return
|
||||
if(allow2enter)
|
||||
usr << "\blue <B>You starts climbing into the secondary seat.</B>"
|
||||
visible_message("\blue [usr] starts to climb into [src.name]")
|
||||
if(enter_after(40,usr))
|
||||
moved_inside(usr)
|
||||
else
|
||||
usr << "You stop entering the spacepod."
|
||||
return
|
||||
else
|
||||
usr << "\red <B>The [src.name]'s doors are locked.</B>"
|
||||
return
|
||||
/*
|
||||
if (usr.abiotic())
|
||||
usr << "\blue <B>Subject cannot have abiotic items on.</B>"
|
||||
@@ -359,53 +425,155 @@
|
||||
set src = usr.loc
|
||||
|
||||
if(usr != src.occupant)
|
||||
if(src.occupant2)
|
||||
if(usr != src.occupant2)
|
||||
return
|
||||
else
|
||||
inertia_dir = 0 // engage reverse thruster and power down pod
|
||||
src.occupant2.loc = src.loc
|
||||
src.occupant2 = null
|
||||
usr << "<span class='notice'>You climb out of the pod</span>"
|
||||
|
||||
else
|
||||
return
|
||||
else
|
||||
inertia_dir = 0 // engage reverse thruster and power down pod
|
||||
src.occupant.loc = src.loc
|
||||
src.occupant = null
|
||||
usr << "<span class='notice'>You climb out of the pod</span>"
|
||||
return
|
||||
inertia_dir = 0 // engage reverse thruster and power down pod
|
||||
src.occupant.loc = src.loc
|
||||
src.occupant = null
|
||||
usr << "<span class='notice'>You climb out of the pod</span>"
|
||||
return
|
||||
|
||||
/obj/spacepod/verb/exit_pod2()
|
||||
if(!src.occupant2)
|
||||
set hidden = 1
|
||||
return
|
||||
else
|
||||
set name = "Eject Secondary Seat"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
set hidden = 0
|
||||
|
||||
if(usr.ckey == src.occupant2.ckey)
|
||||
usr << "<span class='notice'>Use 'Exit Pod'</span>"
|
||||
return
|
||||
else
|
||||
usr << "<span class='notice'>You eject [src.occupant2.name].</span>"
|
||||
src.occupant2.visible_message("You were ejected from the pod!")
|
||||
inertia_dir = 0 // engage reverse thruster and power down pod
|
||||
src.occupant2.loc = src.loc
|
||||
src.occupant2 = null
|
||||
|
||||
|
||||
/obj/spacepod/verb/locksecondseat()
|
||||
set name = "Lock Doors"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
|
||||
if(usr.ckey == src.occupant2.ckey)
|
||||
if(!allow2enter)
|
||||
usr << "<span class='notice'>You can't unlock the doors from your seat. </span>"
|
||||
return
|
||||
else
|
||||
usr << "<span class='notice'>You can't lock the doors from your seat. </span>"
|
||||
return
|
||||
else
|
||||
if(src.allow2enter)
|
||||
src.allow2enter = 0
|
||||
usr << "<span class='notice'>You lock the doors.</span>"
|
||||
else
|
||||
src.allow2enter = 1
|
||||
usr << "<span class='notice'>You unlock the doors.</span>"
|
||||
|
||||
/obj/spacepod/verb/toggleDoors()
|
||||
set name = "Toggle Nearby Pod Doors"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
if(src.occupant2)
|
||||
if(usr.ckey != src.occupant2.ckey)
|
||||
set name = "Toggle Nearby Pod Doors"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
|
||||
for(var/obj/machinery/door/poddoor/P in oview(3,src))
|
||||
if(istype(P, /obj/machinery/door/poddoor/three_tile_hor) || istype(P, /obj/machinery/door/poddoor/three_tile_ver) || istype(P, /obj/machinery/door/poddoor/four_tile_hor) || istype(P, /obj/machinery/door/poddoor/four_tile_ver))
|
||||
var/mob/living/carbon/human/L = usr
|
||||
if(P.check_access(L.get_active_hand()) || P.check_access(L.wear_id))
|
||||
if(P.density)
|
||||
P.open()
|
||||
return 1
|
||||
else
|
||||
P.close()
|
||||
return 1
|
||||
usr << "<span class='warning'>Access denied.</span>"
|
||||
for(var/obj/machinery/door/poddoor/P in oview(3,src))
|
||||
if(istype(P, /obj/machinery/door/poddoor/three_tile_hor) || istype(P, /obj/machinery/door/poddoor/three_tile_ver) || istype(P, /obj/machinery/door/poddoor/four_tile_hor) || istype(P, /obj/machinery/door/poddoor/four_tile_ver))
|
||||
var/mob/living/carbon/human/L = usr
|
||||
if(P.check_access(L.get_active_hand()) || P.check_access(L.wear_id))
|
||||
if(P.density)
|
||||
P.open()
|
||||
return 1
|
||||
else
|
||||
P.close()
|
||||
return 1
|
||||
usr << "<span class='warning'>Access denied.</span>"
|
||||
return
|
||||
usr << "<span class='warning'>You are not close to any pod doors.</span>"
|
||||
return
|
||||
usr << "<span class='warning'>You are not close to any pod doors.</span>"
|
||||
return
|
||||
else
|
||||
return
|
||||
else
|
||||
set name = "Toggle Nearby Pod Doors"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
|
||||
for(var/obj/machinery/door/poddoor/P in oview(3,src))
|
||||
if(istype(P, /obj/machinery/door/poddoor/three_tile_hor) || istype(P, /obj/machinery/door/poddoor/three_tile_ver) || istype(P, /obj/machinery/door/poddoor/four_tile_hor) || istype(P, /obj/machinery/door/poddoor/four_tile_ver))
|
||||
var/mob/living/carbon/human/L = usr
|
||||
if(P.check_access(L.get_active_hand()) || P.check_access(L.wear_id))
|
||||
if(P.density)
|
||||
P.open()
|
||||
return 1
|
||||
else
|
||||
P.close()
|
||||
return 1
|
||||
usr << "<span class='warning'>Access denied.</span>"
|
||||
return
|
||||
usr << "<span class='warning'>You are not close to any pod doors.</span>"
|
||||
return
|
||||
|
||||
/obj/spacepod/verb/fireWeapon()
|
||||
set name = "Fire Pod Weapons"
|
||||
set desc = "Fire the weapons."
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
equipment_system.weapon_system.fire_weapons()
|
||||
if(src.occupant2)
|
||||
if(usr.ckey != src.occupant2.ckey)
|
||||
set name = "Fire Pod Weapons"
|
||||
set desc = "Fire the weapons."
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
equipment_system.weapon_system.fire_weapons()
|
||||
else
|
||||
return
|
||||
else
|
||||
set name = "Fire Pod Weapons"
|
||||
set desc = "Fire the weapons."
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
equipment_system.weapon_system.fire_weapons()
|
||||
|
||||
obj/spacepod/verb/toggleLights()
|
||||
set name = "Toggle Lights"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
if (usr != occupant)
|
||||
return
|
||||
lights = !lights
|
||||
if(lights)
|
||||
SetLuminosity(luminosity + lights_power)
|
||||
if(src.occupant2)
|
||||
if(usr.ckey != src.occupant2.ckey)
|
||||
set name = "Toggle Lights"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
if (usr != occupant)
|
||||
return
|
||||
lights = !lights
|
||||
if(lights)
|
||||
SetLuminosity(luminosity + lights_power)
|
||||
else
|
||||
SetLuminosity(luminosity - lights_power)
|
||||
occupant << "Toggled lights [lights?"on":"off"]."
|
||||
return
|
||||
else
|
||||
return
|
||||
else
|
||||
SetLuminosity(luminosity - lights_power)
|
||||
occupant << "Toggled lights [lights?"on":"off"]."
|
||||
return
|
||||
set name = "Toggle Lights"
|
||||
set category = "Spacepod"
|
||||
set src = usr.loc
|
||||
if (usr != occupant)
|
||||
return
|
||||
lights = !lights
|
||||
if(lights)
|
||||
SetLuminosity(luminosity + lights_power)
|
||||
else
|
||||
SetLuminosity(luminosity - lights_power)
|
||||
occupant << "Toggled lights [lights?"on":"off"]."
|
||||
return
|
||||
|
||||
/obj/spacepod/proc/enter_after(delay as num, var/mob/user as mob, var/numticks = 5)
|
||||
var/delayfraction = delay/numticks
|
||||
@@ -480,41 +648,82 @@ obj/spacepod/verb/toggleLights()
|
||||
return 1
|
||||
|
||||
/obj/spacepod/relaymove(mob/user, direction)
|
||||
var/moveship = 1
|
||||
if(battery && battery.charge >= 3 && health)
|
||||
src.dir = direction
|
||||
switch(direction)
|
||||
if(1)
|
||||
if(inertia_dir == 2)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(2)
|
||||
if(inertia_dir == 1)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(4)
|
||||
if(inertia_dir == 8)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(8)
|
||||
if(inertia_dir == 4)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(moveship)
|
||||
step(src, direction)
|
||||
if(istype(src.loc, /turf/space))
|
||||
inertia_dir = direction
|
||||
else
|
||||
if(!battery)
|
||||
user << "<span class='warning'>No energy cell detected.</span>"
|
||||
else if(battery.charge < 3)
|
||||
user << "<span class='warning'>Not enough charge left.</span>"
|
||||
else if(!health)
|
||||
user << "<span class='warning'>She's dead, Jim</span>"
|
||||
if(src.occupant2)
|
||||
if(user.ckey != src.occupant2.ckey)
|
||||
var/moveship = 1
|
||||
if(battery && battery.charge >= 3 && health)
|
||||
src.dir = direction
|
||||
switch(direction)
|
||||
if(1)
|
||||
if(inertia_dir == 2)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(2)
|
||||
if(inertia_dir == 1)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(4)
|
||||
if(inertia_dir == 8)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(8)
|
||||
if(inertia_dir == 4)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(moveship)
|
||||
step(src, direction)
|
||||
if(istype(src.loc, /turf/space))
|
||||
inertia_dir = direction
|
||||
else
|
||||
if(!battery)
|
||||
user << "<span class='warning'>No energy cell detected.</span>"
|
||||
else if(battery.charge < 3)
|
||||
user << "<span class='warning'>Not enough charge left.</span>"
|
||||
else if(!health)
|
||||
user << "<span class='warning'>She's dead, Jim</span>"
|
||||
else
|
||||
user << "<span class='warning'>Unknown error has occurred, yell at pomf.</span>"
|
||||
return 0
|
||||
battery.charge = max(0, battery.charge - 3)
|
||||
else
|
||||
user << "<span class='warning'>Unknown error has occurred, yell at pomf.</span>"
|
||||
return 0
|
||||
battery.charge = max(0, battery.charge - 3)
|
||||
return
|
||||
|
||||
else
|
||||
var/moveship = 1
|
||||
if(battery && battery.charge >= 3 && health)
|
||||
src.dir = direction
|
||||
switch(direction)
|
||||
if(1)
|
||||
if(inertia_dir == 2)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(2)
|
||||
if(inertia_dir == 1)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(4)
|
||||
if(inertia_dir == 8)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(8)
|
||||
if(inertia_dir == 4)
|
||||
inertia_dir = 0
|
||||
moveship = 0
|
||||
if(moveship)
|
||||
step(src, direction)
|
||||
if(istype(src.loc, /turf/space))
|
||||
inertia_dir = direction
|
||||
else
|
||||
if(!battery)
|
||||
user << "<span class='warning'>No energy cell detected.</span>"
|
||||
else if(battery.charge < 3)
|
||||
user << "<span class='warning'>Not enough charge left.</span>"
|
||||
else if(!health)
|
||||
user << "<span class='warning'>She's dead, Jim</span>"
|
||||
else
|
||||
user << "<span class='warning'>Unknown error has occurred, yell at pomf.</span>"
|
||||
return 0
|
||||
battery.charge = max(0, battery.charge - 3)
|
||||
|
||||
/obj/effect/landmark/spacepod/random
|
||||
name = "spacepod spawner"
|
||||
|
||||
@@ -139,13 +139,16 @@
|
||||
playsound(loc, attack.attack_sound, 25, 1, -1)
|
||||
|
||||
visible_message("\red <B>[M] [pick(attack.attack_verb)]ed [src]!</B>")
|
||||
//Rearranged, so claws don't increase weaken chance.
|
||||
if(damage >= 5 && prob(50))
|
||||
visible_message("\red <B>[M] has weakened [src]!</B>")
|
||||
apply_effect(2, WEAKEN, armor_block)
|
||||
|
||||
damage += attack.damage
|
||||
apply_damage(damage, BRUTE, affecting, armor_block, sharp=attack.sharp, edge=attack.edge)
|
||||
apply_damage(damage, BRUTE, affecting, armor_block, sharp=attack.sharp, edge=attack.edge) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway.
|
||||
if((stat != DEAD) && damage >= 9)
|
||||
visible_message("<span class='danger'>[M] has weakened [src]!</span>", \
|
||||
"<span class='userdanger'>[M] has weakened [src]!</span>")
|
||||
apply_effect(4, WEAKEN, armor_block)
|
||||
forcesay(hit_appends)
|
||||
else if(lying)
|
||||
forcesay(hit_appends)
|
||||
|
||||
|
||||
if("disarm")
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
var/burn_mod = null // Burn damage reduction/malus.
|
||||
|
||||
// For grays
|
||||
var/max_hurt_damage = 5 // Max melee damage dealt + 5 if hulk
|
||||
var/max_hurt_damage = 9 // Max melee damage dealt + 5 if hulk
|
||||
var/list/default_mutations = list()
|
||||
var/list/default_blocks = list() // Don't touch.
|
||||
var/list/default_block_names = list() // Use this instead, using the names from setupgame.dm
|
||||
@@ -636,16 +636,14 @@
|
||||
|
||||
/datum/unarmed_attack/diona
|
||||
attack_verb = list("lash", "bludgeon")
|
||||
damage = 5
|
||||
|
||||
/datum/unarmed_attack/claws
|
||||
attack_verb = list("scratch", "claw")
|
||||
attack_sound = 'sound/weapons/slice.ogg'
|
||||
miss_sound = 'sound/weapons/slashmiss.ogg'
|
||||
damage = 5
|
||||
sharp = 1
|
||||
edge = 1
|
||||
|
||||
/datum/unarmed_attack/claws/armalis
|
||||
attack_verb = list("slash", "claw")
|
||||
damage = 10 //they're huge! they should do a little more damage, i'd even go for 15-20 maybe...
|
||||
damage = 6 //they're huge! they should do a little more damage, i'd even go for 15-20 maybe...
|
||||
|
||||
@@ -131,6 +131,6 @@
|
||||
|
||||
/obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob)
|
||||
if(alert(user, "Zapping yourself with a wand of fireball is probably a bad idea, do it anyway?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user))
|
||||
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
|
||||
explosion(user.loc, -1, 0, 2, 3, 0)
|
||||
charges--
|
||||
..()
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
/obj/item/projectile/magic/fireball/on_hit(var/target)
|
||||
var/turf/T = get_turf(target)
|
||||
explosion(T, -1, 0, 2, 3, 0, flame_range = 2)
|
||||
explosion(T, -1, 0, 2, 3, 0)
|
||||
|
||||
/obj/item/projectile/magic/resurrection
|
||||
name = "bolt of resurrection"
|
||||
|
||||
@@ -495,6 +495,9 @@ datum
|
||||
var/mob/living/carbon/human/human = M
|
||||
if(human.dna.mutantrace == null)
|
||||
M << "\red Your flesh rapidly mutates!"
|
||||
M << "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>"
|
||||
M << "\red Your body reacts violently to light. \green However, it naturally heals in darkness."
|
||||
M << "Aside from your new traits, you are mentally unchanged and retain your prior obligations."
|
||||
human.dna.mutantrace = "shadow"
|
||||
human.update_mutantrace()
|
||||
..()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 7.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
+12045
-12039
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user