mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 22:17:32 +01:00
Merge branch 'master' of https://github.com/Baystation12/Baystation12 into bs12_with_tgport
This commit is contained in:
@@ -307,8 +307,8 @@
|
||||
|
||||
var/obj/item/weapon/organ/H
|
||||
switch(body_part)
|
||||
if(UPPER_TORSO)
|
||||
owner.gib()
|
||||
// if(UPPER_TORSO) just no.
|
||||
// owner.gib()
|
||||
if(LOWER_TORSO)
|
||||
owner << "\red You are now sterile."
|
||||
if(HEAD)
|
||||
|
||||
@@ -820,14 +820,14 @@ Auto Patrol: []"},
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
else if(lasercolor == "b")
|
||||
if (src.emagged == 2)
|
||||
projectile = /obj/item/projectile/omnitag
|
||||
projectile = /obj/item/projectile/beam/omnitag
|
||||
else
|
||||
projectile = /obj/item/projectile/bluetag
|
||||
projectile = /obj/item/projectile/beam/bluetag
|
||||
else if(lasercolor == "r")
|
||||
if (src.emagged == 2)
|
||||
projectile = /obj/item/projectile/omnitag
|
||||
projectile = /obj/item/projectile/beam/omnitag
|
||||
else
|
||||
projectile = /obj/item/projectile/redtag
|
||||
projectile = /obj/item/projectile/beam/redtag
|
||||
|
||||
if (!( istype(U, /turf) ))
|
||||
return
|
||||
@@ -1011,7 +1011,7 @@ Auto Patrol: []"},
|
||||
|
||||
/obj/machinery/bot/ed209/bullet_act(var/obj/item/projectile/Proj)
|
||||
if((src.lasercolor == "b") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/redtag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/redtag))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
@@ -1019,7 +1019,7 @@ Auto Patrol: []"},
|
||||
else
|
||||
..()
|
||||
else if((src.lasercolor == "r") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/bluetag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/bluetag))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
var/const/STATE_STATUSDISPLAY = 7
|
||||
var/const/STATE_ALERT_LEVEL = 8
|
||||
var/const/STATE_CONFIRM_LEVEL = 9
|
||||
var/const/STATE_CREWTRANSFER = 10
|
||||
|
||||
var/status_display_freq = "1435"
|
||||
var/stat_msg1
|
||||
@@ -121,6 +122,15 @@
|
||||
if(emergency_shuttle.online)
|
||||
post_status("shuttle")
|
||||
src.state = STATE_DEFAULT
|
||||
if("crewtransfer")
|
||||
src.state= STATE_DEFAULT
|
||||
if(src.authenticated)
|
||||
src.state = STATE_CREWTRANSFER
|
||||
if("crewtransfer2")
|
||||
if(src.authenticated)
|
||||
init_shift_change(usr) //key difference here
|
||||
if(emergency_shuttle.online)
|
||||
post_status("shuttle")
|
||||
if("cancelshuttle")
|
||||
src.state = STATE_DEFAULT
|
||||
if(src.authenticated)
|
||||
@@ -313,6 +323,7 @@
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=cancelshuttle'>Cancel Shuttle Call</A> \]"
|
||||
else
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=callshuttle'>Call Emergency Shuttle</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=crewtransfer'>Initiate Crew Transfer</A> \]"
|
||||
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=status'>Set Status Display</A> \]"
|
||||
else
|
||||
@@ -320,6 +331,8 @@
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=messagelist'>Message List</A> \]"
|
||||
if(STATE_CALLSHUTTLE)
|
||||
dat += "Are you sure you want to call the shuttle? \[ <A HREF='?src=\ref[src];operation=callshuttle2'>OK</A> | <A HREF='?src=\ref[src];operation=main'>Cancel</A> \]"
|
||||
if(STATE_CREWTRANSFER) // this is the shiftchage screen.
|
||||
dat += "Are you sure you want to initiate a crew transfer? This will call the shuttle. \[ <a HREF='?src=\ref[src];operation=crewtransfer2'>OK</a> | <A HREF='?src=\ref[src];operation=main'>Cancel</A> \]"
|
||||
if(STATE_CANCELSHUTTLE)
|
||||
dat += "Are you sure you want to cancel the shuttle? \[ <A HREF='?src=\ref[src];operation=cancelshuttle2'>OK</A> | <A HREF='?src=\ref[src];operation=main'>Cancel</A> \]"
|
||||
if(STATE_MESSAGELIST)
|
||||
@@ -458,6 +471,47 @@
|
||||
|
||||
return
|
||||
|
||||
/proc/init_shift_change(var/mob/user, var/force = 0)
|
||||
if ((!( ticker ) || emergency_shuttle.location))
|
||||
return
|
||||
|
||||
if(emergency_shuttle.direction == -1)
|
||||
user << "The shuttle may not be called while returning to CentCom."
|
||||
return
|
||||
|
||||
if(emergency_shuttle.online)
|
||||
user << "The shuttle is already on its way."
|
||||
return
|
||||
|
||||
// if force is 0, some things may stop the shuttle call
|
||||
if(!force)
|
||||
if(emergency_shuttle.deny_shuttle)
|
||||
user << "Centcom does not currently have a shuttle available in your sector. Please try again later."
|
||||
return
|
||||
|
||||
if(sent_strike_team == 1)
|
||||
user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated."
|
||||
return
|
||||
|
||||
if(world.time < 54000) // 30 minute grace period to let the game get going
|
||||
user << "The shuttle is refueling. Please wait another [round((54000-world.time)/600)] minutes before trying again."//may need to change "/600"
|
||||
return
|
||||
|
||||
if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "sandbox")
|
||||
//New version pretends to call the shuttle but cause the shuttle to return after a random duration.
|
||||
emergency_shuttle.fake_recall = rand(300,500)
|
||||
|
||||
if(ticker.mode.name == "blob" || ticker.mode.name == "epidemic")
|
||||
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
||||
return
|
||||
|
||||
emergency_shuttle.shuttlealert(1)
|
||||
emergency_shuttle.incall()
|
||||
log_game("[key_name(user)] has called the shuttle.")
|
||||
message_admins("[key_name_admin(user)] has called the shuttle.", 1)
|
||||
captain_announce("A crew transfer has been initiated. The shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.")
|
||||
|
||||
return
|
||||
|
||||
/proc/cancel_call_proc(var/mob/user)
|
||||
if ((!( ticker ) || emergency_shuttle.location || emergency_shuttle.direction == 0 || emergency_shuttle.timeleft() < 300))
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
// All energy-based weapons are applicable
|
||||
switch(E.type)
|
||||
if(/obj/item/weapon/gun/energy/laser/bluetag)
|
||||
projectile = /obj/item/projectile/bluetag
|
||||
eprojectile = /obj/item/projectile/omnitag//This bolt will stun ERRYONE with a vest
|
||||
projectile = /obj/item/projectile/beam/bluetag
|
||||
eprojectile = /obj/item/projectile/beam/omnitag//This bolt will stun ERRYONE with a vest
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "b"
|
||||
@@ -90,8 +90,8 @@
|
||||
shot_delay = 30
|
||||
|
||||
if(/obj/item/weapon/gun/energy/laser/redtag)
|
||||
projectile = /obj/item/projectile/redtag
|
||||
eprojectile = /obj/item/projectile/omnitag
|
||||
projectile = /obj/item/projectile/beam/redtag
|
||||
eprojectile = /obj/item/projectile/beam/omnitag
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "r"
|
||||
@@ -104,7 +104,7 @@
|
||||
shot_delay = 30
|
||||
|
||||
if(/obj/item/weapon/gun/energy/laser/practice)
|
||||
projectile = /obj/item/projectile/practice
|
||||
projectile = /obj/item/projectile/beam/practice
|
||||
eprojectile = /obj/item/projectile/beam
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
@@ -375,13 +375,13 @@ Status: []<BR>"},
|
||||
if (src.health <= 0)
|
||||
src.die() // the death process :(
|
||||
if((src.lasercolor == "b") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/redtag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/redtag))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
src.disabled = 0
|
||||
if((src.lasercolor == "r") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/bluetag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/bluetag))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
|
||||
@@ -221,9 +221,9 @@
|
||||
if(4)
|
||||
A = new /obj/item/projectile/change( loc )
|
||||
if(5)
|
||||
A = new /obj/item/projectile/bluetag( loc )
|
||||
A = new /obj/item/projectile/beam/bluetag( loc )
|
||||
if(6)
|
||||
A = new /obj/item/projectile/redtag( loc )
|
||||
A = new /obj/item/projectile/beam/redtag( loc )
|
||||
A.original = target.loc
|
||||
use_power(500)
|
||||
else
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
bmark.pixel_x--
|
||||
bmark.pixel_y--
|
||||
|
||||
if(Proj.damage >= 20 || istype(Proj, /obj/item/projectile/practice))
|
||||
if(Proj.damage >= 20 || istype(Proj, /obj/item/projectile/beam/practice))
|
||||
bmark.icon_state = "scorch"
|
||||
bmark.dir = pick(NORTH,SOUTH,EAST,WEST) // random scorch design
|
||||
|
||||
|
||||
@@ -93,7 +93,9 @@
|
||||
"/obj/item/weapon/cigpacket",
|
||||
"/obj/item/weapon/storage/pill_bottle",
|
||||
"/obj/item/stack/medical",
|
||||
"/obj/item/device/flashlight/pen"
|
||||
"/obj/item/device/flashlight/pen",
|
||||
"/obj/item/clothing/mask/surgical",
|
||||
"/obj/item/clothing/gloves/latex"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -554,4 +554,8 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/New()
|
||||
pixel_x = rand (-7,7)
|
||||
pixel_y = rand (-7,7)
|
||||
..()
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -99,12 +99,12 @@
|
||||
H.apply_effect(10, STUTTER, 0)
|
||||
charges--
|
||||
|
||||
H.visible_message("<span class='danger'>[src] hits [H] with stunning end!</span>")
|
||||
H.attack_log += "\[[time_stamp()]\]<font color='orange'> Stunned by thrown [src.name]</font>"
|
||||
log_attack("<font color='red'>Flying [src.name] stunned [H.name] ([H.ckey])</font>" )
|
||||
H.visible_message("<span class='danger'>[src], thrown by ([src.fingerprintslast]) hits [H] with stunning end!</span>")
|
||||
H.attack_log += "\[[time_stamp()]\]<font color='orange'> Stunned by thrown [src.name] (([src.fingerprintslast]))</font>"
|
||||
log_attack("<font color='red'>Flying [src.name], thrown by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])</font>" )
|
||||
|
||||
log_admin("ATTACK: Flying [src.name] stunned [H.name] ([H.ckey])")
|
||||
msg_admin_attack("ATTACK: Flying [src.name] stunned [H.name] ([H.ckey])") //BS12 EDIT ALG
|
||||
log_admin("ATTACK: Flying [src.name], thrown by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])")
|
||||
msg_admin_attack("ATTACK: Flying [src.name], thrown by ([src.fingerprintslast]) stunned [H.name] ([H.ckey]).") //BS12 EDIT ALG
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
name = "laser tag gun"
|
||||
icon_state = "bluetag"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
projectile_type = "/obj/item/projectile/bluetag"
|
||||
projectile_type = "/obj/item/projectile/beam/bluetag"
|
||||
origin_tech = "combat=1;magnets=2"
|
||||
clumsy_check = 0
|
||||
var/charge_tick = 0
|
||||
@@ -127,7 +127,7 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
name = "laser tag gun"
|
||||
icon_state = "redtag"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
projectile_type = "/obj/item/projectile/redtag"
|
||||
projectile_type = "/obj/item/projectile/beam/redtag"
|
||||
origin_tech = "combat=1;magnets=2"
|
||||
clumsy_check = 0
|
||||
var/charge_tick = 0
|
||||
|
||||
@@ -1,14 +1,80 @@
|
||||
var/list/beam_master = list()
|
||||
//Use: Caches beam state images and holds turfs that had these images overlaid.
|
||||
//Structure:
|
||||
//beam_master
|
||||
// icon_states/dirs of beams
|
||||
// image for that beam
|
||||
// references for fired beams
|
||||
// icon_states/dirs for each placed beam image
|
||||
// turfs that have that icon_state/dir
|
||||
|
||||
/obj/item/projectile/beam
|
||||
name = "laser"
|
||||
icon_state = "laser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
damage = 20
|
||||
damage = 40
|
||||
damage_type = BURN
|
||||
flag = "laser"
|
||||
eyeblur = 2
|
||||
eyeblur = 4
|
||||
var/frequency = 1
|
||||
process()
|
||||
var/reference = "\ref[src]" //So we do not have to recalculate it a ton
|
||||
var/first = 1 //So we don't make the overlay in the same tile as the firer
|
||||
|
||||
/obj/item/projectile/practice
|
||||
spawn(0)
|
||||
while(!bumped) //Move until we hit something
|
||||
step_towards(src, current) //Move~
|
||||
|
||||
for(var/mob/living/M in loc)
|
||||
Bump(M) //Bump anyone we touch
|
||||
|
||||
if((!( current ) || loc == current)) //If we pass our target
|
||||
current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z)
|
||||
|
||||
if((x == 1 || x == world.maxx || y == 1 || y == world.maxy))
|
||||
del(src) //Delete if it passes the world edge
|
||||
return
|
||||
|
||||
if(!first) //Add the overlay as we pass over tiles
|
||||
var/target_dir = get_dir(src, current) //So we don't call this too much
|
||||
|
||||
//If the icon has not been added yet
|
||||
if( !("[icon_state][target_dir]" in beam_master) )
|
||||
var/image/I = image(icon,icon_state,10,target_dir) //Generate it.
|
||||
beam_master["[icon_state][target_dir]"] = I //And cache it!
|
||||
|
||||
//Finally add the overlay
|
||||
src.loc.overlays += beam_master["[icon_state][target_dir]"]
|
||||
|
||||
//Add the turf to a list in the beam master so they can be cleaned up easily.
|
||||
if(reference in beam_master)
|
||||
var/list/turf_master = beam_master[reference]
|
||||
if("[icon_state][target_dir]" in turf_master)
|
||||
var/list/turfs = turf_master["[icon_state][target_dir]"]
|
||||
turfs += loc
|
||||
else
|
||||
turf_master["[icon_state][target_dir]"] = list(loc)
|
||||
else
|
||||
var/list/turfs = list()
|
||||
turfs["[icon_state][target_dir]"] = list(loc)
|
||||
beam_master[reference] = turfs
|
||||
else
|
||||
first = 0
|
||||
|
||||
cleanup(reference)
|
||||
return
|
||||
|
||||
proc/cleanup(reference) //Waits .3 seconds then removes the overlay.
|
||||
src = null
|
||||
sleep(3)
|
||||
var/list/turf_master = beam_master[reference]
|
||||
for(var/laser_state in turf_master)
|
||||
var/list/turfs = turf_master[laser_state]
|
||||
for(var/turf/T in turfs)
|
||||
T.overlays -= beam_master[laser_state]
|
||||
return
|
||||
|
||||
/obj/item/projectile/beam/practice
|
||||
name = "laser"
|
||||
icon_state = "laser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
@@ -45,7 +111,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/projectile/bluetag
|
||||
/obj/item/projectile/beam/bluetag
|
||||
name = "lasertag beam"
|
||||
icon_state = "bluelaser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
@@ -60,7 +126,7 @@
|
||||
M.Weaken(5)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/redtag
|
||||
/obj/item/projectile/beam/redtag
|
||||
name = "lasertag beam"
|
||||
icon_state = "laser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
@@ -75,7 +141,7 @@
|
||||
M.Weaken(5)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/omnitag//A laser tag bolt that stuns EVERYONE
|
||||
/obj/item/projectile/beam/omnitag//A laser tag bolt that stuns EVERYONE
|
||||
name = "lasertag beam"
|
||||
icon_state = "omnilaser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
|
||||
@@ -153,8 +153,8 @@
|
||||
if(istype(P,/obj/item/projectile/beam)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/ion)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/energy)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/bluetag)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/redtag)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/beam/bluetag)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/beam/redtag)) src.Artifact_Activate()
|
||||
if (my_effect.trigger == "heat")
|
||||
if(istype(P,/obj/item/projectile/temp)) src.Artifact_Activate()
|
||||
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ em {font-style: normal; font-weight: bold;}
|
||||
.deadsay {color: #5c00e6;}
|
||||
.radio {color: #008000;}
|
||||
.deptradio {color: #993399;}
|
||||
.comradio {color: #ACA82D;}
|
||||
.comradio {color: #885500;}
|
||||
.syndradio {color: #6D3F40;}
|
||||
|
||||
.alert {color: #ff0000;}
|
||||
|
||||
@@ -56,6 +56,22 @@ Stuff which is in development and not yet visible to players or just code relate
|
||||
should be listed in the changelog upon commit though. Thanks. -->
|
||||
|
||||
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">6.11.2012</h2>
|
||||
<h3 class="author">Chinsky updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Crew Transfer shuttles are back.</li>
|
||||
<li class="rscadd">Readded pre-merge photo system. Instead of one picture as icon, now photo can be examined to see 3x3 screenshot.</li>
|
||||
<li class="rscadd">Custom items system is back. If your item is not spawning or is missing icon, report it.</li>
|
||||
<li class="rscadd">Alt job titles system is back. For noe medical titles (MD/Surgeon/EMT) and Detective/Foreniscs Tech.</li>
|
||||
<li class="experiment">ROBUSTING CHANGE: Disarming someone with gun in hand has chance that said gun will go off in random direction. With veruy real posibility of you getting shot.</li>
|
||||
<li class="experiment">FLYING BATON OF JUSTICE: Turned on stunbaton has 50% chance of stunning if thrown at someone. </li>
|
||||
<li class="rscadd">Character medical and security records can again be set on char setup.</li>
|
||||
<li class="bugfix">Vote window now will go away (thanks TG for fix)</li>
|
||||
<li class="experiment">Maybe something else, play and you will find.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">November 4th</h2>
|
||||
<h3 class="author">SkyMarshal updated:</h3>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 234 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 25 KiB |
Reference in New Issue
Block a user